From 3510dbfc4522f7cfc933519806625024be871a89 Mon Sep 17 00:00:00 2001
From: Dapeng <verydapeng@gmail.com>
Date: Tue, 20 Sep 2016 11:41:05 +0800
Subject: [PATCH] ui update

1. upgrade angular version to 1.5.8
2. upgrade bootstrap to 3
3. fix ui integrations up to visits
4. move to webjars
---
 pom.xml                                       |    12 +
 .../petclinic/repository/OwnerRepository.java |    30 +-
 .../petclinic/service/ClinicService.java      |    17 +-
 .../petclinic/service/ClinicServiceImpl.java  |     7 +-
 .../samples/petclinic/web/OwnerResource.java  |    19 +-
 .../samples/petclinic/web/PetResource.java    |    83 +-
 .../jsp/pets/createOrUpdateVisitForm.jsp      |    73 -
 .../WEB-INF/no-spring-config-files-there.txt  |     4 -
 src/main/webapp/WEB-INF/tags/inputField.tag   |    19 -
 src/main/webapp/WEB-INF/tags/selectField.tag  |    23 -
 .../angular-mocks/.bower.json                 |    19 -
 .../bower_components/angular-mocks/README.md  |    57 -
 .../angular-mocks/angular-mocks.js            |  2382 -
 .../bower_components/angular-mocks/bower.json |     9 -
 .../angular-mocks/package.json                |    27 -
 .../angular-resource/.bower.json              |    19 -
 .../angular-resource/README.md                |    77 -
 .../angular-resource/angular-resource.js      |   667 -
 .../angular-resource/angular-resource.min.js  |    13 -
 .../angular-resource.min.js.map               |     8 -
 .../angular-resource/bower.json               |     9 -
 .../angular-resource/package.json             |    26 -
 .../angular-scenario/.bower.json              |    19 -
 .../angular-scenario/README.md                |    61 -
 .../angular-scenario/angular-scenario.js      | 37470 ----------------
 .../angular-scenario/bower.json               |     9 -
 .../jstd-scenario-adapter-config.js           |     6 -
 .../angular-scenario/jstd-scenario-adapter.js |   185 -
 .../angular-scenario/package.json             |    26 -
 .../angular-ui-router/.bower.json             |    33 -
 .../angular-ui-router/CHANGELOG.md            |   228 -
 .../angular-ui-router/CONTRIBUTING.md         |    65 -
 .../angular-ui-router/LICENSE                 |    21 -
 .../angular-ui-router/README.md               |   245 -
 .../api/angular-ui-router.d.ts                |   126 -
 .../angular-ui-router/bower.json              |    23 -
 .../release/angular-ui-router.js              |  4370 --
 .../release/angular-ui-router.min.js          |     7 -
 .../angular-ui-router/src/common.js           |   292 -
 .../angular-ui-router/src/resolve.js          |   252 -
 .../angular-ui-router/src/state.js            |  1465 -
 .../angular-ui-router/src/stateDirectives.js  |   285 -
 .../angular-ui-router/src/stateFilters.js     |    39 -
 .../angular-ui-router/src/templateFactory.js  |   110 -
 .../src/urlMatcherFactory.js                  |  1050 -
 .../angular-ui-router/src/urlRouter.js        |   427 -
 .../angular-ui-router/src/view.js             |    71 -
 .../angular-ui-router/src/viewDirective.js    |   303 -
 .../angular-ui-router/src/viewScroll.js       |    52 -
 .../bower_components/angular/.bower.json      |    17 -
 .../webapp/bower_components/angular/README.md |    67 -
 .../bower_components/angular/angular-csp.css  |    13 -
 .../bower_components/angular/angular.js       | 26116 -----------
 .../bower_components/angular/angular.min.js   |   251 -
 .../angular/angular.min.js.gzip               |   Bin 45987 -> 0 bytes
 .../angular/angular.min.js.map                |     8 -
 .../bower_components/angular/bower.json       |     8 -
 .../bower_components/angular/package.json     |    25 -
 .../bower_components/bootstrap/.bower.json    |    21 -
 .../bower_components/bootstrap/.gitignore     |    37 -
 .../bower_components/bootstrap/.travis.yml    |     3 -
 .../bower_components/bootstrap/CHANGELOG.md   |   350 -
 .../bootstrap/CONTRIBUTING.md                 |    75 -
 .../webapp/bower_components/bootstrap/LICENSE |   176 -
 .../bower_components/bootstrap/Makefile       |   126 -
 .../bower_components/bootstrap/README.md      |   116 -
 .../bower_components/bootstrap/component.json |     8 -
 .../bower_components/bootstrap/composer.json  |     9 -
 .../docs/assets/css/bootstrap-responsive.css  |  1109 -
 .../bootstrap/docs/assets/css/bootstrap.css   |  6158 ---
 .../bootstrap/docs/assets/css/docs.css        |  1067 -
 .../ico/apple-touch-icon-114-precomposed.png  |   Bin 11392 -> 0 bytes
 .../ico/apple-touch-icon-144-precomposed.png  |   Bin 16780 -> 0 bytes
 .../ico/apple-touch-icon-57-precomposed.png   |   Bin 4026 -> 0 bytes
 .../ico/apple-touch-icon-72-precomposed.png   |   Bin 5681 -> 0 bytes
 .../bootstrap/docs/assets/ico/favicon.ico     |   Bin 1150 -> 0 bytes
 .../bootstrap/docs/assets/ico/favicon.png     |   Bin 2711 -> 0 bytes
 .../docs/assets/img/bootstrap-docs-readme.png |   Bin 30612 -> 0 bytes
 .../assets/img/bootstrap-mdo-sfmoma-01.jpg    |   Bin 125346 -> 0 bytes
 .../assets/img/bootstrap-mdo-sfmoma-02.jpg    |   Bin 81284 -> 0 bytes
 .../assets/img/bootstrap-mdo-sfmoma-03.jpg    |   Bin 49063 -> 0 bytes
 .../assets/img/bs-docs-bootstrap-features.png |   Bin 11244 -> 0 bytes
 .../assets/img/bs-docs-masthead-pattern.png   |   Bin 6450 -> 0 bytes
 .../img/bs-docs-responsive-illustrations.png  |   Bin 10572 -> 0 bytes
 .../assets/img/bs-docs-twitter-github.png     |   Bin 30968 -> 0 bytes
 .../assets/img/example-sites/8020select.png   |   Bin 62853 -> 0 bytes
 .../img/example-sites/adoptahydrant.png       |   Bin 136480 -> 0 bytes
 .../assets/img/example-sites/breakingnews.png |   Bin 72725 -> 0 bytes
 .../docs/assets/img/example-sites/fleetio.png |   Bin 39837 -> 0 bytes
 .../img/example-sites/gathercontent.png       |   Bin 76560 -> 0 bytes
 .../docs/assets/img/example-sites/jshint.png  |   Bin 7258 -> 0 bytes
 .../docs/assets/img/example-sites/kippt.png   |   Bin 48259 -> 0 bytes
 .../assets/img/example-sites/soundready.png   |   Bin 50225 -> 0 bytes
 .../examples/bootstrap-example-carousel.png   |   Bin 339980 -> 0 bytes
 .../img/examples/bootstrap-example-fluid.png  |   Bin 209039 -> 0 bytes
 .../bootstrap-example-justified-nav.png       |   Bin 136021 -> 0 bytes
 .../bootstrap-example-marketing-narrow.png    |   Bin 117303 -> 0 bytes
 .../examples/bootstrap-example-marketing.png  |   Bin 134269 -> 0 bytes
 .../img/examples/bootstrap-example-signin.png |   Bin 22037 -> 0 bytes
 .../examples/bootstrap-example-starter.png    |   Bin 36099 -> 0 bytes
 .../bootstrap-example-sticky-footer.png       |   Bin 30820 -> 0 bytes
 .../img/examples/browser-icon-chrome.png      |   Bin 55522 -> 0 bytes
 .../img/examples/browser-icon-firefox.png     |   Bin 175994 -> 0 bytes
 .../img/examples/browser-icon-safari.png      |   Bin 209527 -> 0 bytes
 .../docs/assets/img/examples/slide-01.jpg     |   Bin 83303 -> 0 bytes
 .../docs/assets/img/examples/slide-02.jpg     |   Bin 137070 -> 0 bytes
 .../docs/assets/img/examples/slide-03.jpg     |   Bin 137378 -> 0 bytes
 .../assets/img/glyphicons-halflings-white.png |   Bin 8777 -> 0 bytes
 .../docs/assets/img/glyphicons-halflings.png  |   Bin 12799 -> 0 bytes
 .../docs/assets/img/grid-baseline-20px.png    |   Bin 84 -> 0 bytes
 .../docs/assets/img/less-logo-large.png       |   Bin 12824 -> 0 bytes
 .../assets/img/responsive-illustrations.png   |   Bin 1008 -> 0 bytes
 .../bootstrap/docs/assets/js/README.md        |   106 -
 .../bootstrap/docs/assets/js/application.js   |   156 -
 .../docs/assets/js/bootstrap-affix.js         |   117 -
 .../docs/assets/js/bootstrap-alert.js         |    99 -
 .../docs/assets/js/bootstrap-button.js        |   105 -
 .../docs/assets/js/bootstrap-carousel.js      |   207 -
 .../docs/assets/js/bootstrap-collapse.js      |   167 -
 .../docs/assets/js/bootstrap-dropdown.js      |   165 -
 .../docs/assets/js/bootstrap-modal.js         |   247 -
 .../docs/assets/js/bootstrap-popover.js       |   114 -
 .../docs/assets/js/bootstrap-scrollspy.js     |   162 -
 .../bootstrap/docs/assets/js/bootstrap-tab.js |   144 -
 .../docs/assets/js/bootstrap-tooltip.js       |   353 -
 .../docs/assets/js/bootstrap-transition.js    |    60 -
 .../docs/assets/js/bootstrap-typeahead.js     |   335 -
 .../bootstrap/docs/assets/js/bootstrap.js     |  2268 -
 .../bootstrap/docs/assets/js/bootstrap.min.js |     6 -
 .../js/google-code-prettify/prettify.css      |    30 -
 .../js/google-code-prettify/prettify.js       |    28 -
 .../bootstrap/docs/assets/js/holder/holder.js |   401 -
 .../bootstrap/docs/assets/js/html5shiv.js     |     8 -
 .../bootstrap/docs/assets/js/jquery.js        |     5 -
 .../bootstrap/docs/base-css.html              |  2215 -
 .../bootstrap/docs/build/index.js             |    44 -
 .../bootstrap/docs/build/package.json         |     6 -
 .../bootstrap/docs/components.html            |  2626 --
 .../bootstrap/docs/customize.html             |   514 -
 .../bootstrap/docs/examples/carousel.html     |   454 -
 .../bootstrap/docs/examples/fluid.html        |   163 -
 .../bootstrap/docs/examples/hero.html         |   126 -
 .../docs/examples/justified-nav.html          |   174 -
 .../docs/examples/marketing-narrow.html       |   137 -
 .../bootstrap/docs/examples/signin.html       |    94 -
 .../docs/examples/starter-template.html       |    79 -
 .../docs/examples/sticky-footer-navbar.html   |   161 -
 .../docs/examples/sticky-footer.html          |   125 -
 .../bootstrap/docs/extend.html                |   282 -
 .../bootstrap/docs/getting-started.html       |   377 -
 .../bootstrap/docs/index.html                 |   221 -
 .../bootstrap/docs/javascript.html            |  1780 -
 .../bootstrap/docs/scaffolding.html           |   602 -
 .../bootstrap/docs/templates/layout.mustache  |   151 -
 .../docs/templates/pages/base-css.mustache    |  2102 -
 .../docs/templates/pages/components.mustache  |  2505 --
 .../docs/templates/pages/customize.mustache   |   393 -
 .../docs/templates/pages/extend.mustache      |   161 -
 .../templates/pages/getting-started.mustache  |   256 -
 .../docs/templates/pages/index.mustache       |   100 -
 .../docs/templates/pages/javascript.mustache  |  1660 -
 .../docs/templates/pages/scaffolding.mustache |   485 -
 .../img/glyphicons-halflings-white.png        |   Bin 8777 -> 0 bytes
 .../bootstrap/img/glyphicons-halflings.png    |   Bin 12799 -> 0 bytes
 .../bower_components/bootstrap/js/.jshintrc   |    12 -
 .../bootstrap/js/bootstrap-affix.js           |   117 -
 .../bootstrap/js/bootstrap-alert.js           |    99 -
 .../bootstrap/js/bootstrap-button.js          |   105 -
 .../bootstrap/js/bootstrap-carousel.js        |   207 -
 .../bootstrap/js/bootstrap-collapse.js        |   167 -
 .../bootstrap/js/bootstrap-dropdown.js        |   165 -
 .../bootstrap/js/bootstrap-modal.js           |   247 -
 .../bootstrap/js/bootstrap-popover.js         |   114 -
 .../bootstrap/js/bootstrap-scrollspy.js       |   162 -
 .../bootstrap/js/bootstrap-tab.js             |   144 -
 .../bootstrap/js/bootstrap-tooltip.js         |   353 -
 .../bootstrap/js/bootstrap-transition.js      |    60 -
 .../bootstrap/js/bootstrap-typeahead.js       |   335 -
 .../bootstrap/js/tests/index.html             |    56 -
 .../bootstrap/js/tests/phantom.js             |    63 -
 .../bootstrap/js/tests/server.js              |    14 -
 .../js/tests/unit/bootstrap-affix.js          |    25 -
 .../js/tests/unit/bootstrap-alert.js          |    62 -
 .../js/tests/unit/bootstrap-button.js         |   102 -
 .../js/tests/unit/bootstrap-carousel.js       |    81 -
 .../js/tests/unit/bootstrap-collapse.js       |    94 -
 .../js/tests/unit/bootstrap-dropdown.js       |   151 -
 .../js/tests/unit/bootstrap-modal.js          |   120 -
 .../js/tests/unit/bootstrap-phantom.js        |    21 -
 .../js/tests/unit/bootstrap-popover.js        |   113 -
 .../js/tests/unit/bootstrap-scrollspy.js      |    37 -
 .../bootstrap/js/tests/unit/bootstrap-tab.js  |    86 -
 .../js/tests/unit/bootstrap-tooltip.js        |   294 -
 .../js/tests/unit/bootstrap-transition.js     |    13 -
 .../js/tests/unit/bootstrap-typeahead.js      |   236 -
 .../bootstrap/js/tests/vendor/jquery.js       |     5 -
 .../bootstrap/js/tests/vendor/qunit.css       |   232 -
 .../bootstrap/js/tests/vendor/qunit.js        |  1510 -
 .../bootstrap/less/accordion.less             |    34 -
 .../bootstrap/less/alerts.less                |    79 -
 .../bootstrap/less/bootstrap.less             |    63 -
 .../bootstrap/less/breadcrumbs.less           |    24 -
 .../bootstrap/less/button-groups.less         |   229 -
 .../bootstrap/less/buttons.less               |   228 -
 .../bootstrap/less/carousel.less              |   158 -
 .../bootstrap/less/close.less                 |    32 -
 .../bower_components/bootstrap/less/code.less |    61 -
 .../bootstrap/less/component-animations.less  |    22 -
 .../bootstrap/less/dropdowns.less             |   237 -
 .../bootstrap/less/forms.less                 |   690 -
 .../bower_components/bootstrap/less/grid.less |    21 -
 .../bootstrap/less/hero-unit.less             |    25 -
 .../bootstrap/less/labels-badges.less         |    84 -
 .../bootstrap/less/layouts.less               |    16 -
 .../bootstrap/less/media.less                 |    55 -
 .../bootstrap/less/mixins.less                |   702 -
 .../bootstrap/less/modals.less                |    95 -
 .../bootstrap/less/navbar.less                |   497 -
 .../bower_components/bootstrap/less/navs.less |   409 -
 .../bootstrap/less/pager.less                 |    43 -
 .../bootstrap/less/pagination.less            |   123 -
 .../bootstrap/less/popovers.less              |   133 -
 .../bootstrap/less/progress-bars.less         |   122 -
 .../bootstrap/less/reset.less                 |   216 -
 .../bootstrap/less/responsive-1200px-min.less |    28 -
 .../bootstrap/less/responsive-767px-max.less  |   193 -
 .../less/responsive-768px-979px.less          |    19 -
 .../bootstrap/less/responsive-navbar.less     |   189 -
 .../bootstrap/less/responsive-utilities.less  |    59 -
 .../bootstrap/less/responsive.less            |    48 -
 .../bootstrap/less/scaffolding.less           |    53 -
 .../bootstrap/less/sprites.less               |   197 -
 .../bootstrap/less/tables.less                |   244 -
 .../bootstrap/less/tests/buttons.html         |   139 -
 .../bootstrap/less/tests/css-tests.css        |   150 -
 .../bootstrap/less/tests/css-tests.html       |  1399 -
 .../less/tests/forms-responsive.html          |    71 -
 .../bootstrap/less/tests/forms.html           |   179 -
 .../less/tests/navbar-fixed-top.html          |   104 -
 .../less/tests/navbar-static-top.html         |   107 -
 .../bootstrap/less/tests/navbar.html          |   107 -
 .../bootstrap/less/thumbnails.less            |    53 -
 .../bootstrap/less/tooltip.less               |    70 -
 .../bower_components/bootstrap/less/type.less |   247 -
 .../bootstrap/less/utilities.less             |    30 -
 .../bootstrap/less/variables.less             |   301 -
 .../bootstrap/less/wells.less                 |    29 -
 .../bower_components/bootstrap/package.json   |    26 -
 .../bower_components/jquery/.bower.json       |    37 -
 .../bower_components/jquery/MIT-LICENSE.txt   |    21 -
 .../webapp/bower_components/jquery/bower.json |    27 -
 .../bower_components/jquery/dist/jquery.js    |  9205 ----
 .../jquery/dist/jquery.min.js                 |     5 -
 .../jquery/dist/jquery.min.map                |     1 -
 .../bower_components/jquery/src/ajax.js       |   786 -
 .../bower_components/jquery/src/ajax/jsonp.js |    89 -
 .../bower_components/jquery/src/ajax/load.js  |    75 -
 .../jquery/src/ajax/parseJSON.js              |    13 -
 .../jquery/src/ajax/parseXML.js               |    28 -
 .../jquery/src/ajax/script.js                 |    64 -
 .../jquery/src/ajax/var/nonce.js              |     5 -
 .../jquery/src/ajax/var/rquery.js             |     3 -
 .../bower_components/jquery/src/ajax/xhr.js   |   136 -
 .../bower_components/jquery/src/attributes.js |    11 -
 .../jquery/src/attributes/attr.js             |   141 -
 .../jquery/src/attributes/classes.js          |   158 -
 .../jquery/src/attributes/prop.js             |    94 -
 .../jquery/src/attributes/support.js          |    35 -
 .../jquery/src/attributes/val.js              |   161 -
 .../bower_components/jquery/src/callbacks.js  |   205 -
 .../bower_components/jquery/src/core.js       |   497 -
 .../jquery/src/core/access.js                 |    60 -
 .../bower_components/jquery/src/core/init.js  |   123 -
 .../jquery/src/core/parseHTML.js              |    39 -
 .../bower_components/jquery/src/core/ready.js |    97 -
 .../jquery/src/core/var/rsingleTag.js         |     4 -
 .../webapp/bower_components/jquery/src/css.js |   450 -
 .../jquery/src/css/addGetHookIf.js            |    22 -
 .../bower_components/jquery/src/css/curCSS.js |    57 -
 .../jquery/src/css/defaultDisplay.js          |    70 -
 .../jquery/src/css/hiddenVisibleSelectors.js  |    15 -
 .../jquery/src/css/support.js                 |    96 -
 .../bower_components/jquery/src/css/swap.js   |    28 -
 .../jquery/src/css/var/cssExpand.js           |     3 -
 .../jquery/src/css/var/getStyles.js           |    12 -
 .../jquery/src/css/var/isHidden.js            |    13 -
 .../jquery/src/css/var/rmargin.js             |     3 -
 .../jquery/src/css/var/rnumnonpx.js           |     5 -
 .../bower_components/jquery/src/data.js       |   178 -
 .../bower_components/jquery/src/data/Data.js  |   181 -
 .../jquery/src/data/accepts.js                |    20 -
 .../jquery/src/data/var/data_priv.js          |     5 -
 .../jquery/src/data/var/data_user.js          |     5 -
 .../bower_components/jquery/src/deferred.js   |   149 -
 .../bower_components/jquery/src/deprecated.js |    13 -
 .../bower_components/jquery/src/dimensions.js |    50 -
 .../bower_components/jquery/src/effects.js    |   648 -
 .../jquery/src/effects/Tween.js               |   114 -
 .../jquery/src/effects/animatedSelector.js    |    13 -
 .../bower_components/jquery/src/event.js      |   868 -
 .../bower_components/jquery/src/event/ajax.js |    13 -
 .../jquery/src/event/alias.js                 |    39 -
 .../jquery/src/event/support.js               |     9 -
 .../jquery/src/exports/amd.js                 |    24 -
 .../jquery/src/exports/global.js              |    32 -
 .../bower_components/jquery/src/intro.js      |    44 -
 .../bower_components/jquery/src/jquery.js     |    37 -
 .../jquery/src/manipulation.js                |   580 -
 .../jquery/src/manipulation/_evalUrl.js       |    18 -
 .../jquery/src/manipulation/support.js        |    32 -
 .../src/manipulation/var/rcheckableType.js    |     3 -
 .../bower_components/jquery/src/offset.js     |   207 -
 .../bower_components/jquery/src/outro.js      |     1 -
 .../bower_components/jquery/src/queue.js      |   142 -
 .../jquery/src/queue/delay.js                 |    22 -
 .../jquery/src/selector-native.js             |   172 -
 .../jquery/src/selector-sizzle.js             |    14 -
 .../bower_components/jquery/src/selector.js   |     1 -
 .../bower_components/jquery/src/serialize.js  |   111 -
 .../jquery/src/sizzle/dist/sizzle.js          |  2067 -
 .../jquery/src/sizzle/dist/sizzle.min.js      |     3 -
 .../jquery/src/sizzle/dist/sizzle.min.map     |     1 -
 .../bower_components/jquery/src/traversing.js |   199 -
 .../jquery/src/traversing/findFilter.js       |   100 -
 .../src/traversing/var/rneedsContext.js       |     6 -
 .../bower_components/jquery/src/var/arr.js    |     3 -
 .../jquery/src/var/class2type.js              |     4 -
 .../bower_components/jquery/src/var/concat.js |     5 -
 .../bower_components/jquery/src/var/hasOwn.js |     5 -
 .../jquery/src/var/indexOf.js                 |     5 -
 .../bower_components/jquery/src/var/pnum.js   |     3 -
 .../bower_components/jquery/src/var/push.js   |     5 -
 .../jquery/src/var/rnotwhite.js               |     3 -
 .../bower_components/jquery/src/var/slice.js  |     5 -
 .../jquery/src/var/strundefined.js            |     3 -
 .../jquery/src/var/support.js                 |     4 -
 .../jquery/src/var/toString.js                |     5 -
 .../bower_components/jquery/src/wrap.js       |    79 -
 .../webapp/bower_components/json3/.bower.json |    47 -
 .../bower_components/json3/CHANGELOG.md       |    44 -
 .../bower_components/json3/CONTRIBUTING.md    |     3 -
 .../webapp/bower_components/json3/LICENSE     |    20 -
 .../webapp/bower_components/json3/README.md   |   152 -
 .../webapp/bower_components/json3/bower.json  |    38 -
 .../bower_components/json3/lib/json3.js       |   902 -
 .../bower_components/json3/lib/json3.min.js   |    17 -
 src/main/webapp/index.html                    |    46 +-
 src/main/webapp/scripts/app/app.js            |   154 +-
 .../scripts/app/fragments/bodyHeader.html     |    24 -
 .../webapp/scripts/app/fragments/footer.html  |     2 +-
 .../webapp/scripts/app/fragments/nav.html     |    30 +
 .../webapp/scripts/app/fragments/welcome.html |     1 +
 .../webapp/scripts/app/main/MainController.js |     9 -
 src/main/webapp/scripts/app/main/main.html    |     3 -
 .../owner-details/owner-details.component.js  |    16 +
 .../owner-details/owner-details.template.html |    69 +
 .../app/owner-form/owner-form.component.js    |    41 +
 .../app/owner-form/owner-form.template.html   |    44 +
 .../{owner => owner-list}/OwnerController.js  |     2 -
 .../app/owner-list/owner-list.component.js    |    15 +
 .../app/owner-list/owner-list.template.html   |    24 +
 .../{owner => owner-list}/ownerDetail.html    |     0
 .../app/{owner => owner-list}/ownerForm.html  |     0
 .../ownerSearchForm.html                      |     0
 .../webapp/scripts/app/owner/ownerList.html   |    26 -
 .../app/pet-form/pet-form.component.js        |    63 +
 .../app/pet-form/pet-form.template.html       |    43 +
 .../app/vet-list/vet-list.component.js        |    16 +
 .../app/vet-list/vet-list.template.html       |    15 +
 .../webapp/scripts/app/vet/VetController.js   |    13 -
 src/main/webapp/scripts/app/vet/vetList.html  |    16 -
 .../service/AbstractClinicServiceTests.java   |    18 +-
 372 files changed, 529 insertions(+), 144446 deletions(-)
 delete mode 100644 src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp
 delete mode 100644 src/main/webapp/WEB-INF/no-spring-config-files-there.txt
 delete mode 100644 src/main/webapp/WEB-INF/tags/inputField.tag
 delete mode 100644 src/main/webapp/WEB-INF/tags/selectField.tag
 delete mode 100644 src/main/webapp/bower_components/angular-mocks/.bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-mocks/README.md
 delete mode 100644 src/main/webapp/bower_components/angular-mocks/angular-mocks.js
 delete mode 100644 src/main/webapp/bower_components/angular-mocks/bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-mocks/package.json
 delete mode 100644 src/main/webapp/bower_components/angular-resource/.bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-resource/README.md
 delete mode 100644 src/main/webapp/bower_components/angular-resource/angular-resource.js
 delete mode 100644 src/main/webapp/bower_components/angular-resource/angular-resource.min.js
 delete mode 100644 src/main/webapp/bower_components/angular-resource/angular-resource.min.js.map
 delete mode 100644 src/main/webapp/bower_components/angular-resource/bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-resource/package.json
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/.bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/README.md
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/angular-scenario.js
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter-config.js
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter.js
 delete mode 100644 src/main/webapp/bower_components/angular-scenario/package.json
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/.bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/CHANGELOG.md
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/CONTRIBUTING.md
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/LICENSE
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/README.md
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/api/angular-ui-router.d.ts
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/bower.json
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.min.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/common.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/resolve.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/state.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/stateDirectives.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/stateFilters.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/templateFactory.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/urlMatcherFactory.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/urlRouter.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/view.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/viewDirective.js
 delete mode 100644 src/main/webapp/bower_components/angular-ui-router/src/viewScroll.js
 delete mode 100644 src/main/webapp/bower_components/angular/.bower.json
 delete mode 100644 src/main/webapp/bower_components/angular/README.md
 delete mode 100644 src/main/webapp/bower_components/angular/angular-csp.css
 delete mode 100644 src/main/webapp/bower_components/angular/angular.js
 delete mode 100644 src/main/webapp/bower_components/angular/angular.min.js
 delete mode 100644 src/main/webapp/bower_components/angular/angular.min.js.gzip
 delete mode 100644 src/main/webapp/bower_components/angular/angular.min.js.map
 delete mode 100644 src/main/webapp/bower_components/angular/bower.json
 delete mode 100644 src/main/webapp/bower_components/angular/package.json
 delete mode 100644 src/main/webapp/bower_components/bootstrap/.bower.json
 delete mode 100644 src/main/webapp/bower_components/bootstrap/.gitignore
 delete mode 100644 src/main/webapp/bower_components/bootstrap/.travis.yml
 delete mode 100644 src/main/webapp/bower_components/bootstrap/CHANGELOG.md
 delete mode 100644 src/main/webapp/bower_components/bootstrap/CONTRIBUTING.md
 delete mode 100644 src/main/webapp/bower_components/bootstrap/LICENSE
 delete mode 100644 src/main/webapp/bower_components/bootstrap/Makefile
 delete mode 100644 src/main/webapp/bower_components/bootstrap/README.md
 delete mode 100644 src/main/webapp/bower_components/bootstrap/component.json
 delete mode 100644 src/main/webapp/bower_components/bootstrap/composer.json
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/css/docs.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-114-precomposed.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-144-precomposed.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-57-precomposed.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-72-precomposed.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.ico
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-docs-readme.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-bootstrap-features.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-masthead-pattern.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-responsive-illustrations.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-twitter-github.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/8020select.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/adoptahydrant.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/breakingnews.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/fleetio.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/gathercontent.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/jshint.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/kippt.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/soundready.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-carousel.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-fluid.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-justified-nav.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing-narrow.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-signin.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-starter.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-sticky-footer.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-chrome.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-firefox.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-safari.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-01.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-02.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-03.jpg
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings-white.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/grid-baseline-20px.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/less-logo-large.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/img/responsive-illustrations.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/README.md
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/application.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-affix.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-alert.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-button.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-carousel.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-collapse.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-dropdown.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-modal.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-popover.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-scrollspy.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tab.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tooltip.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-transition.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-typeahead.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.min.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.js
 delete mode 100755 src/main/webapp/bower_components/bootstrap/docs/assets/js/holder/holder.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/html5shiv.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/assets/js/jquery.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/base-css.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/build/index.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/build/package.json
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/components.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/customize.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/carousel.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/fluid.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/hero.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/justified-nav.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/marketing-narrow.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/signin.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/starter-template.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer-navbar.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/extend.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/getting-started.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/index.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/javascript.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/scaffolding.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/layout.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/base-css.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/components.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/customize.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/extend.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/getting-started.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/index.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/javascript.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/docs/templates/pages/scaffolding.mustache
 delete mode 100644 src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings-white.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings.png
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/.jshintrc
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-affix.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-alert.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-button.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-carousel.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-collapse.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-dropdown.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-modal.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-popover.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-scrollspy.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-tab.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-tooltip.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-transition.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/bootstrap-typeahead.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/index.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/phantom.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/server.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-affix.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-alert.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-button.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-carousel.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-collapse.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-dropdown.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-modal.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-phantom.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-popover.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-scrollspy.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tab.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tooltip.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-transition.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-typeahead.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/vendor/jquery.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.js
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/accordion.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/alerts.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/bootstrap.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/breadcrumbs.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/button-groups.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/buttons.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/carousel.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/close.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/code.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/component-animations.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/dropdowns.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/forms.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/grid.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/hero-unit.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/labels-badges.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/layouts.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/media.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/mixins.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/modals.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/navbar.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/navs.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/pager.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/pagination.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/popovers.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/progress-bars.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/reset.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive-1200px-min.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive-767px-max.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive-768px-979px.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive-navbar.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive-utilities.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/responsive.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/scaffolding.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/sprites.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tables.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/buttons.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/css-tests.css
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/css-tests.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/forms-responsive.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/forms.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/navbar-fixed-top.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/navbar-static-top.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tests/navbar.html
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/thumbnails.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/tooltip.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/type.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/utilities.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/variables.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/less/wells.less
 delete mode 100644 src/main/webapp/bower_components/bootstrap/package.json
 delete mode 100644 src/main/webapp/bower_components/jquery/.bower.json
 delete mode 100644 src/main/webapp/bower_components/jquery/MIT-LICENSE.txt
 delete mode 100644 src/main/webapp/bower_components/jquery/bower.json
 delete mode 100644 src/main/webapp/bower_components/jquery/dist/jquery.js
 delete mode 100644 src/main/webapp/bower_components/jquery/dist/jquery.min.js
 delete mode 100644 src/main/webapp/bower_components/jquery/dist/jquery.min.map
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/jsonp.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/load.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/parseJSON.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/parseXML.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/script.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/var/nonce.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/var/rquery.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/ajax/xhr.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes/attr.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes/classes.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes/prop.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes/support.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/attributes/val.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/callbacks.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core/access.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core/init.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core/parseHTML.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core/ready.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/core/var/rsingleTag.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/addGetHookIf.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/curCSS.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/defaultDisplay.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/hiddenVisibleSelectors.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/support.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/swap.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/var/cssExpand.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/var/getStyles.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/var/isHidden.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/var/rmargin.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/css/var/rnumnonpx.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/data.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/data/Data.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/data/accepts.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/data/var/data_priv.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/data/var/data_user.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/deferred.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/deprecated.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/dimensions.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/effects.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/effects/Tween.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/effects/animatedSelector.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/event.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/event/ajax.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/event/alias.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/event/support.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/exports/amd.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/exports/global.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/intro.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/jquery.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/manipulation.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/manipulation/_evalUrl.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/manipulation/support.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/manipulation/var/rcheckableType.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/offset.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/outro.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/queue.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/queue/delay.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/selector-native.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/selector-sizzle.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/selector.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/serialize.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.map
 delete mode 100644 src/main/webapp/bower_components/jquery/src/traversing.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/traversing/findFilter.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/traversing/var/rneedsContext.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/arr.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/class2type.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/concat.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/hasOwn.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/indexOf.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/pnum.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/push.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/rnotwhite.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/slice.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/strundefined.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/support.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/var/toString.js
 delete mode 100644 src/main/webapp/bower_components/jquery/src/wrap.js
 delete mode 100644 src/main/webapp/bower_components/json3/.bower.json
 delete mode 100644 src/main/webapp/bower_components/json3/CHANGELOG.md
 delete mode 100644 src/main/webapp/bower_components/json3/CONTRIBUTING.md
 delete mode 100644 src/main/webapp/bower_components/json3/LICENSE
 delete mode 100644 src/main/webapp/bower_components/json3/README.md
 delete mode 100644 src/main/webapp/bower_components/json3/bower.json
 delete mode 100644 src/main/webapp/bower_components/json3/lib/json3.js
 delete mode 100644 src/main/webapp/bower_components/json3/lib/json3.min.js
 delete mode 100644 src/main/webapp/scripts/app/fragments/bodyHeader.html
 create mode 100644 src/main/webapp/scripts/app/fragments/nav.html
 create mode 100644 src/main/webapp/scripts/app/fragments/welcome.html
 delete mode 100644 src/main/webapp/scripts/app/main/MainController.js
 delete mode 100644 src/main/webapp/scripts/app/main/main.html
 create mode 100644 src/main/webapp/scripts/app/owner-details/owner-details.component.js
 create mode 100644 src/main/webapp/scripts/app/owner-details/owner-details.template.html
 create mode 100644 src/main/webapp/scripts/app/owner-form/owner-form.component.js
 create mode 100644 src/main/webapp/scripts/app/owner-form/owner-form.template.html
 rename src/main/webapp/scripts/app/{owner => owner-list}/OwnerController.js (99%)
 create mode 100644 src/main/webapp/scripts/app/owner-list/owner-list.component.js
 create mode 100644 src/main/webapp/scripts/app/owner-list/owner-list.template.html
 rename src/main/webapp/scripts/app/{owner => owner-list}/ownerDetail.html (100%)
 rename src/main/webapp/scripts/app/{owner => owner-list}/ownerForm.html (100%)
 rename src/main/webapp/scripts/app/{owner => owner-list}/ownerSearchForm.html (100%)
 delete mode 100644 src/main/webapp/scripts/app/owner/ownerList.html
 create mode 100644 src/main/webapp/scripts/app/pet-form/pet-form.component.js
 create mode 100644 src/main/webapp/scripts/app/pet-form/pet-form.template.html
 create mode 100644 src/main/webapp/scripts/app/vet-list/vet-list.component.js
 create mode 100644 src/main/webapp/scripts/app/vet-list/vet-list.template.html
 delete mode 100644 src/main/webapp/scripts/app/vet/VetController.js
 delete mode 100644 src/main/webapp/scripts/app/vet/vetList.html

diff --git a/pom.xml b/pom.xml
index adb51971..e8383478 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,18 @@
             <scope>provided</scope>
         </dependency>
 
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>bootstrap</artifactId>
+			<version>3.3.7</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>jquery</artifactId>
+			<version>3.1.0</version>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
diff --git a/src/main/java/org/springframework/samples/petclinic/repository/OwnerRepository.java b/src/main/java/org/springframework/samples/petclinic/repository/OwnerRepository.java
index 841d0bcd..4e0c7c4a 100644
--- a/src/main/java/org/springframework/samples/petclinic/repository/OwnerRepository.java
+++ b/src/main/java/org/springframework/samples/petclinic/repository/OwnerRepository.java
@@ -18,6 +18,7 @@ package org.springframework.samples.petclinic.repository;
 import java.util.Collection;
 
 import org.springframework.dao.DataAccessException;
+import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.Repository;
 import org.springframework.data.repository.query.Param;
@@ -33,31 +34,4 @@ import org.springframework.samples.petclinic.model.Owner;
  * @author Sam Brannen
  * @author Michael Isvy
  */
-public interface OwnerRepository extends Repository<Owner, Integer> {
-
-    /**
-     * Retrieve {@link Owner}s from the data store by last name, returning all owners
-     * whose last name <i>starts</i> with the given name.
-     * @param lastName Value to search for
-     * @return a Collection of matching {@link Owner}s (or an empty Collection if none
-     * found)
-     */
-    @Query("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName%")
-    Collection<Owner> findByLastName(@Param("lastName") String lastName);
-
-    /**
-     * Retrieve an {@link Owner} from the data store by id.
-     * @param id the id to search for
-     * @return the {@link Owner} if found
-     */
-    @Query("SELECT owner FROM Owner owner left join fetch owner.pets WHERE owner.id =:id")
-    Owner findById(@Param("id") int id);
-
-    /**
-     * Save an {@link Owner} to the data store, either inserting or updating it.
-     * @param owner the {@link Owner} to save
-     */
-    void save(Owner owner);
-
-
-}
+public interface OwnerRepository extends JpaRepository<Owner, Integer> { }
diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
index 93658212..d35e26bd 100644
--- a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
+++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java
@@ -17,7 +17,6 @@ package org.springframework.samples.petclinic.service;
 
 import java.util.Collection;
 
-import org.springframework.dao.DataAccessException;
 import org.springframework.samples.petclinic.model.Owner;
 import org.springframework.samples.petclinic.model.Pet;
 import org.springframework.samples.petclinic.model.PetType;
@@ -32,20 +31,20 @@ import org.springframework.samples.petclinic.model.Visit;
  */
 public interface ClinicService {
 
-    Collection<PetType> findPetTypes() throws DataAccessException;
+    Collection<PetType> findPetTypes();
 
-    Owner findOwnerById(int id) throws DataAccessException;
+    Owner findOwnerById(int id);
 
-    Pet findPetById(int id) throws DataAccessException;
+    Pet findPetById(int id);
 
-    void savePet(Pet pet) throws DataAccessException;
+    void savePet(Pet pet);
 
-    void saveVisit(Visit visit) throws DataAccessException;
+    void saveVisit(Visit visit);
 
-    Collection<Vet> findVets() throws DataAccessException;
+    Collection<Vet> findVets();
 
-    void saveOwner(Owner owner) throws DataAccessException;
+    void saveOwner(Owner owner);
 
-    Collection<Owner> findOwnerByLastName(String lastName) throws DataAccessException;
+    Collection<Owner> findAll();
 
 }
diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
index 0d7ff4d0..59b76409 100644
--- a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
+++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java
@@ -63,13 +63,12 @@ public class ClinicServiceImpl implements ClinicService {
     @Override
     @Transactional(readOnly = true)
     public Owner findOwnerById(int id) throws DataAccessException {
-        return ownerRepository.findById(id);
+        return ownerRepository.findOne(id);
     }
 
-    @Override
     @Transactional(readOnly = true)
-    public Collection<Owner> findOwnerByLastName(String lastName) throws DataAccessException {
-        return ownerRepository.findByLastName(lastName);
+    public Collection<Owner> findAll() throws DataAccessException {
+        return ownerRepository.findAll();
     }
 
     @Override
diff --git a/src/main/java/org/springframework/samples/petclinic/web/OwnerResource.java b/src/main/java/org/springframework/samples/petclinic/web/OwnerResource.java
index 073cf80a..2c3a1d8d 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/OwnerResource.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/OwnerResource.java
@@ -22,12 +22,12 @@ import org.springframework.http.HttpStatus;
 import org.springframework.samples.petclinic.model.Owner;
 import org.springframework.samples.petclinic.service.ClinicService;
 import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.InitBinder;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -79,20 +79,9 @@ public class OwnerResource {
     /**
      * Read List of Owners
      */
-    @RequestMapping(value = "/owner/list", method = RequestMethod.GET)
-    public Collection<Owner> findOwnerCollection(@RequestParam("lastName") String ownerLastName) {
-
-    	if (ownerLastName == null) {
-    		ownerLastName = "";
-    	}
-    	
-        Collection<Owner> results = this.clinicService.findOwnerByLastName(ownerLastName);
-        if (results.isEmpty()) {
-            return null;
-        }
-        else {
-            return results;
-        }
+    @GetMapping("/owner/list")
+    public Collection<Owner> findAll() {
+        return clinicService.findAll();
     }
     
     /**
diff --git a/src/main/java/org/springframework/samples/petclinic/web/PetResource.java b/src/main/java/org/springframework/samples/petclinic/web/PetResource.java
index c96b3571..8a93d338 100644
--- a/src/main/java/org/springframework/samples/petclinic/web/PetResource.java
+++ b/src/main/java/org/springframework/samples/petclinic/web/PetResource.java
@@ -15,27 +15,27 @@
  */
 package org.springframework.samples.petclinic.web;
 
-import java.util.Date;
-import java.util.Map;
-
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
 import lombok.Getter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.http.HttpStatus;
 import org.springframework.samples.petclinic.model.Owner;
 import org.springframework.samples.petclinic.model.Pet;
 import org.springframework.samples.petclinic.model.PetType;
 import org.springframework.samples.petclinic.service.ClinicService;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.InitBinder;
-import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.bind.support.SessionStatus;
+
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.Map;
 
 /**
  * @author Juergen Hoeller
@@ -52,11 +52,6 @@ public class PetResource {
         this.clinicService = clinicService;
     }
 
-    @InitBinder
-    public void setAllowedFields(WebDataBinder dataBinder) {
-        dataBinder.setDisallowedFields("id");
-    }
-
     @GetMapping("/petTypes")
     Object getPetTypes() {
         return clinicService.findPetTypes();
@@ -71,16 +66,37 @@ public class PetResource {
         return "pets/createOrUpdatePetForm";
     }
 
-    @PostMapping("/owners/{ownerId}/pets/new")
-    public String processCreationForm(@ModelAttribute("pet") Pet pet, BindingResult result, SessionStatus status) {
-        new PetValidator().validate(pet, result);
-        if (result.hasErrors()) {
-            return "pets/createOrUpdatePetForm";
-        } else {
-            this.clinicService.savePet(pet);
-            status.setComplete();
-            return "redirect:/owner/{ownerId}";
+    @PostMapping("/owners/{ownerId}/pets")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void processCreationForm(
+            @RequestBody PetRequest petRequest,
+            @PathVariable("ownerId") int ownerId) {
+
+        Pet pet = new Pet();
+        Owner owner = this.clinicService.findOwnerById(ownerId);
+        owner.addPet(pet);
+
+        save(pet, petRequest);
+    }
+
+    @PutMapping("/owners/{ownerId}/pets/{petId}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void processUpdateForm(@RequestBody PetRequest petRequest) {
+        save(clinicService.findPetById(petRequest.getId()), petRequest);
+    }
+
+    private void save(Pet pet, PetRequest petRequest) {
+
+        pet.setName(petRequest.getName());
+        pet.setBirthDate(petRequest.getBirthDate());
+
+        for (PetType petType : clinicService.findPetTypes()) {
+            if (petType.getId() == petRequest.getTypeId()) {
+                pet.setType(petType);
+            }
         }
+
+        clinicService.savePet(pet);
     }
 
     @GetMapping("/owner/*/pet/{petId}")
@@ -89,17 +105,14 @@ public class PetResource {
         return new PetDetails(pet);
     }
 
-    @RequestMapping(value = "/owners/{ownerId}/pets/{petId}/edit", method = {RequestMethod.PUT, RequestMethod.POST})
-    public String processUpdateForm(@ModelAttribute("pet") Pet pet, BindingResult result, SessionStatus status) {
-        // we're not using @Valid annotation here because it is easier to define such validation rule in Java
-        new PetValidator().validate(pet, result);
-        if (result.hasErrors()) {
-            return "pets/createOrUpdatePetForm";
-        } else {
-            this.clinicService.savePet(pet);
-            status.setComplete();
-            return "redirect:/owners/{ownerId}";
-        }
+    @Data
+    static class PetRequest {
+        int id;
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        Date birthDate;
+        @Size(min = 1)
+        String name;
+        int typeId;
     }
 
     @Getter
diff --git a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp b/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp
deleted file mode 100644
index 85408dfe..00000000
--- a/src/main/webapp/WEB-INF/jsp/pets/createOrUpdateVisitForm.jsp
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html> 
-
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>
-<%@ taglib prefix="petclinic" tagdir="/WEB-INF/tags" %>
-
-
-<html lang="en">
-
-
-
-<body>
-<script>
-    $(function () {
-        $("#date").datepicker({ dateFormat: 'yy/mm/dd'});
-    });
-</script>
-<div class="container">
-    <h2><c:if test="${visit['new']}">New </c:if>Visit</h2>
-
-    <b>Pet</b>
-    <table class="table table-striped">
-        <thead>
-        <tr>
-            <th>Name</th>
-            <th>Birth Date</th>
-            <th>Type</th>
-            <th>Owner</th>
-        </tr>
-        </thead>
-        <tr>
-            <td><c:out value="${visit.pet.name}"/></td>
-            <td><joda:format value="${visit.pet.birthDate}" pattern="yyyy/MM/dd"/></td>
-            <td><c:out value="${visit.pet.type.name}"/></td>
-            <td><c:out value="${visit.pet.owner.firstName} ${visit.pet.owner.lastName}"/></td>
-        </tr>
-    </table>
-
-    <form:form modelAttribute="visit">
-    
-        <petclinic:inputField label="date" name="date" />
-        <petclinic:inputField label="description" name="description" />
-        
-        <div class="form-actions">
-            <input type="hidden" name="petId" value="${visit.pet.id}"/>
-            <button type="submit">Add Visit</button>
-        </div>
-    </form:form>
-
-    <br/>
-    <b>Previous Visits</b>
-    <table style="width: 333px;">
-        <tr>
-            <th>Date</th>
-            <th>Description</th>
-        </tr>
-        <c:forEach var="visit" items="${visit.pet.visits}">
-            <c:if test="${!visit['new']}">
-                <tr>
-                    <td><joda:format value="${visit.date}" pattern="yyyy/MM/dd"/></td>
-                    <td><c:out value="${visit.description}"/></td>
-                </tr>
-            </c:if>
-        </c:forEach>
-    </table>
-
-</div>
-</body>
-
-</html>
diff --git a/src/main/webapp/WEB-INF/no-spring-config-files-there.txt b/src/main/webapp/WEB-INF/no-spring-config-files-there.txt
deleted file mode 100644
index 45fb7bf0..00000000
--- a/src/main/webapp/WEB-INF/no-spring-config-files-there.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-All Spring config files (including Spring MVC ones) are inside src/main/resource.
-There are mostly 2 reasons to that:
-- All Spring config files are grouped into one single place
-- It is simpler to reference them from inside JUnit tests
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/tags/inputField.tag b/src/main/webapp/WEB-INF/tags/inputField.tag
deleted file mode 100644
index 796dc91c..00000000
--- a/src/main/webapp/WEB-INF/tags/inputField.tag
+++ /dev/null
@@ -1,19 +0,0 @@
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%@ attribute name="name" required="true" rtexprvalue="true"
-              description="Name of corresponding property in bean object" %>
-<%@ attribute name="label" required="true" rtexprvalue="true"
-              description="Label appears in red color if input is considered as invalid after submission" %>
-
-<spring:bind path="${name}">
-    <c:set var="cssGroup" value="control-group ${status.error ? 'error' : '' }"/>
-    <div class="${cssGroup}">
-        <label class="control-label">${label}</label>
-
-        <div class="controls">
-            <form:input path="${name}"/>
-            <span class="help-inline">${status.errorMessage}</span>
-        </div>
-    </div>
-</spring:bind>
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/tags/selectField.tag b/src/main/webapp/WEB-INF/tags/selectField.tag
deleted file mode 100644
index f93256ac..00000000
--- a/src/main/webapp/WEB-INF/tags/selectField.tag
+++ /dev/null
@@ -1,23 +0,0 @@
-<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%@ attribute name="name" required="true" rtexprvalue="true"
-              description="Name of corresponding property in bean object" %>
-<%@ attribute name="label" required="true" rtexprvalue="true"
-              description="Label appears in red color if input is considered as invalid after submission" %>
-<%@ attribute name="names" required="true" rtexprvalue="true" type="java.util.List"
-              description="Names in the list" %>
-<%@ attribute name="size" required="true" rtexprvalue="true"
-              description="Size of Select" %>
-
-<spring:bind path="${name}">
-    <c:set var="cssGroup" value="control-group ${status.error ? 'error' : '' }"/>
-    <div class="${cssGroup}">
-        <label class="control-label">${label}</label>
-
-        <div class="controls">
-            <form:select path="${name}" items="${names}" size="${size}"/>
-            <span class="help-inline">${status.errorMessage}</span>
-        </div>
-    </div>
-</spring:bind>
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-mocks/.bower.json b/src/main/webapp/bower_components/angular-mocks/.bower.json
deleted file mode 100644
index c2d3a35a..00000000
--- a/src/main/webapp/bower_components/angular-mocks/.bower.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "name": "angular-mocks",
-  "version": "1.3.11",
-  "main": "./angular-mocks.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  },
-  "homepage": "https://github.com/angular/bower-angular-mocks",
-  "_release": "1.3.11",
-  "_resolution": {
-    "type": "version",
-    "tag": "v1.3.11",
-    "commit": "2457be05bbe0d16947e2a1a0add1798cbadd11d2"
-  },
-  "_source": "git://github.com/angular/bower-angular-mocks.git",
-  "_target": "1.3.11",
-  "_originalSource": "angular-mocks"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-mocks/README.md b/src/main/webapp/bower_components/angular-mocks/README.md
deleted file mode 100644
index 1604ef88..00000000
--- a/src/main/webapp/bower_components/angular-mocks/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# packaged angular-mocks
-
-This repo is for distribution on `npm` and `bower`. The source for this module is in the
-[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngMock).
-Please file issues and pull requests against that repo.
-
-## Install
-
-You can install this package either with `npm` or with `bower`.
-
-### npm
-
-```shell
-npm install angular-mocks
-```
-
-The mocks are then available at `node_modules/angular-mocks/angular-mocks.js`.
-
-Note that this package is not in CommonJS format, so doing `require('angular-mocks')` will
-return `undefined`.
-
-### bower
-
-```shell
-bower install angular-mocks
-```
-
-The mocks are then available at `bower_components/angular-mocks/angular-mocks.js`.
-
-## Documentation
-
-Documentation is available on the
-[AngularJS docs site](https://docs.angularjs.org/guide/unit-testing).
-
-## License
-
-The MIT License
-
-Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/angular-mocks/angular-mocks.js b/src/main/webapp/bower_components/angular-mocks/angular-mocks.js
deleted file mode 100644
index 2a411cc3..00000000
--- a/src/main/webapp/bower_components/angular-mocks/angular-mocks.js
+++ /dev/null
@@ -1,2382 +0,0 @@
-/**
- * @license AngularJS v1.3.11
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {
-
-'use strict';
-
-/**
- * @ngdoc object
- * @name angular.mock
- * @description
- *
- * Namespace from 'angular-mocks.js' which contains testing related code.
- */
-angular.mock = {};
-
-/**
- * ! This is a private undocumented service !
- *
- * @name $browser
- *
- * @description
- * This service is a mock implementation of {@link ng.$browser}. It provides fake
- * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr,
- * cookies, etc...
- *
- * The api of this service is the same as that of the real {@link ng.$browser $browser}, except
- * that there are several helper methods available which can be used in tests.
- */
-angular.mock.$BrowserProvider = function() {
-  this.$get = function() {
-    return new angular.mock.$Browser();
-  };
-};
-
-angular.mock.$Browser = function() {
-  var self = this;
-
-  this.isMock = true;
-  self.$$url = "http://server/";
-  self.$$lastUrl = self.$$url; // used by url polling fn
-  self.pollFns = [];
-
-  // TODO(vojta): remove this temporary api
-  self.$$completeOutstandingRequest = angular.noop;
-  self.$$incOutstandingRequestCount = angular.noop;
-
-
-  // register url polling fn
-
-  self.onUrlChange = function(listener) {
-    self.pollFns.push(
-      function() {
-        if (self.$$lastUrl !== self.$$url || self.$$state !== self.$$lastState) {
-          self.$$lastUrl = self.$$url;
-          self.$$lastState = self.$$state;
-          listener(self.$$url, self.$$state);
-        }
-      }
-    );
-
-    return listener;
-  };
-
-  self.$$checkUrlChange = angular.noop;
-
-  self.cookieHash = {};
-  self.lastCookieHash = {};
-  self.deferredFns = [];
-  self.deferredNextId = 0;
-
-  self.defer = function(fn, delay) {
-    delay = delay || 0;
-    self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId});
-    self.deferredFns.sort(function(a, b) { return a.time - b.time;});
-    return self.deferredNextId++;
-  };
-
-
-  /**
-   * @name $browser#defer.now
-   *
-   * @description
-   * Current milliseconds mock time.
-   */
-  self.defer.now = 0;
-
-
-  self.defer.cancel = function(deferId) {
-    var fnIndex;
-
-    angular.forEach(self.deferredFns, function(fn, index) {
-      if (fn.id === deferId) fnIndex = index;
-    });
-
-    if (fnIndex !== undefined) {
-      self.deferredFns.splice(fnIndex, 1);
-      return true;
-    }
-
-    return false;
-  };
-
-
-  /**
-   * @name $browser#defer.flush
-   *
-   * @description
-   * Flushes all pending requests and executes the defer callbacks.
-   *
-   * @param {number=} number of milliseconds to flush. See {@link #defer.now}
-   */
-  self.defer.flush = function(delay) {
-    if (angular.isDefined(delay)) {
-      self.defer.now += delay;
-    } else {
-      if (self.deferredFns.length) {
-        self.defer.now = self.deferredFns[self.deferredFns.length - 1].time;
-      } else {
-        throw new Error('No deferred tasks to be flushed');
-      }
-    }
-
-    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
-      self.deferredFns.shift().fn();
-    }
-  };
-
-  self.$$baseHref = '/';
-  self.baseHref = function() {
-    return this.$$baseHref;
-  };
-};
-angular.mock.$Browser.prototype = {
-
-/**
-  * @name $browser#poll
-  *
-  * @description
-  * run all fns in pollFns
-  */
-  poll: function poll() {
-    angular.forEach(this.pollFns, function(pollFn) {
-      pollFn();
-    });
-  },
-
-  addPollFn: function(pollFn) {
-    this.pollFns.push(pollFn);
-    return pollFn;
-  },
-
-  url: function(url, replace, state) {
-    if (angular.isUndefined(state)) {
-      state = null;
-    }
-    if (url) {
-      this.$$url = url;
-      // Native pushState serializes & copies the object; simulate it.
-      this.$$state = angular.copy(state);
-      return this;
-    }
-
-    return this.$$url;
-  },
-
-  state: function() {
-    return this.$$state;
-  },
-
-  cookies:  function(name, value) {
-    if (name) {
-      if (angular.isUndefined(value)) {
-        delete this.cookieHash[name];
-      } else {
-        if (angular.isString(value) &&       //strings only
-            value.length <= 4096) {          //strict cookie storage limits
-          this.cookieHash[name] = value;
-        }
-      }
-    } else {
-      if (!angular.equals(this.cookieHash, this.lastCookieHash)) {
-        this.lastCookieHash = angular.copy(this.cookieHash);
-        this.cookieHash = angular.copy(this.cookieHash);
-      }
-      return this.cookieHash;
-    }
-  },
-
-  notifyWhenNoOutstandingRequests: function(fn) {
-    fn();
-  }
-};
-
-
-/**
- * @ngdoc provider
- * @name $exceptionHandlerProvider
- *
- * @description
- * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors
- * passed to the `$exceptionHandler`.
- */
-
-/**
- * @ngdoc service
- * @name $exceptionHandler
- *
- * @description
- * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
- * to it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
- * information.
- *
- *
- * ```js
- *   describe('$exceptionHandlerProvider', function() {
- *
- *     it('should capture log messages and exceptions', function() {
- *
- *       module(function($exceptionHandlerProvider) {
- *         $exceptionHandlerProvider.mode('log');
- *       });
- *
- *       inject(function($log, $exceptionHandler, $timeout) {
- *         $timeout(function() { $log.log(1); });
- *         $timeout(function() { $log.log(2); throw 'banana peel'; });
- *         $timeout(function() { $log.log(3); });
- *         expect($exceptionHandler.errors).toEqual([]);
- *         expect($log.assertEmpty());
- *         $timeout.flush();
- *         expect($exceptionHandler.errors).toEqual(['banana peel']);
- *         expect($log.log.logs).toEqual([[1], [2], [3]]);
- *       });
- *     });
- *   });
- * ```
- */
-
-angular.mock.$ExceptionHandlerProvider = function() {
-  var handler;
-
-  /**
-   * @ngdoc method
-   * @name $exceptionHandlerProvider#mode
-   *
-   * @description
-   * Sets the logging mode.
-   *
-   * @param {string} mode Mode of operation, defaults to `rethrow`.
-   *
-   *   - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log`
-   *            mode stores an array of errors in `$exceptionHandler.errors`, to allow later
-   *            assertion of them. See {@link ngMock.$log#assertEmpty assertEmpty()} and
-   *            {@link ngMock.$log#reset reset()}
-   *   - `rethrow`: If any errors are passed to the handler in tests, it typically means that there
-   *                is a bug in the application or test, so this mock will make these tests fail.
-   *                For any implementations that expect exceptions to be thrown, the `rethrow` mode
-   *                will also maintain a log of thrown errors.
-   */
-  this.mode = function(mode) {
-
-    switch (mode) {
-      case 'log':
-      case 'rethrow':
-        var errors = [];
-        handler = function(e) {
-          if (arguments.length == 1) {
-            errors.push(e);
-          } else {
-            errors.push([].slice.call(arguments, 0));
-          }
-          if (mode === "rethrow") {
-            throw e;
-          }
-        };
-        handler.errors = errors;
-        break;
-      default:
-        throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
-    }
-  };
-
-  this.$get = function() {
-    return handler;
-  };
-
-  this.mode('rethrow');
-};
-
-
-/**
- * @ngdoc service
- * @name $log
- *
- * @description
- * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays
- * (one array per logging level). These arrays are exposed as `logs` property of each of the
- * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`.
- *
- */
-angular.mock.$LogProvider = function() {
-  var debug = true;
-
-  function concat(array1, array2, index) {
-    return array1.concat(Array.prototype.slice.call(array2, index));
-  }
-
-  this.debugEnabled = function(flag) {
-    if (angular.isDefined(flag)) {
-      debug = flag;
-      return this;
-    } else {
-      return debug;
-    }
-  };
-
-  this.$get = function() {
-    var $log = {
-      log: function() { $log.log.logs.push(concat([], arguments, 0)); },
-      warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
-      info: function() { $log.info.logs.push(concat([], arguments, 0)); },
-      error: function() { $log.error.logs.push(concat([], arguments, 0)); },
-      debug: function() {
-        if (debug) {
-          $log.debug.logs.push(concat([], arguments, 0));
-        }
-      }
-    };
-
-    /**
-     * @ngdoc method
-     * @name $log#reset
-     *
-     * @description
-     * Reset all of the logging arrays to empty.
-     */
-    $log.reset = function() {
-      /**
-       * @ngdoc property
-       * @name $log#log.logs
-       *
-       * @description
-       * Array of messages logged using {@link ng.$log#log `log()`}.
-       *
-       * @example
-       * ```js
-       * $log.log('Some Log');
-       * var first = $log.log.logs.unshift();
-       * ```
-       */
-      $log.log.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#info.logs
-       *
-       * @description
-       * Array of messages logged using {@link ng.$log#info `info()`}.
-       *
-       * @example
-       * ```js
-       * $log.info('Some Info');
-       * var first = $log.info.logs.unshift();
-       * ```
-       */
-      $log.info.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#warn.logs
-       *
-       * @description
-       * Array of messages logged using {@link ng.$log#warn `warn()`}.
-       *
-       * @example
-       * ```js
-       * $log.warn('Some Warning');
-       * var first = $log.warn.logs.unshift();
-       * ```
-       */
-      $log.warn.logs = [];
-      /**
-       * @ngdoc property
-       * @name $log#error.logs
-       *
-       * @description
-       * Array of messages logged using {@link ng.$log#error `error()`}.
-       *
-       * @example
-       * ```js
-       * $log.error('Some Error');
-       * var first = $log.error.logs.unshift();
-       * ```
-       */
-      $log.error.logs = [];
-        /**
-       * @ngdoc property
-       * @name $log#debug.logs
-       *
-       * @description
-       * Array of messages logged using {@link ng.$log#debug `debug()`}.
-       *
-       * @example
-       * ```js
-       * $log.debug('Some Error');
-       * var first = $log.debug.logs.unshift();
-       * ```
-       */
-      $log.debug.logs = [];
-    };
-
-    /**
-     * @ngdoc method
-     * @name $log#assertEmpty
-     *
-     * @description
-     * Assert that all of the logging methods have no logged messages. If any messages are present,
-     * an exception is thrown.
-     */
-    $log.assertEmpty = function() {
-      var errors = [];
-      angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) {
-        angular.forEach($log[logLevel].logs, function(log) {
-          angular.forEach(log, function(logItem) {
-            errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' +
-                        (logItem.stack || ''));
-          });
-        });
-      });
-      if (errors.length) {
-        errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " +
-          "an expected log message was not checked and removed:");
-        errors.push('');
-        throw new Error(errors.join('\n---------\n'));
-      }
-    };
-
-    $log.reset();
-    return $log;
-  };
-};
-
-
-/**
- * @ngdoc service
- * @name $interval
- *
- * @description
- * Mock implementation of the $interval service.
- *
- * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
- * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
- * time.
- *
- * @param {function()} fn A function that should be called repeatedly.
- * @param {number} delay Number of milliseconds between each function call.
- * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
- *   indefinitely.
- * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
- *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
- * @returns {promise} A promise which will be notified on each iteration.
- */
-angular.mock.$IntervalProvider = function() {
-  this.$get = ['$browser', '$rootScope', '$q', '$$q',
-       function($browser,   $rootScope,   $q,   $$q) {
-    var repeatFns = [],
-        nextRepeatId = 0,
-        now = 0;
-
-    var $interval = function(fn, delay, count, invokeApply) {
-      var iteration = 0,
-          skipApply = (angular.isDefined(invokeApply) && !invokeApply),
-          deferred = (skipApply ? $$q : $q).defer(),
-          promise = deferred.promise;
-
-      count = (angular.isDefined(count)) ? count : 0;
-      promise.then(null, null, fn);
-
-      promise.$$intervalId = nextRepeatId;
-
-      function tick() {
-        deferred.notify(iteration++);
-
-        if (count > 0 && iteration >= count) {
-          var fnIndex;
-          deferred.resolve(iteration);
-
-          angular.forEach(repeatFns, function(fn, index) {
-            if (fn.id === promise.$$intervalId) fnIndex = index;
-          });
-
-          if (fnIndex !== undefined) {
-            repeatFns.splice(fnIndex, 1);
-          }
-        }
-
-        if (skipApply) {
-          $browser.defer.flush();
-        } else {
-          $rootScope.$apply();
-        }
-      }
-
-      repeatFns.push({
-        nextTime:(now + delay),
-        delay: delay,
-        fn: tick,
-        id: nextRepeatId,
-        deferred: deferred
-      });
-      repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
-
-      nextRepeatId++;
-      return promise;
-    };
-    /**
-     * @ngdoc method
-     * @name $interval#cancel
-     *
-     * @description
-     * Cancels a task associated with the `promise`.
-     *
-     * @param {promise} promise A promise from calling the `$interval` function.
-     * @returns {boolean} Returns `true` if the task was successfully cancelled.
-     */
-    $interval.cancel = function(promise) {
-      if (!promise) return false;
-      var fnIndex;
-
-      angular.forEach(repeatFns, function(fn, index) {
-        if (fn.id === promise.$$intervalId) fnIndex = index;
-      });
-
-      if (fnIndex !== undefined) {
-        repeatFns[fnIndex].deferred.reject('canceled');
-        repeatFns.splice(fnIndex, 1);
-        return true;
-      }
-
-      return false;
-    };
-
-    /**
-     * @ngdoc method
-     * @name $interval#flush
-     * @description
-     *
-     * Runs interval tasks scheduled to be run in the next `millis` milliseconds.
-     *
-     * @param {number=} millis maximum timeout amount to flush up until.
-     *
-     * @return {number} The amount of time moved forward.
-     */
-    $interval.flush = function(millis) {
-      now += millis;
-      while (repeatFns.length && repeatFns[0].nextTime <= now) {
-        var task = repeatFns[0];
-        task.fn();
-        task.nextTime += task.delay;
-        repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
-      }
-      return millis;
-    };
-
-    return $interval;
-  }];
-};
-
-
-/* jshint -W101 */
-/* The R_ISO8061_STR regex is never going to fit into the 100 char limit!
- * This directive should go inside the anonymous function but a bug in JSHint means that it would
- * not be enacted early enough to prevent the warning.
- */
-var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
-
-function jsonStringToDate(string) {
-  var match;
-  if (match = string.match(R_ISO8061_STR)) {
-    var date = new Date(0),
-        tzHour = 0,
-        tzMin  = 0;
-    if (match[9]) {
-      tzHour = int(match[9] + match[10]);
-      tzMin = int(match[9] + match[11]);
-    }
-    date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3]));
-    date.setUTCHours(int(match[4] || 0) - tzHour,
-                     int(match[5] || 0) - tzMin,
-                     int(match[6] || 0),
-                     int(match[7] || 0));
-    return date;
-  }
-  return string;
-}
-
-function int(str) {
-  return parseInt(str, 10);
-}
-
-function padNumber(num, digits, trim) {
-  var neg = '';
-  if (num < 0) {
-    neg =  '-';
-    num = -num;
-  }
-  num = '' + num;
-  while (num.length < digits) num = '0' + num;
-  if (trim)
-    num = num.substr(num.length - digits);
-  return neg + num;
-}
-
-
-/**
- * @ngdoc type
- * @name angular.mock.TzDate
- * @description
- *
- * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
- *
- * Mock of the Date type which has its timezone specified via constructor arg.
- *
- * The main purpose is to create Date-like instances with timezone fixed to the specified timezone
- * offset, so that we can test code that depends on local timezone settings without dependency on
- * the time zone settings of the machine where the code is running.
- *
- * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored)
- * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC*
- *
- * @example
- * !!!! WARNING !!!!!
- * This is not a complete Date object so only methods that were implemented can be called safely.
- * To make matters worse, TzDate instances inherit stuff from Date via a prototype.
- *
- * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is
- * incomplete we might be missing some non-standard methods. This can result in errors like:
- * "Date.prototype.foo called on incompatible Object".
- *
- * ```js
- * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
- * newYearInBratislava.getTimezoneOffset() => -60;
- * newYearInBratislava.getFullYear() => 2010;
- * newYearInBratislava.getMonth() => 0;
- * newYearInBratislava.getDate() => 1;
- * newYearInBratislava.getHours() => 0;
- * newYearInBratislava.getMinutes() => 0;
- * newYearInBratislava.getSeconds() => 0;
- * ```
- *
- */
-angular.mock.TzDate = function(offset, timestamp) {
-  var self = new Date(0);
-  if (angular.isString(timestamp)) {
-    var tsStr = timestamp;
-
-    self.origDate = jsonStringToDate(timestamp);
-
-    timestamp = self.origDate.getTime();
-    if (isNaN(timestamp))
-      throw {
-        name: "Illegal Argument",
-        message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
-      };
-  } else {
-    self.origDate = new Date(timestamp);
-  }
-
-  var localOffset = new Date(timestamp).getTimezoneOffset();
-  self.offsetDiff = localOffset * 60 * 1000 - offset * 1000 * 60 * 60;
-  self.date = new Date(timestamp + self.offsetDiff);
-
-  self.getTime = function() {
-    return self.date.getTime() - self.offsetDiff;
-  };
-
-  self.toLocaleDateString = function() {
-    return self.date.toLocaleDateString();
-  };
-
-  self.getFullYear = function() {
-    return self.date.getFullYear();
-  };
-
-  self.getMonth = function() {
-    return self.date.getMonth();
-  };
-
-  self.getDate = function() {
-    return self.date.getDate();
-  };
-
-  self.getHours = function() {
-    return self.date.getHours();
-  };
-
-  self.getMinutes = function() {
-    return self.date.getMinutes();
-  };
-
-  self.getSeconds = function() {
-    return self.date.getSeconds();
-  };
-
-  self.getMilliseconds = function() {
-    return self.date.getMilliseconds();
-  };
-
-  self.getTimezoneOffset = function() {
-    return offset * 60;
-  };
-
-  self.getUTCFullYear = function() {
-    return self.origDate.getUTCFullYear();
-  };
-
-  self.getUTCMonth = function() {
-    return self.origDate.getUTCMonth();
-  };
-
-  self.getUTCDate = function() {
-    return self.origDate.getUTCDate();
-  };
-
-  self.getUTCHours = function() {
-    return self.origDate.getUTCHours();
-  };
-
-  self.getUTCMinutes = function() {
-    return self.origDate.getUTCMinutes();
-  };
-
-  self.getUTCSeconds = function() {
-    return self.origDate.getUTCSeconds();
-  };
-
-  self.getUTCMilliseconds = function() {
-    return self.origDate.getUTCMilliseconds();
-  };
-
-  self.getDay = function() {
-    return self.date.getDay();
-  };
-
-  // provide this method only on browsers that already have it
-  if (self.toISOString) {
-    self.toISOString = function() {
-      return padNumber(self.origDate.getUTCFullYear(), 4) + '-' +
-            padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' +
-            padNumber(self.origDate.getUTCDate(), 2) + 'T' +
-            padNumber(self.origDate.getUTCHours(), 2) + ':' +
-            padNumber(self.origDate.getUTCMinutes(), 2) + ':' +
-            padNumber(self.origDate.getUTCSeconds(), 2) + '.' +
-            padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z';
-    };
-  }
-
-  //hide all methods not implemented in this mock that the Date prototype exposes
-  var unimplementedMethods = ['getUTCDay',
-      'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
-      'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
-      'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
-      'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
-      'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
-
-  angular.forEach(unimplementedMethods, function(methodName) {
-    self[methodName] = function() {
-      throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock");
-    };
-  });
-
-  return self;
-};
-
-//make "tzDateInstance instanceof Date" return true
-angular.mock.TzDate.prototype = Date.prototype;
-/* jshint +W101 */
-
-angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
-
-  .config(['$provide', function($provide) {
-
-    var reflowQueue = [];
-    $provide.value('$$animateReflow', function(fn) {
-      var index = reflowQueue.length;
-      reflowQueue.push(fn);
-      return function cancel() {
-        reflowQueue.splice(index, 1);
-      };
-    });
-
-    $provide.decorator('$animate', ['$delegate', '$$asyncCallback', '$timeout', '$browser',
-                            function($delegate,   $$asyncCallback,   $timeout,   $browser) {
-      var animate = {
-        queue: [],
-        cancel: $delegate.cancel,
-        enabled: $delegate.enabled,
-        triggerCallbackEvents: function() {
-          $$asyncCallback.flush();
-        },
-        triggerCallbackPromise: function() {
-          $timeout.flush(0);
-        },
-        triggerCallbacks: function() {
-          this.triggerCallbackEvents();
-          this.triggerCallbackPromise();
-        },
-        triggerReflow: function() {
-          angular.forEach(reflowQueue, function(fn) {
-            fn();
-          });
-          reflowQueue = [];
-        }
-      };
-
-      angular.forEach(
-        ['animate','enter','leave','move','addClass','removeClass','setClass'], function(method) {
-        animate[method] = function() {
-          animate.queue.push({
-            event: method,
-            element: arguments[0],
-            options: arguments[arguments.length - 1],
-            args: arguments
-          });
-          return $delegate[method].apply($delegate, arguments);
-        };
-      });
-
-      return animate;
-    }]);
-
-  }]);
-
-
-/**
- * @ngdoc function
- * @name angular.mock.dump
- * @description
- *
- * *NOTE*: this is not an injectable instance, just a globally available function.
- *
- * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for
- * debugging.
- *
- * This method is also available on window, where it can be used to display objects on debug
- * console.
- *
- * @param {*} object - any object to turn into string.
- * @return {string} a serialized string of the argument
- */
-angular.mock.dump = function(object) {
-  return serialize(object);
-
-  function serialize(object) {
-    var out;
-
-    if (angular.isElement(object)) {
-      object = angular.element(object);
-      out = angular.element('<div></div>');
-      angular.forEach(object, function(element) {
-        out.append(angular.element(element).clone());
-      });
-      out = out.html();
-    } else if (angular.isArray(object)) {
-      out = [];
-      angular.forEach(object, function(o) {
-        out.push(serialize(o));
-      });
-      out = '[ ' + out.join(', ') + ' ]';
-    } else if (angular.isObject(object)) {
-      if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
-        out = serializeScope(object);
-      } else if (object instanceof Error) {
-        out = object.stack || ('' + object.name + ': ' + object.message);
-      } else {
-        // TODO(i): this prevents methods being logged,
-        // we should have a better way to serialize objects
-        out = angular.toJson(object, true);
-      }
-    } else {
-      out = String(object);
-    }
-
-    return out;
-  }
-
-  function serializeScope(scope, offset) {
-    offset = offset ||  '  ';
-    var log = [offset + 'Scope(' + scope.$id + '): {'];
-    for (var key in scope) {
-      if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
-        log.push('  ' + key + ': ' + angular.toJson(scope[key]));
-      }
-    }
-    var child = scope.$$childHead;
-    while (child) {
-      log.push(serializeScope(child, offset + '  '));
-      child = child.$$nextSibling;
-    }
-    log.push('}');
-    return log.join('\n' + offset);
-  }
-};
-
-/**
- * @ngdoc service
- * @name $httpBackend
- * @description
- * Fake HTTP backend implementation suitable for unit testing applications that use the
- * {@link ng.$http $http service}.
- *
- * *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less
- * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
- *
- * During unit testing, we want our unit tests to run quickly and have no external dependencies so
- * we don’t want to send [XHR](https://developer.mozilla.org/en/xmlhttprequest) or
- * [JSONP](http://en.wikipedia.org/wiki/JSONP) requests to a real server. All we really need is
- * to verify whether a certain request has been sent or not, or alternatively just let the
- * application make requests, respond with pre-trained responses and assert that the end result is
- * what we expect it to be.
- *
- * This mock implementation can be used to respond with static or dynamic responses via the
- * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc).
- *
- * When an Angular application needs some data from a server, it calls the $http service, which
- * sends the request to a real server using $httpBackend service. With dependency injection, it is
- * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify
- * the requests and respond with some testing data without sending a request to a real server.
- *
- * There are two ways to specify what test data should be returned as http responses by the mock
- * backend when the code under test makes http requests:
- *
- * - `$httpBackend.expect` - specifies a request expectation
- * - `$httpBackend.when` - specifies a backend definition
- *
- *
- * # Request Expectations vs Backend Definitions
- *
- * Request expectations provide a way to make assertions about requests made by the application and
- * to define responses for those requests. The test will fail if the expected requests are not made
- * or they are made in the wrong order.
- *
- * Backend definitions allow you to define a fake backend for your application which doesn't assert
- * if a particular request was made or not, it just returns a trained response if a request is made.
- * The test will pass whether or not the request gets made during testing.
- *
- *
- * <table class="table">
- *   <tr><th width="220px"></th><th>Request expectations</th><th>Backend definitions</th></tr>
- *   <tr>
- *     <th>Syntax</th>
- *     <td>.expect(...).respond(...)</td>
- *     <td>.when(...).respond(...)</td>
- *   </tr>
- *   <tr>
- *     <th>Typical usage</th>
- *     <td>strict unit tests</td>
- *     <td>loose (black-box) unit testing</td>
- *   </tr>
- *   <tr>
- *     <th>Fulfills multiple requests</th>
- *     <td>NO</td>
- *     <td>YES</td>
- *   </tr>
- *   <tr>
- *     <th>Order of requests matters</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Request required</th>
- *     <td>YES</td>
- *     <td>NO</td>
- *   </tr>
- *   <tr>
- *     <th>Response required</th>
- *     <td>optional (see below)</td>
- *     <td>YES</td>
- *   </tr>
- * </table>
- *
- * In cases where both backend definitions and request expectations are specified during unit
- * testing, the request expectations are evaluated first.
- *
- * If a request expectation has no response specified, the algorithm will search your backend
- * definitions for an appropriate response.
- *
- * If a request didn't match any expectation or if the expectation doesn't have the response
- * defined, the backend definitions are evaluated in sequential order to see if any of them match
- * the request. The response from the first matched definition is returned.
- *
- *
- * # Flushing HTTP requests
- *
- * The $httpBackend used in production always responds to requests asynchronously. If we preserved
- * this behavior in unit testing, we'd have to create async unit tests, which are hard to write,
- * to follow and to maintain. But neither can the testing mock respond synchronously; that would
- * change the execution of the code under test. For this reason, the mock $httpBackend has a
- * `flush()` method, which allows the test to explicitly flush pending requests. This preserves
- * the async api of the backend, while allowing the test to execute synchronously.
- *
- *
- * # Unit testing with mock $httpBackend
- * The following code shows how to setup and use the mock backend when unit testing a controller.
- * First we create the controller under test:
- *
-  ```js
-  // The module code
-  angular
-    .module('MyApp', [])
-    .controller('MyController', MyController);
-
-  // The controller code
-  function MyController($scope, $http) {
-    var authToken;
-
-    $http.get('/auth.py').success(function(data, status, headers) {
-      authToken = headers('A-Token');
-      $scope.user = data;
-    });
-
-    $scope.saveMessage = function(message) {
-      var headers = { 'Authorization': authToken };
-      $scope.status = 'Saving...';
-
-      $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
-        $scope.status = '';
-      }).error(function() {
-        $scope.status = 'ERROR!';
-      });
-    };
-  }
-  ```
- *
- * Now we setup the mock backend and create the test specs:
- *
-  ```js
-    // testing controller
-    describe('MyController', function() {
-       var $httpBackend, $rootScope, createController, authRequestHandler;
-
-       // Set up the module
-       beforeEach(module('MyApp'));
-
-       beforeEach(inject(function($injector) {
-         // Set up the mock http service responses
-         $httpBackend = $injector.get('$httpBackend');
-         // backend definition common for all tests
-         authRequestHandler = $httpBackend.when('GET', '/auth.py')
-                                .respond({userId: 'userX'}, {'A-Token': 'xxx'});
-
-         // Get hold of a scope (i.e. the root scope)
-         $rootScope = $injector.get('$rootScope');
-         // The $controller service is used to create instances of controllers
-         var $controller = $injector.get('$controller');
-
-         createController = function() {
-           return $controller('MyController', {'$scope' : $rootScope });
-         };
-       }));
-
-
-       afterEach(function() {
-         $httpBackend.verifyNoOutstandingExpectation();
-         $httpBackend.verifyNoOutstandingRequest();
-       });
-
-
-       it('should fetch authentication token', function() {
-         $httpBackend.expectGET('/auth.py');
-         var controller = createController();
-         $httpBackend.flush();
-       });
-
-
-       it('should fail authentication', function() {
-
-         // Notice how you can change the response even after it was set
-         authRequestHandler.respond(401, '');
-
-         $httpBackend.expectGET('/auth.py');
-         var controller = createController();
-         $httpBackend.flush();
-         expect($rootScope.status).toBe('Failed...');
-       });
-
-
-       it('should send msg to server', function() {
-         var controller = createController();
-         $httpBackend.flush();
-
-         // now you don’t care about the authentication, but
-         // the controller will still send the request and
-         // $httpBackend will respond without you having to
-         // specify the expectation and response for this request
-
-         $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
-         $rootScope.saveMessage('message content');
-         expect($rootScope.status).toBe('Saving...');
-         $httpBackend.flush();
-         expect($rootScope.status).toBe('');
-       });
-
-
-       it('should send auth header', function() {
-         var controller = createController();
-         $httpBackend.flush();
-
-         $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
-           // check if the header was send, if it wasn't the expectation won't
-           // match the request and the test will fail
-           return headers['Authorization'] == 'xxx';
-         }).respond(201, '');
-
-         $rootScope.saveMessage('whatever');
-         $httpBackend.flush();
-       });
-    });
-   ```
- */
-angular.mock.$HttpBackendProvider = function() {
-  this.$get = ['$rootScope', '$timeout', createHttpBackendMock];
-};
-
-/**
- * General factory function for $httpBackend mock.
- * Returns instance for unit testing (when no arguments specified):
- *   - passing through is disabled
- *   - auto flushing is disabled
- *
- * Returns instance for e2e testing (when `$delegate` and `$browser` specified):
- *   - passing through (delegating request to real backend) is enabled
- *   - auto flushing is enabled
- *
- * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified)
- * @param {Object=} $browser Auto-flushing enabled if specified
- * @return {Object} Instance of $httpBackend mock
- */
-function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
-  var definitions = [],
-      expectations = [],
-      responses = [],
-      responsesPush = angular.bind(responses, responses.push),
-      copy = angular.copy;
-
-  function createResponse(status, data, headers, statusText) {
-    if (angular.isFunction(status)) return status;
-
-    return function() {
-      return angular.isNumber(status)
-          ? [status, data, headers, statusText]
-          : [200, status, data, headers];
-    };
-  }
-
-  // TODO(vojta): change params to: method, url, data, headers, callback
-  function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
-    var xhr = new MockXhr(),
-        expectation = expectations[0],
-        wasExpected = false;
-
-    function prettyPrint(data) {
-      return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp)
-          ? data
-          : angular.toJson(data);
-    }
-
-    function wrapResponse(wrapped) {
-      if (!$browser && timeout) {
-        timeout.then ? timeout.then(handleTimeout) : $timeout(handleTimeout, timeout);
-      }
-
-      return handleResponse;
-
-      function handleResponse() {
-        var response = wrapped.response(method, url, data, headers);
-        xhr.$$respHeaders = response[2];
-        callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(),
-                 copy(response[3] || ''));
-      }
-
-      function handleTimeout() {
-        for (var i = 0, ii = responses.length; i < ii; i++) {
-          if (responses[i] === handleResponse) {
-            responses.splice(i, 1);
-            callback(-1, undefined, '');
-            break;
-          }
-        }
-      }
-    }
-
-    if (expectation && expectation.match(method, url)) {
-      if (!expectation.matchData(data))
-        throw new Error('Expected ' + expectation + ' with different data\n' +
-            'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
-
-      if (!expectation.matchHeaders(headers))
-        throw new Error('Expected ' + expectation + ' with different headers\n' +
-                        'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' +
-                        prettyPrint(headers));
-
-      expectations.shift();
-
-      if (expectation.response) {
-        responses.push(wrapResponse(expectation));
-        return;
-      }
-      wasExpected = true;
-    }
-
-    var i = -1, definition;
-    while ((definition = definitions[++i])) {
-      if (definition.match(method, url, data, headers || {})) {
-        if (definition.response) {
-          // if $browser specified, we do auto flush all requests
-          ($browser ? $browser.defer : responsesPush)(wrapResponse(definition));
-        } else if (definition.passThrough) {
-          $delegate(method, url, data, callback, headers, timeout, withCredentials);
-        } else throw new Error('No response defined !');
-        return;
-      }
-    }
-    throw wasExpected ?
-        new Error('No response defined !') :
-        new Error('Unexpected request: ' + method + ' ' + url + '\n' +
-                  (expectation ? 'Expected ' + expectation : 'No more request expected'));
-  }
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#when
-   * @description
-   * Creates a new backend definition.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current definition.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   *
-   *  - respond –
-   *      `{function([status,] data[, headers, statusText])
-   *      | function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can
-   *    return an array containing response status (number), response data (string), response
-   *    headers (Object), and the text for the status (string). The respond method returns the
-   *    `requestHandler` object for possible overrides.
-   */
-  $httpBackend.when = function(method, url, data, headers) {
-    var definition = new MockHttpExpectation(method, url, data, headers),
-        chain = {
-          respond: function(status, data, headers, statusText) {
-            definition.passThrough = undefined;
-            definition.response = createResponse(status, data, headers, statusText);
-            return chain;
-          }
-        };
-
-    if ($browser) {
-      chain.passThrough = function() {
-        definition.response = undefined;
-        definition.passThrough = true;
-        return chain;
-      };
-    }
-
-    definitions.push(definition);
-    return chain;
-  };
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenGET
-   * @description
-   * Creates a new backend definition for GET requests. For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenHEAD
-   * @description
-   * Creates a new backend definition for HEAD requests. For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenDELETE
-   * @description
-   * Creates a new backend definition for DELETE requests. For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenPOST
-   * @description
-   * Creates a new backend definition for POST requests. For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenPUT
-   * @description
-   * Creates a new backend definition for PUT requests.  For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
-   *   data string and returns true if the data is as expected.
-   * @param {(Object|function(Object))=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#whenJSONP
-   * @description
-   * Creates a new backend definition for JSONP requests. For more info see `when()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled.
-   */
-  createShortMethods('when');
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expect
-   * @description
-   * Creates a new request expectation.
-   *
-   * @param {string} method HTTP method.
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
-   *   object and returns true if the headers match the current expectation.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *  request is handled. You can save this object for later use and invoke `respond` again in
-   *  order to change how a matched request is handled.
-   *
-   *  - respond –
-   *    `{function([status,] data[, headers, statusText])
-   *    | function(function(method, url, data, headers)}`
-   *    – The respond method takes a set of static data to be returned or a function that can
-   *    return an array containing response status (number), response data (string), response
-   *    headers (Object), and the text for the status (string). The respond method returns the
-   *    `requestHandler` object for possible overrides.
-   */
-  $httpBackend.expect = function(method, url, data, headers) {
-    var expectation = new MockHttpExpectation(method, url, data, headers),
-        chain = {
-          respond: function(status, data, headers, statusText) {
-            expectation.response = createResponse(status, data, headers, statusText);
-            return chain;
-          }
-        };
-
-    expectations.push(expectation);
-    return chain;
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectGET
-   * @description
-   * Creates a new request expectation for GET requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   * request is handled. You can save this object for later use and invoke `respond` again in
-   * order to change how a matched request is handled. See #expect for more info.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectHEAD
-   * @description
-   * Creates a new request expectation for HEAD requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectDELETE
-   * @description
-   * Creates a new request expectation for DELETE requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectPOST
-   * @description
-   * Creates a new request expectation for POST requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectPUT
-   * @description
-   * Creates a new request expectation for PUT requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectPATCH
-   * @description
-   * Creates a new request expectation for PATCH requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
-   *  receives data string and returns true if the data is as expected, or Object if request body
-   *  is in JSON format.
-   * @param {Object=} headers HTTP headers.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#expectJSONP
-   * @description
-   * Creates a new request expectation for JSONP requests. For more info see `expect()`.
-   *
-   * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
-   *   and returns true if the url match the current definition.
-   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
-   *   request is handled. You can save this object for later use and invoke `respond` again in
-   *   order to change how a matched request is handled.
-   */
-  createShortMethods('expect');
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#flush
-   * @description
-   * Flushes all pending requests using the trained responses.
-   *
-   * @param {number=} count Number of responses to flush (in the order they arrived). If undefined,
-   *   all pending requests will be flushed. If there are no pending requests when the flush method
-   *   is called an exception is thrown (as this typically a sign of programming error).
-   */
-  $httpBackend.flush = function(count, digest) {
-    if (digest !== false) $rootScope.$digest();
-    if (!responses.length) throw new Error('No pending request to flush !');
-
-    if (angular.isDefined(count) && count !== null) {
-      while (count--) {
-        if (!responses.length) throw new Error('No more pending request to flush !');
-        responses.shift()();
-      }
-    } else {
-      while (responses.length) {
-        responses.shift()();
-      }
-    }
-    $httpBackend.verifyNoOutstandingExpectation(digest);
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#verifyNoOutstandingExpectation
-   * @description
-   * Verifies that all of the requests defined via the `expect` api were made. If any of the
-   * requests were not made, verifyNoOutstandingExpectation throws an exception.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * ```js
-   *   afterEach($httpBackend.verifyNoOutstandingExpectation);
-   * ```
-   */
-  $httpBackend.verifyNoOutstandingExpectation = function(digest) {
-    if (digest !== false) $rootScope.$digest();
-    if (expectations.length) {
-      throw new Error('Unsatisfied requests: ' + expectations.join(', '));
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#verifyNoOutstandingRequest
-   * @description
-   * Verifies that there are no outstanding requests that need to be flushed.
-   *
-   * Typically, you would call this method following each test case that asserts requests using an
-   * "afterEach" clause.
-   *
-   * ```js
-   *   afterEach($httpBackend.verifyNoOutstandingRequest);
-   * ```
-   */
-  $httpBackend.verifyNoOutstandingRequest = function() {
-    if (responses.length) {
-      throw new Error('Unflushed requests: ' + responses.length);
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $httpBackend#resetExpectations
-   * @description
-   * Resets all request expectations, but preserves all backend definitions. Typically, you would
-   * call resetExpectations during a multiple-phase test when you want to reuse the same instance of
-   * $httpBackend mock.
-   */
-  $httpBackend.resetExpectations = function() {
-    expectations.length = 0;
-    responses.length = 0;
-  };
-
-  return $httpBackend;
-
-
-  function createShortMethods(prefix) {
-    angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) {
-     $httpBackend[prefix + method] = function(url, headers) {
-       return $httpBackend[prefix](method, url, undefined, headers);
-     };
-    });
-
-    angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
-      $httpBackend[prefix + method] = function(url, data, headers) {
-        return $httpBackend[prefix](method, url, data, headers);
-      };
-    });
-  }
-}
-
-function MockHttpExpectation(method, url, data, headers) {
-
-  this.data = data;
-  this.headers = headers;
-
-  this.match = function(m, u, d, h) {
-    if (method != m) return false;
-    if (!this.matchUrl(u)) return false;
-    if (angular.isDefined(d) && !this.matchData(d)) return false;
-    if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
-    return true;
-  };
-
-  this.matchUrl = function(u) {
-    if (!url) return true;
-    if (angular.isFunction(url.test)) return url.test(u);
-    if (angular.isFunction(url)) return url(u);
-    return url == u;
-  };
-
-  this.matchHeaders = function(h) {
-    if (angular.isUndefined(headers)) return true;
-    if (angular.isFunction(headers)) return headers(h);
-    return angular.equals(headers, h);
-  };
-
-  this.matchData = function(d) {
-    if (angular.isUndefined(data)) return true;
-    if (data && angular.isFunction(data.test)) return data.test(d);
-    if (data && angular.isFunction(data)) return data(d);
-    if (data && !angular.isString(data)) {
-      return angular.equals(angular.fromJson(angular.toJson(data)), angular.fromJson(d));
-    }
-    return data == d;
-  };
-
-  this.toString = function() {
-    return method + ' ' + url;
-  };
-}
-
-function createMockXhr() {
-  return new MockXhr();
-}
-
-function MockXhr() {
-
-  // hack for testing $http, $httpBackend
-  MockXhr.$$lastInstance = this;
-
-  this.open = function(method, url, async) {
-    this.$$method = method;
-    this.$$url = url;
-    this.$$async = async;
-    this.$$reqHeaders = {};
-    this.$$respHeaders = {};
-  };
-
-  this.send = function(data) {
-    this.$$data = data;
-  };
-
-  this.setRequestHeader = function(key, value) {
-    this.$$reqHeaders[key] = value;
-  };
-
-  this.getResponseHeader = function(name) {
-    // the lookup must be case insensitive,
-    // that's why we try two quick lookups first and full scan last
-    var header = this.$$respHeaders[name];
-    if (header) return header;
-
-    name = angular.lowercase(name);
-    header = this.$$respHeaders[name];
-    if (header) return header;
-
-    header = undefined;
-    angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
-      if (!header && angular.lowercase(headerName) == name) header = headerVal;
-    });
-    return header;
-  };
-
-  this.getAllResponseHeaders = function() {
-    var lines = [];
-
-    angular.forEach(this.$$respHeaders, function(value, key) {
-      lines.push(key + ': ' + value);
-    });
-    return lines.join('\n');
-  };
-
-  this.abort = angular.noop;
-}
-
-
-/**
- * @ngdoc service
- * @name $timeout
- * @description
- *
- * This service is just a simple decorator for {@link ng.$timeout $timeout} service
- * that adds a "flush" and "verifyNoPendingTasks" methods.
- */
-
-angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function($delegate, $browser) {
-
-  /**
-   * @ngdoc method
-   * @name $timeout#flush
-   * @description
-   *
-   * Flushes the queue of pending tasks.
-   *
-   * @param {number=} delay maximum timeout amount to flush up until
-   */
-  $delegate.flush = function(delay) {
-    $browser.defer.flush(delay);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $timeout#verifyNoPendingTasks
-   * @description
-   *
-   * Verifies that there are no pending tasks that need to be flushed.
-   */
-  $delegate.verifyNoPendingTasks = function() {
-    if ($browser.deferredFns.length) {
-      throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
-          formatPendingTasksAsString($browser.deferredFns));
-    }
-  };
-
-  function formatPendingTasksAsString(tasks) {
-    var result = [];
-    angular.forEach(tasks, function(task) {
-      result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
-    });
-
-    return result.join(', ');
-  }
-
-  return $delegate;
-}];
-
-angular.mock.$RAFDecorator = ['$delegate', function($delegate) {
-  var queue = [];
-  var rafFn = function(fn) {
-    var index = queue.length;
-    queue.push(fn);
-    return function() {
-      queue.splice(index, 1);
-    };
-  };
-
-  rafFn.supported = $delegate.supported;
-
-  rafFn.flush = function() {
-    if (queue.length === 0) {
-      throw new Error('No rAF callbacks present');
-    }
-
-    var length = queue.length;
-    for (var i = 0; i < length; i++) {
-      queue[i]();
-    }
-
-    queue = [];
-  };
-
-  return rafFn;
-}];
-
-angular.mock.$AsyncCallbackDecorator = ['$delegate', function($delegate) {
-  var callbacks = [];
-  var addFn = function(fn) {
-    callbacks.push(fn);
-  };
-  addFn.flush = function() {
-    angular.forEach(callbacks, function(fn) {
-      fn();
-    });
-    callbacks = [];
-  };
-  return addFn;
-}];
-
-/**
- *
- */
-angular.mock.$RootElementProvider = function() {
-  this.$get = function() {
-    return angular.element('<div ng-app></div>');
-  };
-};
-
-/**
- * @ngdoc module
- * @name ngMock
- * @packageName angular-mocks
- * @description
- *
- * # ngMock
- *
- * The `ngMock` module provides support to inject and mock Angular services into unit tests.
- * In addition, ngMock also extends various core ng services such that they can be
- * inspected and controlled in a synchronous manner within test code.
- *
- *
- * <div doc-module-components="ngMock"></div>
- *
- */
-angular.module('ngMock', ['ng']).provider({
-  $browser: angular.mock.$BrowserProvider,
-  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
-  $log: angular.mock.$LogProvider,
-  $interval: angular.mock.$IntervalProvider,
-  $httpBackend: angular.mock.$HttpBackendProvider,
-  $rootElement: angular.mock.$RootElementProvider
-}).config(['$provide', function($provide) {
-  $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
-  $provide.decorator('$$rAF', angular.mock.$RAFDecorator);
-  $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator);
-  $provide.decorator('$rootScope', angular.mock.$RootScopeDecorator);
-}]);
-
-/**
- * @ngdoc module
- * @name ngMockE2E
- * @module ngMockE2E
- * @packageName angular-mocks
- * @description
- *
- * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing.
- * Currently there is only one mock present in this module -
- * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
- */
-angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
-  $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
-}]);
-
-/**
- * @ngdoc service
- * @name $httpBackend
- * @module ngMockE2E
- * @description
- * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
- * applications that use the {@link ng.$http $http service}.
- *
- * *Note*: For fake http backend implementation suitable for unit testing please see
- * {@link ngMock.$httpBackend unit-testing $httpBackend mock}.
- *
- * This implementation can be used to respond with static or dynamic responses via the `when` api
- * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the
- * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
- * templates from a webserver).
- *
- * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
- * is being developed with the real backend api replaced with a mock, it is often desirable for
- * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
- * templates or static files from the webserver). To configure the backend with this behavior
- * use the `passThrough` request handler of `when` instead of `respond`.
- *
- * Additionally, we don't want to manually have to flush mocked out requests like we do during unit
- * testing. For this reason the e2e $httpBackend flushes mocked out requests
- * automatically, closely simulating the behavior of the XMLHttpRequest object.
- *
- * To setup the application to run with this http backend, you have to create a module that depends
- * on the `ngMockE2E` and your application modules and defines the fake backend:
- *
- * ```js
- *   myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
- *   myAppDev.run(function($httpBackend) {
- *     phones = [{name: 'phone1'}, {name: 'phone2'}];
- *
- *     // returns the current list of phones
- *     $httpBackend.whenGET('/phones').respond(phones);
- *
- *     // adds a new phone to the phones array
- *     $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
- *       var phone = angular.fromJson(data);
- *       phones.push(phone);
- *       return [200, phone, {}];
- *     });
- *     $httpBackend.whenGET(/^\/templates\//).passThrough();
- *     //...
- *   });
- * ```
- *
- * Afterwards, bootstrap your app with this new module.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#when
- * @module ngMockE2E
- * @description
- * Creates a new backend definition.
- *
- * @param {string} method HTTP method.
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
- *   object and returns true if the headers match the current definition.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- *
- *  - respond –
- *    `{function([status,] data[, headers, statusText])
- *    | function(function(method, url, data, headers)}`
- *    – The respond method takes a set of static data to be returned or a function that can return
- *    an array containing response status (number), response data (string), response headers
- *    (Object), and the text for the status (string).
- *  - passThrough – `{function()}` – Any request matching a backend definition with
- *    `passThrough` handler will be passed through to the real backend (an XHR request will be made
- *    to the server.)
- *  - Both methods return the `requestHandler` object for possible overrides.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenGET
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for GET requests. For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenHEAD
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for HEAD requests. For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenDELETE
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for DELETE requests. For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenPOST
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for POST requests. For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenPUT
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for PUT requests.  For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenPATCH
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for PATCH requests.  For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @param {(string|RegExp)=} data HTTP request body.
- * @param {(Object|function(Object))=} headers HTTP headers.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-
-/**
- * @ngdoc method
- * @name $httpBackend#whenJSONP
- * @module ngMockE2E
- * @description
- * Creates a new backend definition for JSONP requests. For more info see `when()`.
- *
- * @param {string|RegExp|function(string)} url HTTP url or function that receives the url
- *   and returns true if the url match the current definition.
- * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
- *   control how a matched request is handled. You can save this object for later use and invoke
- *   `respond` or `passThrough` again in order to change how a matched request is handled.
- */
-angular.mock.e2e = {};
-angular.mock.e2e.$httpBackendDecorator =
-  ['$rootScope', '$timeout', '$delegate', '$browser', createHttpBackendMock];
-
-
-/**
- * @ngdoc type
- * @name $rootScope.Scope
- * @module ngMock
- * @description
- * {@link ng.$rootScope.Scope Scope} type decorated with helper methods useful for testing. These
- * methods are automatically available on any {@link ng.$rootScope.Scope Scope} instance when
- * `ngMock` module is loaded.
- *
- * In addition to all the regular `Scope` methods, the following helper methods are available:
- */
-angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) {
-
-  var $rootScopePrototype = Object.getPrototypeOf($delegate);
-
-  $rootScopePrototype.$countChildScopes = countChildScopes;
-  $rootScopePrototype.$countWatchers = countWatchers;
-
-  return $delegate;
-
-  // ------------------------------------------------------------------------------------------ //
-
-  /**
-   * @ngdoc method
-   * @name $rootScope.Scope#$countChildScopes
-   * @module ngMock
-   * @description
-   * Counts all the direct and indirect child scopes of the current scope.
-   *
-   * The current scope is excluded from the count. The count includes all isolate child scopes.
-   *
-   * @returns {number} Total number of child scopes.
-   */
-  function countChildScopes() {
-    // jshint validthis: true
-    var count = 0; // exclude the current scope
-    var pendingChildHeads = [this.$$childHead];
-    var currentScope;
-
-    while (pendingChildHeads.length) {
-      currentScope = pendingChildHeads.shift();
-
-      while (currentScope) {
-        count += 1;
-        pendingChildHeads.push(currentScope.$$childHead);
-        currentScope = currentScope.$$nextSibling;
-      }
-    }
-
-    return count;
-  }
-
-
-  /**
-   * @ngdoc method
-   * @name $rootScope.Scope#$countWatchers
-   * @module ngMock
-   * @description
-   * Counts all the watchers of direct and indirect child scopes of the current scope.
-   *
-   * The watchers of the current scope are included in the count and so are all the watchers of
-   * isolate child scopes.
-   *
-   * @returns {number} Total number of watchers.
-   */
-  function countWatchers() {
-    // jshint validthis: true
-    var count = this.$$watchers ? this.$$watchers.length : 0; // include the current scope
-    var pendingChildHeads = [this.$$childHead];
-    var currentScope;
-
-    while (pendingChildHeads.length) {
-      currentScope = pendingChildHeads.shift();
-
-      while (currentScope) {
-        count += currentScope.$$watchers ? currentScope.$$watchers.length : 0;
-        pendingChildHeads.push(currentScope.$$childHead);
-        currentScope = currentScope.$$nextSibling;
-      }
-    }
-
-    return count;
-  }
-}];
-
-
-if (window.jasmine || window.mocha) {
-
-  var currentSpec = null,
-      isSpecRunning = function() {
-        return !!currentSpec;
-      };
-
-
-  (window.beforeEach || window.setup)(function() {
-    currentSpec = this;
-  });
-
-  (window.afterEach || window.teardown)(function() {
-    var injector = currentSpec.$injector;
-
-    angular.forEach(currentSpec.$modules, function(module) {
-      if (module && module.$$hashKey) {
-        module.$$hashKey = undefined;
-      }
-    });
-
-    currentSpec.$injector = null;
-    currentSpec.$modules = null;
-    currentSpec = null;
-
-    if (injector) {
-      injector.get('$rootElement').off();
-      injector.get('$browser').pollFns.length = 0;
-    }
-
-    // clean up jquery's fragment cache
-    angular.forEach(angular.element.fragments, function(val, key) {
-      delete angular.element.fragments[key];
-    });
-
-    MockXhr.$$lastInstance = null;
-
-    angular.forEach(angular.callbacks, function(val, key) {
-      delete angular.callbacks[key];
-    });
-    angular.callbacks.counter = 0;
-  });
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.module
-   * @description
-   *
-   * *NOTE*: This function is also published on window for easy access.<br>
-   * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
-   *
-   * This function registers a module configuration code. It collects the configuration information
-   * which will be used when the injector is created by {@link angular.mock.inject inject}.
-   *
-   * See {@link angular.mock.inject inject} for usage example
-   *
-   * @param {...(string|Function|Object)} fns any number of modules which are represented as string
-   *        aliases or as anonymous module initialization functions. The modules are used to
-   *        configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
-   *        object literal is passed they will be registered as values in the module, the key being
-   *        the module name and the value being what is returned.
-   */
-  window.module = angular.mock.module = function() {
-    var moduleFns = Array.prototype.slice.call(arguments, 0);
-    return isSpecRunning() ? workFn() : workFn;
-    /////////////////////
-    function workFn() {
-      if (currentSpec.$injector) {
-        throw new Error('Injector already created, can not register a module!');
-      } else {
-        var modules = currentSpec.$modules || (currentSpec.$modules = []);
-        angular.forEach(moduleFns, function(module) {
-          if (angular.isObject(module) && !angular.isArray(module)) {
-            modules.push(function($provide) {
-              angular.forEach(module, function(value, key) {
-                $provide.value(key, value);
-              });
-            });
-          } else {
-            modules.push(module);
-          }
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc function
-   * @name angular.mock.inject
-   * @description
-   *
-   * *NOTE*: This function is also published on window for easy access.<br>
-   * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
-   *
-   * The inject function wraps a function into an injectable function. The inject() creates new
-   * instance of {@link auto.$injector $injector} per test, which is then used for
-   * resolving references.
-   *
-   *
-   * ## Resolving References (Underscore Wrapping)
-   * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this
-   * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable
-   * that is declared in the scope of the `describe()` block. Since we would, most likely, want
-   * the variable to have the same name of the reference we have a problem, since the parameter
-   * to the `inject()` function would hide the outer variable.
-   *
-   * To help with this, the injected parameters can, optionally, be enclosed with underscores.
-   * These are ignored by the injector when the reference name is resolved.
-   *
-   * For example, the parameter `_myService_` would be resolved as the reference `myService`.
-   * Since it is available in the function body as _myService_, we can then assign it to a variable
-   * defined in an outer scope.
-   *
-   * ```
-   * // Defined out reference variable outside
-   * var myService;
-   *
-   * // Wrap the parameter in underscores
-   * beforeEach( inject( function(_myService_){
-   *   myService = _myService_;
-   * }));
-   *
-   * // Use myService in a series of tests.
-   * it('makes use of myService', function() {
-   *   myService.doStuff();
-   * });
-   *
-   * ```
-   *
-   * See also {@link angular.mock.module angular.mock.module}
-   *
-   * ## Example
-   * Example of what a typical jasmine tests looks like with the inject method.
-   * ```js
-   *
-   *   angular.module('myApplicationModule', [])
-   *       .value('mode', 'app')
-   *       .value('version', 'v1.0.1');
-   *
-   *
-   *   describe('MyApp', function() {
-   *
-   *     // You need to load modules that you want to test,
-   *     // it loads only the "ng" module by default.
-   *     beforeEach(module('myApplicationModule'));
-   *
-   *
-   *     // inject() is used to inject arguments of all given functions
-   *     it('should provide a version', inject(function(mode, version) {
-   *       expect(version).toEqual('v1.0.1');
-   *       expect(mode).toEqual('app');
-   *     }));
-   *
-   *
-   *     // The inject and module method can also be used inside of the it or beforeEach
-   *     it('should override a version and test the new version is injected', function() {
-   *       // module() takes functions or strings (module aliases)
-   *       module(function($provide) {
-   *         $provide.value('version', 'overridden'); // override version here
-   *       });
-   *
-   *       inject(function(version) {
-   *         expect(version).toEqual('overridden');
-   *       });
-   *     });
-   *   });
-   *
-   * ```
-   *
-   * @param {...Function} fns any number of functions which will be injected using the injector.
-   */
-
-
-
-  var ErrorAddingDeclarationLocationStack = function(e, errorForStack) {
-    this.message = e.message;
-    this.name = e.name;
-    if (e.line) this.line = e.line;
-    if (e.sourceId) this.sourceId = e.sourceId;
-    if (e.stack && errorForStack)
-      this.stack = e.stack + '\n' + errorForStack.stack;
-    if (e.stackArray) this.stackArray = e.stackArray;
-  };
-  ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString;
-
-  window.inject = angular.mock.inject = function() {
-    var blockFns = Array.prototype.slice.call(arguments, 0);
-    var errorForStack = new Error('Declaration Location');
-    return isSpecRunning() ? workFn.call(currentSpec) : workFn;
-    /////////////////////
-    function workFn() {
-      var modules = currentSpec.$modules || [];
-      var strictDi = !!currentSpec.$injectorStrict;
-      modules.unshift('ngMock');
-      modules.unshift('ng');
-      var injector = currentSpec.$injector;
-      if (!injector) {
-        if (strictDi) {
-          // If strictDi is enabled, annotate the providerInjector blocks
-          angular.forEach(modules, function(moduleFn) {
-            if (typeof moduleFn === "function") {
-              angular.injector.$$annotate(moduleFn);
-            }
-          });
-        }
-        injector = currentSpec.$injector = angular.injector(modules, strictDi);
-        currentSpec.$injectorStrict = strictDi;
-      }
-      for (var i = 0, ii = blockFns.length; i < ii; i++) {
-        if (currentSpec.$injectorStrict) {
-          // If the injector is strict / strictDi, and the spec wants to inject using automatic
-          // annotation, then annotate the function here.
-          injector.annotate(blockFns[i]);
-        }
-        try {
-          /* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */
-          injector.invoke(blockFns[i] || angular.noop, this);
-          /* jshint +W040 */
-        } catch (e) {
-          if (e.stack && errorForStack) {
-            throw new ErrorAddingDeclarationLocationStack(e, errorForStack);
-          }
-          throw e;
-        } finally {
-          errorForStack = null;
-        }
-      }
-    }
-  };
-
-
-  angular.mock.inject.strictDi = function(value) {
-    value = arguments.length ? !!value : true;
-    return isSpecRunning() ? workFn() : workFn;
-
-    function workFn() {
-      if (value !== currentSpec.$injectorStrict) {
-        if (currentSpec.$injector) {
-          throw new Error('Injector already created, can not modify strict annotations');
-        } else {
-          currentSpec.$injectorStrict = value;
-        }
-      }
-    }
-  };
-}
-
-
-})(window, window.angular);
diff --git a/src/main/webapp/bower_components/angular-mocks/bower.json b/src/main/webapp/bower_components/angular-mocks/bower.json
deleted file mode 100644
index cd52be40..00000000
--- a/src/main/webapp/bower_components/angular-mocks/bower.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "angular-mocks",
-  "version": "1.3.11",
-  "main": "./angular-mocks.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  }
-}
diff --git a/src/main/webapp/bower_components/angular-mocks/package.json b/src/main/webapp/bower_components/angular-mocks/package.json
deleted file mode 100644
index c32d09fb..00000000
--- a/src/main/webapp/bower_components/angular-mocks/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "angular-mocks",
-  "version": "1.3.11",
-  "description": "AngularJS mocks for testing",
-  "main": "angular-mocks.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.js.git"
-  },
-  "keywords": [
-    "angular",
-    "framework",
-    "browser",
-    "mocks",
-    "testing",
-    "client-side"
-  ],
-  "author": "Angular Core Team <angular-core+npm@google.com>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular.js/issues"
-  },
-  "homepage": "http://angularjs.org"
-}
diff --git a/src/main/webapp/bower_components/angular-resource/.bower.json b/src/main/webapp/bower_components/angular-resource/.bower.json
deleted file mode 100644
index 2ab3e3c6..00000000
--- a/src/main/webapp/bower_components/angular-resource/.bower.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "name": "angular-resource",
-  "version": "1.3.11",
-  "main": "./angular-resource.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  },
-  "homepage": "https://github.com/angular/bower-angular-resource",
-  "_release": "1.3.11",
-  "_resolution": {
-    "type": "version",
-    "tag": "v1.3.11",
-    "commit": "b2ace539da53a66ca54ff88c145a12e9e1606355"
-  },
-  "_source": "git://github.com/angular/bower-angular-resource.git",
-  "_target": "1.3.11",
-  "_originalSource": "angular-resource"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-resource/README.md b/src/main/webapp/bower_components/angular-resource/README.md
deleted file mode 100644
index b09e0a7b..00000000
--- a/src/main/webapp/bower_components/angular-resource/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# packaged angular-resource
-
-This repo is for distribution on `npm` and `bower`. The source for this module is in the
-[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngResource).
-Please file issues and pull requests against that repo.
-
-## Install
-
-You can install this package either with `npm` or with `bower`.
-
-### npm
-
-```shell
-npm install angular-resource
-```
-
-Add a `<script>` to your `index.html`:
-
-```html
-<script src="/node_modules/angular-resource/angular-resource.js"></script>
-```
-
-Then add `ngResource` as a dependency for your app:
-
-```javascript
-angular.module('myApp', ['ngResource']);
-```
-
-Note that this package is not in CommonJS format, so doing `require('angular-resource')` will
-return `undefined`.
-
-### bower
-
-```shell
-bower install angular-resource
-```
-
-Add a `<script>` to your `index.html`:
-
-```html
-<script src="/bower_components/angular-resource/angular-resource.js"></script>
-```
-
-Then add `ngResource` as a dependency for your app:
-
-```javascript
-angular.module('myApp', ['ngResource']);
-```
-
-## Documentation
-
-Documentation is available on the
-[AngularJS docs site](http://docs.angularjs.org/api/ngResource).
-
-## License
-
-The MIT License
-
-Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/angular-resource/angular-resource.js b/src/main/webapp/bower_components/angular-resource/angular-resource.js
deleted file mode 100644
index 6040d797..00000000
--- a/src/main/webapp/bower_components/angular-resource/angular-resource.js
+++ /dev/null
@@ -1,667 +0,0 @@
-/**
- * @license AngularJS v1.3.11
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular, undefined) {'use strict';
-
-var $resourceMinErr = angular.$$minErr('$resource');
-
-// Helper functions and regex to lookup a dotted path on an object
-// stopping at undefined/null.  The path must be composed of ASCII
-// identifiers (just like $parse)
-var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;
-
-function isValidDottedPath(path) {
-  return (path != null && path !== '' && path !== 'hasOwnProperty' &&
-      MEMBER_NAME_REGEX.test('.' + path));
-}
-
-function lookupDottedPath(obj, path) {
-  if (!isValidDottedPath(path)) {
-    throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
-  }
-  var keys = path.split('.');
-  for (var i = 0, ii = keys.length; i < ii && obj !== undefined; i++) {
-    var key = keys[i];
-    obj = (obj !== null) ? obj[key] : undefined;
-  }
-  return obj;
-}
-
-/**
- * Create a shallow copy of an object and clear other fields from the destination
- */
-function shallowClearAndCopy(src, dst) {
-  dst = dst || {};
-
-  angular.forEach(dst, function(value, key) {
-    delete dst[key];
-  });
-
-  for (var key in src) {
-    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-      dst[key] = src[key];
-    }
-  }
-
-  return dst;
-}
-
-/**
- * @ngdoc module
- * @name ngResource
- * @description
- *
- * # ngResource
- *
- * The `ngResource` module provides interaction support with RESTful services
- * via the $resource service.
- *
- *
- * <div doc-module-components="ngResource"></div>
- *
- * See {@link ngResource.$resource `$resource`} for usage.
- */
-
-/**
- * @ngdoc service
- * @name $resource
- * @requires $http
- *
- * @description
- * A factory which creates a resource object that lets you interact with
- * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
- *
- * The returned resource object has action methods which provide high-level behaviors without
- * the need to interact with the low level {@link ng.$http $http} service.
- *
- * Requires the {@link ngResource `ngResource`} module to be installed.
- *
- * By default, trailing slashes will be stripped from the calculated URLs,
- * which can pose problems with server backends that do not expect that
- * behavior.  This can be disabled by configuring the `$resourceProvider` like
- * this:
- *
- * ```js
-     app.config(['$resourceProvider', function($resourceProvider) {
-       // Don't strip trailing slashes from calculated URLs
-       $resourceProvider.defaults.stripTrailingSlashes = false;
-     }]);
- * ```
- *
- * @param {string} url A parametrized URL template with parameters prefixed by `:` as in
- *   `/user/:username`. If you are using a URL with a port number (e.g.
- *   `http://example.com:8080/api`), it will be respected.
- *
- *   If you are using a url with a suffix, just add the suffix, like this:
- *   `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
- *   or even `$resource('http://example.com/resource/:resource_id.:format')`
- *   If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
- *   collapsed down to a single `.`.  If you need this sequence to appear and not collapse then you
- *   can escape it with `/\.`.
- *
- * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
- *   `actions` methods. If any of the parameter value is a function, it will be executed every time
- *   when a param value needs to be obtained for a request (unless the param was overridden).
- *
- *   Each key value in the parameter object is first bound to url template if present and then any
- *   excess keys are appended to the url search query after the `?`.
- *
- *   Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
- *   URL `/path/greet?salutation=Hello`.
- *
- *   If the parameter value is prefixed with `@` then the value for that parameter will be extracted
- *   from the corresponding property on the `data` object (provided when calling an action method).  For
- *   example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of `someParam`
- *   will be `data.someProp`.
- *
- * @param {Object.<Object>=} actions Hash with declaration of custom actions that should extend
- *   the default set of resource actions. The declaration should be created in the format of {@link
- *   ng.$http#usage $http.config}:
- *
- *       {action1: {method:?, params:?, isArray:?, headers:?, ...},
- *        action2: {method:?, params:?, isArray:?, headers:?, ...},
- *        ...}
- *
- *   Where:
- *
- *   - **`action`** – {string} – The name of action. This name becomes the name of the method on
- *     your resource object.
- *   - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,
- *     `DELETE`, `JSONP`, etc).
- *   - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
- *     the parameter value is a function, it will be executed every time when a param value needs to
- *     be obtained for a request (unless the param was overridden).
- *   - **`url`** – {string} – action specific `url` override. The url templating is supported just
- *     like for the resource-level urls.
- *   - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
- *     see `returns` section.
- *   - **`transformRequest`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     request body and headers and returns its transformed (typically serialized) version.
- *     By default, transformRequest will contain one function that checks if the request data is
- *     an object and serializes to using `angular.toJson`. To prevent this behavior, set
- *     `transformRequest` to an empty array: `transformRequest: []`
- *   - **`transformResponse`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     response body and headers and returns its transformed (typically deserialized) version.
- *     By default, transformResponse will contain one function that checks if the response looks like
- *     a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, set
- *     `transformResponse` to an empty array: `transformResponse: []`
- *   - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
- *     GET request, otherwise if a cache instance built with
- *     {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
- *     caching.
- *   - **`timeout`** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} that
- *     should abort the request when resolved.
- *   - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
- *     XHR object. See
- *     [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5)
- *     for more information.
- *   - **`responseType`** - `{string}` - see
- *     [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
- *   - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods -
- *     `response` and `responseError`. Both `response` and `responseError` interceptors get called
- *     with `http response` object. See {@link ng.$http $http interceptors}.
- *
- * @param {Object} options Hash with custom settings that should extend the
- *   default `$resourceProvider` behavior.  The only supported option is
- *
- *   Where:
- *
- *   - **`stripTrailingSlashes`** – {boolean} – If true then the trailing
- *   slashes from any calculated URL will be stripped. (Defaults to true.)
- *
- * @returns {Object} A resource "class" object with methods for the default set of resource actions
- *   optionally extended with custom `actions`. The default set contains these actions:
- *   ```js
- *   { 'get':    {method:'GET'},
- *     'save':   {method:'POST'},
- *     'query':  {method:'GET', isArray:true},
- *     'remove': {method:'DELETE'},
- *     'delete': {method:'DELETE'} };
- *   ```
- *
- *   Calling these methods invoke an {@link ng.$http} with the specified http method,
- *   destination and parameters. When the data is returned from the server then the object is an
- *   instance of the resource class. The actions `save`, `remove` and `delete` are available on it
- *   as  methods with the `$` prefix. This allows you to easily perform CRUD operations (create,
- *   read, update, delete) on server-side data like this:
- *   ```js
- *   var User = $resource('/user/:userId', {userId:'@id'});
- *   var user = User.get({userId:123}, function() {
- *     user.abc = true;
- *     user.$save();
- *   });
- *   ```
- *
- *   It is important to realize that invoking a $resource object method immediately returns an
- *   empty reference (object or array depending on `isArray`). Once the data is returned from the
- *   server the existing reference is populated with the actual data. This is a useful trick since
- *   usually the resource is assigned to a model which is then rendered by the view. Having an empty
- *   object results in no rendering, once the data arrives from the server then the object is
- *   populated with the data and the view automatically re-renders itself showing the new data. This
- *   means that in most cases one never has to write a callback function for the action methods.
- *
- *   The action methods on the class object or instance object can be invoked with the following
- *   parameters:
- *
- *   - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])`
- *   - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
- *   - non-GET instance actions:  `instance.$action([parameters], [success], [error])`
- *
- *   Success callback is called with (value, responseHeaders) arguments. Error callback is called
- *   with (httpResponse) argument.
- *
- *   Class actions return empty instance (with additional properties below).
- *   Instance actions return promise of the action.
- *
- *   The Resource instances and collection have these additional properties:
- *
- *   - `$promise`: the {@link ng.$q promise} of the original server interaction that created this
- *     instance or collection.
- *
- *     On success, the promise is resolved with the same resource instance or collection object,
- *     updated with data from server. This makes it easy to use in
- *     {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view
- *     rendering until the resource(s) are loaded.
- *
- *     On failure, the promise is resolved with the {@link ng.$http http response} object, without
- *     the `resource` property.
- *
- *     If an interceptor object was provided, the promise will instead be resolved with the value
- *     returned by the interceptor.
- *
- *   - `$resolved`: `true` after first server interaction is completed (either with success or
- *      rejection), `false` before that. Knowing if the Resource has been resolved is useful in
- *      data-binding.
- *
- * @example
- *
- * # Credit card resource
- *
- * ```js
-     // Define CreditCard class
-     var CreditCard = $resource('/user/:userId/card/:cardId',
-      {userId:123, cardId:'@id'}, {
-       charge: {method:'POST', params:{charge:true}}
-      });
-
-     // We can retrieve a collection from the server
-     var cards = CreditCard.query(function() {
-       // GET: /user/123/card
-       // server returns: [ {id:456, number:'1234', name:'Smith'} ];
-
-       var card = cards[0];
-       // each item is an instance of CreditCard
-       expect(card instanceof CreditCard).toEqual(true);
-       card.name = "J. Smith";
-       // non GET methods are mapped onto the instances
-       card.$save();
-       // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
-       // server returns: {id:456, number:'1234', name: 'J. Smith'};
-
-       // our custom method is mapped as well.
-       card.$charge({amount:9.99});
-       // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
-     });
-
-     // we can create an instance as well
-     var newCard = new CreditCard({number:'0123'});
-     newCard.name = "Mike Smith";
-     newCard.$save();
-     // POST: /user/123/card {number:'0123', name:'Mike Smith'}
-     // server returns: {id:789, number:'0123', name: 'Mike Smith'};
-     expect(newCard.id).toEqual(789);
- * ```
- *
- * The object returned from this function execution is a resource "class" which has "static" method
- * for each action in the definition.
- *
- * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and
- * `headers`.
- * When the data is returned from the server then the object is an instance of the resource type and
- * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
- * operations (create, read, update, delete) on server-side data.
-
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(user) {
-       user.abc = true;
-       user.$save();
-     });
-   ```
- *
- * It's worth noting that the success callback for `get`, `query` and other methods gets passed
- * in the response that came from the server as well as $http header getter function, so one
- * could rewrite the above example and get access to http headers as:
- *
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(u, getResponseHeaders){
-       u.abc = true;
-       u.$save(function(u, putResponseHeaders) {
-         //u => saved user object
-         //putResponseHeaders => $http header getter
-       });
-     });
-   ```
- *
- * You can also access the raw `$http` promise via the `$promise` property on the object returned
- *
-   ```
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123})
-         .$promise.then(function(user) {
-           $scope.user = user;
-         });
-   ```
-
- * # Creating a custom 'PUT' request
- * In this example we create a custom method on our resource to make a PUT request
- * ```js
- *    var app = angular.module('app', ['ngResource', 'ngRoute']);
- *
- *    // Some APIs expect a PUT request in the format URL/object/ID
- *    // Here we are creating an 'update' method
- *    app.factory('Notes', ['$resource', function($resource) {
- *    return $resource('/notes/:id', null,
- *        {
- *            'update': { method:'PUT' }
- *        });
- *    }]);
- *
- *    // In our controller we get the ID from the URL using ngRoute and $routeParams
- *    // We pass in $routeParams and our Notes factory along with $scope
- *    app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
-                                      function($scope, $routeParams, Notes) {
- *    // First get a note object from the factory
- *    var note = Notes.get({ id:$routeParams.id });
- *    $id = note.id;
- *
- *    // Now call update passing in the ID first then the object you are updating
- *    Notes.update({ id:$id }, note);
- *
- *    // This will PUT /notes/ID with the note object in the request payload
- *    }]);
- * ```
- */
-angular.module('ngResource', ['ng']).
-  provider('$resource', function() {
-    var provider = this;
-
-    this.defaults = {
-      // Strip slashes by default
-      stripTrailingSlashes: true,
-
-      // Default actions configuration
-      actions: {
-        'get': {method: 'GET'},
-        'save': {method: 'POST'},
-        'query': {method: 'GET', isArray: true},
-        'remove': {method: 'DELETE'},
-        'delete': {method: 'DELETE'}
-      }
-    };
-
-    this.$get = ['$http', '$q', function($http, $q) {
-
-      var noop = angular.noop,
-        forEach = angular.forEach,
-        extend = angular.extend,
-        copy = angular.copy,
-        isFunction = angular.isFunction;
-
-      /**
-       * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
-       * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set
-       * (pchar) allowed in path segments:
-       *    segment       = *pchar
-       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-       *    pct-encoded   = "%" HEXDIG HEXDIG
-       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
-       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
-       *                     / "*" / "+" / "," / ";" / "="
-       */
-      function encodeUriSegment(val) {
-        return encodeUriQuery(val, true).
-          replace(/%26/gi, '&').
-          replace(/%3D/gi, '=').
-          replace(/%2B/gi, '+');
-      }
-
-
-      /**
-       * This method is intended for encoding *key* or *value* parts of query component. We need a
-       * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't
-       * have to be encoded per http://tools.ietf.org/html/rfc3986:
-       *    query       = *( pchar / "/" / "?" )
-       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
-       *    pct-encoded   = "%" HEXDIG HEXDIG
-       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
-       *                     / "*" / "+" / "," / ";" / "="
-       */
-      function encodeUriQuery(val, pctEncodeSpaces) {
-        return encodeURIComponent(val).
-          replace(/%40/gi, '@').
-          replace(/%3A/gi, ':').
-          replace(/%24/g, '$').
-          replace(/%2C/gi, ',').
-          replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
-      }
-
-      function Route(template, defaults) {
-        this.template = template;
-        this.defaults = extend({}, provider.defaults, defaults);
-        this.urlParams = {};
-      }
-
-      Route.prototype = {
-        setUrlParams: function(config, params, actionUrl) {
-          var self = this,
-            url = actionUrl || self.template,
-            val,
-            encodedVal;
-
-          var urlParams = self.urlParams = {};
-          forEach(url.split(/\W/), function(param) {
-            if (param === 'hasOwnProperty') {
-              throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
-            }
-            if (!(new RegExp("^\\d+$").test(param)) && param &&
-              (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
-              urlParams[param] = true;
-            }
-          });
-          url = url.replace(/\\:/g, ':');
-
-          params = params || {};
-          forEach(self.urlParams, function(_, urlParam) {
-            val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
-            if (angular.isDefined(val) && val !== null) {
-              encodedVal = encodeUriSegment(val);
-              url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
-                return encodedVal + p1;
-              });
-            } else {
-              url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
-                  leadingSlashes, tail) {
-                if (tail.charAt(0) == '/') {
-                  return tail;
-                } else {
-                  return leadingSlashes + tail;
-                }
-              });
-            }
-          });
-
-          // strip trailing slashes and set the url (unless this behavior is specifically disabled)
-          if (self.defaults.stripTrailingSlashes) {
-            url = url.replace(/\/+$/, '') || '/';
-          }
-
-          // then replace collapse `/.` if found in the last URL path segment before the query
-          // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
-          url = url.replace(/\/\.(?=\w+($|\?))/, '.');
-          // replace escaped `/\.` with `/.`
-          config.url = url.replace(/\/\\\./, '/.');
-
-
-          // set params - delegate param encoding to $http
-          forEach(params, function(value, key) {
-            if (!self.urlParams[key]) {
-              config.params = config.params || {};
-              config.params[key] = value;
-            }
-          });
-        }
-      };
-
-
-      function resourceFactory(url, paramDefaults, actions, options) {
-        var route = new Route(url, options);
-
-        actions = extend({}, provider.defaults.actions, actions);
-
-        function extractParams(data, actionParams) {
-          var ids = {};
-          actionParams = extend({}, paramDefaults, actionParams);
-          forEach(actionParams, function(value, key) {
-            if (isFunction(value)) { value = value(); }
-            ids[key] = value && value.charAt && value.charAt(0) == '@' ?
-              lookupDottedPath(data, value.substr(1)) : value;
-          });
-          return ids;
-        }
-
-        function defaultResponseInterceptor(response) {
-          return response.resource;
-        }
-
-        function Resource(value) {
-          shallowClearAndCopy(value || {}, this);
-        }
-
-        Resource.prototype.toJSON = function() {
-          var data = extend({}, this);
-          delete data.$promise;
-          delete data.$resolved;
-          return data;
-        };
-
-        forEach(actions, function(action, name) {
-          var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method);
-
-          Resource[name] = function(a1, a2, a3, a4) {
-            var params = {}, data, success, error;
-
-            /* jshint -W086 */ /* (purposefully fall through case statements) */
-            switch (arguments.length) {
-              case 4:
-                error = a4;
-                success = a3;
-              //fallthrough
-              case 3:
-              case 2:
-                if (isFunction(a2)) {
-                  if (isFunction(a1)) {
-                    success = a1;
-                    error = a2;
-                    break;
-                  }
-
-                  success = a2;
-                  error = a3;
-                  //fallthrough
-                } else {
-                  params = a1;
-                  data = a2;
-                  success = a3;
-                  break;
-                }
-              case 1:
-                if (isFunction(a1)) success = a1;
-                else if (hasBody) data = a1;
-                else params = a1;
-                break;
-              case 0: break;
-              default:
-                throw $resourceMinErr('badargs',
-                  "Expected up to 4 arguments [params, data, success, error], got {0} arguments",
-                  arguments.length);
-            }
-            /* jshint +W086 */ /* (purposefully fall through case statements) */
-
-            var isInstanceCall = this instanceof Resource;
-            var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
-            var httpConfig = {};
-            var responseInterceptor = action.interceptor && action.interceptor.response ||
-              defaultResponseInterceptor;
-            var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
-              undefined;
-
-            forEach(action, function(value, key) {
-              if (key != 'params' && key != 'isArray' && key != 'interceptor') {
-                httpConfig[key] = copy(value);
-              }
-            });
-
-            if (hasBody) httpConfig.data = data;
-            route.setUrlParams(httpConfig,
-              extend({}, extractParams(data, action.params || {}), params),
-              action.url);
-
-            var promise = $http(httpConfig).then(function(response) {
-              var data = response.data,
-                promise = value.$promise;
-
-              if (data) {
-                // Need to convert action.isArray to boolean in case it is undefined
-                // jshint -W018
-                if (angular.isArray(data) !== (!!action.isArray)) {
-                  throw $resourceMinErr('badcfg',
-                      'Error in resource configuration for action `{0}`. Expected response to ' +
-                      'contain an {1} but got an {2}', name, action.isArray ? 'array' : 'object',
-                    angular.isArray(data) ? 'array' : 'object');
-                }
-                // jshint +W018
-                if (action.isArray) {
-                  value.length = 0;
-                  forEach(data, function(item) {
-                    if (typeof item === "object") {
-                      value.push(new Resource(item));
-                    } else {
-                      // Valid JSON values may be string literals, and these should not be converted
-                      // into objects. These items will not have access to the Resource prototype
-                      // methods, but unfortunately there
-                      value.push(item);
-                    }
-                  });
-                } else {
-                  shallowClearAndCopy(data, value);
-                  value.$promise = promise;
-                }
-              }
-
-              value.$resolved = true;
-
-              response.resource = value;
-
-              return response;
-            }, function(response) {
-              value.$resolved = true;
-
-              (error || noop)(response);
-
-              return $q.reject(response);
-            });
-
-            promise = promise.then(
-              function(response) {
-                var value = responseInterceptor(response);
-                (success || noop)(value, response.headers);
-                return value;
-              },
-              responseErrorInterceptor);
-
-            if (!isInstanceCall) {
-              // we are creating instance / collection
-              // - set the initial promise
-              // - return the instance / collection
-              value.$promise = promise;
-              value.$resolved = false;
-
-              return value;
-            }
-
-            // instance call
-            return promise;
-          };
-
-
-          Resource.prototype['$' + name] = function(params, success, error) {
-            if (isFunction(params)) {
-              error = success; success = params; params = {};
-            }
-            var result = Resource[name].call(this, params, this, success, error);
-            return result.$promise || result;
-          };
-        });
-
-        Resource.bind = function(additionalParamDefaults) {
-          return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions);
-        };
-
-        return Resource;
-      }
-
-      return resourceFactory;
-    }];
-  });
-
-
-})(window, window.angular);
diff --git a/src/main/webapp/bower_components/angular-resource/angular-resource.min.js b/src/main/webapp/bower_components/angular-resource/angular-resource.min.js
deleted file mode 100644
index 880ac287..00000000
--- a/src/main/webapp/bower_components/angular-resource/angular-resource.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- AngularJS v1.3.11
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(I,d,B){'use strict';function D(f,q){q=q||{};d.forEach(q,function(d,h){delete q[h]});for(var h in f)!f.hasOwnProperty(h)||"$"===h.charAt(0)&&"$"===h.charAt(1)||(q[h]=f[h]);return q}var w=d.$$minErr("$resource"),C=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var f=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
-this.$get=["$http","$q",function(q,h){function t(d,g){this.template=d;this.defaults=s({},f.defaults,g);this.urlParams={}}function v(x,g,l,m){function c(b,k){var c={};k=s({},g,k);r(k,function(a,k){u(a)&&(a=a());var d;if(a&&a.charAt&&"@"==a.charAt(0)){d=b;var e=a.substr(1);if(null==e||""===e||"hasOwnProperty"===e||!C.test("."+e))throw w("badmember",e);for(var e=e.split("."),n=0,g=e.length;n<g&&d!==B;n++){var h=e[n];d=null!==d?d[h]:B}}else d=a;c[k]=d});return c}function F(b){return b.resource}function e(b){D(b||
-{},this)}var G=new t(x,m);l=s({},f.defaults.actions,l);e.prototype.toJSON=function(){var b=s({},this);delete b.$promise;delete b.$resolved;return b};r(l,function(b,k){var g=/^(POST|PUT|PATCH)$/i.test(b.method);e[k]=function(a,y,m,x){var n={},f,l,z;switch(arguments.length){case 4:z=x,l=m;case 3:case 2:if(u(y)){if(u(a)){l=a;z=y;break}l=y;z=m}else{n=a;f=y;l=m;break}case 1:u(a)?l=a:g?f=a:n=a;break;case 0:break;default:throw w("badargs",arguments.length);}var t=this instanceof e,p=t?f:b.isArray?[]:new e(f),
-A={},v=b.interceptor&&b.interceptor.response||F,C=b.interceptor&&b.interceptor.responseError||B;r(b,function(b,a){"params"!=a&&"isArray"!=a&&"interceptor"!=a&&(A[a]=H(b))});g&&(A.data=f);G.setUrlParams(A,s({},c(f,b.params||{}),n),b.url);n=q(A).then(function(a){var c=a.data,g=p.$promise;if(c){if(d.isArray(c)!==!!b.isArray)throw w("badcfg",k,b.isArray?"array":"object",d.isArray(c)?"array":"object");b.isArray?(p.length=0,r(c,function(a){"object"===typeof a?p.push(new e(a)):p.push(a)})):(D(c,p),p.$promise=
-g)}p.$resolved=!0;a.resource=p;return a},function(a){p.$resolved=!0;(z||E)(a);return h.reject(a)});n=n.then(function(a){var b=v(a);(l||E)(b,a.headers);return b},C);return t?n:(p.$promise=n,p.$resolved=!1,p)};e.prototype["$"+k]=function(a,b,c){u(a)&&(c=b,b=a,a={});a=e[k].call(this,a,this,b,c);return a.$promise||a}});e.bind=function(b){return v(x,s({},g,b),l)};return e}var E=d.noop,r=d.forEach,s=d.extend,H=d.copy,u=d.isFunction;t.prototype={setUrlParams:function(f,g,l){var m=this,c=l||m.template,h,
-e,q=m.urlParams={};r(c.split(/\W/),function(b){if("hasOwnProperty"===b)throw w("badname");!/^\d+$/.test(b)&&b&&(new RegExp("(^|[^\\\\]):"+b+"(\\W|$)")).test(c)&&(q[b]=!0)});c=c.replace(/\\:/g,":");g=g||{};r(m.urlParams,function(b,k){h=g.hasOwnProperty(k)?g[k]:m.defaults[k];d.isDefined(h)&&null!==h?(e=encodeURIComponent(h).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"%20").replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+
-k+"(\\W|$)","g"),function(b,a){return e+a})):c=c.replace(new RegExp("(/?):"+k+"(\\W|$)","g"),function(b,a,c){return"/"==c.charAt(0)?c:a+c})});m.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");f.url=c.replace(/\/\\\./,"/.");r(g,function(b,c){m.urlParams[c]||(f.params=f.params||{},f.params[c]=b)})}};return v}]})})(window,window.angular);
-//# sourceMappingURL=angular-resource.min.js.map
diff --git a/src/main/webapp/bower_components/angular-resource/angular-resource.min.js.map b/src/main/webapp/bower_components/angular-resource/angular-resource.min.js.map
deleted file mode 100644
index 4a83edf3..00000000
--- a/src/main/webapp/bower_components/angular-resource/angular-resource.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular-resource.min.js",
-"lineCount":12,
-"mappings":"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",
-"sources":["angular-resource.js"],
-"names":["window","angular","undefined","shallowClearAndCopy","src","dst","forEach","value","key","hasOwnProperty","charAt","$resourceMinErr","$$minErr","MEMBER_NAME_REGEX","module","provider","defaults","stripTrailingSlashes","actions","method","isArray","$get","$http","$q","Route","template","extend","urlParams","resourceFactory","url","paramDefaults","options","extractParams","data","actionParams","ids","isFunction","path","test","keys","split","i","ii","length","obj","defaultResponseInterceptor","response","resource","Resource","route","prototype","toJSON","Resource.prototype.toJSON","$promise","$resolved","action","name","hasBody","a1","a2","a3","a4","params","success","error","arguments","isInstanceCall","httpConfig","responseInterceptor","interceptor","responseErrorInterceptor","responseError","copy","setUrlParams","promise","then","item","push","noop","reject","headers","result","call","bind","Resource.bind","additionalParamDefaults","config","actionUrl","self","val","encodedVal","param","RegExp","replace","_","urlParam","isDefined","encodeURIComponent","match","p1","leadingSlashes","tail"]
-}
diff --git a/src/main/webapp/bower_components/angular-resource/bower.json b/src/main/webapp/bower_components/angular-resource/bower.json
deleted file mode 100644
index 92e3c0cd..00000000
--- a/src/main/webapp/bower_components/angular-resource/bower.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "angular-resource",
-  "version": "1.3.11",
-  "main": "./angular-resource.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  }
-}
diff --git a/src/main/webapp/bower_components/angular-resource/package.json b/src/main/webapp/bower_components/angular-resource/package.json
deleted file mode 100644
index 612fe25b..00000000
--- a/src/main/webapp/bower_components/angular-resource/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "name": "angular-resource",
-  "version": "1.3.11",
-  "description": "AngularJS module for interacting with RESTful server-side data sources",
-  "main": "angular-resource.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.js.git"
-  },
-  "keywords": [
-    "angular",
-    "framework",
-    "browser",
-    "rest",
-    "client-side"
-  ],
-  "author": "Angular Core Team <angular-core+npm@google.com>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular.js/issues"
-  },
-  "homepage": "http://angularjs.org"
-}
diff --git a/src/main/webapp/bower_components/angular-scenario/.bower.json b/src/main/webapp/bower_components/angular-scenario/.bower.json
deleted file mode 100644
index c24ab1f8..00000000
--- a/src/main/webapp/bower_components/angular-scenario/.bower.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "name": "angular-scenario",
-  "version": "1.3.11",
-  "main": "./angular-scenario.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  },
-  "homepage": "https://github.com/angular/bower-angular-scenario",
-  "_release": "1.3.11",
-  "_resolution": {
-    "type": "version",
-    "tag": "v1.3.11",
-    "commit": "9b452ee8978462acf5d60ab0e4873163175801e5"
-  },
-  "_source": "git://github.com/angular/bower-angular-scenario.git",
-  "_target": "1.3.11",
-  "_originalSource": "angular-scenario"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-scenario/README.md b/src/main/webapp/bower_components/angular-scenario/README.md
deleted file mode 100644
index b58d56e1..00000000
--- a/src/main/webapp/bower_components/angular-scenario/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# packaged angular-scenario
-
-This tool is now in maintenance mode. If you are starting a new project, please use
-[Protractor](https://github.com/angular/protractor). Existing projects using scenario runner are
-advised to migrate to protractor, as this tool is unlikely to receive updates.
-
-This repo is for distribution on `npm` and `bower`. The source for this module is in the
-[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngScenario).
-Please file issues and pull requests against that repo.
-
-## Install
-
-You can install this package either with `npm` or with `bower`.
-
-### npm
-
-```shell
-npm install angular-scenario
-```
-
-The files are then available at `node_modules/angular-scenario/`.
-
-Note that this package is not in CommonJS format, so doing `require('angular-scenario')` will
-return `undefined`.
-
-### bower
-
-```shell
-bower install angular-scenario
-```
-
-The files are then available at `bower_components/angular-scenario/`.
-
-## Documentation
-
-Documentation is available on the
-[AngularJS docs site](http://docs.angularjs.org/).
-
-## License
-
-The MIT License
-
-Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/angular-scenario/angular-scenario.js b/src/main/webapp/bower_components/angular-scenario/angular-scenario.js
deleted file mode 100644
index 6e1a52a8..00000000
--- a/src/main/webapp/bower_components/angular-scenario/angular-scenario.js
+++ /dev/null
@@ -1,37470 +0,0 @@
-/*!
- * jQuery JavaScript Library v2.1.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-05-01T17:11Z
- */
-
-(function( global, factory ) {'use strict';
-
-	if ( typeof module === "object" && typeof module.exports === "object" ) {
-		// For CommonJS and CommonJS-like environments where a proper window is present,
-		// execute the factory and get jQuery
-		// For environments that do not inherently posses a window with a document
-		// (such as Node.js), expose a jQuery-making factory as module.exports
-		// This accentuates the need for the creation of a real window
-		// e.g. var jQuery = require("jquery")(window);
-		// See ticket #14549 for more info
-		module.exports = global.document ?
-			factory( global, true ) :
-			function( w ) {
-				if ( !w.document ) {
-					throw new Error( "jQuery requires a window with a document" );
-				}
-				return factory( w );
-			};
-	} else {
-		factory( global );
-	}
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//
-
-var arr = [];
-
-var slice = arr.slice;
-
-var concat = arr.concat;
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var support = {};
-
-
-
-var
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	version = "2.1.1",
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		// Need init if jQuery is called (just allow error to be thrown if not included)
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Support: Android<4.1
-	// Make sure we trim BOM and NBSP
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: version,
-
-	constructor: jQuery,
-
-	// Start with an empty selector
-	selector: "",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return slice.call( this );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num != null ?
-
-			// Return just the one element from the set
-			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
-			// Return all the elements in a clean array
-			slice.call( this );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (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 );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: arr.sort,
-	splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-
-		// skip the boolean and the target
-		target = arguments[ i ] || {};
-		i++;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( i === length ) {
-		target = this;
-		i--;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	// Unique for each copy of jQuery on the page
-	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-	// Assume jQuery is ready without the ready module
-	isReady: true,
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	noop: function() {},
-
-	// 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,
-
-	isWindow: function( obj ) {
-		return obj != null && obj === obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
-		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-		// subtraction forces infinities to NaN
-		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
-	},
-
-	isPlainObject: function( obj ) {
-		// Not plain objects:
-		// - Any object or value whose internal [[Class]] property is not "[object Object]"
-		// - DOM nodes
-		// - window
-		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		if ( obj.constructor &&
-				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
-			return false;
-		}
-
-		// If the function hasn't returned already, we're confident that
-		// |obj| is a plain object, created by {} or constructed with new Object
-		return true;
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return obj + "";
-		}
-		// Support: Android < 4.0, iOS < 6 (functionish RegExp)
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	// Evaluates a script in a global context
-	globalEval: function( code ) {
-		var script,
-			indirect = eval;
-
-		code = jQuery.trim( code );
-
-		if ( code ) {
-			// If the code includes a valid, prologue position
-			// strict mode pragma, execute code by injecting a
-			// script tag into the document.
-			if ( code.indexOf("use strict") === 1 ) {
-				script = document.createElement("script");
-				script.text = code;
-				document.head.appendChild( script ).parentNode.removeChild( script );
-			} else {
-			// Otherwise, avoid the DOM node creation, insertion
-			// and removal by using an indirect global eval
-				indirect( code );
-			}
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// 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 value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Support: Android<4.1
-	trim: function( text ) {
-		return text == null ?
-			"" :
-			( text + "" ).replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		return arr == null ? -1 : indexOf.call( arr, elem, i );
-	},
-
-	merge: function( first, second ) {
-		var len = +second.length,
-			j = 0,
-			i = first.length;
-
-		for ( ; j < len; j++ ) {
-			first[ i++ ] = second[ j ];
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, invert ) {
-		var callbackInverse,
-			matches = [],
-			i = 0,
-			length = elems.length,
-			callbackExpect = !invert;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; i < length; i++ ) {
-			callbackInverse = !callback( elems[ i ], i );
-			if ( callbackInverse !== callbackExpect ) {
-				matches.push( elems[ i ] );
-			}
-		}
-
-		return matches;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// Go through the array, translating each of the items to their new values
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		var tmp, args, proxy;
-
-		if ( typeof context === "string" ) {
-			tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		args = slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-		};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	now: Date.now,
-
-	// jQuery.support is not used in Core but other projects attach their
-	// properties to it so it needs to exist.
-	support: support
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( type === "function" || jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v1.10.19
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-04-18
- */
-(function( window ) {
-
-var i,
-	support,
-	Expr,
-	getText,
-	isXML,
-	tokenize,
-	compile,
-	select,
-	outermostContext,
-	sortInput,
-	hasDuplicate,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + -(new Date()),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	strundefined = typeof undefined,
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf if we can't use a native one
-	indexOf = arr.indexOf || function( elem ) {
-		var i = 0,
-			len = this.length;
-		for ( ; i < len; i++ ) {
-			if ( this[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// 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#" ),
-
-	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
-		// Operator (capture 2)
-		"*([*^$|!~]?=)" + whitespace +
-		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
-		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
-		"*\\]",
-
-	pseudos = ":(" + characterEncoding + ")(?:\\((" +
-		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
-		// 1. quoted (capture 3; capture 4 or capture 5)
-		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
-		// 2. simple (capture 6)
-		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
-		// 3. anything else (capture 2)
-		".*" +
-		")\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rsibling = /[+~]/,
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox<24
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			high < 0 ?
-				// BMP codepoint
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-
-	if ( !selector || typeof selector !== "string" ) {
-		return results;
-	}
-
-	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-		return [];
-	}
-
-	if ( documentIsHTML && !seed ) {
-
-		// Shortcuts
-		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 (jQuery #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, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = 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 ( 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 + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key + " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key + " " ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
-	return context && typeof context.getElementsByTagName !== strundefined && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var hasCompare,
-		doc = node ? node.ownerDocument || node : preferredDoc,
-		parent = doc.defaultView;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-
-	// Support tests
-	documentIsHTML = !isXML( doc );
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent !== parent.top ) {
-		// IE11 does not have attachEvent, so all must suffer
-		if ( parent.addEventListener ) {
-			parent.addEventListener( "unload", function() {
-				setDocument();
-			}, false );
-		} else if ( parent.attachEvent ) {
-			parent.attachEvent( "onunload", function() {
-				setDocument();
-			});
-		}
-	}
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Check if getElementsByClassName can be trusted
-	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
-		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
-		// Support: Safari<4
-		// Catch class over-caching
-		div.firstChild.className = "i";
-		// Support: Opera<10
-		// Catch gEBCN failure to find non-leading classes
-		return div.getElementsByClassName("i").length === 2;
-	});
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-				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 ] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== strundefined ) {
-				return context.getElementsByTagName( tag );
-			}
-		} :
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
-
-			// Support: IE8, Opera 11-12.16
-			// Nothing should be selected when empty strings follow ^= or $= or *=
-			// The test attribute must be unknown in Opera but "safe" for WinRT
-			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
-			if ( div.querySelectorAll("[msallowclip^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-		});
-
-		assert(function( div ) {
-			// Support: Windows 8 Native Apps
-			// The type and name attributes are restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "name", "D" );
-
-			// Support: IE8
-			// Enforce case-sensitivity of name attribute
-			if ( div.querySelectorAll("[name=d]").length ) {
-				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-	hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = hasCompare || rnative.test( docElem.contains ) ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = hasCompare ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		// Sort on method existence if only one input has compareDocumentPosition
-		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-		if ( compare ) {
-			return compare;
-		}
-
-		// Calculate position if both inputs belong to the same document
-		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-			a.compareDocumentPosition( b ) :
-
-			// Otherwise we know they are disconnected
-			1;
-
-		// Disconnected nodes
-		if ( compare & 1 ||
-			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-			// Choose the first element that is related to our preferred document
-			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-				return -1;
-			}
-			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-				return 1;
-			}
-
-			// Maintain original order
-			return sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-		}
-
-		return compare & 4 ? -1 : 1;
-	} :
-	function( a, b ) {
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Parentless nodes are either documents or disconnected
-		if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch(e) {}
-	}
-
-	return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val !== undefined ?
-		val :
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	// Clear input after sorting to release objects
-	// See https://github.com/jquery/sizzle/pull/225
-	sortInput = null;
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		while ( (node = elem[i++]) ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (jQuery #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[6] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] ) {
-				match[2] = match[4] || match[5] || "";
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf.call( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					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;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
-			//   but not by others (comment: 8; processing instruction: 7; etc.)
-			// nodeType < 6 works because attributes (2) do not appear as children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeType < 6 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-
-				// Support: IE<8
-				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( (tokens = []) );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var oldCache, outerCache,
-				newCache = [ dirruns, doneName ];
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (oldCache = outerCache[ dir ]) &&
-							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
-							// Assign to newCache so results back-propagate to previous elements
-							return (newCache[ 2 ] = oldCache[ 2 ]);
-						} else {
-							// Reuse newcache so results back-propagate to previous elements
-							outerCache[ dir ] = newCache;
-
-							// A match means we're done; a fail means we have to keep checking
-							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf.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 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	var bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, outermost ) {
-			var elem, j, matcher,
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				setMatched = [],
-				contextBackup = outermostContext,
-				// We must always have either seed elements or outermost context
-				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
-				len = elems.length;
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			// Support: IE<9, Safari
-			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
-			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !match ) {
-			match = tokenize( selector );
-		}
-		i = match.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( match[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
-		// Save selector and tokenization
-		cached.selector = selector;
-	}
-	return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- *  selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- *  selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		compiled = typeof selector === "function" && selector,
-		match = !seed && tokenize( (selector = compiled.selector || selector) );
-
-	results = results || [];
-
-	// Try to minimize operations if there is no seed and 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" &&
-				support.getById && context.nodeType === 9 && documentIsHTML &&
-				Expr.relative[ tokens[1].type ] ) {
-
-			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-			if ( !context ) {
-				return results;
-
-			// Precompiled matchers will still verify ancestry, so step up a level
-			} else if ( compiled ) {
-				context = context.parentNode;
-			}
-
-			selector = selector.slice( tokens.shift().value.length );
-		}
-
-		// Fetch a seed set for right-to-left matching
-		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-		while ( i-- ) {
-			token = tokens[i];
-
-			// Abort if we hit a combinator
-			if ( Expr.relative[ (type = token.type) ] ) {
-				break;
-			}
-			if ( (find = Expr.find[ type ]) ) {
-				// Search, expanding context for leading sibling combinators
-				if ( (seed = find(
-					token.matches[0].replace( runescape, funescape ),
-					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
-				)) ) {
-
-					// If seed is empty or no tokens remain, we can return early
-					tokens.splice( i, 1 );
-					selector = seed.length && toSelector( tokens );
-					if ( !selector ) {
-						push.apply( results, seed );
-						return results;
-					}
-
-					break;
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function if one is not provided
-	// Provide `match` to avoid retokenization if we modified the selector above
-	( compiled || compile( selector, match ) )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector ) && testContext( context.parentNode ) || context
-	);
-	return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = "<a href='#'></a>";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = "<input/>";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return elem[ name ] === true ? name.toLowerCase() :
-					(val = elem.getAttributeNode( name )) && val.specified ?
-					val.value :
-				null;
-		}
-	});
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-	if ( jQuery.isFunction( qualifier ) ) {
-		return jQuery.grep( elements, function( elem, i ) {
-			/* jshint -W018 */
-			return !!qualifier.call( elem, i, elem ) !== not;
-		});
-
-	}
-
-	if ( qualifier.nodeType ) {
-		return jQuery.grep( elements, function( elem ) {
-			return ( elem === qualifier ) !== not;
-		});
-
-	}
-
-	if ( typeof qualifier === "string" ) {
-		if ( risSimple.test( qualifier ) ) {
-			return jQuery.filter( qualifier, elements, not );
-		}
-
-		qualifier = jQuery.filter( qualifier, elements );
-	}
-
-	return jQuery.grep( elements, function( elem ) {
-		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
-	});
-}
-
-jQuery.filter = function( expr, elems, not ) {
-	var elem = elems[ 0 ];
-
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return elems.length === 1 && elem.nodeType === 1 ?
-		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-			return elem.nodeType === 1;
-		}));
-};
-
-jQuery.fn.extend({
-	find: function( selector ) {
-		var i,
-			len = this.length,
-			ret = [],
-			self = this;
-
-		if ( typeof selector !== "string" ) {
-			return this.pushStack( jQuery( selector ).filter(function() {
-				for ( i = 0; i < len; i++ ) {
-					if ( jQuery.contains( self[ i ], this ) ) {
-						return true;
-					}
-				}
-			}) );
-		}
-
-		for ( i = 0; i < len; i++ ) {
-			jQuery.find( selector, self[ i ], ret );
-		}
-
-		// Needed because $( selector, context ) becomes $( context ).find( selector )
-		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-		ret.selector = this.selector ? this.selector + " " + selector : selector;
-		return ret;
-	},
-	filter: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], false) );
-	},
-	not: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], true) );
-	},
-	is: function( selector ) {
-		return !!winnow(
-			this,
-
-			// If this is a positional/relative selector, check membership in the returned set
-			// so $("p:first").is("p:last") won't return true for a doc with two "p".
-			typeof selector === "string" && rneedsContext.test( selector ) ?
-				jQuery( selector ) :
-				selector || [],
-			false
-		).length;
-	}
-});
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	init = jQuery.fn.init = function( selector, context ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// scripts is true for back-compat
-					// Intentionally let the error be thrown if parseHTML is not present
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// HANDLE: $(#id)
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return typeof rootjQuery.ready !== "undefined" ?
-				rootjQuery.ready( selector ) :
-				// Execute immediately if ready is not present
-				selector( jQuery );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	};
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-	// methods guaranteed to produce a unique set when starting from a unique set
-	guaranteedUnique = {
-		children: true,
-		contents: true,
-		next: true,
-		prev: true
-	};
-
-jQuery.extend({
-	dir: function( elem, dir, until ) {
-		var matched = [],
-			truncate = until !== undefined;
-
-		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
-			if ( elem.nodeType === 1 ) {
-				if ( truncate && jQuery( elem ).is( until ) ) {
-					break;
-				}
-				matched.push( elem );
-			}
-		}
-		return matched;
-	},
-
-	sibling: function( n, elem ) {
-		var matched = [];
-
-		for ( ; n; n = n.nextSibling ) {
-			if ( n.nodeType === 1 && n !== elem ) {
-				matched.push( n );
-			}
-		}
-
-		return matched;
-	}
-});
-
-jQuery.fn.extend({
-	has: function( target ) {
-		var targets = jQuery( target, this ),
-			l = targets.length;
-
-		return this.filter(function() {
-			var i = 0;
-			for ( ; i < l; i++ ) {
-				if ( jQuery.contains( this, targets[i] ) ) {
-					return true;
-				}
-			}
-		});
-	},
-
-	closest: function( selectors, context ) {
-		var cur,
-			i = 0,
-			l = this.length,
-			matched = [],
-			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-				jQuery( selectors, context || this.context ) :
-				0;
-
-		for ( ; i < l; i++ ) {
-			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-				// Always skip document fragments
-				if ( cur.nodeType < 11 && (pos ?
-					pos.index(cur) > -1 :
-
-					// Don't pass non-elements to Sizzle
-					cur.nodeType === 1 &&
-						jQuery.find.matchesSelector(cur, selectors)) ) {
-
-					matched.push( cur );
-					break;
-				}
-			}
-		}
-
-		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
-	},
-
-	// 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.first().prevAll().length : -1;
-		}
-
-		// index in selector
-		if ( typeof elem === "string" ) {
-			return indexOf.call( jQuery( elem ), this[ 0 ] );
-		}
-
-		// Locate the position of the desired element
-		return indexOf.call( this,
-
-			// If it receives a jQuery object, the first element is used
-			elem.jquery ? elem[ 0 ] : elem
-		);
-	},
-
-	add: function( selector, context ) {
-		return this.pushStack(
-			jQuery.unique(
-				jQuery.merge( this.get(), jQuery( selector, context ) )
-			)
-		);
-	},
-
-	addBack: function( selector ) {
-		return this.add( selector == null ?
-			this.prevObject : this.prevObject.filter(selector)
-		);
-	}
-});
-
-function sibling( cur, dir ) {
-	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
-	return cur;
-}
-
-jQuery.each({
-	parent: function( elem ) {
-		var parent = elem.parentNode;
-		return parent && parent.nodeType !== 11 ? parent : null;
-	},
-	parents: function( elem ) {
-		return 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 elem.contentDocument || jQuery.merge( [], elem.childNodes );
-	}
-}, function( name, fn ) {
-	jQuery.fn[ name ] = function( until, selector ) {
-		var matched = jQuery.map( this, fn, until );
-
-		if ( name.slice( -5 ) !== "Until" ) {
-			selector = until;
-		}
-
-		if ( selector && typeof selector === "string" ) {
-			matched = jQuery.filter( selector, matched );
-		}
-
-		if ( this.length > 1 ) {
-			// Remove duplicates
-			if ( !guaranteedUnique[ name ] ) {
-				jQuery.unique( matched );
-			}
-
-			// Reverse order for parents* and prev-derivatives
-			if ( rparentsprev.test( name ) ) {
-				matched.reverse();
-			}
-		}
-
-		return this.pushStack( matched );
-	};
-});
-var rnotwhite = (/\S+/g);
-
-
-
-// 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.match( rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( 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;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				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 ) {
-				if ( list && ( !fired || stack ) ) {
-					args = args || [];
-					args = [ context, args.slice ? args.slice() : args ];
-					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 fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ](function() {
-								var returned = fn && fn.apply( this, arguments );
-								if ( returned && jQuery.isFunction( returned.promise ) ) {
-									returned.promise()
-										.done( newDefer.resolve )
-										.fail( newDefer.reject )
-										.progress( newDefer.notify );
-								} else {
-									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-								}
-							});
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ]
-			deferred[ tuple[0] ] = function() {
-				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-				return this;
-			};
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
-					if ( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-					} else if ( !( --remaining ) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.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();
-	}
-});
-
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-	// Add the callback
-	jQuery.ready.promise().done( fn );
-
-	return this;
-};
-
-jQuery.extend({
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Remember that the DOM is ready
-		jQuery.isReady = true;
-
-		// If a normal DOM Ready event fired, decrement, and wait if need be
-		if ( wait !== true && --jQuery.readyWait > 0 ) {
-			return;
-		}
-
-		// If there are functions bound, to execute
-		readyList.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.triggerHandler ) {
-			jQuery( document ).triggerHandler( "ready" );
-			jQuery( document ).off( "ready" );
-		}
-	}
-});
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
-	document.removeEventListener( "DOMContentLoaded", completed, false );
-	window.removeEventListener( "load", completed, false );
-	jQuery.ready();
-}
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// 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 );
-
-		} else {
-
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-		}
-	}
-	return readyList.promise( obj );
-};
-
-// Kick off the DOM ready check even if the user does not
-jQuery.ready.promise();
-
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
-	var i = 0,
-		len = elems.length,
-		bulk = key == null;
-
-	// Sets many values
-	if ( jQuery.type( key ) === "object" ) {
-		chainable = true;
-		for ( i in key ) {
-			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-		}
-
-	// Sets one value
-	} else if ( value !== undefined ) {
-		chainable = true;
-
-		if ( !jQuery.isFunction( value ) ) {
-			raw = true;
-		}
-
-		if ( bulk ) {
-			// Bulk operations run against the entire set
-			if ( raw ) {
-				fn.call( elems, value );
-				fn = null;
-
-			// ...except when executing function values
-			} else {
-				bulk = fn;
-				fn = function( elem, key, value ) {
-					return bulk.call( jQuery( elem ), value );
-				};
-			}
-		}
-
-		if ( fn ) {
-			for ( ; i < len; i++ ) {
-				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-			}
-		}
-	}
-
-	return chainable ?
-		elems :
-
-		// Gets
-		bulk ?
-			fn.call( elems ) :
-			len ? fn( elems[0], key ) : emptyGet;
-};
-
-
-/**
- * Determines whether an object can have data
- */
-jQuery.acceptData = function( owner ) {
-	// Accepts only:
-	//  - Node
-	//    - Node.ELEMENT_NODE
-	//    - Node.DOCUMENT_NODE
-	//  - Object
-	//    - Any
-	/* jshint -W018 */
-	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-
-function Data() {
-	// Support: Android < 4,
-	// Old WebKit does not have Object.preventExtensions/freeze method,
-	// return new empty object instead with no [[set]] accessor
-	Object.defineProperty( this.cache = {}, 0, {
-		get: function() {
-			return {};
-		}
-	});
-
-	this.expando = jQuery.expando + Math.random();
-}
-
-Data.uid = 1;
-Data.accepts = jQuery.acceptData;
-
-Data.prototype = {
-	key: function( owner ) {
-		// We can accept data for non-element nodes in modern browsers,
-		// but we should not, see #8335.
-		// Always return the key for a frozen object.
-		if ( !Data.accepts( owner ) ) {
-			return 0;
-		}
-
-		var descriptor = {},
-			// Check if the owner object already has a cache key
-			unlock = owner[ this.expando ];
-
-		// If not, create one
-		if ( !unlock ) {
-			unlock = Data.uid++;
-
-			// Secure it in a non-enumerable, non-writable property
-			try {
-				descriptor[ this.expando ] = { value: unlock };
-				Object.defineProperties( owner, descriptor );
-
-			// Support: Android < 4
-			// Fallback to a less secure definition
-			} catch ( e ) {
-				descriptor[ this.expando ] = unlock;
-				jQuery.extend( owner, descriptor );
-			}
-		}
-
-		// Ensure the cache object
-		if ( !this.cache[ unlock ] ) {
-			this.cache[ unlock ] = {};
-		}
-
-		return unlock;
-	},
-	set: function( owner, data, value ) {
-		var prop,
-			// There may be an unlock assigned to this node,
-			// if there is no entry for this "owner", create one inline
-			// and set the unlock as though an owner entry had always existed
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		// Handle: [ owner, key, value ] args
-		if ( typeof data === "string" ) {
-			cache[ data ] = value;
-
-		// Handle: [ owner, { properties } ] args
-		} else {
-			// Fresh assignments by object are shallow copied
-			if ( jQuery.isEmptyObject( cache ) ) {
-				jQuery.extend( this.cache[ unlock ], data );
-			// Otherwise, copy the properties one-by-one to the cache object
-			} else {
-				for ( prop in data ) {
-					cache[ prop ] = data[ prop ];
-				}
-			}
-		}
-		return cache;
-	},
-	get: function( owner, key ) {
-		// Either a valid cache is found, or will be created.
-		// New caches will be created and the unlock returned,
-		// allowing direct access to the newly created
-		// empty data object. A valid owner object must be provided.
-		var cache = this.cache[ this.key( owner ) ];
-
-		return key === undefined ?
-			cache : cache[ key ];
-	},
-	access: function( owner, key, value ) {
-		var stored;
-		// In cases where either:
-		//
-		//   1. No key was specified
-		//   2. A string key was specified, but no value provided
-		//
-		// Take the "read" path and allow the get method to determine
-		// which value to return, respectively either:
-		//
-		//   1. The entire cache object
-		//   2. The data stored at the key
-		//
-		if ( key === undefined ||
-				((key && typeof key === "string") && value === undefined) ) {
-
-			stored = this.get( owner, key );
-
-			return stored !== undefined ?
-				stored : this.get( owner, jQuery.camelCase(key) );
-		}
-
-		// [*]When the key is not a string, or both a key and value
-		// are specified, set or extend (existing objects) with either:
-		//
-		//   1. An object of properties
-		//   2. A key and value
-		//
-		this.set( owner, key, value );
-
-		// Since the "set" path can have two possible entry points
-		// return the expected data based on which path was taken[*]
-		return value !== undefined ? value : key;
-	},
-	remove: function( owner, key ) {
-		var i, name, camel,
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		if ( key === undefined ) {
-			this.cache[ unlock ] = {};
-
-		} else {
-			// Support array or space separated string of keys
-			if ( jQuery.isArray( key ) ) {
-				// If "name" is an array of keys...
-				// When data is initially created, via ("key", "val") signature,
-				// keys will be converted to camelCase.
-				// Since there is no way to tell _how_ a key was added, remove
-				// both plain key and camelCase key. #12786
-				// This will only penalize the array argument path.
-				name = key.concat( key.map( jQuery.camelCase ) );
-			} else {
-				camel = jQuery.camelCase( key );
-				// Try the string as a key before any manipulation
-				if ( key in cache ) {
-					name = [ key, camel ];
-				} else {
-					// If a key with the spaces exists, use it.
-					// Otherwise, create an array by matching non-whitespace
-					name = camel;
-					name = name in cache ?
-						[ name ] : ( name.match( rnotwhite ) || [] );
-				}
-			}
-
-			i = name.length;
-			while ( i-- ) {
-				delete cache[ name[ i ] ];
-			}
-		}
-	},
-	hasData: function( owner ) {
-		return !jQuery.isEmptyObject(
-			this.cache[ owner[ this.expando ] ] || {}
-		);
-	},
-	discard: function( owner ) {
-		if ( owner[ this.expando ] ) {
-			delete this.cache[ owner[ this.expando ] ];
-		}
-	}
-};
-var data_priv = new Data();
-
-var data_user = new Data();
-
-
-
-/*
-	Implementation Summary
-
-	1. Enforce API surface and semantic compatibility with 1.9.x branch
-	2. Improve the module's maintainability by reducing the storage
-		paths to a single mechanism.
-	3. Use the same single mechanism to support "private" and "user" data.
-	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-	5. Avoid exposing implementation details on user objects (eg. expando properties)
-	6. Provide a clear path for implementation upgrade to WeakMap in 2014
-*/
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-function dataAttr( elem, key, data ) {
-	var name;
-
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-		name = "data-" + key.replace( rmultiDash, "-$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
-			data_user.set( elem, key, data );
-		} else {
-			data = undefined;
-		}
-	}
-	return data;
-}
-
-jQuery.extend({
-	hasData: function( elem ) {
-		return data_user.hasData( elem ) || data_priv.hasData( elem );
-	},
-
-	data: function( elem, name, data ) {
-		return data_user.access( elem, name, data );
-	},
-
-	removeData: function( elem, name ) {
-		data_user.remove( elem, name );
-	},
-
-	// TODO: Now that all calls to _data and _removeData have been replaced
-	// with direct calls to data_priv methods, these can be deprecated.
-	_data: function( elem, name, data ) {
-		return data_priv.access( elem, name, data );
-	},
-
-	_removeData: function( elem, name ) {
-		data_priv.remove( elem, name );
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var i, name, data,
-			elem = this[ 0 ],
-			attrs = elem && elem.attributes;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = data_user.get( elem );
-
-				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
-					i = attrs.length;
-					while ( i-- ) {
-
-						// Support: IE11+
-						// The attrs elements can be null (#14894)
-						if ( attrs[ i ] ) {
-							name = attrs[ i ].name;
-							if ( name.indexOf( "data-" ) === 0 ) {
-								name = jQuery.camelCase( name.slice(5) );
-								dataAttr( elem, name, data[ name ] );
-							}
-						}
-					}
-					data_priv.set( elem, "hasDataAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				data_user.set( this, key );
-			});
-		}
-
-		return access( this, function( value ) {
-			var data,
-				camelKey = jQuery.camelCase( key );
-
-			// The calling jQuery object (element matches) is not empty
-			// (and therefore has an element appears at this[ 0 ]) and the
-			// `value` parameter was not undefined. An empty jQuery object
-			// will result in `undefined` for elem = this[ 0 ] which will
-			// throw an exception if an attempt to read a data cache is made.
-			if ( elem && value === undefined ) {
-				// Attempt to get data from the cache
-				// with the key as-is
-				data = data_user.get( elem, key );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to get data from the cache
-				// with the key camelized
-				data = data_user.get( elem, camelKey );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to "discover" the data in
-				// HTML5 custom data-* attrs
-				data = dataAttr( elem, camelKey, undefined );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// We tried really hard, but the data doesn't exist.
-				return;
-			}
-
-			// Set the data...
-			this.each(function() {
-				// First, attempt to store a copy or reference of any
-				// data that might've been store with a camelCased key.
-				var data = data_user.get( this, camelKey );
-
-				// For HTML5 data-* attribute interop, we have to
-				// store property names with dashes in a camelCase form.
-				// This might not apply to all properties...*
-				data_user.set( this, camelKey, value );
-
-				// *... In the case of properties that might _actually_
-				// have dashes, we need to also store a copy of that
-				// unchanged property.
-				if ( key.indexOf("-") !== -1 && data !== undefined ) {
-					data_user.set( this, key, value );
-				}
-			});
-		}, null, value, arguments.length > 1, null, true );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			data_user.remove( this, key );
-		});
-	}
-});
-
-
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		var queue;
-
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			queue = data_priv.get( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !queue || jQuery.isArray( data ) ) {
-					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
-				} else {
-					queue.push( data );
-				}
-			}
-			return queue || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			startLength = queue.length,
-			fn = queue.shift(),
-			hooks = jQuery._queueHooks( elem, type ),
-			next = function() {
-				jQuery.dequeue( elem, type );
-			};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-			startLength--;
-		}
-
-		if ( fn ) {
-
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			// clear up the last queue stop function
-			delete hooks.stop;
-			fn.call( elem, next, hooks );
-		}
-
-		if ( !startLength && hooks ) {
-			hooks.empty.fire();
-		}
-	},
-
-	// not intended for public consumption - generates a queueHooks object, or returns the current one
-	_queueHooks: function( elem, type ) {
-		var key = type + "queueHooks";
-		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
-			empty: jQuery.Callbacks("once memory").add(function() {
-				data_priv.remove( elem, [ type + "queue", key ] );
-			})
-		});
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				// ensure a hooks for this queue
-				jQuery._queueHooks( this, type );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, obj ) {
-		var tmp,
-			count = 1,
-			defer = jQuery.Deferred(),
-			elements = this,
-			i = this.length,
-			resolve = function() {
-				if ( !( --count ) ) {
-					defer.resolveWith( elements, [ elements ] );
-				}
-			};
-
-		if ( typeof type !== "string" ) {
-			obj = type;
-			type = undefined;
-		}
-		type = type || "fx";
-
-		while ( i-- ) {
-			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
-			if ( tmp && tmp.empty ) {
-				count++;
-				tmp.empty.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( obj );
-	}
-});
-var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHidden = function( elem, el ) {
-		// isHidden might be called from jQuery#filter function;
-		// in that case, element will be second argument
-		elem = el || elem;
-		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-	};
-
-var rcheckableType = (/^(?:checkbox|radio)$/i);
-
-
-
-(function() {
-	var fragment = document.createDocumentFragment(),
-		div = fragment.appendChild( document.createElement( "div" ) ),
-		input = document.createElement( "input" );
-
-	// #11217 - WebKit loses check when the name is after the checked attribute
-	// Support: Windows Web Apps (WWA)
-	// `name` and `type` need .setAttribute for WWA
-	input.setAttribute( "type", "radio" );
-	input.setAttribute( "checked", "checked" );
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-
-	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
-	// old WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Make sure textarea (and checkbox) defaultValue is properly cloned
-	// Support: IE9-IE11+
-	div.innerHTML = "<textarea>x</textarea>";
-	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-})();
-var strundefined = typeof undefined;
-
-
-
-support.focusinBubbles = "onfocusin" in window;
-
-
-var
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-	return true;
-}
-
-function returnFalse() {
-	return false;
-}
-
-function safeActiveElement() {
-	try {
-		return document.activeElement;
-	} catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	global: {},
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var handleObjIn, eventHandle, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.get( elem );
-
-		// Don't attach events to noData or text/comment nodes (but allow plain objects)
-		if ( !elemData ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		if ( !(events = elemData.events) ) {
-			events = elemData.events = {};
-		}
-		if ( !(eventHandle = elemData.handle) ) {
-			eventHandle = elemData.handle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
-					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
-			};
-		}
-
-		// Handle multiple events separated by a space
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// There *must* be a type, no attaching namespace-only handlers
-			if ( !type ) {
-				continue;
-			}
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: origType,
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			if ( !(handlers = events[ type ]) ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-	},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var j, origCount, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-			handlers = events[ type ] || [];
-			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-			// Remove matching events
-			origCount = j = handlers.length;
-			while ( j-- ) {
-				handleObj = handlers[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					( !handler || handler.guid === handleObj.guid ) &&
-					( !tmp || tmp.test( handleObj.namespace ) ) &&
-					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					handlers.splice( j, 1 );
-
-					if ( handleObj.selector ) {
-						handlers.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( origCount && !handlers.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			delete elemData.handle;
-			data_priv.remove( elem, "events" );
-		}
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-
-		var i, cur, tmp, bubbleType, ontype, handle, special,
-			eventPath = [ elem || document ],
-			type = hasOwn.call( event, "type" ) ? event.type : event,
-			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-		cur = tmp = elem = elem || document;
-
-		// Don't do events on text and comment nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-			return;
-		}
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf(".") >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-		ontype = type.indexOf(":") < 0 && "on" + type;
-
-		// Caller can pass in a jQuery.Event object, Object, or just an event type string
-		event = event[ jQuery.expando ] ?
-			event :
-			new jQuery.Event( type, typeof event === "object" && event );
-
-		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-		event.isTrigger = onlyHandlers ? 2 : 3;
-		event.namespace = namespaces.join(".");
-		event.namespace_re = event.namespace ?
-			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-			null;
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data == null ?
-			[ event ] :
-			jQuery.makeArray( data, [ event ] );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			if ( !rfocusMorph.test( bubbleType + type ) ) {
-				cur = cur.parentNode;
-			}
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push( cur );
-				tmp = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( tmp === (elem.ownerDocument || document) ) {
-				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-			}
-		}
-
-		// Fire handlers on the event path
-		i = 0;
-		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-			event.type = i > 1 ?
-				bubbleType :
-				special.bindType || type;
-
-			// jQuery handler
-			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-
-			// Native handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
-				event.result = handle.apply( cur, data );
-				if ( event.result === false ) {
-					event.preventDefault();
-				}
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the default action, do it now
-		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-				jQuery.acceptData( elem ) ) {
-
-				// Call a native DOM method on the target with the same name name as the event.
-				// Don't do default actions on window, that's where global variables be (#6170)
-				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
-
-					// Don't re-trigger an onFOO event when we call its FOO() method
-					tmp = elem[ ontype ];
-
-					if ( tmp ) {
-						elem[ ontype ] = null;
-					}
-
-					// Prevent re-triggering of the same event, since we already bubbled it above
-					jQuery.event.triggered = type;
-					elem[ type ]();
-					jQuery.event.triggered = undefined;
-
-					if ( tmp ) {
-						elem[ ontype ] = tmp;
-					}
-				}
-			}
-		}
-
-		return event.result;
-	},
-
-	dispatch: function( event ) {
-
-		// Make a writable jQuery.Event from the native event object
-		event = jQuery.event.fix( event );
-
-		var i, j, ret, matched, handleObj,
-			handlerQueue = [],
-			args = slice.call( arguments ),
-			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
-			special = jQuery.event.special[ event.type ] || {};
-
-		// Use the fix-ed jQuery.Event rather than the (read-only) native event
-		args[0] = event;
-		event.delegateTarget = this;
-
-		// Call the preDispatch hook for the mapped type, and let it bail if desired
-		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-			return;
-		}
-
-		// Determine handlers
-		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-		// Run delegates first; they may want to stop propagation beneath us
-		i = 0;
-		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-			event.currentTarget = matched.elem;
-
-			j = 0;
-			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-				// Triggered event must either 1) have no namespace, or
-				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
-				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-					event.handleObj = handleObj;
-					event.data = handleObj.data;
-
-					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-							.apply( matched.elem, args );
-
-					if ( ret !== undefined ) {
-						if ( (event.result = ret) === false ) {
-							event.preventDefault();
-							event.stopPropagation();
-						}
-					}
-				}
-			}
-		}
-
-		// Call the postDispatch hook for the mapped type
-		if ( special.postDispatch ) {
-			special.postDispatch.call( this, event );
-		}
-
-		return event.result;
-	},
-
-	handlers: function( event, handlers ) {
-		var i, matches, sel, handleObj,
-			handlerQueue = [],
-			delegateCount = handlers.delegateCount,
-			cur = event.target;
-
-		// Find delegate handlers
-		// Black-hole SVG <use> instance trees (#13180)
-		// Avoid non-left-click bubbling in Firefox (#3861)
-		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-			for ( ; cur !== this; cur = cur.parentNode || this ) {
-
-				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-				if ( cur.disabled !== true || event.type !== "click" ) {
-					matches = [];
-					for ( i = 0; i < delegateCount; i++ ) {
-						handleObj = handlers[ i ];
-
-						// Don't conflict with Object.prototype properties (#13203)
-						sel = handleObj.selector + " ";
-
-						if ( matches[ sel ] === undefined ) {
-							matches[ sel ] = handleObj.needsContext ?
-								jQuery( sel, this ).index( cur ) >= 0 :
-								jQuery.find( sel, this, null, [ cur ] ).length;
-						}
-						if ( matches[ sel ] ) {
-							matches.push( handleObj );
-						}
-					}
-					if ( matches.length ) {
-						handlerQueue.push({ elem: cur, handlers: matches });
-					}
-				}
-			}
-		}
-
-		// Add the remaining (directly-bound) handlers
-		if ( delegateCount < handlers.length ) {
-			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-		}
-
-		return handlerQueue;
-	},
-
-	// Includes some event props shared by KeyEvent and MouseEvent
-	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
-	fixHooks: {},
-
-	keyHooks: {
-		props: "char charCode key keyCode".split(" "),
-		filter: function( event, original ) {
-
-			// Add which for key events
-			if ( event.which == null ) {
-				event.which = original.charCode != null ? original.charCode : original.keyCode;
-			}
-
-			return event;
-		}
-	},
-
-	mouseHooks: {
-		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-		filter: function( event, original ) {
-			var eventDoc, doc, body,
-				button = original.button;
-
-			// Calculate pageX/Y if missing and clientX/Y available
-			if ( event.pageX == null && original.clientX != null ) {
-				eventDoc = event.target.ownerDocument || document;
-				doc = eventDoc.documentElement;
-				body = eventDoc.body;
-
-				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-			}
-
-			// Add which for click: 1 === left; 2 === middle; 3 === right
-			// Note: button is not normalized, so don't use it
-			if ( !event.which && button !== undefined ) {
-				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-			}
-
-			return event;
-		}
-	},
-
-	fix: function( event ) {
-		if ( event[ jQuery.expando ] ) {
-			return event;
-		}
-
-		// Create a writable copy of the event object and normalize some properties
-		var i, prop, copy,
-			type = event.type,
-			originalEvent = event,
-			fixHook = this.fixHooks[ type ];
-
-		if ( !fixHook ) {
-			this.fixHooks[ type ] = fixHook =
-				rmouseEvent.test( type ) ? this.mouseHooks :
-				rkeyEvent.test( type ) ? this.keyHooks :
-				{};
-		}
-		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-		event = new jQuery.Event( originalEvent );
-
-		i = copy.length;
-		while ( i-- ) {
-			prop = copy[ i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Support: Cordova 2.5 (WebKit) (#13255)
-		// All events should have a target; Cordova deviceready doesn't
-		if ( !event.target ) {
-			event.target = document;
-		}
-
-		// Support: Safari 6.0+, Chrome < 28
-		// Target should not be a text node (#504, #13143)
-		if ( event.target.nodeType === 3 ) {
-			event.target = event.target.parentNode;
-		}
-
-		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-	},
-
-	special: {
-		load: {
-			// Prevent triggered image.load events from bubbling to window.load
-			noBubble: true
-		},
-		focus: {
-			// Fire native event if possible so blur/focus sequence is correct
-			trigger: function() {
-				if ( this !== safeActiveElement() && this.focus ) {
-					this.focus();
-					return false;
-				}
-			},
-			delegateType: "focusin"
-		},
-		blur: {
-			trigger: function() {
-				if ( this === safeActiveElement() && this.blur ) {
-					this.blur();
-					return false;
-				}
-			},
-			delegateType: "focusout"
-		},
-		click: {
-			// For checkbox, fire native event so checked state will be right
-			trigger: function() {
-				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
-					this.click();
-					return false;
-				}
-			},
-
-			// For cross-browser consistency, don't fire native .click() on links
-			_default: function( event ) {
-				return jQuery.nodeName( event.target, "a" );
-			}
-		},
-
-		beforeunload: {
-			postDispatch: function( event ) {
-
-				// Support: Firefox 20+
-				// Firefox doesn't alert if the returnValue field is not set.
-				if ( event.result !== undefined && event.originalEvent ) {
-					event.originalEvent.returnValue = event.result;
-				}
-			}
-		}
-	},
-
-	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();
-		}
-	}
-};
-
-jQuery.removeEvent = function( elem, type, handle ) {
-	if ( elem.removeEventListener ) {
-		elem.removeEventListener( type, handle, false );
-	}
-};
-
-jQuery.Event = function( src, props ) {
-	// Allow instantiation without the 'new' keyword
-	if ( !(this instanceof jQuery.Event) ) {
-		return new jQuery.Event( src, props );
-	}
-
-	// Event object
-	if ( src && src.type ) {
-		this.originalEvent = src;
-		this.type = src.type;
-
-		// Events bubbling up the document may have been marked as prevented
-		// by a handler lower down the tree; reflect the correct value.
-		this.isDefaultPrevented = src.defaultPrevented ||
-				src.defaultPrevented === undefined &&
-				// Support: Android < 4.0
-				src.returnValue === false ?
-			returnTrue :
-			returnFalse;
-
-	// Event type
-	} else {
-		this.type = src;
-	}
-
-	// Put explicitly provided properties onto the event object
-	if ( props ) {
-		jQuery.extend( this, props );
-	}
-
-	// Create a timestamp if incoming event doesn't have one
-	this.timeStamp = src && src.timeStamp || jQuery.now();
-
-	// Mark it as fixed
-	this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse,
-
-	preventDefault: function() {
-		var e = this.originalEvent;
-
-		this.isDefaultPrevented = returnTrue;
-
-		if ( e && e.preventDefault ) {
-			e.preventDefault();
-		}
-	},
-	stopPropagation: function() {
-		var e = this.originalEvent;
-
-		this.isPropagationStopped = returnTrue;
-
-		if ( e && e.stopPropagation ) {
-			e.stopPropagation();
-		}
-	},
-	stopImmediatePropagation: function() {
-		var e = this.originalEvent;
-
-		this.isImmediatePropagationStopped = returnTrue;
-
-		if ( e && e.stopImmediatePropagation ) {
-			e.stopImmediatePropagation();
-		}
-
-		this.stopPropagation();
-	}
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-// Support: Chrome 15+
-jQuery.each({
-	mouseenter: "mouseover",
-	mouseleave: "mouseout",
-	pointerenter: "pointerover",
-	pointerleave: "pointerout"
-}, function( orig, fix ) {
-	jQuery.event.special[ orig ] = {
-		delegateType: fix,
-		bindType: fix,
-
-		handle: function( event ) {
-			var ret,
-				target = this,
-				related = event.relatedTarget,
-				handleObj = event.handleObj;
-
-			// For 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;
-		}
-	};
-});
-
-// Create "bubbling" focus and blur events
-// Support: Firefox, Chrome, Safari
-if ( !support.focusinBubbles ) {
-	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-		// Attach a single capturing handler on the document while someone wants focusin/focusout
-		var handler = function( event ) {
-				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-			};
-
-		jQuery.event.special[ fix ] = {
-			setup: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix );
-
-				if ( !attaches ) {
-					doc.addEventListener( orig, handler, true );
-				}
-				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
-			},
-			teardown: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix ) - 1;
-
-				if ( !attaches ) {
-					doc.removeEventListener( orig, handler, true );
-					data_priv.remove( doc, fix );
-
-				} else {
-					data_priv.access( doc, fix, attaches );
-				}
-			}
-		};
-	});
-}
-
-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" ) {
-				// ( 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 );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function() {
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-	triggerHandler: function( type, data ) {
-		var elem = this[0];
-		if ( elem ) {
-			return jQuery.event.trigger( type, data, elem, true );
-		}
-	}
-});
-
-
-var
-	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-	rtagName = /<([\w:]+)/,
-	rhtml = /<|&#?\w+;/,
-	rnoInnerhtml = /<(?:script|style|link)/i,
-	// checked="checked" or checked
-	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-	rscriptType = /^$|\/(?:java|ecma)script/i,
-	rscriptTypeMasked = /^true\/(.*)/,
-	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-	// We have to close these tags to support XHTML (#13200)
-	wrapMap = {
-
-		// Support: IE 9
-		option: [ 1, "<select multiple='multiple'>", "</select>" ],
-
-		thead: [ 1, "<table>", "</table>" ],
-		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
-		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
-		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
-		_default: [ 0, "", "" ]
-	};
-
-// Support: IE 9
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// Support: 1.x compatibility
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-	return jQuery.nodeName( elem, "table" ) &&
-		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
-		elem.getElementsByTagName("tbody")[0] ||
-			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-		elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
-	return elem;
-}
-function restoreScript( elem ) {
-	var match = rscriptTypeMasked.exec( elem.type );
-
-	if ( match ) {
-		elem.type = match[ 1 ];
-	} else {
-		elem.removeAttribute("type");
-	}
-
-	return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-	var i = 0,
-		l = elems.length;
-
-	for ( ; i < l; i++ ) {
-		data_priv.set(
-			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
-		);
-	}
-}
-
-function cloneCopyEvent( src, dest ) {
-	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
-
-	if ( dest.nodeType !== 1 ) {
-		return;
-	}
-
-	// 1. Copy private data: events, handlers, etc.
-	if ( data_priv.hasData( src ) ) {
-		pdataOld = data_priv.access( src );
-		pdataCur = data_priv.set( dest, pdataOld );
-		events = pdataOld.events;
-
-		if ( events ) {
-			delete pdataCur.handle;
-			pdataCur.events = {};
-
-			for ( type in events ) {
-				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-					jQuery.event.add( dest, type, events[ type ][ i ] );
-				}
-			}
-		}
-	}
-
-	// 2. Copy user data
-	if ( data_user.hasData( src ) ) {
-		udataOld = data_user.access( src );
-		udataCur = jQuery.extend( {}, udataOld );
-
-		data_user.set( dest, udataCur );
-	}
-}
-
-function getAll( context, tag ) {
-	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
-			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
-			[];
-
-	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-		jQuery.merge( [ context ], ret ) :
-		ret;
-}
-
-// Support: IE >= 9
-function fixInput( src, dest ) {
-	var nodeName = dest.nodeName.toLowerCase();
-
-	// Fails to persist the checked state of a cloned checkbox or radio button.
-	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
-		dest.checked = src.checked;
-
-	// Fails to return the selected option to the default selected state when cloning options
-	} else if ( nodeName === "input" || nodeName === "textarea" ) {
-		dest.defaultValue = src.defaultValue;
-	}
-}
-
-jQuery.extend({
-	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-		var i, l, srcElements, destElements,
-			clone = elem.cloneNode( true ),
-			inPage = jQuery.contains( elem.ownerDocument, elem );
-
-		// Support: IE >= 9
-		// Fix Cloning issues
-		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
-				!jQuery.isXMLDoc( elem ) ) {
-
-			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-			destElements = getAll( clone );
-			srcElements = getAll( elem );
-
-			for ( i = 0, l = srcElements.length; i < l; i++ ) {
-				fixInput( srcElements[ i ], destElements[ i ] );
-			}
-		}
-
-		// Copy the events from the original to the clone
-		if ( dataAndEvents ) {
-			if ( deepDataAndEvents ) {
-				srcElements = srcElements || getAll( elem );
-				destElements = destElements || getAll( clone );
-
-				for ( i = 0, l = srcElements.length; i < l; i++ ) {
-					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
-				}
-			} else {
-				cloneCopyEvent( elem, clone );
-			}
-		}
-
-		// Preserve script evaluation history
-		destElements = getAll( clone, "script" );
-		if ( destElements.length > 0 ) {
-			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-		}
-
-		// Return the cloned set
-		return clone;
-	},
-
-	buildFragment: function( elems, context, scripts, selection ) {
-		var elem, tmp, tag, wrap, contains, j,
-			fragment = context.createDocumentFragment(),
-			nodes = [],
-			i = 0,
-			l = elems.length;
-
-		for ( ; i < l; i++ ) {
-			elem = elems[ i ];
-
-			if ( elem || elem === 0 ) {
-
-				// Add nodes directly
-				if ( jQuery.type( elem ) === "object" ) {
-					// Support: QtWebKit
-					// jQuery.merge because push.apply(_, arraylike) throws
-					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-				// Convert non-html into a text node
-				} else if ( !rhtml.test( elem ) ) {
-					nodes.push( context.createTextNode( elem ) );
-
-				// Convert html into DOM nodes
-				} else {
-					tmp = tmp || fragment.appendChild( context.createElement("div") );
-
-					// Deserialize a standard representation
-					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
-					wrap = wrapMap[ tag ] || wrapMap._default;
-					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
-
-					// Descend through wrappers to the right content
-					j = wrap[ 0 ];
-					while ( j-- ) {
-						tmp = tmp.lastChild;
-					}
-
-					// Support: QtWebKit
-					// jQuery.merge because push.apply(_, arraylike) throws
-					jQuery.merge( nodes, tmp.childNodes );
-
-					// Remember the top-level container
-					tmp = fragment.firstChild;
-
-					// Fixes #12346
-					// Support: Webkit, IE
-					tmp.textContent = "";
-				}
-			}
-		}
-
-		// Remove wrapper from fragment
-		fragment.textContent = "";
-
-		i = 0;
-		while ( (elem = nodes[ i++ ]) ) {
-
-			// #4087 - If origin and destination elements are the same, and this is
-			// that element, do not do anything
-			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-				continue;
-			}
-
-			contains = jQuery.contains( elem.ownerDocument, elem );
-
-			// Append to fragment
-			tmp = getAll( fragment.appendChild( elem ), "script" );
-
-			// Preserve script evaluation history
-			if ( contains ) {
-				setGlobalEval( tmp );
-			}
-
-			// Capture executables
-			if ( scripts ) {
-				j = 0;
-				while ( (elem = tmp[ j++ ]) ) {
-					if ( rscriptType.test( elem.type || "" ) ) {
-						scripts.push( elem );
-					}
-				}
-			}
-		}
-
-		return fragment;
-	},
-
-	cleanData: function( elems ) {
-		var data, elem, type, key,
-			special = jQuery.event.special,
-			i = 0;
-
-		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
-			if ( jQuery.acceptData( elem ) ) {
-				key = elem[ data_priv.expando ];
-
-				if ( key && (data = data_priv.cache[ key ]) ) {
-					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 );
-							}
-						}
-					}
-					if ( data_priv.cache[ key ] ) {
-						// Discard any remaining `private` data
-						delete data_priv.cache[ key ];
-					}
-				}
-			}
-			// Discard any remaining `user` data
-			delete data_user.cache[ elem[ data_user.expando ] ];
-		}
-	}
-});
-
-jQuery.fn.extend({
-	text: function( value ) {
-		return access( this, function( value ) {
-			return value === undefined ?
-				jQuery.text( this ) :
-				this.empty().each(function() {
-					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-						this.textContent = value;
-					}
-				});
-		}, null, value, arguments.length );
-	},
-
-	append: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.appendChild( elem );
-			}
-		});
-	},
-
-	prepend: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.insertBefore( elem, target.firstChild );
-			}
-		});
-	},
-
-	before: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this );
-			}
-		});
-	},
-
-	after: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this.nextSibling );
-			}
-		});
-	},
-
-	remove: function( selector, keepData /* Internal Use Only */ ) {
-		var elem,
-			elems = selector ? jQuery.filter( selector, this ) : this,
-			i = 0;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-			if ( !keepData && elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem ) );
-			}
-
-			if ( elem.parentNode ) {
-				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-					setGlobalEval( getAll( elem, "script" ) );
-				}
-				elem.parentNode.removeChild( elem );
-			}
-		}
-
-		return this;
-	},
-
-	empty: function() {
-		var elem,
-			i = 0;
-
-		for ( ; (elem = this[i]) != null; i++ ) {
-			if ( elem.nodeType === 1 ) {
-
-				// Prevent memory leaks
-				jQuery.cleanData( getAll( elem, false ) );
-
-				// Remove any remaining nodes
-				elem.textContent = "";
-			}
-		}
-
-		return this;
-	},
-
-	clone: function( dataAndEvents, deepDataAndEvents ) {
-		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-		return this.map(function() {
-			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-		});
-	},
-
-	html: function( value ) {
-		return access( this, function( value ) {
-			var elem = this[ 0 ] || {},
-				i = 0,
-				l = this.length;
-
-			if ( value === undefined && elem.nodeType === 1 ) {
-				return elem.innerHTML;
-			}
-
-			// See if we can take a shortcut and just use innerHTML
-			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
-
-				value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-				try {
-					for ( ; i < l; i++ ) {
-						elem = this[ i ] || {};
-
-						// Remove element nodes and prevent memory leaks
-						if ( elem.nodeType === 1 ) {
-							jQuery.cleanData( getAll( elem, false ) );
-							elem.innerHTML = value;
-						}
-					}
-
-					elem = 0;
-
-				// If using innerHTML throws an exception, use the fallback method
-				} catch( e ) {}
-			}
-
-			if ( elem ) {
-				this.empty().append( value );
-			}
-		}, null, value, arguments.length );
-	},
-
-	replaceWith: function() {
-		var arg = arguments[ 0 ];
-
-		// Make the changes, replacing each context element with the new content
-		this.domManip( arguments, function( elem ) {
-			arg = this.parentNode;
-
-			jQuery.cleanData( getAll( this ) );
-
-			if ( arg ) {
-				arg.replaceChild( elem, this );
-			}
-		});
-
-		// Force removal if there was no new content (e.g., from empty arguments)
-		return arg && (arg.length || arg.nodeType) ? this : this.remove();
-	},
-
-	detach: function( selector ) {
-		return this.remove( selector, true );
-	},
-
-	domManip: function( args, callback ) {
-
-		// Flatten any nested arrays
-		args = concat.apply( [], args );
-
-		var fragment, first, scripts, hasScripts, node, doc,
-			i = 0,
-			l = this.length,
-			set = this,
-			iNoClone = l - 1,
-			value = args[ 0 ],
-			isFunction = jQuery.isFunction( value );
-
-		// We can't cloneNode fragments that contain checked, in WebKit
-		if ( isFunction ||
-				( l > 1 && typeof value === "string" &&
-					!support.checkClone && rchecked.test( value ) ) ) {
-			return this.each(function( index ) {
-				var self = set.eq( index );
-				if ( isFunction ) {
-					args[ 0 ] = value.call( this, index, self.html() );
-				}
-				self.domManip( args, callback );
-			});
-		}
-
-		if ( l ) {
-			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
-			first = fragment.firstChild;
-
-			if ( fragment.childNodes.length === 1 ) {
-				fragment = first;
-			}
-
-			if ( first ) {
-				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-				hasScripts = scripts.length;
-
-				// Use the original fragment for the last item instead of the first because it can end up
-				// being emptied incorrectly in certain situations (#8070).
-				for ( ; i < l; i++ ) {
-					node = fragment;
-
-					if ( i !== iNoClone ) {
-						node = jQuery.clone( node, true, true );
-
-						// Keep references to cloned scripts for later restoration
-						if ( hasScripts ) {
-							// Support: QtWebKit
-							// jQuery.merge because push.apply(_, arraylike) throws
-							jQuery.merge( scripts, getAll( node, "script" ) );
-						}
-					}
-
-					callback.call( this[ i ], node, i );
-				}
-
-				if ( hasScripts ) {
-					doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-					// Reenable scripts
-					jQuery.map( scripts, restoreScript );
-
-					// Evaluate executable scripts on first document insertion
-					for ( i = 0; i < hasScripts; i++ ) {
-						node = scripts[ i ];
-						if ( rscriptType.test( node.type || "" ) &&
-							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-							if ( node.src ) {
-								// Optional AJAX dependency, but won't run scripts if not present
-								if ( jQuery._evalUrl ) {
-									jQuery._evalUrl( node.src );
-								}
-							} else {
-								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return this;
-	}
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function( name, original ) {
-	jQuery.fn[ name ] = function( selector ) {
-		var elems,
-			ret = [],
-			insert = jQuery( selector ),
-			last = insert.length - 1,
-			i = 0;
-
-		for ( ; i <= last; i++ ) {
-			elems = i === last ? this : this.clone( true );
-			jQuery( insert[ i ] )[ original ]( elems );
-
-			// Support: QtWebKit
-			// .get() because push.apply(_, arraylike) throws
-			push.apply( ret, elems.get() );
-		}
-
-		return this.pushStack( ret );
-	};
-});
-
-
-var iframe,
-	elemdisplay = {};
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
-	var style,
-		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
-		// getDefaultComputedStyle might be reliably used only on attached element
-		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
-
-			// Use of this method is a temporary fix (more like optmization) until something better comes along,
-			// since it was removed from specification and supported only in FF
-			style.display : jQuery.css( elem[ 0 ], "display" );
-
-	// We don't have any data stored on the element,
-	// so use "detach" method as fast way to get rid of the element
-	elem.detach();
-
-	return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
-	var doc = document,
-		display = elemdisplay[ nodeName ];
-
-	if ( !display ) {
-		display = actualDisplay( nodeName, doc );
-
-		// If the simple way fails, read from inside an iframe
-		if ( display === "none" || !display ) {
-
-			// Use the already-created iframe if possible
-			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
-
-			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-			doc = iframe[ 0 ].contentDocument;
-
-			// Support: IE
-			doc.write();
-			doc.close();
-
-			display = actualDisplay( nodeName, doc );
-			iframe.detach();
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-	}
-
-	return display;
-}
-var rmargin = (/^margin/);
-
-var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-
-var getStyles = function( elem ) {
-		return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
-	};
-
-
-
-function curCSS( elem, name, computed ) {
-	var width, minWidth, maxWidth, ret,
-		style = elem.style;
-
-	computed = computed || getStyles( elem );
-
-	// Support: IE9
-	// getPropertyValue is only needed for .css('filter') in IE9, see #12537
-	if ( computed ) {
-		ret = computed.getPropertyValue( name ) || computed[ name ];
-	}
-
-	if ( computed ) {
-
-		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-			ret = jQuery.style( elem, name );
-		}
-
-		// Support: iOS < 6
-		// A tribute to the "awesome hack by Dean Edwards"
-		// iOS < 6 (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 ) ) {
-
-			// Remember the original values
-			width = style.width;
-			minWidth = style.minWidth;
-			maxWidth = style.maxWidth;
-
-			// Put in the new values to get a computed value out
-			style.minWidth = style.maxWidth = style.width = ret;
-			ret = computed.width;
-
-			// Revert the changed values
-			style.width = width;
-			style.minWidth = minWidth;
-			style.maxWidth = maxWidth;
-		}
-	}
-
-	return ret !== undefined ?
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		ret + "" :
-		ret;
-}
-
-
-function addGetHookIf( conditionFn, hookFn ) {
-	// Define the hook, we'll check on the first run if it's really needed.
-	return {
-		get: function() {
-			if ( conditionFn() ) {
-				// Hook not needed (or it's not possible to use it due to missing dependency),
-				// remove it.
-				// Since there are no other hooks for marginRight, remove the whole object.
-				delete this.get;
-				return;
-			}
-
-			// Hook needed; redefine it so that the support test is not executed again.
-
-			return (this.get = hookFn).apply( this, arguments );
-		}
-	};
-}
-
-
-(function() {
-	var pixelPositionVal, boxSizingReliableVal,
-		docElem = document.documentElement,
-		container = document.createElement( "div" ),
-		div = document.createElement( "div" );
-
-	if ( !div.style ) {
-		return;
-	}
-
-	div.style.backgroundClip = "content-box";
-	div.cloneNode( true ).style.backgroundClip = "";
-	support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
-		"position:absolute";
-	container.appendChild( div );
-
-	// Executing both pixelPosition & boxSizingReliable tests require only one layout
-	// so they're executed at the same time to save the second computation.
-	function computePixelPositionAndBoxSizingReliable() {
-		div.style.cssText =
-			// Support: Firefox<29, Android 2.3
-			// Vendor-prefix box-sizing
-			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
-			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
-			"border:1px;padding:1px;width:4px;position:absolute";
-		div.innerHTML = "";
-		docElem.appendChild( container );
-
-		var divStyle = window.getComputedStyle( div, null );
-		pixelPositionVal = divStyle.top !== "1%";
-		boxSizingReliableVal = divStyle.width === "4px";
-
-		docElem.removeChild( container );
-	}
-
-	// Support: node.js jsdom
-	// Don't assume that getComputedStyle is a property of the global object
-	if ( window.getComputedStyle ) {
-		jQuery.extend( support, {
-			pixelPosition: function() {
-				// This test is executed only once but we still do memoizing
-				// since we can use the boxSizingReliable pre-computing.
-				// No need to check if the test was already performed, though.
-				computePixelPositionAndBoxSizingReliable();
-				return pixelPositionVal;
-			},
-			boxSizingReliable: function() {
-				if ( boxSizingReliableVal == null ) {
-					computePixelPositionAndBoxSizingReliable();
-				}
-				return boxSizingReliableVal;
-			},
-			reliableMarginRight: function() {
-				// Support: Android 2.3
-				// Check if div with explicit width and no margin-right incorrectly
-				// gets computed margin-right based on width of container. (#3333)
-				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-				// This support function is only executed once so no memoizing is needed.
-				var ret,
-					marginDiv = div.appendChild( document.createElement( "div" ) );
-
-				// Reset CSS: box-sizing; display; margin; border; padding
-				marginDiv.style.cssText = div.style.cssText =
-					// Support: Firefox<29, Android 2.3
-					// Vendor-prefix box-sizing
-					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
-				marginDiv.style.marginRight = marginDiv.style.width = "0";
-				div.style.width = "1px";
-				docElem.appendChild( container );
-
-				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
-
-				docElem.removeChild( container );
-
-				return ret;
-			}
-		});
-	}
-})();
-
-
-// A method for quickly swapping in/out CSS properties to get correct calculations.
-jQuery.swap = function( elem, options, callback, args ) {
-	var ret, name,
-		old = {};
-
-	// Remember the old values, and insert the new ones
-	for ( name in options ) {
-		old[ name ] = elem.style[ name ];
-		elem.style[ name ] = options[ name ];
-	}
-
-	ret = callback.apply( elem, args || [] );
-
-	// Revert the old values
-	for ( name in options ) {
-		elem.style[ name ] = old[ name ];
-	}
-
-	return ret;
-};
-
-
-var
-	// 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]).+)/,
-	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
-	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
-
-	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-	cssNormalTransform = {
-		letterSpacing: "0",
-		fontWeight: "400"
-	},
-
-	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// 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[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 setPositiveNumber( elem, value, subtract ) {
-	var matches = rnumsplit.exec( value );
-	return matches ?
-		// Guard against undefined "subtract", e.g., when used as in cssHooks
-		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-		value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-	var i = extra === ( isBorderBox ? "border" : "content" ) ?
-		// If we already have the right measurement, avoid augmentation
-		4 :
-		// Otherwise initialize for horizontal or vertical properties
-		name === "width" ? 1 : 0,
-
-		val = 0;
-
-	for ( ; i < 4; i += 2 ) {
-		// both box models exclude margin, so add it if we want it
-		if ( extra === "margin" ) {
-			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-		}
-
-		if ( isBorderBox ) {
-			// border-box includes padding, so remove it if we want content
-			if ( extra === "content" ) {
-				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-			}
-
-			// at this point, extra isn't border nor margin, so remove border
-			if ( extra !== "margin" ) {
-				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		} else {
-			// at this point, extra isn't content, so add padding
-			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-			// at this point, extra isn't content nor padding, so add border
-			if ( extra !== "padding" ) {
-				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		}
-	}
-
-	return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-	// Start with offset property, which is equivalent to the border-box value
-	var valueIsBorderBox = true,
-		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-		styles = getStyles( elem ),
-		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-	// some non-html elements return undefined for offsetWidth, so check for null/undefined
-	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-	if ( val <= 0 || val == null ) {
-		// Fall back to computed then uncomputed css if necessary
-		val = curCSS( elem, name, styles );
-		if ( val < 0 || val == null ) {
-			val = elem.style[ name ];
-		}
-
-		// Computed unit is not pixels. Stop here and return.
-		if ( rnumnonpx.test(val) ) {
-			return val;
-		}
-
-		// 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 &&
-			( support.boxSizingReliable() || val === elem.style[ name ] );
-
-		// Normalize "", auto, and prepare for extra
-		val = parseFloat( val ) || 0;
-	}
-
-	// use the active box-sizing model to add/subtract irrelevant styles
-	return ( val +
-		augmentWidthOrHeight(
-			elem,
-			name,
-			extra || ( isBorderBox ? "border" : "content" ),
-			valueIsBorderBox,
-			styles
-		)
-	) + "px";
-}
-
-function showHide( elements, show ) {
-	var display, elem, hidden,
-		values = [],
-		index = 0,
-		length = elements.length;
-
-	for ( ; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-
-		values[ index ] = data_priv.get( elem, "olddisplay" );
-		display = elem.style.display;
-		if ( show ) {
-			// Reset the inline display of this element to learn if it is
-			// being hidden by cascaded rules or not
-			if ( !values[ index ] && display === "none" ) {
-				elem.style.display = "";
-			}
-
-			// Set elements which have been overridden with display: none
-			// in a stylesheet to whatever the default browser style is
-			// for such an element
-			if ( elem.style.display === "" && isHidden( elem ) ) {
-				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
-			}
-		} else {
-			hidden = isHidden( elem );
-
-			if ( display !== "none" || !hidden ) {
-				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-			}
-		}
-	}
-
-	// Set the display of most of the elements in a second loop
-	// to avoid the constant reflow
-	for ( index = 0; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-			elem.style.display = show ? values[ index ] || "" : "none";
-		}
-	}
-
-	return elements;
-}
-
-jQuery.extend({
-	// Add in style property hooks for overriding the default
-	// behavior of getting and setting a style property
-	cssHooks: {
-		opacity: {
-			get: function( elem, computed ) {
-				if ( computed ) {
-					// We should always get a number back from opacity
-					var ret = curCSS( elem, "opacity" );
-					return ret === "" ? "1" : ret;
-				}
-			}
-		}
-	},
-
-	// Don't automatically add "px" to these possibly-unitless properties
-	cssNumber: {
-		"columnCount": true,
-		"fillOpacity": true,
-		"flexGrow": true,
-		"flexShrink": true,
-		"fontWeight": true,
-		"lineHeight": true,
-		"opacity": true,
-		"order": true,
-		"orphans": true,
-		"widows": true,
-		"zIndex": true,
-		"zoom": true
-	},
-
-	// Add in properties whose names you wish to fix before
-	// setting or getting the value
-	cssProps: {
-		// normalize float css property
-		"float": "cssFloat"
-	},
-
-	// Get and set the style property on a DOM Node
-	style: function( elem, name, value, extra ) {
-		// Don't set styles on text and comment nodes
-		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-			return;
-		}
-
-		// Make sure that we're working with the right name
-		var ret, type, hooks,
-			origName = jQuery.camelCase( name ),
-			style = elem.style;
-
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( 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 null and NaN values aren't set. See: #7116
-			if ( value == null || value !== 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";
-			}
-
-			// Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
-			// but it would mean to define eight (for every problematic property) identical functions
-			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
-				style[ name ] = "inherit";
-			}
-
-			// If a hook was provided, use that value, otherwise just set the specified value
-			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-				style[ name ] = value;
-			}
-
-		} else {
-			// If a hook was provided get the non-computed value from there
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-				return ret;
-			}
-
-			// Otherwise just get the value from the style object
-			return style[ name ];
-		}
-	},
-
-	css: function( elem, name, extra, styles ) {
-		var val, num, hooks,
-			origName = jQuery.camelCase( name );
-
-		// Make sure that we're working with the right name
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( 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, styles );
-		}
-
-		//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 ( extra === "" || extra ) {
-			num = parseFloat( val );
-			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-		}
-		return val;
-	}
-});
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-	jQuery.cssHooks[ name ] = {
-		get: function( elem, computed, extra ) {
-			if ( computed ) {
-				// certain elements can have dimension info if we invisibly show them
-				// however, it must have a current display style that would benefit from this
-				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
-					jQuery.swap( elem, cssShow, function() {
-						return getWidthOrHeight( elem, name, extra );
-					}) :
-					getWidthOrHeight( elem, name, extra );
-			}
-		},
-
-		set: function( elem, value, extra ) {
-			var styles = extra && getStyles( elem );
-			return setPositiveNumber( elem, value, extra ?
-				augmentWidthOrHeight(
-					elem,
-					name,
-					extra,
-					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-					styles
-				) : 0
-			);
-		}
-	};
-});
-
-// Support: Android 2.3
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
-	function( elem, computed ) {
-		if ( 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" },
-				curCSS, [ elem, "marginRight" ] );
-		}
-	}
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-	margin: "",
-	padding: "",
-	border: "Width"
-}, function( prefix, suffix ) {
-	jQuery.cssHooks[ prefix + suffix ] = {
-		expand: function( value ) {
-			var i = 0,
-				expanded = {},
-
-				// assumes a single number if not a string
-				parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-			for ( ; i < 4; i++ ) {
-				expanded[ prefix + cssExpand[ i ] + suffix ] =
-					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-			}
-
-			return expanded;
-		}
-	};
-
-	if ( !rmargin.test( prefix ) ) {
-		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-	}
-});
-
-jQuery.fn.extend({
-	css: function( name, value ) {
-		return access( this, function( elem, name, value ) {
-			var styles, len,
-				map = {},
-				i = 0;
-
-			if ( jQuery.isArray( name ) ) {
-				styles = getStyles( elem );
-				len = name.length;
-
-				for ( ; i < len; i++ ) {
-					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-				}
-
-				return map;
-			}
-
-			return value !== undefined ?
-				jQuery.style( elem, name, value ) :
-				jQuery.css( elem, name );
-		}, name, value, arguments.length > 1 );
-	},
-	show: function() {
-		return showHide( this, true );
-	},
-	hide: function() {
-		return showHide( this );
-	},
-	toggle: function( state ) {
-		if ( typeof state === "boolean" ) {
-			return state ? this.show() : this.hide();
-		}
-
-		return this.each(function() {
-			if ( isHidden( this ) ) {
-				jQuery( this ).show();
-			} else {
-				jQuery( this ).hide();
-			}
-		});
-	}
-});
-
-
-function Tween( elem, options, prop, end, easing ) {
-	return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-	constructor: Tween,
-	init: function( elem, options, prop, end, easing, unit ) {
-		this.elem = elem;
-		this.prop = prop;
-		this.easing = easing || "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 an empty string as a 3rd 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, "" );
-			// 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;
-			}
-		}
-	}
-};
-
-// Support: IE9
-// Panic based approach to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-	set: function( tween ) {
-		if ( tween.elem.nodeType && tween.elem.parentNode ) {
-			tween.elem[ tween.prop ] = tween.now;
-		}
-	}
-};
-
-jQuery.easing = {
-	linear: function( p ) {
-		return p;
-	},
-	swing: function( p ) {
-		return 0.5 - Math.cos( p * Math.PI ) / 2;
-	}
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-
-
-
-var
-	fxNow, timerId,
-	rfxtypes = /^(?:toggle|show|hide)$/,
-	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
-	rrun = /queueHooks$/,
-	animationPrefilters = [ defaultPrefilter ],
-	tweeners = {
-		"*": [ function( prop, value ) {
-			var tween = this.createTween( prop, value ),
-				target = tween.cur(),
-				parts = rfxnum.exec( value ),
-				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-				// Starting value computation is required for potential unit mismatches
-				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-				scale = 1,
-				maxIterations = 20;
-
-			if ( start && start[ 3 ] !== unit ) {
-				// Trust units reported by jQuery.css
-				unit = unit || start[ 3 ];
-
-				// Make sure we update the tween properties later on
-				parts = parts || [];
-
-				// Iteratively approximate from a nonzero starting point
-				start = +target || 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 );
-			}
-
-			// Update tween properties
-			if ( parts ) {
-				start = tween.start = +start || +target || 0;
-				tween.unit = unit;
-				// If a +=/-= token was provided, we're doing a relative animation
-				tween.end = parts[ 1 ] ?
-					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-					+parts[ 2 ];
-			}
-
-			return tween;
-		} ]
-	};
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-	setTimeout(function() {
-		fxNow = undefined;
-	});
-	return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-	var which,
-		i = 0,
-		attrs = { height: type };
-
-	// if we include width, step value is 1 to do all cssExpand values,
-	// 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;
-}
-
-function createTween( value, prop, animation ) {
-	var tween,
-		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-		index = 0,
-		length = collection.length;
-	for ( ; index < length; index++ ) {
-		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-			// we're done with this property
-			return tween;
-		}
-	}
-}
-
-function defaultPrefilter( elem, props, opts ) {
-	/* jshint validthis: true */
-	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
-		anim = this,
-		orig = {},
-		style = elem.style,
-		hidden = elem.nodeType && isHidden( elem ),
-		dataShow = data_priv.get( elem, "fxshow" );
-
-	// handle queue: false promises
-	if ( !opts.queue ) {
-		hooks = jQuery._queueHooks( elem, "fx" );
-		if ( hooks.unqueued == null ) {
-			hooks.unqueued = 0;
-			oldfire = hooks.empty.fire;
-			hooks.empty.fire = function() {
-				if ( !hooks.unqueued ) {
-					oldfire();
-				}
-			};
-		}
-		hooks.unqueued++;
-
-		anim.always(function() {
-			// 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 IE9-10 do not
-		// change the overflow attribute when overflowX and
-		// overflowY are set to the same value
-		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-		// Set display property to inline-block for height/width
-		// animations on inline elements that are having width/height animated
-		display = jQuery.css( elem, "display" );
-
-		// Test default display if display is currently "none"
-		checkDisplay = display === "none" ?
-			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
-		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
-			style.display = "inline-block";
-		}
-	}
-
-	if ( opts.overflow ) {
-		style.overflow = "hidden";
-		anim.always(function() {
-			style.overflow = opts.overflow[ 0 ];
-			style.overflowX = opts.overflow[ 1 ];
-			style.overflowY = opts.overflow[ 2 ];
-		});
-	}
-
-	// show/hide pass
-	for ( prop in props ) {
-		value = props[ prop ];
-		if ( rfxtypes.exec( value ) ) {
-			delete props[ prop ];
-			toggle = toggle || value === "toggle";
-			if ( value === ( hidden ? "hide" : "show" ) ) {
-
-				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
-				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
-					hidden = true;
-				} else {
-					continue;
-				}
-			}
-			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
-		// Any non-fx value stops us from restoring the original display value
-		} else {
-			display = undefined;
-		}
-	}
-
-	if ( !jQuery.isEmptyObject( orig ) ) {
-		if ( dataShow ) {
-			if ( "hidden" in dataShow ) {
-				hidden = dataShow.hidden;
-			}
-		} else {
-			dataShow = data_priv.access( elem, "fxshow", {} );
-		}
-
-		// store state if its toggle - enables .stop().toggle() to "reverse"
-		if ( toggle ) {
-			dataShow.hidden = !hidden;
-		}
-		if ( hidden ) {
-			jQuery( elem ).show();
-		} else {
-			anim.done(function() {
-				jQuery( elem ).hide();
-			});
-		}
-		anim.done(function() {
-			var prop;
-
-			data_priv.remove( elem, "fxshow" );
-			for ( prop in orig ) {
-				jQuery.style( elem, prop, orig[ prop ] );
-			}
-		});
-		for ( prop in orig ) {
-			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-			if ( !( prop in dataShow ) ) {
-				dataShow[ prop ] = tween.start;
-				if ( hidden ) {
-					tween.end = tween.start;
-					tween.start = prop === "width" || prop === "height" ? 1 : 0;
-				}
-			}
-		}
-
-	// If this is a noop like .hide().hide(), restore an overwritten display value
-	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
-		style.display = display;
-	}
-}
-
-function propFilter( props, specialEasing ) {
-	var index, name, easing, value, hooks;
-
-	// camelCase, specialEasing and expand cssHook pass
-	for ( index in props ) {
-		name = jQuery.camelCase( index );
-		easing = specialEasing[ name ];
-		value = props[ index ];
-		if ( jQuery.isArray( value ) ) {
-			easing = value[ 1 ];
-			value = props[ index ] = value[ 0 ];
-		}
-
-		if ( index !== name ) {
-			props[ name ] = value;
-			delete props[ index ];
-		}
-
-		hooks = jQuery.cssHooks[ name ];
-		if ( hooks && "expand" in hooks ) {
-			value = hooks.expand( value );
-			delete props[ name ];
-
-			// not quite $.extend, this 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;
-		}
-	}
-}
-
-function Animation( elem, properties, options ) {
-	var result,
-		stopped,
-		index = 0,
-		length = animationPrefilters.length,
-		deferred = jQuery.Deferred().always( function() {
-			// don't match elem in the :animated selector
-			delete tick.elem;
-		}),
-		tick = function() {
-			if ( stopped ) {
-				return false;
-			}
-			var currentTime = fxNow || createFxNow(),
-				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-				// 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 ) {
-				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
-				animation.tweens.push( tween );
-				return tween;
-			},
-			stop: function( gotoEnd ) {
-				var index = 0,
-					// if we are going to the end, we want to run all the tweens
-					// otherwise we skip this part
-					length = gotoEnd ? animation.tweens.length : 0;
-				if ( stopped ) {
-					return this;
-				}
-				stopped = true;
-				for ( ; index < length ; index++ ) {
-					animation.tweens[ index ].run( 1 );
-				}
-
-				// resolve when we played the last frame
-				// otherwise, reject
-				if ( gotoEnd ) {
-					deferred.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;
-		}
-	}
-
-	jQuery.map( props, createTween, animation );
-
-	if ( jQuery.isFunction( animation.opts.start ) ) {
-		animation.opts.start.call( elem, animation );
-	}
-
-	jQuery.fx.timer(
-		jQuery.extend( tick, {
-			elem: elem,
-			anim: animation,
-			queue: animation.opts.queue
-		})
-	);
-
-	// attach callbacks from options
-	return animation.progress( animation.opts.progress )
-		.done( animation.opts.done, animation.opts.complete )
-		.fail( animation.opts.fail )
-		.always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-	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 );
-		}
-	}
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-		complete: fn || !fn && easing ||
-			jQuery.isFunction( speed ) && speed,
-		duration: speed,
-		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-	};
-
-	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-	// normalize opt.queue - true/undefined/null -> "fx"
-	if ( opt.queue == null || opt.queue === true ) {
-		opt.queue = "fx";
-	}
-
-	// Queueing
-	opt.old = opt.complete;
-
-	opt.complete = function() {
-		if ( jQuery.isFunction( opt.old ) ) {
-			opt.old.call( this );
-		}
-
-		if ( opt.queue ) {
-			jQuery.dequeue( this, opt.queue );
-		}
-	};
-
-	return opt;
-};
-
-jQuery.fn.extend({
-	fadeTo: function( speed, to, easing, callback ) {
-
-		// show any hidden elements after setting opacity to 0
-		return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-			// animate to the value specified
-			.end().animate({ opacity: to }, speed, easing, callback );
-	},
-	animate: function( prop, speed, easing, callback ) {
-		var empty = jQuery.isEmptyObject( prop ),
-			optall = jQuery.speed( speed, easing, callback ),
-			doAnimation = function() {
-				// Operate on a copy of prop so per-property easing won't be lost
-				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-				// Empty animations, or finishing resolves immediately
-				if ( empty || data_priv.get( this, "finish" ) ) {
-					anim.stop( true );
-				}
-			};
-			doAnimation.finish = doAnimation;
-
-		return empty || optall.queue === false ?
-			this.each( doAnimation ) :
-			this.queue( optall.queue, doAnimation );
-	},
-	stop: function( type, clearQueue, gotoEnd ) {
-		var stopQueue = function( hooks ) {
-			var stop = hooks.stop;
-			delete hooks.stop;
-			stop( gotoEnd );
-		};
-
-		if ( typeof type !== "string" ) {
-			gotoEnd = clearQueue;
-			clearQueue = type;
-			type = undefined;
-		}
-		if ( clearQueue && type !== false ) {
-			this.queue( type || "fx", [] );
-		}
-
-		return this.each(function() {
-			var dequeue = true,
-				index = type != null && type + "queueHooks",
-				timers = jQuery.timers,
-				data = data_priv.get( this );
-
-			if ( index ) {
-				if ( data[ index ] && data[ index ].stop ) {
-					stopQueue( data[ index ] );
-				}
-			} else {
-				for ( index in data ) {
-					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-						stopQueue( data[ index ] );
-					}
-				}
-			}
-
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-					timers[ index ].anim.stop( gotoEnd );
-					dequeue = false;
-					timers.splice( index, 1 );
-				}
-			}
-
-			// start the next in the queue if the last step wasn't forced
-			// timers currently will call their complete callbacks, which will dequeue
-			// but only if they were gotoEnd
-			if ( dequeue || !gotoEnd ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	finish: function( type ) {
-		if ( type !== false ) {
-			type = type || "fx";
-		}
-		return this.each(function() {
-			var index,
-				data = data_priv.get( this ),
-				queue = data[ type + "queue" ],
-				hooks = data[ type + "queueHooks" ],
-				timers = jQuery.timers,
-				length = queue ? queue.length : 0;
-
-			// enable finishing flag on private data
-			data.finish = true;
-
-			// empty the queue first
-			jQuery.queue( this, type, [] );
-
-			if ( hooks && hooks.stop ) {
-				hooks.stop.call( this, true );
-			}
-
-			// look for any active animations, and finish them
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-					timers[ index ].anim.stop( true );
-					timers.splice( index, 1 );
-				}
-			}
-
-			// look for any animations in the old queue and finish them
-			for ( index = 0; index < length; index++ ) {
-				if ( queue[ index ] && queue[ index ].finish ) {
-					queue[ index ].finish.call( this );
-				}
-			}
-
-			// turn off finishing flag
-			delete data.finish;
-		});
-	}
-});
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-	var cssFn = jQuery.fn[ name ];
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return speed == null || typeof speed === "boolean" ?
-			cssFn.apply( this, arguments ) :
-			this.animate( genFx( name, true ), speed, easing, callback );
-	};
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show"),
-	slideUp: genFx("hide"),
-	slideToggle: genFx("toggle"),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" },
-	fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return this.animate( props, speed, easing, callback );
-	};
-});
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
-	var timer,
-		i = 0,
-		timers = jQuery.timers;
-
-	fxNow = jQuery.now();
-
-	for ( ; i < timers.length; i++ ) {
-		timer = timers[ i ];
-		// Checks the timer has not already been removed
-		if ( !timer() && timers[ i ] === timer ) {
-			timers.splice( i--, 1 );
-		}
-	}
-
-	if ( !timers.length ) {
-		jQuery.fx.stop();
-	}
-	fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-	jQuery.timers.push( timer );
-	if ( timer() ) {
-		jQuery.fx.start();
-	} else {
-		jQuery.timers.pop();
-	}
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-	if ( !timerId ) {
-		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-	}
-};
-
-jQuery.fx.stop = function() {
-	clearInterval( timerId );
-	timerId = null;
-};
-
-jQuery.fx.speeds = {
-	slow: 600,
-	fast: 200,
-	// Default speed
-	_default: 400
-};
-
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
-	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-	type = type || "fx";
-
-	return this.queue( type, function( next, hooks ) {
-		var timeout = setTimeout( next, time );
-		hooks.stop = function() {
-			clearTimeout( timeout );
-		};
-	});
-};
-
-
-(function() {
-	var input = document.createElement( "input" ),
-		select = document.createElement( "select" ),
-		opt = select.appendChild( document.createElement( "option" ) );
-
-	input.type = "checkbox";
-
-	// Support: iOS 5.1, Android 4.x, Android 2.3
-	// Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
-	support.checkOn = input.value !== "";
-
-	// Must access the parent to make an option select properly
-	// Support: IE9, IE10
-	support.optSelected = opt.selected;
-
-	// 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;
-
-	// Check if an input maintains its value after becoming a radio
-	// Support: IE9, IE10
-	input = document.createElement( "input" );
-	input.value = "t";
-	input.type = "radio";
-	support.radioValue = input.value === "t";
-})();
-
-
-var nodeHook, boolHook,
-	attrHandle = jQuery.expr.attrHandle;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	}
-});
-
-jQuery.extend({
-	attr: function( elem, name, value ) {
-		var hooks, ret,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === strundefined ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] ||
-				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-
-			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, value + "" );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-			ret = jQuery.find.attr( elem, name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret == null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var name, propName,
-			i = 0,
-			attrNames = value && value.match( rnotwhite );
-
-		if ( attrNames && elem.nodeType === 1 ) {
-			while ( (name = attrNames[i++]) ) {
-				propName = jQuery.propFix[ name ] || name;
-
-				// Boolean attributes get special treatment (#10870)
-				if ( jQuery.expr.match.bool.test( name ) ) {
-					// Set corresponding property to false
-					elem[ propName ] = false;
-				}
-
-				elem.removeAttribute( name );
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				if ( !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 default in case type is set after value during creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		}
-	}
-});
-
-// Hooks for boolean attributes
-boolHook = {
-	set: function( elem, value, name ) {
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			elem.setAttribute( name, name );
-		}
-		return name;
-	}
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-	var getter = attrHandle[ name ] || jQuery.find.attr;
-
-	attrHandle[ name ] = function( elem, name, isXML ) {
-		var ret, handle;
-		if ( !isXML ) {
-			// Avoid an infinite loop by temporarily removing this function from the getter
-			handle = attrHandle[ name ];
-			attrHandle[ name ] = ret;
-			ret = getter( elem, name, isXML ) != null ?
-				name.toLowerCase() :
-				null;
-			attrHandle[ name ] = handle;
-		}
-		return ret;
-	};
-});
-
-
-
-
-var rfocusable = /^(?:input|select|textarea|button)$/i;
-
-jQuery.fn.extend({
-	prop: function( name, value ) {
-		return access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		return this.each(function() {
-			delete this[ jQuery.propFix[ name ] || name ];
-		});
-	}
-});
-
-jQuery.extend({
-	propFix: {
-		"for": "htmlFor",
-		"class": "className"
-	},
-
-	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 ) {
-			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-				ret :
-				( elem[ name ] = value );
-
-		} else {
-			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-				ret :
-				elem[ name ];
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
-					elem.tabIndex :
-					-1;
-			}
-		}
-	}
-});
-
-// Support: IE9+
-// Selectedness for an option in an optgroup can be inaccurate
-if ( !support.optSelected ) {
-	jQuery.propHooks.selected = {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-			if ( parent && parent.parentNode ) {
-				parent.parentNode.selectedIndex;
-			}
-			return null;
-		}
-	};
-}
-
-jQuery.each([
-	"tabIndex",
-	"readOnly",
-	"maxLength",
-	"cellSpacing",
-	"cellPadding",
-	"rowSpan",
-	"colSpan",
-	"useMap",
-	"frameBorder",
-	"contentEditable"
-], function() {
-	jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-
-
-
-var rclass = /[\t\r\n\f]/g;
-
-jQuery.fn.extend({
-	addClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call( this, j, this.className ) );
-			});
-		}
-
-		if ( proceed ) {
-			// The disjunction here is for better compressibility (see removeClass)
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					" "
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-							cur += clazz + " ";
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = jQuery.trim( cur );
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = arguments.length === 0 || typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call( this, j, this.className ) );
-			});
-		}
-		if ( proceed ) {
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				// This expression is here for better compressibility (see addClass)
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					""
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						// Remove *all* instances
-						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-							cur = cur.replace( " " + clazz + " ", " " );
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = value ? jQuery.trim( cur ) : "";
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value;
-
-		if ( typeof stateVal === "boolean" && type === "string" ) {
-			return stateVal ? this.addClass( value ) : this.removeClass( value );
-		}
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					classNames = value.match( rnotwhite ) || [];
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space separated list
-					if ( self.hasClass( className ) ) {
-						self.removeClass( className );
-					} else {
-						self.addClass( className );
-					}
-				}
-
-			// Toggle whole class name
-			} else if ( type === strundefined || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					data_priv.set( this, "__className__", this.className );
-				}
-
-				// If the element has a class name or if we're passed "false",
-				// then remove the whole classname (if there was one, the above saved it).
-				// Otherwise bring back whatever was previously saved (if anything),
-				// falling back to the empty string if nothing was stored.
-				this.className = this.className || value === false ? "" : data_priv.get( 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;
-	}
-});
-
-
-
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend({
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, jQuery( this ).val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-
-			} else if ( typeof val === "number" ) {
-				val += "";
-
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map( val, function( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				var val = jQuery.find.attr( elem, "value" );
-				return val != null ?
-					val :
-					// Support: IE10-11+
-					// option.text throws exceptions (#14686, #14858)
-					jQuery.trim( jQuery.text( elem ) );
-			}
-		},
-		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 ];
-
-					// IE6-9 doesn't update selected after form reset (#2551)
-					if ( ( option.selected || i === index ) &&
-							// Don't return options that are disabled or in a disabled optgroup
-							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
-							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var optionSet, option,
-					options = elem.options,
-					values = jQuery.makeArray( value ),
-					i = options.length;
-
-				while ( i-- ) {
-					option = options[ i ];
-					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
-						optionSet = true;
-					}
-				}
-
-				// force browsers to behave consistently when non-matching value is set
-				if ( !optionSet ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	}
-});
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	};
-	if ( !support.checkOn ) {
-		jQuery.valHooks[ this ].get = function( elem ) {
-			// Support: Webkit
-			// "" is returned instead of "on" if a value isn't specified
-			return elem.getAttribute("value") === null ? "on" : elem.value;
-		};
-	}
-});
-
-
-
-
-// Return jQuery for attributes-only inclusion
-
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-	// Handle event binding
-	jQuery.fn[ name ] = function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-	};
-});
-
-jQuery.fn.extend({
-	hover: function( fnOver, fnOut ) {
-		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-	},
-
-	bind: function( types, data, fn ) {
-		return this.on( types, null, data, fn );
-	},
-	unbind: function( types, fn ) {
-		return this.off( types, null, fn );
-	},
-
-	delegate: function( selector, types, data, fn ) {
-		return this.on( types, selector, data, fn );
-	},
-	undelegate: function( selector, types, fn ) {
-		// ( namespace ) or ( selector, types [, fn] )
-		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-	}
-});
-
-
-var nonce = jQuery.now();
-
-var rquery = (/\?/);
-
-
-
-// Support: Android 2.3
-// Workaround failure to string-cast null input
-jQuery.parseJSON = function( data ) {
-	return JSON.parse( data + "" );
-};
-
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
-	var xml, tmp;
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-
-	// Support: IE9
-	try {
-		tmp = new DOMParser();
-		xml = tmp.parseFromString( data, "text/xml" );
-	} catch ( e ) {
-		xml = undefined;
-	}
-
-	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
-	}
-	return xml;
-};
-
-
-var
-	// Document location
-	ajaxLocParts,
-	ajaxLocation,
-
-	rhash = /#.*$/,
-	rts = /([?&])_=[^&]*/,
-	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
-	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-	rnoContent = /^(?:GET|HEAD)$/,
-	rprotocol = /^\/\//,
-	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
-
-	/* Prefilters
-	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-	 * 2) These are called:
-	 *    - BEFORE asking for a transport
-	 *    - AFTER param serialization (s.data is a string if s.processData is true)
-	 * 3) key is the dataType
-	 * 4) the catchall symbol "*" can be used
-	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-	 */
-	prefilters = {},
-
-	/* Transports bindings
-	 * 1) key is the dataType
-	 * 2) the catchall symbol "*" can be used
-	 * 3) selection will start with transport dataType and THEN go to "*" if needed
-	 */
-	transports = {},
-
-	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-	allTypes = "*/".concat("*");
-
-// #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,
-			i = 0,
-			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
-		if ( jQuery.isFunction( func ) ) {
-			// For each dataType in the dataTypeExpression
-			while ( (dataType = dataTypes[i++]) ) {
-				// Prepend if requested
-				if ( dataType[0] === "+" ) {
-					dataType = dataType.slice( 1 ) || "*";
-					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-				// Otherwise append
-				} else {
-					(structure[ dataType ] = structure[ dataType ] || []).push( func );
-				}
-			}
-		}
-	};
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-	var inspected = {},
-		seekingTransport = ( structure === transports );
-
-	function inspect( dataType ) {
-		var selected;
-		inspected[ dataType ] = true;
-		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-				options.dataTypes.unshift( dataTypeOrTransport );
-				inspect( dataTypeOrTransport );
-				return false;
-			} else if ( seekingTransport ) {
-				return !( selected = dataTypeOrTransport );
-			}
-		});
-		return selected;
-	}
-
-	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-	var key, deep,
-		flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-	for ( key in src ) {
-		if ( src[ key ] !== undefined ) {
-			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-		}
-	}
-	if ( deep ) {
-		jQuery.extend( true, target, deep );
-	}
-
-	return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
-	var ct, type, finalDataType, firstDataType,
-		contents = s.contents,
-		dataTypes = s.dataTypes;
-
-	// Remove auto dataType and get content-type in the process
-	while ( dataTypes[ 0 ] === "*" ) {
-		dataTypes.shift();
-		if ( ct === undefined ) {
-			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-		}
-	}
-
-	// Check if we're dealing with a known content-type
-	if ( ct ) {
-		for ( type in contents ) {
-			if ( contents[ type ] && contents[ type ].test( ct ) ) {
-				dataTypes.unshift( type );
-				break;
-			}
-		}
-	}
-
-	// Check to see if we have a response for the expected dataType
-	if ( dataTypes[ 0 ] in responses ) {
-		finalDataType = dataTypes[ 0 ];
-	} else {
-		// Try convertible dataTypes
-		for ( type in responses ) {
-			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-				finalDataType = type;
-				break;
-			}
-			if ( !firstDataType ) {
-				firstDataType = type;
-			}
-		}
-		// Or just use first one
-		finalDataType = finalDataType || firstDataType;
-	}
-
-	// If we found a dataType
-	// We add the dataType to the list if needed
-	// and return the corresponding response
-	if ( finalDataType ) {
-		if ( finalDataType !== dataTypes[ 0 ] ) {
-			dataTypes.unshift( finalDataType );
-		}
-		return responses[ finalDataType ];
-	}
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-	var conv2, current, conv, tmp, prev,
-		converters = {},
-		// Work with a copy of dataTypes in case we need to modify it for conversion
-		dataTypes = s.dataTypes.slice();
-
-	// Create converters map with lowercased keys
-	if ( dataTypes[ 1 ] ) {
-		for ( conv in s.converters ) {
-			converters[ conv.toLowerCase() ] = s.converters[ conv ];
-		}
-	}
-
-	current = dataTypes.shift();
-
-	// Convert to each sequential dataType
-	while ( current ) {
-
-		if ( s.responseFields[ current ] ) {
-			jqXHR[ s.responseFields[ current ] ] = response;
-		}
-
-		// Apply the dataFilter if provided
-		if ( !prev && isSuccess && s.dataFilter ) {
-			response = s.dataFilter( response, s.dataType );
-		}
-
-		prev = current;
-		current = dataTypes.shift();
-
-		if ( current ) {
-
-		// There's only work to do if current dataType is non-auto
-			if ( current === "*" ) {
-
-				current = prev;
-
-			// Convert response if prev dataType is non-auto and differs from current
-			} else if ( prev !== "*" && prev !== current ) {
-
-				// Seek a direct converter
-				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-				// If none found, seek a pair
-				if ( !conv ) {
-					for ( conv2 in converters ) {
-
-						// If conv2 outputs current
-						tmp = conv2.split( " " );
-						if ( tmp[ 1 ] === current ) {
-
-							// If prev can be converted to accepted input
-							conv = converters[ prev + " " + tmp[ 0 ] ] ||
-								converters[ "* " + tmp[ 0 ] ];
-							if ( conv ) {
-								// Condense equivalence converters
-								if ( conv === true ) {
-									conv = converters[ conv2 ];
-
-								// Otherwise, insert the intermediate dataType
-								} else if ( converters[ conv2 ] !== true ) {
-									current = tmp[ 0 ];
-									dataTypes.unshift( tmp[ 1 ] );
-								}
-								break;
-							}
-						}
-					}
-				}
-
-				// Apply converter (if not an equivalence)
-				if ( conv !== true ) {
-
-					// Unless errors are allowed to bubble, catch and return them
-					if ( conv && s[ "throws" ] ) {
-						response = conv( response );
-					} else {
-						try {
-							response = conv( response );
-						} catch ( e ) {
-							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return { state: "success", data: response };
-}
-
-jQuery.extend({
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-	etag: {},
-
-	ajaxSettings: {
-		url: ajaxLocation,
-		type: "GET",
-		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-		global: true,
-		processData: true,
-		async: true,
-		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-		/*
-		timeout: 0,
-		data: null,
-		dataType: null,
-		username: null,
-		password: null,
-		cache: null,
-		throws: false,
-		traditional: false,
-		headers: {},
-		*/
-
-		accepts: {
-			"*": allTypes,
-			text: "text/plain",
-			html: "text/html",
-			xml: "application/xml, text/xml",
-			json: "application/json, text/javascript"
-		},
-
-		contents: {
-			xml: /xml/,
-			html: /html/,
-			json: /json/
-		},
-
-		responseFields: {
-			xml: "responseXML",
-			text: "responseText",
-			json: "responseJSON"
-		},
-
-		// Data converters
-		// Keys separate source (or catchall "*") and destination types with a single space
-		converters: {
-
-			// Convert anything to text
-			"* text": String,
-
-			// Text to html (true = no transformation)
-			"text html": true,
-
-			// Evaluate text as a json expression
-			"text json": jQuery.parseJSON,
-
-			// Parse text as xml
-			"text xml": jQuery.parseXML
-		},
-
-		// For options that shouldn't be deep extended:
-		// you can add your own custom options here if
-		// and when you create one that shouldn't be
-		// deep extended (see ajaxExtend)
-		flatOptions: {
-			url: true,
-			context: true
-		}
-	},
-
-	// Creates a full fledged settings object into target
-	// with both ajaxSettings and settings fields.
-	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function( target, settings ) {
-		return settings ?
-
-			// Building a settings object
-			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-			// Extending ajaxSettings
-			ajaxExtend( jQuery.ajaxSettings, target );
-	},
-
-	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-	ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-	// Main method
-	ajax: function( url, options ) {
-
-		// If url is an object, simulate pre-1.5 signature
-		if ( typeof url === "object" ) {
-			options = url;
-			url = undefined;
-		}
-
-		// Force options to be an object
-		options = options || {};
-
-		var transport,
-			// URL without anti-cache param
-			cacheURL,
-			// Response headers
-			responseHeadersString,
-			responseHeaders,
-			// timeout handle
-			timeoutTimer,
-			// 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 is callbackContext if it is a DOM node or jQuery collection
-			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-				jQuery( callbackContext ) :
-				jQuery.event,
-			// Deferreds
-			deferred = jQuery.Deferred(),
-			completeDeferred = jQuery.Callbacks("once memory"),
-			// Status-dependent callbacks
-			statusCode = s.statusCode || {},
-			// Headers (they are sent all at once)
-			requestHeaders = {},
-			requestHeadersNames = {},
-			// The jqXHR state
-			state = 0,
-			// Default abort message
-			strAbort = "canceled",
-			// Fake xhr
-			jqXHR = {
-				readyState: 0,
-
-				// Builds headers hashtable if needed
-				getResponseHeader: function( key ) {
-					var match;
-					if ( state === 2 ) {
-						if ( !responseHeaders ) {
-							responseHeaders = {};
-							while ( (match = rheaders.exec( responseHeadersString )) ) {
-								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-							}
-						}
-						match = responseHeaders[ key.toLowerCase() ];
-					}
-					return match == null ? null : match;
-				},
-
-				// Raw string
-				getAllResponseHeaders: function() {
-					return state === 2 ? responseHeadersString : null;
-				},
-
-				// Caches the header
-				setRequestHeader: function( name, value ) {
-					var lname = name.toLowerCase();
-					if ( !state ) {
-						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-						requestHeaders[ name ] = value;
-					}
-					return this;
-				},
-
-				// Overrides response content-type header
-				overrideMimeType: function( type ) {
-					if ( !state ) {
-						s.mimeType = type;
-					}
-					return this;
-				},
-
-				// Status-dependent callbacks
-				statusCode: function( map ) {
-					var code;
-					if ( map ) {
-						if ( state < 2 ) {
-							for ( code in map ) {
-								// Lazy-add the new callback in a way that preserves old ones
-								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-							}
-						} else {
-							// Execute the appropriate callbacks
-							jqXHR.always( map[ jqXHR.status ] );
-						}
-					}
-					return this;
-				},
-
-				// Cancel the request
-				abort: function( statusText ) {
-					var finalText = statusText || strAbort;
-					if ( transport ) {
-						transport.abort( finalText );
-					}
-					done( 0, finalText );
-					return this;
-				}
-			};
-
-		// Attach deferreds
-		deferred.promise( jqXHR ).complete = completeDeferred.add;
-		jqXHR.success = jqXHR.done;
-		jqXHR.error = jqXHR.fail;
-
-		// Remove hash character (#7531: and string promotion)
-		// Add protocol if not provided (prefilters might expect it)
-		// Handle falsy url in the settings object (#10093: consistency with old signature)
-		// We also use the url parameter if available
-		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
-			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-		// Alias method option to type as per ticket #12004
-		s.type = options.method || options.type || s.method || s.type;
-
-		// Extract dataTypes list
-		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
-		// A cross-domain request is in order when 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;
-
-		// Watch for a new set of requests
-		if ( fireGlobals && jQuery.active++ === 0 ) {
-			jQuery.event.trigger("ajaxStart");
-		}
-
-		// Uppercase the type
-		s.type = s.type.toUpperCase();
-
-		// Determine if request has content
-		s.hasContent = !rnoContent.test( s.type );
-
-		// Save the URL in case we're toying with the If-Modified-Since
-		// and/or If-None-Match header later on
-		cacheURL = s.url;
-
-		// More options handling for requests with no content
-		if ( !s.hasContent ) {
-
-			// If data is available, append data to url
-			if ( s.data ) {
-				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-				// #9682: remove data so that it's not used in an eventual retry
-				delete s.data;
-			}
-
-			// Add anti-cache in url if needed
-			if ( s.cache === false ) {
-				s.url = rts.test( cacheURL ) ?
-
-					// If there is already a '_' parameter, set its value
-					cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
-					// Otherwise add one to the end
-					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
-			}
-		}
-
-		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-		if ( s.ifModified ) {
-			if ( jQuery.lastModified[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-			}
-			if ( jQuery.etag[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-			}
-		}
-
-		// Set the correct header, if data is being sent
-		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-			jqXHR.setRequestHeader( "Content-Type", s.contentType );
-		}
-
-		// Set the Accepts header for the server, depending on the dataType
-		jqXHR.setRequestHeader(
-			"Accept",
-			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-				s.accepts[ "*" ]
-		);
-
-		// Check for headers option
-		for ( i in s.headers ) {
-			jqXHR.setRequestHeader( i, s.headers[ i ] );
-		}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-			// Abort if not done already and return
-			return jqXHR.abort();
-		}
-
-		// aborting is no longer a cancellation
-		strAbort = "abort";
-
-		// Install callbacks on deferreds
-		for ( i in { success: 1, error: 1, complete: 1 } ) {
-			jqXHR[ i ]( s[ i ] );
-		}
-
-		// Get transport
-		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-		// If no transport, we auto-abort
-		if ( !transport ) {
-			done( -1, "No Transport" );
-		} else {
-			jqXHR.readyState = 1;
-
-			// Send global event
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-			}
-			// 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;
-				}
-			}
-		}
-
-		// Callback for when everything is done
-		function done( status, nativeStatusText, responses, headers ) {
-			var isSuccess, success, error, response, modified,
-				statusText = nativeStatusText;
-
-			// Called once
-			if ( state === 2 ) {
-				return;
-			}
-
-			// State is "done" now
-			state = 2;
-
-			// Clear timeout if it exists
-			if ( timeoutTimer ) {
-				clearTimeout( timeoutTimer );
-			}
-
-			// Dereference transport for early garbage collection
-			// (no matter how long the jqXHR object will be used)
-			transport = undefined;
-
-			// Cache response headers
-			responseHeadersString = headers || "";
-
-			// Set readyState
-			jqXHR.readyState = status > 0 ? 4 : 0;
-
-			// Determine if successful
-			isSuccess = status >= 200 && status < 300 || status === 304;
-
-			// Get response data
-			if ( responses ) {
-				response = ajaxHandleResponses( s, jqXHR, responses );
-			}
-
-			// Convert no matter what (that way responseXXX fields are always set)
-			response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-			// If successful, handle type chaining
-			if ( isSuccess ) {
-
-				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-				if ( s.ifModified ) {
-					modified = jqXHR.getResponseHeader("Last-Modified");
-					if ( modified ) {
-						jQuery.lastModified[ cacheURL ] = modified;
-					}
-					modified = jqXHR.getResponseHeader("etag");
-					if ( modified ) {
-						jQuery.etag[ cacheURL ] = modified;
-					}
-				}
-
-				// if no content
-				if ( status === 204 || s.type === "HEAD" ) {
-					statusText = "nocontent";
-
-				// if not modified
-				} else if ( status === 304 ) {
-					statusText = "notmodified";
-
-				// If we have data, let's convert it
-				} else {
-					statusText = response.state;
-					success = response.data;
-					error = response.error;
-					isSuccess = !error;
-				}
-			} else {
-				// We extract error from statusText
-				// then normalize statusText and status for non-aborts
-				error = statusText;
-				if ( status || !statusText ) {
-					statusText = "error";
-					if ( status < 0 ) {
-						status = 0;
-					}
-				}
-			}
-
-			// Set data for the fake xhr object
-			jqXHR.status = status;
-			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-			// Success/Error
-			if ( isSuccess ) {
-				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-			} else {
-				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-			}
-
-			// Status-dependent callbacks
-			jqXHR.statusCode( statusCode );
-			statusCode = undefined;
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-					[ jqXHR, s, isSuccess ? success : error ] );
-			}
-
-			// Complete
-			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-				// Handle the global AJAX counter
-				if ( !( --jQuery.active ) ) {
-					jQuery.event.trigger("ajaxStop");
-				}
-			}
-		}
-
-		return jqXHR;
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get( url, data, callback, "json" );
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get( url, undefined, callback, "script" );
-	}
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-	jQuery[ method ] = function( url, data, callback, type ) {
-		// shift arguments if data argument was omitted
-		if ( jQuery.isFunction( data ) ) {
-			type = type || callback;
-			callback = data;
-			data = undefined;
-		}
-
-		return jQuery.ajax({
-			url: url,
-			type: method,
-			dataType: type,
-			data: data,
-			success: callback
-		});
-	};
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
-	jQuery.fn[ type ] = function( fn ) {
-		return this.on( type, fn );
-	};
-});
-
-
-jQuery._evalUrl = function( url ) {
-	return jQuery.ajax({
-		url: url,
-		type: "GET",
-		dataType: "script",
-		async: false,
-		global: false,
-		"throws": true
-	});
-};
-
-
-jQuery.fn.extend({
-	wrapAll: function( html ) {
-		var wrap;
-
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapAll( html.call(this, i) );
-			});
-		}
-
-		if ( this[ 0 ] ) {
-
-			// The elements to wrap the target around
-			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
-
-			if ( this[ 0 ].parentNode ) {
-				wrap.insertBefore( this[ 0 ] );
-			}
-
-			wrap.map(function() {
-				var elem = this;
-
-				while ( elem.firstElementChild ) {
-					elem = elem.firstElementChild;
-				}
-
-				return elem;
-			}).append( this );
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapInner( html.call(this, i) );
-			});
-		}
-
-		return this.each(function() {
-			var self = jQuery( this ),
-				contents = self.contents();
-
-			if ( contents.length ) {
-				contents.wrapAll( html );
-
-			} else {
-				self.append( html );
-			}
-		});
-	},
-
-	wrap: function( html ) {
-		var isFunction = jQuery.isFunction( html );
-
-		return this.each(function( i ) {
-			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-		});
-	},
-
-	unwrap: function() {
-		return this.parent().each(function() {
-			if ( !jQuery.nodeName( this, "body" ) ) {
-				jQuery( this ).replaceWith( this.childNodes );
-			}
-		}).end();
-	}
-});
-
-
-jQuery.expr.filters.hidden = function( elem ) {
-	// Support: Opera <= 12.12
-	// Opera reports offsetWidths and offsetHeights less than zero on some elements
-	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
-};
-jQuery.expr.filters.visible = function( elem ) {
-	return !jQuery.expr.filters.hidden( elem );
-};
-
-
-
-
-var r20 = /%20/g,
-	rbracket = /\[\]$/,
-	rCRLF = /\r?\n/g,
-	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-	rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
-	var name;
-
-	if ( jQuery.isArray( obj ) ) {
-		// Serialize array item.
-		jQuery.each( obj, function( i, v ) {
-			if ( traditional || rbracket.test( prefix ) ) {
-				// Treat each array item as a scalar.
-				add( prefix, v );
-
-			} else {
-				// Item is non-scalar (array or object), encode its numeric index.
-				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-			}
-		});
-
-	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
-		// Serialize object item.
-		for ( name in obj ) {
-			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-		}
-
-	} else {
-		// Serialize scalar item.
-		add( prefix, obj );
-	}
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
-	var prefix,
-		s = [],
-		add = function( key, value ) {
-			// If value is a function, invoke it and return its value
-			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-		};
-
-	// Set traditional to true for jQuery <= 1.3.2 behavior.
-	if ( traditional === undefined ) {
-		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-	}
-
-	// If an array was passed in, assume that it is an array of form elements.
-	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-		// Serialize the form elements
-		jQuery.each( a, function() {
-			add( this.name, this.value );
-		});
-
-	} else {
-		// If traditional, encode the "old" way (the way 1.3.2 or older
-		// did it), otherwise encode params recursively.
-		for ( prefix in a ) {
-			buildParams( prefix, a[ prefix ], traditional, add );
-		}
-	}
-
-	// Return the resulting serialization
-	return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend({
-	serialize: function() {
-		return jQuery.param( this.serializeArray() );
-	},
-	serializeArray: function() {
-		return this.map(function() {
-			// Can add propHook for "elements" to filter or add form elements
-			var elements = jQuery.prop( this, "elements" );
-			return elements ? jQuery.makeArray( elements ) : this;
-		})
-		.filter(function() {
-			var type = this.type;
-
-			// Use .is( ":disabled" ) so that fieldset[disabled] works
-			return this.name && !jQuery( this ).is( ":disabled" ) &&
-				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-				( this.checked || !rcheckableType.test( type ) );
-		})
-		.map(function( i, elem ) {
-			var val = jQuery( this ).val();
-
-			return val == null ?
-				null :
-				jQuery.isArray( val ) ?
-					jQuery.map( val, function( val ) {
-						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-					}) :
-					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-		}).get();
-	}
-});
-
-
-jQuery.ajaxSettings.xhr = function() {
-	try {
-		return new XMLHttpRequest();
-	} catch( e ) {}
-};
-
-var xhrId = 0,
-	xhrCallbacks = {},
-	xhrSuccessStatus = {
-		// file protocol always yields status code 0, assume 200
-		0: 200,
-		// Support: IE9
-		// #1450: sometimes IE returns 1223 when it should be 204
-		1223: 204
-	},
-	xhrSupported = jQuery.ajaxSettings.xhr();
-
-// Support: IE9
-// Open requests must be manually aborted on unload (#5280)
-if ( window.ActiveXObject ) {
-	jQuery( window ).on( "unload", function() {
-		for ( var key in xhrCallbacks ) {
-			xhrCallbacks[ key ]();
-		}
-	});
-}
-
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-support.ajax = xhrSupported = !!xhrSupported;
-
-jQuery.ajaxTransport(function( options ) {
-	var callback;
-
-	// Cross domain only allowed if supported through XMLHttpRequest
-	if ( support.cors || xhrSupported && !options.crossDomain ) {
-		return {
-			send: function( headers, complete ) {
-				var i,
-					xhr = options.xhr(),
-					id = ++xhrId;
-
-				xhr.open( options.type, options.url, options.async, options.username, options.password );
-
-				// Apply custom fields if provided
-				if ( options.xhrFields ) {
-					for ( i in options.xhrFields ) {
-						xhr[ i ] = options.xhrFields[ i ];
-					}
-				}
-
-				// Override mime type if needed
-				if ( options.mimeType && xhr.overrideMimeType ) {
-					xhr.overrideMimeType( options.mimeType );
-				}
-
-				// X-Requested-With header
-				// For cross-domain requests, seeing as conditions for a preflight are
-				// akin to a jigsaw puzzle, we simply never set it to be sure.
-				// (it can always be set on a per-request basis or even using ajaxSetup)
-				// For same-domain requests, won't change header if already provided.
-				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
-					headers["X-Requested-With"] = "XMLHttpRequest";
-				}
-
-				// Set headers
-				for ( i in headers ) {
-					xhr.setRequestHeader( i, headers[ i ] );
-				}
-
-				// Callback
-				callback = function( type ) {
-					return function() {
-						if ( callback ) {
-							delete xhrCallbacks[ id ];
-							callback = xhr.onload = xhr.onerror = null;
-
-							if ( type === "abort" ) {
-								xhr.abort();
-							} else if ( type === "error" ) {
-								complete(
-									// file: protocol always yields status 0; see #8605, #14207
-									xhr.status,
-									xhr.statusText
-								);
-							} else {
-								complete(
-									xhrSuccessStatus[ xhr.status ] || xhr.status,
-									xhr.statusText,
-									// Support: IE9
-									// Accessing binary-data responseText throws an exception
-									// (#11426)
-									typeof xhr.responseText === "string" ? {
-										text: xhr.responseText
-									} : undefined,
-									xhr.getAllResponseHeaders()
-								);
-							}
-						}
-					};
-				};
-
-				// Listen to events
-				xhr.onload = callback();
-				xhr.onerror = callback("error");
-
-				// Create the abort callback
-				callback = xhrCallbacks[ id ] = callback("abort");
-
-				try {
-					// Do send the request (this may raise an exception)
-					xhr.send( options.hasContent && options.data || null );
-				} catch ( e ) {
-					// #14683: Only rethrow if this hasn't been notified as an error yet
-					if ( callback ) {
-						throw e;
-					}
-				}
-			},
-
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
-	accepts: {
-		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-	},
-	contents: {
-		script: /(?:java|ecma)script/
-	},
-	converters: {
-		"text script": function( text ) {
-			jQuery.globalEval( text );
-			return text;
-		}
-	}
-});
-
-// Handle cache's special case and crossDomain
-jQuery.ajaxPrefilter( "script", function( s ) {
-	if ( s.cache === undefined ) {
-		s.cache = false;
-	}
-	if ( s.crossDomain ) {
-		s.type = "GET";
-	}
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function( s ) {
-	// This transport only deals with cross domain requests
-	if ( s.crossDomain ) {
-		var script, callback;
-		return {
-			send: function( _, complete ) {
-				script = jQuery("<script>").prop({
-					async: true,
-					charset: s.scriptCharset,
-					src: s.url
-				}).on(
-					"load error",
-					callback = function( evt ) {
-						script.remove();
-						callback = null;
-						if ( evt ) {
-							complete( evt.type === "error" ? 404 : 200, evt.type );
-						}
-					}
-				);
-				document.head.appendChild( script[ 0 ] );
-			},
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-
-
-
-var oldCallbacks = [],
-	rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-	jsonp: "callback",
-	jsonpCallback: function() {
-		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
-		this[ callback ] = true;
-		return callback;
-	}
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-	var callbackName, overwritten, responseContainer,
-		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-			"url" :
-			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-		);
-
-	// Handle iff the expected data type is "jsonp" or we have a parameter to set
-	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-		// Get callback name, remembering preexisting value associated with it
-		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-			s.jsonpCallback() :
-			s.jsonpCallback;
-
-		// Insert callback into url or form data
-		if ( jsonProp ) {
-			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-		} else if ( s.jsonp !== false ) {
-			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-		}
-
-		// Use data converter to retrieve json after script execution
-		s.converters["script json"] = function() {
-			if ( !responseContainer ) {
-				jQuery.error( callbackName + " was not called" );
-			}
-			return responseContainer[ 0 ];
-		};
-
-		// force json dataType
-		s.dataTypes[ 0 ] = "json";
-
-		// Install callback
-		overwritten = window[ callbackName ];
-		window[ callbackName ] = function() {
-			responseContainer = arguments;
-		};
-
-		// Clean-up function (fires after converters)
-		jqXHR.always(function() {
-			// 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";
-	}
-});
-
-
-
-
-// data: string of html
-// context (optional): If specified, the fragment will be created in this context, defaults to document
-// keepScripts (optional): If true, will include scripts passed in the html string
-jQuery.parseHTML = function( data, context, keepScripts ) {
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-	if ( typeof context === "boolean" ) {
-		keepScripts = context;
-		context = false;
-	}
-	context = context || document;
-
-	var parsed = rsingleTag.exec( data ),
-		scripts = !keepScripts && [];
-
-	// Single tag
-	if ( parsed ) {
-		return [ context.createElement( parsed[1] ) ];
-	}
-
-	parsed = jQuery.buildFragment( [ data ], context, scripts );
-
-	if ( scripts && scripts.length ) {
-		jQuery( scripts ).remove();
-	}
-
-	return jQuery.merge( [], parsed.childNodes );
-};
-
-
-// Keep a copy of the old load method
-var _load = jQuery.fn.load;
-
-/**
- * Load a url into a page
- */
-jQuery.fn.load = function( url, params, callback ) {
-	if ( typeof url !== "string" && _load ) {
-		return _load.apply( this, arguments );
-	}
-
-	var selector, type, response,
-		self = this,
-		off = url.indexOf(" ");
-
-	if ( off >= 0 ) {
-		selector = jQuery.trim( url.slice( off ) );
-		url = url.slice( 0, off );
-	}
-
-	// If it's a function
-	if ( jQuery.isFunction( params ) ) {
-
-		// We assume that it's the callback
-		callback = params;
-		params = undefined;
-
-	// Otherwise, build a param string
-	} else if ( params && typeof params === "object" ) {
-		type = "POST";
-	}
-
-	// If we have elements to modify, make the request
-	if ( self.length > 0 ) {
-		jQuery.ajax({
-			url: url,
-
-			// if "type" variable is undefined, then "GET" method will be used
-			type: type,
-			dataType: "html",
-			data: params
-		}).done(function( responseText ) {
-
-			// Save response for use in complete callback
-			response = arguments;
-
-			self.html( selector ?
-
-				// If a selector was specified, locate the right elements in a dummy div
-				// Exclude scripts to avoid IE 'Permission Denied' errors
-				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-				// Otherwise use the full result
-				responseText );
-
-		}).complete( callback && function( jqXHR, status ) {
-			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-		});
-	}
-
-	return this;
-};
-
-
-
-
-jQuery.expr.filters.animated = function( elem ) {
-	return jQuery.grep(jQuery.timers, function( fn ) {
-		return elem === fn.elem;
-	}).length;
-};
-
-
-
-
-var docElem = window.document.documentElement;
-
-/**
- * Gets a window from an element
- */
-function getWindow( elem ) {
-	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
-}
-
-jQuery.offset = {
-	setOffset: function( elem, options, i ) {
-		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
-			position = jQuery.css( elem, "position" ),
-			curElem = jQuery( elem ),
-			props = {};
-
-		// Set position first, in-case top/left are set even on static elem
-		if ( position === "static" ) {
-			elem.style.position = "relative";
-		}
-
-		curOffset = curElem.offset();
-		curCSSTop = jQuery.css( elem, "top" );
-		curCSSLeft = jQuery.css( elem, "left" );
-		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
-			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
-
-		// Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
-		if ( calculatePosition ) {
-			curPosition = curElem.position();
-			curTop = curPosition.top;
-			curLeft = curPosition.left;
-
-		} else {
-			curTop = parseFloat( curCSSTop ) || 0;
-			curLeft = parseFloat( curCSSLeft ) || 0;
-		}
-
-		if ( jQuery.isFunction( options ) ) {
-			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({
-	offset: function( options ) {
-		if ( arguments.length ) {
-			return options === undefined ?
-				this :
-				this.each(function( i ) {
-					jQuery.offset.setOffset( this, options, i );
-				});
-		}
-
-		var docElem, win,
-			elem = this[ 0 ],
-			box = { top: 0, left: 0 },
-			doc = elem && elem.ownerDocument;
-
-		if ( !doc ) {
-			return;
-		}
-
-		docElem = doc.documentElement;
-
-		// Make sure it's not a disconnected DOM node
-		if ( !jQuery.contains( docElem, elem ) ) {
-			return box;
-		}
-
-		// If we don't have gBCR, just use 0,0 rather than error
-		// BlackBerry 5, iOS 3 (original iPhone)
-		if ( typeof elem.getBoundingClientRect !== strundefined ) {
-			box = elem.getBoundingClientRect();
-		}
-		win = getWindow( doc );
-		return {
-			top: box.top + win.pageYOffset - docElem.clientTop,
-			left: box.left + win.pageXOffset - docElem.clientLeft
-		};
-	},
-
-	position: function() {
-		if ( !this[ 0 ] ) {
-			return;
-		}
-
-		var offsetParent, offset,
-			elem = this[ 0 ],
-			parentOffset = { top: 0, left: 0 };
-
-		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
-		if ( jQuery.css( elem, "position" ) === "fixed" ) {
-			// We assume that getBoundingClientRect is available when computed position is fixed
-			offset = elem.getBoundingClientRect();
-
-		} else {
-			// Get *real* offsetParent
-			offsetParent = this.offsetParent();
-
-			// Get correct offsets
-			offset = this.offset();
-			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-				parentOffset = offsetParent.offset();
-			}
-
-			// Add offsetParent borders
-			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-		}
-
-		// Subtract parent offsets and element margins
-		return {
-			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
-		};
-	},
-
-	offsetParent: function() {
-		return this.map(function() {
-			var offsetParent = this.offsetParent || docElem;
-
-			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
-				offsetParent = offsetParent.offsetParent;
-			}
-
-			return offsetParent || docElem;
-		});
-	}
-});
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
-	var top = "pageYOffset" === prop;
-
-	jQuery.fn[ method ] = function( val ) {
-		return access( this, function( elem, method, val ) {
-			var win = getWindow( elem );
-
-			if ( val === undefined ) {
-				return win ? win[ prop ] : elem[ method ];
-			}
-
-			if ( win ) {
-				win.scrollTo(
-					!top ? val : window.pageXOffset,
-					top ? val : window.pageYOffset
-				);
-
-			} else {
-				elem[ method ] = val;
-			}
-		}, method, val, arguments.length, null );
-	};
-});
-
-// Add the top/left cssHooks using jQuery.fn.position
-// 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
-jQuery.each( [ "top", "left" ], function( i, prop ) {
-	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
-		function( elem, computed ) {
-			if ( computed ) {
-				computed = curCSS( elem, prop );
-				// if curCSS returns percentage, fallback to offset
-				return rnumnonpx.test( computed ) ?
-					jQuery( elem ).position()[ prop ] + "px" :
-					computed;
-			}
-		}
-	);
-});
-
-
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-		// margin is only for outerHeight, outerWidth
-		jQuery.fn[ funcName ] = function( margin, value ) {
-			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-			return access( this, function( elem, type, value ) {
-				var doc;
-
-				if ( jQuery.isWindow( elem ) ) {
-					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-					// isn't a whole lot we can do. See pull request at this URL for discussion:
-					// https://github.com/jquery/jquery/pull/764
-					return elem.document.documentElement[ "client" + name ];
-				}
-
-				// Get document width or height
-				if ( elem.nodeType === 9 ) {
-					doc = elem.documentElement;
-
-					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
-					// whichever is greatest
-					return Math.max(
-						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-						elem.body[ "offset" + name ], doc[ "offset" + name ],
-						doc[ "client" + name ]
-					);
-				}
-
-				return value === undefined ?
-					// Get width or height on the element, requesting but not forcing parseFloat
-					jQuery.css( elem, type, extra ) :
-
-					// Set width or height on the element
-					jQuery.style( elem, type, value, extra );
-			}, type, chainable ? margin : undefined, chainable, null );
-		};
-	});
-});
-
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-	return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-
-
-
-// Register as a named AMD module, since jQuery can be concatenated with other
-// files that may use define, but not via a proper concatenation script that
-// understands anonymous AMD modules. A named AMD is safest and most robust
-// way to register. Lowercase jquery is used because AMD module names are
-// derived from file names, and jQuery is normally delivered in a lowercase
-// file name. Do this after creating the global so that if an AMD module wants
-// to call noConflict to hide this version of jQuery, it will work.
-
-// Note that for maximum portability, libraries that are not jQuery should
-// declare themselves as anonymous modules, and avoid setting a global if an
-// AMD loader is present. jQuery is a special case. For more information, see
-// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
-
-if ( typeof define === "function" && define.amd ) {
-	define( "jquery", [], function() {
-		return jQuery;
-	});
-}
-
-
-
-
-var
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$;
-
-jQuery.noConflict = function( deep ) {
-	if ( window.$ === jQuery ) {
-		window.$ = _$;
-	}
-
-	if ( deep && window.jQuery === jQuery ) {
-		window.jQuery = _jQuery;
-	}
-
-	return jQuery;
-};
-
-// Expose jQuery and $ identifiers, even in
-// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
-if ( typeof noGlobal === strundefined ) {
-	window.jQuery = window.$ = jQuery;
-}
-
-
-
-
-return jQuery;
-
-}));
-
-/**
- * @license AngularJS v1.3.11
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, document){
-  var _jQuery = window.jQuery.noConflict(true);
-
-/**
- * @description
- *
- * This object provides a utility for producing rich Error messages within
- * Angular. It can be called as follows:
- *
- * var exampleMinErr = minErr('example');
- * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
- *
- * The above creates an instance of minErr in the example namespace. The
- * resulting error will have a namespaced error code of example.one.  The
- * resulting error will replace {0} with the value of foo, and {1} with the
- * value of bar. The object is not restricted in the number of arguments it can
- * take.
- *
- * If fewer arguments are specified than necessary for interpolation, the extra
- * interpolation markers will be preserved in the final string.
- *
- * Since data will be parsed statically during a build step, some restrictions
- * are applied with respect to how minErr instances are created and called.
- * Instances should have names of the form namespaceMinErr for a minErr created
- * using minErr('namespace') . Error codes, namespaces and template strings
- * should all be static strings, not variables or general expressions.
- *
- * @param {string} module The namespace to use for the new minErr instance.
- * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
- *   error from returned function, for cases when a particular type of error is useful.
- * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
- */
-
-function minErr(module, ErrorConstructor) {
-  ErrorConstructor = ErrorConstructor || Error;
-  return function() {
-    var code = arguments[0],
-      prefix = '[' + (module ? module + ':' : '') + code + '] ',
-      template = arguments[1],
-      templateArgs = arguments,
-
-      message, i;
-
-    message = prefix + template.replace(/\{\d+\}/g, function(match) {
-      var index = +match.slice(1, -1), arg;
-
-      if (index + 2 < templateArgs.length) {
-        return toDebugString(templateArgs[index + 2]);
-      }
-      return match;
-    });
-
-    message = message + '\nhttp://errors.angularjs.org/1.3.11/' +
-      (module ? module + '/' : '') + code;
-    for (i = 2; i < arguments.length; i++) {
-      message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
-        encodeURIComponent(toDebugString(arguments[i]));
-    }
-    return new ErrorConstructor(message);
-  };
-}
-
-/* We need to tell jshint what variables are being exported */
-/* global angular: true,
-  msie: true,
-  jqLite: true,
-  jQuery: true,
-  slice: true,
-  splice: true,
-  push: true,
-  toString: true,
-  ngMinErr: true,
-  angularModule: true,
-  uid: true,
-  REGEX_STRING_REGEXP: true,
-  VALIDITY_STATE_PROPERTY: true,
-
-  lowercase: true,
-  uppercase: true,
-  manualLowercase: true,
-  manualUppercase: true,
-  nodeName_: true,
-  isArrayLike: true,
-  forEach: true,
-  sortedKeys: true,
-  forEachSorted: true,
-  reverseParams: true,
-  nextUid: true,
-  setHashKey: true,
-  extend: true,
-  int: true,
-  inherit: true,
-  noop: true,
-  identity: true,
-  valueFn: true,
-  isUndefined: true,
-  isDefined: true,
-  isObject: true,
-  isString: true,
-  isNumber: true,
-  isDate: true,
-  isArray: true,
-  isFunction: true,
-  isRegExp: true,
-  isWindow: true,
-  isScope: true,
-  isFile: true,
-  isFormData: true,
-  isBlob: true,
-  isBoolean: true,
-  isPromiseLike: true,
-  trim: true,
-  escapeForRegexp: true,
-  isElement: true,
-  makeMap: true,
-  includes: true,
-  arrayRemove: true,
-  copy: true,
-  shallowCopy: true,
-  equals: true,
-  csp: true,
-  concat: true,
-  sliceArgs: true,
-  bind: true,
-  toJsonReplacer: true,
-  toJson: true,
-  fromJson: true,
-  startingTag: true,
-  tryDecodeURIComponent: true,
-  parseKeyValue: true,
-  toKeyValue: true,
-  encodeUriSegment: true,
-  encodeUriQuery: true,
-  angularInit: true,
-  bootstrap: true,
-  getTestability: true,
-  snake_case: true,
-  bindJQuery: true,
-  assertArg: true,
-  assertArgFn: true,
-  assertNotHasOwnProperty: true,
-  getter: true,
-  getBlockNodes: true,
-  hasOwnProperty: true,
-  createMap: true,
-
-  NODE_TYPE_ELEMENT: true,
-  NODE_TYPE_TEXT: true,
-  NODE_TYPE_COMMENT: true,
-  NODE_TYPE_DOCUMENT: true,
-  NODE_TYPE_DOCUMENT_FRAGMENT: true,
-*/
-
-////////////////////////////////////
-
-/**
- * @ngdoc module
- * @name ng
- * @module ng
- * @description
- *
- * # ng (core module)
- * The ng module is loaded by default when an AngularJS application is started. The module itself
- * contains the essential components for an AngularJS application to function. The table below
- * lists a high level breakdown of each of the services/factories, filters, directives and testing
- * components available within this core module.
- *
- * <div doc-module-components="ng"></div>
- */
-
-var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
-
-// The name of a form control's ValidityState property.
-// This is used so that it's possible for internal tests to create mock ValidityStates.
-var VALIDITY_STATE_PROPERTY = 'validity';
-
-/**
- * @ngdoc function
- * @name angular.lowercase
- * @module ng
- * @kind function
- *
- * @description Converts the specified string to lowercase.
- * @param {string} string String to be converted to lowercase.
- * @returns {string} Lowercased string.
- */
-var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-/**
- * @ngdoc function
- * @name angular.uppercase
- * @module ng
- * @kind function
- *
- * @description Converts the specified string to uppercase.
- * @param {string} string String to be converted to uppercase.
- * @returns {string} Uppercased string.
- */
-var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
-
-
-var manualLowercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
-      : s;
-};
-var manualUppercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
-      : s;
-};
-
-
-// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
-// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
-// with correct but slower alternatives.
-if ('i' !== 'I'.toLowerCase()) {
-  lowercase = manualLowercase;
-  uppercase = manualUppercase;
-}
-
-
-var
-    msie,             // holds major version number for IE, or NaN if UA is not IE.
-    jqLite,           // delay binding since jQuery could be loaded after us.
-    jQuery,           // delay binding
-    slice             = [].slice,
-    splice            = [].splice,
-    push              = [].push,
-    toString          = Object.prototype.toString,
-    ngMinErr          = minErr('ng'),
-
-    /** @name angular */
-    angular           = window.angular || (window.angular = {}),
-    angularModule,
-    uid               = 0;
-
-/**
- * documentMode is an IE-only property
- * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
- */
-msie = document.documentMode;
-
-
-/**
- * @private
- * @param {*} obj
- * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
- *                   String ...)
- */
-function isArrayLike(obj) {
-  if (obj == null || isWindow(obj)) {
-    return false;
-  }
-
-  var length = obj.length;
-
-  if (obj.nodeType === NODE_TYPE_ELEMENT && length) {
-    return true;
-  }
-
-  return isString(obj) || isArray(obj) || length === 0 ||
-         typeof length === 'number' && length > 0 && (length - 1) in obj;
-}
-
-/**
- * @ngdoc function
- * @name angular.forEach
- * @module ng
- * @kind function
- *
- * @description
- * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
- * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
- * is the value of an object property or an array element, `key` is the object property key or
- * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
- *
- * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
- * using the `hasOwnProperty` method.
- *
- * Unlike ES262's
- * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
- * Providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
- * return the value provided.
- *
-   ```js
-     var values = {name: 'misko', gender: 'male'};
-     var log = [];
-     angular.forEach(values, function(value, key) {
-       this.push(key + ': ' + value);
-     }, log);
-     expect(log).toEqual(['name: misko', 'gender: male']);
-   ```
- *
- * @param {Object|Array} obj Object to iterate over.
- * @param {Function} iterator Iterator function.
- * @param {Object=} context Object to become context (`this`) for the iterator function.
- * @returns {Object|Array} Reference to `obj`.
- */
-
-function forEach(obj, iterator, context) {
-  var key, length;
-  if (obj) {
-    if (isFunction(obj)) {
-      for (key in obj) {
-        // Need to check if hasOwnProperty exists,
-        // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
-        if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    } else if (isArray(obj) || isArrayLike(obj)) {
-      var isPrimitive = typeof obj !== 'object';
-      for (key = 0, length = obj.length; key < length; key++) {
-        if (isPrimitive || key in obj) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    } else if (obj.forEach && obj.forEach !== forEach) {
-        obj.forEach(iterator, context, obj);
-    } else {
-      for (key in obj) {
-        if (obj.hasOwnProperty(key)) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    }
-  }
-  return obj;
-}
-
-function sortedKeys(obj) {
-  return Object.keys(obj).sort();
-}
-
-function forEachSorted(obj, iterator, context) {
-  var keys = sortedKeys(obj);
-  for (var i = 0; i < keys.length; i++) {
-    iterator.call(context, obj[keys[i]], keys[i]);
-  }
-  return keys;
-}
-
-
-/**
- * when using forEach the params are value, key, but it is often useful to have key, value.
- * @param {function(string, *)} iteratorFn
- * @returns {function(*, string)}
- */
-function reverseParams(iteratorFn) {
-  return function(value, key) { iteratorFn(key, value); };
-}
-
-/**
- * A consistent way of creating unique IDs in angular.
- *
- * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
- * we hit number precision issues in JavaScript.
- *
- * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
- *
- * @returns {number} an unique alpha-numeric string
- */
-function nextUid() {
-  return ++uid;
-}
-
-
-/**
- * Set or clear the hashkey for an object.
- * @param obj object
- * @param h the hashkey (!truthy to delete the hashkey)
- */
-function setHashKey(obj, h) {
-  if (h) {
-    obj.$$hashKey = h;
-  }
-  else {
-    delete obj.$$hashKey;
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.extend
- * @module ng
- * @kind function
- *
- * @description
- * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
- * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
- * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
- * Note: Keep in mind that `angular.extend` does not support recursive merge (deep copy).
- *
- * @param {Object} dst Destination object.
- * @param {...Object} src Source object(s).
- * @returns {Object} Reference to `dst`.
- */
-function extend(dst) {
-  var h = dst.$$hashKey;
-
-  for (var i = 1, ii = arguments.length; i < ii; i++) {
-    var obj = arguments[i];
-    if (obj) {
-      var keys = Object.keys(obj);
-      for (var j = 0, jj = keys.length; j < jj; j++) {
-        var key = keys[j];
-        dst[key] = obj[key];
-      }
-    }
-  }
-
-  setHashKey(dst, h);
-  return dst;
-}
-
-function int(str) {
-  return parseInt(str, 10);
-}
-
-
-function inherit(parent, extra) {
-  return extend(Object.create(parent), extra);
-}
-
-/**
- * @ngdoc function
- * @name angular.noop
- * @module ng
- * @kind function
- *
- * @description
- * A function that performs no operations. This function can be useful when writing code in the
- * functional style.
-   ```js
-     function foo(callback) {
-       var result = calculateResult();
-       (callback || angular.noop)(result);
-     }
-   ```
- */
-function noop() {}
-noop.$inject = [];
-
-
-/**
- * @ngdoc function
- * @name angular.identity
- * @module ng
- * @kind function
- *
- * @description
- * A function that returns its first argument. This function is useful when writing code in the
- * functional style.
- *
-   ```js
-     function transformer(transformationFn, value) {
-       return (transformationFn || angular.identity)(value);
-     };
-   ```
-  * @param {*} value to be returned.
-  * @returns {*} the value passed in.
- */
-function identity($) {return $;}
-identity.$inject = [];
-
-
-function valueFn(value) {return function() {return value;};}
-
-/**
- * @ngdoc function
- * @name angular.isUndefined
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is undefined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is undefined.
- */
-function isUndefined(value) {return typeof value === 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDefined
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is defined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is defined.
- */
-function isDefined(value) {return typeof value !== 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isObject
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
- * considered to be objects. Note that JavaScript arrays are objects.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Object` but not `null`.
- */
-function isObject(value) {
-  // http://jsperf.com/isobject4
-  return value !== null && typeof value === 'object';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isString
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `String`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `String`.
- */
-function isString(value) {return typeof value === 'string';}
-
-
-/**
- * @ngdoc function
- * @name angular.isNumber
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `Number`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Number`.
- */
-function isNumber(value) {return typeof value === 'number';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDate
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a value is a date.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Date`.
- */
-function isDate(value) {
-  return toString.call(value) === '[object Date]';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isArray
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is an `Array`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Array`.
- */
-var isArray = Array.isArray;
-
-/**
- * @ngdoc function
- * @name angular.isFunction
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `Function`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Function`.
- */
-function isFunction(value) {return typeof value === 'function';}
-
-
-/**
- * Determines if a value is a regular expression object.
- *
- * @private
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `RegExp`.
- */
-function isRegExp(value) {
-  return toString.call(value) === '[object RegExp]';
-}
-
-
-/**
- * Checks if `obj` is a window object.
- *
- * @private
- * @param {*} obj Object to check
- * @returns {boolean} True if `obj` is a window obj.
- */
-function isWindow(obj) {
-  return obj && obj.window === obj;
-}
-
-
-function isScope(obj) {
-  return obj && obj.$evalAsync && obj.$watch;
-}
-
-
-function isFile(obj) {
-  return toString.call(obj) === '[object File]';
-}
-
-
-function isFormData(obj) {
-  return toString.call(obj) === '[object FormData]';
-}
-
-
-function isBlob(obj) {
-  return toString.call(obj) === '[object Blob]';
-}
-
-
-function isBoolean(value) {
-  return typeof value === 'boolean';
-}
-
-
-function isPromiseLike(obj) {
-  return obj && isFunction(obj.then);
-}
-
-
-var trim = function(value) {
-  return isString(value) ? value.trim() : value;
-};
-
-// Copied from:
-// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
-// Prereq: s is a string.
-var escapeForRegexp = function(s) {
-  return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
-           replace(/\x08/g, '\\x08');
-};
-
-
-/**
- * @ngdoc function
- * @name angular.isElement
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a DOM element (or wrapped jQuery element).
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
- */
-function isElement(node) {
-  return !!(node &&
-    (node.nodeName  // we are a direct element
-    || (node.prop && node.attr && node.find)));  // we have an on and find method part of jQuery API
-}
-
-/**
- * @param str 'key1,key2,...'
- * @returns {object} in the form of {key1:true, key2:true, ...}
- */
-function makeMap(str) {
-  var obj = {}, items = str.split(","), i;
-  for (i = 0; i < items.length; i++)
-    obj[ items[i] ] = true;
-  return obj;
-}
-
-
-function nodeName_(element) {
-  return lowercase(element.nodeName || (element[0] && element[0].nodeName));
-}
-
-function includes(array, obj) {
-  return Array.prototype.indexOf.call(array, obj) != -1;
-}
-
-function arrayRemove(array, value) {
-  var index = array.indexOf(value);
-  if (index >= 0)
-    array.splice(index, 1);
-  return value;
-}
-
-/**
- * @ngdoc function
- * @name angular.copy
- * @module ng
- * @kind function
- *
- * @description
- * Creates a deep copy of `source`, which should be an object or an array.
- *
- * * If no destination is supplied, a copy of the object or array is created.
- * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
- *   are deleted and then all elements/properties from the source are copied to it.
- * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
- * * If `source` is identical to 'destination' an exception will be thrown.
- *
- * @param {*} source The source that will be used to make a copy.
- *                   Can be any type, including primitives, `null`, and `undefined`.
- * @param {(Object|Array)=} destination Destination into which the source is copied. If
- *     provided, must be of the same type as `source`.
- * @returns {*} The copy or updated `destination`, if `destination` was specified.
- *
- * @example
- <example module="copyExample">
- <file name="index.html">
- <div ng-controller="ExampleController">
- <form novalidate class="simple-form">
- Name: <input type="text" ng-model="user.name" /><br />
- E-mail: <input type="email" ng-model="user.email" /><br />
- Gender: <input type="radio" ng-model="user.gender" value="male" />male
- <input type="radio" ng-model="user.gender" value="female" />female<br />
- <button ng-click="reset()">RESET</button>
- <button ng-click="update(user)">SAVE</button>
- </form>
- <pre>form = {{user | json}}</pre>
- <pre>master = {{master | json}}</pre>
- </div>
-
- <script>
-  angular.module('copyExample', [])
-    .controller('ExampleController', ['$scope', function($scope) {
-      $scope.master= {};
-
-      $scope.update = function(user) {
-        // Example with 1 argument
-        $scope.master= angular.copy(user);
-      };
-
-      $scope.reset = function() {
-        // Example with 2 arguments
-        angular.copy($scope.master, $scope.user);
-      };
-
-      $scope.reset();
-    }]);
- </script>
- </file>
- </example>
- */
-function copy(source, destination, stackSource, stackDest) {
-  if (isWindow(source) || isScope(source)) {
-    throw ngMinErr('cpws',
-      "Can't copy! Making copies of Window or Scope instances is not supported.");
-  }
-
-  if (!destination) {
-    destination = source;
-    if (source) {
-      if (isArray(source)) {
-        destination = copy(source, [], stackSource, stackDest);
-      } else if (isDate(source)) {
-        destination = new Date(source.getTime());
-      } else if (isRegExp(source)) {
-        destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
-        destination.lastIndex = source.lastIndex;
-      } else if (isObject(source)) {
-        var emptyObject = Object.create(Object.getPrototypeOf(source));
-        destination = copy(source, emptyObject, stackSource, stackDest);
-      }
-    }
-  } else {
-    if (source === destination) throw ngMinErr('cpi',
-      "Can't copy! Source and destination are identical.");
-
-    stackSource = stackSource || [];
-    stackDest = stackDest || [];
-
-    if (isObject(source)) {
-      var index = stackSource.indexOf(source);
-      if (index !== -1) return stackDest[index];
-
-      stackSource.push(source);
-      stackDest.push(destination);
-    }
-
-    var result;
-    if (isArray(source)) {
-      destination.length = 0;
-      for (var i = 0; i < source.length; i++) {
-        result = copy(source[i], null, stackSource, stackDest);
-        if (isObject(source[i])) {
-          stackSource.push(source[i]);
-          stackDest.push(result);
-        }
-        destination.push(result);
-      }
-    } else {
-      var h = destination.$$hashKey;
-      if (isArray(destination)) {
-        destination.length = 0;
-      } else {
-        forEach(destination, function(value, key) {
-          delete destination[key];
-        });
-      }
-      for (var key in source) {
-        if (source.hasOwnProperty(key)) {
-          result = copy(source[key], null, stackSource, stackDest);
-          if (isObject(source[key])) {
-            stackSource.push(source[key]);
-            stackDest.push(result);
-          }
-          destination[key] = result;
-        }
-      }
-      setHashKey(destination,h);
-    }
-
-  }
-  return destination;
-}
-
-/**
- * Creates a shallow copy of an object, an array or a primitive.
- *
- * Assumes that there are no proto properties for objects.
- */
-function shallowCopy(src, dst) {
-  if (isArray(src)) {
-    dst = dst || [];
-
-    for (var i = 0, ii = src.length; i < ii; i++) {
-      dst[i] = src[i];
-    }
-  } else if (isObject(src)) {
-    dst = dst || {};
-
-    for (var key in src) {
-      if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-        dst[key] = src[key];
-      }
-    }
-  }
-
-  return dst || src;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.equals
- * @module ng
- * @kind function
- *
- * @description
- * Determines if two objects or two values are equivalent. Supports value types, regular
- * expressions, arrays and objects.
- *
- * Two objects or values are considered equivalent if at least one of the following is true:
- *
- * * Both objects or values pass `===` comparison.
- * * Both objects or values are of the same type and all of their properties are equal by
- *   comparing them with `angular.equals`.
- * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
- * * Both values represent the same regular expression (In JavaScript,
- *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
- *   representation matches).
- *
- * During a property comparison, properties of `function` type and properties with names
- * that begin with `$` are ignored.
- *
- * Scope and DOMWindow objects are being compared only by identify (`===`).
- *
- * @param {*} o1 Object or value to compare.
- * @param {*} o2 Object or value to compare.
- * @returns {boolean} True if arguments are equal.
- */
-function equals(o1, o2) {
-  if (o1 === o2) return true;
-  if (o1 === null || o2 === null) return false;
-  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
-  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
-  if (t1 == t2) {
-    if (t1 == 'object') {
-      if (isArray(o1)) {
-        if (!isArray(o2)) return false;
-        if ((length = o1.length) == o2.length) {
-          for (key = 0; key < length; key++) {
-            if (!equals(o1[key], o2[key])) return false;
-          }
-          return true;
-        }
-      } else if (isDate(o1)) {
-        if (!isDate(o2)) return false;
-        return equals(o1.getTime(), o2.getTime());
-      } else if (isRegExp(o1) && isRegExp(o2)) {
-        return o1.toString() == o2.toString();
-      } else {
-        if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
-        keySet = {};
-        for (key in o1) {
-          if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
-          if (!equals(o1[key], o2[key])) return false;
-          keySet[key] = true;
-        }
-        for (key in o2) {
-          if (!keySet.hasOwnProperty(key) &&
-              key.charAt(0) !== '$' &&
-              o2[key] !== undefined &&
-              !isFunction(o2[key])) return false;
-        }
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
-var csp = function() {
-  if (isDefined(csp.isActive_)) return csp.isActive_;
-
-  var active = !!(document.querySelector('[ng-csp]') ||
-                  document.querySelector('[data-ng-csp]'));
-
-  if (!active) {
-    try {
-      /* jshint -W031, -W054 */
-      new Function('');
-      /* jshint +W031, +W054 */
-    } catch (e) {
-      active = true;
-    }
-  }
-
-  return (csp.isActive_ = active);
-};
-
-
-
-function concat(array1, array2, index) {
-  return array1.concat(slice.call(array2, index));
-}
-
-function sliceArgs(args, startIndex) {
-  return slice.call(args, startIndex || 0);
-}
-
-
-/* jshint -W101 */
-/**
- * @ngdoc function
- * @name angular.bind
- * @module ng
- * @kind function
- *
- * @description
- * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
- * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
- * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
- * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
- *
- * @param {Object} self Context which `fn` should be evaluated in.
- * @param {function()} fn Function to be bound.
- * @param {...*} args Optional arguments to be prebound to the `fn` function call.
- * @returns {function()} Function that wraps the `fn` with all the specified bindings.
- */
-/* jshint +W101 */
-function bind(self, fn) {
-  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
-  if (isFunction(fn) && !(fn instanceof RegExp)) {
-    return curryArgs.length
-      ? function() {
-          return arguments.length
-            ? fn.apply(self, concat(curryArgs, arguments, 0))
-            : fn.apply(self, curryArgs);
-        }
-      : function() {
-          return arguments.length
-            ? fn.apply(self, arguments)
-            : fn.call(self);
-        };
-  } else {
-    // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
-    return fn;
-  }
-}
-
-
-function toJsonReplacer(key, value) {
-  var val = value;
-
-  if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
-    val = undefined;
-  } else if (isWindow(value)) {
-    val = '$WINDOW';
-  } else if (value &&  document === value) {
-    val = '$DOCUMENT';
-  } else if (isScope(value)) {
-    val = '$SCOPE';
-  }
-
-  return val;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.toJson
- * @module ng
- * @kind function
- *
- * @description
- * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
- * stripped since angular uses this notation internally.
- *
- * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
- * @param {boolean|number=} pretty If set to true, the JSON output will contain newlines and whitespace.
- *    If set to an integer, the JSON output will contain that many spaces per indentation (the default is 2).
- * @returns {string|undefined} JSON-ified string representing `obj`.
- */
-function toJson(obj, pretty) {
-  if (typeof obj === 'undefined') return undefined;
-  if (!isNumber(pretty)) {
-    pretty = pretty ? 2 : null;
-  }
-  return JSON.stringify(obj, toJsonReplacer, pretty);
-}
-
-
-/**
- * @ngdoc function
- * @name angular.fromJson
- * @module ng
- * @kind function
- *
- * @description
- * Deserializes a JSON string.
- *
- * @param {string} json JSON string to deserialize.
- * @returns {Object|Array|string|number} Deserialized JSON string.
- */
-function fromJson(json) {
-  return isString(json)
-      ? JSON.parse(json)
-      : json;
-}
-
-
-/**
- * @returns {string} Returns the string representation of the element.
- */
-function startingTag(element) {
-  element = jqLite(element).clone();
-  try {
-    // turns out IE does not let you set .html() on elements which
-    // are not allowed to have children. So we just ignore it.
-    element.empty();
-  } catch (e) {}
-  var elemHtml = jqLite('<div>').append(element).html();
-  try {
-    return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
-        elemHtml.
-          match(/^(<[^>]+>)/)[1].
-          replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
-  } catch (e) {
-    return lowercase(elemHtml);
-  }
-
-}
-
-
-/////////////////////////////////////////////////
-
-/**
- * Tries to decode the URI component without throwing an exception.
- *
- * @private
- * @param str value potential URI component to check.
- * @returns {boolean} True if `value` can be decoded
- * with the decodeURIComponent function.
- */
-function tryDecodeURIComponent(value) {
-  try {
-    return decodeURIComponent(value);
-  } catch (e) {
-    // Ignore any invalid uri component
-  }
-}
-
-
-/**
- * Parses an escaped url query string into key-value pairs.
- * @returns {Object.<string,boolean|Array>}
- */
-function parseKeyValue(/**string*/keyValue) {
-  var obj = {}, key_value, key;
-  forEach((keyValue || "").split('&'), function(keyValue) {
-    if (keyValue) {
-      key_value = keyValue.replace(/\+/g,'%20').split('=');
-      key = tryDecodeURIComponent(key_value[0]);
-      if (isDefined(key)) {
-        var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
-        if (!hasOwnProperty.call(obj, key)) {
-          obj[key] = val;
-        } else if (isArray(obj[key])) {
-          obj[key].push(val);
-        } else {
-          obj[key] = [obj[key],val];
-        }
-      }
-    }
-  });
-  return obj;
-}
-
-function toKeyValue(obj) {
-  var parts = [];
-  forEach(obj, function(value, key) {
-    if (isArray(value)) {
-      forEach(value, function(arrayValue) {
-        parts.push(encodeUriQuery(key, true) +
-                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
-      });
-    } else {
-    parts.push(encodeUriQuery(key, true) +
-               (value === true ? '' : '=' + encodeUriQuery(value, true)));
-    }
-  });
-  return parts.length ? parts.join('&') : '';
-}
-
-
-/**
- * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
- * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
- * segments:
- *    segment       = *pchar
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriSegment(val) {
-  return encodeUriQuery(val, true).
-             replace(/%26/gi, '&').
-             replace(/%3D/gi, '=').
-             replace(/%2B/gi, '+');
-}
-
-
-/**
- * This method is intended for encoding *key* or *value* parts of query component. We need a custom
- * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
- * encoded per http://tools.ietf.org/html/rfc3986:
- *    query       = *( pchar / "/" / "?" )
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriQuery(val, pctEncodeSpaces) {
-  return encodeURIComponent(val).
-             replace(/%40/gi, '@').
-             replace(/%3A/gi, ':').
-             replace(/%24/g, '$').
-             replace(/%2C/gi, ',').
-             replace(/%3B/gi, ';').
-             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
-}
-
-var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
-
-function getNgAttribute(element, ngAttr) {
-  var attr, i, ii = ngAttrPrefixes.length;
-  element = jqLite(element);
-  for (i = 0; i < ii; ++i) {
-    attr = ngAttrPrefixes[i] + ngAttr;
-    if (isString(attr = element.attr(attr))) {
-      return attr;
-    }
-  }
-  return null;
-}
-
-/**
- * @ngdoc directive
- * @name ngApp
- * @module ng
- *
- * @element ANY
- * @param {angular.Module} ngApp an optional application
- *   {@link angular.module module} name to load.
- * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
- *   created in "strict-di" mode. This means that the application will fail to invoke functions which
- *   do not use explicit function annotation (and are thus unsuitable for minification), as described
- *   in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
- *   tracking down the root of these bugs.
- *
- * @description
- *
- * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
- * designates the **root element** of the application and is typically placed near the root element
- * of the page - e.g. on the `<body>` or `<html>` tags.
- *
- * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
- * found in the document will be used to define the root element to auto-bootstrap as an
- * application. To run multiple applications in an HTML document you must manually bootstrap them using
- * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
- *
- * You can specify an **AngularJS module** to be used as the root module for the application.  This
- * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
- * should contain the application code needed or have dependencies on other modules that will
- * contain the code. See {@link angular.module} for more information.
- *
- * In the example below if the `ngApp` directive were not placed on the `html` element then the
- * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
- * would not be resolved to `3`.
- *
- * `ngApp` is the easiest, and most common way to bootstrap an application.
- *
- <example module="ngAppDemo">
-   <file name="index.html">
-   <div ng-controller="ngAppDemoController">
-     I can add: {{a}} + {{b}} =  {{ a+b }}
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
-     $scope.a = 1;
-     $scope.b = 2;
-   });
-   </file>
- </example>
- *
- * Using `ngStrictDi`, you would see something like this:
- *
- <example ng-app-included="true">
-   <file name="index.html">
-   <div ng-app="ngAppStrictDemo" ng-strict-di>
-       <div ng-controller="GoodController1">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style (see
-              script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="GoodController2">
-           Name: <input ng-model="name"><br />
-           Hello, {{name}}!
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style
-              (see script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="BadController">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>The controller could not be instantiated, due to relying
-              on automatic function annotations (which are disabled in
-              strict mode). As such, the content of this section is not
-              interpolated, and there should be an error in your web console.
-           </p>
-       </div>
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppStrictDemo', [])
-     // BadController will fail to instantiate, due to relying on automatic function annotation,
-     // rather than an explicit annotation
-     .controller('BadController', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     })
-     // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
-     // due to using explicit annotations using the array style and $inject property, respectively.
-     .controller('GoodController1', ['$scope', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     }])
-     .controller('GoodController2', GoodController2);
-     function GoodController2($scope) {
-       $scope.name = "World";
-     }
-     GoodController2.$inject = ['$scope'];
-   </file>
-   <file name="style.css">
-   div[ng-controller] {
-       margin-bottom: 1em;
-       -webkit-border-radius: 4px;
-       border-radius: 4px;
-       border: 1px solid;
-       padding: .5em;
-   }
-   div[ng-controller^=Good] {
-       border-color: #d6e9c6;
-       background-color: #dff0d8;
-       color: #3c763d;
-   }
-   div[ng-controller^=Bad] {
-       border-color: #ebccd1;
-       background-color: #f2dede;
-       color: #a94442;
-       margin-bottom: 0;
-   }
-   </file>
- </example>
- */
-function angularInit(element, bootstrap) {
-  var appElement,
-      module,
-      config = {};
-
-  // The element `element` has priority over any other element
-  forEach(ngAttrPrefixes, function(prefix) {
-    var name = prefix + 'app';
-
-    if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
-      appElement = element;
-      module = element.getAttribute(name);
-    }
-  });
-  forEach(ngAttrPrefixes, function(prefix) {
-    var name = prefix + 'app';
-    var candidate;
-
-    if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
-      appElement = candidate;
-      module = candidate.getAttribute(name);
-    }
-  });
-  if (appElement) {
-    config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
-    bootstrap(appElement, module ? [module] : [], config);
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.bootstrap
- * @module ng
- * @description
- * Use this function to manually start up angular application.
- *
- * See: {@link guide/bootstrap Bootstrap}
- *
- * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.
- * They must use {@link ng.directive:ngApp ngApp}.
- *
- * Angular will detect if it has been loaded into the browser more than once and only allow the
- * first loaded script to be bootstrapped and will report a warning to the browser console for
- * each of the subsequent scripts. This prevents strange results in applications, where otherwise
- * multiple instances of Angular try to work on the DOM.
- *
- * ```html
- * <!doctype html>
- * <html>
- * <body>
- * <div ng-controller="WelcomeController">
- *   {{greeting}}
- * </div>
- *
- * <script src="angular.js"></script>
- * <script>
- *   var app = angular.module('demo', [])
- *   .controller('WelcomeController', function($scope) {
- *       $scope.greeting = 'Welcome!';
- *   });
- *   angular.bootstrap(document, ['demo']);
- * </script>
- * </body>
- * </html>
- * ```
- *
- * @param {DOMElement} element DOM element which is the root of angular application.
- * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
- *     Each item in the array should be the name of a predefined module or a (DI annotated)
- *     function that will be invoked by the injector as a `config` block.
- *     See: {@link angular.module modules}
- * @param {Object=} config an object for defining configuration options for the application. The
- *     following keys are supported:
- *
- * * `strictDi` - disable automatic function annotation for the application. This is meant to
- *   assist in finding bugs which break minified code. Defaults to `false`.
- *
- * @returns {auto.$injector} Returns the newly created injector for this app.
- */
-function bootstrap(element, modules, config) {
-  if (!isObject(config)) config = {};
-  var defaultConfig = {
-    strictDi: false
-  };
-  config = extend(defaultConfig, config);
-  var doBootstrap = function() {
-    element = jqLite(element);
-
-    if (element.injector()) {
-      var tag = (element[0] === document) ? 'document' : startingTag(element);
-      //Encode angle brackets to prevent input from being sanitized to empty string #8683
-      throw ngMinErr(
-          'btstrpd',
-          "App Already Bootstrapped with this Element '{0}'",
-          tag.replace(/</,'&lt;').replace(/>/,'&gt;'));
-    }
-
-    modules = modules || [];
-    modules.unshift(['$provide', function($provide) {
-      $provide.value('$rootElement', element);
-    }]);
-
-    if (config.debugInfoEnabled) {
-      // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
-      modules.push(['$compileProvider', function($compileProvider) {
-        $compileProvider.debugInfoEnabled(true);
-      }]);
-    }
-
-    modules.unshift('ng');
-    var injector = createInjector(modules, config.strictDi);
-    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
-       function bootstrapApply(scope, element, compile, injector) {
-        scope.$apply(function() {
-          element.data('$injector', injector);
-          compile(element)(scope);
-        });
-      }]
-    );
-    return injector;
-  };
-
-  var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
-  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
-
-  if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
-    config.debugInfoEnabled = true;
-    window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
-  }
-
-  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
-    return doBootstrap();
-  }
-
-  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
-  angular.resumeBootstrap = function(extraModules) {
-    forEach(extraModules, function(module) {
-      modules.push(module);
-    });
-    doBootstrap();
-  };
-}
-
-/**
- * @ngdoc function
- * @name angular.reloadWithDebugInfo
- * @module ng
- * @description
- * Use this function to reload the current application with debug information turned on.
- * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
- *
- * See {@link ng.$compileProvider#debugInfoEnabled} for more.
- */
-function reloadWithDebugInfo() {
-  window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
-  window.location.reload();
-}
-
-/**
- * @name angular.getTestability
- * @module ng
- * @description
- * Get the testability service for the instance of Angular on the given
- * element.
- * @param {DOMElement} element DOM element which is the root of angular application.
- */
-function getTestability(rootElement) {
-  var injector = angular.element(rootElement).injector();
-  if (!injector) {
-    throw ngMinErr('test',
-      'no injector found for element argument to getTestability');
-  }
-  return injector.get('$$testability');
-}
-
-var SNAKE_CASE_REGEXP = /[A-Z]/g;
-function snake_case(name, separator) {
-  separator = separator || '_';
-  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
-    return (pos ? separator : '') + letter.toLowerCase();
-  });
-}
-
-var bindJQueryFired = false;
-var skipDestroyOnNextJQueryCleanData;
-function bindJQuery() {
-  var originalCleanData;
-
-  if (bindJQueryFired) {
-    return;
-  }
-
-  // bind to jQuery if present;
-  jQuery = window.jQuery;
-  // Use jQuery if it exists with proper functionality, otherwise default to us.
-  // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
-  // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
-  // versions. It will not work for sure with jQuery <1.7, though.
-  if (jQuery && jQuery.fn.on) {
-    jqLite = jQuery;
-    extend(jQuery.fn, {
-      scope: JQLitePrototype.scope,
-      isolateScope: JQLitePrototype.isolateScope,
-      controller: JQLitePrototype.controller,
-      injector: JQLitePrototype.injector,
-      inheritedData: JQLitePrototype.inheritedData
-    });
-
-    // All nodes removed from the DOM via various jQuery APIs like .remove()
-    // are passed through jQuery.cleanData. Monkey-patch this method to fire
-    // the $destroy event on all removed nodes.
-    originalCleanData = jQuery.cleanData;
-    jQuery.cleanData = function(elems) {
-      var events;
-      if (!skipDestroyOnNextJQueryCleanData) {
-        for (var i = 0, elem; (elem = elems[i]) != null; i++) {
-          events = jQuery._data(elem, "events");
-          if (events && events.$destroy) {
-            jQuery(elem).triggerHandler('$destroy');
-          }
-        }
-      } else {
-        skipDestroyOnNextJQueryCleanData = false;
-      }
-      originalCleanData(elems);
-    };
-  } else {
-    jqLite = JQLite;
-  }
-
-  angular.element = jqLite;
-
-  // Prevent double-proxying.
-  bindJQueryFired = true;
-}
-
-/**
- * throw error if the argument is falsy.
- */
-function assertArg(arg, name, reason) {
-  if (!arg) {
-    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
-  }
-  return arg;
-}
-
-function assertArgFn(arg, name, acceptArrayAnnotation) {
-  if (acceptArrayAnnotation && isArray(arg)) {
-      arg = arg[arg.length - 1];
-  }
-
-  assertArg(isFunction(arg), name, 'not a function, got ' +
-      (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
-  return arg;
-}
-
-/**
- * throw error if the name given is hasOwnProperty
- * @param  {String} name    the name to test
- * @param  {String} context the context in which the name is used, such as module or directive
- */
-function assertNotHasOwnProperty(name, context) {
-  if (name === 'hasOwnProperty') {
-    throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
-  }
-}
-
-/**
- * Return the value accessible from the object by path. Any undefined traversals are ignored
- * @param {Object} obj starting object
- * @param {String} path path to traverse
- * @param {boolean} [bindFnToScope=true]
- * @returns {Object} value as accessible by path
- */
-//TODO(misko): this function needs to be removed
-function getter(obj, path, bindFnToScope) {
-  if (!path) return obj;
-  var keys = path.split('.');
-  var key;
-  var lastInstance = obj;
-  var len = keys.length;
-
-  for (var i = 0; i < len; i++) {
-    key = keys[i];
-    if (obj) {
-      obj = (lastInstance = obj)[key];
-    }
-  }
-  if (!bindFnToScope && isFunction(obj)) {
-    return bind(lastInstance, obj);
-  }
-  return obj;
-}
-
-/**
- * Return the DOM siblings between the first and last node in the given array.
- * @param {Array} array like object
- * @returns {jqLite} jqLite collection containing the nodes
- */
-function getBlockNodes(nodes) {
-  // TODO(perf): just check if all items in `nodes` are siblings and if they are return the original
-  //             collection, otherwise update the original collection.
-  var node = nodes[0];
-  var endNode = nodes[nodes.length - 1];
-  var blockNodes = [node];
-
-  do {
-    node = node.nextSibling;
-    if (!node) break;
-    blockNodes.push(node);
-  } while (node !== endNode);
-
-  return jqLite(blockNodes);
-}
-
-
-/**
- * Creates a new object without a prototype. This object is useful for lookup without having to
- * guard against prototypically inherited properties via hasOwnProperty.
- *
- * Related micro-benchmarks:
- * - http://jsperf.com/object-create2
- * - http://jsperf.com/proto-map-lookup/2
- * - http://jsperf.com/for-in-vs-object-keys2
- *
- * @returns {Object}
- */
-function createMap() {
-  return Object.create(null);
-}
-
-var NODE_TYPE_ELEMENT = 1;
-var NODE_TYPE_TEXT = 3;
-var NODE_TYPE_COMMENT = 8;
-var NODE_TYPE_DOCUMENT = 9;
-var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
-
-/**
- * @ngdoc type
- * @name angular.Module
- * @module ng
- * @description
- *
- * Interface for configuring angular {@link angular.module modules}.
- */
-
-function setupModuleLoader(window) {
-
-  var $injectorMinErr = minErr('$injector');
-  var ngMinErr = minErr('ng');
-
-  function ensure(obj, name, factory) {
-    return obj[name] || (obj[name] = factory());
-  }
-
-  var angular = ensure(window, 'angular', Object);
-
-  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
-  angular.$$minErr = angular.$$minErr || minErr;
-
-  return ensure(angular, 'module', function() {
-    /** @type {Object.<string, angular.Module>} */
-    var modules = {};
-
-    /**
-     * @ngdoc function
-     * @name angular.module
-     * @module ng
-     * @description
-     *
-     * The `angular.module` is a global place for creating, registering and retrieving Angular
-     * modules.
-     * All modules (angular core or 3rd party) that should be available to an application must be
-     * registered using this mechanism.
-     *
-     * When passed two or more arguments, a new module is created.  If passed only one argument, an
-     * existing module (the name passed as the first argument to `module`) is retrieved.
-     *
-     *
-     * # Module
-     *
-     * A module is a collection of services, directives, controllers, filters, and configuration information.
-     * `angular.module` is used to configure the {@link auto.$injector $injector}.
-     *
-     * ```js
-     * // Create a new module
-     * var myModule = angular.module('myModule', []);
-     *
-     * // register a new service
-     * myModule.value('appName', 'MyCoolApp');
-     *
-     * // configure existing services inside initialization blocks.
-     * myModule.config(['$locationProvider', function($locationProvider) {
-     *   // Configure existing providers
-     *   $locationProvider.hashPrefix('!');
-     * }]);
-     * ```
-     *
-     * Then you can create an injector and load your modules like this:
-     *
-     * ```js
-     * var injector = angular.injector(['ng', 'myModule'])
-     * ```
-     *
-     * However it's more likely that you'll just use
-     * {@link ng.directive:ngApp ngApp} or
-     * {@link angular.bootstrap} to simplify this process for you.
-     *
-     * @param {!string} name The name of the module to create or retrieve.
-     * @param {!Array.<string>=} requires If specified then new module is being created. If
-     *        unspecified then the module is being retrieved for further configuration.
-     * @param {Function=} configFn Optional configuration function for the module. Same as
-     *        {@link angular.Module#config Module#config()}.
-     * @returns {module} new module with the {@link angular.Module} api.
-     */
-    return function module(name, requires, configFn) {
-      var assertNotHasOwnProperty = function(name, context) {
-        if (name === 'hasOwnProperty') {
-          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
-        }
-      };
-
-      assertNotHasOwnProperty(name, 'module');
-      if (requires && modules.hasOwnProperty(name)) {
-        modules[name] = null;
-      }
-      return ensure(modules, name, function() {
-        if (!requires) {
-          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
-             "the module name or forgot to load it. If registering a module ensure that you " +
-             "specify the dependencies as the second argument.", name);
-        }
-
-        /** @type {!Array.<Array.<*>>} */
-        var invokeQueue = [];
-
-        /** @type {!Array.<Function>} */
-        var configBlocks = [];
-
-        /** @type {!Array.<Function>} */
-        var runBlocks = [];
-
-        var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
-
-        /** @type {angular.Module} */
-        var moduleInstance = {
-          // Private state
-          _invokeQueue: invokeQueue,
-          _configBlocks: configBlocks,
-          _runBlocks: runBlocks,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#requires
-           * @module ng
-           *
-           * @description
-           * Holds the list of modules which the injector will load before the current module is
-           * loaded.
-           */
-          requires: requires,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#name
-           * @module ng
-           *
-           * @description
-           * Name of the module.
-           */
-          name: name,
-
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#provider
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerType Construction function for creating new instance of the
-           *                                service.
-           * @description
-           * See {@link auto.$provide#provider $provide.provider()}.
-           */
-          provider: invokeLater('$provide', 'provider'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#factory
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerFunction Function for creating new instance of the service.
-           * @description
-           * See {@link auto.$provide#factory $provide.factory()}.
-           */
-          factory: invokeLater('$provide', 'factory'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#service
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} constructor A constructor function that will be instantiated.
-           * @description
-           * See {@link auto.$provide#service $provide.service()}.
-           */
-          service: invokeLater('$provide', 'service'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#value
-           * @module ng
-           * @param {string} name service name
-           * @param {*} object Service instance object.
-           * @description
-           * See {@link auto.$provide#value $provide.value()}.
-           */
-          value: invokeLater('$provide', 'value'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#constant
-           * @module ng
-           * @param {string} name constant name
-           * @param {*} object Constant value.
-           * @description
-           * Because the constant are fixed, they get applied before other provide methods.
-           * See {@link auto.$provide#constant $provide.constant()}.
-           */
-          constant: invokeLater('$provide', 'constant', 'unshift'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#animation
-           * @module ng
-           * @param {string} name animation name
-           * @param {Function} animationFactory Factory function for creating new instance of an
-           *                                    animation.
-           * @description
-           *
-           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
-           *
-           *
-           * Defines an animation hook that can be later used with
-           * {@link ngAnimate.$animate $animate} service and directives that use this service.
-           *
-           * ```js
-           * module.animation('.animation-name', function($inject1, $inject2) {
-           *   return {
-           *     eventName : function(element, done) {
-           *       //code to run the animation
-           *       //once complete, then run done()
-           *       return function cancellationFunction(element) {
-           *         //code to cancel the animation
-           *       }
-           *     }
-           *   }
-           * })
-           * ```
-           *
-           * See {@link ng.$animateProvider#register $animateProvider.register()} and
-           * {@link ngAnimate ngAnimate module} for more information.
-           */
-          animation: invokeLater('$animateProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#filter
-           * @module ng
-           * @param {string} name Filter name.
-           * @param {Function} filterFactory Factory function for creating new instance of filter.
-           * @description
-           * See {@link ng.$filterProvider#register $filterProvider.register()}.
-           */
-          filter: invokeLater('$filterProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#controller
-           * @module ng
-           * @param {string|Object} name Controller name, or an object map of controllers where the
-           *    keys are the names and the values are the constructors.
-           * @param {Function} constructor Controller constructor function.
-           * @description
-           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
-           */
-          controller: invokeLater('$controllerProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#directive
-           * @module ng
-           * @param {string|Object} name Directive name, or an object map of directives where the
-           *    keys are the names and the values are the factories.
-           * @param {Function} directiveFactory Factory function for creating new instance of
-           * directives.
-           * @description
-           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
-           */
-          directive: invokeLater('$compileProvider', 'directive'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#config
-           * @module ng
-           * @param {Function} configFn Execute this function on module load. Useful for service
-           *    configuration.
-           * @description
-           * Use this method to register work which needs to be performed on module loading.
-           * For more about how to configure services, see
-           * {@link providers#provider-recipe Provider Recipe}.
-           */
-          config: config,
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#run
-           * @module ng
-           * @param {Function} initializationFn Execute this function after injector creation.
-           *    Useful for application initialization.
-           * @description
-           * Use this method to register work which should be performed when the injector is done
-           * loading all modules.
-           */
-          run: function(block) {
-            runBlocks.push(block);
-            return this;
-          }
-        };
-
-        if (configFn) {
-          config(configFn);
-        }
-
-        return moduleInstance;
-
-        /**
-         * @param {string} provider
-         * @param {string} method
-         * @param {String=} insertMethod
-         * @returns {angular.Module}
-         */
-        function invokeLater(provider, method, insertMethod, queue) {
-          if (!queue) queue = invokeQueue;
-          return function() {
-            queue[insertMethod || 'push']([provider, method, arguments]);
-            return moduleInstance;
-          };
-        }
-      });
-    };
-  });
-
-}
-
-/* global: toDebugString: true */
-
-function serializeObject(obj) {
-  var seen = [];
-
-  return JSON.stringify(obj, function(key, val) {
-    val = toJsonReplacer(key, val);
-    if (isObject(val)) {
-
-      if (seen.indexOf(val) >= 0) return '<<already seen>>';
-
-      seen.push(val);
-    }
-    return val;
-  });
-}
-
-function toDebugString(obj) {
-  if (typeof obj === 'function') {
-    return obj.toString().replace(/ \{[\s\S]*$/, '');
-  } else if (typeof obj === 'undefined') {
-    return 'undefined';
-  } else if (typeof obj !== 'string') {
-    return serializeObject(obj);
-  }
-  return obj;
-}
-
-/* global angularModule: true,
-  version: true,
-
-  $LocaleProvider,
-  $CompileProvider,
-
-  htmlAnchorDirective,
-  inputDirective,
-  inputDirective,
-  formDirective,
-  scriptDirective,
-  selectDirective,
-  styleDirective,
-  optionDirective,
-  ngBindDirective,
-  ngBindHtmlDirective,
-  ngBindTemplateDirective,
-  ngClassDirective,
-  ngClassEvenDirective,
-  ngClassOddDirective,
-  ngCspDirective,
-  ngCloakDirective,
-  ngControllerDirective,
-  ngFormDirective,
-  ngHideDirective,
-  ngIfDirective,
-  ngIncludeDirective,
-  ngIncludeFillContentDirective,
-  ngInitDirective,
-  ngNonBindableDirective,
-  ngPluralizeDirective,
-  ngRepeatDirective,
-  ngShowDirective,
-  ngStyleDirective,
-  ngSwitchDirective,
-  ngSwitchWhenDirective,
-  ngSwitchDefaultDirective,
-  ngOptionsDirective,
-  ngTranscludeDirective,
-  ngModelDirective,
-  ngListDirective,
-  ngChangeDirective,
-  patternDirective,
-  patternDirective,
-  requiredDirective,
-  requiredDirective,
-  minlengthDirective,
-  minlengthDirective,
-  maxlengthDirective,
-  maxlengthDirective,
-  ngValueDirective,
-  ngModelOptionsDirective,
-  ngAttributeAliasDirectives,
-  ngEventDirectives,
-
-  $AnchorScrollProvider,
-  $AnimateProvider,
-  $BrowserProvider,
-  $CacheFactoryProvider,
-  $ControllerProvider,
-  $DocumentProvider,
-  $ExceptionHandlerProvider,
-  $FilterProvider,
-  $InterpolateProvider,
-  $IntervalProvider,
-  $HttpProvider,
-  $HttpBackendProvider,
-  $LocationProvider,
-  $LogProvider,
-  $ParseProvider,
-  $RootScopeProvider,
-  $QProvider,
-  $$QProvider,
-  $$SanitizeUriProvider,
-  $SceProvider,
-  $SceDelegateProvider,
-  $SnifferProvider,
-  $TemplateCacheProvider,
-  $TemplateRequestProvider,
-  $$TestabilityProvider,
-  $TimeoutProvider,
-  $$RAFProvider,
-  $$AsyncCallbackProvider,
-  $WindowProvider,
-  $$jqLiteProvider
-*/
-
-
-/**
- * @ngdoc object
- * @name angular.version
- * @module ng
- * @description
- * An object that contains information about the current AngularJS version. This object has the
- * following properties:
- *
- * - `full` – `{string}` – Full version string, such as "0.9.18".
- * - `major` – `{number}` – Major version number, such as "0".
- * - `minor` – `{number}` – Minor version number, such as "9".
- * - `dot` – `{number}` – Dot version number, such as "18".
- * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
- */
-var version = {
-  full: '1.3.11',    // all of these placeholder strings will be replaced by grunt's
-  major: 1,    // package task
-  minor: 3,
-  dot: 11,
-  codeName: 'spiffy-manatee'
-};
-
-
-function publishExternalAPI(angular) {
-  extend(angular, {
-    'bootstrap': bootstrap,
-    'copy': copy,
-    'extend': extend,
-    'equals': equals,
-    'element': jqLite,
-    'forEach': forEach,
-    'injector': createInjector,
-    'noop': noop,
-    'bind': bind,
-    'toJson': toJson,
-    'fromJson': fromJson,
-    'identity': identity,
-    'isUndefined': isUndefined,
-    'isDefined': isDefined,
-    'isString': isString,
-    'isFunction': isFunction,
-    'isObject': isObject,
-    'isNumber': isNumber,
-    'isElement': isElement,
-    'isArray': isArray,
-    'version': version,
-    'isDate': isDate,
-    'lowercase': lowercase,
-    'uppercase': uppercase,
-    'callbacks': {counter: 0},
-    'getTestability': getTestability,
-    '$$minErr': minErr,
-    '$$csp': csp,
-    'reloadWithDebugInfo': reloadWithDebugInfo
-  });
-
-  angularModule = setupModuleLoader(window);
-  try {
-    angularModule('ngLocale');
-  } catch (e) {
-    angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
-  }
-
-  angularModule('ng', ['ngLocale'], ['$provide',
-    function ngModule($provide) {
-      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
-      $provide.provider({
-        $$sanitizeUri: $$SanitizeUriProvider
-      });
-      $provide.provider('$compile', $CompileProvider).
-        directive({
-            a: htmlAnchorDirective,
-            input: inputDirective,
-            textarea: inputDirective,
-            form: formDirective,
-            script: scriptDirective,
-            select: selectDirective,
-            style: styleDirective,
-            option: optionDirective,
-            ngBind: ngBindDirective,
-            ngBindHtml: ngBindHtmlDirective,
-            ngBindTemplate: ngBindTemplateDirective,
-            ngClass: ngClassDirective,
-            ngClassEven: ngClassEvenDirective,
-            ngClassOdd: ngClassOddDirective,
-            ngCloak: ngCloakDirective,
-            ngController: ngControllerDirective,
-            ngForm: ngFormDirective,
-            ngHide: ngHideDirective,
-            ngIf: ngIfDirective,
-            ngInclude: ngIncludeDirective,
-            ngInit: ngInitDirective,
-            ngNonBindable: ngNonBindableDirective,
-            ngPluralize: ngPluralizeDirective,
-            ngRepeat: ngRepeatDirective,
-            ngShow: ngShowDirective,
-            ngStyle: ngStyleDirective,
-            ngSwitch: ngSwitchDirective,
-            ngSwitchWhen: ngSwitchWhenDirective,
-            ngSwitchDefault: ngSwitchDefaultDirective,
-            ngOptions: ngOptionsDirective,
-            ngTransclude: ngTranscludeDirective,
-            ngModel: ngModelDirective,
-            ngList: ngListDirective,
-            ngChange: ngChangeDirective,
-            pattern: patternDirective,
-            ngPattern: patternDirective,
-            required: requiredDirective,
-            ngRequired: requiredDirective,
-            minlength: minlengthDirective,
-            ngMinlength: minlengthDirective,
-            maxlength: maxlengthDirective,
-            ngMaxlength: maxlengthDirective,
-            ngValue: ngValueDirective,
-            ngModelOptions: ngModelOptionsDirective
-        }).
-        directive({
-          ngInclude: ngIncludeFillContentDirective
-        }).
-        directive(ngAttributeAliasDirectives).
-        directive(ngEventDirectives);
-      $provide.provider({
-        $anchorScroll: $AnchorScrollProvider,
-        $animate: $AnimateProvider,
-        $browser: $BrowserProvider,
-        $cacheFactory: $CacheFactoryProvider,
-        $controller: $ControllerProvider,
-        $document: $DocumentProvider,
-        $exceptionHandler: $ExceptionHandlerProvider,
-        $filter: $FilterProvider,
-        $interpolate: $InterpolateProvider,
-        $interval: $IntervalProvider,
-        $http: $HttpProvider,
-        $httpBackend: $HttpBackendProvider,
-        $location: $LocationProvider,
-        $log: $LogProvider,
-        $parse: $ParseProvider,
-        $rootScope: $RootScopeProvider,
-        $q: $QProvider,
-        $$q: $$QProvider,
-        $sce: $SceProvider,
-        $sceDelegate: $SceDelegateProvider,
-        $sniffer: $SnifferProvider,
-        $templateCache: $TemplateCacheProvider,
-        $templateRequest: $TemplateRequestProvider,
-        $$testability: $$TestabilityProvider,
-        $timeout: $TimeoutProvider,
-        $window: $WindowProvider,
-        $$rAF: $$RAFProvider,
-        $$asyncCallback: $$AsyncCallbackProvider,
-        $$jqLite: $$jqLiteProvider
-      });
-    }
-  ]);
-}
-
-/* global JQLitePrototype: true,
-  addEventListenerFn: true,
-  removeEventListenerFn: true,
-  BOOLEAN_ATTR: true,
-  ALIASED_ATTR: true,
-*/
-
-//////////////////////////////////
-//JQLite
-//////////////////////////////////
-
-/**
- * @ngdoc function
- * @name angular.element
- * @module ng
- * @kind function
- *
- * @description
- * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
- *
- * If jQuery is available, `angular.element` is an alias for the
- * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
- * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
- *
- * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
- * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
- * commonly needed functionality with the goal of having a very small footprint.</div>
- *
- * To use jQuery, simply load it before `DOMContentLoaded` event fired.
- *
- * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
- * jqLite; they are never raw DOM references.</div>
- *
- * ## Angular's jqLite
- * jqLite provides only the following jQuery methods:
- *
- * - [`addClass()`](http://api.jquery.com/addClass/)
- * - [`after()`](http://api.jquery.com/after/)
- * - [`append()`](http://api.jquery.com/append/)
- * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
- * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
- * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
- * - [`clone()`](http://api.jquery.com/clone/)
- * - [`contents()`](http://api.jquery.com/contents/)
- * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`
- * - [`data()`](http://api.jquery.com/data/)
- * - [`detach()`](http://api.jquery.com/detach/)
- * - [`empty()`](http://api.jquery.com/empty/)
- * - [`eq()`](http://api.jquery.com/eq/)
- * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
- * - [`hasClass()`](http://api.jquery.com/hasClass/)
- * - [`html()`](http://api.jquery.com/html/)
- * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
- * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
- * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
- * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
- * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
- * - [`prepend()`](http://api.jquery.com/prepend/)
- * - [`prop()`](http://api.jquery.com/prop/)
- * - [`ready()`](http://api.jquery.com/ready/)
- * - [`remove()`](http://api.jquery.com/remove/)
- * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
- * - [`removeClass()`](http://api.jquery.com/removeClass/)
- * - [`removeData()`](http://api.jquery.com/removeData/)
- * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
- * - [`text()`](http://api.jquery.com/text/)
- * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
- * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
- * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
- * - [`val()`](http://api.jquery.com/val/)
- * - [`wrap()`](http://api.jquery.com/wrap/)
- *
- * ## jQuery/jqLite Extras
- * Angular also provides the following additional methods and events to both jQuery and jqLite:
- *
- * ### Events
- * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
- *    on all DOM nodes being removed.  This can be used to clean up any 3rd party bindings to the DOM
- *    element before it is removed.
- *
- * ### Methods
- * - `controller(name)` - retrieves the controller of the current element or its parent. By default
- *   retrieves controller associated with the `ngController` directive. If `name` is provided as
- *   camelCase directive name, then the controller for this directive will be retrieved (e.g.
- *   `'ngModel'`).
- * - `injector()` - retrieves the injector of the current element or its parent.
- * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
- *   element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
- *   be enabled.
- * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
- *   current element. This getter should be used only on elements that contain a directive which starts a new isolate
- *   scope. Calling `scope()` on this element always returns the original non-isolate scope.
- *   Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
- * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
- *   parent element is reached.
- *
- * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
- * @returns {Object} jQuery object.
- */
-
-JQLite.expando = 'ng339';
-
-var jqCache = JQLite.cache = {},
-    jqId = 1,
-    addEventListenerFn = function(element, type, fn) {
-      element.addEventListener(type, fn, false);
-    },
-    removeEventListenerFn = function(element, type, fn) {
-      element.removeEventListener(type, fn, false);
-    };
-
-/*
- * !!! This is an undocumented "private" function !!!
- */
-JQLite._data = function(node) {
-  //jQuery always returns an object on cache miss
-  return this.cache[node[this.expando]] || {};
-};
-
-function jqNextId() { return ++jqId; }
-
-
-var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
-var MOZ_HACK_REGEXP = /^moz([A-Z])/;
-var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"};
-var jqLiteMinErr = minErr('jqLite');
-
-/**
- * Converts snake_case to camelCase.
- * Also there is special case for Moz prefix starting with upper case letter.
- * @param name Name to normalize
- */
-function camelCase(name) {
-  return name.
-    replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
-      return offset ? letter.toUpperCase() : letter;
-    }).
-    replace(MOZ_HACK_REGEXP, 'Moz$1');
-}
-
-var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
-var HTML_REGEXP = /<|&#?\w+;/;
-var TAG_NAME_REGEXP = /<([\w:]+)/;
-var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
-
-var wrapMap = {
-  'option': [1, '<select multiple="multiple">', '</select>'],
-
-  'thead': [1, '<table>', '</table>'],
-  'col': [2, '<table><colgroup>', '</colgroup></table>'],
-  'tr': [2, '<table><tbody>', '</tbody></table>'],
-  'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
-  '_default': [0, "", ""]
-};
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-
-function jqLiteIsTextNode(html) {
-  return !HTML_REGEXP.test(html);
-}
-
-function jqLiteAcceptsData(node) {
-  // The window object can accept data but has no nodeType
-  // Otherwise we are only interested in elements (1) and documents (9)
-  var nodeType = node.nodeType;
-  return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
-}
-
-function jqLiteBuildFragment(html, context) {
-  var tmp, tag, wrap,
-      fragment = context.createDocumentFragment(),
-      nodes = [], i;
-
-  if (jqLiteIsTextNode(html)) {
-    // Convert non-html into a text node
-    nodes.push(context.createTextNode(html));
-  } else {
-    // Convert html into DOM nodes
-    tmp = tmp || fragment.appendChild(context.createElement("div"));
-    tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
-    wrap = wrapMap[tag] || wrapMap._default;
-    tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
-
-    // Descend through wrappers to the right content
-    i = wrap[0];
-    while (i--) {
-      tmp = tmp.lastChild;
-    }
-
-    nodes = concat(nodes, tmp.childNodes);
-
-    tmp = fragment.firstChild;
-    tmp.textContent = "";
-  }
-
-  // Remove wrapper from fragment
-  fragment.textContent = "";
-  fragment.innerHTML = ""; // Clear inner HTML
-  forEach(nodes, function(node) {
-    fragment.appendChild(node);
-  });
-
-  return fragment;
-}
-
-function jqLiteParseHTML(html, context) {
-  context = context || document;
-  var parsed;
-
-  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
-    return [context.createElement(parsed[1])];
-  }
-
-  if ((parsed = jqLiteBuildFragment(html, context))) {
-    return parsed.childNodes;
-  }
-
-  return [];
-}
-
-/////////////////////////////////////////////
-function JQLite(element) {
-  if (element instanceof JQLite) {
-    return element;
-  }
-
-  var argIsString;
-
-  if (isString(element)) {
-    element = trim(element);
-    argIsString = true;
-  }
-  if (!(this instanceof JQLite)) {
-    if (argIsString && element.charAt(0) != '<') {
-      throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
-    }
-    return new JQLite(element);
-  }
-
-  if (argIsString) {
-    jqLiteAddNodes(this, jqLiteParseHTML(element));
-  } else {
-    jqLiteAddNodes(this, element);
-  }
-}
-
-function jqLiteClone(element) {
-  return element.cloneNode(true);
-}
-
-function jqLiteDealoc(element, onlyDescendants) {
-  if (!onlyDescendants) jqLiteRemoveData(element);
-
-  if (element.querySelectorAll) {
-    var descendants = element.querySelectorAll('*');
-    for (var i = 0, l = descendants.length; i < l; i++) {
-      jqLiteRemoveData(descendants[i]);
-    }
-  }
-}
-
-function jqLiteOff(element, type, fn, unsupported) {
-  if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
-
-  var expandoStore = jqLiteExpandoStore(element);
-  var events = expandoStore && expandoStore.events;
-  var handle = expandoStore && expandoStore.handle;
-
-  if (!handle) return; //no listeners registered
-
-  if (!type) {
-    for (type in events) {
-      if (type !== '$destroy') {
-        removeEventListenerFn(element, type, handle);
-      }
-      delete events[type];
-    }
-  } else {
-    forEach(type.split(' '), function(type) {
-      if (isDefined(fn)) {
-        var listenerFns = events[type];
-        arrayRemove(listenerFns || [], fn);
-        if (listenerFns && listenerFns.length > 0) {
-          return;
-        }
-      }
-
-      removeEventListenerFn(element, type, handle);
-      delete events[type];
-    });
-  }
-}
-
-function jqLiteRemoveData(element, name) {
-  var expandoId = element.ng339;
-  var expandoStore = expandoId && jqCache[expandoId];
-
-  if (expandoStore) {
-    if (name) {
-      delete expandoStore.data[name];
-      return;
-    }
-
-    if (expandoStore.handle) {
-      if (expandoStore.events.$destroy) {
-        expandoStore.handle({}, '$destroy');
-      }
-      jqLiteOff(element);
-    }
-    delete jqCache[expandoId];
-    element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
-  }
-}
-
-
-function jqLiteExpandoStore(element, createIfNecessary) {
-  var expandoId = element.ng339,
-      expandoStore = expandoId && jqCache[expandoId];
-
-  if (createIfNecessary && !expandoStore) {
-    element.ng339 = expandoId = jqNextId();
-    expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};
-  }
-
-  return expandoStore;
-}
-
-
-function jqLiteData(element, key, value) {
-  if (jqLiteAcceptsData(element)) {
-
-    var isSimpleSetter = isDefined(value);
-    var isSimpleGetter = !isSimpleSetter && key && !isObject(key);
-    var massGetter = !key;
-    var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
-    var data = expandoStore && expandoStore.data;
-
-    if (isSimpleSetter) { // data('key', value)
-      data[key] = value;
-    } else {
-      if (massGetter) {  // data()
-        return data;
-      } else {
-        if (isSimpleGetter) { // data('key')
-          // don't force creation of expandoStore if it doesn't exist yet
-          return data && data[key];
-        } else { // mass-setter: data({key1: val1, key2: val2})
-          extend(data, key);
-        }
-      }
-    }
-  }
-}
-
-function jqLiteHasClass(element, selector) {
-  if (!element.getAttribute) return false;
-  return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
-      indexOf(" " + selector + " ") > -1);
-}
-
-function jqLiteRemoveClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    forEach(cssClasses.split(' '), function(cssClass) {
-      element.setAttribute('class', trim(
-          (" " + (element.getAttribute('class') || '') + " ")
-          .replace(/[\n\t]/g, " ")
-          .replace(" " + trim(cssClass) + " ", " "))
-      );
-    });
-  }
-}
-
-function jqLiteAddClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
-                            .replace(/[\n\t]/g, " ");
-
-    forEach(cssClasses.split(' '), function(cssClass) {
-      cssClass = trim(cssClass);
-      if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
-        existingClasses += cssClass + ' ';
-      }
-    });
-
-    element.setAttribute('class', trim(existingClasses));
-  }
-}
-
-
-function jqLiteAddNodes(root, elements) {
-  // THIS CODE IS VERY HOT. Don't make changes without benchmarking.
-
-  if (elements) {
-
-    // if a Node (the most common case)
-    if (elements.nodeType) {
-      root[root.length++] = elements;
-    } else {
-      var length = elements.length;
-
-      // if an Array or NodeList and not a Window
-      if (typeof length === 'number' && elements.window !== elements) {
-        if (length) {
-          for (var i = 0; i < length; i++) {
-            root[root.length++] = elements[i];
-          }
-        }
-      } else {
-        root[root.length++] = elements;
-      }
-    }
-  }
-}
-
-
-function jqLiteController(element, name) {
-  return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');
-}
-
-function jqLiteInheritedData(element, name, value) {
-  // if element is the document object work with the html element instead
-  // this makes $(document).scope() possible
-  if (element.nodeType == NODE_TYPE_DOCUMENT) {
-    element = element.documentElement;
-  }
-  var names = isArray(name) ? name : [name];
-
-  while (element) {
-    for (var i = 0, ii = names.length; i < ii; i++) {
-      if ((value = jqLite.data(element, names[i])) !== undefined) return value;
-    }
-
-    // If dealing with a document fragment node with a host element, and no parent, use the host
-    // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
-    // to lookup parent controllers.
-    element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
-  }
-}
-
-function jqLiteEmpty(element) {
-  jqLiteDealoc(element, true);
-  while (element.firstChild) {
-    element.removeChild(element.firstChild);
-  }
-}
-
-function jqLiteRemove(element, keepData) {
-  if (!keepData) jqLiteDealoc(element);
-  var parent = element.parentNode;
-  if (parent) parent.removeChild(element);
-}
-
-
-function jqLiteDocumentLoaded(action, win) {
-  win = win || window;
-  if (win.document.readyState === 'complete') {
-    // Force the action to be run async for consistent behaviour
-    // from the action's point of view
-    // i.e. it will definitely not be in a $apply
-    win.setTimeout(action);
-  } else {
-    // No need to unbind this handler as load is only ever called once
-    jqLite(win).on('load', action);
-  }
-}
-
-//////////////////////////////////////////
-// Functions which are declared directly.
-//////////////////////////////////////////
-var JQLitePrototype = JQLite.prototype = {
-  ready: function(fn) {
-    var fired = false;
-
-    function trigger() {
-      if (fired) return;
-      fired = true;
-      fn();
-    }
-
-    // check if document is already loaded
-    if (document.readyState === 'complete') {
-      setTimeout(trigger);
-    } else {
-      this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
-      // we can not use jqLite since we are not done loading and jQuery could be loaded later.
-      // jshint -W064
-      JQLite(window).on('load', trigger); // fallback to window.onload for others
-      // jshint +W064
-    }
-  },
-  toString: function() {
-    var value = [];
-    forEach(this, function(e) { value.push('' + e);});
-    return '[' + value.join(', ') + ']';
-  },
-
-  eq: function(index) {
-      return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
-  },
-
-  length: 0,
-  push: push,
-  sort: [].sort,
-  splice: [].splice
-};
-
-//////////////////////////////////////////
-// Functions iterating getter/setters.
-// these functions return self on setter and
-// value on get.
-//////////////////////////////////////////
-var BOOLEAN_ATTR = {};
-forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
-  BOOLEAN_ATTR[lowercase(value)] = value;
-});
-var BOOLEAN_ELEMENTS = {};
-forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
-  BOOLEAN_ELEMENTS[value] = true;
-});
-var ALIASED_ATTR = {
-  'ngMinlength': 'minlength',
-  'ngMaxlength': 'maxlength',
-  'ngMin': 'min',
-  'ngMax': 'max',
-  'ngPattern': 'pattern'
-};
-
-function getBooleanAttrName(element, name) {
-  // check dom last since we will most likely fail on name
-  var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
-
-  // booleanAttr is here twice to minimize DOM access
-  return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
-}
-
-function getAliasedAttrName(element, name) {
-  var nodeName = element.nodeName;
-  return (nodeName === 'INPUT' || nodeName === 'TEXTAREA') && ALIASED_ATTR[name];
-}
-
-forEach({
-  data: jqLiteData,
-  removeData: jqLiteRemoveData
-}, function(fn, name) {
-  JQLite[name] = fn;
-});
-
-forEach({
-  data: jqLiteData,
-  inheritedData: jqLiteInheritedData,
-
-  scope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
-  },
-
-  isolateScope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');
-  },
-
-  controller: jqLiteController,
-
-  injector: function(element) {
-    return jqLiteInheritedData(element, '$injector');
-  },
-
-  removeAttr: function(element, name) {
-    element.removeAttribute(name);
-  },
-
-  hasClass: jqLiteHasClass,
-
-  css: function(element, name, value) {
-    name = camelCase(name);
-
-    if (isDefined(value)) {
-      element.style[name] = value;
-    } else {
-      return element.style[name];
-    }
-  },
-
-  attr: function(element, name, value) {
-    var lowercasedName = lowercase(name);
-    if (BOOLEAN_ATTR[lowercasedName]) {
-      if (isDefined(value)) {
-        if (!!value) {
-          element[name] = true;
-          element.setAttribute(name, lowercasedName);
-        } else {
-          element[name] = false;
-          element.removeAttribute(lowercasedName);
-        }
-      } else {
-        return (element[name] ||
-                 (element.attributes.getNamedItem(name) || noop).specified)
-               ? lowercasedName
-               : undefined;
-      }
-    } else if (isDefined(value)) {
-      element.setAttribute(name, value);
-    } else if (element.getAttribute) {
-      // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
-      // some elements (e.g. Document) don't have get attribute, so return undefined
-      var ret = element.getAttribute(name, 2);
-      // normalize non-existing attributes to undefined (as jQuery)
-      return ret === null ? undefined : ret;
-    }
-  },
-
-  prop: function(element, name, value) {
-    if (isDefined(value)) {
-      element[name] = value;
-    } else {
-      return element[name];
-    }
-  },
-
-  text: (function() {
-    getText.$dv = '';
-    return getText;
-
-    function getText(element, value) {
-      if (isUndefined(value)) {
-        var nodeType = element.nodeType;
-        return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
-      }
-      element.textContent = value;
-    }
-  })(),
-
-  val: function(element, value) {
-    if (isUndefined(value)) {
-      if (element.multiple && nodeName_(element) === 'select') {
-        var result = [];
-        forEach(element.options, function(option) {
-          if (option.selected) {
-            result.push(option.value || option.text);
-          }
-        });
-        return result.length === 0 ? null : result;
-      }
-      return element.value;
-    }
-    element.value = value;
-  },
-
-  html: function(element, value) {
-    if (isUndefined(value)) {
-      return element.innerHTML;
-    }
-    jqLiteDealoc(element, true);
-    element.innerHTML = value;
-  },
-
-  empty: jqLiteEmpty
-}, function(fn, name) {
-  /**
-   * Properties: writes return selection, reads return first value
-   */
-  JQLite.prototype[name] = function(arg1, arg2) {
-    var i, key;
-    var nodeCount = this.length;
-
-    // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
-    // in a way that survives minification.
-    // jqLiteEmpty takes no arguments but is a setter.
-    if (fn !== jqLiteEmpty &&
-        (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
-      if (isObject(arg1)) {
-
-        // we are a write, but the object properties are the key/values
-        for (i = 0; i < nodeCount; i++) {
-          if (fn === jqLiteData) {
-            // data() takes the whole object in jQuery
-            fn(this[i], arg1);
-          } else {
-            for (key in arg1) {
-              fn(this[i], key, arg1[key]);
-            }
-          }
-        }
-        // return self for chaining
-        return this;
-      } else {
-        // we are a read, so read the first child.
-        // TODO: do we still need this?
-        var value = fn.$dv;
-        // Only if we have $dv do we iterate over all, otherwise it is just the first element.
-        var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;
-        for (var j = 0; j < jj; j++) {
-          var nodeValue = fn(this[j], arg1, arg2);
-          value = value ? value + nodeValue : nodeValue;
-        }
-        return value;
-      }
-    } else {
-      // we are a write, so apply to all children
-      for (i = 0; i < nodeCount; i++) {
-        fn(this[i], arg1, arg2);
-      }
-      // return self for chaining
-      return this;
-    }
-  };
-});
-
-function createEventHandler(element, events) {
-  var eventHandler = function(event, type) {
-    // jQuery specific api
-    event.isDefaultPrevented = function() {
-      return event.defaultPrevented;
-    };
-
-    var eventFns = events[type || event.type];
-    var eventFnsLength = eventFns ? eventFns.length : 0;
-
-    if (!eventFnsLength) return;
-
-    if (isUndefined(event.immediatePropagationStopped)) {
-      var originalStopImmediatePropagation = event.stopImmediatePropagation;
-      event.stopImmediatePropagation = function() {
-        event.immediatePropagationStopped = true;
-
-        if (event.stopPropagation) {
-          event.stopPropagation();
-        }
-
-        if (originalStopImmediatePropagation) {
-          originalStopImmediatePropagation.call(event);
-        }
-      };
-    }
-
-    event.isImmediatePropagationStopped = function() {
-      return event.immediatePropagationStopped === true;
-    };
-
-    // Copy event handlers in case event handlers array is modified during execution.
-    if ((eventFnsLength > 1)) {
-      eventFns = shallowCopy(eventFns);
-    }
-
-    for (var i = 0; i < eventFnsLength; i++) {
-      if (!event.isImmediatePropagationStopped()) {
-        eventFns[i].call(element, event);
-      }
-    }
-  };
-
-  // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all
-  //       events on `element`
-  eventHandler.elem = element;
-  return eventHandler;
-}
-
-//////////////////////////////////////////
-// Functions iterating traversal.
-// These functions chain results into a single
-// selector.
-//////////////////////////////////////////
-forEach({
-  removeData: jqLiteRemoveData,
-
-  on: function jqLiteOn(element, type, fn, unsupported) {
-    if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
-
-    // Do not add event handlers to non-elements because they will not be cleaned up.
-    if (!jqLiteAcceptsData(element)) {
-      return;
-    }
-
-    var expandoStore = jqLiteExpandoStore(element, true);
-    var events = expandoStore.events;
-    var handle = expandoStore.handle;
-
-    if (!handle) {
-      handle = expandoStore.handle = createEventHandler(element, events);
-    }
-
-    // http://jsperf.com/string-indexof-vs-split
-    var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];
-    var i = types.length;
-
-    while (i--) {
-      type = types[i];
-      var eventFns = events[type];
-
-      if (!eventFns) {
-        events[type] = [];
-
-        if (type === 'mouseenter' || type === 'mouseleave') {
-          // Refer to jQuery's implementation of mouseenter & mouseleave
-          // Read about mouseenter and mouseleave:
-          // http://www.quirksmode.org/js/events_mouse.html#link8
-
-          jqLiteOn(element, MOUSE_EVENT_MAP[type], function(event) {
-            var target = this, related = event.relatedTarget;
-            // 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 && !target.contains(related))) {
-              handle(event, type);
-            }
-          });
-
-        } else {
-          if (type !== '$destroy') {
-            addEventListenerFn(element, type, handle);
-          }
-        }
-        eventFns = events[type];
-      }
-      eventFns.push(fn);
-    }
-  },
-
-  off: jqLiteOff,
-
-  one: function(element, type, fn) {
-    element = jqLite(element);
-
-    //add the listener twice so that when it is called
-    //you can remove the original function and still be
-    //able to call element.off(ev, fn) normally
-    element.on(type, function onFn() {
-      element.off(type, fn);
-      element.off(type, onFn);
-    });
-    element.on(type, fn);
-  },
-
-  replaceWith: function(element, replaceNode) {
-    var index, parent = element.parentNode;
-    jqLiteDealoc(element);
-    forEach(new JQLite(replaceNode), function(node) {
-      if (index) {
-        parent.insertBefore(node, index.nextSibling);
-      } else {
-        parent.replaceChild(node, element);
-      }
-      index = node;
-    });
-  },
-
-  children: function(element) {
-    var children = [];
-    forEach(element.childNodes, function(element) {
-      if (element.nodeType === NODE_TYPE_ELEMENT)
-        children.push(element);
-    });
-    return children;
-  },
-
-  contents: function(element) {
-    return element.contentDocument || element.childNodes || [];
-  },
-
-  append: function(element, node) {
-    var nodeType = element.nodeType;
-    if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
-
-    node = new JQLite(node);
-
-    for (var i = 0, ii = node.length; i < ii; i++) {
-      var child = node[i];
-      element.appendChild(child);
-    }
-  },
-
-  prepend: function(element, node) {
-    if (element.nodeType === NODE_TYPE_ELEMENT) {
-      var index = element.firstChild;
-      forEach(new JQLite(node), function(child) {
-        element.insertBefore(child, index);
-      });
-    }
-  },
-
-  wrap: function(element, wrapNode) {
-    wrapNode = jqLite(wrapNode).eq(0).clone()[0];
-    var parent = element.parentNode;
-    if (parent) {
-      parent.replaceChild(wrapNode, element);
-    }
-    wrapNode.appendChild(element);
-  },
-
-  remove: jqLiteRemove,
-
-  detach: function(element) {
-    jqLiteRemove(element, true);
-  },
-
-  after: function(element, newElement) {
-    var index = element, parent = element.parentNode;
-    newElement = new JQLite(newElement);
-
-    for (var i = 0, ii = newElement.length; i < ii; i++) {
-      var node = newElement[i];
-      parent.insertBefore(node, index.nextSibling);
-      index = node;
-    }
-  },
-
-  addClass: jqLiteAddClass,
-  removeClass: jqLiteRemoveClass,
-
-  toggleClass: function(element, selector, condition) {
-    if (selector) {
-      forEach(selector.split(' '), function(className) {
-        var classCondition = condition;
-        if (isUndefined(classCondition)) {
-          classCondition = !jqLiteHasClass(element, className);
-        }
-        (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
-      });
-    }
-  },
-
-  parent: function(element) {
-    var parent = element.parentNode;
-    return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
-  },
-
-  next: function(element) {
-    return element.nextElementSibling;
-  },
-
-  find: function(element, selector) {
-    if (element.getElementsByTagName) {
-      return element.getElementsByTagName(selector);
-    } else {
-      return [];
-    }
-  },
-
-  clone: jqLiteClone,
-
-  triggerHandler: function(element, event, extraParameters) {
-
-    var dummyEvent, eventFnsCopy, handlerArgs;
-    var eventName = event.type || event;
-    var expandoStore = jqLiteExpandoStore(element);
-    var events = expandoStore && expandoStore.events;
-    var eventFns = events && events[eventName];
-
-    if (eventFns) {
-      // Create a dummy event to pass to the handlers
-      dummyEvent = {
-        preventDefault: function() { this.defaultPrevented = true; },
-        isDefaultPrevented: function() { return this.defaultPrevented === true; },
-        stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },
-        isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },
-        stopPropagation: noop,
-        type: eventName,
-        target: element
-      };
-
-      // If a custom event was provided then extend our dummy event with it
-      if (event.type) {
-        dummyEvent = extend(dummyEvent, event);
-      }
-
-      // Copy event handlers in case event handlers array is modified during execution.
-      eventFnsCopy = shallowCopy(eventFns);
-      handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
-
-      forEach(eventFnsCopy, function(fn) {
-        if (!dummyEvent.isImmediatePropagationStopped()) {
-          fn.apply(element, handlerArgs);
-        }
-      });
-    }
-  }
-}, function(fn, name) {
-  /**
-   * chaining functions
-   */
-  JQLite.prototype[name] = function(arg1, arg2, arg3) {
-    var value;
-
-    for (var i = 0, ii = this.length; i < ii; i++) {
-      if (isUndefined(value)) {
-        value = fn(this[i], arg1, arg2, arg3);
-        if (isDefined(value)) {
-          // any function which returns a value needs to be wrapped
-          value = jqLite(value);
-        }
-      } else {
-        jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
-      }
-    }
-    return isDefined(value) ? value : this;
-  };
-
-  // bind legacy bind/unbind to on/off
-  JQLite.prototype.bind = JQLite.prototype.on;
-  JQLite.prototype.unbind = JQLite.prototype.off;
-});
-
-
-// Provider for private $$jqLite service
-function $$jqLiteProvider() {
-  this.$get = function $$jqLite() {
-    return extend(JQLite, {
-      hasClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteHasClass(node, classes);
-      },
-      addClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteAddClass(node, classes);
-      },
-      removeClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteRemoveClass(node, classes);
-      }
-    });
-  };
-}
-
-/**
- * Computes a hash of an 'obj'.
- * Hash of a:
- *  string is string
- *  number is number as string
- *  object is either result of calling $$hashKey function on the object or uniquely generated id,
- *         that is also assigned to the $$hashKey property of the object.
- *
- * @param obj
- * @returns {string} hash string such that the same input will have the same hash string.
- *         The resulting string key is in 'type:hashKey' format.
- */
-function hashKey(obj, nextUidFn) {
-  var key = obj && obj.$$hashKey;
-
-  if (key) {
-    if (typeof key === 'function') {
-      key = obj.$$hashKey();
-    }
-    return key;
-  }
-
-  var objType = typeof obj;
-  if (objType == 'function' || (objType == 'object' && obj !== null)) {
-    key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();
-  } else {
-    key = objType + ':' + obj;
-  }
-
-  return key;
-}
-
-/**
- * HashMap which can use objects as keys
- */
-function HashMap(array, isolatedUid) {
-  if (isolatedUid) {
-    var uid = 0;
-    this.nextUid = function() {
-      return ++uid;
-    };
-  }
-  forEach(array, this.put, this);
-}
-HashMap.prototype = {
-  /**
-   * Store key value pair
-   * @param key key to store can be any type
-   * @param value value to store can be any type
-   */
-  put: function(key, value) {
-    this[hashKey(key, this.nextUid)] = value;
-  },
-
-  /**
-   * @param key
-   * @returns {Object} the value for the key
-   */
-  get: function(key) {
-    return this[hashKey(key, this.nextUid)];
-  },
-
-  /**
-   * Remove the key/value pair
-   * @param key
-   */
-  remove: function(key) {
-    var value = this[key = hashKey(key, this.nextUid)];
-    delete this[key];
-    return value;
-  }
-};
-
-/**
- * @ngdoc function
- * @module ng
- * @name angular.injector
- * @kind function
- *
- * @description
- * Creates an injector object that can be used for retrieving services as well as for
- * dependency injection (see {@link guide/di dependency injection}).
- *
- * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
- *     {@link angular.module}. The `ng` module must be explicitly added.
- * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
- *     disallows argument name annotation inference.
- * @returns {injector} Injector object. See {@link auto.$injector $injector}.
- *
- * @example
- * Typical usage
- * ```js
- *   // create an injector
- *   var $injector = angular.injector(['ng']);
- *
- *   // use the injector to kick off your application
- *   // use the type inference to auto inject arguments, or use implicit injection
- *   $injector.invoke(function($rootScope, $compile, $document) {
- *     $compile($document)($rootScope);
- *     $rootScope.$digest();
- *   });
- * ```
- *
- * Sometimes you want to get access to the injector of a currently running Angular app
- * from outside Angular. Perhaps, you want to inject and compile some markup after the
- * application has been bootstrapped. You can do this using the extra `injector()` added
- * to JQuery/jqLite elements. See {@link angular.element}.
- *
- * *This is fairly rare but could be the case if a third party library is injecting the
- * markup.*
- *
- * In the following example a new block of HTML containing a `ng-controller`
- * directive is added to the end of the document body by JQuery. We then compile and link
- * it into the current AngularJS scope.
- *
- * ```js
- * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
- * $(document.body).append($div);
- *
- * angular.element(document).injector().invoke(function($compile) {
- *   var scope = angular.element($div).scope();
- *   $compile($div)(scope);
- * });
- * ```
- */
-
-
-/**
- * @ngdoc module
- * @name auto
- * @description
- *
- * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
- */
-
-var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
-var FN_ARG_SPLIT = /,/;
-var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
-var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
-var $injectorMinErr = minErr('$injector');
-
-function anonFn(fn) {
-  // For anonymous functions, showing at the very least the function signature can help in
-  // debugging.
-  var fnText = fn.toString().replace(STRIP_COMMENTS, ''),
-      args = fnText.match(FN_ARGS);
-  if (args) {
-    return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')';
-  }
-  return 'fn';
-}
-
-function annotate(fn, strictDi, name) {
-  var $inject,
-      fnText,
-      argDecl,
-      last;
-
-  if (typeof fn === 'function') {
-    if (!($inject = fn.$inject)) {
-      $inject = [];
-      if (fn.length) {
-        if (strictDi) {
-          if (!isString(name) || !name) {
-            name = fn.name || anonFn(fn);
-          }
-          throw $injectorMinErr('strictdi',
-            '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
-        }
-        fnText = fn.toString().replace(STRIP_COMMENTS, '');
-        argDecl = fnText.match(FN_ARGS);
-        forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
-          arg.replace(FN_ARG, function(all, underscore, name) {
-            $inject.push(name);
-          });
-        });
-      }
-      fn.$inject = $inject;
-    }
-  } else if (isArray(fn)) {
-    last = fn.length - 1;
-    assertArgFn(fn[last], 'fn');
-    $inject = fn.slice(0, last);
-  } else {
-    assertArgFn(fn, 'fn', true);
-  }
-  return $inject;
-}
-
-///////////////////////////////////////
-
-/**
- * @ngdoc service
- * @name $injector
- *
- * @description
- *
- * `$injector` is used to retrieve object instances as defined by
- * {@link auto.$provide provider}, instantiate types, invoke methods,
- * and load modules.
- *
- * The following always holds true:
- *
- * ```js
- *   var $injector = angular.injector();
- *   expect($injector.get('$injector')).toBe($injector);
- *   expect($injector.invoke(function($injector) {
- *     return $injector;
- *   })).toBe($injector);
- * ```
- *
- * # Injection Function Annotation
- *
- * JavaScript does not have annotations, and annotations are needed for dependency injection. The
- * following are all valid ways of annotating function with injection arguments and are equivalent.
- *
- * ```js
- *   // inferred (only works if code not minified/obfuscated)
- *   $injector.invoke(function(serviceA){});
- *
- *   // annotated
- *   function explicit(serviceA) {};
- *   explicit.$inject = ['serviceA'];
- *   $injector.invoke(explicit);
- *
- *   // inline
- *   $injector.invoke(['serviceA', function(serviceA){}]);
- * ```
- *
- * ## Inference
- *
- * In JavaScript calling `toString()` on a function returns the function definition. The definition
- * can then be parsed and the function arguments can be extracted. This method of discovering
- * annotations is disallowed when the injector is in strict mode.
- * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
- * argument names.
- *
- * ## `$inject` Annotation
- * By adding an `$inject` property onto a function the injection parameters can be specified.
- *
- * ## Inline
- * As an array of injection names, where the last item in the array is the function to call.
- */
-
-/**
- * @ngdoc method
- * @name $injector#get
- *
- * @description
- * Return an instance of the service.
- *
- * @param {string} name The name of the instance to retrieve.
- * @param {string} caller An optional string to provide the origin of the function call for error messages.
- * @return {*} The instance.
- */
-
-/**
- * @ngdoc method
- * @name $injector#invoke
- *
- * @description
- * Invoke the method and supply the method arguments from the `$injector`.
- *
- * @param {!Function} fn The function to invoke. Function parameters are injected according to the
- *   {@link guide/di $inject Annotation} rules.
- * @param {Object=} self The `this` for the invoked method.
- * @param {Object=} locals Optional object. If preset then any argument names are read from this
- *                         object first, before the `$injector` is consulted.
- * @returns {*} the value returned by the invoked `fn` function.
- */
-
-/**
- * @ngdoc method
- * @name $injector#has
- *
- * @description
- * Allows the user to query if the particular service exists.
- *
- * @param {string} name Name of the service to query.
- * @returns {boolean} `true` if injector has given service.
- */
-
-/**
- * @ngdoc method
- * @name $injector#instantiate
- * @description
- * Create a new instance of JS type. The method takes a constructor function, invokes the new
- * operator, and supplies all of the arguments to the constructor function as specified by the
- * constructor annotation.
- *
- * @param {Function} Type Annotated constructor function.
- * @param {Object=} locals Optional object. If preset then any argument names are read from this
- * object first, before the `$injector` is consulted.
- * @returns {Object} new instance of `Type`.
- */
-
-/**
- * @ngdoc method
- * @name $injector#annotate
- *
- * @description
- * Returns an array of service names which the function is requesting for injection. This API is
- * used by the injector to determine which services need to be injected into the function when the
- * function is invoked. There are three ways in which the function can be annotated with the needed
- * dependencies.
- *
- * # Argument names
- *
- * The simplest form is to extract the dependencies from the arguments of the function. This is done
- * by converting the function into a string using `toString()` method and extracting the argument
- * names.
- * ```js
- *   // Given
- *   function MyController($scope, $route) {
- *     // ...
- *   }
- *
- *   // Then
- *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
- * ```
- *
- * You can disallow this method by using strict injection mode.
- *
- * This method does not work with code minification / obfuscation. For this reason the following
- * annotation strategies are supported.
- *
- * # The `$inject` property
- *
- * If a function has an `$inject` property and its value is an array of strings, then the strings
- * represent names of services to be injected into the function.
- * ```js
- *   // Given
- *   var MyController = function(obfuscatedScope, obfuscatedRoute) {
- *     // ...
- *   }
- *   // Define function dependencies
- *   MyController['$inject'] = ['$scope', '$route'];
- *
- *   // Then
- *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
- * ```
- *
- * # The array notation
- *
- * It is often desirable to inline Injected functions and that's when setting the `$inject` property
- * is very inconvenient. In these situations using the array notation to specify the dependencies in
- * a way that survives minification is a better choice:
- *
- * ```js
- *   // We wish to write this (not minification / obfuscation safe)
- *   injector.invoke(function($compile, $rootScope) {
- *     // ...
- *   });
- *
- *   // We are forced to write break inlining
- *   var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
- *     // ...
- *   };
- *   tmpFn.$inject = ['$compile', '$rootScope'];
- *   injector.invoke(tmpFn);
- *
- *   // To better support inline function the inline annotation is supported
- *   injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
- *     // ...
- *   }]);
- *
- *   // Therefore
- *   expect(injector.annotate(
- *      ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
- *    ).toEqual(['$compile', '$rootScope']);
- * ```
- *
- * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
- * be retrieved as described above.
- *
- * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
- *
- * @returns {Array.<string>} The names of the services which the function requires.
- */
-
-
-
-
-/**
- * @ngdoc service
- * @name $provide
- *
- * @description
- *
- * The {@link auto.$provide $provide} service has a number of methods for registering components
- * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
- * {@link angular.Module}.
- *
- * An Angular **service** is a singleton object created by a **service factory**.  These **service
- * factories** are functions which, in turn, are created by a **service provider**.
- * The **service providers** are constructor functions. When instantiated they must contain a
- * property called `$get`, which holds the **service factory** function.
- *
- * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
- * correct **service provider**, instantiating it and then calling its `$get` **service factory**
- * function to get the instance of the **service**.
- *
- * Often services have no configuration options and there is no need to add methods to the service
- * provider.  The provider will be no more than a constructor function with a `$get` property. For
- * these cases the {@link auto.$provide $provide} service has additional helper methods to register
- * services without specifying a provider.
- *
- * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the
- *     {@link auto.$injector $injector}
- * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by
- *     providers and services.
- * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by
- *     services, not providers.
- * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,
- *     that will be wrapped in a **service provider** object, whose `$get` property will contain the
- *     given factory function.
- * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`
- *     that will be wrapped in a **service provider** object, whose `$get` property will instantiate
- *      a new object using the given constructor function.
- *
- * See the individual methods for more information and examples.
- */
-
-/**
- * @ngdoc method
- * @name $provide#provider
- * @description
- *
- * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
- * are constructor functions, whose instances are responsible for "providing" a factory for a
- * service.
- *
- * Service provider names start with the name of the service they provide followed by `Provider`.
- * For example, the {@link ng.$log $log} service has a provider called
- * {@link ng.$logProvider $logProvider}.
- *
- * Service provider objects can have additional methods which allow configuration of the provider
- * and its service. Importantly, you can configure what kind of service is created by the `$get`
- * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
- * method {@link ng.$logProvider#debugEnabled debugEnabled}
- * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
- * console or not.
- *
- * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
-                        'Provider'` key.
- * @param {(Object|function())} provider If the provider is:
- *
- *   - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
- *     {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
- *   - `Constructor`: a new instance of the provider will be created using
- *     {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
- *
- * @returns {Object} registered provider instance
-
- * @example
- *
- * The following example shows how to create a simple event tracking service and register it using
- * {@link auto.$provide#provider $provide.provider()}.
- *
- * ```js
- *  // Define the eventTracker provider
- *  function EventTrackerProvider() {
- *    var trackingUrl = '/track';
- *
- *    // A provider method for configuring where the tracked events should been saved
- *    this.setTrackingUrl = function(url) {
- *      trackingUrl = url;
- *    };
- *
- *    // The service factory function
- *    this.$get = ['$http', function($http) {
- *      var trackedEvents = {};
- *      return {
- *        // Call this to track an event
- *        event: function(event) {
- *          var count = trackedEvents[event] || 0;
- *          count += 1;
- *          trackedEvents[event] = count;
- *          return count;
- *        },
- *        // Call this to save the tracked events to the trackingUrl
- *        save: function() {
- *          $http.post(trackingUrl, trackedEvents);
- *        }
- *      };
- *    }];
- *  }
- *
- *  describe('eventTracker', function() {
- *    var postSpy;
- *
- *    beforeEach(module(function($provide) {
- *      // Register the eventTracker provider
- *      $provide.provider('eventTracker', EventTrackerProvider);
- *    }));
- *
- *    beforeEach(module(function(eventTrackerProvider) {
- *      // Configure eventTracker provider
- *      eventTrackerProvider.setTrackingUrl('/custom-track');
- *    }));
- *
- *    it('tracks events', inject(function(eventTracker) {
- *      expect(eventTracker.event('login')).toEqual(1);
- *      expect(eventTracker.event('login')).toEqual(2);
- *    }));
- *
- *    it('saves to the tracking url', inject(function(eventTracker, $http) {
- *      postSpy = spyOn($http, 'post');
- *      eventTracker.event('login');
- *      eventTracker.save();
- *      expect(postSpy).toHaveBeenCalled();
- *      expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
- *      expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
- *      expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
- *    }));
- *  });
- * ```
- */
-
-/**
- * @ngdoc method
- * @name $provide#factory
- * @description
- *
- * Register a **service factory**, which will be called to return the service instance.
- * This is short for registering a service where its provider consists of only a `$get` property,
- * which is the given service factory function.
- * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
- * configure your service in a provider.
- *
- * @param {string} name The name of the instance.
- * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand
- *                            for `$provide.provider(name, {$get: $getFn})`.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here is an example of registering a service
- * ```js
- *   $provide.factory('ping', ['$http', function($http) {
- *     return function ping() {
- *       return $http.send('/ping');
- *     };
- *   }]);
- * ```
- * You would then inject and use this service like this:
- * ```js
- *   someModule.controller('Ctrl', ['ping', function(ping) {
- *     ping();
- *   }]);
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#service
- * @description
- *
- * Register a **service constructor**, which will be invoked with `new` to create the service
- * instance.
- * This is short for registering a service where its provider's `$get` property is the service
- * constructor function that will be used to instantiate the service instance.
- *
- * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
- * as a type/class.
- *
- * @param {string} name The name of the instance.
- * @param {Function} constructor A class (constructor function) that will be instantiated.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here is an example of registering a service using
- * {@link auto.$provide#service $provide.service(class)}.
- * ```js
- *   var Ping = function($http) {
- *     this.$http = $http;
- *   };
- *
- *   Ping.$inject = ['$http'];
- *
- *   Ping.prototype.send = function() {
- *     return this.$http.get('/ping');
- *   };
- *   $provide.service('ping', Ping);
- * ```
- * You would then inject and use this service like this:
- * ```js
- *   someModule.controller('Ctrl', ['ping', function(ping) {
- *     ping.send();
- *   }]);
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#value
- * @description
- *
- * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
- * number, an array, an object or a function.  This is short for registering a service where its
- * provider's `$get` property is a factory function that takes no arguments and returns the **value
- * service**.
- *
- * Value services are similar to constant services, except that they cannot be injected into a
- * module configuration function (see {@link angular.Module#config}) but they can be overridden by
- * an Angular
- * {@link auto.$provide#decorator decorator}.
- *
- * @param {string} name The name of the instance.
- * @param {*} value The value.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here are some examples of creating value services.
- * ```js
- *   $provide.value('ADMIN_USER', 'admin');
- *
- *   $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
- *
- *   $provide.value('halfOf', function(value) {
- *     return value / 2;
- *   });
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#constant
- * @description
- *
- * Register a **constant service**, such as a string, a number, an array, an object or a function,
- * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be
- * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
- * be overridden by an Angular {@link auto.$provide#decorator decorator}.
- *
- * @param {string} name The name of the constant.
- * @param {*} value The constant value.
- * @returns {Object} registered instance
- *
- * @example
- * Here a some examples of creating constants:
- * ```js
- *   $provide.constant('SHARD_HEIGHT', 306);
- *
- *   $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
- *
- *   $provide.constant('double', function(value) {
- *     return value * 2;
- *   });
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#decorator
- * @description
- *
- * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator
- * intercepts the creation of a service, allowing it to override or modify the behaviour of the
- * service. The object returned by the decorator may be the original service, or a new service
- * object which replaces or wraps and delegates to the original service.
- *
- * @param {string} name The name of the service to decorate.
- * @param {function()} decorator This function will be invoked when the service needs to be
- *    instantiated and should return the decorated service instance. The function is called using
- *    the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
- *    Local injection arguments:
- *
- *    * `$delegate` - The original service instance, which can be monkey patched, configured,
- *      decorated or delegated to.
- *
- * @example
- * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
- * calls to {@link ng.$log#error $log.warn()}.
- * ```js
- *   $provide.decorator('$log', ['$delegate', function($delegate) {
- *     $delegate.warn = $delegate.error;
- *     return $delegate;
- *   }]);
- * ```
- */
-
-
-function createInjector(modulesToLoad, strictDi) {
-  strictDi = (strictDi === true);
-  var INSTANTIATING = {},
-      providerSuffix = 'Provider',
-      path = [],
-      loadedModules = new HashMap([], true),
-      providerCache = {
-        $provide: {
-            provider: supportObject(provider),
-            factory: supportObject(factory),
-            service: supportObject(service),
-            value: supportObject(value),
-            constant: supportObject(constant),
-            decorator: decorator
-          }
-      },
-      providerInjector = (providerCache.$injector =
-          createInternalInjector(providerCache, function(serviceName, caller) {
-            if (angular.isString(caller)) {
-              path.push(caller);
-            }
-            throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
-          })),
-      instanceCache = {},
-      instanceInjector = (instanceCache.$injector =
-          createInternalInjector(instanceCache, function(serviceName, caller) {
-            var provider = providerInjector.get(serviceName + providerSuffix, caller);
-            return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
-          }));
-
-
-  forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
-
-  return instanceInjector;
-
-  ////////////////////////////////////
-  // $provider
-  ////////////////////////////////////
-
-  function supportObject(delegate) {
-    return function(key, value) {
-      if (isObject(key)) {
-        forEach(key, reverseParams(delegate));
-      } else {
-        return delegate(key, value);
-      }
-    };
-  }
-
-  function provider(name, provider_) {
-    assertNotHasOwnProperty(name, 'service');
-    if (isFunction(provider_) || isArray(provider_)) {
-      provider_ = providerInjector.instantiate(provider_);
-    }
-    if (!provider_.$get) {
-      throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
-    }
-    return providerCache[name + providerSuffix] = provider_;
-  }
-
-  function enforceReturnValue(name, factory) {
-    return function enforcedReturnValue() {
-      var result = instanceInjector.invoke(factory, this);
-      if (isUndefined(result)) {
-        throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
-      }
-      return result;
-    };
-  }
-
-  function factory(name, factoryFn, enforce) {
-    return provider(name, {
-      $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
-    });
-  }
-
-  function service(name, constructor) {
-    return factory(name, ['$injector', function($injector) {
-      return $injector.instantiate(constructor);
-    }]);
-  }
-
-  function value(name, val) { return factory(name, valueFn(val), false); }
-
-  function constant(name, value) {
-    assertNotHasOwnProperty(name, 'constant');
-    providerCache[name] = value;
-    instanceCache[name] = value;
-  }
-
-  function decorator(serviceName, decorFn) {
-    var origProvider = providerInjector.get(serviceName + providerSuffix),
-        orig$get = origProvider.$get;
-
-    origProvider.$get = function() {
-      var origInstance = instanceInjector.invoke(orig$get, origProvider);
-      return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
-    };
-  }
-
-  ////////////////////////////////////
-  // Module Loading
-  ////////////////////////////////////
-  function loadModules(modulesToLoad) {
-    var runBlocks = [], moduleFn;
-    forEach(modulesToLoad, function(module) {
-      if (loadedModules.get(module)) return;
-      loadedModules.put(module, true);
-
-      function runInvokeQueue(queue) {
-        var i, ii;
-        for (i = 0, ii = queue.length; i < ii; i++) {
-          var invokeArgs = queue[i],
-              provider = providerInjector.get(invokeArgs[0]);
-
-          provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
-        }
-      }
-
-      try {
-        if (isString(module)) {
-          moduleFn = angularModule(module);
-          runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
-          runInvokeQueue(moduleFn._invokeQueue);
-          runInvokeQueue(moduleFn._configBlocks);
-        } else if (isFunction(module)) {
-            runBlocks.push(providerInjector.invoke(module));
-        } else if (isArray(module)) {
-            runBlocks.push(providerInjector.invoke(module));
-        } else {
-          assertArgFn(module, 'module');
-        }
-      } catch (e) {
-        if (isArray(module)) {
-          module = module[module.length - 1];
-        }
-        if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
-          // Safari & FF's stack traces don't contain error.message content
-          // unlike those of Chrome and IE
-          // So if stack doesn't contain message, we create a new string that contains both.
-          // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
-          /* jshint -W022 */
-          e = e.message + '\n' + e.stack;
-        }
-        throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
-                  module, e.stack || e.message || e);
-      }
-    });
-    return runBlocks;
-  }
-
-  ////////////////////////////////////
-  // internal Injector
-  ////////////////////////////////////
-
-  function createInternalInjector(cache, factory) {
-
-    function getService(serviceName, caller) {
-      if (cache.hasOwnProperty(serviceName)) {
-        if (cache[serviceName] === INSTANTIATING) {
-          throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
-                    serviceName + ' <- ' + path.join(' <- '));
-        }
-        return cache[serviceName];
-      } else {
-        try {
-          path.unshift(serviceName);
-          cache[serviceName] = INSTANTIATING;
-          return cache[serviceName] = factory(serviceName, caller);
-        } catch (err) {
-          if (cache[serviceName] === INSTANTIATING) {
-            delete cache[serviceName];
-          }
-          throw err;
-        } finally {
-          path.shift();
-        }
-      }
-    }
-
-    function invoke(fn, self, locals, serviceName) {
-      if (typeof locals === 'string') {
-        serviceName = locals;
-        locals = null;
-      }
-
-      var args = [],
-          $inject = annotate(fn, strictDi, serviceName),
-          length, i,
-          key;
-
-      for (i = 0, length = $inject.length; i < length; i++) {
-        key = $inject[i];
-        if (typeof key !== 'string') {
-          throw $injectorMinErr('itkn',
-                  'Incorrect injection token! Expected service name as string, got {0}', key);
-        }
-        args.push(
-          locals && locals.hasOwnProperty(key)
-          ? locals[key]
-          : getService(key, serviceName)
-        );
-      }
-      if (isArray(fn)) {
-        fn = fn[length];
-      }
-
-      // http://jsperf.com/angularjs-invoke-apply-vs-switch
-      // #5388
-      return fn.apply(self, args);
-    }
-
-    function instantiate(Type, locals, serviceName) {
-      // Check if Type is annotated and use just the given function at n-1 as parameter
-      // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
-      // Object creation: http://jsperf.com/create-constructor/2
-      var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
-      var returnedValue = invoke(Type, instance, locals, serviceName);
-
-      return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
-    }
-
-    return {
-      invoke: invoke,
-      instantiate: instantiate,
-      get: getService,
-      annotate: annotate,
-      has: function(name) {
-        return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
-      }
-    };
-  }
-}
-
-createInjector.$$annotate = annotate;
-
-/**
- * @ngdoc provider
- * @name $anchorScrollProvider
- *
- * @description
- * Use `$anchorScrollProvider` to disable automatic scrolling whenever
- * {@link ng.$location#hash $location.hash()} changes.
- */
-function $AnchorScrollProvider() {
-
-  var autoScrollingEnabled = true;
-
-  /**
-   * @ngdoc method
-   * @name $anchorScrollProvider#disableAutoScrolling
-   *
-   * @description
-   * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to
-   * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />
-   * Use this method to disable automatic scrolling.
-   *
-   * If automatic scrolling is disabled, one must explicitly call
-   * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the
-   * current hash.
-   */
-  this.disableAutoScrolling = function() {
-    autoScrollingEnabled = false;
-  };
-
-  /**
-   * @ngdoc service
-   * @name $anchorScroll
-   * @kind function
-   * @requires $window
-   * @requires $location
-   * @requires $rootScope
-   *
-   * @description
-   * When called, it checks the current value of {@link ng.$location#hash $location.hash()} and
-   * scrolls to the related element, according to the rules specified in the
-   * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).
-   *
-   * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to
-   * match any anchor whenever it changes. This can be disabled by calling
-   * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.
-   *
-   * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a
-   * vertical scroll-offset (either fixed or dynamic).
-   *
-   * @property {(number|function|jqLite)} yOffset
-   * If set, specifies a vertical scroll-offset. This is often useful when there are fixed
-   * positioned elements at the top of the page, such as navbars, headers etc.
-   *
-   * `yOffset` can be specified in various ways:
-   * - **number**: A fixed number of pixels to be used as offset.<br /><br />
-   * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return
-   *   a number representing the offset (in pixels).<br /><br />
-   * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from
-   *   the top of the page to the element's bottom will be used as offset.<br />
-   *   **Note**: The element will be taken into account only as long as its `position` is set to
-   *   `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust
-   *   their height and/or positioning according to the viewport's size.
-   *
-   * <br />
-   * <div class="alert alert-warning">
-   * In order for `yOffset` to work properly, scrolling should take place on the document's root and
-   * not some child element.
-   * </div>
-   *
-   * @example
-     <example module="anchorScrollExample">
-       <file name="index.html">
-         <div id="scrollArea" ng-controller="ScrollController">
-           <a ng-click="gotoBottom()">Go to bottom</a>
-           <a id="bottom"></a> You're at the bottom!
-         </div>
-       </file>
-       <file name="script.js">
-         angular.module('anchorScrollExample', [])
-           .controller('ScrollController', ['$scope', '$location', '$anchorScroll',
-             function ($scope, $location, $anchorScroll) {
-               $scope.gotoBottom = function() {
-                 // set the location.hash to the id of
-                 // the element you wish to scroll to.
-                 $location.hash('bottom');
-
-                 // call $anchorScroll()
-                 $anchorScroll();
-               };
-             }]);
-       </file>
-       <file name="style.css">
-         #scrollArea {
-           height: 280px;
-           overflow: auto;
-         }
-
-         #bottom {
-           display: block;
-           margin-top: 2000px;
-         }
-       </file>
-     </example>
-   *
-   * <hr />
-   * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).
-   * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.
-   *
-   * @example
-     <example module="anchorScrollOffsetExample">
-       <file name="index.html">
-         <div class="fixed-header" ng-controller="headerCtrl">
-           <a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
-             Go to anchor {{x}}
-           </a>
-         </div>
-         <div id="anchor{{x}}" class="anchor" ng-repeat="x in [1,2,3,4,5]">
-           Anchor {{x}} of 5
-         </div>
-       </file>
-       <file name="script.js">
-         angular.module('anchorScrollOffsetExample', [])
-           .run(['$anchorScroll', function($anchorScroll) {
-             $anchorScroll.yOffset = 50;   // always scroll by 50 extra pixels
-           }])
-           .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
-             function ($anchorScroll, $location, $scope) {
-               $scope.gotoAnchor = function(x) {
-                 var newHash = 'anchor' + x;
-                 if ($location.hash() !== newHash) {
-                   // set the $location.hash to `newHash` and
-                   // $anchorScroll will automatically scroll to it
-                   $location.hash('anchor' + x);
-                 } else {
-                   // call $anchorScroll() explicitly,
-                   // since $location.hash hasn't changed
-                   $anchorScroll();
-                 }
-               };
-             }
-           ]);
-       </file>
-       <file name="style.css">
-         body {
-           padding-top: 50px;
-         }
-
-         .anchor {
-           border: 2px dashed DarkOrchid;
-           padding: 10px 10px 200px 10px;
-         }
-
-         .fixed-header {
-           background-color: rgba(0, 0, 0, 0.2);
-           height: 50px;
-           position: fixed;
-           top: 0; left: 0; right: 0;
-         }
-
-         .fixed-header > a {
-           display: inline-block;
-           margin: 5px 15px;
-         }
-       </file>
-     </example>
-   */
-  this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
-    var document = $window.document;
-
-    // Helper function to get first anchor from a NodeList
-    // (using `Array#some()` instead of `angular#forEach()` since it's more performant
-    //  and working in all supported browsers.)
-    function getFirstAnchor(list) {
-      var result = null;
-      Array.prototype.some.call(list, function(element) {
-        if (nodeName_(element) === 'a') {
-          result = element;
-          return true;
-        }
-      });
-      return result;
-    }
-
-    function getYOffset() {
-
-      var offset = scroll.yOffset;
-
-      if (isFunction(offset)) {
-        offset = offset();
-      } else if (isElement(offset)) {
-        var elem = offset[0];
-        var style = $window.getComputedStyle(elem);
-        if (style.position !== 'fixed') {
-          offset = 0;
-        } else {
-          offset = elem.getBoundingClientRect().bottom;
-        }
-      } else if (!isNumber(offset)) {
-        offset = 0;
-      }
-
-      return offset;
-    }
-
-    function scrollTo(elem) {
-      if (elem) {
-        elem.scrollIntoView();
-
-        var offset = getYOffset();
-
-        if (offset) {
-          // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.
-          // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the
-          // top of the viewport.
-          //
-          // IF the number of pixels from the top of `elem` to the end of the page's content is less
-          // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some
-          // way down the page.
-          //
-          // This is often the case for elements near the bottom of the page.
-          //
-          // In such cases we do not need to scroll the whole `offset` up, just the difference between
-          // the top of the element and the offset, which is enough to align the top of `elem` at the
-          // desired position.
-          var elemTop = elem.getBoundingClientRect().top;
-          $window.scrollBy(0, elemTop - offset);
-        }
-      } else {
-        $window.scrollTo(0, 0);
-      }
-    }
-
-    function scroll() {
-      var hash = $location.hash(), elm;
-
-      // empty hash, scroll to the top of the page
-      if (!hash) scrollTo(null);
-
-      // element with given id
-      else if ((elm = document.getElementById(hash))) scrollTo(elm);
-
-      // first anchor with given name :-D
-      else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);
-
-      // no element and hash == 'top', scroll to the top of the page
-      else if (hash === 'top') scrollTo(null);
-    }
-
-    // does not scroll when user clicks on anchor link that is currently on
-    // (no url change, no $location.hash() change), browser native does scroll
-    if (autoScrollingEnabled) {
-      $rootScope.$watch(function autoScrollWatch() {return $location.hash();},
-        function autoScrollWatchAction(newVal, oldVal) {
-          // skip the initial scroll if $location.hash is empty
-          if (newVal === oldVal && newVal === '') return;
-
-          jqLiteDocumentLoaded(function() {
-            $rootScope.$evalAsync(scroll);
-          });
-        });
-    }
-
-    return scroll;
-  }];
-}
-
-var $animateMinErr = minErr('$animate');
-
-/**
- * @ngdoc provider
- * @name $animateProvider
- *
- * @description
- * Default implementation of $animate that doesn't perform any animations, instead just
- * synchronously performs DOM
- * updates and calls done() callbacks.
- *
- * In order to enable animations the ngAnimate module has to be loaded.
- *
- * To see the functional implementation check out src/ngAnimate/animate.js
- */
-var $AnimateProvider = ['$provide', function($provide) {
-
-
-  this.$$selectors = {};
-
-
-  /**
-   * @ngdoc method
-   * @name $animateProvider#register
-   *
-   * @description
-   * Registers a new injectable animation factory function. The factory function produces the
-   * animation object which contains callback functions for each event that is expected to be
-   * animated.
-   *
-   *   * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`
-   *   must be called once the element animation is complete. If a function is returned then the
-   *   animation service will use this function to cancel the animation whenever a cancel event is
-   *   triggered.
-   *
-   *
-   * ```js
-   *   return {
-     *     eventFn : function(element, done) {
-     *       //code to run the animation
-     *       //once complete, then run done()
-     *       return function cancellationFunction() {
-     *         //code to cancel the animation
-     *       }
-     *     }
-     *   }
-   * ```
-   *
-   * @param {string} name The name of the animation.
-   * @param {Function} factory The factory function that will be executed to return the animation
-   *                           object.
-   */
-  this.register = function(name, factory) {
-    var key = name + '-animation';
-    if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',
-        "Expecting class selector starting with '.' got '{0}'.", name);
-    this.$$selectors[name.substr(1)] = key;
-    $provide.factory(key, factory);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $animateProvider#classNameFilter
-   *
-   * @description
-   * Sets and/or returns the CSS class regular expression that is checked when performing
-   * an animation. Upon bootstrap the classNameFilter value is not set at all and will
-   * therefore enable $animate to attempt to perform an animation on any element.
-   * When setting the classNameFilter value, animations will only be performed on elements
-   * that successfully match the filter expression. This in turn can boost performance
-   * for low-powered devices as well as applications containing a lot of structural operations.
-   * @param {RegExp=} expression The className expression which will be checked against all animations
-   * @return {RegExp} The current CSS className expression value. If null then there is no expression value
-   */
-  this.classNameFilter = function(expression) {
-    if (arguments.length === 1) {
-      this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
-    }
-    return this.$$classNameFilter;
-  };
-
-  this.$get = ['$$q', '$$asyncCallback', '$rootScope', function($$q, $$asyncCallback, $rootScope) {
-
-    var currentDefer;
-
-    function runAnimationPostDigest(fn) {
-      var cancelFn, defer = $$q.defer();
-      defer.promise.$$cancelFn = function ngAnimateMaybeCancel() {
-        cancelFn && cancelFn();
-      };
-
-      $rootScope.$$postDigest(function ngAnimatePostDigest() {
-        cancelFn = fn(function ngAnimateNotifyComplete() {
-          defer.resolve();
-        });
-      });
-
-      return defer.promise;
-    }
-
-    function resolveElementClasses(element, classes) {
-      var toAdd = [], toRemove = [];
-
-      var hasClasses = createMap();
-      forEach((element.attr('class') || '').split(/\s+/), function(className) {
-        hasClasses[className] = true;
-      });
-
-      forEach(classes, function(status, className) {
-        var hasClass = hasClasses[className];
-
-        // If the most recent class manipulation (via $animate) was to remove the class, and the
-        // element currently has the class, the class is scheduled for removal. Otherwise, if
-        // the most recent class manipulation (via $animate) was to add the class, and the
-        // element does not currently have the class, the class is scheduled to be added.
-        if (status === false && hasClass) {
-          toRemove.push(className);
-        } else if (status === true && !hasClass) {
-          toAdd.push(className);
-        }
-      });
-
-      return (toAdd.length + toRemove.length) > 0 &&
-        [toAdd.length ? toAdd : null, toRemove.length ? toRemove : null];
-    }
-
-    function cachedClassManipulation(cache, classes, op) {
-      for (var i=0, ii = classes.length; i < ii; ++i) {
-        var className = classes[i];
-        cache[className] = op;
-      }
-    }
-
-    function asyncPromise() {
-      // only serve one instance of a promise in order to save CPU cycles
-      if (!currentDefer) {
-        currentDefer = $$q.defer();
-        $$asyncCallback(function() {
-          currentDefer.resolve();
-          currentDefer = null;
-        });
-      }
-      return currentDefer.promise;
-    }
-
-    function applyStyles(element, options) {
-      if (angular.isObject(options)) {
-        var styles = extend(options.from || {}, options.to || {});
-        element.css(styles);
-      }
-    }
-
-    /**
-     *
-     * @ngdoc service
-     * @name $animate
-     * @description The $animate service provides rudimentary DOM manipulation functions to
-     * insert, remove and move elements within the DOM, as well as adding and removing classes.
-     * This service is the core service used by the ngAnimate $animator service which provides
-     * high-level animation hooks for CSS and JavaScript.
-     *
-     * $animate is available in the AngularJS core, however, the ngAnimate module must be included
-     * to enable full out animation support. Otherwise, $animate will only perform simple DOM
-     * manipulation operations.
-     *
-     * To learn more about enabling animation support, click here to visit the {@link ngAnimate
-     * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service
-     * page}.
-     */
-    return {
-      animate: function(element, from, to) {
-        applyStyles(element, { from: from, to: to });
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#enter
-       * @kind function
-       * @description Inserts the element into the DOM either after the `after` element or
-       * as the first child within the `parent` element. When the function is called a promise
-       * is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will be inserted into the DOM
-       * @param {DOMElement} parent the parent element which will append the element as
-       *   a child (if the after element is not present)
-       * @param {DOMElement} after the sibling element which will append the element
-       *   after itself
-       * @param {object=} options an optional collection of styles that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      enter: function(element, parent, after, options) {
-        applyStyles(element, options);
-        after ? after.after(element)
-              : parent.prepend(element);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#leave
-       * @kind function
-       * @description Removes the element from the DOM. When the function is called a promise
-       * is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will be removed from the DOM
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      leave: function(element, options) {
-        element.remove();
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#move
-       * @kind function
-       * @description Moves the position of the provided element within the DOM to be placed
-       * either after the `after` element or inside of the `parent` element. When the function
-       * is called a promise is returned that will be resolved at a later time.
-       *
-       * @param {DOMElement} element the element which will be moved around within the
-       *   DOM
-       * @param {DOMElement} parent the parent element where the element will be
-       *   inserted into (if the after element is not present)
-       * @param {DOMElement} after the sibling element where the element will be
-       *   positioned next to
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      move: function(element, parent, after, options) {
-        // Do not remove element before insert. Removing will cause data associated with the
-        // element to be dropped. Insert will implicitly do the remove.
-        return this.enter(element, parent, after, options);
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#addClass
-       * @kind function
-       * @description Adds the provided className CSS class value to the provided element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have the className value
-       *   added to it
-       * @param {string} className the CSS class which will be added to the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      addClass: function(element, className, options) {
-        return this.setClass(element, className, [], options);
-      },
-
-      $$addClassImmediately: function(element, className, options) {
-        element = jqLite(element);
-        className = !isString(className)
-                        ? (isArray(className) ? className.join(' ') : '')
-                        : className;
-        forEach(element, function(element) {
-          jqLiteAddClass(element, className);
-        });
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#removeClass
-       * @kind function
-       * @description Removes the provided className CSS class value from the provided element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have the className value
-       *   removed from it
-       * @param {string} className the CSS class which will be removed from the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      removeClass: function(element, className, options) {
-        return this.setClass(element, [], className, options);
-      },
-
-      $$removeClassImmediately: function(element, className, options) {
-        element = jqLite(element);
-        className = !isString(className)
-                        ? (isArray(className) ? className.join(' ') : '')
-                        : className;
-        forEach(element, function(element) {
-          jqLiteRemoveClass(element, className);
-        });
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#setClass
-       * @kind function
-       * @description Adds and/or removes the given CSS classes to and from the element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have its CSS classes changed
-       *   removed from it
-       * @param {string} add the CSS classes which will be added to the element
-       * @param {string} remove the CSS class which will be removed from the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      setClass: function(element, add, remove, options) {
-        var self = this;
-        var STORAGE_KEY = '$$animateClasses';
-        var createdCache = false;
-        element = jqLite(element);
-
-        var cache = element.data(STORAGE_KEY);
-        if (!cache) {
-          cache = {
-            classes: {},
-            options: options
-          };
-          createdCache = true;
-        } else if (options && cache.options) {
-          cache.options = angular.extend(cache.options || {}, options);
-        }
-
-        var classes = cache.classes;
-
-        add = isArray(add) ? add : add.split(' ');
-        remove = isArray(remove) ? remove : remove.split(' ');
-        cachedClassManipulation(classes, add, true);
-        cachedClassManipulation(classes, remove, false);
-
-        if (createdCache) {
-          cache.promise = runAnimationPostDigest(function(done) {
-            var cache = element.data(STORAGE_KEY);
-            element.removeData(STORAGE_KEY);
-
-            // in the event that the element is removed before postDigest
-            // is run then the cache will be undefined and there will be
-            // no need anymore to add or remove and of the element classes
-            if (cache) {
-              var classes = resolveElementClasses(element, cache.classes);
-              if (classes) {
-                self.$$setClassImmediately(element, classes[0], classes[1], cache.options);
-              }
-            }
-
-            done();
-          });
-          element.data(STORAGE_KEY, cache);
-        }
-
-        return cache.promise;
-      },
-
-      $$setClassImmediately: function(element, add, remove, options) {
-        add && this.$$addClassImmediately(element, add);
-        remove && this.$$removeClassImmediately(element, remove);
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      enabled: noop,
-      cancel: noop
-    };
-  }];
-}];
-
-function $$AsyncCallbackProvider() {
-  this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {
-    return $$rAF.supported
-      ? function(fn) { return $$rAF(fn); }
-      : function(fn) {
-        return $timeout(fn, 0, false);
-      };
-  }];
-}
-
-/* global stripHash: true */
-
-/**
- * ! This is a private undocumented service !
- *
- * @name $browser
- * @requires $log
- * @description
- * This object has two goals:
- *
- * - hide all the global state in the browser caused by the window object
- * - abstract away all the browser specific features and inconsistencies
- *
- * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`
- * service, which can be used for convenient testing of the application without the interaction with
- * the real browser apis.
- */
-/**
- * @param {object} window The global window object.
- * @param {object} document jQuery wrapped document.
- * @param {object} $log window.console or an object with the same interface.
- * @param {object} $sniffer $sniffer service
- */
-function Browser(window, document, $log, $sniffer) {
-  var self = this,
-      rawDocument = document[0],
-      location = window.location,
-      history = window.history,
-      setTimeout = window.setTimeout,
-      clearTimeout = window.clearTimeout,
-      pendingDeferIds = {};
-
-  self.isMock = false;
-
-  var outstandingRequestCount = 0;
-  var outstandingRequestCallbacks = [];
-
-  // TODO(vojta): remove this temporary api
-  self.$$completeOutstandingRequest = completeOutstandingRequest;
-  self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };
-
-  /**
-   * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`
-   * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.
-   */
-  function completeOutstandingRequest(fn) {
-    try {
-      fn.apply(null, sliceArgs(arguments, 1));
-    } finally {
-      outstandingRequestCount--;
-      if (outstandingRequestCount === 0) {
-        while (outstandingRequestCallbacks.length) {
-          try {
-            outstandingRequestCallbacks.pop()();
-          } catch (e) {
-            $log.error(e);
-          }
-        }
-      }
-    }
-  }
-
-  function getHash(url) {
-    var index = url.indexOf('#');
-    return index === -1 ? '' : url.substr(index + 1);
-  }
-
-  /**
-   * @private
-   * Note: this method is used only by scenario runner
-   * TODO(vojta): prefix this method with $$ ?
-   * @param {function()} callback Function that will be called when no outstanding request
-   */
-  self.notifyWhenNoOutstandingRequests = function(callback) {
-    // force browser to execute all pollFns - this is needed so that cookies and other pollers fire
-    // at some deterministic time in respect to the test runner's actions. Leaving things up to the
-    // regular poller would result in flaky tests.
-    forEach(pollFns, function(pollFn) { pollFn(); });
-
-    if (outstandingRequestCount === 0) {
-      callback();
-    } else {
-      outstandingRequestCallbacks.push(callback);
-    }
-  };
-
-  //////////////////////////////////////////////////////////////
-  // Poll Watcher API
-  //////////////////////////////////////////////////////////////
-  var pollFns = [],
-      pollTimeout;
-
-  /**
-   * @name $browser#addPollFn
-   *
-   * @param {function()} fn Poll function to add
-   *
-   * @description
-   * Adds a function to the list of functions that poller periodically executes,
-   * and starts polling if not started yet.
-   *
-   * @returns {function()} the added function
-   */
-  self.addPollFn = function(fn) {
-    if (isUndefined(pollTimeout)) startPoller(100, setTimeout);
-    pollFns.push(fn);
-    return fn;
-  };
-
-  /**
-   * @param {number} interval How often should browser call poll functions (ms)
-   * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.
-   *
-   * @description
-   * Configures the poller to run in the specified intervals, using the specified
-   * setTimeout fn and kicks it off.
-   */
-  function startPoller(interval, setTimeout) {
-    (function check() {
-      forEach(pollFns, function(pollFn) { pollFn(); });
-      pollTimeout = setTimeout(check, interval);
-    })();
-  }
-
-  //////////////////////////////////////////////////////////////
-  // URL API
-  //////////////////////////////////////////////////////////////
-
-  var cachedState, lastHistoryState,
-      lastBrowserUrl = location.href,
-      baseElement = document.find('base'),
-      reloadLocation = null;
-
-  cacheState();
-  lastHistoryState = cachedState;
-
-  /**
-   * @name $browser#url
-   *
-   * @description
-   * GETTER:
-   * Without any argument, this method just returns current value of location.href.
-   *
-   * SETTER:
-   * With at least one argument, this method sets url to new value.
-   * If html5 history api supported, pushState/replaceState is used, otherwise
-   * location.href/location.replace is used.
-   * Returns its own instance to allow chaining
-   *
-   * NOTE: this api is intended for use only by the $location service. Please use the
-   * {@link ng.$location $location service} to change url.
-   *
-   * @param {string} url New url (when used as setter)
-   * @param {boolean=} replace Should new url replace current history record?
-   * @param {object=} state object to use with pushState/replaceState
-   */
-  self.url = function(url, replace, state) {
-    // In modern browsers `history.state` is `null` by default; treating it separately
-    // from `undefined` would cause `$browser.url('/foo')` to change `history.state`
-    // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.
-    if (isUndefined(state)) {
-      state = null;
-    }
-
-    // Android Browser BFCache causes location, history reference to become stale.
-    if (location !== window.location) location = window.location;
-    if (history !== window.history) history = window.history;
-
-    // setter
-    if (url) {
-      var sameState = lastHistoryState === state;
-
-      // Don't change anything if previous and current URLs and states match. This also prevents
-      // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.
-      // See https://github.com/angular/angular.js/commit/ffb2701
-      if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
-        return self;
-      }
-      var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
-      lastBrowserUrl = url;
-      lastHistoryState = state;
-      // Don't use history API if only the hash changed
-      // due to a bug in IE10/IE11 which leads
-      // to not firing a `hashchange` nor `popstate` event
-      // in some cases (see #9143).
-      if ($sniffer.history && (!sameBase || !sameState)) {
-        history[replace ? 'replaceState' : 'pushState'](state, '', url);
-        cacheState();
-        // Do the assignment again so that those two variables are referentially identical.
-        lastHistoryState = cachedState;
-      } else {
-        if (!sameBase) {
-          reloadLocation = url;
-        }
-        if (replace) {
-          location.replace(url);
-        } else if (!sameBase) {
-          location.href = url;
-        } else {
-          location.hash = getHash(url);
-        }
-      }
-      return self;
-    // getter
-    } else {
-      // - reloadLocation is needed as browsers don't allow to read out
-      //   the new location.href if a reload happened.
-      // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
-      return reloadLocation || location.href.replace(/%27/g,"'");
-    }
-  };
-
-  /**
-   * @name $browser#state
-   *
-   * @description
-   * This method is a getter.
-   *
-   * Return history.state or null if history.state is undefined.
-   *
-   * @returns {object} state
-   */
-  self.state = function() {
-    return cachedState;
-  };
-
-  var urlChangeListeners = [],
-      urlChangeInit = false;
-
-  function cacheStateAndFireUrlChange() {
-    cacheState();
-    fireUrlChange();
-  }
-
-  // This variable should be used *only* inside the cacheState function.
-  var lastCachedState = null;
-  function cacheState() {
-    // This should be the only place in $browser where `history.state` is read.
-    cachedState = window.history.state;
-    cachedState = isUndefined(cachedState) ? null : cachedState;
-
-    // Prevent callbacks fo fire twice if both hashchange & popstate were fired.
-    if (equals(cachedState, lastCachedState)) {
-      cachedState = lastCachedState;
-    }
-    lastCachedState = cachedState;
-  }
-
-  function fireUrlChange() {
-    if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) {
-      return;
-    }
-
-    lastBrowserUrl = self.url();
-    lastHistoryState = cachedState;
-    forEach(urlChangeListeners, function(listener) {
-      listener(self.url(), cachedState);
-    });
-  }
-
-  /**
-   * @name $browser#onUrlChange
-   *
-   * @description
-   * Register callback function that will be called, when url changes.
-   *
-   * It's only called when the url is changed from outside of angular:
-   * - user types different url into address bar
-   * - user clicks on history (forward/back) button
-   * - user clicks on a link
-   *
-   * It's not called when url is changed by $browser.url() method
-   *
-   * The listener gets called with new url as parameter.
-   *
-   * NOTE: this api is intended for use only by the $location service. Please use the
-   * {@link ng.$location $location service} to monitor url changes in angular apps.
-   *
-   * @param {function(string)} listener Listener function to be called when url changes.
-   * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.
-   */
-  self.onUrlChange = function(callback) {
-    // TODO(vojta): refactor to use node's syntax for events
-    if (!urlChangeInit) {
-      // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)
-      // don't fire popstate when user change the address bar and don't fire hashchange when url
-      // changed by push/replaceState
-
-      // html5 history api - popstate event
-      if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange);
-      // hashchange event
-      jqLite(window).on('hashchange', cacheStateAndFireUrlChange);
-
-      urlChangeInit = true;
-    }
-
-    urlChangeListeners.push(callback);
-    return callback;
-  };
-
-  /**
-   * Checks whether the url has changed outside of Angular.
-   * Needs to be exported to be able to check for changes that have been done in sync,
-   * as hashchange/popstate events fire in async.
-   */
-  self.$$checkUrlChange = fireUrlChange;
-
-  //////////////////////////////////////////////////////////////
-  // Misc API
-  //////////////////////////////////////////////////////////////
-
-  /**
-   * @name $browser#baseHref
-   *
-   * @description
-   * Returns current <base href>
-   * (always relative - without domain)
-   *
-   * @returns {string} The current base href
-   */
-  self.baseHref = function() {
-    var href = baseElement.attr('href');
-    return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
-  };
-
-  //////////////////////////////////////////////////////////////
-  // Cookies API
-  //////////////////////////////////////////////////////////////
-  var lastCookies = {};
-  var lastCookieString = '';
-  var cookiePath = self.baseHref();
-
-  function safeDecodeURIComponent(str) {
-    try {
-      return decodeURIComponent(str);
-    } catch (e) {
-      return str;
-    }
-  }
-
-  /**
-   * @name $browser#cookies
-   *
-   * @param {string=} name Cookie name
-   * @param {string=} value Cookie value
-   *
-   * @description
-   * The cookies method provides a 'private' low level access to browser cookies.
-   * It is not meant to be used directly, use the $cookie service instead.
-   *
-   * The return values vary depending on the arguments that the method was called with as follows:
-   *
-   * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify
-   *   it
-   * - cookies(name, value) -> set name to value, if value is undefined delete the cookie
-   * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that
-   *   way)
-   *
-   * @returns {Object} Hash of all cookies (if called without any parameter)
-   */
-  self.cookies = function(name, value) {
-    var cookieLength, cookieArray, cookie, i, index;
-
-    if (name) {
-      if (value === undefined) {
-        rawDocument.cookie = encodeURIComponent(name) + "=;path=" + cookiePath +
-                                ";expires=Thu, 01 Jan 1970 00:00:00 GMT";
-      } else {
-        if (isString(value)) {
-          cookieLength = (rawDocument.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) +
-                                ';path=' + cookiePath).length + 1;
-
-          // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
-          // - 300 cookies
-          // - 20 cookies per unique domain
-          // - 4096 bytes per cookie
-          if (cookieLength > 4096) {
-            $log.warn("Cookie '" + name +
-              "' possibly not set or overflowed because it was too large (" +
-              cookieLength + " > 4096 bytes)!");
-          }
-        }
-      }
-    } else {
-      if (rawDocument.cookie !== lastCookieString) {
-        lastCookieString = rawDocument.cookie;
-        cookieArray = lastCookieString.split("; ");
-        lastCookies = {};
-
-        for (i = 0; i < cookieArray.length; i++) {
-          cookie = cookieArray[i];
-          index = cookie.indexOf('=');
-          if (index > 0) { //ignore nameless cookies
-            name = safeDecodeURIComponent(cookie.substring(0, index));
-            // the first value that is seen for a cookie is the most
-            // specific one.  values for the same cookie name that
-            // follow are for less specific paths.
-            if (lastCookies[name] === undefined) {
-              lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));
-            }
-          }
-        }
-      }
-      return lastCookies;
-    }
-  };
-
-
-  /**
-   * @name $browser#defer
-   * @param {function()} fn A function, who's execution should be deferred.
-   * @param {number=} [delay=0] of milliseconds to defer the function execution.
-   * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.
-   *
-   * @description
-   * Executes a fn asynchronously via `setTimeout(fn, delay)`.
-   *
-   * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using
-   * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed
-   * via `$browser.defer.flush()`.
-   *
-   */
-  self.defer = function(fn, delay) {
-    var timeoutId;
-    outstandingRequestCount++;
-    timeoutId = setTimeout(function() {
-      delete pendingDeferIds[timeoutId];
-      completeOutstandingRequest(fn);
-    }, delay || 0);
-    pendingDeferIds[timeoutId] = true;
-    return timeoutId;
-  };
-
-
-  /**
-   * @name $browser#defer.cancel
-   *
-   * @description
-   * Cancels a deferred task identified with `deferId`.
-   *
-   * @param {*} deferId Token returned by the `$browser.defer` function.
-   * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
-   *                    canceled.
-   */
-  self.defer.cancel = function(deferId) {
-    if (pendingDeferIds[deferId]) {
-      delete pendingDeferIds[deferId];
-      clearTimeout(deferId);
-      completeOutstandingRequest(noop);
-      return true;
-    }
-    return false;
-  };
-
-}
-
-function $BrowserProvider() {
-  this.$get = ['$window', '$log', '$sniffer', '$document',
-      function($window, $log, $sniffer, $document) {
-        return new Browser($window, $document, $log, $sniffer);
-      }];
-}
-
-/**
- * @ngdoc service
- * @name $cacheFactory
- *
- * @description
- * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
- * them.
- *
- * ```js
- *
- *  var cache = $cacheFactory('cacheId');
- *  expect($cacheFactory.get('cacheId')).toBe(cache);
- *  expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
- *
- *  cache.put("key", "value");
- *  cache.put("another key", "another value");
- *
- *  // We've specified no options on creation
- *  expect(cache.info()).toEqual({id: 'cacheId', size: 2});
- *
- * ```
- *
- *
- * @param {string} cacheId Name or id of the newly created cache.
- * @param {object=} options Options object that specifies the cache behavior. Properties:
- *
- *   - `{number=}` `capacity` — turns the cache into LRU cache.
- *
- * @returns {object} Newly created cache object with the following set of methods:
- *
- * - `{object}` `info()` — Returns id, size, and options of cache.
- * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns
- *   it.
- * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.
- * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.
- * - `{void}` `removeAll()` — Removes all cached values.
- * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
- *
- * @example
-   <example module="cacheExampleApp">
-     <file name="index.html">
-       <div ng-controller="CacheController">
-         <input ng-model="newCacheKey" placeholder="Key">
-         <input ng-model="newCacheValue" placeholder="Value">
-         <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
-
-         <p ng-if="keys.length">Cached Values</p>
-         <div ng-repeat="key in keys">
-           <span ng-bind="key"></span>
-           <span>: </span>
-           <b ng-bind="cache.get(key)"></b>
-         </div>
-
-         <p>Cache Info</p>
-         <div ng-repeat="(key, value) in cache.info()">
-           <span ng-bind="key"></span>
-           <span>: </span>
-           <b ng-bind="value"></b>
-         </div>
-       </div>
-     </file>
-     <file name="script.js">
-       angular.module('cacheExampleApp', []).
-         controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
-           $scope.keys = [];
-           $scope.cache = $cacheFactory('cacheId');
-           $scope.put = function(key, value) {
-             if ($scope.cache.get(key) === undefined) {
-               $scope.keys.push(key);
-             }
-             $scope.cache.put(key, value === undefined ? null : value);
-           };
-         }]);
-     </file>
-     <file name="style.css">
-       p {
-         margin: 10px 0 3px;
-       }
-     </file>
-   </example>
- */
-function $CacheFactoryProvider() {
-
-  this.$get = function() {
-    var caches = {};
-
-    function cacheFactory(cacheId, options) {
-      if (cacheId in caches) {
-        throw minErr('$cacheFactory')('iid', "CacheId '{0}' is already taken!", cacheId);
-      }
-
-      var size = 0,
-          stats = extend({}, options, {id: cacheId}),
-          data = {},
-          capacity = (options && options.capacity) || Number.MAX_VALUE,
-          lruHash = {},
-          freshEnd = null,
-          staleEnd = null;
-
-      /**
-       * @ngdoc type
-       * @name $cacheFactory.Cache
-       *
-       * @description
-       * A cache object used to store and retrieve data, primarily used by
-       * {@link $http $http} and the {@link ng.directive:script script} directive to cache
-       * templates and other data.
-       *
-       * ```js
-       *  angular.module('superCache')
-       *    .factory('superCache', ['$cacheFactory', function($cacheFactory) {
-       *      return $cacheFactory('super-cache');
-       *    }]);
-       * ```
-       *
-       * Example test:
-       *
-       * ```js
-       *  it('should behave like a cache', inject(function(superCache) {
-       *    superCache.put('key', 'value');
-       *    superCache.put('another key', 'another value');
-       *
-       *    expect(superCache.info()).toEqual({
-       *      id: 'super-cache',
-       *      size: 2
-       *    });
-       *
-       *    superCache.remove('another key');
-       *    expect(superCache.get('another key')).toBeUndefined();
-       *
-       *    superCache.removeAll();
-       *    expect(superCache.info()).toEqual({
-       *      id: 'super-cache',
-       *      size: 0
-       *    });
-       *  }));
-       * ```
-       */
-      return caches[cacheId] = {
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#put
-         * @kind function
-         *
-         * @description
-         * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
-         * retrieved later, and incrementing the size of the cache if the key was not already
-         * present in the cache. If behaving like an LRU cache, it will also remove stale
-         * entries from the set.
-         *
-         * It will not insert undefined values into the cache.
-         *
-         * @param {string} key the key under which the cached data is stored.
-         * @param {*} value the value to store alongside the key. If it is undefined, the key
-         *    will not be stored.
-         * @returns {*} the value stored.
-         */
-        put: function(key, value) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
-
-            refresh(lruEntry);
-          }
-
-          if (isUndefined(value)) return;
-          if (!(key in data)) size++;
-          data[key] = value;
-
-          if (size > capacity) {
-            this.remove(staleEnd.key);
-          }
-
-          return value;
-        },
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#get
-         * @kind function
-         *
-         * @description
-         * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
-         *
-         * @param {string} key the key of the data to be retrieved
-         * @returns {*} the value stored.
-         */
-        get: function(key) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key];
-
-            if (!lruEntry) return;
-
-            refresh(lruEntry);
-          }
-
-          return data[key];
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#remove
-         * @kind function
-         *
-         * @description
-         * Removes an entry from the {@link $cacheFactory.Cache Cache} object.
-         *
-         * @param {string} key the key of the entry to be removed
-         */
-        remove: function(key) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key];
-
-            if (!lruEntry) return;
-
-            if (lruEntry == freshEnd) freshEnd = lruEntry.p;
-            if (lruEntry == staleEnd) staleEnd = lruEntry.n;
-            link(lruEntry.n,lruEntry.p);
-
-            delete lruHash[key];
-          }
-
-          delete data[key];
-          size--;
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#removeAll
-         * @kind function
-         *
-         * @description
-         * Clears the cache object of any entries.
-         */
-        removeAll: function() {
-          data = {};
-          size = 0;
-          lruHash = {};
-          freshEnd = staleEnd = null;
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#destroy
-         * @kind function
-         *
-         * @description
-         * Destroys the {@link $cacheFactory.Cache Cache} object entirely,
-         * removing it from the {@link $cacheFactory $cacheFactory} set.
-         */
-        destroy: function() {
-          data = null;
-          stats = null;
-          lruHash = null;
-          delete caches[cacheId];
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#info
-         * @kind function
-         *
-         * @description
-         * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
-         *
-         * @returns {object} an object with the following properties:
-         *   <ul>
-         *     <li>**id**: the id of the cache instance</li>
-         *     <li>**size**: the number of entries kept in the cache instance</li>
-         *     <li>**...**: any additional properties from the options object when creating the
-         *       cache.</li>
-         *   </ul>
-         */
-        info: function() {
-          return extend({}, stats, {size: size});
-        }
-      };
-
-
-      /**
-       * makes the `entry` the freshEnd of the LRU linked list
-       */
-      function refresh(entry) {
-        if (entry != freshEnd) {
-          if (!staleEnd) {
-            staleEnd = entry;
-          } else if (staleEnd == entry) {
-            staleEnd = entry.n;
-          }
-
-          link(entry.n, entry.p);
-          link(entry, freshEnd);
-          freshEnd = entry;
-          freshEnd.n = null;
-        }
-      }
-
-
-      /**
-       * bidirectionally links two entries of the LRU linked list
-       */
-      function link(nextEntry, prevEntry) {
-        if (nextEntry != prevEntry) {
-          if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify
-          if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify
-        }
-      }
-    }
-
-
-  /**
-   * @ngdoc method
-   * @name $cacheFactory#info
-   *
-   * @description
-   * Get information about all the caches that have been created
-   *
-   * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`
-   */
-    cacheFactory.info = function() {
-      var info = {};
-      forEach(caches, function(cache, cacheId) {
-        info[cacheId] = cache.info();
-      });
-      return info;
-    };
-
-
-  /**
-   * @ngdoc method
-   * @name $cacheFactory#get
-   *
-   * @description
-   * Get access to a cache object by the `cacheId` used when it was created.
-   *
-   * @param {string} cacheId Name or id of a cache to access.
-   * @returns {object} Cache object identified by the cacheId or undefined if no such cache.
-   */
-    cacheFactory.get = function(cacheId) {
-      return caches[cacheId];
-    };
-
-
-    return cacheFactory;
-  };
-}
-
-/**
- * @ngdoc service
- * @name $templateCache
- *
- * @description
- * The first time a template is used, it is loaded in the template cache for quick retrieval. You
- * can load templates directly into the cache in a `script` tag, or by consuming the
- * `$templateCache` service directly.
- *
- * Adding via the `script` tag:
- *
- * ```html
- *   <script type="text/ng-template" id="templateId.html">
- *     <p>This is the content of the template</p>
- *   </script>
- * ```
- *
- * **Note:** the `script` tag containing the template does not need to be included in the `head` of
- * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,
- * element with ng-app attribute), otherwise the template will be ignored.
- *
- * Adding via the $templateCache service:
- *
- * ```js
- * var myApp = angular.module('myApp', []);
- * myApp.run(function($templateCache) {
- *   $templateCache.put('templateId.html', 'This is the content of the template');
- * });
- * ```
- *
- * To retrieve the template later, simply use it in your HTML:
- * ```html
- * <div ng-include=" 'templateId.html' "></div>
- * ```
- *
- * or get it via Javascript:
- * ```js
- * $templateCache.get('templateId.html')
- * ```
- *
- * See {@link ng.$cacheFactory $cacheFactory}.
- *
- */
-function $TemplateCacheProvider() {
-  this.$get = ['$cacheFactory', function($cacheFactory) {
-    return $cacheFactory('templates');
-  }];
-}
-
-/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
- *
- * DOM-related variables:
- *
- * - "node" - DOM Node
- * - "element" - DOM Element or Node
- * - "$node" or "$element" - jqLite-wrapped node or element
- *
- *
- * Compiler related stuff:
- *
- * - "linkFn" - linking fn of a single directive
- * - "nodeLinkFn" - function that aggregates all linking fns for a particular node
- * - "childLinkFn" -  function that aggregates all linking fns for child nodes of a particular node
- * - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList)
- */
-
-
-/**
- * @ngdoc service
- * @name $compile
- * @kind function
- *
- * @description
- * Compiles an HTML string or DOM into a template and produces a template function, which
- * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
- *
- * The compilation is a process of walking the DOM tree and matching DOM elements to
- * {@link ng.$compileProvider#directive directives}.
- *
- * <div class="alert alert-warning">
- * **Note:** This document is an in-depth reference of all directive options.
- * For a gentle introduction to directives with examples of common use cases,
- * see the {@link guide/directive directive guide}.
- * </div>
- *
- * ## Comprehensive Directive API
- *
- * There are many different options for a directive.
- *
- * The difference resides in the return value of the factory function.
- * You can either return a "Directive Definition Object" (see below) that defines the directive properties,
- * or just the `postLink` function (all other properties will have the default values).
- *
- * <div class="alert alert-success">
- * **Best Practice:** It's recommended to use the "directive definition object" form.
- * </div>
- *
- * Here's an example directive declared with a Directive Definition Object:
- *
- * ```js
- *   var myModule = angular.module(...);
- *
- *   myModule.directive('directiveName', function factory(injectables) {
- *     var directiveDefinitionObject = {
- *       priority: 0,
- *       template: '<div></div>', // or // function(tElement, tAttrs) { ... },
- *       // or
- *       // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },
- *       transclude: false,
- *       restrict: 'A',
- *       templateNamespace: 'html',
- *       scope: false,
- *       controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
- *       controllerAs: 'stringAlias',
- *       require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
- *       compile: function compile(tElement, tAttrs, transclude) {
- *         return {
- *           pre: function preLink(scope, iElement, iAttrs, controller) { ... },
- *           post: function postLink(scope, iElement, iAttrs, controller) { ... }
- *         }
- *         // or
- *         // return function postLink( ... ) { ... }
- *       },
- *       // or
- *       // link: {
- *       //  pre: function preLink(scope, iElement, iAttrs, controller) { ... },
- *       //  post: function postLink(scope, iElement, iAttrs, controller) { ... }
- *       // }
- *       // or
- *       // link: function postLink( ... ) { ... }
- *     };
- *     return directiveDefinitionObject;
- *   });
- * ```
- *
- * <div class="alert alert-warning">
- * **Note:** Any unspecified options will use the default value. You can see the default values below.
- * </div>
- *
- * Therefore the above can be simplified as:
- *
- * ```js
- *   var myModule = angular.module(...);
- *
- *   myModule.directive('directiveName', function factory(injectables) {
- *     var directiveDefinitionObject = {
- *       link: function postLink(scope, iElement, iAttrs) { ... }
- *     };
- *     return directiveDefinitionObject;
- *     // or
- *     // return function postLink(scope, iElement, iAttrs) { ... }
- *   });
- * ```
- *
- *
- *
- * ### Directive Definition Object
- *
- * The directive definition object provides instructions to the {@link ng.$compile
- * compiler}. The attributes are:
- *
- * #### `multiElement`
- * When this property is set to true, the HTML compiler will collect DOM nodes between
- * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them
- * together as the directive elements. It is recommended that this feature be used on directives
- * which are not strictly behavioural (such as {@link ngClick}), and which
- * do not manipulate or replace child nodes (such as {@link ngInclude}).
- *
- * #### `priority`
- * When there are multiple directives defined on a single DOM element, sometimes it
- * is necessary to specify the order in which the directives are applied. The `priority` is used
- * to sort the directives before their `compile` functions get called. Priority is defined as a
- * number. Directives with greater numerical `priority` are compiled first. Pre-link functions
- * are also run in priority order, but post-link functions are run in reverse order. The order
- * of directives with the same priority is undefined. The default priority is `0`.
- *
- * #### `terminal`
- * If set to true then the current `priority` will be the last set of directives
- * which will execute (any directives at the current priority will still execute
- * as the order of execution on same `priority` is undefined). Note that expressions
- * and other directives used in the directive's template will also be excluded from execution.
- *
- * #### `scope`
- * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the
- * same element request a new scope, only one new scope is created. The new scope rule does not
- * apply for the root of the template since the root of the template always gets a new scope.
- *
- * **If set to `{}` (object hash),** then a new "isolate" scope is created. The 'isolate' scope differs from
- * normal scope in that it does not prototypically inherit from the parent scope. This is useful
- * when creating reusable components, which should not accidentally read or modify data in the
- * parent scope.
- *
- * The 'isolate' scope takes an object hash which defines a set of local scope properties
- * derived from the parent scope. These local properties are useful for aliasing values for
- * templates. Locals definition is a hash of local scope property to its source:
- *
- * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is
- *   always a string since DOM attributes are strings. If no `attr` name is specified  then the
- *   attribute name is assumed to be the same as the local name.
- *   Given `<widget my-attr="hello {{name}}">` and widget definition
- *   of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect
- *   the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the
- *   `localName` property on the widget scope. The `name` is read from the parent scope (not
- *   component scope).
- *
- * * `=` or `=attr` - set up bi-directional binding between a local scope property and the
- *   parent scope property of name defined via the value of the `attr` attribute. If no `attr`
- *   name is specified then the attribute name is assumed to be the same as the local name.
- *   Given `<widget my-attr="parentModel">` and widget definition of
- *   `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the
- *   value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected
- *   in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent
- *   scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You
- *   can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional. If
- *   you want to shallow watch for changes (i.e. $watchCollection instead of $watch) you can use
- *   `=*` or `=*attr` (`=*?` or `=*?attr` if the property is optional).
- *
- * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.
- *   If no `attr` name is specified then the attribute name is assumed to be the same as the
- *   local name. Given `<widget my-attr="count = count + value">` and widget definition of
- *   `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to
- *   a function wrapper for the `count = count + value` expression. Often it's desirable to
- *   pass data from the isolated scope via an expression to the parent scope, this can be
- *   done by passing a map of local variable names and values into the expression wrapper fn.
- *   For example, if the expression is `increment(amount)` then we can specify the amount value
- *   by calling the `localFn` as `localFn({amount: 22})`.
- *
- *
- * #### `bindToController`
- * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController: true` will
- * allow a component to have its properties bound to the controller, rather than to scope. When the controller
- * is instantiated, the initial values of the isolate scope bindings are already available.
- *
- * #### `controller`
- * Controller constructor function. The controller is instantiated before the
- * pre-linking phase and it is shared with other directives (see
- * `require` attribute). This allows the directives to communicate with each other and augment
- * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:
- *
- * * `$scope` - Current scope associated with the element
- * * `$element` - Current element
- * * `$attrs` - Current attributes object for the element
- * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
- *   `function([scope], cloneLinkingFn, futureParentElement)`.
- *    * `scope`: optional argument to override the scope.
- *    * `cloneLinkingFn`: optional argument to create clones of the original transcluded content.
- *    * `futureParentElement`:
- *        * defines the parent to which the `cloneLinkingFn` will add the cloned elements.
- *        * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.
- *        * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)
- *          and when the `cloneLinkinFn` is passed,
- *          as those elements need to created and cloned in a special way when they are defined outside their
- *          usual containers (e.g. like `<svg>`).
- *        * See also the `directive.templateNamespace` property.
- *
- *
- * #### `require`
- * Require another directive and inject its controller as the fourth argument to the linking function. The
- * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the
- * injected argument will be an array in corresponding order. If no such directive can be
- * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:
- *
- * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
- * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
- * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
- * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.
- * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
- *   `null` to the `link` fn if not found.
- * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass
- *   `null` to the `link` fn if not found.
- *
- *
- * #### `controllerAs`
- * Controller alias at the directive scope. An alias for the controller so it
- * can be referenced at the directive template. The directive needs to define a scope for this
- * configuration to be used. Useful in the case when directive is used as component.
- *
- *
- * #### `restrict`
- * String of subset of `EACM` which restricts the directive to a specific directive
- * declaration style. If omitted, the defaults (elements and attributes) are used.
- *
- * * `E` - Element name (default): `<my-directive></my-directive>`
- * * `A` - Attribute (default): `<div my-directive="exp"></div>`
- * * `C` - Class: `<div class="my-directive: exp;"></div>`
- * * `M` - Comment: `<!-- directive: my-directive exp -->`
- *
- *
- * #### `templateNamespace`
- * String representing the document type used by the markup in the template.
- * AngularJS needs this information as those elements need to be created and cloned
- * in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.
- *
- * * `html` - All root nodes in the template are HTML. Root nodes may also be
- *   top-level elements such as `<svg>` or `<math>`.
- * * `svg` - The root nodes in the template are SVG elements (excluding `<math>`).
- * * `math` - The root nodes in the template are MathML elements (excluding `<svg>`).
- *
- * If no `templateNamespace` is specified, then the namespace is considered to be `html`.
- *
- * #### `template`
- * HTML markup that may:
- * * Replace the contents of the directive's element (default).
- * * Replace the directive's element itself (if `replace` is true - DEPRECATED).
- * * Wrap the contents of the directive's element (if `transclude` is true).
- *
- * Value may be:
- *
- * * A string. For example `<div red-on-hover>{{delete_str}}</div>`.
- * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`
- *   function api below) and returns a string value.
- *
- *
- * #### `templateUrl`
- * This is similar to `template` but the template is loaded from the specified URL, asynchronously.
- *
- * Because template loading is asynchronous the compiler will suspend compilation of directives on that element
- * for later when the template has been resolved.  In the meantime it will continue to compile and link
- * sibling and parent elements as though this element had not contained any directives.
- *
- * The compiler does not suspend the entire compilation to wait for templates to be loaded because this
- * would result in the whole app "stalling" until all templates are loaded asynchronously - even in the
- * case when only one deeply nested directive has `templateUrl`.
- *
- * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}
- *
- * You can specify `templateUrl` as a string representing the URL or as a function which takes two
- * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns
- * a string value representing the url.  In either case, the template URL is passed through {@link
- * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.
- *
- *
- * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0)
- * specify what the template should replace. Defaults to `false`.
- *
- * * `true` - the template will replace the directive's element.
- * * `false` - the template will replace the contents of the directive's element.
- *
- * The replacement process migrates all of the attributes / classes from the old element to the new
- * one. See the {@link guide/directive#template-expanding-directive
- * Directives Guide} for an example.
- *
- * There are very few scenarios where element replacement is required for the application function,
- * the main one being reusable custom components that are used within SVG contexts
- * (because SVG doesn't work with custom elements in the DOM tree).
- *
- * #### `transclude`
- * Extract the contents of the element where the directive appears and make it available to the directive.
- * The contents are compiled and provided to the directive as a **transclusion function**. See the
- * {@link $compile#transclusion Transclusion} section below.
- *
- * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the
- * directive's element or the entire element:
- *
- * * `true` - transclude the content (i.e. the child nodes) of the directive's element.
- * * `'element'` - transclude the whole of the directive's element including any directives on this
- *   element that defined at a lower priority than this directive. When used, the `template`
- *   property is ignored.
- *
- *
- * #### `compile`
- *
- * ```js
- *   function compile(tElement, tAttrs, transclude) { ... }
- * ```
- *
- * The compile function deals with transforming the template DOM. Since most directives do not do
- * template transformation, it is not used often. The compile function takes the following arguments:
- *
- *   * `tElement` - template element - The element where the directive has been declared. It is
- *     safe to do template transformation on the element and child elements only.
- *
- *   * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared
- *     between all directive compile functions.
- *
- *   * `transclude` -  [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`
- *
- * <div class="alert alert-warning">
- * **Note:** The template instance and the link instance may be different objects if the template has
- * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that
- * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
- * should be done in a linking function rather than in a compile function.
- * </div>
-
- * <div class="alert alert-warning">
- * **Note:** The compile function cannot handle directives that recursively use themselves in their
- * own templates or compile functions. Compiling these directives results in an infinite loop and a
- * stack overflow errors.
- *
- * This can be avoided by manually using $compile in the postLink function to imperatively compile
- * a directive's template instead of relying on automatic template compilation via `template` or
- * `templateUrl` declaration or manual compilation inside the compile function.
- * </div>
- *
- * <div class="alert alert-error">
- * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
- *   e.g. does not know about the right outer scope. Please use the transclude function that is passed
- *   to the link function instead.
- * </div>
-
- * A compile function can have a return value which can be either a function or an object.
- *
- * * returning a (post-link) function - is equivalent to registering the linking function via the
- *   `link` property of the config object when the compile function is empty.
- *
- * * returning an object with function(s) registered via `pre` and `post` properties - allows you to
- *   control when a linking function should be called during the linking phase. See info about
- *   pre-linking and post-linking functions below.
- *
- *
- * #### `link`
- * This property is used only if the `compile` property is not defined.
- *
- * ```js
- *   function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
- * ```
- *
- * The link function is responsible for registering DOM listeners as well as updating the DOM. It is
- * executed after the template has been cloned. This is where most of the directive logic will be
- * put.
- *
- *   * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the
- *     directive for registering {@link ng.$rootScope.Scope#$watch watches}.
- *
- *   * `iElement` - instance element - The element where the directive is to be used. It is safe to
- *     manipulate the children of the element only in `postLink` function since the children have
- *     already been linked.
- *
- *   * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared
- *     between all directive linking functions.
- *
- *   * `controller` - a controller instance - A controller instance if at least one directive on the
- *     element defines a controller. The controller is shared among all the directives, which allows
- *     the directives to use the controllers as a communication channel.
- *
- *   * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.
- *     This is the same as the `$transclude`
- *     parameter of directive controllers, see there for details.
- *     `function([scope], cloneLinkingFn, futureParentElement)`.
- *
- * #### Pre-linking function
- *
- * Executed before the child elements are linked. Not safe to do DOM transformation since the
- * compiler linking function will fail to locate the correct elements for linking.
- *
- * #### Post-linking function
- *
- * Executed after the child elements are linked.
- *
- * Note that child elements that contain `templateUrl` directives will not have been compiled
- * and linked since they are waiting for their template to load asynchronously and their own
- * compilation and linking has been suspended until that occurs.
- *
- * It is safe to do DOM transformation in the post-linking function on elements that are not waiting
- * for their async templates to be resolved.
- *
- *
- * ### Transclusion
- *
- * Transclusion is the process of extracting a collection of DOM element from one part of the DOM and
- * copying them to another part of the DOM, while maintaining their connection to the original AngularJS
- * scope from where they were taken.
- *
- * Transclusion is used (often with {@link ngTransclude}) to insert the
- * original contents of a directive's element into a specified place in the template of the directive.
- * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded
- * content has access to the properties on the scope from which it was taken, even if the directive
- * has isolated scope.
- * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.
- *
- * This makes it possible for the widget to have private state for its template, while the transcluded
- * content has access to its originating scope.
- *
- * <div class="alert alert-warning">
- * **Note:** When testing an element transclude directive you must not place the directive at the root of the
- * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives
- * Testing Transclusion Directives}.
- * </div>
- *
- * #### Transclusion Functions
- *
- * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion
- * function** to the directive's `link` function and `controller`. This transclusion function is a special
- * **linking function** that will return the compiled contents linked to a new transclusion scope.
- *
- * <div class="alert alert-info">
- * If you are just using {@link ngTransclude} then you don't need to worry about this function, since
- * ngTransclude will deal with it for us.
- * </div>
- *
- * If you want to manually control the insertion and removal of the transcluded content in your directive
- * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery
- * object that contains the compiled DOM, which is linked to the correct transclusion scope.
- *
- * When you call a transclusion function you can pass in a **clone attach function**. This function accepts
- * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded
- * content and the `scope` is the newly created transclusion scope, to which the clone is bound.
- *
- * <div class="alert alert-info">
- * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function
- * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.
- * </div>
- *
- * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone
- * attach function**:
- *
- * ```js
- * var transcludedContent, transclusionScope;
- *
- * $transclude(function(clone, scope) {
- *   element.append(clone);
- *   transcludedContent = clone;
- *   transclusionScope = scope;
- * });
- * ```
- *
- * Later, if you want to remove the transcluded content from your DOM then you should also destroy the
- * associated transclusion scope:
- *
- * ```js
- * transcludedContent.remove();
- * transclusionScope.$destroy();
- * ```
- *
- * <div class="alert alert-info">
- * **Best Practice**: if you intend to add and remove transcluded content manually in your directive
- * (by calling the transclude function to get the DOM and and calling `element.remove()` to remove it),
- * then you are also responsible for calling `$destroy` on the transclusion scope.
- * </div>
- *
- * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}
- * automatically destroy their transluded clones as necessary so you do not need to worry about this if
- * you are simply using {@link ngTransclude} to inject the transclusion into your directive.
- *
- *
- * #### Transclusion Scopes
- *
- * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion
- * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed
- * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it
- * was taken.
- *
- * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look
- * like this:
- *
- * ```html
- * <div ng-app>
- *   <div isolate>
- *     <div transclusion>
- *     </div>
- *   </div>
- * </div>
- * ```
- *
- * The `$parent` scope hierarchy will look like this:
- *
- * ```
- * - $rootScope
- *   - isolate
- *     - transclusion
- * ```
- *
- * but the scopes will inherit prototypically from different scopes to their `$parent`.
- *
- * ```
- * - $rootScope
- *   - transclusion
- * - isolate
- * ```
- *
- *
- * ### Attributes
- *
- * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the
- * `link()` or `compile()` functions. It has a variety of uses.
- *
- * accessing *Normalized attribute names:*
- * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.
- * the attributes object allows for normalized access to
- *   the attributes.
- *
- * * *Directive inter-communication:* All directives share the same instance of the attributes
- *   object which allows the directives to use the attributes object as inter directive
- *   communication.
- *
- * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object
- *   allowing other directives to read the interpolated value.
- *
- * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes
- *   that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also
- *   the only way to easily get the actual value because during the linking phase the interpolation
- *   hasn't been evaluated yet and so the value is at this time set to `undefined`.
- *
- * ```js
- * function linkingFn(scope, elm, attrs, ctrl) {
- *   // get the attribute value
- *   console.log(attrs.ngModel);
- *
- *   // change the attribute
- *   attrs.$set('ngModel', 'new value');
- *
- *   // observe changes to interpolated attribute
- *   attrs.$observe('ngModel', function(value) {
- *     console.log('ngModel has changed value to ' + value);
- *   });
- * }
- * ```
- *
- * ## Example
- *
- * <div class="alert alert-warning">
- * **Note**: Typically directives are registered with `module.directive`. The example below is
- * to illustrate how `$compile` works.
- * </div>
- *
- <example module="compileExample">
-   <file name="index.html">
-    <script>
-      angular.module('compileExample', [], function($compileProvider) {
-        // configure new 'compile' directive by passing a directive
-        // factory function. The factory function injects the '$compile'
-        $compileProvider.directive('compile', function($compile) {
-          // directive factory creates a link function
-          return function(scope, element, attrs) {
-            scope.$watch(
-              function(scope) {
-                 // watch the 'compile' expression for changes
-                return scope.$eval(attrs.compile);
-              },
-              function(value) {
-                // when the 'compile' expression changes
-                // assign it into the current DOM
-                element.html(value);
-
-                // compile the new DOM and link it to the current
-                // scope.
-                // NOTE: we only compile .childNodes so that
-                // we don't get into infinite loop compiling ourselves
-                $compile(element.contents())(scope);
-              }
-            );
-          };
-        });
-      })
-      .controller('GreeterController', ['$scope', function($scope) {
-        $scope.name = 'Angular';
-        $scope.html = 'Hello {{name}}';
-      }]);
-    </script>
-    <div ng-controller="GreeterController">
-      <input ng-model="name"> <br>
-      <textarea ng-model="html"></textarea> <br>
-      <div compile="html"></div>
-    </div>
-   </file>
-   <file name="protractor.js" type="protractor">
-     it('should auto compile', function() {
-       var textarea = $('textarea');
-       var output = $('div[compile]');
-       // The initial state reads 'Hello Angular'.
-       expect(output.getText()).toBe('Hello Angular');
-       textarea.clear();
-       textarea.sendKeys('{{name}}!');
-       expect(output.getText()).toBe('Angular!');
-     });
-   </file>
- </example>
-
- *
- *
- * @param {string|DOMElement} element Element or HTML string to compile into a template function.
- * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
- *
- * <div class="alert alert-error">
- * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
- *   e.g. will not use the right outer scope. Please pass the transclude function as a
- *   `parentBoundTranscludeFn` to the link function instead.
- * </div>
- *
- * @param {number} maxPriority only apply directives lower than given priority (Only effects the
- *                 root element(s), not their children)
- * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
- * (a DOM element/tree) to a scope. Where:
- *
- *  * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
- *  * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the
- *  `template` and call the `cloneAttachFn` function allowing the caller to attach the
- *  cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is
- *  called as: <br> `cloneAttachFn(clonedElement, scope)` where:
- *
- *      * `clonedElement` - is a clone of the original `element` passed into the compiler.
- *      * `scope` - is the current scope with which the linking function is working with.
- *
- *  * `options` - An optional object hash with linking options. If `options` is provided, then the following
- *  keys may be used to control linking behavior:
- *
- *      * `parentBoundTranscludeFn` - the transclude function made available to
- *        directives; if given, it will be passed through to the link functions of
- *        directives found in `element` during compilation.
- *      * `transcludeControllers` - an object hash with keys that map controller names
- *        to controller instances; if given, it will make the controllers
- *        available to directives.
- *      * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
- *        the cloned elements; only needed for transcludes that are allowed to contain non html
- *        elements (e.g. SVG elements). See also the directive.controller property.
- *
- * Calling the linking function returns the element of the template. It is either the original
- * element passed in, or the clone of the element if the `cloneAttachFn` is provided.
- *
- * After linking the view is not updated until after a call to $digest which typically is done by
- * Angular automatically.
- *
- * If you need access to the bound view, there are two ways to do it:
- *
- * - If you are not asking the linking function to clone the template, create the DOM element(s)
- *   before you send them to the compiler and keep this reference around.
- *   ```js
- *     var element = $compile('<p>{{total}}</p>')(scope);
- *   ```
- *
- * - if on the other hand, you need the element to be cloned, the view reference from the original
- *   example would not point to the clone, but rather to the original template that was cloned. In
- *   this case, you can access the clone via the cloneAttachFn:
- *   ```js
- *     var templateElement = angular.element('<p>{{total}}</p>'),
- *         scope = ....;
- *
- *     var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
- *       //attach the clone to DOM document at the right place
- *     });
- *
- *     //now we have reference to the cloned DOM via `clonedElement`
- *   ```
- *
- *
- * For information on how the compiler works, see the
- * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.
- */
-
-var $compileMinErr = minErr('$compile');
-
-/**
- * @ngdoc provider
- * @name $compileProvider
- *
- * @description
- */
-$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];
-function $CompileProvider($provide, $$sanitizeUriProvider) {
-  var hasDirectives = {},
-      Suffix = 'Directive',
-      COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
-      CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?:\:([^;]+))?;?)/,
-      ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'),
-      REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/;
-
-  // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
-  // The assumption is that future DOM event attribute names will begin with
-  // 'on' and be composed of only English letters.
-  var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
-
-  function parseIsolateBindings(scope, directiveName) {
-    var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/;
-
-    var bindings = {};
-
-    forEach(scope, function(definition, scopeName) {
-      var match = definition.match(LOCAL_REGEXP);
-
-      if (!match) {
-        throw $compileMinErr('iscp',
-            "Invalid isolate scope definition for directive '{0}'." +
-            " Definition: {... {1}: '{2}' ...}",
-            directiveName, scopeName, definition);
-      }
-
-      bindings[scopeName] = {
-        mode: match[1][0],
-        collection: match[2] === '*',
-        optional: match[3] === '?',
-        attrName: match[4] || scopeName
-      };
-    });
-
-    return bindings;
-  }
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#directive
-   * @kind function
-   *
-   * @description
-   * Register a new directive with the compiler.
-   *
-   * @param {string|Object} name Name of the directive in camel-case (i.e. <code>ngBind</code> which
-   *    will match as <code>ng-bind</code>), or an object map of directives where the keys are the
-   *    names and the values are the factories.
-   * @param {Function|Array} directiveFactory An injectable directive factory function. See
-   *    {@link guide/directive} for more info.
-   * @returns {ng.$compileProvider} Self for chaining.
-   */
-   this.directive = function registerDirective(name, directiveFactory) {
-    assertNotHasOwnProperty(name, 'directive');
-    if (isString(name)) {
-      assertArg(directiveFactory, 'directiveFactory');
-      if (!hasDirectives.hasOwnProperty(name)) {
-        hasDirectives[name] = [];
-        $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',
-          function($injector, $exceptionHandler) {
-            var directives = [];
-            forEach(hasDirectives[name], function(directiveFactory, index) {
-              try {
-                var directive = $injector.invoke(directiveFactory);
-                if (isFunction(directive)) {
-                  directive = { compile: valueFn(directive) };
-                } else if (!directive.compile && directive.link) {
-                  directive.compile = valueFn(directive.link);
-                }
-                directive.priority = directive.priority || 0;
-                directive.index = index;
-                directive.name = directive.name || name;
-                directive.require = directive.require || (directive.controller && directive.name);
-                directive.restrict = directive.restrict || 'EA';
-                if (isObject(directive.scope)) {
-                  directive.$$isolateBindings = parseIsolateBindings(directive.scope, directive.name);
-                }
-                directives.push(directive);
-              } catch (e) {
-                $exceptionHandler(e);
-              }
-            });
-            return directives;
-          }]);
-      }
-      hasDirectives[name].push(directiveFactory);
-    } else {
-      forEach(name, reverseParams(registerDirective));
-    }
-    return this;
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#aHrefSanitizationWhitelist
-   * @kind function
-   *
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during a[href] sanitization.
-   *
-   * The sanitization is a security measure aimed at preventing XSS attacks via html links.
-   *
-   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.aHrefSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);
-      return this;
-    } else {
-      return $$sanitizeUriProvider.aHrefSanitizationWhitelist();
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#imgSrcSanitizationWhitelist
-   * @kind function
-   *
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during img[src] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.imgSrcSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);
-      return this;
-    } else {
-      return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name  $compileProvider#debugInfoEnabled
-   *
-   * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the
-   * current debugInfoEnabled state
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   *
-   * @kind function
-   *
-   * @description
-   * Call this method to enable/disable various debug runtime information in the compiler such as adding
-   * binding information and a reference to the current scope on to DOM elements.
-   * If enabled, the compiler will add the following to DOM elements that have been bound to the scope
-   * * `ng-binding` CSS class
-   * * `$binding` data property containing an array of the binding expressions
-   *
-   * You may want to disable this in production for a significant performance boost. See
-   * {@link guide/production#disabling-debug-data Disabling Debug Data} for more.
-   *
-   * The default value is true.
-   */
-  var debugInfoEnabled = true;
-  this.debugInfoEnabled = function(enabled) {
-    if (isDefined(enabled)) {
-      debugInfoEnabled = enabled;
-      return this;
-    }
-    return debugInfoEnabled;
-  };
-
-  this.$get = [
-            '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse',
-            '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',
-    function($injector,   $interpolate,   $exceptionHandler,   $templateRequest,   $parse,
-             $controller,   $rootScope,   $document,   $sce,   $animate,   $$sanitizeUri) {
-
-    var Attributes = function(element, attributesToCopy) {
-      if (attributesToCopy) {
-        var keys = Object.keys(attributesToCopy);
-        var i, l, key;
-
-        for (i = 0, l = keys.length; i < l; i++) {
-          key = keys[i];
-          this[key] = attributesToCopy[key];
-        }
-      } else {
-        this.$attr = {};
-      }
-
-      this.$$element = element;
-    };
-
-    Attributes.prototype = {
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$normalize
-       * @kind function
-       *
-       * @description
-       * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or
-       * `data-`) to its normalized, camelCase form.
-       *
-       * Also there is special case for Moz prefix starting with upper case letter.
-       *
-       * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}
-       *
-       * @param {string} name Name to normalize
-       */
-      $normalize: directiveNormalize,
-
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$addClass
-       * @kind function
-       *
-       * @description
-       * Adds the CSS class value specified by the classVal parameter to the element. If animations
-       * are enabled then an animation will be triggered for the class addition.
-       *
-       * @param {string} classVal The className value that will be added to the element
-       */
-      $addClass: function(classVal) {
-        if (classVal && classVal.length > 0) {
-          $animate.addClass(this.$$element, classVal);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$removeClass
-       * @kind function
-       *
-       * @description
-       * Removes the CSS class value specified by the classVal parameter from the element. If
-       * animations are enabled then an animation will be triggered for the class removal.
-       *
-       * @param {string} classVal The className value that will be removed from the element
-       */
-      $removeClass: function(classVal) {
-        if (classVal && classVal.length > 0) {
-          $animate.removeClass(this.$$element, classVal);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$updateClass
-       * @kind function
-       *
-       * @description
-       * Adds and removes the appropriate CSS class values to the element based on the difference
-       * between the new and old CSS class values (specified as newClasses and oldClasses).
-       *
-       * @param {string} newClasses The current CSS className value
-       * @param {string} oldClasses The former CSS className value
-       */
-      $updateClass: function(newClasses, oldClasses) {
-        var toAdd = tokenDifference(newClasses, oldClasses);
-        if (toAdd && toAdd.length) {
-          $animate.addClass(this.$$element, toAdd);
-        }
-
-        var toRemove = tokenDifference(oldClasses, newClasses);
-        if (toRemove && toRemove.length) {
-          $animate.removeClass(this.$$element, toRemove);
-        }
-      },
-
-      /**
-       * Set a normalized attribute on the element in a way such that all directives
-       * can share the attribute. This function properly handles boolean attributes.
-       * @param {string} key Normalized key. (ie ngAttribute)
-       * @param {string|boolean} value The value to set. If `null` attribute will be deleted.
-       * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.
-       *     Defaults to true.
-       * @param {string=} attrName Optional none normalized name. Defaults to key.
-       */
-      $set: function(key, value, writeAttr, attrName) {
-        // TODO: decide whether or not to throw an error if "class"
-        //is set through this function since it may cause $updateClass to
-        //become unstable.
-
-        var node = this.$$element[0],
-            booleanKey = getBooleanAttrName(node, key),
-            aliasedKey = getAliasedAttrName(node, key),
-            observer = key,
-            nodeName;
-
-        if (booleanKey) {
-          this.$$element.prop(key, value);
-          attrName = booleanKey;
-        } else if (aliasedKey) {
-          this[aliasedKey] = value;
-          observer = aliasedKey;
-        }
-
-        this[key] = value;
-
-        // translate normalized key to actual key
-        if (attrName) {
-          this.$attr[key] = attrName;
-        } else {
-          attrName = this.$attr[key];
-          if (!attrName) {
-            this.$attr[key] = attrName = snake_case(key, '-');
-          }
-        }
-
-        nodeName = nodeName_(this.$$element);
-
-        if ((nodeName === 'a' && key === 'href') ||
-            (nodeName === 'img' && key === 'src')) {
-          // sanitize a[href] and img[src] values
-          this[key] = value = $$sanitizeUri(value, key === 'src');
-        } else if (nodeName === 'img' && key === 'srcset') {
-          // sanitize img[srcset] values
-          var result = "";
-
-          // first check if there are spaces because it's not the same pattern
-          var trimmedSrcset = trim(value);
-          //                (   999x   ,|   999w   ,|   ,|,   )
-          var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;
-          var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/;
-
-          // split srcset into tuple of uri and descriptor except for the last item
-          var rawUris = trimmedSrcset.split(pattern);
-
-          // for each tuples
-          var nbrUrisWith2parts = Math.floor(rawUris.length / 2);
-          for (var i = 0; i < nbrUrisWith2parts; i++) {
-            var innerIdx = i * 2;
-            // sanitize the uri
-            result += $$sanitizeUri(trim(rawUris[innerIdx]), true);
-            // add the descriptor
-            result += (" " + trim(rawUris[innerIdx + 1]));
-          }
-
-          // split the last item into uri and descriptor
-          var lastTuple = trim(rawUris[i * 2]).split(/\s/);
-
-          // sanitize the last uri
-          result += $$sanitizeUri(trim(lastTuple[0]), true);
-
-          // and add the last descriptor if any
-          if (lastTuple.length === 2) {
-            result += (" " + trim(lastTuple[1]));
-          }
-          this[key] = value = result;
-        }
-
-        if (writeAttr !== false) {
-          if (value === null || value === undefined) {
-            this.$$element.removeAttr(attrName);
-          } else {
-            this.$$element.attr(attrName, value);
-          }
-        }
-
-        // fire observers
-        var $$observers = this.$$observers;
-        $$observers && forEach($$observers[observer], function(fn) {
-          try {
-            fn(value);
-          } catch (e) {
-            $exceptionHandler(e);
-          }
-        });
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$observe
-       * @kind function
-       *
-       * @description
-       * Observes an interpolated attribute.
-       *
-       * The observer function will be invoked once during the next `$digest` following
-       * compilation. The observer is then invoked whenever the interpolated value
-       * changes.
-       *
-       * @param {string} key Normalized key. (ie ngAttribute) .
-       * @param {function(interpolatedValue)} fn Function that will be called whenever
-                the interpolated value of the attribute changes.
-       *        See the {@link guide/directive#text-and-attribute-bindings Directives} guide for more info.
-       * @returns {function()} Returns a deregistration function for this observer.
-       */
-      $observe: function(key, fn) {
-        var attrs = this,
-            $$observers = (attrs.$$observers || (attrs.$$observers = createMap())),
-            listeners = ($$observers[key] || ($$observers[key] = []));
-
-        listeners.push(fn);
-        $rootScope.$evalAsync(function() {
-          if (!listeners.$$inter && attrs.hasOwnProperty(key)) {
-            // no one registered attribute interpolation function, so lets call it manually
-            fn(attrs[key]);
-          }
-        });
-
-        return function() {
-          arrayRemove(listeners, fn);
-        };
-      }
-    };
-
-
-    function safeAddClass($element, className) {
-      try {
-        $element.addClass(className);
-      } catch (e) {
-        // ignore, since it means that we are trying to set class on
-        // SVG element, where class name is read-only.
-      }
-    }
-
-
-    var startSymbol = $interpolate.startSymbol(),
-        endSymbol = $interpolate.endSymbol(),
-        denormalizeTemplate = (startSymbol == '{{' || endSymbol  == '}}')
-            ? identity
-            : function denormalizeTemplate(template) {
-              return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol);
-        },
-        NG_ATTR_BINDING = /^ngAttr[A-Z]/;
-
-    compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {
-      var bindings = $element.data('$binding') || [];
-
-      if (isArray(binding)) {
-        bindings = bindings.concat(binding);
-      } else {
-        bindings.push(binding);
-      }
-
-      $element.data('$binding', bindings);
-    } : noop;
-
-    compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {
-      safeAddClass($element, 'ng-binding');
-    } : noop;
-
-    compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
-      var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';
-      $element.data(dataName, scope);
-    } : noop;
-
-    compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {
-      safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope');
-    } : noop;
-
-    return compile;
-
-    //================================
-
-    function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,
-                        previousCompileContext) {
-      if (!($compileNodes instanceof jqLite)) {
-        // jquery always rewraps, whereas we need to preserve the original selector so that we can
-        // modify it.
-        $compileNodes = jqLite($compileNodes);
-      }
-      // We can not compile top level text elements since text nodes can be merged and we will
-      // not be able to attach scope data to them, so we will wrap them in <span>
-      forEach($compileNodes, function(node, index) {
-        if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) {
-          $compileNodes[index] = jqLite(node).wrap('<span></span>').parent()[0];
-        }
-      });
-      var compositeLinkFn =
-              compileNodes($compileNodes, transcludeFn, $compileNodes,
-                           maxPriority, ignoreDirective, previousCompileContext);
-      compile.$$addScopeClass($compileNodes);
-      var namespace = null;
-      return function publicLinkFn(scope, cloneConnectFn, options) {
-        assertArg(scope, 'scope');
-
-        options = options || {};
-        var parentBoundTranscludeFn = options.parentBoundTranscludeFn,
-          transcludeControllers = options.transcludeControllers,
-          futureParentElement = options.futureParentElement;
-
-        // When `parentBoundTranscludeFn` is passed, it is a
-        // `controllersBoundTransclude` function (it was previously passed
-        // as `transclude` to directive.link) so we must unwrap it to get
-        // its `boundTranscludeFn`
-        if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
-          parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
-        }
-
-        if (!namespace) {
-          namespace = detectNamespaceForChildElements(futureParentElement);
-        }
-        var $linkNode;
-        if (namespace !== 'html') {
-          // When using a directive with replace:true and templateUrl the $compileNodes
-          // (or a child element inside of them)
-          // might change, so we need to recreate the namespace adapted compileNodes
-          // for call to the link function.
-          // Note: This will already clone the nodes...
-          $linkNode = jqLite(
-            wrapTemplate(namespace, jqLite('<div>').append($compileNodes).html())
-          );
-        } else if (cloneConnectFn) {
-          // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart
-          // and sometimes changes the structure of the DOM.
-          $linkNode = JQLitePrototype.clone.call($compileNodes);
-        } else {
-          $linkNode = $compileNodes;
-        }
-
-        if (transcludeControllers) {
-          for (var controllerName in transcludeControllers) {
-            $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance);
-          }
-        }
-
-        compile.$$addScopeInfo($linkNode, scope);
-
-        if (cloneConnectFn) cloneConnectFn($linkNode, scope);
-        if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);
-        return $linkNode;
-      };
-    }
-
-    function detectNamespaceForChildElements(parentElement) {
-      // TODO: Make this detect MathML as well...
-      var node = parentElement && parentElement[0];
-      if (!node) {
-        return 'html';
-      } else {
-        return nodeName_(node) !== 'foreignobject' && node.toString().match(/SVG/) ? 'svg' : 'html';
-      }
-    }
-
-    /**
-     * Compile function matches each node in nodeList against the directives. Once all directives
-     * for a particular node are collected their compile functions are executed. The compile
-     * functions return values - the linking functions - are combined into a composite linking
-     * function, which is the a linking function for the node.
-     *
-     * @param {NodeList} nodeList an array of nodes or NodeList to compile
-     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
-     *        scope argument is auto-generated to the new child of the transcluded parent scope.
-     * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then
-     *        the rootElement must be set the jqLite collection of the compile root. This is
-     *        needed so that the jqLite collection items can be replaced with widgets.
-     * @param {number=} maxPriority Max directive priority.
-     * @returns {Function} A composite linking function of all of the matched directives or null.
-     */
-    function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective,
-                            previousCompileContext) {
-      var linkFns = [],
-          attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;
-
-      for (var i = 0; i < nodeList.length; i++) {
-        attrs = new Attributes();
-
-        // we must always refer to nodeList[i] since the nodes can be replaced underneath us.
-        directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined,
-                                        ignoreDirective);
-
-        nodeLinkFn = (directives.length)
-            ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement,
-                                      null, [], [], previousCompileContext)
-            : null;
-
-        if (nodeLinkFn && nodeLinkFn.scope) {
-          compile.$$addScopeClass(attrs.$$element);
-        }
-
-        childLinkFn = (nodeLinkFn && nodeLinkFn.terminal ||
-                      !(childNodes = nodeList[i].childNodes) ||
-                      !childNodes.length)
-            ? null
-            : compileNodes(childNodes,
-                 nodeLinkFn ? (
-                  (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement)
-                     && nodeLinkFn.transclude) : transcludeFn);
-
-        if (nodeLinkFn || childLinkFn) {
-          linkFns.push(i, nodeLinkFn, childLinkFn);
-          linkFnFound = true;
-          nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;
-        }
-
-        //use the previous context only for the first element in the virtual group
-        previousCompileContext = null;
-      }
-
-      // return a linking function if we have found anything, null otherwise
-      return linkFnFound ? compositeLinkFn : null;
-
-      function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) {
-        var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn;
-        var stableNodeList;
-
-
-        if (nodeLinkFnFound) {
-          // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our
-          // offsets don't get screwed up
-          var nodeListLength = nodeList.length;
-          stableNodeList = new Array(nodeListLength);
-
-          // create a sparse array by only copying the elements which have a linkFn
-          for (i = 0; i < linkFns.length; i+=3) {
-            idx = linkFns[i];
-            stableNodeList[idx] = nodeList[idx];
-          }
-        } else {
-          stableNodeList = nodeList;
-        }
-
-        for (i = 0, ii = linkFns.length; i < ii;) {
-          node = stableNodeList[linkFns[i++]];
-          nodeLinkFn = linkFns[i++];
-          childLinkFn = linkFns[i++];
-
-          if (nodeLinkFn) {
-            if (nodeLinkFn.scope) {
-              childScope = scope.$new();
-              compile.$$addScopeInfo(jqLite(node), childScope);
-            } else {
-              childScope = scope;
-            }
-
-            if (nodeLinkFn.transcludeOnThisElement) {
-              childBoundTranscludeFn = createBoundTranscludeFn(
-                  scope, nodeLinkFn.transclude, parentBoundTranscludeFn,
-                  nodeLinkFn.elementTranscludeOnThisElement);
-
-            } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) {
-              childBoundTranscludeFn = parentBoundTranscludeFn;
-
-            } else if (!parentBoundTranscludeFn && transcludeFn) {
-              childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);
-
-            } else {
-              childBoundTranscludeFn = null;
-            }
-
-            nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn);
-
-          } else if (childLinkFn) {
-            childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn);
-          }
-        }
-      }
-    }
-
-    function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn, elementTransclusion) {
-
-      var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {
-
-        if (!transcludedScope) {
-          transcludedScope = scope.$new(false, containingScope);
-          transcludedScope.$$transcluded = true;
-        }
-
-        return transcludeFn(transcludedScope, cloneFn, {
-          parentBoundTranscludeFn: previousBoundTranscludeFn,
-          transcludeControllers: controllers,
-          futureParentElement: futureParentElement
-        });
-      };
-
-      return boundTranscludeFn;
-    }
-
-    /**
-     * Looks for directives on the given node and adds them to the directive collection which is
-     * sorted.
-     *
-     * @param node Node to search.
-     * @param directives An array to which the directives are added to. This array is sorted before
-     *        the function returns.
-     * @param attrs The shared attrs object which is used to populate the normalized attributes.
-     * @param {number=} maxPriority Max directive priority.
-     */
-    function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
-      var nodeType = node.nodeType,
-          attrsMap = attrs.$attr,
-          match,
-          className;
-
-      switch (nodeType) {
-        case NODE_TYPE_ELEMENT: /* Element */
-          // use the node name: <directive>
-          addDirective(directives,
-              directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective);
-
-          // iterate over the attributes
-          for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,
-                   j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
-            var attrStartName = false;
-            var attrEndName = false;
-
-            attr = nAttrs[j];
-            name = attr.name;
-            value = trim(attr.value);
-
-            // support ngAttr attribute binding
-            ngAttrName = directiveNormalize(name);
-            if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {
-              name = name.replace(PREFIX_REGEXP, '')
-                .substr(8).replace(/_(.)/g, function(match, letter) {
-                  return letter.toUpperCase();
-                });
-            }
-
-            var directiveNName = ngAttrName.replace(/(Start|End)$/, '');
-            if (directiveIsMultiElement(directiveNName)) {
-              if (ngAttrName === directiveNName + 'Start') {
-                attrStartName = name;
-                attrEndName = name.substr(0, name.length - 5) + 'end';
-                name = name.substr(0, name.length - 6);
-              }
-            }
-
-            nName = directiveNormalize(name.toLowerCase());
-            attrsMap[nName] = name;
-            if (isNgAttr || !attrs.hasOwnProperty(nName)) {
-                attrs[nName] = value;
-                if (getBooleanAttrName(node, nName)) {
-                  attrs[nName] = true; // presence means true
-                }
-            }
-            addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
-            addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,
-                          attrEndName);
-          }
-
-          // use class as directive
-          className = node.className;
-          if (isObject(className)) {
-              // Maybe SVGAnimatedString
-              className = className.animVal;
-          }
-          if (isString(className) && className !== '') {
-            while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
-              nName = directiveNormalize(match[2]);
-              if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {
-                attrs[nName] = trim(match[3]);
-              }
-              className = className.substr(match.index + match[0].length);
-            }
-          }
-          break;
-        case NODE_TYPE_TEXT: /* Text Node */
-          addTextInterpolateDirective(directives, node.nodeValue);
-          break;
-        case NODE_TYPE_COMMENT: /* Comment */
-          try {
-            match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
-            if (match) {
-              nName = directiveNormalize(match[1]);
-              if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {
-                attrs[nName] = trim(match[2]);
-              }
-            }
-          } catch (e) {
-            // turns out that under some circumstances IE9 throws errors when one attempts to read
-            // comment's node value.
-            // Just ignore it and continue. (Can't seem to reproduce in test case.)
-          }
-          break;
-      }
-
-      directives.sort(byPriority);
-      return directives;
-    }
-
-    /**
-     * Given a node with an directive-start it collects all of the siblings until it finds
-     * directive-end.
-     * @param node
-     * @param attrStart
-     * @param attrEnd
-     * @returns {*}
-     */
-    function groupScan(node, attrStart, attrEnd) {
-      var nodes = [];
-      var depth = 0;
-      if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
-        do {
-          if (!node) {
-            throw $compileMinErr('uterdir',
-                      "Unterminated attribute, found '{0}' but no matching '{1}' found.",
-                      attrStart, attrEnd);
-          }
-          if (node.nodeType == NODE_TYPE_ELEMENT) {
-            if (node.hasAttribute(attrStart)) depth++;
-            if (node.hasAttribute(attrEnd)) depth--;
-          }
-          nodes.push(node);
-          node = node.nextSibling;
-        } while (depth > 0);
-      } else {
-        nodes.push(node);
-      }
-
-      return jqLite(nodes);
-    }
-
-    /**
-     * Wrapper for linking function which converts normal linking function into a grouped
-     * linking function.
-     * @param linkFn
-     * @param attrStart
-     * @param attrEnd
-     * @returns {Function}
-     */
-    function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {
-      return function(scope, element, attrs, controllers, transcludeFn) {
-        element = groupScan(element[0], attrStart, attrEnd);
-        return linkFn(scope, element, attrs, controllers, transcludeFn);
-      };
-    }
-
-    /**
-     * Once the directives have been collected, their compile functions are executed. This method
-     * is responsible for inlining directive templates as well as terminating the application
-     * of the directives if the terminal directive has been reached.
-     *
-     * @param {Array} directives Array of collected directives to execute their compile function.
-     *        this needs to be pre-sorted by priority order.
-     * @param {Node} compileNode The raw DOM node to apply the compile functions to
-     * @param {Object} templateAttrs The shared attribute function
-     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
-     *                                                  scope argument is auto-generated to the new
-     *                                                  child of the transcluded parent scope.
-     * @param {JQLite} jqCollection If we are working on the root of the compile tree then this
-     *                              argument has the root jqLite array so that we can replace nodes
-     *                              on it.
-     * @param {Object=} originalReplaceDirective An optional directive that will be ignored when
-     *                                           compiling the transclusion.
-     * @param {Array.<Function>} preLinkFns
-     * @param {Array.<Function>} postLinkFns
-     * @param {Object} previousCompileContext Context used for previous compilation of the current
-     *                                        node
-     * @returns {Function} linkFn
-     */
-    function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,
-                                   jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,
-                                   previousCompileContext) {
-      previousCompileContext = previousCompileContext || {};
-
-      var terminalPriority = -Number.MAX_VALUE,
-          newScopeDirective,
-          controllerDirectives = previousCompileContext.controllerDirectives,
-          controllers,
-          newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,
-          templateDirective = previousCompileContext.templateDirective,
-          nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
-          hasTranscludeDirective = false,
-          hasTemplate = false,
-          hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
-          $compileNode = templateAttrs.$$element = jqLite(compileNode),
-          directive,
-          directiveName,
-          $template,
-          replaceDirective = originalReplaceDirective,
-          childTranscludeFn = transcludeFn,
-          linkFn,
-          directiveValue;
-
-      // executes all directives on the current element
-      for (var i = 0, ii = directives.length; i < ii; i++) {
-        directive = directives[i];
-        var attrStart = directive.$$start;
-        var attrEnd = directive.$$end;
-
-        // collect multiblock sections
-        if (attrStart) {
-          $compileNode = groupScan(compileNode, attrStart, attrEnd);
-        }
-        $template = undefined;
-
-        if (terminalPriority > directive.priority) {
-          break; // prevent further processing of directives
-        }
-
-        if (directiveValue = directive.scope) {
-
-          // skip the check for directives with async templates, we'll check the derived sync
-          // directive when the template arrives
-          if (!directive.templateUrl) {
-            if (isObject(directiveValue)) {
-              // This directive is trying to add an isolated scope.
-              // Check that there is no scope of any kind already
-              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective,
-                                directive, $compileNode);
-              newIsolateScopeDirective = directive;
-            } else {
-              // This directive is trying to add a child scope.
-              // Check that there is no isolated scope already
-              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,
-                                $compileNode);
-            }
-          }
-
-          newScopeDirective = newScopeDirective || directive;
-        }
-
-        directiveName = directive.name;
-
-        if (!directive.templateUrl && directive.controller) {
-          directiveValue = directive.controller;
-          controllerDirectives = controllerDirectives || {};
-          assertNoDuplicate("'" + directiveName + "' controller",
-              controllerDirectives[directiveName], directive, $compileNode);
-          controllerDirectives[directiveName] = directive;
-        }
-
-        if (directiveValue = directive.transclude) {
-          hasTranscludeDirective = true;
-
-          // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.
-          // This option should only be used by directives that know how to safely handle element transclusion,
-          // where the transcluded nodes are added or replaced after linking.
-          if (!directive.$$tlb) {
-            assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);
-            nonTlbTranscludeDirective = directive;
-          }
-
-          if (directiveValue == 'element') {
-            hasElementTranscludeDirective = true;
-            terminalPriority = directive.priority;
-            $template = $compileNode;
-            $compileNode = templateAttrs.$$element =
-                jqLite(document.createComment(' ' + directiveName + ': ' +
-                                              templateAttrs[directiveName] + ' '));
-            compileNode = $compileNode[0];
-            replaceWith(jqCollection, sliceArgs($template), compileNode);
-
-            childTranscludeFn = compile($template, transcludeFn, terminalPriority,
-                                        replaceDirective && replaceDirective.name, {
-                                          // Don't pass in:
-                                          // - controllerDirectives - otherwise we'll create duplicates controllers
-                                          // - newIsolateScopeDirective or templateDirective - combining templates with
-                                          //   element transclusion doesn't make sense.
-                                          //
-                                          // We need only nonTlbTranscludeDirective so that we prevent putting transclusion
-                                          // on the same element more than once.
-                                          nonTlbTranscludeDirective: nonTlbTranscludeDirective
-                                        });
-          } else {
-            $template = jqLite(jqLiteClone(compileNode)).contents();
-            $compileNode.empty(); // clear contents
-            childTranscludeFn = compile($template, transcludeFn);
-          }
-        }
-
-        if (directive.template) {
-          hasTemplate = true;
-          assertNoDuplicate('template', templateDirective, directive, $compileNode);
-          templateDirective = directive;
-
-          directiveValue = (isFunction(directive.template))
-              ? directive.template($compileNode, templateAttrs)
-              : directive.template;
-
-          directiveValue = denormalizeTemplate(directiveValue);
-
-          if (directive.replace) {
-            replaceDirective = directive;
-            if (jqLiteIsTextNode(directiveValue)) {
-              $template = [];
-            } else {
-              $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));
-            }
-            compileNode = $template[0];
-
-            if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
-              throw $compileMinErr('tplrt',
-                  "Template for directive '{0}' must have exactly one root element. {1}",
-                  directiveName, '');
-            }
-
-            replaceWith(jqCollection, $compileNode, compileNode);
-
-            var newTemplateAttrs = {$attr: {}};
-
-            // combine directives from the original node and from the template:
-            // - take the array of directives for this element
-            // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)
-            // - collect directives from the template and sort them by priority
-            // - combine directives as: processed + template + unprocessed
-            var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);
-            var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));
-
-            if (newIsolateScopeDirective) {
-              markDirectivesAsIsolate(templateDirectives);
-            }
-            directives = directives.concat(templateDirectives).concat(unprocessedDirectives);
-            mergeTemplateAttributes(templateAttrs, newTemplateAttrs);
-
-            ii = directives.length;
-          } else {
-            $compileNode.html(directiveValue);
-          }
-        }
-
-        if (directive.templateUrl) {
-          hasTemplate = true;
-          assertNoDuplicate('template', templateDirective, directive, $compileNode);
-          templateDirective = directive;
-
-          if (directive.replace) {
-            replaceDirective = directive;
-          }
-
-          nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,
-              templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {
-                controllerDirectives: controllerDirectives,
-                newIsolateScopeDirective: newIsolateScopeDirective,
-                templateDirective: templateDirective,
-                nonTlbTranscludeDirective: nonTlbTranscludeDirective
-              });
-          ii = directives.length;
-        } else if (directive.compile) {
-          try {
-            linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);
-            if (isFunction(linkFn)) {
-              addLinkFns(null, linkFn, attrStart, attrEnd);
-            } else if (linkFn) {
-              addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);
-            }
-          } catch (e) {
-            $exceptionHandler(e, startingTag($compileNode));
-          }
-        }
-
-        if (directive.terminal) {
-          nodeLinkFn.terminal = true;
-          terminalPriority = Math.max(terminalPriority, directive.priority);
-        }
-
-      }
-
-      nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
-      nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;
-      nodeLinkFn.elementTranscludeOnThisElement = hasElementTranscludeDirective;
-      nodeLinkFn.templateOnThisElement = hasTemplate;
-      nodeLinkFn.transclude = childTranscludeFn;
-
-      previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
-
-      // might be normal or delayed nodeLinkFn depending on if templateUrl is present
-      return nodeLinkFn;
-
-      ////////////////////
-
-      function addLinkFns(pre, post, attrStart, attrEnd) {
-        if (pre) {
-          if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);
-          pre.require = directive.require;
-          pre.directiveName = directiveName;
-          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
-            pre = cloneAndAnnotateFn(pre, {isolateScope: true});
-          }
-          preLinkFns.push(pre);
-        }
-        if (post) {
-          if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);
-          post.require = directive.require;
-          post.directiveName = directiveName;
-          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
-            post = cloneAndAnnotateFn(post, {isolateScope: true});
-          }
-          postLinkFns.push(post);
-        }
-      }
-
-
-      function getControllers(directiveName, require, $element, elementControllers) {
-        var value, retrievalMethod = 'data', optional = false;
-        var $searchElement = $element;
-        var match;
-        if (isString(require)) {
-          match = require.match(REQUIRE_PREFIX_REGEXP);
-          require = require.substring(match[0].length);
-
-          if (match[3]) {
-            if (match[1]) match[3] = null;
-            else match[1] = match[3];
-          }
-          if (match[1] === '^') {
-            retrievalMethod = 'inheritedData';
-          } else if (match[1] === '^^') {
-            retrievalMethod = 'inheritedData';
-            $searchElement = $element.parent();
-          }
-          if (match[2] === '?') {
-            optional = true;
-          }
-
-          value = null;
-
-          if (elementControllers && retrievalMethod === 'data') {
-            if (value = elementControllers[require]) {
-              value = value.instance;
-            }
-          }
-          value = value || $searchElement[retrievalMethod]('$' + require + 'Controller');
-
-          if (!value && !optional) {
-            throw $compileMinErr('ctreq',
-                "Controller '{0}', required by directive '{1}', can't be found!",
-                require, directiveName);
-          }
-          return value || null;
-        } else if (isArray(require)) {
-          value = [];
-          forEach(require, function(require) {
-            value.push(getControllers(directiveName, require, $element, elementControllers));
-          });
-        }
-        return value;
-      }
-
-
-      function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {
-        var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element,
-            attrs;
-
-        if (compileNode === linkNode) {
-          attrs = templateAttrs;
-          $element = templateAttrs.$$element;
-        } else {
-          $element = jqLite(linkNode);
-          attrs = new Attributes($element, templateAttrs);
-        }
-
-        if (newIsolateScopeDirective) {
-          isolateScope = scope.$new(true);
-        }
-
-        if (boundTranscludeFn) {
-          // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`
-          // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`
-          transcludeFn = controllersBoundTransclude;
-          transcludeFn.$$boundTransclude = boundTranscludeFn;
-        }
-
-        if (controllerDirectives) {
-          // TODO: merge `controllers` and `elementControllers` into single object.
-          controllers = {};
-          elementControllers = {};
-          forEach(controllerDirectives, function(directive) {
-            var locals = {
-              $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
-              $element: $element,
-              $attrs: attrs,
-              $transclude: transcludeFn
-            }, controllerInstance;
-
-            controller = directive.controller;
-            if (controller == '@') {
-              controller = attrs[directive.name];
-            }
-
-            controllerInstance = $controller(controller, locals, true, directive.controllerAs);
-
-            // For directives with element transclusion the element is a comment,
-            // but jQuery .data doesn't support attaching data to comment nodes as it's hard to
-            // clean up (http://bugs.jquery.com/ticket/8335).
-            // Instead, we save the controllers for the element in a local hash and attach to .data
-            // later, once we have the actual element.
-            elementControllers[directive.name] = controllerInstance;
-            if (!hasElementTranscludeDirective) {
-              $element.data('$' + directive.name + 'Controller', controllerInstance.instance);
-            }
-
-            controllers[directive.name] = controllerInstance;
-          });
-        }
-
-        if (newIsolateScopeDirective) {
-          compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective ||
-              templateDirective === newIsolateScopeDirective.$$originalDirective)));
-          compile.$$addScopeClass($element, true);
-
-          var isolateScopeController = controllers && controllers[newIsolateScopeDirective.name];
-          var isolateBindingContext = isolateScope;
-          if (isolateScopeController && isolateScopeController.identifier &&
-              newIsolateScopeDirective.bindToController === true) {
-            isolateBindingContext = isolateScopeController.instance;
-          }
-
-          forEach(isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings, function(definition, scopeName) {
-            var attrName = definition.attrName,
-                optional = definition.optional,
-                mode = definition.mode, // @, =, or &
-                lastValue,
-                parentGet, parentSet, compare;
-
-            switch (mode) {
-
-              case '@':
-                attrs.$observe(attrName, function(value) {
-                  isolateBindingContext[scopeName] = value;
-                });
-                attrs.$$observers[attrName].$$scope = scope;
-                if (attrs[attrName]) {
-                  // If the attribute has been provided then we trigger an interpolation to ensure
-                  // the value is there for use in the link fn
-                  isolateBindingContext[scopeName] = $interpolate(attrs[attrName])(scope);
-                }
-                break;
-
-              case '=':
-                if (optional && !attrs[attrName]) {
-                  return;
-                }
-                parentGet = $parse(attrs[attrName]);
-                if (parentGet.literal) {
-                  compare = equals;
-                } else {
-                  compare = function(a, b) { return a === b || (a !== a && b !== b); };
-                }
-                parentSet = parentGet.assign || function() {
-                  // reset the change, or we will throw this exception on every $digest
-                  lastValue = isolateBindingContext[scopeName] = parentGet(scope);
-                  throw $compileMinErr('nonassign',
-                      "Expression '{0}' used with directive '{1}' is non-assignable!",
-                      attrs[attrName], newIsolateScopeDirective.name);
-                };
-                lastValue = isolateBindingContext[scopeName] = parentGet(scope);
-                var parentValueWatch = function parentValueWatch(parentValue) {
-                  if (!compare(parentValue, isolateBindingContext[scopeName])) {
-                    // we are out of sync and need to copy
-                    if (!compare(parentValue, lastValue)) {
-                      // parent changed and it has precedence
-                      isolateBindingContext[scopeName] = parentValue;
-                    } else {
-                      // if the parent can be assigned then do so
-                      parentSet(scope, parentValue = isolateBindingContext[scopeName]);
-                    }
-                  }
-                  return lastValue = parentValue;
-                };
-                parentValueWatch.$stateful = true;
-                var unwatch;
-                if (definition.collection) {
-                  unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch);
-                } else {
-                  unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);
-                }
-                isolateScope.$on('$destroy', unwatch);
-                break;
-
-              case '&':
-                parentGet = $parse(attrs[attrName]);
-                isolateBindingContext[scopeName] = function(locals) {
-                  return parentGet(scope, locals);
-                };
-                break;
-            }
-          });
-        }
-        if (controllers) {
-          forEach(controllers, function(controller) {
-            controller();
-          });
-          controllers = null;
-        }
-
-        // PRELINKING
-        for (i = 0, ii = preLinkFns.length; i < ii; i++) {
-          linkFn = preLinkFns[i];
-          invokeLinkFn(linkFn,
-              linkFn.isolateScope ? isolateScope : scope,
-              $element,
-              attrs,
-              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
-              transcludeFn
-          );
-        }
-
-        // RECURSION
-        // We only pass the isolate scope, if the isolate directive has a template,
-        // otherwise the child elements do not belong to the isolate directive.
-        var scopeToChild = scope;
-        if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
-          scopeToChild = isolateScope;
-        }
-        childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);
-
-        // POSTLINKING
-        for (i = postLinkFns.length - 1; i >= 0; i--) {
-          linkFn = postLinkFns[i];
-          invokeLinkFn(linkFn,
-              linkFn.isolateScope ? isolateScope : scope,
-              $element,
-              attrs,
-              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
-              transcludeFn
-          );
-        }
-
-        // This is the function that is injected as `$transclude`.
-        // Note: all arguments are optional!
-        function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement) {
-          var transcludeControllers;
-
-          // No scope passed in:
-          if (!isScope(scope)) {
-            futureParentElement = cloneAttachFn;
-            cloneAttachFn = scope;
-            scope = undefined;
-          }
-
-          if (hasElementTranscludeDirective) {
-            transcludeControllers = elementControllers;
-          }
-          if (!futureParentElement) {
-            futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;
-          }
-          return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
-        }
-      }
-    }
-
-    function markDirectivesAsIsolate(directives) {
-      // mark all directives as needing isolate scope.
-      for (var j = 0, jj = directives.length; j < jj; j++) {
-        directives[j] = inherit(directives[j], {$$isolateScope: true});
-      }
-    }
-
-    /**
-     * looks up the directive and decorates it with exception handling and proper parameters. We
-     * call this the boundDirective.
-     *
-     * @param {string} name name of the directive to look up.
-     * @param {string} location The directive must be found in specific format.
-     *   String containing any of theses characters:
-     *
-     *   * `E`: element name
-     *   * `A': attribute
-     *   * `C`: class
-     *   * `M`: comment
-     * @returns {boolean} true if directive was added.
-     */
-    function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,
-                          endAttrName) {
-      if (name === ignoreDirective) return null;
-      var match = null;
-      if (hasDirectives.hasOwnProperty(name)) {
-        for (var directive, directives = $injector.get(name + Suffix),
-            i = 0, ii = directives.length; i < ii; i++) {
-          try {
-            directive = directives[i];
-            if ((maxPriority === undefined || maxPriority > directive.priority) &&
-                 directive.restrict.indexOf(location) != -1) {
-              if (startAttrName) {
-                directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});
-              }
-              tDirectives.push(directive);
-              match = directive;
-            }
-          } catch (e) { $exceptionHandler(e); }
-        }
-      }
-      return match;
-    }
-
-
-    /**
-     * looks up the directive and returns true if it is a multi-element directive,
-     * and therefore requires DOM nodes between -start and -end markers to be grouped
-     * together.
-     *
-     * @param {string} name name of the directive to look up.
-     * @returns true if directive was registered as multi-element.
-     */
-    function directiveIsMultiElement(name) {
-      if (hasDirectives.hasOwnProperty(name)) {
-        for (var directive, directives = $injector.get(name + Suffix),
-            i = 0, ii = directives.length; i < ii; i++) {
-          directive = directives[i];
-          if (directive.multiElement) {
-            return true;
-          }
-        }
-      }
-      return false;
-    }
-
-    /**
-     * When the element is replaced with HTML template then the new attributes
-     * on the template need to be merged with the existing attributes in the DOM.
-     * The desired effect is to have both of the attributes present.
-     *
-     * @param {object} dst destination attributes (original DOM)
-     * @param {object} src source attributes (from the directive template)
-     */
-    function mergeTemplateAttributes(dst, src) {
-      var srcAttr = src.$attr,
-          dstAttr = dst.$attr,
-          $element = dst.$$element;
-
-      // reapply the old attributes to the new element
-      forEach(dst, function(value, key) {
-        if (key.charAt(0) != '$') {
-          if (src[key] && src[key] !== value) {
-            value += (key === 'style' ? ';' : ' ') + src[key];
-          }
-          dst.$set(key, value, true, srcAttr[key]);
-        }
-      });
-
-      // copy the new attributes on the old attrs object
-      forEach(src, function(value, key) {
-        if (key == 'class') {
-          safeAddClass($element, value);
-          dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;
-        } else if (key == 'style') {
-          $element.attr('style', $element.attr('style') + ';' + value);
-          dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;
-          // `dst` will never contain hasOwnProperty as DOM parser won't let it.
-          // You will get an "InvalidCharacterError: DOM Exception 5" error if you
-          // have an attribute like "has-own-property" or "data-has-own-property", etc.
-        } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {
-          dst[key] = value;
-          dstAttr[key] = srcAttr[key];
-        }
-      });
-    }
-
-
-    function compileTemplateUrl(directives, $compileNode, tAttrs,
-        $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
-      var linkQueue = [],
-          afterTemplateNodeLinkFn,
-          afterTemplateChildLinkFn,
-          beforeTemplateCompileNode = $compileNode[0],
-          origAsyncDirective = directives.shift(),
-          // The fact that we have to copy and patch the directive seems wrong!
-          derivedSyncDirective = extend({}, origAsyncDirective, {
-            templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective
-          }),
-          templateUrl = (isFunction(origAsyncDirective.templateUrl))
-              ? origAsyncDirective.templateUrl($compileNode, tAttrs)
-              : origAsyncDirective.templateUrl,
-          templateNamespace = origAsyncDirective.templateNamespace;
-
-      $compileNode.empty();
-
-      $templateRequest($sce.getTrustedResourceUrl(templateUrl))
-        .then(function(content) {
-          var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
-
-          content = denormalizeTemplate(content);
-
-          if (origAsyncDirective.replace) {
-            if (jqLiteIsTextNode(content)) {
-              $template = [];
-            } else {
-              $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
-            }
-            compileNode = $template[0];
-
-            if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
-              throw $compileMinErr('tplrt',
-                  "Template for directive '{0}' must have exactly one root element. {1}",
-                  origAsyncDirective.name, templateUrl);
-            }
-
-            tempTemplateAttrs = {$attr: {}};
-            replaceWith($rootElement, $compileNode, compileNode);
-            var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
-
-            if (isObject(origAsyncDirective.scope)) {
-              markDirectivesAsIsolate(templateDirectives);
-            }
-            directives = templateDirectives.concat(directives);
-            mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
-          } else {
-            compileNode = beforeTemplateCompileNode;
-            $compileNode.html(content);
-          }
-
-          directives.unshift(derivedSyncDirective);
-
-          afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,
-              childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,
-              previousCompileContext);
-          forEach($rootElement, function(node, i) {
-            if (node == compileNode) {
-              $rootElement[i] = $compileNode[0];
-            }
-          });
-          afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);
-
-          while (linkQueue.length) {
-            var scope = linkQueue.shift(),
-                beforeTemplateLinkNode = linkQueue.shift(),
-                linkRootElement = linkQueue.shift(),
-                boundTranscludeFn = linkQueue.shift(),
-                linkNode = $compileNode[0];
-
-            if (scope.$$destroyed) continue;
-
-            if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
-              var oldClasses = beforeTemplateLinkNode.className;
-
-              if (!(previousCompileContext.hasElementTranscludeDirective &&
-                  origAsyncDirective.replace)) {
-                // it was cloned therefore we have to clone as well.
-                linkNode = jqLiteClone(compileNode);
-              }
-              replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
-
-              // Copy in CSS classes from original node
-              safeAddClass(jqLite(linkNode), oldClasses);
-            }
-            if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
-              childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
-            } else {
-              childBoundTranscludeFn = boundTranscludeFn;
-            }
-            afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,
-              childBoundTranscludeFn);
-          }
-          linkQueue = null;
-        });
-
-      return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {
-        var childBoundTranscludeFn = boundTranscludeFn;
-        if (scope.$$destroyed) return;
-        if (linkQueue) {
-          linkQueue.push(scope,
-                         node,
-                         rootElement,
-                         childBoundTranscludeFn);
-        } else {
-          if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
-            childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
-          }
-          afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);
-        }
-      };
-    }
-
-
-    /**
-     * Sorting function for bound directives.
-     */
-    function byPriority(a, b) {
-      var diff = b.priority - a.priority;
-      if (diff !== 0) return diff;
-      if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;
-      return a.index - b.index;
-    }
-
-
-    function assertNoDuplicate(what, previousDirective, directive, element) {
-      if (previousDirective) {
-        throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}',
-            previousDirective.name, directive.name, what, startingTag(element));
-      }
-    }
-
-
-    function addTextInterpolateDirective(directives, text) {
-      var interpolateFn = $interpolate(text, true);
-      if (interpolateFn) {
-        directives.push({
-          priority: 0,
-          compile: function textInterpolateCompileFn(templateNode) {
-            var templateNodeParent = templateNode.parent(),
-                hasCompileParent = !!templateNodeParent.length;
-
-            // When transcluding a template that has bindings in the root
-            // we don't have a parent and thus need to add the class during linking fn.
-            if (hasCompileParent) compile.$$addBindingClass(templateNodeParent);
-
-            return function textInterpolateLinkFn(scope, node) {
-              var parent = node.parent();
-              if (!hasCompileParent) compile.$$addBindingClass(parent);
-              compile.$$addBindingInfo(parent, interpolateFn.expressions);
-              scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {
-                node[0].nodeValue = value;
-              });
-            };
-          }
-        });
-      }
-    }
-
-
-    function wrapTemplate(type, template) {
-      type = lowercase(type || 'html');
-      switch (type) {
-      case 'svg':
-      case 'math':
-        var wrapper = document.createElement('div');
-        wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';
-        return wrapper.childNodes[0].childNodes;
-      default:
-        return template;
-      }
-    }
-
-
-    function getTrustedContext(node, attrNormalizedName) {
-      if (attrNormalizedName == "srcdoc") {
-        return $sce.HTML;
-      }
-      var tag = nodeName_(node);
-      // maction[xlink:href] can source SVG.  It's not limited to <maction>.
-      if (attrNormalizedName == "xlinkHref" ||
-          (tag == "form" && attrNormalizedName == "action") ||
-          (tag != "img" && (attrNormalizedName == "src" ||
-                            attrNormalizedName == "ngSrc"))) {
-        return $sce.RESOURCE_URL;
-      }
-    }
-
-
-    function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) {
-      var trustedContext = getTrustedContext(node, name);
-      allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing;
-
-      var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing);
-
-      // no interpolation found -> ignore
-      if (!interpolateFn) return;
-
-
-      if (name === "multiple" && nodeName_(node) === "select") {
-        throw $compileMinErr("selmulti",
-            "Binding to the 'multiple' attribute is not supported. Element: {0}",
-            startingTag(node));
-      }
-
-      directives.push({
-        priority: 100,
-        compile: function() {
-            return {
-              pre: function attrInterpolatePreLinkFn(scope, element, attr) {
-                var $$observers = (attr.$$observers || (attr.$$observers = {}));
-
-                if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {
-                  throw $compileMinErr('nodomevents',
-                      "Interpolations for HTML DOM event attributes are disallowed.  Please use the " +
-                          "ng- versions (such as ng-click instead of onclick) instead.");
-                }
-
-                // If the attribute has changed since last $interpolate()ed
-                var newValue = attr[name];
-                if (newValue !== value) {
-                  // we need to interpolate again since the attribute value has been updated
-                  // (e.g. by another directive's compile function)
-                  // ensure unset/empty values make interpolateFn falsy
-                  interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);
-                  value = newValue;
-                }
-
-                // if attribute was updated so that there is no interpolation going on we don't want to
-                // register any observers
-                if (!interpolateFn) return;
-
-                // initialize attr object so that it's ready in case we need the value for isolate
-                // scope initialization, otherwise the value would not be available from isolate
-                // directive's linking fn during linking phase
-                attr[name] = interpolateFn(scope);
-
-                ($$observers[name] || ($$observers[name] = [])).$$inter = true;
-                (attr.$$observers && attr.$$observers[name].$$scope || scope).
-                  $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {
-                    //special case for class attribute addition + removal
-                    //so that class changes can tap into the animation
-                    //hooks provided by the $animate service. Be sure to
-                    //skip animations when the first digest occurs (when
-                    //both the new and the old values are the same) since
-                    //the CSS classes are the non-interpolated values
-                    if (name === 'class' && newValue != oldValue) {
-                      attr.$updateClass(newValue, oldValue);
-                    } else {
-                      attr.$set(name, newValue);
-                    }
-                  });
-              }
-            };
-          }
-      });
-    }
-
-
-    /**
-     * This is a special jqLite.replaceWith, which can replace items which
-     * have no parents, provided that the containing jqLite collection is provided.
-     *
-     * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes
-     *                               in the root of the tree.
-     * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep
-     *                                  the shell, but replace its DOM node reference.
-     * @param {Node} newNode The new DOM node.
-     */
-    function replaceWith($rootElement, elementsToRemove, newNode) {
-      var firstElementToRemove = elementsToRemove[0],
-          removeCount = elementsToRemove.length,
-          parent = firstElementToRemove.parentNode,
-          i, ii;
-
-      if ($rootElement) {
-        for (i = 0, ii = $rootElement.length; i < ii; i++) {
-          if ($rootElement[i] == firstElementToRemove) {
-            $rootElement[i++] = newNode;
-            for (var j = i, j2 = j + removeCount - 1,
-                     jj = $rootElement.length;
-                 j < jj; j++, j2++) {
-              if (j2 < jj) {
-                $rootElement[j] = $rootElement[j2];
-              } else {
-                delete $rootElement[j];
-              }
-            }
-            $rootElement.length -= removeCount - 1;
-
-            // If the replaced element is also the jQuery .context then replace it
-            // .context is a deprecated jQuery api, so we should set it only when jQuery set it
-            // http://api.jquery.com/context/
-            if ($rootElement.context === firstElementToRemove) {
-              $rootElement.context = newNode;
-            }
-            break;
-          }
-        }
-      }
-
-      if (parent) {
-        parent.replaceChild(newNode, firstElementToRemove);
-      }
-
-      // TODO(perf): what's this document fragment for? is it needed? can we at least reuse it?
-      var fragment = document.createDocumentFragment();
-      fragment.appendChild(firstElementToRemove);
-
-      // Copy over user data (that includes Angular's $scope etc.). Don't copy private
-      // data here because there's no public interface in jQuery to do that and copying over
-      // event listeners (which is the main use of private data) wouldn't work anyway.
-      jqLite(newNode).data(jqLite(firstElementToRemove).data());
-
-      // Remove data of the replaced element. We cannot just call .remove()
-      // on the element it since that would deallocate scope that is needed
-      // for the new node. Instead, remove the data "manually".
-      if (!jQuery) {
-        delete jqLite.cache[firstElementToRemove[jqLite.expando]];
-      } else {
-        // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after
-        // the replaced element. The cleanData version monkey-patched by Angular would cause
-        // the scope to be trashed and we do need the very same scope to work with the new
-        // element. However, we cannot just cache the non-patched version and use it here as
-        // that would break if another library patches the method after Angular does (one
-        // example is jQuery UI). Instead, set a flag indicating scope destroying should be
-        // skipped this one time.
-        skipDestroyOnNextJQueryCleanData = true;
-        jQuery.cleanData([firstElementToRemove]);
-      }
-
-      for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {
-        var element = elementsToRemove[k];
-        jqLite(element).remove(); // must do this way to clean up expando
-        fragment.appendChild(element);
-        delete elementsToRemove[k];
-      }
-
-      elementsToRemove[0] = newNode;
-      elementsToRemove.length = 1;
-    }
-
-
-    function cloneAndAnnotateFn(fn, annotation) {
-      return extend(function() { return fn.apply(null, arguments); }, fn, annotation);
-    }
-
-
-    function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {
-      try {
-        linkFn(scope, $element, attrs, controllers, transcludeFn);
-      } catch (e) {
-        $exceptionHandler(e, startingTag($element));
-      }
-    }
-  }];
-}
-
-var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i;
-/**
- * Converts all accepted directives format into proper directive name.
- * @param name Name to normalize
- */
-function directiveNormalize(name) {
-  return camelCase(name.replace(PREFIX_REGEXP, ''));
-}
-
-/**
- * @ngdoc type
- * @name $compile.directive.Attributes
- *
- * @description
- * A shared object between directive compile / linking functions which contains normalized DOM
- * element attributes. The values reflect current binding state `{{ }}`. The normalization is
- * needed since all of these are treated as equivalent in Angular:
- *
- * ```
- *    <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
- * ```
- */
-
-/**
- * @ngdoc property
- * @name $compile.directive.Attributes#$attr
- *
- * @description
- * A map of DOM element attribute names to the normalized name. This is
- * needed to do reverse lookup from normalized name back to actual name.
- */
-
-
-/**
- * @ngdoc method
- * @name $compile.directive.Attributes#$set
- * @kind function
- *
- * @description
- * Set DOM element attribute value.
- *
- *
- * @param {string} name Normalized element attribute name of the property to modify. The name is
- *          reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}
- *          property to the original name.
- * @param {string} value Value to set the attribute to. The value can be an interpolated string.
- */
-
-
-
-/**
- * Closure compiler type information
- */
-
-function nodesetLinkingFn(
-  /* angular.Scope */ scope,
-  /* NodeList */ nodeList,
-  /* Element */ rootElement,
-  /* function(Function) */ boundTranscludeFn
-) {}
-
-function directiveLinkingFn(
-  /* nodesetLinkingFn */ nodesetLinkingFn,
-  /* angular.Scope */ scope,
-  /* Node */ node,
-  /* Element */ rootElement,
-  /* function(Function) */ boundTranscludeFn
-) {}
-
-function tokenDifference(str1, str2) {
-  var values = '',
-      tokens1 = str1.split(/\s+/),
-      tokens2 = str2.split(/\s+/);
-
-  outer:
-  for (var i = 0; i < tokens1.length; i++) {
-    var token = tokens1[i];
-    for (var j = 0; j < tokens2.length; j++) {
-      if (token == tokens2[j]) continue outer;
-    }
-    values += (values.length > 0 ? ' ' : '') + token;
-  }
-  return values;
-}
-
-function removeComments(jqNodes) {
-  jqNodes = jqLite(jqNodes);
-  var i = jqNodes.length;
-
-  if (i <= 1) {
-    return jqNodes;
-  }
-
-  while (i--) {
-    var node = jqNodes[i];
-    if (node.nodeType === NODE_TYPE_COMMENT) {
-      splice.call(jqNodes, i, 1);
-    }
-  }
-  return jqNodes;
-}
-
-/**
- * @ngdoc provider
- * @name $controllerProvider
- * @description
- * The {@link ng.$controller $controller service} is used by Angular to create new
- * controllers.
- *
- * This provider allows controller registration via the
- * {@link ng.$controllerProvider#register register} method.
- */
-function $ControllerProvider() {
-  var controllers = {},
-      globals = false,
-      CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/;
-
-
-  /**
-   * @ngdoc method
-   * @name $controllerProvider#register
-   * @param {string|Object} name Controller name, or an object map of controllers where the keys are
-   *    the names and the values are the constructors.
-   * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI
-   *    annotations in the array notation).
-   */
-  this.register = function(name, constructor) {
-    assertNotHasOwnProperty(name, 'controller');
-    if (isObject(name)) {
-      extend(controllers, name);
-    } else {
-      controllers[name] = constructor;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $controllerProvider#allowGlobals
-   * @description If called, allows `$controller` to find controller constructors on `window`
-   */
-  this.allowGlobals = function() {
-    globals = true;
-  };
-
-
-  this.$get = ['$injector', '$window', function($injector, $window) {
-
-    /**
-     * @ngdoc service
-     * @name $controller
-     * @requires $injector
-     *
-     * @param {Function|string} constructor If called with a function then it's considered to be the
-     *    controller constructor function. Otherwise it's considered to be a string which is used
-     *    to retrieve the controller constructor using the following steps:
-     *
-     *    * check if a controller with given name is registered via `$controllerProvider`
-     *    * check if evaluating the string on the current scope returns a constructor
-     *    * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
-     *      `window` object (not recommended)
-     *
-     *    The string can use the `controller as property` syntax, where the controller instance is published
-     *    as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
-     *    to work correctly.
-     *
-     * @param {Object} locals Injection locals for Controller.
-     * @return {Object} Instance of given controller.
-     *
-     * @description
-     * `$controller` service is responsible for instantiating controllers.
-     *
-     * It's just a simple call to {@link auto.$injector $injector}, but extracted into
-     * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).
-     */
-    return function(expression, locals, later, ident) {
-      // PRIVATE API:
-      //   param `later` --- indicates that the controller's constructor is invoked at a later time.
-      //                     If true, $controller will allocate the object with the correct
-      //                     prototype chain, but will not invoke the controller until a returned
-      //                     callback is invoked.
-      //   param `ident` --- An optional label which overrides the label parsed from the controller
-      //                     expression, if any.
-      var instance, match, constructor, identifier;
-      later = later === true;
-      if (ident && isString(ident)) {
-        identifier = ident;
-      }
-
-      if (isString(expression)) {
-        match = expression.match(CNTRL_REG),
-        constructor = match[1],
-        identifier = identifier || match[3];
-        expression = controllers.hasOwnProperty(constructor)
-            ? controllers[constructor]
-            : getter(locals.$scope, constructor, true) ||
-                (globals ? getter($window, constructor, true) : undefined);
-
-        assertArgFn(expression, constructor, true);
-      }
-
-      if (later) {
-        // Instantiate controller later:
-        // This machinery is used to create an instance of the object before calling the
-        // controller's constructor itself.
-        //
-        // This allows properties to be added to the controller before the constructor is
-        // invoked. Primarily, this is used for isolate scope bindings in $compile.
-        //
-        // This feature is not intended for use by applications, and is thus not documented
-        // publicly.
-        // Object creation: http://jsperf.com/create-constructor/2
-        var controllerPrototype = (isArray(expression) ?
-          expression[expression.length - 1] : expression).prototype;
-        instance = Object.create(controllerPrototype || null);
-
-        if (identifier) {
-          addIdentifier(locals, identifier, instance, constructor || expression.name);
-        }
-
-        return extend(function() {
-          $injector.invoke(expression, instance, locals, constructor);
-          return instance;
-        }, {
-          instance: instance,
-          identifier: identifier
-        });
-      }
-
-      instance = $injector.instantiate(expression, locals, constructor);
-
-      if (identifier) {
-        addIdentifier(locals, identifier, instance, constructor || expression.name);
-      }
-
-      return instance;
-    };
-
-    function addIdentifier(locals, identifier, instance, name) {
-      if (!(locals && isObject(locals.$scope))) {
-        throw minErr('$controller')('noscp',
-          "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
-          name, identifier);
-      }
-
-      locals.$scope[identifier] = instance;
-    }
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $document
- * @requires $window
- *
- * @description
- * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.
- *
- * @example
-   <example module="documentExample">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-         <p>$document title: <b ng-bind="title"></b></p>
-         <p>window.document title: <b ng-bind="windowTitle"></b></p>
-       </div>
-     </file>
-     <file name="script.js">
-       angular.module('documentExample', [])
-         .controller('ExampleController', ['$scope', '$document', function($scope, $document) {
-           $scope.title = $document[0].title;
-           $scope.windowTitle = angular.element(window.document)[0].title;
-         }]);
-     </file>
-   </example>
- */
-function $DocumentProvider() {
-  this.$get = ['$window', function(window) {
-    return jqLite(window.document);
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $exceptionHandler
- * @requires ng.$log
- *
- * @description
- * Any uncaught exception in angular expressions is delegated to this service.
- * The default implementation simply delegates to `$log.error` which logs it into
- * the browser console.
- *
- * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by
- * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.
- *
- * ## Example:
- *
- * ```js
- *   angular.module('exceptionOverride', []).factory('$exceptionHandler', function() {
- *     return function(exception, cause) {
- *       exception.message += ' (caused by "' + cause + '")';
- *       throw exception;
- *     };
- *   });
- * ```
- *
- * This example will override the normal action of `$exceptionHandler`, to make angular
- * exceptions fail hard when they happen, instead of just logging to the console.
- *
- * <hr />
- * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind`
- * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler}
- * (unless executed during a digest).
- *
- * If you wish, you can manually delegate exceptions, e.g.
- * `try { ... } catch(e) { $exceptionHandler(e); }`
- *
- * @param {Error} exception Exception associated with the error.
- * @param {string=} cause optional information about the context in which
- *       the error was thrown.
- *
- */
-function $ExceptionHandlerProvider() {
-  this.$get = ['$log', function($log) {
-    return function(exception, cause) {
-      $log.error.apply($log, arguments);
-    };
-  }];
-}
-
-var APPLICATION_JSON = 'application/json';
-var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'};
-var JSON_START = /^\[|^\{(?!\{)/;
-var JSON_ENDS = {
-  '[': /]$/,
-  '{': /}$/
-};
-var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
-
-function defaultHttpResponseTransform(data, headers) {
-  if (isString(data)) {
-    // Strip json vulnerability protection prefix and trim whitespace
-    var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();
-
-    if (tempData) {
-      var contentType = headers('Content-Type');
-      if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) {
-        data = fromJson(tempData);
-      }
-    }
-  }
-
-  return data;
-}
-
-function isJsonLike(str) {
-    var jsonStart = str.match(JSON_START);
-    return jsonStart && JSON_ENDS[jsonStart[0]].test(str);
-}
-
-/**
- * Parse headers into key value object
- *
- * @param {string} headers Raw headers as a string
- * @returns {Object} Parsed headers as key value object
- */
-function parseHeaders(headers) {
-  var parsed = createMap(), key, val, i;
-
-  if (!headers) return parsed;
-
-  forEach(headers.split('\n'), function(line) {
-    i = line.indexOf(':');
-    key = lowercase(trim(line.substr(0, i)));
-    val = trim(line.substr(i + 1));
-
-    if (key) {
-      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
-    }
-  });
-
-  return parsed;
-}
-
-
-/**
- * Returns a function that provides access to parsed headers.
- *
- * Headers are lazy parsed when first requested.
- * @see parseHeaders
- *
- * @param {(string|Object)} headers Headers to provide access to.
- * @returns {function(string=)} Returns a getter function which if called with:
- *
- *   - if called with single an argument returns a single header value or null
- *   - if called with no arguments returns an object containing all headers.
- */
-function headersGetter(headers) {
-  var headersObj = isObject(headers) ? headers : undefined;
-
-  return function(name) {
-    if (!headersObj) headersObj =  parseHeaders(headers);
-
-    if (name) {
-      var value = headersObj[lowercase(name)];
-      if (value === void 0) {
-        value = null;
-      }
-      return value;
-    }
-
-    return headersObj;
-  };
-}
-
-
-/**
- * Chain all given functions
- *
- * This function is used for both request and response transforming
- *
- * @param {*} data Data to transform.
- * @param {function(string=)} headers HTTP headers getter fn.
- * @param {number} status HTTP status code of the response.
- * @param {(Function|Array.<Function>)} fns Function or an array of functions.
- * @returns {*} Transformed data.
- */
-function transformData(data, headers, status, fns) {
-  if (isFunction(fns))
-    return fns(data, headers, status);
-
-  forEach(fns, function(fn) {
-    data = fn(data, headers, status);
-  });
-
-  return data;
-}
-
-
-function isSuccess(status) {
-  return 200 <= status && status < 300;
-}
-
-
-/**
- * @ngdoc provider
- * @name $httpProvider
- * @description
- * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.
- * */
-function $HttpProvider() {
-  /**
-   * @ngdoc property
-   * @name $httpProvider#defaults
-   * @description
-   *
-   * Object containing default values for all {@link ng.$http $http} requests.
-   *
-   * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`}
-   * that will provide the cache for all requests who set their `cache` property to `true`.
-   * If you set the `default.cache = false` then only requests that specify their own custom
-   * cache object will be cached. See {@link $http#caching $http Caching} for more information.
-   *
-   * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.
-   * Defaults value is `'XSRF-TOKEN'`.
-   *
-   * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the
-   * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.
-   *
-   * - **`defaults.headers`** - {Object} - Default headers for all $http requests.
-   * Refer to {@link ng.$http#setting-http-headers $http} for documentation on
-   * setting default headers.
-   *     - **`defaults.headers.common`**
-   *     - **`defaults.headers.post`**
-   *     - **`defaults.headers.put`**
-   *     - **`defaults.headers.patch`**
-   *
-   **/
-  var defaults = this.defaults = {
-    // transform incoming response data
-    transformResponse: [defaultHttpResponseTransform],
-
-    // transform outgoing request data
-    transformRequest: [function(d) {
-      return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;
-    }],
-
-    // default headers
-    headers: {
-      common: {
-        'Accept': 'application/json, text/plain, */*'
-      },
-      post:   shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
-      put:    shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
-      patch:  shallowCopy(CONTENT_TYPE_APPLICATION_JSON)
-    },
-
-    xsrfCookieName: 'XSRF-TOKEN',
-    xsrfHeaderName: 'X-XSRF-TOKEN'
-  };
-
-  var useApplyAsync = false;
-  /**
-   * @ngdoc method
-   * @name $httpProvider#useApplyAsync
-   * @description
-   *
-   * Configure $http service to combine processing of multiple http responses received at around
-   * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in
-   * significant performance improvement for bigger applications that make many HTTP requests
-   * concurrently (common during application bootstrap).
-   *
-   * Defaults to false. If no value is specifed, returns the current configured value.
-   *
-   * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred
-   *    "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window
-   *    to load and share the same digest cycle.
-   *
-   * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
-   *    otherwise, returns the current configured value.
-   **/
-  this.useApplyAsync = function(value) {
-    if (isDefined(value)) {
-      useApplyAsync = !!value;
-      return this;
-    }
-    return useApplyAsync;
-  };
-
-  /**
-   * @ngdoc property
-   * @name $httpProvider#interceptors
-   * @description
-   *
-   * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}
-   * pre-processing of request or postprocessing of responses.
-   *
-   * These service factories are ordered by request, i.e. they are applied in the same order as the
-   * array, on request, but reverse order, on response.
-   *
-   * {@link ng.$http#interceptors Interceptors detailed info}
-   **/
-  var interceptorFactories = this.interceptors = [];
-
-  this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector',
-      function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) {
-
-    var defaultCache = $cacheFactory('$http');
-
-    /**
-     * Interceptors stored in reverse order. Inner interceptors before outer interceptors.
-     * The reversal is needed so that we can build up the interception chain around the
-     * server request.
-     */
-    var reversedInterceptors = [];
-
-    forEach(interceptorFactories, function(interceptorFactory) {
-      reversedInterceptors.unshift(isString(interceptorFactory)
-          ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));
-    });
-
-    /**
-     * @ngdoc service
-     * @kind function
-     * @name $http
-     * @requires ng.$httpBackend
-     * @requires $cacheFactory
-     * @requires $rootScope
-     * @requires $q
-     * @requires $injector
-     *
-     * @description
-     * The `$http` service is a core Angular service that facilitates communication with the remote
-     * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)
-     * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).
-     *
-     * For unit testing applications that use `$http` service, see
-     * {@link ngMock.$httpBackend $httpBackend mock}.
-     *
-     * For a higher level of abstraction, please check out the {@link ngResource.$resource
-     * $resource} service.
-     *
-     * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
-     * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage
-     * it is important to familiarize yourself with these APIs and the guarantees they provide.
-     *
-     *
-     * ## General usage
-     * The `$http` service is a function which takes a single argument — a configuration object —
-     * that is used to generate an HTTP request and returns  a {@link ng.$q promise}
-     * with two $http specific methods: `success` and `error`.
-     *
-     * ```js
-     *   // Simple GET request example :
-     *   $http.get('/someUrl').
-     *     success(function(data, status, headers, config) {
-     *       // this callback will be called asynchronously
-     *       // when the response is available
-     *     }).
-     *     error(function(data, status, headers, config) {
-     *       // called asynchronously if an error occurs
-     *       // or server returns response with an error status.
-     *     });
-     * ```
-     *
-     * ```js
-     *   // Simple POST request example (passing data) :
-     *   $http.post('/someUrl', {msg:'hello word!'}).
-     *     success(function(data, status, headers, config) {
-     *       // this callback will be called asynchronously
-     *       // when the response is available
-     *     }).
-     *     error(function(data, status, headers, config) {
-     *       // called asynchronously if an error occurs
-     *       // or server returns response with an error status.
-     *     });
-     * ```
-     *
-     *
-     * Since the returned value of calling the $http function is a `promise`, you can also use
-     * the `then` method to register callbacks, and these callbacks will receive a single argument –
-     * an object representing the response. See the API signature and type info below for more
-     * details.
-     *
-     * A response status code between 200 and 299 is considered a success status and
-     * will result in the success callback being called. Note that if the response is a redirect,
-     * XMLHttpRequest will transparently follow it, meaning that the error callback will not be
-     * called for such responses.
-     *
-     * ## Writing Unit Tests that use $http
-     * When unit testing (using {@link ngMock ngMock}), it is necessary to call
-     * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending
-     * request using trained responses.
-     *
-     * ```
-     * $httpBackend.expectGET(...);
-     * $http.get(...);
-     * $httpBackend.flush();
-     * ```
-     *
-     * ## Shortcut methods
-     *
-     * Shortcut methods are also available. All shortcut methods require passing in the URL, and
-     * request data must be passed in for POST/PUT requests.
-     *
-     * ```js
-     *   $http.get('/someUrl').success(successCallback);
-     *   $http.post('/someUrl', data).success(successCallback);
-     * ```
-     *
-     * Complete list of shortcut methods:
-     *
-     * - {@link ng.$http#get $http.get}
-     * - {@link ng.$http#head $http.head}
-     * - {@link ng.$http#post $http.post}
-     * - {@link ng.$http#put $http.put}
-     * - {@link ng.$http#delete $http.delete}
-     * - {@link ng.$http#jsonp $http.jsonp}
-     * - {@link ng.$http#patch $http.patch}
-     *
-     *
-     * ## Setting HTTP Headers
-     *
-     * The $http service will automatically add certain HTTP headers to all requests. These defaults
-     * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration
-     * object, which currently contains this default configuration:
-     *
-     * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):
-     *   - `Accept: application/json, text/plain, * / *`
-     * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)
-     *   - `Content-Type: application/json`
-     * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)
-     *   - `Content-Type: application/json`
-     *
-     * To add or overwrite these defaults, simply add or remove a property from these configuration
-     * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object
-     * with the lowercased HTTP method name as the key, e.g.
-     * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.
-     *
-     * The defaults can also be set at runtime via the `$http.defaults` object in the same
-     * fashion. For example:
-     *
-     * ```
-     * module.run(function($http) {
-     *   $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
-     * });
-     * ```
-     *
-     * In addition, you can supply a `headers` property in the config object passed when
-     * calling `$http(config)`, which overrides the defaults without changing them globally.
-     *
-     * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,
-     * Use the `headers` property, setting the desired header to `undefined`. For example:
-     *
-     * ```js
-     * var req = {
-     *  method: 'POST',
-     *  url: 'http://example.com',
-     *  headers: {
-     *    'Content-Type': undefined
-     *  },
-     *  data: { test: 'test' },
-     * }
-     *
-     * $http(req).success(function(){...}).error(function(){...});
-     * ```
-     *
-     * ## Transforming Requests and Responses
-     *
-     * Both requests and responses can be transformed using transformation functions: `transformRequest`
-     * and `transformResponse`. These properties can be a single function that returns
-     * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions,
-     * which allows you to `push` or `unshift` a new transformation function into the transformation chain.
-     *
-     * ### Default Transformations
-     *
-     * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and
-     * `defaults.transformResponse` properties. If a request does not provide its own transformations
-     * then these will be applied.
-     *
-     * You can augment or replace the default transformations by modifying these properties by adding to or
-     * replacing the array.
-     *
-     * Angular provides the following default transformations:
-     *
-     * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`):
-     *
-     * - If the `data` property of the request configuration object contains an object, serialize it
-     *   into JSON format.
-     *
-     * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`):
-     *
-     *  - If XSRF prefix is detected, strip it (see Security Considerations section below).
-     *  - If JSON response is detected, deserialize it using a JSON parser.
-     *
-     *
-     * ### Overriding the Default Transformations Per Request
-     *
-     * If you wish override the request/response transformations only for a single request then provide
-     * `transformRequest` and/or `transformResponse` properties on the configuration object passed
-     * into `$http`.
-     *
-     * Note that if you provide these properties on the config object the default transformations will be
-     * overwritten. If you wish to augment the default transformations then you must include them in your
-     * local transformation array.
-     *
-     * The following code demonstrates adding a new response transformation to be run after the default response
-     * transformations have been run.
-     *
-     * ```js
-     * function appendTransform(defaults, transform) {
-     *
-     *   // We can't guarantee that the default transformation is an array
-     *   defaults = angular.isArray(defaults) ? defaults : [defaults];
-     *
-     *   // Append the new transformation to the defaults
-     *   return defaults.concat(transform);
-     * }
-     *
-     * $http({
-     *   url: '...',
-     *   method: 'GET',
-     *   transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
-     *     return doTransform(value);
-     *   })
-     * });
-     * ```
-     *
-     *
-     * ## Caching
-     *
-     * To enable caching, set the request configuration `cache` property to `true` (to use default
-     * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).
-     * When the cache is enabled, `$http` stores the response from the server in the specified
-     * cache. The next time the same request is made, the response is served from the cache without
-     * sending a request to the server.
-     *
-     * Note that even if the response is served from cache, delivery of the data is asynchronous in
-     * the same way that real requests are.
-     *
-     * If there are multiple GET requests for the same URL that should be cached using the same
-     * cache, but the cache is not populated yet, only one request to the server will be made and
-     * the remaining requests will be fulfilled using the response from the first request.
-     *
-     * You can change the default cache to a new object (built with
-     * {@link ng.$cacheFactory `$cacheFactory`}) by updating the
-     * {@link ng.$http#defaults `$http.defaults.cache`} property. All requests who set
-     * their `cache` property to `true` will now use this cache object.
-     *
-     * If you set the default cache to `false` then only requests that specify their own custom
-     * cache object will be cached.
-     *
-     * ## Interceptors
-     *
-     * Before you start creating interceptors, be sure to understand the
-     * {@link ng.$q $q and deferred/promise APIs}.
-     *
-     * For purposes of global error handling, authentication, or any kind of synchronous or
-     * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be
-     * able to intercept requests before they are handed to the server and
-     * responses before they are handed over to the application code that
-     * initiated these requests. The interceptors leverage the {@link ng.$q
-     * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.
-     *
-     * The interceptors are service factories that are registered with the `$httpProvider` by
-     * adding them to the `$httpProvider.interceptors` array. The factory is called and
-     * injected with dependencies (if specified) and returns the interceptor.
-     *
-     * There are two kinds of interceptors (and two kinds of rejection interceptors):
-     *
-     *   * `request`: interceptors get called with a http `config` object. The function is free to
-     *     modify the `config` object or create a new one. The function needs to return the `config`
-     *     object directly, or a promise containing the `config` or a new `config` object.
-     *   * `requestError`: interceptor gets called when a previous interceptor threw an error or
-     *     resolved with a rejection.
-     *   * `response`: interceptors get called with http `response` object. The function is free to
-     *     modify the `response` object or create a new one. The function needs to return the `response`
-     *     object directly, or as a promise containing the `response` or a new `response` object.
-     *   * `responseError`: interceptor gets called when a previous interceptor threw an error or
-     *     resolved with a rejection.
-     *
-     *
-     * ```js
-     *   // register the interceptor as a service
-     *   $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
-     *     return {
-     *       // optional method
-     *       'request': function(config) {
-     *         // do something on success
-     *         return config;
-     *       },
-     *
-     *       // optional method
-     *      'requestError': function(rejection) {
-     *         // do something on error
-     *         if (canRecover(rejection)) {
-     *           return responseOrNewPromise
-     *         }
-     *         return $q.reject(rejection);
-     *       },
-     *
-     *
-     *
-     *       // optional method
-     *       'response': function(response) {
-     *         // do something on success
-     *         return response;
-     *       },
-     *
-     *       // optional method
-     *      'responseError': function(rejection) {
-     *         // do something on error
-     *         if (canRecover(rejection)) {
-     *           return responseOrNewPromise
-     *         }
-     *         return $q.reject(rejection);
-     *       }
-     *     };
-     *   });
-     *
-     *   $httpProvider.interceptors.push('myHttpInterceptor');
-     *
-     *
-     *   // alternatively, register the interceptor via an anonymous factory
-     *   $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
-     *     return {
-     *      'request': function(config) {
-     *          // same as above
-     *       },
-     *
-     *       'response': function(response) {
-     *          // same as above
-     *       }
-     *     };
-     *   });
-     * ```
-     *
-     * ## Security Considerations
-     *
-     * When designing web applications, consider security threats from:
-     *
-     * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
-     * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)
-     *
-     * Both server and the client must cooperate in order to eliminate these threats. Angular comes
-     * pre-configured with strategies that address these issues, but for this to work backend server
-     * cooperation is required.
-     *
-     * ### JSON Vulnerability Protection
-     *
-     * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
-     * allows third party website to turn your JSON resource URL into
-     * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To
-     * counter this your server can prefix all JSON requests with following string `")]}',\n"`.
-     * Angular will automatically strip the prefix before processing it as JSON.
-     *
-     * For example if your server needs to return:
-     * ```js
-     * ['one','two']
-     * ```
-     *
-     * which is vulnerable to attack, your server can return:
-     * ```js
-     * )]}',
-     * ['one','two']
-     * ```
-     *
-     * Angular will strip the prefix, before processing the JSON.
-     *
-     *
-     * ### Cross Site Request Forgery (XSRF) Protection
-     *
-     * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which
-     * an unauthorized site can gain your user's private data. Angular provides a mechanism
-     * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie
-     * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only
-     * JavaScript that runs on your domain could read the cookie, your server can be assured that
-     * the XHR came from JavaScript running on your domain. The header will not be set for
-     * cross-domain requests.
-     *
-     * To take advantage of this, your server needs to set a token in a JavaScript readable session
-     * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the
-     * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure
-     * that only JavaScript running on your domain could have sent the request. The token must be
-     * unique for each user and must be verifiable by the server (to prevent the JavaScript from
-     * making up its own tokens). We recommend that the token is a digest of your site's
-     * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography&#41;)
-     * for added security.
-     *
-     * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
-     * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,
-     * or the per-request config object.
-     *
-     *
-     * @param {object} config Object describing the request to be made and how it should be
-     *    processed. The object has following properties:
-     *
-     *    - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)
-     *    - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.
-     *    - **params** – `{Object.<string|Object>}` – Map of strings or objects which will be turned
-     *      to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be
-     *      JSONified.
-     *    - **data** – `{string|Object}` – Data to be sent as the request message data.
-     *    - **headers** – `{Object}` – Map of strings or functions which return strings representing
-     *      HTTP headers to send to the server. If the return value of a function is null, the
-     *      header will not be sent.
-     *    - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.
-     *    - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.
-     *    - **transformRequest** –
-     *      `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
-     *      transform function or an array of such functions. The transform function takes the http
-     *      request body and headers and returns its transformed (typically serialized) version.
-     *      See {@link ng.$http#overriding-the-default-transformations-per-request
-     *      Overriding the Default Transformations}
-     *    - **transformResponse** –
-     *      `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –
-     *      transform function or an array of such functions. The transform function takes the http
-     *      response body, headers and status and returns its transformed (typically deserialized) version.
-     *      See {@link ng.$http#overriding-the-default-transformations-per-request
-     *      Overriding the Default Transformations}
-     *    - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
-     *      GET request, otherwise if a cache instance built with
-     *      {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
-     *      caching.
-     *    - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
-     *      that should abort the request when resolved.
-     *    - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
-     *      XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
-     *      for more information.
-     *    - **responseType** - `{string}` - see
-     *      [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
-     *
-     * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the
-     *   standard `then` method and two http specific methods: `success` and `error`. The `then`
-     *   method takes two arguments a success and an error callback which will be called with a
-     *   response object. The `success` and `error` methods take a single argument - a function that
-     *   will be called when the request succeeds or fails respectively. The arguments passed into
-     *   these functions are destructured representation of the response object passed into the
-     *   `then` method. The response object has these properties:
-     *
-     *   - **data** – `{string|Object}` – The response body transformed with the transform
-     *     functions.
-     *   - **status** – `{number}` – HTTP status code of the response.
-     *   - **headers** – `{function([headerName])}` – Header getter function.
-     *   - **config** – `{Object}` – The configuration object that was used to generate the request.
-     *   - **statusText** – `{string}` – HTTP status text of the response.
-     *
-     * @property {Array.<Object>} pendingRequests Array of config objects for currently pending
-     *   requests. This is primarily meant to be used for debugging purposes.
-     *
-     *
-     * @example
-<example module="httpExample">
-<file name="index.html">
-  <div ng-controller="FetchController">
-    <select ng-model="method">
-      <option>GET</option>
-      <option>JSONP</option>
-    </select>
-    <input type="text" ng-model="url" size="80"/>
-    <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
-    <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
-    <button id="samplejsonpbtn"
-      ng-click="updateModel('JSONP',
-                    'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
-      Sample JSONP
-    </button>
-    <button id="invalidjsonpbtn"
-      ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
-        Invalid JSONP
-      </button>
-    <pre>http status code: {{status}}</pre>
-    <pre>http response data: {{data}}</pre>
-  </div>
-</file>
-<file name="script.js">
-  angular.module('httpExample', [])
-    .controller('FetchController', ['$scope', '$http', '$templateCache',
-      function($scope, $http, $templateCache) {
-        $scope.method = 'GET';
-        $scope.url = 'http-hello.html';
-
-        $scope.fetch = function() {
-          $scope.code = null;
-          $scope.response = null;
-
-          $http({method: $scope.method, url: $scope.url, cache: $templateCache}).
-            success(function(data, status) {
-              $scope.status = status;
-              $scope.data = data;
-            }).
-            error(function(data, status) {
-              $scope.data = data || "Request failed";
-              $scope.status = status;
-          });
-        };
-
-        $scope.updateModel = function(method, url) {
-          $scope.method = method;
-          $scope.url = url;
-        };
-      }]);
-</file>
-<file name="http-hello.html">
-  Hello, $http!
-</file>
-<file name="protractor.js" type="protractor">
-  var status = element(by.binding('status'));
-  var data = element(by.binding('data'));
-  var fetchBtn = element(by.id('fetchbtn'));
-  var sampleGetBtn = element(by.id('samplegetbtn'));
-  var sampleJsonpBtn = element(by.id('samplejsonpbtn'));
-  var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));
-
-  it('should make an xhr GET request', function() {
-    sampleGetBtn.click();
-    fetchBtn.click();
-    expect(status.getText()).toMatch('200');
-    expect(data.getText()).toMatch(/Hello, \$http!/);
-  });
-
-// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185
-// it('should make a JSONP request to angularjs.org', function() {
-//   sampleJsonpBtn.click();
-//   fetchBtn.click();
-//   expect(status.getText()).toMatch('200');
-//   expect(data.getText()).toMatch(/Super Hero!/);
-// });
-
-  it('should make JSONP request to invalid URL and invoke the error handler',
-      function() {
-    invalidJsonpBtn.click();
-    fetchBtn.click();
-    expect(status.getText()).toMatch('0');
-    expect(data.getText()).toMatch('Request failed');
-  });
-</file>
-</example>
-     */
-    function $http(requestConfig) {
-
-      if (!angular.isObject(requestConfig)) {
-        throw minErr('$http')('badreq', 'Http request configuration must be an object.  Received: {0}', requestConfig);
-      }
-
-      var config = extend({
-        method: 'get',
-        transformRequest: defaults.transformRequest,
-        transformResponse: defaults.transformResponse
-      }, requestConfig);
-
-      config.headers = mergeHeaders(requestConfig);
-      config.method = uppercase(config.method);
-
-      var serverRequest = function(config) {
-        var headers = config.headers;
-        var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest);
-
-        // strip content-type if data is undefined
-        if (isUndefined(reqData)) {
-          forEach(headers, function(value, header) {
-            if (lowercase(header) === 'content-type') {
-                delete headers[header];
-            }
-          });
-        }
-
-        if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {
-          config.withCredentials = defaults.withCredentials;
-        }
-
-        // send request
-        return sendReq(config, reqData).then(transformResponse, transformResponse);
-      };
-
-      var chain = [serverRequest, undefined];
-      var promise = $q.when(config);
-
-      // apply interceptors
-      forEach(reversedInterceptors, function(interceptor) {
-        if (interceptor.request || interceptor.requestError) {
-          chain.unshift(interceptor.request, interceptor.requestError);
-        }
-        if (interceptor.response || interceptor.responseError) {
-          chain.push(interceptor.response, interceptor.responseError);
-        }
-      });
-
-      while (chain.length) {
-        var thenFn = chain.shift();
-        var rejectFn = chain.shift();
-
-        promise = promise.then(thenFn, rejectFn);
-      }
-
-      promise.success = function(fn) {
-        promise.then(function(response) {
-          fn(response.data, response.status, response.headers, config);
-        });
-        return promise;
-      };
-
-      promise.error = function(fn) {
-        promise.then(null, function(response) {
-          fn(response.data, response.status, response.headers, config);
-        });
-        return promise;
-      };
-
-      return promise;
-
-      function transformResponse(response) {
-        // make a copy since the response must be cacheable
-        var resp = extend({}, response);
-        if (!response.data) {
-          resp.data = response.data;
-        } else {
-          resp.data = transformData(response.data, response.headers, response.status, config.transformResponse);
-        }
-        return (isSuccess(response.status))
-          ? resp
-          : $q.reject(resp);
-      }
-
-      function executeHeaderFns(headers) {
-        var headerContent, processedHeaders = {};
-
-        forEach(headers, function(headerFn, header) {
-          if (isFunction(headerFn)) {
-            headerContent = headerFn();
-            if (headerContent != null) {
-              processedHeaders[header] = headerContent;
-            }
-          } else {
-            processedHeaders[header] = headerFn;
-          }
-        });
-
-        return processedHeaders;
-      }
-
-      function mergeHeaders(config) {
-        var defHeaders = defaults.headers,
-            reqHeaders = extend({}, config.headers),
-            defHeaderName, lowercaseDefHeaderName, reqHeaderName;
-
-        defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);
-
-        // using for-in instead of forEach to avoid unecessary iteration after header has been found
-        defaultHeadersIteration:
-        for (defHeaderName in defHeaders) {
-          lowercaseDefHeaderName = lowercase(defHeaderName);
-
-          for (reqHeaderName in reqHeaders) {
-            if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {
-              continue defaultHeadersIteration;
-            }
-          }
-
-          reqHeaders[defHeaderName] = defHeaders[defHeaderName];
-        }
-
-        // execute if header value is a function for merged headers
-        return executeHeaderFns(reqHeaders);
-      }
-    }
-
-    $http.pendingRequests = [];
-
-    /**
-     * @ngdoc method
-     * @name $http#get
-     *
-     * @description
-     * Shortcut method to perform `GET` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#delete
-     *
-     * @description
-     * Shortcut method to perform `DELETE` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#head
-     *
-     * @description
-     * Shortcut method to perform `HEAD` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#jsonp
-     *
-     * @description
-     * Shortcut method to perform `JSONP` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request.
-     *                     The name of the callback should be the string `JSON_CALLBACK`.
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-    createShortMethods('get', 'delete', 'head', 'jsonp');
-
-    /**
-     * @ngdoc method
-     * @name $http#post
-     *
-     * @description
-     * Shortcut method to perform `POST` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {*} data Request content
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#put
-     *
-     * @description
-     * Shortcut method to perform `PUT` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {*} data Request content
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-     /**
-      * @ngdoc method
-      * @name $http#patch
-      *
-      * @description
-      * Shortcut method to perform `PATCH` request.
-      *
-      * @param {string} url Relative or absolute URL specifying the destination of the request
-      * @param {*} data Request content
-      * @param {Object=} config Optional configuration object
-      * @returns {HttpPromise} Future object
-      */
-    createShortMethodsWithData('post', 'put', 'patch');
-
-        /**
-         * @ngdoc property
-         * @name $http#defaults
-         *
-         * @description
-         * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of
-         * default headers, withCredentials as well as request and response transformations.
-         *
-         * See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above.
-         */
-    $http.defaults = defaults;
-
-
-    return $http;
-
-
-    function createShortMethods(names) {
-      forEach(arguments, function(name) {
-        $http[name] = function(url, config) {
-          return $http(extend(config || {}, {
-            method: name,
-            url: url
-          }));
-        };
-      });
-    }
-
-
-    function createShortMethodsWithData(name) {
-      forEach(arguments, function(name) {
-        $http[name] = function(url, data, config) {
-          return $http(extend(config || {}, {
-            method: name,
-            url: url,
-            data: data
-          }));
-        };
-      });
-    }
-
-
-    /**
-     * Makes the request.
-     *
-     * !!! ACCESSES CLOSURE VARS:
-     * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests
-     */
-    function sendReq(config, reqData) {
-      var deferred = $q.defer(),
-          promise = deferred.promise,
-          cache,
-          cachedResp,
-          reqHeaders = config.headers,
-          url = buildUrl(config.url, config.params);
-
-      $http.pendingRequests.push(config);
-      promise.then(removePendingReq, removePendingReq);
-
-
-      if ((config.cache || defaults.cache) && config.cache !== false &&
-          (config.method === 'GET' || config.method === 'JSONP')) {
-        cache = isObject(config.cache) ? config.cache
-              : isObject(defaults.cache) ? defaults.cache
-              : defaultCache;
-      }
-
-      if (cache) {
-        cachedResp = cache.get(url);
-        if (isDefined(cachedResp)) {
-          if (isPromiseLike(cachedResp)) {
-            // cached request has already been sent, but there is no response yet
-            cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);
-          } else {
-            // serving from cache
-            if (isArray(cachedResp)) {
-              resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);
-            } else {
-              resolvePromise(cachedResp, 200, {}, 'OK');
-            }
-          }
-        } else {
-          // put the promise for the non-transformed response into cache as a placeholder
-          cache.put(url, promise);
-        }
-      }
-
-
-      // if we won't have the response in cache, set the xsrf headers and
-      // send the request to the backend
-      if (isUndefined(cachedResp)) {
-        var xsrfValue = urlIsSameOrigin(config.url)
-            ? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]
-            : undefined;
-        if (xsrfValue) {
-          reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
-        }
-
-        $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
-            config.withCredentials, config.responseType);
-      }
-
-      return promise;
-
-
-      /**
-       * Callback registered to $httpBackend():
-       *  - caches the response if desired
-       *  - resolves the raw $http promise
-       *  - calls $apply
-       */
-      function done(status, response, headersString, statusText) {
-        if (cache) {
-          if (isSuccess(status)) {
-            cache.put(url, [status, response, parseHeaders(headersString), statusText]);
-          } else {
-            // remove promise from the cache
-            cache.remove(url);
-          }
-        }
-
-        function resolveHttpPromise() {
-          resolvePromise(response, status, headersString, statusText);
-        }
-
-        if (useApplyAsync) {
-          $rootScope.$applyAsync(resolveHttpPromise);
-        } else {
-          resolveHttpPromise();
-          if (!$rootScope.$$phase) $rootScope.$apply();
-        }
-      }
-
-
-      /**
-       * Resolves the raw $http promise.
-       */
-      function resolvePromise(response, status, headers, statusText) {
-        // normalize internal statuses to 0
-        status = Math.max(status, 0);
-
-        (isSuccess(status) ? deferred.resolve : deferred.reject)({
-          data: response,
-          status: status,
-          headers: headersGetter(headers),
-          config: config,
-          statusText: statusText
-        });
-      }
-
-      function resolvePromiseWithResult(result) {
-        resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText);
-      }
-
-      function removePendingReq() {
-        var idx = $http.pendingRequests.indexOf(config);
-        if (idx !== -1) $http.pendingRequests.splice(idx, 1);
-      }
-    }
-
-
-    function buildUrl(url, params) {
-      if (!params) return url;
-      var parts = [];
-      forEachSorted(params, function(value, key) {
-        if (value === null || isUndefined(value)) return;
-        if (!isArray(value)) value = [value];
-
-        forEach(value, function(v) {
-          if (isObject(v)) {
-            if (isDate(v)) {
-              v = v.toISOString();
-            } else {
-              v = toJson(v);
-            }
-          }
-          parts.push(encodeUriQuery(key) + '=' +
-                     encodeUriQuery(v));
-        });
-      });
-      if (parts.length > 0) {
-        url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');
-      }
-      return url;
-    }
-  }];
-}
-
-function createXhr() {
-    return new window.XMLHttpRequest();
-}
-
-/**
- * @ngdoc service
- * @name $httpBackend
- * @requires $window
- * @requires $document
- *
- * @description
- * HTTP backend used by the {@link ng.$http service} that delegates to
- * XMLHttpRequest object or JSONP and deals with browser incompatibilities.
- *
- * You should never need to use this service directly, instead use the higher-level abstractions:
- * {@link ng.$http $http} or {@link ngResource.$resource $resource}.
- *
- * During testing this implementation is swapped with {@link ngMock.$httpBackend mock
- * $httpBackend} which can be trained with responses.
- */
-function $HttpBackendProvider() {
-  this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
-    return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
-  }];
-}
-
-function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
-  // TODO(vojta): fix the signature
-  return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
-    $browser.$$incOutstandingRequestCount();
-    url = url || $browser.url();
-
-    if (lowercase(method) == 'jsonp') {
-      var callbackId = '_' + (callbacks.counter++).toString(36);
-      callbacks[callbackId] = function(data) {
-        callbacks[callbackId].data = data;
-        callbacks[callbackId].called = true;
-      };
-
-      var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),
-          callbackId, function(status, text) {
-        completeRequest(callback, status, callbacks[callbackId].data, "", text);
-        callbacks[callbackId] = noop;
-      });
-    } else {
-
-      var xhr = createXhr();
-
-      xhr.open(method, url, true);
-      forEach(headers, function(value, key) {
-        if (isDefined(value)) {
-            xhr.setRequestHeader(key, value);
-        }
-      });
-
-      xhr.onload = function requestLoaded() {
-        var statusText = xhr.statusText || '';
-
-        // responseText is the old-school way of retrieving response (supported by IE8 & 9)
-        // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
-        var response = ('response' in xhr) ? xhr.response : xhr.responseText;
-
-        // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
-        var status = xhr.status === 1223 ? 204 : xhr.status;
-
-        // fix status code when it is 0 (0 status is undocumented).
-        // Occurs when accessing file resources or on Android 4.1 stock browser
-        // while retrieving files from application cache.
-        if (status === 0) {
-          status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;
-        }
-
-        completeRequest(callback,
-            status,
-            response,
-            xhr.getAllResponseHeaders(),
-            statusText);
-      };
-
-      var requestError = function() {
-        // The response is always empty
-        // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
-        completeRequest(callback, -1, null, null, '');
-      };
-
-      xhr.onerror = requestError;
-      xhr.onabort = requestError;
-
-      if (withCredentials) {
-        xhr.withCredentials = true;
-      }
-
-      if (responseType) {
-        try {
-          xhr.responseType = responseType;
-        } catch (e) {
-          // WebKit added support for the json responseType value on 09/03/2013
-          // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
-          // known to throw when setting the value "json" as the response type. Other older
-          // browsers implementing the responseType
-          //
-          // The json response type can be ignored if not supported, because JSON payloads are
-          // parsed on the client-side regardless.
-          if (responseType !== 'json') {
-            throw e;
-          }
-        }
-      }
-
-      xhr.send(post || null);
-    }
-
-    if (timeout > 0) {
-      var timeoutId = $browserDefer(timeoutRequest, timeout);
-    } else if (isPromiseLike(timeout)) {
-      timeout.then(timeoutRequest);
-    }
-
-
-    function timeoutRequest() {
-      jsonpDone && jsonpDone();
-      xhr && xhr.abort();
-    }
-
-    function completeRequest(callback, status, response, headersString, statusText) {
-      // cancel timeout and subsequent timeout promise resolution
-      if (timeoutId !== undefined) {
-        $browserDefer.cancel(timeoutId);
-      }
-      jsonpDone = xhr = null;
-
-      callback(status, response, headersString, statusText);
-      $browser.$$completeOutstandingRequest(noop);
-    }
-  };
-
-  function jsonpReq(url, callbackId, done) {
-    // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.:
-    // - fetches local scripts via XHR and evals them
-    // - adds and immediately removes script elements from the document
-    var script = rawDocument.createElement('script'), callback = null;
-    script.type = "text/javascript";
-    script.src = url;
-    script.async = true;
-
-    callback = function(event) {
-      removeEventListenerFn(script, "load", callback);
-      removeEventListenerFn(script, "error", callback);
-      rawDocument.body.removeChild(script);
-      script = null;
-      var status = -1;
-      var text = "unknown";
-
-      if (event) {
-        if (event.type === "load" && !callbacks[callbackId].called) {
-          event = { type: "error" };
-        }
-        text = event.type;
-        status = event.type === "error" ? 404 : 200;
-      }
-
-      if (done) {
-        done(status, text);
-      }
-    };
-
-    addEventListenerFn(script, "load", callback);
-    addEventListenerFn(script, "error", callback);
-    rawDocument.body.appendChild(script);
-    return callback;
-  }
-}
-
-var $interpolateMinErr = minErr('$interpolate');
-
-/**
- * @ngdoc provider
- * @name $interpolateProvider
- *
- * @description
- *
- * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
- *
- * @example
-<example module="customInterpolationApp">
-<file name="index.html">
-<script>
-  var customInterpolationApp = angular.module('customInterpolationApp', []);
-
-  customInterpolationApp.config(function($interpolateProvider) {
-    $interpolateProvider.startSymbol('//');
-    $interpolateProvider.endSymbol('//');
-  });
-
-
-  customInterpolationApp.controller('DemoController', function() {
-      this.label = "This binding is brought you by // interpolation symbols.";
-  });
-</script>
-<div ng-app="App" ng-controller="DemoController as demo">
-    //demo.label//
-</div>
-</file>
-<file name="protractor.js" type="protractor">
-  it('should interpolate binding with custom symbols', function() {
-    expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');
-  });
-</file>
-</example>
- */
-function $InterpolateProvider() {
-  var startSymbol = '{{';
-  var endSymbol = '}}';
-
-  /**
-   * @ngdoc method
-   * @name $interpolateProvider#startSymbol
-   * @description
-   * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.
-   *
-   * @param {string=} value new value to set the starting symbol to.
-   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
-   */
-  this.startSymbol = function(value) {
-    if (value) {
-      startSymbol = value;
-      return this;
-    } else {
-      return startSymbol;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $interpolateProvider#endSymbol
-   * @description
-   * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
-   *
-   * @param {string=} value new value to set the ending symbol to.
-   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
-   */
-  this.endSymbol = function(value) {
-    if (value) {
-      endSymbol = value;
-      return this;
-    } else {
-      return endSymbol;
-    }
-  };
-
-
-  this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {
-    var startSymbolLength = startSymbol.length,
-        endSymbolLength = endSymbol.length,
-        escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'),
-        escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g');
-
-    function escape(ch) {
-      return '\\\\\\' + ch;
-    }
-
-    /**
-     * @ngdoc service
-     * @name $interpolate
-     * @kind function
-     *
-     * @requires $parse
-     * @requires $sce
-     *
-     * @description
-     *
-     * Compiles a string with markup into an interpolation function. This service is used by the
-     * HTML {@link ng.$compile $compile} service for data binding. See
-     * {@link ng.$interpolateProvider $interpolateProvider} for configuring the
-     * interpolation markup.
-     *
-     *
-     * ```js
-     *   var $interpolate = ...; // injected
-     *   var exp = $interpolate('Hello {{name | uppercase}}!');
-     *   expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');
-     * ```
-     *
-     * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is
-     * `true`, the interpolation function will return `undefined` unless all embedded expressions
-     * evaluate to a value other than `undefined`.
-     *
-     * ```js
-     *   var $interpolate = ...; // injected
-     *   var context = {greeting: 'Hello', name: undefined };
-     *
-     *   // default "forgiving" mode
-     *   var exp = $interpolate('{{greeting}} {{name}}!');
-     *   expect(exp(context)).toEqual('Hello !');
-     *
-     *   // "allOrNothing" mode
-     *   exp = $interpolate('{{greeting}} {{name}}!', false, null, true);
-     *   expect(exp(context)).toBeUndefined();
-     *   context.name = 'Angular';
-     *   expect(exp(context)).toEqual('Hello Angular!');
-     * ```
-     *
-     * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior.
-     *
-     * ####Escaped Interpolation
-     * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers
-     * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash).
-     * It will be rendered as a regular start/end marker, and will not be interpreted as an expression
-     * or binding.
-     *
-     * This enables web-servers to prevent script injection attacks and defacing attacks, to some
-     * degree, while also enabling code examples to work without relying on the
-     * {@link ng.directive:ngNonBindable ngNonBindable} directive.
-     *
-     * **For security purposes, it is strongly encouraged that web servers escape user-supplied data,
-     * replacing angle brackets (&lt;, &gt;) with &amp;lt; and &amp;gt; respectively, and replacing all
-     * interpolation start/end markers with their escaped counterparts.**
-     *
-     * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered
-     * output when the $interpolate service processes the text. So, for HTML elements interpolated
-     * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter
-     * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such,
-     * this is typically useful only when user-data is used in rendering a template from the server, or
-     * when otherwise untrusted data is used by a directive.
-     *
-     * <example>
-     *  <file name="index.html">
-     *    <div ng-init="username='A user'">
-     *      <p ng-init="apptitle='Escaping demo'">{{apptitle}}: \{\{ username = "defaced value"; \}\}
-     *        </p>
-     *      <p><strong>{{username}}</strong> attempts to inject code which will deface the
-     *        application, but fails to accomplish their task, because the server has correctly
-     *        escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash)
-     *        characters.</p>
-     *      <p>Instead, the result of the attempted script injection is visible, and can be removed
-     *        from the database by an administrator.</p>
-     *    </div>
-     *  </file>
-     * </example>
-     *
-     * @param {string} text The text with markup to interpolate.
-     * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have
-     *    embedded expression in order to return an interpolation function. Strings with no
-     *    embedded expression will return null for the interpolation function.
-     * @param {string=} trustedContext when provided, the returned function passes the interpolated
-     *    result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,
-     *    trustedContext)} before returning it.  Refer to the {@link ng.$sce $sce} service that
-     *    provides Strict Contextual Escaping for details.
-     * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined
-     *    unless all embedded expressions evaluate to a value other than `undefined`.
-     * @returns {function(context)} an interpolation function which is used to compute the
-     *    interpolated string. The function has these parameters:
-     *
-     * - `context`: evaluation context for all expressions embedded in the interpolated text
-     */
-    function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
-      allOrNothing = !!allOrNothing;
-      var startIndex,
-          endIndex,
-          index = 0,
-          expressions = [],
-          parseFns = [],
-          textLength = text.length,
-          exp,
-          concat = [],
-          expressionPositions = [];
-
-      while (index < textLength) {
-        if (((startIndex = text.indexOf(startSymbol, index)) != -1) &&
-             ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1)) {
-          if (index !== startIndex) {
-            concat.push(unescapeText(text.substring(index, startIndex)));
-          }
-          exp = text.substring(startIndex + startSymbolLength, endIndex);
-          expressions.push(exp);
-          parseFns.push($parse(exp, parseStringifyInterceptor));
-          index = endIndex + endSymbolLength;
-          expressionPositions.push(concat.length);
-          concat.push('');
-        } else {
-          // we did not find an interpolation, so we have to add the remainder to the separators array
-          if (index !== textLength) {
-            concat.push(unescapeText(text.substring(index)));
-          }
-          break;
-        }
-      }
-
-      // Concatenating expressions makes it hard to reason about whether some combination of
-      // concatenated values are unsafe to use and could easily lead to XSS.  By requiring that a
-      // single expression be used for iframe[src], object[src], etc., we ensure that the value
-      // that's used is assigned or constructed by some JS code somewhere that is more testable or
-      // make it obvious that you bound the value to some user controlled value.  This helps reduce
-      // the load when auditing for XSS issues.
-      if (trustedContext && concat.length > 1) {
-          throw $interpolateMinErr('noconcat',
-              "Error while interpolating: {0}\nStrict Contextual Escaping disallows " +
-              "interpolations that concatenate multiple expressions when a trusted value is " +
-              "required.  See http://docs.angularjs.org/api/ng.$sce", text);
-      }
-
-      if (!mustHaveExpression || expressions.length) {
-        var compute = function(values) {
-          for (var i = 0, ii = expressions.length; i < ii; i++) {
-            if (allOrNothing && isUndefined(values[i])) return;
-            concat[expressionPositions[i]] = values[i];
-          }
-          return concat.join('');
-        };
-
-        var getValue = function(value) {
-          return trustedContext ?
-            $sce.getTrusted(trustedContext, value) :
-            $sce.valueOf(value);
-        };
-
-        var stringify = function(value) {
-          if (value == null) { // null || undefined
-            return '';
-          }
-          switch (typeof value) {
-            case 'string':
-              break;
-            case 'number':
-              value = '' + value;
-              break;
-            default:
-              value = toJson(value);
-          }
-
-          return value;
-        };
-
-        return extend(function interpolationFn(context) {
-            var i = 0;
-            var ii = expressions.length;
-            var values = new Array(ii);
-
-            try {
-              for (; i < ii; i++) {
-                values[i] = parseFns[i](context);
-              }
-
-              return compute(values);
-            } catch (err) {
-              var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text,
-                  err.toString());
-              $exceptionHandler(newErr);
-            }
-
-          }, {
-          // all of these properties are undocumented for now
-          exp: text, //just for compatibility with regular watchers created via $watch
-          expressions: expressions,
-          $$watchDelegate: function(scope, listener, objectEquality) {
-            var lastValue;
-            return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) {
-              var currValue = compute(values);
-              if (isFunction(listener)) {
-                listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);
-              }
-              lastValue = currValue;
-            }, objectEquality);
-          }
-        });
-      }
-
-      function unescapeText(text) {
-        return text.replace(escapedStartRegexp, startSymbol).
-          replace(escapedEndRegexp, endSymbol);
-      }
-
-      function parseStringifyInterceptor(value) {
-        try {
-          value = getValue(value);
-          return allOrNothing && !isDefined(value) ? value : stringify(value);
-        } catch (err) {
-          var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text,
-            err.toString());
-          $exceptionHandler(newErr);
-        }
-      }
-    }
-
-
-    /**
-     * @ngdoc method
-     * @name $interpolate#startSymbol
-     * @description
-     * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.
-     *
-     * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change
-     * the symbol.
-     *
-     * @returns {string} start symbol.
-     */
-    $interpolate.startSymbol = function() {
-      return startSymbol;
-    };
-
-
-    /**
-     * @ngdoc method
-     * @name $interpolate#endSymbol
-     * @description
-     * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
-     *
-     * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change
-     * the symbol.
-     *
-     * @returns {string} end symbol.
-     */
-    $interpolate.endSymbol = function() {
-      return endSymbol;
-    };
-
-    return $interpolate;
-  }];
-}
-
-function $IntervalProvider() {
-  this.$get = ['$rootScope', '$window', '$q', '$$q',
-       function($rootScope,   $window,   $q,   $$q) {
-    var intervals = {};
-
-
-     /**
-      * @ngdoc service
-      * @name $interval
-      *
-      * @description
-      * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay`
-      * milliseconds.
-      *
-      * The return value of registering an interval function is a promise. This promise will be
-      * notified upon each tick of the interval, and will be resolved after `count` iterations, or
-      * run indefinitely if `count` is not defined. The value of the notification will be the
-      * number of iterations that have run.
-      * To cancel an interval, call `$interval.cancel(promise)`.
-      *
-      * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
-      * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
-      * time.
-      *
-      * <div class="alert alert-warning">
-      * **Note**: Intervals created by this service must be explicitly destroyed when you are finished
-      * with them.  In particular they are not automatically destroyed when a controller's scope or a
-      * directive's element are destroyed.
-      * You should take this into consideration and make sure to always cancel the interval at the
-      * appropriate moment.  See the example below for more details on how and when to do this.
-      * </div>
-      *
-      * @param {function()} fn A function that should be called repeatedly.
-      * @param {number} delay Number of milliseconds between each function call.
-      * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
-      *   indefinitely.
-      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
-      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
-      * @returns {promise} A promise which will be notified on each iteration.
-      *
-      * @example
-      * <example module="intervalExample">
-      * <file name="index.html">
-      *   <script>
-      *     angular.module('intervalExample', [])
-      *       .controller('ExampleController', ['$scope', '$interval',
-      *         function($scope, $interval) {
-      *           $scope.format = 'M/d/yy h:mm:ss a';
-      *           $scope.blood_1 = 100;
-      *           $scope.blood_2 = 120;
-      *
-      *           var stop;
-      *           $scope.fight = function() {
-      *             // Don't start a new fight if we are already fighting
-      *             if ( angular.isDefined(stop) ) return;
-      *
-      *             stop = $interval(function() {
-      *               if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {
-      *                 $scope.blood_1 = $scope.blood_1 - 3;
-      *                 $scope.blood_2 = $scope.blood_2 - 4;
-      *               } else {
-      *                 $scope.stopFight();
-      *               }
-      *             }, 100);
-      *           };
-      *
-      *           $scope.stopFight = function() {
-      *             if (angular.isDefined(stop)) {
-      *               $interval.cancel(stop);
-      *               stop = undefined;
-      *             }
-      *           };
-      *
-      *           $scope.resetFight = function() {
-      *             $scope.blood_1 = 100;
-      *             $scope.blood_2 = 120;
-      *           };
-      *
-      *           $scope.$on('$destroy', function() {
-      *             // Make sure that the interval is destroyed too
-      *             $scope.stopFight();
-      *           });
-      *         }])
-      *       // Register the 'myCurrentTime' directive factory method.
-      *       // We inject $interval and dateFilter service since the factory method is DI.
-      *       .directive('myCurrentTime', ['$interval', 'dateFilter',
-      *         function($interval, dateFilter) {
-      *           // return the directive link function. (compile function not needed)
-      *           return function(scope, element, attrs) {
-      *             var format,  // date format
-      *                 stopTime; // so that we can cancel the time updates
-      *
-      *             // used to update the UI
-      *             function updateTime() {
-      *               element.text(dateFilter(new Date(), format));
-      *             }
-      *
-      *             // watch the expression, and update the UI on change.
-      *             scope.$watch(attrs.myCurrentTime, function(value) {
-      *               format = value;
-      *               updateTime();
-      *             });
-      *
-      *             stopTime = $interval(updateTime, 1000);
-      *
-      *             // listen on DOM destroy (removal) event, and cancel the next UI update
-      *             // to prevent updating time after the DOM element was removed.
-      *             element.on('$destroy', function() {
-      *               $interval.cancel(stopTime);
-      *             });
-      *           }
-      *         }]);
-      *   </script>
-      *
-      *   <div>
-      *     <div ng-controller="ExampleController">
-      *       Date format: <input ng-model="format"> <hr/>
-      *       Current time is: <span my-current-time="format"></span>
-      *       <hr/>
-      *       Blood 1 : <font color='red'>{{blood_1}}</font>
-      *       Blood 2 : <font color='red'>{{blood_2}}</font>
-      *       <button type="button" data-ng-click="fight()">Fight</button>
-      *       <button type="button" data-ng-click="stopFight()">StopFight</button>
-      *       <button type="button" data-ng-click="resetFight()">resetFight</button>
-      *     </div>
-      *   </div>
-      *
-      * </file>
-      * </example>
-      */
-    function interval(fn, delay, count, invokeApply) {
-      var setInterval = $window.setInterval,
-          clearInterval = $window.clearInterval,
-          iteration = 0,
-          skipApply = (isDefined(invokeApply) && !invokeApply),
-          deferred = (skipApply ? $$q : $q).defer(),
-          promise = deferred.promise;
-
-      count = isDefined(count) ? count : 0;
-
-      promise.then(null, null, fn);
-
-      promise.$$intervalId = setInterval(function tick() {
-        deferred.notify(iteration++);
-
-        if (count > 0 && iteration >= count) {
-          deferred.resolve(iteration);
-          clearInterval(promise.$$intervalId);
-          delete intervals[promise.$$intervalId];
-        }
-
-        if (!skipApply) $rootScope.$apply();
-
-      }, delay);
-
-      intervals[promise.$$intervalId] = deferred;
-
-      return promise;
-    }
-
-
-     /**
-      * @ngdoc method
-      * @name $interval#cancel
-      *
-      * @description
-      * Cancels a task associated with the `promise`.
-      *
-      * @param {promise} promise returned by the `$interval` function.
-      * @returns {boolean} Returns `true` if the task was successfully canceled.
-      */
-    interval.cancel = function(promise) {
-      if (promise && promise.$$intervalId in intervals) {
-        intervals[promise.$$intervalId].reject('canceled');
-        $window.clearInterval(promise.$$intervalId);
-        delete intervals[promise.$$intervalId];
-        return true;
-      }
-      return false;
-    };
-
-    return interval;
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $locale
- *
- * @description
- * $locale service provides localization rules for various Angular components. As of right now the
- * only public api is:
- *
- * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)
- */
-function $LocaleProvider() {
-  this.$get = function() {
-    return {
-      id: 'en-us',
-
-      NUMBER_FORMATS: {
-        DECIMAL_SEP: '.',
-        GROUP_SEP: ',',
-        PATTERNS: [
-          { // Decimal Pattern
-            minInt: 1,
-            minFrac: 0,
-            maxFrac: 3,
-            posPre: '',
-            posSuf: '',
-            negPre: '-',
-            negSuf: '',
-            gSize: 3,
-            lgSize: 3
-          },{ //Currency Pattern
-            minInt: 1,
-            minFrac: 2,
-            maxFrac: 2,
-            posPre: '\u00A4',
-            posSuf: '',
-            negPre: '(\u00A4',
-            negSuf: ')',
-            gSize: 3,
-            lgSize: 3
-          }
-        ],
-        CURRENCY_SYM: '$'
-      },
-
-      DATETIME_FORMATS: {
-        MONTH:
-            'January,February,March,April,May,June,July,August,September,October,November,December'
-            .split(','),
-        SHORTMONTH:  'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),
-        DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),
-        SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),
-        AMPMS: ['AM','PM'],
-        medium: 'MMM d, y h:mm:ss a',
-        'short': 'M/d/yy h:mm a',
-        fullDate: 'EEEE, MMMM d, y',
-        longDate: 'MMMM d, y',
-        mediumDate: 'MMM d, y',
-        shortDate: 'M/d/yy',
-        mediumTime: 'h:mm:ss a',
-        shortTime: 'h:mm a'
-      },
-
-      pluralCat: function(num) {
-        if (num === 1) {
-          return 'one';
-        }
-        return 'other';
-      }
-    };
-  };
-}
-
-var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
-    DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
-var $locationMinErr = minErr('$location');
-
-
-/**
- * Encode path using encodeUriSegment, ignoring forward slashes
- *
- * @param {string} path Path to encode
- * @returns {string}
- */
-function encodePath(path) {
-  var segments = path.split('/'),
-      i = segments.length;
-
-  while (i--) {
-    segments[i] = encodeUriSegment(segments[i]);
-  }
-
-  return segments.join('/');
-}
-
-function parseAbsoluteUrl(absoluteUrl, locationObj) {
-  var parsedUrl = urlResolve(absoluteUrl);
-
-  locationObj.$$protocol = parsedUrl.protocol;
-  locationObj.$$host = parsedUrl.hostname;
-  locationObj.$$port = int(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;
-}
-
-
-function parseAppUrl(relativeUrl, locationObj) {
-  var prefixed = (relativeUrl.charAt(0) !== '/');
-  if (prefixed) {
-    relativeUrl = '/' + relativeUrl;
-  }
-  var match = urlResolve(relativeUrl);
-  locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?
-      match.pathname.substring(1) : match.pathname);
-  locationObj.$$search = parseKeyValue(match.search);
-  locationObj.$$hash = decodeURIComponent(match.hash);
-
-  // make sure path starts with '/';
-  if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {
-    locationObj.$$path = '/' + locationObj.$$path;
-  }
-}
-
-
-/**
- *
- * @param {string} begin
- * @param {string} whole
- * @returns {string} returns text from whole after begin or undefined if it does not begin with
- *                   expected string.
- */
-function beginsWith(begin, whole) {
-  if (whole.indexOf(begin) === 0) {
-    return whole.substr(begin.length);
-  }
-}
-
-
-function stripHash(url) {
-  var index = url.indexOf('#');
-  return index == -1 ? url : url.substr(0, index);
-}
-
-function trimEmptyHash(url) {
-  return url.replace(/(#.+)|#$/, '$1');
-}
-
-
-function stripFile(url) {
-  return url.substr(0, stripHash(url).lastIndexOf('/') + 1);
-}
-
-/* return the server only (scheme://host:port) */
-function serverBase(url) {
-  return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));
-}
-
-
-/**
- * LocationHtml5Url represents an url
- * This object is exposed as $location service when HTML5 mode is enabled and supported
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} basePrefix url path prefix
- */
-function LocationHtml5Url(appBase, basePrefix) {
-  this.$$html5 = true;
-  basePrefix = basePrefix || '';
-  var appBaseNoFile = stripFile(appBase);
-  parseAbsoluteUrl(appBase, this);
-
-
-  /**
-   * Parse given html5 (regular) url string into properties
-   * @param {string} url HTML5 url
-   * @private
-   */
-  this.$$parse = function(url) {
-    var pathUrl = beginsWith(appBaseNoFile, url);
-    if (!isString(pathUrl)) {
-      throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
-          appBaseNoFile);
-    }
-
-    parseAppUrl(pathUrl, this);
-
-    if (!this.$$path) {
-      this.$$path = '/';
-    }
-
-    this.$$compose();
-  };
-
-  /**
-   * Compose url and update `absUrl` property
-   * @private
-   */
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'
-  };
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (relHref && relHref[0] === '#') {
-      // special case for links to hash fragments:
-      // keep the old url and only replace the hash fragment
-      this.hash(relHref.slice(1));
-      return true;
-    }
-    var appUrl, prevAppUrl;
-    var rewrittenUrl;
-
-    if ((appUrl = beginsWith(appBase, url)) !== undefined) {
-      prevAppUrl = appUrl;
-      if ((appUrl = beginsWith(basePrefix, appUrl)) !== undefined) {
-        rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);
-      } else {
-        rewrittenUrl = appBase + prevAppUrl;
-      }
-    } else if ((appUrl = beginsWith(appBaseNoFile, url)) !== undefined) {
-      rewrittenUrl = appBaseNoFile + appUrl;
-    } else if (appBaseNoFile == url + '/') {
-      rewrittenUrl = appBaseNoFile;
-    }
-    if (rewrittenUrl) {
-      this.$$parse(rewrittenUrl);
-    }
-    return !!rewrittenUrl;
-  };
-}
-
-
-/**
- * LocationHashbangUrl represents url
- * This object is exposed as $location service when developer doesn't opt into html5 mode.
- * It also serves as the base class for html5 mode fallback on legacy browsers.
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} hashPrefix hashbang prefix
- */
-function LocationHashbangUrl(appBase, hashPrefix) {
-  var appBaseNoFile = stripFile(appBase);
-
-  parseAbsoluteUrl(appBase, this);
-
-
-  /**
-   * Parse given hashbang url into properties
-   * @param {string} url Hashbang url
-   * @private
-   */
-  this.$$parse = function(url) {
-    var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);
-    var withoutHashUrl;
-
-    if (withoutBaseUrl.charAt(0) === '#') {
-
-      // The rest of the url starts with a hash so we have
-      // got either a hashbang path or a plain hash fragment
-      withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl);
-      if (isUndefined(withoutHashUrl)) {
-        // There was no hashbang prefix so we just have a hash fragment
-        withoutHashUrl = withoutBaseUrl;
-      }
-
-    } else {
-      // There was no hashbang path nor hash fragment:
-      // If we are in HTML5 mode we use what is left as the path;
-      // Otherwise we ignore what is left
-      withoutHashUrl = this.$$html5 ? withoutBaseUrl : '';
-    }
-
-    parseAppUrl(withoutHashUrl, this);
-
-    this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);
-
-    this.$$compose();
-
-    /*
-     * In Windows, on an anchor node on documents loaded from
-     * the filesystem, the browser will return a pathname
-     * prefixed with the drive name ('/C:/path') when a
-     * pathname without a drive is set:
-     *  * a.setAttribute('href', '/foo')
-     *   * a.pathname === '/C:/foo' //true
-     *
-     * Inside of Angular, we're always using pathnames that
-     * do not include drive names for routing.
-     */
-    function removeWindowsDriveName(path, url, base) {
-      /*
-      Matches paths for file protocol on windows,
-      such as /C:/foo/bar, and captures only /foo/bar.
-      */
-      var windowsFilePathExp = /^\/[A-Z]:(\/.*)/;
-
-      var firstPathSegmentMatch;
-
-      //Get the relative path from the input URL.
-      if (url.indexOf(base) === 0) {
-        url = url.replace(base, '');
-      }
-
-      // The input URL intentionally contains a first path segment that ends with a colon.
-      if (windowsFilePathExp.exec(url)) {
-        return path;
-      }
-
-      firstPathSegmentMatch = windowsFilePathExp.exec(path);
-      return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;
-    }
-  };
-
-  /**
-   * Compose hashbang url and update `absUrl` property
-   * @private
-   */
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');
-  };
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (stripHash(appBase) == stripHash(url)) {
-      this.$$parse(url);
-      return true;
-    }
-    return false;
-  };
-}
-
-
-/**
- * LocationHashbangUrl represents url
- * This object is exposed as $location service when html5 history api is enabled but the browser
- * does not support it.
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} hashPrefix hashbang prefix
- */
-function LocationHashbangInHtml5Url(appBase, hashPrefix) {
-  this.$$html5 = true;
-  LocationHashbangUrl.apply(this, arguments);
-
-  var appBaseNoFile = stripFile(appBase);
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (relHref && relHref[0] === '#') {
-      // special case for links to hash fragments:
-      // keep the old url and only replace the hash fragment
-      this.hash(relHref.slice(1));
-      return true;
-    }
-
-    var rewrittenUrl;
-    var appUrl;
-
-    if (appBase == stripHash(url)) {
-      rewrittenUrl = url;
-    } else if ((appUrl = beginsWith(appBaseNoFile, url))) {
-      rewrittenUrl = appBase + hashPrefix + appUrl;
-    } else if (appBaseNoFile === url + '/') {
-      rewrittenUrl = appBaseNoFile;
-    }
-    if (rewrittenUrl) {
-      this.$$parse(rewrittenUrl);
-    }
-    return !!rewrittenUrl;
-  };
-
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    // include hashPrefix in $$absUrl when $$url is empty so IE8 & 9 do not reload page because of removal of '#'
-    this.$$absUrl = appBase + hashPrefix + this.$$url;
-  };
-
-}
-
-
-var locationPrototype = {
-
-  /**
-   * Are we in html5 mode?
-   * @private
-   */
-  $$html5: false,
-
-  /**
-   * Has any change been replacing?
-   * @private
-   */
-  $$replace: false,
-
-  /**
-   * @ngdoc method
-   * @name $location#absUrl
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return full url representation with all segments encoded according to rules specified in
-   * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var absUrl = $location.absUrl();
-   * // => "http://example.com/#/some/path?foo=bar&baz=xoxo"
-   * ```
-   *
-   * @return {string} full url
-   */
-  absUrl: locationGetter('$$absUrl'),
-
-  /**
-   * @ngdoc method
-   * @name $location#url
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return url (e.g. `/path?a=b#hash`) when called without any parameter.
-   *
-   * Change path, search and hash, when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var url = $location.url();
-   * // => "/some/path?foo=bar&baz=xoxo"
-   * ```
-   *
-   * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
-   * @return {string} url
-   */
-  url: function(url) {
-    if (isUndefined(url))
-      return this.$$url;
-
-    var match = PATH_MATCH.exec(url);
-    if (match[1] || url === '') this.path(decodeURIComponent(match[1]));
-    if (match[2] || match[1] || url === '') this.search(match[3] || '');
-    this.hash(match[5] || '');
-
-    return this;
-  },
-
-  /**
-   * @ngdoc method
-   * @name $location#protocol
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return protocol of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var protocol = $location.protocol();
-   * // => "http"
-   * ```
-   *
-   * @return {string} protocol of current url
-   */
-  protocol: locationGetter('$$protocol'),
-
-  /**
-   * @ngdoc method
-   * @name $location#host
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return host of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var host = $location.host();
-   * // => "example.com"
-   * ```
-   *
-   * @return {string} host of current url.
-   */
-  host: locationGetter('$$host'),
-
-  /**
-   * @ngdoc method
-   * @name $location#port
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return port of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var port = $location.port();
-   * // => 80
-   * ```
-   *
-   * @return {Number} port
-   */
-  port: locationGetter('$$port'),
-
-  /**
-   * @ngdoc method
-   * @name $location#path
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return path of current url when called without any parameter.
-   *
-   * Change path when called with parameter and return `$location`.
-   *
-   * Note: Path should always begin with forward slash (/), this method will add the forward slash
-   * if it is missing.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var path = $location.path();
-   * // => "/some/path"
-   * ```
-   *
-   * @param {(string|number)=} path New path
-   * @return {string} path
-   */
-  path: locationGetterSetter('$$path', function(path) {
-    path = path !== null ? path.toString() : '';
-    return path.charAt(0) == '/' ? path : '/' + path;
-  }),
-
-  /**
-   * @ngdoc method
-   * @name $location#search
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return search part (as object) of current url when called without any parameter.
-   *
-   * Change search part when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var searchObject = $location.search();
-   * // => {foo: 'bar', baz: 'xoxo'}
-   *
-   * // set foo to 'yipee'
-   * $location.search('foo', 'yipee');
-   * // $location.search() => {foo: 'yipee', baz: 'xoxo'}
-   * ```
-   *
-   * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or
-   * hash object.
-   *
-   * When called with a single argument the method acts as a setter, setting the `search` component
-   * of `$location` to the specified value.
-   *
-   * If the argument is a hash object containing an array of values, these values will be encoded
-   * as duplicate search parameters in the url.
-   *
-   * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`
-   * will override only a single search property.
-   *
-   * If `paramValue` is an array, it will override the property of the `search` component of
-   * `$location` specified via the first argument.
-   *
-   * If `paramValue` is `null`, the property specified via the first argument will be deleted.
-   *
-   * If `paramValue` is `true`, the property specified via the first argument will be added with no
-   * value nor trailing equal sign.
-   *
-   * @return {Object} If called with no arguments returns the parsed `search` object. If called with
-   * one or more arguments returns `$location` object itself.
-   */
-  search: function(search, paramValue) {
-    switch (arguments.length) {
-      case 0:
-        return this.$$search;
-      case 1:
-        if (isString(search) || isNumber(search)) {
-          search = search.toString();
-          this.$$search = parseKeyValue(search);
-        } else if (isObject(search)) {
-          search = copy(search, {});
-          // remove object undefined or null properties
-          forEach(search, function(value, key) {
-            if (value == null) delete search[key];
-          });
-
-          this.$$search = search;
-        } else {
-          throw $locationMinErr('isrcharg',
-              'The first argument of the `$location#search()` call must be a string or an object.');
-        }
-        break;
-      default:
-        if (isUndefined(paramValue) || paramValue === null) {
-          delete this.$$search[search];
-        } else {
-          this.$$search[search] = paramValue;
-        }
-    }
-
-    this.$$compose();
-    return this;
-  },
-
-  /**
-   * @ngdoc method
-   * @name $location#hash
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return hash fragment when called without any parameter.
-   *
-   * Change hash fragment when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue
-   * var hash = $location.hash();
-   * // => "hashValue"
-   * ```
-   *
-   * @param {(string|number)=} hash New hash fragment
-   * @return {string} hash
-   */
-  hash: locationGetterSetter('$$hash', function(hash) {
-    return hash !== null ? hash.toString() : '';
-  }),
-
-  /**
-   * @ngdoc method
-   * @name $location#replace
-   *
-   * @description
-   * If called, all changes to $location during current `$digest` will be replacing current history
-   * record, instead of adding new one.
-   */
-  replace: function() {
-    this.$$replace = true;
-    return this;
-  }
-};
-
-forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {
-  Location.prototype = Object.create(locationPrototype);
-
-  /**
-   * @ngdoc method
-   * @name $location#state
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return the history state object when called without any parameter.
-   *
-   * Change the history state object when called with one parameter and return `$location`.
-   * The state object is later passed to `pushState` or `replaceState`.
-   *
-   * NOTE: This method is supported only in HTML5 mode and only in browsers supporting
-   * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support
-   * older browsers (like IE9 or Android < 4.0), don't use this method.
-   *
-   * @param {object=} state State object for pushState or replaceState
-   * @return {object} state
-   */
-  Location.prototype.state = function(state) {
-    if (!arguments.length)
-      return this.$$state;
-
-    if (Location !== LocationHtml5Url || !this.$$html5) {
-      throw $locationMinErr('nostate', 'History API state support is available only ' +
-        'in HTML5 mode and only in browsers supporting HTML5 History API');
-    }
-    // The user might modify `stateObject` after invoking `$location.state(stateObject)`
-    // but we're changing the $$state reference to $browser.state() during the $digest
-    // so the modification window is narrow.
-    this.$$state = isUndefined(state) ? null : state;
-
-    return this;
-  };
-});
-
-
-function locationGetter(property) {
-  return function() {
-    return this[property];
-  };
-}
-
-
-function locationGetterSetter(property, preprocess) {
-  return function(value) {
-    if (isUndefined(value))
-      return this[property];
-
-    this[property] = preprocess(value);
-    this.$$compose();
-
-    return this;
-  };
-}
-
-
-/**
- * @ngdoc service
- * @name $location
- *
- * @requires $rootElement
- *
- * @description
- * The $location service parses the URL in the browser address bar (based on the
- * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL
- * available to your application. Changes to the URL in the address bar are reflected into
- * $location service and changes to $location are reflected into the browser address bar.
- *
- * **The $location service:**
- *
- * - Exposes the current URL in the browser address bar, so you can
- *   - Watch and observe the URL.
- *   - Change the URL.
- * - Synchronizes the URL with the browser when the user
- *   - Changes the address bar.
- *   - Clicks the back or forward button (or clicks a History link).
- *   - Clicks on a link.
- * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
- *
- * For more information see {@link guide/$location Developer Guide: Using $location}
- */
-
-/**
- * @ngdoc provider
- * @name $locationProvider
- * @description
- * Use the `$locationProvider` to configure how the application deep linking paths are stored.
- */
-function $LocationProvider() {
-  var hashPrefix = '',
-      html5Mode = {
-        enabled: false,
-        requireBase: true,
-        rewriteLinks: true
-      };
-
-  /**
-   * @ngdoc method
-   * @name $locationProvider#hashPrefix
-   * @description
-   * @param {string=} prefix Prefix for hash part (containing path and search)
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   */
-  this.hashPrefix = function(prefix) {
-    if (isDefined(prefix)) {
-      hashPrefix = prefix;
-      return this;
-    } else {
-      return hashPrefix;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $locationProvider#html5Mode
-   * @description
-   * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value.
-   *   If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported
-   *   properties:
-   *   - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to
-   *     change urls where supported. Will fall back to hash-prefixed paths in browsers that do not
-   *     support `pushState`.
-   *   - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies
-   *     whether or not a <base> tag is required to be present. If `enabled` and `requireBase` are
-   *     true, and a base tag is not present, an error will be thrown when `$location` is injected.
-   *     See the {@link guide/$location $location guide for more information}
-   *   - **rewriteLinks** - `{boolean}` - (default: `true`) When html5Mode is enabled,
-   *     enables/disables url rewriting for relative links.
-   *
-   * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter
-   */
-  this.html5Mode = function(mode) {
-    if (isBoolean(mode)) {
-      html5Mode.enabled = mode;
-      return this;
-    } else if (isObject(mode)) {
-
-      if (isBoolean(mode.enabled)) {
-        html5Mode.enabled = mode.enabled;
-      }
-
-      if (isBoolean(mode.requireBase)) {
-        html5Mode.requireBase = mode.requireBase;
-      }
-
-      if (isBoolean(mode.rewriteLinks)) {
-        html5Mode.rewriteLinks = mode.rewriteLinks;
-      }
-
-      return this;
-    } else {
-      return html5Mode;
-    }
-  };
-
-  /**
-   * @ngdoc event
-   * @name $location#$locationChangeStart
-   * @eventType broadcast on root scope
-   * @description
-   * Broadcasted before a URL will change.
-   *
-   * This change can be prevented by calling
-   * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more
-   * details about event object. Upon successful change
-   * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired.
-   *
-   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
-   * the browser supports the HTML5 History API.
-   *
-   * @param {Object} angularEvent Synthetic event object.
-   * @param {string} newUrl New URL
-   * @param {string=} oldUrl URL that was before it was changed.
-   * @param {string=} newState New history state object
-   * @param {string=} oldState History state object that was before it was changed.
-   */
-
-  /**
-   * @ngdoc event
-   * @name $location#$locationChangeSuccess
-   * @eventType broadcast on root scope
-   * @description
-   * Broadcasted after a URL was changed.
-   *
-   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
-   * the browser supports the HTML5 History API.
-   *
-   * @param {Object} angularEvent Synthetic event object.
-   * @param {string} newUrl New URL
-   * @param {string=} oldUrl URL that was before it was changed.
-   * @param {string=} newState New history state object
-   * @param {string=} oldState History state object that was before it was changed.
-   */
-
-  this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window',
-      function($rootScope, $browser, $sniffer, $rootElement, $window) {
-    var $location,
-        LocationMode,
-        baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''
-        initialUrl = $browser.url(),
-        appBase;
-
-    if (html5Mode.enabled) {
-      if (!baseHref && html5Mode.requireBase) {
-        throw $locationMinErr('nobase',
-          "$location in HTML5 mode requires a <base> tag to be present!");
-      }
-      appBase = serverBase(initialUrl) + (baseHref || '/');
-      LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;
-    } else {
-      appBase = stripHash(initialUrl);
-      LocationMode = LocationHashbangUrl;
-    }
-    $location = new LocationMode(appBase, '#' + hashPrefix);
-    $location.$$parseLinkUrl(initialUrl, initialUrl);
-
-    $location.$$state = $browser.state();
-
-    var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
-
-    function setBrowserUrlWithFallback(url, replace, state) {
-      var oldUrl = $location.url();
-      var oldState = $location.$$state;
-      try {
-        $browser.url(url, replace, state);
-
-        // Make sure $location.state() returns referentially identical (not just deeply equal)
-        // state object; this makes possible quick checking if the state changed in the digest
-        // loop. Checking deep equality would be too expensive.
-        $location.$$state = $browser.state();
-      } catch (e) {
-        // Restore old values if pushState fails
-        $location.url(oldUrl);
-        $location.$$state = oldState;
-
-        throw e;
-      }
-    }
-
-    $rootElement.on('click', function(event) {
-      // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
-      // currently we open nice url link and redirect then
-
-      if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return;
-
-      var elm = jqLite(event.target);
-
-      // traverse the DOM up to find first A tag
-      while (nodeName_(elm[0]) !== 'a') {
-        // ignore rewriting if no A tag (reached root element, or no parent - removed from document)
-        if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;
-      }
-
-      var absHref = elm.prop('href');
-      // get the actual href attribute - see
-      // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
-      var relHref = elm.attr('href') || elm.attr('xlink:href');
-
-      if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {
-        // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during
-        // an animation.
-        absHref = urlResolve(absHref.animVal).href;
-      }
-
-      // Ignore when url is started with javascript: or mailto:
-      if (IGNORE_URI_REGEXP.test(absHref)) return;
-
-      if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {
-        if ($location.$$parseLinkUrl(absHref, relHref)) {
-          // We do a preventDefault for all urls that are part of the angular application,
-          // in html5mode and also without, so that we are able to abort navigation without
-          // getting double entries in the location history.
-          event.preventDefault();
-          // update location manually
-          if ($location.absUrl() != $browser.url()) {
-            $rootScope.$apply();
-            // hack to work around FF6 bug 684208 when scenario runner clicks on links
-            $window.angular['ff-684208-preventDefault'] = true;
-          }
-        }
-      }
-    });
-
-
-    // rewrite hashbang url <> html5 url
-    if ($location.absUrl() != initialUrl) {
-      $browser.url($location.absUrl(), true);
-    }
-
-    var initializing = true;
-
-    // update $location when $browser url changes
-    $browser.onUrlChange(function(newUrl, newState) {
-      $rootScope.$evalAsync(function() {
-        var oldUrl = $location.absUrl();
-        var oldState = $location.$$state;
-        var defaultPrevented;
-
-        $location.$$parse(newUrl);
-        $location.$$state = newState;
-
-        defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
-            newState, oldState).defaultPrevented;
-
-        // if the location was changed by a `$locationChangeStart` handler then stop
-        // processing this location change
-        if ($location.absUrl() !== newUrl) return;
-
-        if (defaultPrevented) {
-          $location.$$parse(oldUrl);
-          $location.$$state = oldState;
-          setBrowserUrlWithFallback(oldUrl, false, oldState);
-        } else {
-          initializing = false;
-          afterLocationChange(oldUrl, oldState);
-        }
-      });
-      if (!$rootScope.$$phase) $rootScope.$digest();
-    });
-
-    // update browser
-    $rootScope.$watch(function $locationWatch() {
-      var oldUrl = trimEmptyHash($browser.url());
-      var newUrl = trimEmptyHash($location.absUrl());
-      var oldState = $browser.state();
-      var currentReplace = $location.$$replace;
-      var urlOrStateChanged = oldUrl !== newUrl ||
-        ($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
-
-      if (initializing || urlOrStateChanged) {
-        initializing = false;
-
-        $rootScope.$evalAsync(function() {
-          var newUrl = $location.absUrl();
-          var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
-              $location.$$state, oldState).defaultPrevented;
-
-          // if the location was changed by a `$locationChangeStart` handler then stop
-          // processing this location change
-          if ($location.absUrl() !== newUrl) return;
-
-          if (defaultPrevented) {
-            $location.$$parse(oldUrl);
-            $location.$$state = oldState;
-          } else {
-            if (urlOrStateChanged) {
-              setBrowserUrlWithFallback(newUrl, currentReplace,
-                                        oldState === $location.$$state ? null : $location.$$state);
-            }
-            afterLocationChange(oldUrl, oldState);
-          }
-        });
-      }
-
-      $location.$$replace = false;
-
-      // we don't need to return anything because $evalAsync will make the digest loop dirty when
-      // there is a change
-    });
-
-    return $location;
-
-    function afterLocationChange(oldUrl, oldState) {
-      $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl,
-        $location.$$state, oldState);
-    }
-}];
-}
-
-/**
- * @ngdoc service
- * @name $log
- * @requires $window
- *
- * @description
- * Simple service for logging. Default implementation safely writes the message
- * into the browser's console (if present).
- *
- * The main purpose of this service is to simplify debugging and troubleshooting.
- *
- * The default is to log `debug` messages. You can use
- * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.
- *
- * @example
-   <example module="logExample">
-     <file name="script.js">
-       angular.module('logExample', [])
-         .controller('LogController', ['$scope', '$log', function($scope, $log) {
-           $scope.$log = $log;
-           $scope.message = 'Hello World!';
-         }]);
-     </file>
-     <file name="index.html">
-       <div ng-controller="LogController">
-         <p>Reload this page with open console, enter text and hit the log button...</p>
-         Message:
-         <input type="text" ng-model="message"/>
-         <button ng-click="$log.log(message)">log</button>
-         <button ng-click="$log.warn(message)">warn</button>
-         <button ng-click="$log.info(message)">info</button>
-         <button ng-click="$log.error(message)">error</button>
-       </div>
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc provider
- * @name $logProvider
- * @description
- * Use the `$logProvider` to configure how the application logs messages
- */
-function $LogProvider() {
-  var debug = true,
-      self = this;
-
-  /**
-   * @ngdoc method
-   * @name $logProvider#debugEnabled
-   * @description
-   * @param {boolean=} flag enable or disable debug level messages
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   */
-  this.debugEnabled = function(flag) {
-    if (isDefined(flag)) {
-      debug = flag;
-    return this;
-    } else {
-      return debug;
-    }
-  };
-
-  this.$get = ['$window', function($window) {
-    return {
-      /**
-       * @ngdoc method
-       * @name $log#log
-       *
-       * @description
-       * Write a log message
-       */
-      log: consoleLog('log'),
-
-      /**
-       * @ngdoc method
-       * @name $log#info
-       *
-       * @description
-       * Write an information message
-       */
-      info: consoleLog('info'),
-
-      /**
-       * @ngdoc method
-       * @name $log#warn
-       *
-       * @description
-       * Write a warning message
-       */
-      warn: consoleLog('warn'),
-
-      /**
-       * @ngdoc method
-       * @name $log#error
-       *
-       * @description
-       * Write an error message
-       */
-      error: consoleLog('error'),
-
-      /**
-       * @ngdoc method
-       * @name $log#debug
-       *
-       * @description
-       * Write a debug message
-       */
-      debug: (function() {
-        var fn = consoleLog('debug');
-
-        return function() {
-          if (debug) {
-            fn.apply(self, arguments);
-          }
-        };
-      }())
-    };
-
-    function formatError(arg) {
-      if (arg instanceof Error) {
-        if (arg.stack) {
-          arg = (arg.message && arg.stack.indexOf(arg.message) === -1)
-              ? 'Error: ' + arg.message + '\n' + arg.stack
-              : arg.stack;
-        } else if (arg.sourceURL) {
-          arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line;
-        }
-      }
-      return arg;
-    }
-
-    function consoleLog(type) {
-      var console = $window.console || {},
-          logFn = console[type] || console.log || noop,
-          hasApply = false;
-
-      // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
-      // The reason behind this is that console.log has type "object" in IE8...
-      try {
-        hasApply = !!logFn.apply;
-      } catch (e) {}
-
-      if (hasApply) {
-        return function() {
-          var args = [];
-          forEach(arguments, function(arg) {
-            args.push(formatError(arg));
-          });
-          return logFn.apply(console, args);
-        };
-      }
-
-      // we are IE which either doesn't have window.console => this is noop and we do nothing,
-      // or we are IE where console.log doesn't have apply so we log at least first 2 args
-      return function(arg1, arg2) {
-        logFn(arg1, arg2 == null ? '' : arg2);
-      };
-    }
-  }];
-}
-
-var $parseMinErr = minErr('$parse');
-
-// Sandboxing Angular Expressions
-// ------------------------------
-// Angular expressions are generally considered safe because these expressions only have direct
-// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by
-// obtaining a reference to native JS functions such as the Function constructor.
-//
-// As an example, consider the following Angular expression:
-//
-//   {}.toString.constructor('alert("evil JS code")')
-//
-// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits
-// against the expression language, but not to prevent exploits that were enabled by exposing
-// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good
-// practice and therefore we are not even trying to protect against interaction with an object
-// explicitly exposed in this way.
-//
-// In general, it is not possible to access a Window object from an angular expression unless a
-// window or some DOM object that has a reference to window is published onto a Scope.
-// Similarly we prevent invocations of function known to be dangerous, as well as assignments to
-// native objects.
-//
-// See https://docs.angularjs.org/guide/security
-
-
-function ensureSafeMemberName(name, fullExpression) {
-  if (name === "__defineGetter__" || name === "__defineSetter__"
-      || name === "__lookupGetter__" || name === "__lookupSetter__"
-      || name === "__proto__") {
-    throw $parseMinErr('isecfld',
-        'Attempting to access a disallowed field in Angular expressions! '
-        + 'Expression: {0}', fullExpression);
-  }
-  return name;
-}
-
-function ensureSafeObject(obj, fullExpression) {
-  // nifty check if obj is Function that is fast and works across iframes and other contexts
-  if (obj) {
-    if (obj.constructor === obj) {
-      throw $parseMinErr('isecfn',
-          'Referencing Function in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// isWindow(obj)
-        obj.window === obj) {
-      throw $parseMinErr('isecwindow',
-          'Referencing the Window in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// isElement(obj)
-        obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {
-      throw $parseMinErr('isecdom',
-          'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// block Object so that we can't get hold of dangerous Object.* methods
-        obj === Object) {
-      throw $parseMinErr('isecobj',
-          'Referencing Object in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    }
-  }
-  return obj;
-}
-
-var CALL = Function.prototype.call;
-var APPLY = Function.prototype.apply;
-var BIND = Function.prototype.bind;
-
-function ensureSafeFunction(obj, fullExpression) {
-  if (obj) {
-    if (obj.constructor === obj) {
-      throw $parseMinErr('isecfn',
-        'Referencing Function in Angular expressions is disallowed! Expression: {0}',
-        fullExpression);
-    } else if (obj === CALL || obj === APPLY || obj === BIND) {
-      throw $parseMinErr('isecff',
-        'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',
-        fullExpression);
-    }
-  }
-}
-
-//Keyword constants
-var CONSTANTS = createMap();
-forEach({
-  'null': function() { return null; },
-  'true': function() { return true; },
-  'false': function() { return false; },
-  'undefined': function() {}
-}, function(constantGetter, name) {
-  constantGetter.constant = constantGetter.literal = constantGetter.sharedGetter = true;
-  CONSTANTS[name] = constantGetter;
-});
-
-//Not quite a constant, but can be lex/parsed the same
-CONSTANTS['this'] = function(self) { return self; };
-CONSTANTS['this'].sharedGetter = true;
-
-
-//Operators - will be wrapped by binaryFn/unaryFn/assignment/filter
-var OPERATORS = extend(createMap(), {
-    '+':function(self, locals, a, b) {
-      a=a(self, locals); b=b(self, locals);
-      if (isDefined(a)) {
-        if (isDefined(b)) {
-          return a + b;
-        }
-        return a;
-      }
-      return isDefined(b) ? b : undefined;},
-    '-':function(self, locals, a, b) {
-          a=a(self, locals); b=b(self, locals);
-          return (isDefined(a) ? a : 0) - (isDefined(b) ? b : 0);
-        },
-    '*':function(self, locals, a, b) {return a(self, locals) * b(self, locals);},
-    '/':function(self, locals, a, b) {return a(self, locals) / b(self, locals);},
-    '%':function(self, locals, a, b) {return a(self, locals) % b(self, locals);},
-    '===':function(self, locals, a, b) {return a(self, locals) === b(self, locals);},
-    '!==':function(self, locals, a, b) {return a(self, locals) !== b(self, locals);},
-    '==':function(self, locals, a, b) {return a(self, locals) == b(self, locals);},
-    '!=':function(self, locals, a, b) {return a(self, locals) != b(self, locals);},
-    '<':function(self, locals, a, b) {return a(self, locals) < b(self, locals);},
-    '>':function(self, locals, a, b) {return a(self, locals) > b(self, locals);},
-    '<=':function(self, locals, a, b) {return a(self, locals) <= b(self, locals);},
-    '>=':function(self, locals, a, b) {return a(self, locals) >= b(self, locals);},
-    '&&':function(self, locals, a, b) {return a(self, locals) && b(self, locals);},
-    '||':function(self, locals, a, b) {return a(self, locals) || b(self, locals);},
-    '!':function(self, locals, a) {return !a(self, locals);},
-
-    //Tokenized as operators but parsed as assignment/filters
-    '=':true,
-    '|':true
-});
-var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'};
-
-
-/////////////////////////////////////////
-
-
-/**
- * @constructor
- */
-var Lexer = function(options) {
-  this.options = options;
-};
-
-Lexer.prototype = {
-  constructor: Lexer,
-
-  lex: function(text) {
-    this.text = text;
-    this.index = 0;
-    this.tokens = [];
-
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      if (ch === '"' || ch === "'") {
-        this.readString(ch);
-      } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) {
-        this.readNumber();
-      } else if (this.isIdent(ch)) {
-        this.readIdent();
-      } else if (this.is(ch, '(){}[].,;:?')) {
-        this.tokens.push({index: this.index, text: ch});
-        this.index++;
-      } else if (this.isWhitespace(ch)) {
-        this.index++;
-      } else {
-        var ch2 = ch + this.peek();
-        var ch3 = ch2 + this.peek(2);
-        var op1 = OPERATORS[ch];
-        var op2 = OPERATORS[ch2];
-        var op3 = OPERATORS[ch3];
-        if (op1 || op2 || op3) {
-          var token = op3 ? ch3 : (op2 ? ch2 : ch);
-          this.tokens.push({index: this.index, text: token, operator: true});
-          this.index += token.length;
-        } else {
-          this.throwError('Unexpected next character ', this.index, this.index + 1);
-        }
-      }
-    }
-    return this.tokens;
-  },
-
-  is: function(ch, chars) {
-    return chars.indexOf(ch) !== -1;
-  },
-
-  peek: function(i) {
-    var num = i || 1;
-    return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;
-  },
-
-  isNumber: function(ch) {
-    return ('0' <= ch && ch <= '9') && typeof ch === "string";
-  },
-
-  isWhitespace: function(ch) {
-    // IE treats non-breaking space as \u00A0
-    return (ch === ' ' || ch === '\r' || ch === '\t' ||
-            ch === '\n' || ch === '\v' || ch === '\u00A0');
-  },
-
-  isIdent: function(ch) {
-    return ('a' <= ch && ch <= 'z' ||
-            'A' <= ch && ch <= 'Z' ||
-            '_' === ch || ch === '$');
-  },
-
-  isExpOperator: function(ch) {
-    return (ch === '-' || ch === '+' || this.isNumber(ch));
-  },
-
-  throwError: function(error, start, end) {
-    end = end || this.index;
-    var colStr = (isDefined(start)
-            ? 's ' + start +  '-' + this.index + ' [' + this.text.substring(start, end) + ']'
-            : ' ' + end);
-    throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',
-        error, colStr, this.text);
-  },
-
-  readNumber: function() {
-    var number = '';
-    var start = this.index;
-    while (this.index < this.text.length) {
-      var ch = lowercase(this.text.charAt(this.index));
-      if (ch == '.' || this.isNumber(ch)) {
-        number += ch;
-      } else {
-        var peekCh = this.peek();
-        if (ch == 'e' && this.isExpOperator(peekCh)) {
-          number += ch;
-        } else if (this.isExpOperator(ch) &&
-            peekCh && this.isNumber(peekCh) &&
-            number.charAt(number.length - 1) == 'e') {
-          number += ch;
-        } else if (this.isExpOperator(ch) &&
-            (!peekCh || !this.isNumber(peekCh)) &&
-            number.charAt(number.length - 1) == 'e') {
-          this.throwError('Invalid exponent');
-        } else {
-          break;
-        }
-      }
-      this.index++;
-    }
-    this.tokens.push({
-      index: start,
-      text: number,
-      constant: true,
-      value: Number(number)
-    });
-  },
-
-  readIdent: function() {
-    var start = this.index;
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      if (!(this.isIdent(ch) || this.isNumber(ch))) {
-        break;
-      }
-      this.index++;
-    }
-    this.tokens.push({
-      index: start,
-      text: this.text.slice(start, this.index),
-      identifier: true
-    });
-  },
-
-  readString: function(quote) {
-    var start = this.index;
-    this.index++;
-    var string = '';
-    var rawString = quote;
-    var escape = false;
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      rawString += ch;
-      if (escape) {
-        if (ch === 'u') {
-          var hex = this.text.substring(this.index + 1, this.index + 5);
-          if (!hex.match(/[\da-f]{4}/i))
-            this.throwError('Invalid unicode escape [\\u' + hex + ']');
-          this.index += 4;
-          string += String.fromCharCode(parseInt(hex, 16));
-        } else {
-          var rep = ESCAPE[ch];
-          string = string + (rep || ch);
-        }
-        escape = false;
-      } else if (ch === '\\') {
-        escape = true;
-      } else if (ch === quote) {
-        this.index++;
-        this.tokens.push({
-          index: start,
-          text: rawString,
-          constant: true,
-          value: string
-        });
-        return;
-      } else {
-        string += ch;
-      }
-      this.index++;
-    }
-    this.throwError('Unterminated quote', start);
-  }
-};
-
-
-function isConstant(exp) {
-  return exp.constant;
-}
-
-/**
- * @constructor
- */
-var Parser = function(lexer, $filter, options) {
-  this.lexer = lexer;
-  this.$filter = $filter;
-  this.options = options;
-};
-
-Parser.ZERO = extend(function() {
-  return 0;
-}, {
-  sharedGetter: true,
-  constant: true
-});
-
-Parser.prototype = {
-  constructor: Parser,
-
-  parse: function(text) {
-    this.text = text;
-    this.tokens = this.lexer.lex(text);
-
-    var value = this.statements();
-
-    if (this.tokens.length !== 0) {
-      this.throwError('is an unexpected token', this.tokens[0]);
-    }
-
-    value.literal = !!value.literal;
-    value.constant = !!value.constant;
-
-    return value;
-  },
-
-  primary: function() {
-    var primary;
-    if (this.expect('(')) {
-      primary = this.filterChain();
-      this.consume(')');
-    } else if (this.expect('[')) {
-      primary = this.arrayDeclaration();
-    } else if (this.expect('{')) {
-      primary = this.object();
-    } else if (this.peek().identifier && this.peek().text in CONSTANTS) {
-      primary = CONSTANTS[this.consume().text];
-    } else if (this.peek().identifier) {
-      primary = this.identifier();
-    } else if (this.peek().constant) {
-      primary = this.constant();
-    } else {
-      this.throwError('not a primary expression', this.peek());
-    }
-
-    var next, context;
-    while ((next = this.expect('(', '[', '.'))) {
-      if (next.text === '(') {
-        primary = this.functionCall(primary, context);
-        context = null;
-      } else if (next.text === '[') {
-        context = primary;
-        primary = this.objectIndex(primary);
-      } else if (next.text === '.') {
-        context = primary;
-        primary = this.fieldAccess(primary);
-      } else {
-        this.throwError('IMPOSSIBLE');
-      }
-    }
-    return primary;
-  },
-
-  throwError: function(msg, token) {
-    throw $parseMinErr('syntax',
-        'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].',
-          token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));
-  },
-
-  peekToken: function() {
-    if (this.tokens.length === 0)
-      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
-    return this.tokens[0];
-  },
-
-  peek: function(e1, e2, e3, e4) {
-    return this.peekAhead(0, e1, e2, e3, e4);
-  },
-  peekAhead: function(i, e1, e2, e3, e4) {
-    if (this.tokens.length > i) {
-      var token = this.tokens[i];
-      var t = token.text;
-      if (t === e1 || t === e2 || t === e3 || t === e4 ||
-          (!e1 && !e2 && !e3 && !e4)) {
-        return token;
-      }
-    }
-    return false;
-  },
-
-  expect: function(e1, e2, e3, e4) {
-    var token = this.peek(e1, e2, e3, e4);
-    if (token) {
-      this.tokens.shift();
-      return token;
-    }
-    return false;
-  },
-
-  consume: function(e1) {
-    if (this.tokens.length === 0) {
-      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
-    }
-
-    var token = this.expect(e1);
-    if (!token) {
-      this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());
-    }
-    return token;
-  },
-
-  unaryFn: function(op, right) {
-    var fn = OPERATORS[op];
-    return extend(function $parseUnaryFn(self, locals) {
-      return fn(self, locals, right);
-    }, {
-      constant:right.constant,
-      inputs: [right]
-    });
-  },
-
-  binaryFn: function(left, op, right, isBranching) {
-    var fn = OPERATORS[op];
-    return extend(function $parseBinaryFn(self, locals) {
-      return fn(self, locals, left, right);
-    }, {
-      constant: left.constant && right.constant,
-      inputs: !isBranching && [left, right]
-    });
-  },
-
-  identifier: function() {
-    var id = this.consume().text;
-
-    //Continue reading each `.identifier` unless it is a method invocation
-    while (this.peek('.') && this.peekAhead(1).identifier && !this.peekAhead(2, '(')) {
-      id += this.consume().text + this.consume().text;
-    }
-
-    return getterFn(id, this.options, this.text);
-  },
-
-  constant: function() {
-    var value = this.consume().value;
-
-    return extend(function $parseConstant() {
-      return value;
-    }, {
-      constant: true,
-      literal: true
-    });
-  },
-
-  statements: function() {
-    var statements = [];
-    while (true) {
-      if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))
-        statements.push(this.filterChain());
-      if (!this.expect(';')) {
-        // optimize for the common case where there is only one statement.
-        // TODO(size): maybe we should not support multiple statements?
-        return (statements.length === 1)
-            ? statements[0]
-            : function $parseStatements(self, locals) {
-                var value;
-                for (var i = 0, ii = statements.length; i < ii; i++) {
-                  value = statements[i](self, locals);
-                }
-                return value;
-              };
-      }
-    }
-  },
-
-  filterChain: function() {
-    var left = this.expression();
-    var token;
-    while ((token = this.expect('|'))) {
-      left = this.filter(left);
-    }
-    return left;
-  },
-
-  filter: function(inputFn) {
-    var fn = this.$filter(this.consume().text);
-    var argsFn;
-    var args;
-
-    if (this.peek(':')) {
-      argsFn = [];
-      args = []; // we can safely reuse the array
-      while (this.expect(':')) {
-        argsFn.push(this.expression());
-      }
-    }
-
-    var inputs = [inputFn].concat(argsFn || []);
-
-    return extend(function $parseFilter(self, locals) {
-      var input = inputFn(self, locals);
-      if (args) {
-        args[0] = input;
-
-        var i = argsFn.length;
-        while (i--) {
-          args[i + 1] = argsFn[i](self, locals);
-        }
-
-        return fn.apply(undefined, args);
-      }
-
-      return fn(input);
-    }, {
-      constant: !fn.$stateful && inputs.every(isConstant),
-      inputs: !fn.$stateful && inputs
-    });
-  },
-
-  expression: function() {
-    return this.assignment();
-  },
-
-  assignment: function() {
-    var left = this.ternary();
-    var right;
-    var token;
-    if ((token = this.expect('='))) {
-      if (!left.assign) {
-        this.throwError('implies assignment but [' +
-            this.text.substring(0, token.index) + '] can not be assigned to', token);
-      }
-      right = this.ternary();
-      return extend(function $parseAssignment(scope, locals) {
-        return left.assign(scope, right(scope, locals), locals);
-      }, {
-        inputs: [left, right]
-      });
-    }
-    return left;
-  },
-
-  ternary: function() {
-    var left = this.logicalOR();
-    var middle;
-    var token;
-    if ((token = this.expect('?'))) {
-      middle = this.assignment();
-      if (this.consume(':')) {
-        var right = this.assignment();
-
-        return extend(function $parseTernary(self, locals) {
-          return left(self, locals) ? middle(self, locals) : right(self, locals);
-        }, {
-          constant: left.constant && middle.constant && right.constant
-        });
-      }
-    }
-
-    return left;
-  },
-
-  logicalOR: function() {
-    var left = this.logicalAND();
-    var token;
-    while ((token = this.expect('||'))) {
-      left = this.binaryFn(left, token.text, this.logicalAND(), true);
-    }
-    return left;
-  },
-
-  logicalAND: function() {
-    var left = this.equality();
-    var token;
-    while ((token = this.expect('&&'))) {
-      left = this.binaryFn(left, token.text, this.equality(), true);
-    }
-    return left;
-  },
-
-  equality: function() {
-    var left = this.relational();
-    var token;
-    while ((token = this.expect('==','!=','===','!=='))) {
-      left = this.binaryFn(left, token.text, this.relational());
-    }
-    return left;
-  },
-
-  relational: function() {
-    var left = this.additive();
-    var token;
-    while ((token = this.expect('<', '>', '<=', '>='))) {
-      left = this.binaryFn(left, token.text, this.additive());
-    }
-    return left;
-  },
-
-  additive: function() {
-    var left = this.multiplicative();
-    var token;
-    while ((token = this.expect('+','-'))) {
-      left = this.binaryFn(left, token.text, this.multiplicative());
-    }
-    return left;
-  },
-
-  multiplicative: function() {
-    var left = this.unary();
-    var token;
-    while ((token = this.expect('*','/','%'))) {
-      left = this.binaryFn(left, token.text, this.unary());
-    }
-    return left;
-  },
-
-  unary: function() {
-    var token;
-    if (this.expect('+')) {
-      return this.primary();
-    } else if ((token = this.expect('-'))) {
-      return this.binaryFn(Parser.ZERO, token.text, this.unary());
-    } else if ((token = this.expect('!'))) {
-      return this.unaryFn(token.text, this.unary());
-    } else {
-      return this.primary();
-    }
-  },
-
-  fieldAccess: function(object) {
-    var getter = this.identifier();
-
-    return extend(function $parseFieldAccess(scope, locals, self) {
-      var o = self || object(scope, locals);
-      return (o == null) ? undefined : getter(o);
-    }, {
-      assign: function(scope, value, locals) {
-        var o = object(scope, locals);
-        if (!o) object.assign(scope, o = {}, locals);
-        return getter.assign(o, value);
-      }
-    });
-  },
-
-  objectIndex: function(obj) {
-    var expression = this.text;
-
-    var indexFn = this.expression();
-    this.consume(']');
-
-    return extend(function $parseObjectIndex(self, locals) {
-      var o = obj(self, locals),
-          i = indexFn(self, locals),
-          v;
-
-      ensureSafeMemberName(i, expression);
-      if (!o) return undefined;
-      v = ensureSafeObject(o[i], expression);
-      return v;
-    }, {
-      assign: function(self, value, locals) {
-        var key = ensureSafeMemberName(indexFn(self, locals), expression);
-        // prevent overwriting of Function.constructor which would break ensureSafeObject check
-        var o = ensureSafeObject(obj(self, locals), expression);
-        if (!o) obj.assign(self, o = {}, locals);
-        return o[key] = value;
-      }
-    });
-  },
-
-  functionCall: function(fnGetter, contextGetter) {
-    var argsFn = [];
-    if (this.peekToken().text !== ')') {
-      do {
-        argsFn.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume(')');
-
-    var expressionText = this.text;
-    // we can safely reuse the array across invocations
-    var args = argsFn.length ? [] : null;
-
-    return function $parseFunctionCall(scope, locals) {
-      var context = contextGetter ? contextGetter(scope, locals) : isDefined(contextGetter) ? undefined : scope;
-      var fn = fnGetter(scope, locals, context) || noop;
-
-      if (args) {
-        var i = argsFn.length;
-        while (i--) {
-          args[i] = ensureSafeObject(argsFn[i](scope, locals), expressionText);
-        }
-      }
-
-      ensureSafeObject(context, expressionText);
-      ensureSafeFunction(fn, expressionText);
-
-      // IE doesn't have apply for some native functions
-      var v = fn.apply
-            ? fn.apply(context, args)
-            : fn(args[0], args[1], args[2], args[3], args[4]);
-
-      return ensureSafeObject(v, expressionText);
-      };
-  },
-
-  // This is used with json array declaration
-  arrayDeclaration: function() {
-    var elementFns = [];
-    if (this.peekToken().text !== ']') {
-      do {
-        if (this.peek(']')) {
-          // Support trailing commas per ES5.1.
-          break;
-        }
-        elementFns.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume(']');
-
-    return extend(function $parseArrayLiteral(self, locals) {
-      var array = [];
-      for (var i = 0, ii = elementFns.length; i < ii; i++) {
-        array.push(elementFns[i](self, locals));
-      }
-      return array;
-    }, {
-      literal: true,
-      constant: elementFns.every(isConstant),
-      inputs: elementFns
-    });
-  },
-
-  object: function() {
-    var keys = [], valueFns = [];
-    if (this.peekToken().text !== '}') {
-      do {
-        if (this.peek('}')) {
-          // Support trailing commas per ES5.1.
-          break;
-        }
-        var token = this.consume();
-        if (token.constant) {
-          keys.push(token.value);
-        } else if (token.identifier) {
-          keys.push(token.text);
-        } else {
-          this.throwError("invalid key", token);
-        }
-        this.consume(':');
-        valueFns.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume('}');
-
-    return extend(function $parseObjectLiteral(self, locals) {
-      var object = {};
-      for (var i = 0, ii = valueFns.length; i < ii; i++) {
-        object[keys[i]] = valueFns[i](self, locals);
-      }
-      return object;
-    }, {
-      literal: true,
-      constant: valueFns.every(isConstant),
-      inputs: valueFns
-    });
-  }
-};
-
-
-//////////////////////////////////////////////////
-// Parser helper functions
-//////////////////////////////////////////////////
-
-function setter(obj, locals, path, setValue, fullExp) {
-  ensureSafeObject(obj, fullExp);
-  ensureSafeObject(locals, fullExp);
-
-  var element = path.split('.'), key;
-  for (var i = 0; element.length > 1; i++) {
-    key = ensureSafeMemberName(element.shift(), fullExp);
-    var propertyObj = (i === 0 && locals && locals[key]) || obj[key];
-    if (!propertyObj) {
-      propertyObj = {};
-      obj[key] = propertyObj;
-    }
-    obj = ensureSafeObject(propertyObj, fullExp);
-  }
-  key = ensureSafeMemberName(element.shift(), fullExp);
-  ensureSafeObject(obj[key], fullExp);
-  obj[key] = setValue;
-  return setValue;
-}
-
-var getterFnCacheDefault = createMap();
-var getterFnCacheExpensive = createMap();
-
-function isPossiblyDangerousMemberName(name) {
-  return name == 'constructor';
-}
-
-/**
- * Implementation of the "Black Hole" variant from:
- * - http://jsperf.com/angularjs-parse-getter/4
- * - http://jsperf.com/path-evaluation-simplified/7
- */
-function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiveChecks) {
-  ensureSafeMemberName(key0, fullExp);
-  ensureSafeMemberName(key1, fullExp);
-  ensureSafeMemberName(key2, fullExp);
-  ensureSafeMemberName(key3, fullExp);
-  ensureSafeMemberName(key4, fullExp);
-  var eso = function(o) {
-    return ensureSafeObject(o, fullExp);
-  };
-  var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;
-  var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;
-  var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;
-  var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;
-  var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;
-
-  return function cspSafeGetter(scope, locals) {
-    var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;
-
-    if (pathVal == null) return pathVal;
-    pathVal = eso0(pathVal[key0]);
-
-    if (!key1) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso1(pathVal[key1]);
-
-    if (!key2) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso2(pathVal[key2]);
-
-    if (!key3) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso3(pathVal[key3]);
-
-    if (!key4) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso4(pathVal[key4]);
-
-    return pathVal;
-  };
-}
-
-function getterFnWithEnsureSafeObject(fn, fullExpression) {
-  return function(s, l) {
-    return fn(s, l, ensureSafeObject, fullExpression);
-  };
-}
-
-function getterFn(path, options, fullExp) {
-  var expensiveChecks = options.expensiveChecks;
-  var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);
-  var fn = getterFnCache[path];
-  if (fn) return fn;
-
-
-  var pathKeys = path.split('.'),
-      pathKeysLength = pathKeys.length;
-
-  // http://jsperf.com/angularjs-parse-getter/6
-  if (options.csp) {
-    if (pathKeysLength < 6) {
-      fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp, expensiveChecks);
-    } else {
-      fn = function cspSafeGetter(scope, locals) {
-        var i = 0, val;
-        do {
-          val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],
-                                pathKeys[i++], fullExp, expensiveChecks)(scope, locals);
-
-          locals = undefined; // clear after first iteration
-          scope = val;
-        } while (i < pathKeysLength);
-        return val;
-      };
-    }
-  } else {
-    var code = '';
-    if (expensiveChecks) {
-      code += 's = eso(s, fe);\nl = eso(l, fe);\n';
-    }
-    var needsEnsureSafeObject = expensiveChecks;
-    forEach(pathKeys, function(key, index) {
-      ensureSafeMemberName(key, fullExp);
-      var lookupJs = (index
-                      // we simply dereference 's' on any .dot notation
-                      ? 's'
-                      // but if we are first then we check locals first, and if so read it first
-                      : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key;
-      if (expensiveChecks || isPossiblyDangerousMemberName(key)) {
-        lookupJs = 'eso(' + lookupJs + ', fe)';
-        needsEnsureSafeObject = true;
-      }
-      code += 'if(s == null) return undefined;\n' +
-              's=' + lookupJs + ';\n';
-    });
-    code += 'return s;';
-
-    /* jshint -W054 */
-    var evaledFnGetter = new Function('s', 'l', 'eso', 'fe', code); // s=scope, l=locals, eso=ensureSafeObject
-    /* jshint +W054 */
-    evaledFnGetter.toString = valueFn(code);
-    if (needsEnsureSafeObject) {
-      evaledFnGetter = getterFnWithEnsureSafeObject(evaledFnGetter, fullExp);
-    }
-    fn = evaledFnGetter;
-  }
-
-  fn.sharedGetter = true;
-  fn.assign = function(self, value, locals) {
-    return setter(self, locals, path, value, path);
-  };
-  getterFnCache[path] = fn;
-  return fn;
-}
-
-var objectValueOf = Object.prototype.valueOf;
-
-function getValueOf(value) {
-  return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);
-}
-
-///////////////////////////////////
-
-/**
- * @ngdoc service
- * @name $parse
- * @kind function
- *
- * @description
- *
- * Converts Angular {@link guide/expression expression} into a function.
- *
- * ```js
- *   var getter = $parse('user.name');
- *   var setter = getter.assign;
- *   var context = {user:{name:'angular'}};
- *   var locals = {user:{name:'local'}};
- *
- *   expect(getter(context)).toEqual('angular');
- *   setter(context, 'newValue');
- *   expect(context.user.name).toEqual('newValue');
- *   expect(getter(context, locals)).toEqual('local');
- * ```
- *
- *
- * @param {string} expression String expression to compile.
- * @returns {function(context, locals)} a function which represents the compiled expression:
- *
- *    * `context` – `{object}` – an object against which any expressions embedded in the strings
- *      are evaluated against (typically a scope object).
- *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
- *      `context`.
- *
- *    The returned function also has the following properties:
- *      * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript
- *        literal.
- *      * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript
- *        constant literals.
- *      * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be
- *        set to a function to change its value on the given context.
- *
- */
-
-
-/**
- * @ngdoc provider
- * @name $parseProvider
- *
- * @description
- * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}
- *  service.
- */
-function $ParseProvider() {
-  var cacheDefault = createMap();
-  var cacheExpensive = createMap();
-
-
-
-  this.$get = ['$filter', '$sniffer', function($filter, $sniffer) {
-    var $parseOptions = {
-          csp: $sniffer.csp,
-          expensiveChecks: false
-        },
-        $parseOptionsExpensive = {
-          csp: $sniffer.csp,
-          expensiveChecks: true
-        };
-
-    function wrapSharedExpression(exp) {
-      var wrapped = exp;
-
-      if (exp.sharedGetter) {
-        wrapped = function $parseWrapper(self, locals) {
-          return exp(self, locals);
-        };
-        wrapped.literal = exp.literal;
-        wrapped.constant = exp.constant;
-        wrapped.assign = exp.assign;
-      }
-
-      return wrapped;
-    }
-
-    return function $parse(exp, interceptorFn, expensiveChecks) {
-      var parsedExpression, oneTime, cacheKey;
-
-      switch (typeof exp) {
-        case 'string':
-          cacheKey = exp = exp.trim();
-
-          var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
-          parsedExpression = cache[cacheKey];
-
-          if (!parsedExpression) {
-            if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {
-              oneTime = true;
-              exp = exp.substring(2);
-            }
-
-            var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
-            var lexer = new Lexer(parseOptions);
-            var parser = new Parser(lexer, $filter, parseOptions);
-            parsedExpression = parser.parse(exp);
-
-            if (parsedExpression.constant) {
-              parsedExpression.$$watchDelegate = constantWatchDelegate;
-            } else if (oneTime) {
-              //oneTime is not part of the exp passed to the Parser so we may have to
-              //wrap the parsedExpression before adding a $$watchDelegate
-              parsedExpression = wrapSharedExpression(parsedExpression);
-              parsedExpression.$$watchDelegate = parsedExpression.literal ?
-                oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;
-            } else if (parsedExpression.inputs) {
-              parsedExpression.$$watchDelegate = inputsWatchDelegate;
-            }
-
-            cache[cacheKey] = parsedExpression;
-          }
-          return addInterceptor(parsedExpression, interceptorFn);
-
-        case 'function':
-          return addInterceptor(exp, interceptorFn);
-
-        default:
-          return addInterceptor(noop, interceptorFn);
-      }
-    };
-
-    function collectExpressionInputs(inputs, list) {
-      for (var i = 0, ii = inputs.length; i < ii; i++) {
-        var input = inputs[i];
-        if (!input.constant) {
-          if (input.inputs) {
-            collectExpressionInputs(input.inputs, list);
-          } else if (list.indexOf(input) === -1) { // TODO(perf) can we do better?
-            list.push(input);
-          }
-        }
-      }
-
-      return list;
-    }
-
-    function expressionInputDirtyCheck(newValue, oldValueOfValue) {
-
-      if (newValue == null || oldValueOfValue == null) { // null/undefined
-        return newValue === oldValueOfValue;
-      }
-
-      if (typeof newValue === 'object') {
-
-        // attempt to convert the value to a primitive type
-        // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can
-        //             be cheaply dirty-checked
-        newValue = getValueOf(newValue);
-
-        if (typeof newValue === 'object') {
-          // objects/arrays are not supported - deep-watching them would be too expensive
-          return false;
-        }
-
-        // fall-through to the primitive equality check
-      }
-
-      //Primitive or NaN
-      return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue);
-    }
-
-    function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var inputExpressions = parsedExpression.$$inputs ||
-                    (parsedExpression.$$inputs = collectExpressionInputs(parsedExpression.inputs, []));
-
-      var lastResult;
-
-      if (inputExpressions.length === 1) {
-        var oldInputValue = expressionInputDirtyCheck; // init to something unique so that equals check fails
-        inputExpressions = inputExpressions[0];
-        return scope.$watch(function expressionInputWatch(scope) {
-          var newInputValue = inputExpressions(scope);
-          if (!expressionInputDirtyCheck(newInputValue, oldInputValue)) {
-            lastResult = parsedExpression(scope);
-            oldInputValue = newInputValue && getValueOf(newInputValue);
-          }
-          return lastResult;
-        }, listener, objectEquality);
-      }
-
-      var oldInputValueOfValues = [];
-      for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
-        oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails
-      }
-
-      return scope.$watch(function expressionInputsWatch(scope) {
-        var changed = false;
-
-        for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
-          var newInputValue = inputExpressions[i](scope);
-          if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) {
-            oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue);
-          }
-        }
-
-        if (changed) {
-          lastResult = parsedExpression(scope);
-        }
-
-        return lastResult;
-      }, listener, objectEquality);
-    }
-
-    function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch, lastValue;
-      return unwatch = scope.$watch(function oneTimeWatch(scope) {
-        return parsedExpression(scope);
-      }, function oneTimeListener(value, old, scope) {
-        lastValue = value;
-        if (isFunction(listener)) {
-          listener.apply(this, arguments);
-        }
-        if (isDefined(value)) {
-          scope.$$postDigest(function() {
-            if (isDefined(lastValue)) {
-              unwatch();
-            }
-          });
-        }
-      }, objectEquality);
-    }
-
-    function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch, lastValue;
-      return unwatch = scope.$watch(function oneTimeWatch(scope) {
-        return parsedExpression(scope);
-      }, function oneTimeListener(value, old, scope) {
-        lastValue = value;
-        if (isFunction(listener)) {
-          listener.call(this, value, old, scope);
-        }
-        if (isAllDefined(value)) {
-          scope.$$postDigest(function() {
-            if (isAllDefined(lastValue)) unwatch();
-          });
-        }
-      }, objectEquality);
-
-      function isAllDefined(value) {
-        var allDefined = true;
-        forEach(value, function(val) {
-          if (!isDefined(val)) allDefined = false;
-        });
-        return allDefined;
-      }
-    }
-
-    function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch;
-      return unwatch = scope.$watch(function constantWatch(scope) {
-        return parsedExpression(scope);
-      }, function constantListener(value, old, scope) {
-        if (isFunction(listener)) {
-          listener.apply(this, arguments);
-        }
-        unwatch();
-      }, objectEquality);
-    }
-
-    function addInterceptor(parsedExpression, interceptorFn) {
-      if (!interceptorFn) return parsedExpression;
-      var watchDelegate = parsedExpression.$$watchDelegate;
-
-      var regularWatch =
-          watchDelegate !== oneTimeLiteralWatchDelegate &&
-          watchDelegate !== oneTimeWatchDelegate;
-
-      var fn = regularWatch ? function regularInterceptedExpression(scope, locals) {
-        var value = parsedExpression(scope, locals);
-        return interceptorFn(value, scope, locals);
-      } : function oneTimeInterceptedExpression(scope, locals) {
-        var value = parsedExpression(scope, locals);
-        var result = interceptorFn(value, scope, locals);
-        // we only return the interceptor's result if the
-        // initial value is defined (for bind-once)
-        return isDefined(value) ? result : value;
-      };
-
-      // Propagate $$watchDelegates other then inputsWatchDelegate
-      if (parsedExpression.$$watchDelegate &&
-          parsedExpression.$$watchDelegate !== inputsWatchDelegate) {
-        fn.$$watchDelegate = parsedExpression.$$watchDelegate;
-      } else if (!interceptorFn.$stateful) {
-        // If there is an interceptor, but no watchDelegate then treat the interceptor like
-        // we treat filters - it is assumed to be a pure function unless flagged with $stateful
-        fn.$$watchDelegate = inputsWatchDelegate;
-        fn.inputs = [parsedExpression];
-      }
-
-      return fn;
-    }
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $q
- * @requires $rootScope
- *
- * @description
- * A service that helps you run functions asynchronously, and use their return values (or exceptions)
- * when they are done processing.
- *
- * This is an implementation of promises/deferred objects inspired by
- * [Kris Kowal's Q](https://github.com/kriskowal/q).
- *
- * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred
- * implementations, and the other which resembles ES6 promises to some degree.
- *
- * # $q constructor
- *
- * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver`
- * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony,
- * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
- *
- * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are
- * available yet.
- *
- * It can be used like so:
- *
- * ```js
- *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`
- *   // are available in the current lexical scope (they could have been injected or passed in).
- *
- *   function asyncGreet(name) {
- *     // perform some asynchronous operation, resolve or reject the promise when appropriate.
- *     return $q(function(resolve, reject) {
- *       setTimeout(function() {
- *         if (okToGreet(name)) {
- *           resolve('Hello, ' + name + '!');
- *         } else {
- *           reject('Greeting ' + name + ' is not allowed.');
- *         }
- *       }, 1000);
- *     });
- *   }
- *
- *   var promise = asyncGreet('Robin Hood');
- *   promise.then(function(greeting) {
- *     alert('Success: ' + greeting);
- *   }, function(reason) {
- *     alert('Failed: ' + reason);
- *   });
- * ```
- *
- * Note: progress/notify callbacks are not currently supported via the ES6-style interface.
- *
- * However, the more traditional CommonJS-style usage is still available, and documented below.
- *
- * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an
- * interface for interacting with an object that represents the result of an action that is
- * performed asynchronously, and may or may not be finished at any given point in time.
- *
- * From the perspective of dealing with error handling, deferred and promise APIs are to
- * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.
- *
- * ```js
- *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`
- *   // are available in the current lexical scope (they could have been injected or passed in).
- *
- *   function asyncGreet(name) {
- *     var deferred = $q.defer();
- *
- *     setTimeout(function() {
- *       deferred.notify('About to greet ' + name + '.');
- *
- *       if (okToGreet(name)) {
- *         deferred.resolve('Hello, ' + name + '!');
- *       } else {
- *         deferred.reject('Greeting ' + name + ' is not allowed.');
- *       }
- *     }, 1000);
- *
- *     return deferred.promise;
- *   }
- *
- *   var promise = asyncGreet('Robin Hood');
- *   promise.then(function(greeting) {
- *     alert('Success: ' + greeting);
- *   }, function(reason) {
- *     alert('Failed: ' + reason);
- *   }, function(update) {
- *     alert('Got notification: ' + update);
- *   });
- * ```
- *
- * At first it might not be obvious why this extra complexity is worth the trouble. The payoff
- * comes in the way of guarantees that promise and deferred APIs make, see
- * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.
- *
- * Additionally the promise api allows for composition that is very hard to do with the
- * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.
- * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the
- * section on serial or parallel joining of promises.
- *
- * # The Deferred API
- *
- * A new instance of deferred is constructed by calling `$q.defer()`.
- *
- * The purpose of the deferred object is to expose the associated Promise instance as well as APIs
- * that can be used for signaling the successful or unsuccessful completion, as well as the status
- * of the task.
- *
- * **Methods**
- *
- * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection
- *   constructed via `$q.reject`, the promise will be rejected instead.
- * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
- *   resolving it with a rejection constructed via `$q.reject`.
- * - `notify(value)` - provides updates on the status of the promise's execution. This may be called
- *   multiple times before the promise is either resolved or rejected.
- *
- * **Properties**
- *
- * - promise – `{Promise}` – promise object associated with this deferred.
- *
- *
- * # The Promise API
- *
- * A new promise instance is created when a deferred instance is created and can be retrieved by
- * calling `deferred.promise`.
- *
- * The purpose of the promise object is to allow for interested parties to get access to the result
- * of the deferred task when it completes.
- *
- * **Methods**
- *
- * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
- *   will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
- *   as soon as the result is available. The callbacks are called with a single argument: the result
- *   or rejection reason. Additionally, the notify callback may be called zero or more times to
- *   provide a progress indication, before the promise is resolved or rejected.
- *
- *   This method *returns a new promise* which is resolved or rejected via the return value of the
- *   `successCallback`, `errorCallback`. It also notifies via the return value of the
- *   `notifyCallback` method. The promise cannot be resolved or rejected from the notifyCallback
- *   method.
- *
- * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
- *
- * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise,
- *   but to do so without modifying the final value. This is useful to release resources or do some
- *   clean-up that needs to be done whether the promise was rejected or resolved. See the [full
- *   specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for
- *   more information.
- *
- * # Chaining promises
- *
- * Because calling the `then` method of a promise returns a new derived promise, it is easily
- * possible to create a chain of promises:
- *
- * ```js
- *   promiseB = promiseA.then(function(result) {
- *     return result + 1;
- *   });
- *
- *   // promiseB will be resolved immediately after promiseA is resolved and its value
- *   // will be the result of promiseA incremented by 1
- * ```
- *
- * It is possible to create chains of any length and since a promise can be resolved with another
- * promise (which will defer its resolution further), it is possible to pause/defer resolution of
- * the promises at any point in the chain. This makes it possible to implement powerful APIs like
- * $http's response interceptors.
- *
- *
- * # Differences between Kris Kowal's Q and $q
- *
- *  There are two main differences:
- *
- * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
- *   mechanism in angular, which means faster propagation of resolution or rejection into your
- *   models and avoiding unnecessary browser repaints, which would result in flickering UI.
- * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains
- *   all the important functionality needed for common async tasks.
- *
- *  # Testing
- *
- *  ```js
- *    it('should simulate promise', inject(function($q, $rootScope) {
- *      var deferred = $q.defer();
- *      var promise = deferred.promise;
- *      var resolvedValue;
- *
- *      promise.then(function(value) { resolvedValue = value; });
- *      expect(resolvedValue).toBeUndefined();
- *
- *      // Simulate resolving of promise
- *      deferred.resolve(123);
- *      // Note that the 'then' function does not get called synchronously.
- *      // This is because we want the promise API to always be async, whether or not
- *      // it got called synchronously or asynchronously.
- *      expect(resolvedValue).toBeUndefined();
- *
- *      // Propagate promise resolution to 'then' functions using $apply().
- *      $rootScope.$apply();
- *      expect(resolvedValue).toEqual(123);
- *    }));
- *  ```
- *
- * @param {function(function, function)} resolver Function which is responsible for resolving or
- *   rejecting the newly created promise. The first parameter is a function which resolves the
- *   promise, the second parameter is a function which rejects the promise.
- *
- * @returns {Promise} The newly created promise.
- */
-function $QProvider() {
-
-  this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
-    return qFactory(function(callback) {
-      $rootScope.$evalAsync(callback);
-    }, $exceptionHandler);
-  }];
-}
-
-function $$QProvider() {
-  this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) {
-    return qFactory(function(callback) {
-      $browser.defer(callback);
-    }, $exceptionHandler);
-  }];
-}
-
-/**
- * Constructs a promise manager.
- *
- * @param {function(function)} nextTick Function for executing functions in the next turn.
- * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for
- *     debugging purposes.
- * @returns {object} Promise manager.
- */
-function qFactory(nextTick, exceptionHandler) {
-  var $qMinErr = minErr('$q', TypeError);
-  function callOnce(self, resolveFn, rejectFn) {
-    var called = false;
-    function wrap(fn) {
-      return function(value) {
-        if (called) return;
-        called = true;
-        fn.call(self, value);
-      };
-    }
-
-    return [wrap(resolveFn), wrap(rejectFn)];
-  }
-
-  /**
-   * @ngdoc method
-   * @name ng.$q#defer
-   * @kind function
-   *
-   * @description
-   * Creates a `Deferred` object which represents a task which will finish in the future.
-   *
-   * @returns {Deferred} Returns a new instance of deferred.
-   */
-  var defer = function() {
-    return new Deferred();
-  };
-
-  function Promise() {
-    this.$$state = { status: 0 };
-  }
-
-  Promise.prototype = {
-    then: function(onFulfilled, onRejected, progressBack) {
-      var result = new Deferred();
-
-      this.$$state.pending = this.$$state.pending || [];
-      this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);
-      if (this.$$state.status > 0) scheduleProcessQueue(this.$$state);
-
-      return result.promise;
-    },
-
-    "catch": function(callback) {
-      return this.then(null, callback);
-    },
-
-    "finally": function(callback, progressBack) {
-      return this.then(function(value) {
-        return handleCallback(value, true, callback);
-      }, function(error) {
-        return handleCallback(error, false, callback);
-      }, progressBack);
-    }
-  };
-
-  //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native
-  function simpleBind(context, fn) {
-    return function(value) {
-      fn.call(context, value);
-    };
-  }
-
-  function processQueue(state) {
-    var fn, promise, pending;
-
-    pending = state.pending;
-    state.processScheduled = false;
-    state.pending = undefined;
-    for (var i = 0, ii = pending.length; i < ii; ++i) {
-      promise = pending[i][0];
-      fn = pending[i][state.status];
-      try {
-        if (isFunction(fn)) {
-          promise.resolve(fn(state.value));
-        } else if (state.status === 1) {
-          promise.resolve(state.value);
-        } else {
-          promise.reject(state.value);
-        }
-      } catch (e) {
-        promise.reject(e);
-        exceptionHandler(e);
-      }
-    }
-  }
-
-  function scheduleProcessQueue(state) {
-    if (state.processScheduled || !state.pending) return;
-    state.processScheduled = true;
-    nextTick(function() { processQueue(state); });
-  }
-
-  function Deferred() {
-    this.promise = new Promise();
-    //Necessary to support unbound execution :/
-    this.resolve = simpleBind(this, this.resolve);
-    this.reject = simpleBind(this, this.reject);
-    this.notify = simpleBind(this, this.notify);
-  }
-
-  Deferred.prototype = {
-    resolve: function(val) {
-      if (this.promise.$$state.status) return;
-      if (val === this.promise) {
-        this.$$reject($qMinErr(
-          'qcycle',
-          "Expected promise to be resolved with value other than itself '{0}'",
-          val));
-      }
-      else {
-        this.$$resolve(val);
-      }
-
-    },
-
-    $$resolve: function(val) {
-      var then, fns;
-
-      fns = callOnce(this, this.$$resolve, this.$$reject);
-      try {
-        if ((isObject(val) || isFunction(val))) then = val && val.then;
-        if (isFunction(then)) {
-          this.promise.$$state.status = -1;
-          then.call(val, fns[0], fns[1], this.notify);
-        } else {
-          this.promise.$$state.value = val;
-          this.promise.$$state.status = 1;
-          scheduleProcessQueue(this.promise.$$state);
-        }
-      } catch (e) {
-        fns[1](e);
-        exceptionHandler(e);
-      }
-    },
-
-    reject: function(reason) {
-      if (this.promise.$$state.status) return;
-      this.$$reject(reason);
-    },
-
-    $$reject: function(reason) {
-      this.promise.$$state.value = reason;
-      this.promise.$$state.status = 2;
-      scheduleProcessQueue(this.promise.$$state);
-    },
-
-    notify: function(progress) {
-      var callbacks = this.promise.$$state.pending;
-
-      if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) {
-        nextTick(function() {
-          var callback, result;
-          for (var i = 0, ii = callbacks.length; i < ii; i++) {
-            result = callbacks[i][0];
-            callback = callbacks[i][3];
-            try {
-              result.notify(isFunction(callback) ? callback(progress) : progress);
-            } catch (e) {
-              exceptionHandler(e);
-            }
-          }
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#reject
-   * @kind function
-   *
-   * @description
-   * Creates a promise that is resolved as rejected with the specified `reason`. This api should be
-   * used to forward rejection in a chain of promises. If you are dealing with the last promise in
-   * a promise chain, you don't need to worry about it.
-   *
-   * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of
-   * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via
-   * a promise error callback and you want to forward the error to the promise derived from the
-   * current promise, you have to "rethrow" the error by returning a rejection constructed via
-   * `reject`.
-   *
-   * ```js
-   *   promiseB = promiseA.then(function(result) {
-   *     // success: do something and resolve promiseB
-   *     //          with the old or a new result
-   *     return result;
-   *   }, function(reason) {
-   *     // error: handle the error if possible and
-   *     //        resolve promiseB with newPromiseOrValue,
-   *     //        otherwise forward the rejection to promiseB
-   *     if (canHandle(reason)) {
-   *      // handle the error and recover
-   *      return newPromiseOrValue;
-   *     }
-   *     return $q.reject(reason);
-   *   });
-   * ```
-   *
-   * @param {*} reason Constant, message, exception or an object representing the rejection reason.
-   * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.
-   */
-  var reject = function(reason) {
-    var result = new Deferred();
-    result.reject(reason);
-    return result.promise;
-  };
-
-  var makePromise = function makePromise(value, resolved) {
-    var result = new Deferred();
-    if (resolved) {
-      result.resolve(value);
-    } else {
-      result.reject(value);
-    }
-    return result.promise;
-  };
-
-  var handleCallback = function handleCallback(value, isResolved, callback) {
-    var callbackOutput = null;
-    try {
-      if (isFunction(callback)) callbackOutput = callback();
-    } catch (e) {
-      return makePromise(e, false);
-    }
-    if (isPromiseLike(callbackOutput)) {
-      return callbackOutput.then(function() {
-        return makePromise(value, isResolved);
-      }, function(error) {
-        return makePromise(error, false);
-      });
-    } else {
-      return makePromise(value, isResolved);
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#when
-   * @kind function
-   *
-   * @description
-   * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.
-   * This is useful when you are dealing with an object that might or might not be a promise, or if
-   * the promise comes from a source that can't be trusted.
-   *
-   * @param {*} value Value or a promise
-   * @returns {Promise} Returns a promise of the passed value or promise
-   */
-
-
-  var when = function(value, callback, errback, progressBack) {
-    var result = new Deferred();
-    result.resolve(value);
-    return result.promise.then(callback, errback, progressBack);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#all
-   * @kind function
-   *
-   * @description
-   * Combines multiple promises into a single promise that is resolved when all of the input
-   * promises are resolved.
-   *
-   * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.
-   * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,
-   *   each value corresponding to the promise at the same index/key in the `promises` array/hash.
-   *   If any of the promises is resolved with a rejection, this resulting promise will be rejected
-   *   with the same rejection value.
-   */
-
-  function all(promises) {
-    var deferred = new Deferred(),
-        counter = 0,
-        results = isArray(promises) ? [] : {};
-
-    forEach(promises, function(promise, key) {
-      counter++;
-      when(promise).then(function(value) {
-        if (results.hasOwnProperty(key)) return;
-        results[key] = value;
-        if (!(--counter)) deferred.resolve(results);
-      }, function(reason) {
-        if (results.hasOwnProperty(key)) return;
-        deferred.reject(reason);
-      });
-    });
-
-    if (counter === 0) {
-      deferred.resolve(results);
-    }
-
-    return deferred.promise;
-  }
-
-  var $Q = function Q(resolver) {
-    if (!isFunction(resolver)) {
-      throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver);
-    }
-
-    if (!(this instanceof Q)) {
-      // More useful when $Q is the Promise itself.
-      return new Q(resolver);
-    }
-
-    var deferred = new Deferred();
-
-    function resolveFn(value) {
-      deferred.resolve(value);
-    }
-
-    function rejectFn(reason) {
-      deferred.reject(reason);
-    }
-
-    resolver(resolveFn, rejectFn);
-
-    return deferred.promise;
-  };
-
-  $Q.defer = defer;
-  $Q.reject = reject;
-  $Q.when = when;
-  $Q.all = all;
-
-  return $Q;
-}
-
-function $$RAFProvider() { //rAF
-  this.$get = ['$window', '$timeout', function($window, $timeout) {
-    var requestAnimationFrame = $window.requestAnimationFrame ||
-                                $window.webkitRequestAnimationFrame;
-
-    var cancelAnimationFrame = $window.cancelAnimationFrame ||
-                               $window.webkitCancelAnimationFrame ||
-                               $window.webkitCancelRequestAnimationFrame;
-
-    var rafSupported = !!requestAnimationFrame;
-    var raf = rafSupported
-      ? function(fn) {
-          var id = requestAnimationFrame(fn);
-          return function() {
-            cancelAnimationFrame(id);
-          };
-        }
-      : function(fn) {
-          var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666
-          return function() {
-            $timeout.cancel(timer);
-          };
-        };
-
-    raf.supported = rafSupported;
-
-    return raf;
-  }];
-}
-
-/**
- * DESIGN NOTES
- *
- * The design decisions behind the scope are heavily favored for speed and memory consumption.
- *
- * The typical use of scope is to watch the expressions, which most of the time return the same
- * value as last time so we optimize the operation.
- *
- * Closures construction is expensive in terms of speed as well as memory:
- *   - No closures, instead use prototypical inheritance for API
- *   - Internal state needs to be stored on scope directly, which means that private state is
- *     exposed as $$____ properties
- *
- * Loop operations are optimized by using while(count--) { ... }
- *   - this means that in order to keep the same order of execution as addition we have to add
- *     items to the array at the beginning (unshift) instead of at the end (push)
- *
- * Child scopes are created and removed often
- *   - Using an array would be slow since inserts in middle are expensive so we use linked list
- *
- * There are few watches then a lot of observers. This is why you don't want the observer to be
- * implemented in the same way as watch. Watch requires return of initialization function which
- * are expensive to construct.
- */
-
-
-/**
- * @ngdoc provider
- * @name $rootScopeProvider
- * @description
- *
- * Provider for the $rootScope service.
- */
-
-/**
- * @ngdoc method
- * @name $rootScopeProvider#digestTtl
- * @description
- *
- * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and
- * assuming that the model is unstable.
- *
- * The current default is 10 iterations.
- *
- * In complex applications it's possible that the dependencies between `$watch`s will result in
- * several digest iterations. However if an application needs more than the default 10 digest
- * iterations for its model to stabilize then you should investigate what is causing the model to
- * continuously change during the digest.
- *
- * Increasing the TTL could have performance implications, so you should not change it without
- * proper justification.
- *
- * @param {number} limit The number of digest iterations.
- */
-
-
-/**
- * @ngdoc service
- * @name $rootScope
- * @description
- *
- * Every application has a single root {@link ng.$rootScope.Scope scope}.
- * All other scopes are descendant scopes of the root scope. Scopes provide separation
- * between the model and the view, via a mechanism for watching the model for changes.
- * They also provide an event emission/broadcast and subscription facility. See the
- * {@link guide/scope developer guide on scopes}.
- */
-function $RootScopeProvider() {
-  var TTL = 10;
-  var $rootScopeMinErr = minErr('$rootScope');
-  var lastDirtyWatch = null;
-  var applyAsyncId = null;
-
-  this.digestTtl = function(value) {
-    if (arguments.length) {
-      TTL = value;
-    }
-    return TTL;
-  };
-
-  this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
-      function($injector, $exceptionHandler, $parse, $browser) {
-
-    /**
-     * @ngdoc type
-     * @name $rootScope.Scope
-     *
-     * @description
-     * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the
-     * {@link auto.$injector $injector}. Child scopes are created using the
-     * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when
-     * compiled HTML template is executed.)
-     *
-     * Here is a simple scope snippet to show how you can interact with the scope.
-     * ```html
-     * <file src="./test/ng/rootScopeSpec.js" tag="docs1" />
-     * ```
-     *
-     * # Inheritance
-     * A scope can inherit from a parent scope, as in this example:
-     * ```js
-         var parent = $rootScope;
-         var child = parent.$new();
-
-         parent.salutation = "Hello";
-         expect(child.salutation).toEqual('Hello');
-
-         child.salutation = "Welcome";
-         expect(child.salutation).toEqual('Welcome');
-         expect(parent.salutation).toEqual('Hello');
-     * ```
-     *
-     * When interacting with `Scope` in tests, additional helper methods are available on the
-     * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional
-     * details.
-     *
-     *
-     * @param {Object.<string, function()>=} providers Map of service factory which need to be
-     *                                       provided for the current scope. Defaults to {@link ng}.
-     * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should
-     *                              append/override services provided by `providers`. This is handy
-     *                              when unit-testing and having the need to override a default
-     *                              service.
-     * @returns {Object} Newly created scope.
-     *
-     */
-    function Scope() {
-      this.$id = nextUid();
-      this.$$phase = this.$parent = this.$$watchers =
-                     this.$$nextSibling = this.$$prevSibling =
-                     this.$$childHead = this.$$childTail = null;
-      this.$root = this;
-      this.$$destroyed = false;
-      this.$$listeners = {};
-      this.$$listenerCount = {};
-      this.$$isolateBindings = null;
-    }
-
-    /**
-     * @ngdoc property
-     * @name $rootScope.Scope#$id
-     *
-     * @description
-     * Unique scope ID (monotonically increasing) useful for debugging.
-     */
-
-     /**
-      * @ngdoc property
-      * @name $rootScope.Scope#$parent
-      *
-      * @description
-      * Reference to the parent scope.
-      */
-
-      /**
-       * @ngdoc property
-       * @name $rootScope.Scope#$root
-       *
-       * @description
-       * Reference to the root scope.
-       */
-
-    Scope.prototype = {
-      constructor: Scope,
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$new
-       * @kind function
-       *
-       * @description
-       * Creates a new child {@link ng.$rootScope.Scope scope}.
-       *
-       * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.
-       * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
-       *
-       * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is
-       * desired for the scope and its child scopes to be permanently detached from the parent and
-       * thus stop participating in model change detection and listener notification by invoking.
-       *
-       * @param {boolean} isolate If true, then the scope does not prototypically inherit from the
-       *         parent scope. The scope is isolated, as it can not see parent scope properties.
-       *         When creating widgets, it is useful for the widget to not accidentally read parent
-       *         state.
-       *
-       * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent`
-       *                              of the newly created scope. Defaults to `this` scope if not provided.
-       *                              This is used when creating a transclude scope to correctly place it
-       *                              in the scope hierarchy while maintaining the correct prototypical
-       *                              inheritance.
-       *
-       * @returns {Object} The newly created child scope.
-       *
-       */
-      $new: function(isolate, parent) {
-        var child;
-
-        parent = parent || this;
-
-        if (isolate) {
-          child = new Scope();
-          child.$root = this.$root;
-        } else {
-          // Only create a child scope class if somebody asks for one,
-          // but cache it to allow the VM to optimize lookups.
-          if (!this.$$ChildScope) {
-            this.$$ChildScope = function ChildScope() {
-              this.$$watchers = this.$$nextSibling =
-                  this.$$childHead = this.$$childTail = null;
-              this.$$listeners = {};
-              this.$$listenerCount = {};
-              this.$id = nextUid();
-              this.$$ChildScope = null;
-            };
-            this.$$ChildScope.prototype = this;
-          }
-          child = new this.$$ChildScope();
-        }
-        child.$parent = parent;
-        child.$$prevSibling = parent.$$childTail;
-        if (parent.$$childHead) {
-          parent.$$childTail.$$nextSibling = child;
-          parent.$$childTail = child;
-        } else {
-          parent.$$childHead = parent.$$childTail = child;
-        }
-
-        // When the new scope is not isolated or we inherit from `this`, and
-        // the parent scope is destroyed, the property `$$destroyed` is inherited
-        // prototypically. In all other cases, this property needs to be set
-        // when the parent scope is destroyed.
-        // The listener needs to be added after the parent is set
-        if (isolate || parent != this) child.$on('$destroy', destroyChild);
-
-        return child;
-
-        function destroyChild() {
-          child.$$destroyed = true;
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watch
-       * @kind function
-       *
-       * @description
-       * Registers a `listener` callback to be executed whenever the `watchExpression` changes.
-       *
-       * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest
-       *   $digest()} and should return the value that will be watched. (Since
-       *   {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the
-       *   `watchExpression` can execute multiple times per
-       *   {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)
-       * - The `listener` is called only when the value from the current `watchExpression` and the
-       *   previous call to `watchExpression` are not equal (with the exception of the initial run,
-       *   see below). Inequality is determined according to reference inequality,
-       *   [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
-       *    via the `!==` Javascript operator, unless `objectEquality == true`
-       *   (see next point)
-       * - When `objectEquality == true`, inequality of the `watchExpression` is determined
-       *   according to the {@link angular.equals} function. To save the value of the object for
-       *   later comparison, the {@link angular.copy} function is used. This therefore means that
-       *   watching complex objects will have adverse memory and performance implications.
-       * - The watch `listener` may change the model, which may trigger other `listener`s to fire.
-       *   This is achieved by rerunning the watchers until no changes are detected. The rerun
-       *   iteration limit is 10 to prevent an infinite loop deadlock.
-       *
-       *
-       * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,
-       * you can register a `watchExpression` function with no `listener`. (Since `watchExpression`
-       * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a
-       * change is detected, be prepared for multiple calls to your listener.)
-       *
-       * After a watcher is registered with the scope, the `listener` fn is called asynchronously
-       * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the
-       * watcher. In rare cases, this is undesirable because the listener is called when the result
-       * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
-       * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
-       * listener was called due to initialization.
-       *
-       *
-       *
-       * # Example
-       * ```js
-           // let's assume that scope was dependency injected as the $rootScope
-           var scope = $rootScope;
-           scope.name = 'misko';
-           scope.counter = 0;
-
-           expect(scope.counter).toEqual(0);
-           scope.$watch('name', function(newValue, oldValue) {
-             scope.counter = scope.counter + 1;
-           });
-           expect(scope.counter).toEqual(0);
-
-           scope.$digest();
-           // the listener is always called during the first $digest loop after it was registered
-           expect(scope.counter).toEqual(1);
-
-           scope.$digest();
-           // but now it will not be called unless the value changes
-           expect(scope.counter).toEqual(1);
-
-           scope.name = 'adam';
-           scope.$digest();
-           expect(scope.counter).toEqual(2);
-
-
-
-           // Using a function as a watchExpression
-           var food;
-           scope.foodCounter = 0;
-           expect(scope.foodCounter).toEqual(0);
-           scope.$watch(
-             // This function returns the value being watched. It is called for each turn of the $digest loop
-             function() { return food; },
-             // This is the change listener, called when the value returned from the above function changes
-             function(newValue, oldValue) {
-               if ( newValue !== oldValue ) {
-                 // Only increment the counter if the value changed
-                 scope.foodCounter = scope.foodCounter + 1;
-               }
-             }
-           );
-           // No digest has been run so the counter will be zero
-           expect(scope.foodCounter).toEqual(0);
-
-           // Run the digest but since food has not changed count will still be zero
-           scope.$digest();
-           expect(scope.foodCounter).toEqual(0);
-
-           // Update food and run digest.  Now the counter will increment
-           food = 'cheeseburger';
-           scope.$digest();
-           expect(scope.foodCounter).toEqual(1);
-
-       * ```
-       *
-       *
-       *
-       * @param {(function()|string)} watchExpression Expression that is evaluated on each
-       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers
-       *    a call to the `listener`.
-       *
-       *    - `string`: Evaluated as {@link guide/expression expression}
-       *    - `function(scope)`: called with current `scope` as a parameter.
-       * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value
-       *    of `watchExpression` changes.
-       *
-       *    - `newVal` contains the current value of the `watchExpression`
-       *    - `oldVal` contains the previous value of the `watchExpression`
-       *    - `scope` refers to the current scope
-       * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
-       *     comparing for reference equality.
-       * @returns {function()} Returns a deregistration function for this listener.
-       */
-      $watch: function(watchExp, listener, objectEquality) {
-        var get = $parse(watchExp);
-
-        if (get.$$watchDelegate) {
-          return get.$$watchDelegate(this, listener, objectEquality, get);
-        }
-        var scope = this,
-            array = scope.$$watchers,
-            watcher = {
-              fn: listener,
-              last: initWatchVal,
-              get: get,
-              exp: watchExp,
-              eq: !!objectEquality
-            };
-
-        lastDirtyWatch = null;
-
-        if (!isFunction(listener)) {
-          watcher.fn = noop;
-        }
-
-        if (!array) {
-          array = scope.$$watchers = [];
-        }
-        // we use unshift since we use a while loop in $digest for speed.
-        // the while loop reads in reverse order.
-        array.unshift(watcher);
-
-        return function deregisterWatch() {
-          arrayRemove(array, watcher);
-          lastDirtyWatch = null;
-        };
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watchGroup
-       * @kind function
-       *
-       * @description
-       * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`.
-       * If any one expression in the collection changes the `listener` is executed.
-       *
-       * - The items in the `watchExpressions` array are observed via standard $watch operation and are examined on every
-       *   call to $digest() to see if any items changes.
-       * - The `listener` is called whenever any expression in the `watchExpressions` array changes.
-       *
-       * @param {Array.<string|Function(scope)>} watchExpressions Array of expressions that will be individually
-       * watched using {@link ng.$rootScope.Scope#$watch $watch()}
-       *
-       * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any
-       *    expression in `watchExpressions` changes
-       *    The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching
-       *    those of `watchExpression`
-       *    and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching
-       *    those of `watchExpression`
-       *    The `scope` refers to the current scope.
-       * @returns {function()} Returns a de-registration function for all listeners.
-       */
-      $watchGroup: function(watchExpressions, listener) {
-        var oldValues = new Array(watchExpressions.length);
-        var newValues = new Array(watchExpressions.length);
-        var deregisterFns = [];
-        var self = this;
-        var changeReactionScheduled = false;
-        var firstRun = true;
-
-        if (!watchExpressions.length) {
-          // No expressions means we call the listener ASAP
-          var shouldCall = true;
-          self.$evalAsync(function() {
-            if (shouldCall) listener(newValues, newValues, self);
-          });
-          return function deregisterWatchGroup() {
-            shouldCall = false;
-          };
-        }
-
-        if (watchExpressions.length === 1) {
-          // Special case size of one
-          return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) {
-            newValues[0] = value;
-            oldValues[0] = oldValue;
-            listener(newValues, (value === oldValue) ? newValues : oldValues, scope);
-          });
-        }
-
-        forEach(watchExpressions, function(expr, i) {
-          var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) {
-            newValues[i] = value;
-            oldValues[i] = oldValue;
-            if (!changeReactionScheduled) {
-              changeReactionScheduled = true;
-              self.$evalAsync(watchGroupAction);
-            }
-          });
-          deregisterFns.push(unwatchFn);
-        });
-
-        function watchGroupAction() {
-          changeReactionScheduled = false;
-
-          if (firstRun) {
-            firstRun = false;
-            listener(newValues, newValues, self);
-          } else {
-            listener(newValues, oldValues, self);
-          }
-        }
-
-        return function deregisterWatchGroup() {
-          while (deregisterFns.length) {
-            deregisterFns.shift()();
-          }
-        };
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watchCollection
-       * @kind function
-       *
-       * @description
-       * Shallow watches the properties of an object and fires whenever any of the properties change
-       * (for arrays, this implies watching the array items; for object maps, this implies watching
-       * the properties). If a change is detected, the `listener` callback is fired.
-       *
-       * - The `obj` collection is observed via standard $watch operation and is examined on every
-       *   call to $digest() to see if any items have been added, removed, or moved.
-       * - The `listener` is called whenever anything within the `obj` has changed. Examples include
-       *   adding, removing, and moving items belonging to an object or array.
-       *
-       *
-       * # Example
-       * ```js
-          $scope.names = ['igor', 'matias', 'misko', 'james'];
-          $scope.dataCount = 4;
-
-          $scope.$watchCollection('names', function(newNames, oldNames) {
-            $scope.dataCount = newNames.length;
-          });
-
-          expect($scope.dataCount).toEqual(4);
-          $scope.$digest();
-
-          //still at 4 ... no changes
-          expect($scope.dataCount).toEqual(4);
-
-          $scope.names.pop();
-          $scope.$digest();
-
-          //now there's been a change
-          expect($scope.dataCount).toEqual(3);
-       * ```
-       *
-       *
-       * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The
-       *    expression value should evaluate to an object or an array which is observed on each
-       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the
-       *    collection will trigger a call to the `listener`.
-       *
-       * @param {function(newCollection, oldCollection, scope)} listener a callback function called
-       *    when a change is detected.
-       *    - The `newCollection` object is the newly modified data obtained from the `obj` expression
-       *    - The `oldCollection` object is a copy of the former collection data.
-       *      Due to performance considerations, the`oldCollection` value is computed only if the
-       *      `listener` function declares two or more arguments.
-       *    - The `scope` argument refers to the current scope.
-       *
-       * @returns {function()} Returns a de-registration function for this listener. When the
-       *    de-registration function is executed, the internal watch operation is terminated.
-       */
-      $watchCollection: function(obj, listener) {
-        $watchCollectionInterceptor.$stateful = true;
-
-        var self = this;
-        // the current value, updated on each dirty-check run
-        var newValue;
-        // a shallow copy of the newValue from the last dirty-check run,
-        // updated to match newValue during dirty-check run
-        var oldValue;
-        // a shallow copy of the newValue from when the last change happened
-        var veryOldValue;
-        // only track veryOldValue if the listener is asking for it
-        var trackVeryOldValue = (listener.length > 1);
-        var changeDetected = 0;
-        var changeDetector = $parse(obj, $watchCollectionInterceptor);
-        var internalArray = [];
-        var internalObject = {};
-        var initRun = true;
-        var oldLength = 0;
-
-        function $watchCollectionInterceptor(_value) {
-          newValue = _value;
-          var newLength, key, bothNaN, newItem, oldItem;
-
-          // If the new value is undefined, then return undefined as the watch may be a one-time watch
-          if (isUndefined(newValue)) return;
-
-          if (!isObject(newValue)) { // if primitive
-            if (oldValue !== newValue) {
-              oldValue = newValue;
-              changeDetected++;
-            }
-          } else if (isArrayLike(newValue)) {
-            if (oldValue !== internalArray) {
-              // we are transitioning from something which was not an array into array.
-              oldValue = internalArray;
-              oldLength = oldValue.length = 0;
-              changeDetected++;
-            }
-
-            newLength = newValue.length;
-
-            if (oldLength !== newLength) {
-              // if lengths do not match we need to trigger change notification
-              changeDetected++;
-              oldValue.length = oldLength = newLength;
-            }
-            // copy the items to oldValue and look for changes.
-            for (var i = 0; i < newLength; i++) {
-              oldItem = oldValue[i];
-              newItem = newValue[i];
-
-              bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
-              if (!bothNaN && (oldItem !== newItem)) {
-                changeDetected++;
-                oldValue[i] = newItem;
-              }
-            }
-          } else {
-            if (oldValue !== internalObject) {
-              // we are transitioning from something which was not an object into object.
-              oldValue = internalObject = {};
-              oldLength = 0;
-              changeDetected++;
-            }
-            // copy the items to oldValue and look for changes.
-            newLength = 0;
-            for (key in newValue) {
-              if (newValue.hasOwnProperty(key)) {
-                newLength++;
-                newItem = newValue[key];
-                oldItem = oldValue[key];
-
-                if (key in oldValue) {
-                  bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
-                  if (!bothNaN && (oldItem !== newItem)) {
-                    changeDetected++;
-                    oldValue[key] = newItem;
-                  }
-                } else {
-                  oldLength++;
-                  oldValue[key] = newItem;
-                  changeDetected++;
-                }
-              }
-            }
-            if (oldLength > newLength) {
-              // we used to have more keys, need to find them and destroy them.
-              changeDetected++;
-              for (key in oldValue) {
-                if (!newValue.hasOwnProperty(key)) {
-                  oldLength--;
-                  delete oldValue[key];
-                }
-              }
-            }
-          }
-          return changeDetected;
-        }
-
-        function $watchCollectionAction() {
-          if (initRun) {
-            initRun = false;
-            listener(newValue, newValue, self);
-          } else {
-            listener(newValue, veryOldValue, self);
-          }
-
-          // make a copy for the next time a collection is changed
-          if (trackVeryOldValue) {
-            if (!isObject(newValue)) {
-              //primitive
-              veryOldValue = newValue;
-            } else if (isArrayLike(newValue)) {
-              veryOldValue = new Array(newValue.length);
-              for (var i = 0; i < newValue.length; i++) {
-                veryOldValue[i] = newValue[i];
-              }
-            } else { // if object
-              veryOldValue = {};
-              for (var key in newValue) {
-                if (hasOwnProperty.call(newValue, key)) {
-                  veryOldValue[key] = newValue[key];
-                }
-              }
-            }
-          }
-        }
-
-        return this.$watch(changeDetector, $watchCollectionAction);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$digest
-       * @kind function
-       *
-       * @description
-       * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and
-       * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change
-       * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}
-       * until no more listeners are firing. This means that it is possible to get into an infinite
-       * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
-       * iterations exceeds 10.
-       *
-       * Usually, you don't call `$digest()` directly in
-       * {@link ng.directive:ngController controllers} or in
-       * {@link ng.$compileProvider#directive directives}.
-       * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within
-       * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`.
-       *
-       * If you want to be notified whenever `$digest()` is called,
-       * you can register a `watchExpression` function with
-       * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.
-       *
-       * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
-       *
-       * # Example
-       * ```js
-           var scope = ...;
-           scope.name = 'misko';
-           scope.counter = 0;
-
-           expect(scope.counter).toEqual(0);
-           scope.$watch('name', function(newValue, oldValue) {
-             scope.counter = scope.counter + 1;
-           });
-           expect(scope.counter).toEqual(0);
-
-           scope.$digest();
-           // the listener is always called during the first $digest loop after it was registered
-           expect(scope.counter).toEqual(1);
-
-           scope.$digest();
-           // but now it will not be called unless the value changes
-           expect(scope.counter).toEqual(1);
-
-           scope.name = 'adam';
-           scope.$digest();
-           expect(scope.counter).toEqual(2);
-       * ```
-       *
-       */
-      $digest: function() {
-        var watch, value, last,
-            watchers,
-            length,
-            dirty, ttl = TTL,
-            next, current, target = this,
-            watchLog = [],
-            logIdx, logMsg, asyncTask;
-
-        beginPhase('$digest');
-        // Check for changes to browser url that happened in sync before the call to $digest
-        $browser.$$checkUrlChange();
-
-        if (this === $rootScope && applyAsyncId !== null) {
-          // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then
-          // cancel the scheduled $apply and flush the queue of expressions to be evaluated.
-          $browser.defer.cancel(applyAsyncId);
-          flushApplyAsync();
-        }
-
-        lastDirtyWatch = null;
-
-        do { // "while dirty" loop
-          dirty = false;
-          current = target;
-
-          while (asyncQueue.length) {
-            try {
-              asyncTask = asyncQueue.shift();
-              asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-            lastDirtyWatch = null;
-          }
-
-          traverseScopesLoop:
-          do { // "traverse the scopes" loop
-            if ((watchers = current.$$watchers)) {
-              // process our watches
-              length = watchers.length;
-              while (length--) {
-                try {
-                  watch = watchers[length];
-                  // Most common watches are on primitives, in which case we can short
-                  // circuit it with === operator, only when === fails do we use .equals
-                  if (watch) {
-                    if ((value = watch.get(current)) !== (last = watch.last) &&
-                        !(watch.eq
-                            ? equals(value, last)
-                            : (typeof value === 'number' && typeof last === 'number'
-                               && isNaN(value) && isNaN(last)))) {
-                      dirty = true;
-                      lastDirtyWatch = watch;
-                      watch.last = watch.eq ? copy(value, null) : value;
-                      watch.fn(value, ((last === initWatchVal) ? value : last), current);
-                      if (ttl < 5) {
-                        logIdx = 4 - ttl;
-                        if (!watchLog[logIdx]) watchLog[logIdx] = [];
-                        watchLog[logIdx].push({
-                          msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp,
-                          newVal: value,
-                          oldVal: last
-                        });
-                      }
-                    } else if (watch === lastDirtyWatch) {
-                      // If the most recently dirty watcher is now clean, short circuit since the remaining watchers
-                      // have already been tested.
-                      dirty = false;
-                      break traverseScopesLoop;
-                    }
-                  }
-                } catch (e) {
-                  $exceptionHandler(e);
-                }
-              }
-            }
-
-            // Insanity Warning: scope depth-first traversal
-            // yes, this code is a bit crazy, but it works and we have tests to prove it!
-            // this piece should be kept in sync with the traversal in $broadcast
-            if (!(next = (current.$$childHead ||
-                (current !== target && current.$$nextSibling)))) {
-              while (current !== target && !(next = current.$$nextSibling)) {
-                current = current.$parent;
-              }
-            }
-          } while ((current = next));
-
-          // `break traverseScopesLoop;` takes us to here
-
-          if ((dirty || asyncQueue.length) && !(ttl--)) {
-            clearPhase();
-            throw $rootScopeMinErr('infdig',
-                '{0} $digest() iterations reached. Aborting!\n' +
-                'Watchers fired in the last 5 iterations: {1}',
-                TTL, watchLog);
-          }
-
-        } while (dirty || asyncQueue.length);
-
-        clearPhase();
-
-        while (postDigestQueue.length) {
-          try {
-            postDigestQueue.shift()();
-          } catch (e) {
-            $exceptionHandler(e);
-          }
-        }
-      },
-
-
-      /**
-       * @ngdoc event
-       * @name $rootScope.Scope#$destroy
-       * @eventType broadcast on scope being destroyed
-       *
-       * @description
-       * Broadcasted when a scope and its children are being destroyed.
-       *
-       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
-       * clean up DOM bindings before an element is removed from the DOM.
-       */
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$destroy
-       * @kind function
-       *
-       * @description
-       * Removes the current scope (and all of its children) from the parent scope. Removal implies
-       * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer
-       * propagate to the current scope and its children. Removal also implies that the current
-       * scope is eligible for garbage collection.
-       *
-       * The `$destroy()` is usually used by directives such as
-       * {@link ng.directive:ngRepeat ngRepeat} for managing the
-       * unrolling of the loop.
-       *
-       * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.
-       * Application code can register a `$destroy` event handler that will give it a chance to
-       * perform any necessary cleanup.
-       *
-       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
-       * clean up DOM bindings before an element is removed from the DOM.
-       */
-      $destroy: function() {
-        // we can't destroy the root scope or a scope that has been already destroyed
-        if (this.$$destroyed) return;
-        var parent = this.$parent;
-
-        this.$broadcast('$destroy');
-        this.$$destroyed = true;
-        if (this === $rootScope) return;
-
-        for (var eventName in this.$$listenerCount) {
-          decrementListenerCount(this, this.$$listenerCount[eventName], eventName);
-        }
-
-        // sever all the references to parent scopes (after this cleanup, the current scope should
-        // not be retained by any of our references and should be eligible for garbage collection)
-        if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
-        if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
-        if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
-        if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;
-
-        // Disable listeners, watchers and apply/digest methods
-        this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;
-        this.$on = this.$watch = this.$watchGroup = function() { return noop; };
-        this.$$listeners = {};
-
-        // All of the code below is bogus code that works around V8's memory leak via optimized code
-        // and inline caches.
-        //
-        // see:
-        // - https://code.google.com/p/v8/issues/detail?id=2073#c26
-        // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909
-        // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451
-
-        this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =
-            this.$$childTail = this.$root = this.$$watchers = null;
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$eval
-       * @kind function
-       *
-       * @description
-       * Executes the `expression` on the current scope and returns the result. Any exceptions in
-       * the expression are propagated (uncaught). This is useful when evaluating Angular
-       * expressions.
-       *
-       * # Example
-       * ```js
-           var scope = ng.$rootScope.Scope();
-           scope.a = 1;
-           scope.b = 2;
-
-           expect(scope.$eval('a+b')).toEqual(3);
-           expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
-       * ```
-       *
-       * @param {(string|function())=} expression An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in  {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with the current `scope` parameter.
-       *
-       * @param {(object)=} locals Local variables object, useful for overriding values in scope.
-       * @returns {*} The result of evaluating the expression.
-       */
-      $eval: function(expr, locals) {
-        return $parse(expr)(this, locals);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$evalAsync
-       * @kind function
-       *
-       * @description
-       * Executes the expression on the current scope at a later point in time.
-       *
-       * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only
-       * that:
-       *
-       *   - it will execute after the function that scheduled the evaluation (preferably before DOM
-       *     rendering).
-       *   - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
-       *     `expression` execution.
-       *
-       * Any exceptions from the execution of the expression are forwarded to the
-       * {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle
-       * will be scheduled. However, it is encouraged to always call code that changes the model
-       * from within an `$apply` call. That includes code evaluated via `$evalAsync`.
-       *
-       * @param {(string|function())=} expression An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with the current `scope` parameter.
-       *
-       * @param {(object)=} locals Local variables object, useful for overriding values in scope.
-       */
-      $evalAsync: function(expr, locals) {
-        // if we are outside of an $digest loop and this is the first time we are scheduling async
-        // task also schedule async auto-flush
-        if (!$rootScope.$$phase && !asyncQueue.length) {
-          $browser.defer(function() {
-            if (asyncQueue.length) {
-              $rootScope.$digest();
-            }
-          });
-        }
-
-        asyncQueue.push({scope: this, expression: expr, locals: locals});
-      },
-
-      $$postDigest: function(fn) {
-        postDigestQueue.push(fn);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$apply
-       * @kind function
-       *
-       * @description
-       * `$apply()` is used to execute an expression in angular from outside of the angular
-       * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
-       * Because we are calling into the angular framework we need to perform proper scope life
-       * cycle of {@link ng.$exceptionHandler exception handling},
-       * {@link ng.$rootScope.Scope#$digest executing watches}.
-       *
-       * ## Life cycle
-       *
-       * # Pseudo-Code of `$apply()`
-       * ```js
-           function $apply(expr) {
-             try {
-               return $eval(expr);
-             } catch (e) {
-               $exceptionHandler(e);
-             } finally {
-               $root.$digest();
-             }
-           }
-       * ```
-       *
-       *
-       * Scope's `$apply()` method transitions through the following stages:
-       *
-       * 1. The {@link guide/expression expression} is executed using the
-       *    {@link ng.$rootScope.Scope#$eval $eval()} method.
-       * 2. Any exceptions from the execution of the expression are forwarded to the
-       *    {@link ng.$exceptionHandler $exceptionHandler} service.
-       * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the
-       *    expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.
-       *
-       *
-       * @param {(string|function())=} exp An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with current `scope` parameter.
-       *
-       * @returns {*} The result of evaluating the expression.
-       */
-      $apply: function(expr) {
-        try {
-          beginPhase('$apply');
-          return this.$eval(expr);
-        } catch (e) {
-          $exceptionHandler(e);
-        } finally {
-          clearPhase();
-          try {
-            $rootScope.$digest();
-          } catch (e) {
-            $exceptionHandler(e);
-            throw e;
-          }
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$applyAsync
-       * @kind function
-       *
-       * @description
-       * Schedule the invocation of $apply to occur at a later time. The actual time difference
-       * varies across browsers, but is typically around ~10 milliseconds.
-       *
-       * This can be used to queue up multiple expressions which need to be evaluated in the same
-       * digest.
-       *
-       * @param {(string|function())=} exp An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with current `scope` parameter.
-       */
-      $applyAsync: function(expr) {
-        var scope = this;
-        expr && applyAsyncQueue.push($applyAsyncExpression);
-        scheduleApplyAsync();
-
-        function $applyAsyncExpression() {
-          scope.$eval(expr);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$on
-       * @kind function
-       *
-       * @description
-       * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for
-       * discussion of event life cycle.
-       *
-       * The event listener function format is: `function(event, args...)`. The `event` object
-       * passed into the listener has the following attributes:
-       *
-       *   - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or
-       *     `$broadcast`-ed.
-       *   - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the
-       *     event propagates through the scope hierarchy, this property is set to null.
-       *   - `name` - `{string}`: name of the event.
-       *   - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel
-       *     further event propagation (available only for events that were `$emit`-ed).
-       *   - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag
-       *     to true.
-       *   - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.
-       *
-       * @param {string} name Event name to listen on.
-       * @param {function(event, ...args)} listener Function to call when the event is emitted.
-       * @returns {function()} Returns a deregistration function for this listener.
-       */
-      $on: function(name, listener) {
-        var namedListeners = this.$$listeners[name];
-        if (!namedListeners) {
-          this.$$listeners[name] = namedListeners = [];
-        }
-        namedListeners.push(listener);
-
-        var current = this;
-        do {
-          if (!current.$$listenerCount[name]) {
-            current.$$listenerCount[name] = 0;
-          }
-          current.$$listenerCount[name]++;
-        } while ((current = current.$parent));
-
-        var self = this;
-        return function() {
-          var indexOfListener = namedListeners.indexOf(listener);
-          if (indexOfListener !== -1) {
-            namedListeners[indexOfListener] = null;
-            decrementListenerCount(self, 1, name);
-          }
-        };
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$emit
-       * @kind function
-       *
-       * @description
-       * Dispatches an event `name` upwards through the scope hierarchy notifying the
-       * registered {@link ng.$rootScope.Scope#$on} listeners.
-       *
-       * The event life cycle starts at the scope on which `$emit` was called. All
-       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
-       * notified. Afterwards, the event traverses upwards toward the root scope and calls all
-       * registered listeners along the way. The event will stop propagating if one of the listeners
-       * cancels it.
-       *
-       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
-       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * @param {string} name Event name to emit.
-       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
-       * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).
-       */
-      $emit: function(name, args) {
-        var empty = [],
-            namedListeners,
-            scope = this,
-            stopPropagation = false,
-            event = {
-              name: name,
-              targetScope: scope,
-              stopPropagation: function() {stopPropagation = true;},
-              preventDefault: function() {
-                event.defaultPrevented = true;
-              },
-              defaultPrevented: false
-            },
-            listenerArgs = concat([event], arguments, 1),
-            i, length;
-
-        do {
-          namedListeners = scope.$$listeners[name] || empty;
-          event.currentScope = scope;
-          for (i = 0, length = namedListeners.length; i < length; i++) {
-
-            // if listeners were deregistered, defragment the array
-            if (!namedListeners[i]) {
-              namedListeners.splice(i, 1);
-              i--;
-              length--;
-              continue;
-            }
-            try {
-              //allow all listeners attached to the current scope to run
-              namedListeners[i].apply(null, listenerArgs);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-          }
-          //if any listener on the current scope stops propagation, prevent bubbling
-          if (stopPropagation) {
-            event.currentScope = null;
-            return event;
-          }
-          //traverse upwards
-          scope = scope.$parent;
-        } while (scope);
-
-        event.currentScope = null;
-
-        return event;
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$broadcast
-       * @kind function
-       *
-       * @description
-       * Dispatches an event `name` downwards to all child scopes (and their children) notifying the
-       * registered {@link ng.$rootScope.Scope#$on} listeners.
-       *
-       * The event life cycle starts at the scope on which `$broadcast` was called. All
-       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
-       * notified. Afterwards, the event propagates to all direct and indirect scopes of the current
-       * scope and calls all registered listeners along the way. The event cannot be canceled.
-       *
-       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
-       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * @param {string} name Event name to broadcast.
-       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
-       * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}
-       */
-      $broadcast: function(name, args) {
-        var target = this,
-            current = target,
-            next = target,
-            event = {
-              name: name,
-              targetScope: target,
-              preventDefault: function() {
-                event.defaultPrevented = true;
-              },
-              defaultPrevented: false
-            };
-
-        if (!target.$$listenerCount[name]) return event;
-
-        var listenerArgs = concat([event], arguments, 1),
-            listeners, i, length;
-
-        //down while you can, then up and next sibling or up and next sibling until back at root
-        while ((current = next)) {
-          event.currentScope = current;
-          listeners = current.$$listeners[name] || [];
-          for (i = 0, length = listeners.length; i < length; i++) {
-            // if listeners were deregistered, defragment the array
-            if (!listeners[i]) {
-              listeners.splice(i, 1);
-              i--;
-              length--;
-              continue;
-            }
-
-            try {
-              listeners[i].apply(null, listenerArgs);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-          }
-
-          // Insanity Warning: scope depth-first traversal
-          // yes, this code is a bit crazy, but it works and we have tests to prove it!
-          // this piece should be kept in sync with the traversal in $digest
-          // (though it differs due to having the extra check for $$listenerCount)
-          if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
-              (current !== target && current.$$nextSibling)))) {
-            while (current !== target && !(next = current.$$nextSibling)) {
-              current = current.$parent;
-            }
-          }
-        }
-
-        event.currentScope = null;
-        return event;
-      }
-    };
-
-    var $rootScope = new Scope();
-
-    //The internal queues. Expose them on the $rootScope for debugging/testing purposes.
-    var asyncQueue = $rootScope.$$asyncQueue = [];
-    var postDigestQueue = $rootScope.$$postDigestQueue = [];
-    var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];
-
-    return $rootScope;
-
-
-    function beginPhase(phase) {
-      if ($rootScope.$$phase) {
-        throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);
-      }
-
-      $rootScope.$$phase = phase;
-    }
-
-    function clearPhase() {
-      $rootScope.$$phase = null;
-    }
-
-
-    function decrementListenerCount(current, count, name) {
-      do {
-        current.$$listenerCount[name] -= count;
-
-        if (current.$$listenerCount[name] === 0) {
-          delete current.$$listenerCount[name];
-        }
-      } while ((current = current.$parent));
-    }
-
-    /**
-     * function used as an initial value for watchers.
-     * because it's unique we can easily tell it apart from other values
-     */
-    function initWatchVal() {}
-
-    function flushApplyAsync() {
-      while (applyAsyncQueue.length) {
-        try {
-          applyAsyncQueue.shift()();
-        } catch (e) {
-          $exceptionHandler(e);
-        }
-      }
-      applyAsyncId = null;
-    }
-
-    function scheduleApplyAsync() {
-      if (applyAsyncId === null) {
-        applyAsyncId = $browser.defer(function() {
-          $rootScope.$apply(flushApplyAsync);
-        });
-      }
-    }
-  }];
-}
-
-/**
- * @description
- * Private service to sanitize uris for links and images. Used by $compile and $sanitize.
- */
-function $$SanitizeUriProvider() {
-  var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
-    imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/;
-
-  /**
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during a[href] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.aHrefSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      aHrefSanitizationWhitelist = regexp;
-      return this;
-    }
-    return aHrefSanitizationWhitelist;
-  };
-
-
-  /**
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during img[src] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.imgSrcSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      imgSrcSanitizationWhitelist = regexp;
-      return this;
-    }
-    return imgSrcSanitizationWhitelist;
-  };
-
-  this.$get = function() {
-    return function sanitizeUri(uri, isImage) {
-      var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist;
-      var normalizedVal;
-      normalizedVal = urlResolve(uri).href;
-      if (normalizedVal !== '' && !normalizedVal.match(regex)) {
-        return 'unsafe:' + normalizedVal;
-      }
-      return uri;
-    };
-  };
-}
-
-var $sceMinErr = minErr('$sce');
-
-var SCE_CONTEXTS = {
-  HTML: 'html',
-  CSS: 'css',
-  URL: 'url',
-  // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a
-  // url.  (e.g. ng-include, script src, templateUrl)
-  RESOURCE_URL: 'resourceUrl',
-  JS: 'js'
-};
-
-// Helper functions follow.
-
-function adjustMatcher(matcher) {
-  if (matcher === 'self') {
-    return matcher;
-  } else if (isString(matcher)) {
-    // Strings match exactly except for 2 wildcards - '*' and '**'.
-    // '*' matches any character except those from the set ':/.?&'.
-    // '**' matches any character (like .* in a RegExp).
-    // More than 2 *'s raises an error as it's ill defined.
-    if (matcher.indexOf('***') > -1) {
-      throw $sceMinErr('iwcard',
-          'Illegal sequence *** in string matcher.  String: {0}', matcher);
-    }
-    matcher = escapeForRegexp(matcher).
-                  replace('\\*\\*', '.*').
-                  replace('\\*', '[^:/.?&;]*');
-    return new RegExp('^' + matcher + '$');
-  } else if (isRegExp(matcher)) {
-    // The only other type of matcher allowed is a Regexp.
-    // Match entire URL / disallow partial matches.
-    // Flags are reset (i.e. no global, ignoreCase or multiline)
-    return new RegExp('^' + matcher.source + '$');
-  } else {
-    throw $sceMinErr('imatcher',
-        'Matchers may only be "self", string patterns or RegExp objects');
-  }
-}
-
-
-function adjustMatchers(matchers) {
-  var adjustedMatchers = [];
-  if (isDefined(matchers)) {
-    forEach(matchers, function(matcher) {
-      adjustedMatchers.push(adjustMatcher(matcher));
-    });
-  }
-  return adjustedMatchers;
-}
-
-
-/**
- * @ngdoc service
- * @name $sceDelegate
- * @kind function
- *
- * @description
- *
- * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict
- * Contextual Escaping (SCE)} services to AngularJS.
- *
- * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of
- * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS.  This is
- * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to
- * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things
- * work because `$sce` delegates to `$sceDelegate` for these operations.
- *
- * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.
- *
- * The default instance of `$sceDelegate` should work out of the box with little pain.  While you
- * can override it completely to change the behavior of `$sce`, the common case would
- * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting
- * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as
- * templates.  Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist
- * $sceDelegateProvider.resourceUrlWhitelist} and {@link
- * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
- */
-
-/**
- * @ngdoc provider
- * @name $sceDelegateProvider
- * @description
- *
- * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate
- * $sceDelegate} service.  This allows one to get/set the whitelists and blacklists used to ensure
- * that the URLs used for sourcing Angular templates are safe.  Refer {@link
- * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and
- * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
- *
- * For the general details about this service in Angular, read the main page for {@link ng.$sce
- * Strict Contextual Escaping (SCE)}.
- *
- * **Example**:  Consider the following case. <a name="example"></a>
- *
- * - your app is hosted at url `http://myapp.example.com/`
- * - but some of your templates are hosted on other domains you control such as
- *   `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc.
- * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.
- *
- * Here is what a secure configuration for this scenario might look like:
- *
- * ```
- *  angular.module('myApp', []).config(function($sceDelegateProvider) {
- *    $sceDelegateProvider.resourceUrlWhitelist([
- *      // Allow same origin resource loads.
- *      'self',
- *      // Allow loading from our assets domain.  Notice the difference between * and **.
- *      'http://srv*.assets.example.com/**'
- *    ]);
- *
- *    // The blacklist overrides the whitelist so the open redirect here is blocked.
- *    $sceDelegateProvider.resourceUrlBlacklist([
- *      'http://myapp.example.com/clickThru**'
- *    ]);
- *  });
- * ```
- */
-
-function $SceDelegateProvider() {
-  this.SCE_CONTEXTS = SCE_CONTEXTS;
-
-  // Resource URLs can also be trusted by policy.
-  var resourceUrlWhitelist = ['self'],
-      resourceUrlBlacklist = [];
-
-  /**
-   * @ngdoc method
-   * @name $sceDelegateProvider#resourceUrlWhitelist
-   * @kind function
-   *
-   * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value
-   *     provided.  This must be an array or null.  A snapshot of this array is used so further
-   *     changes to the array are ignored.
-   *
-   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
-   *     allowed in this array.
-   *
-   *     Note: **an empty whitelist array will block all URLs**!
-   *
-   * @return {Array} the currently set whitelist array.
-   *
-   * The **default value** when no whitelist has been explicitly set is `['self']` allowing only
-   * same origin resource requests.
-   *
-   * @description
-   * Sets/Gets the whitelist of trusted resource URLs.
-   */
-  this.resourceUrlWhitelist = function(value) {
-    if (arguments.length) {
-      resourceUrlWhitelist = adjustMatchers(value);
-    }
-    return resourceUrlWhitelist;
-  };
-
-  /**
-   * @ngdoc method
-   * @name $sceDelegateProvider#resourceUrlBlacklist
-   * @kind function
-   *
-   * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value
-   *     provided.  This must be an array or null.  A snapshot of this array is used so further
-   *     changes to the array are ignored.
-   *
-   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
-   *     allowed in this array.
-   *
-   *     The typical usage for the blacklist is to **block
-   *     [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as
-   *     these would otherwise be trusted but actually return content from the redirected domain.
-   *
-   *     Finally, **the blacklist overrides the whitelist** and has the final say.
-   *
-   * @return {Array} the currently set blacklist array.
-   *
-   * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there
-   * is no blacklist.)
-   *
-   * @description
-   * Sets/Gets the blacklist of trusted resource URLs.
-   */
-
-  this.resourceUrlBlacklist = function(value) {
-    if (arguments.length) {
-      resourceUrlBlacklist = adjustMatchers(value);
-    }
-    return resourceUrlBlacklist;
-  };
-
-  this.$get = ['$injector', function($injector) {
-
-    var htmlSanitizer = function htmlSanitizer(html) {
-      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
-    };
-
-    if ($injector.has('$sanitize')) {
-      htmlSanitizer = $injector.get('$sanitize');
-    }
-
-
-    function matchUrl(matcher, parsedUrl) {
-      if (matcher === 'self') {
-        return urlIsSameOrigin(parsedUrl);
-      } else {
-        // definitely a regex.  See adjustMatchers()
-        return !!matcher.exec(parsedUrl.href);
-      }
-    }
-
-    function isResourceUrlAllowedByPolicy(url) {
-      var parsedUrl = urlResolve(url.toString());
-      var i, n, allowed = false;
-      // Ensure that at least one item from the whitelist allows this url.
-      for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {
-        if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {
-          allowed = true;
-          break;
-        }
-      }
-      if (allowed) {
-        // Ensure that no item from the blacklist blocked this url.
-        for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {
-          if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {
-            allowed = false;
-            break;
-          }
-        }
-      }
-      return allowed;
-    }
-
-    function generateHolderType(Base) {
-      var holderType = function TrustedValueHolderType(trustedValue) {
-        this.$$unwrapTrustedValue = function() {
-          return trustedValue;
-        };
-      };
-      if (Base) {
-        holderType.prototype = new Base();
-      }
-      holderType.prototype.valueOf = function sceValueOf() {
-        return this.$$unwrapTrustedValue();
-      };
-      holderType.prototype.toString = function sceToString() {
-        return this.$$unwrapTrustedValue().toString();
-      };
-      return holderType;
-    }
-
-    var trustedValueHolderBase = generateHolderType(),
-        byType = {};
-
-    byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#trustAs
-     *
-     * @description
-     * Returns an object that is trusted by angular for use in specified strict
-     * contextual escaping contexts (such as ng-bind-html, ng-include, any src
-     * attribute interpolation, any dom event binding attribute interpolation
-     * such as for onclick,  etc.) that uses the provided value.
-     * See {@link ng.$sce $sce} for enabling strict contextual escaping.
-     *
-     * @param {string} type The kind of context in which this value is safe for use.  e.g. url,
-     *   resourceUrl, html, js and css.
-     * @param {*} value The value that that should be considered trusted/safe.
-     * @returns {*} A value that can be used to stand in for the provided `value` in places
-     * where Angular expects a $sce.trustAs() return value.
-     */
-    function trustAs(type, trustedValue) {
-      var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
-      if (!Constructor) {
-        throw $sceMinErr('icontext',
-            'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',
-            type, trustedValue);
-      }
-      if (trustedValue === null || trustedValue === undefined || trustedValue === '') {
-        return trustedValue;
-      }
-      // All the current contexts in SCE_CONTEXTS happen to be strings.  In order to avoid trusting
-      // mutable objects, we ensure here that the value passed in is actually a string.
-      if (typeof trustedValue !== 'string') {
-        throw $sceMinErr('itype',
-            'Attempted to trust a non-string value in a content requiring a string: Context: {0}',
-            type);
-      }
-      return new Constructor(trustedValue);
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#valueOf
-     *
-     * @description
-     * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs
-     * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link
-     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.
-     *
-     * If the passed parameter is not a value that had been returned by {@link
-     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.
-     *
-     * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}
-     *      call or anything else.
-     * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} if `value` is the result of such a call.  Otherwise, returns
-     *     `value` unchanged.
-     */
-    function valueOf(maybeTrusted) {
-      if (maybeTrusted instanceof trustedValueHolderBase) {
-        return maybeTrusted.$$unwrapTrustedValue();
-      } else {
-        return maybeTrusted;
-      }
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#getTrusted
-     *
-     * @description
-     * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and
-     * returns the originally supplied value if the queried context type is a supertype of the
-     * created type.  If this condition isn't satisfied, throws an exception.
-     *
-     * @param {string} type The kind of context in which this value is to be used.
-     * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} call.
-     * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} if valid in this context.  Otherwise, throws an exception.
-     */
-    function getTrusted(type, maybeTrusted) {
-      if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {
-        return maybeTrusted;
-      }
-      var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
-      if (constructor && maybeTrusted instanceof constructor) {
-        return maybeTrusted.$$unwrapTrustedValue();
-      }
-      // If we get here, then we may only take one of two actions.
-      // 1. sanitize the value for the requested type, or
-      // 2. throw an exception.
-      if (type === SCE_CONTEXTS.RESOURCE_URL) {
-        if (isResourceUrlAllowedByPolicy(maybeTrusted)) {
-          return maybeTrusted;
-        } else {
-          throw $sceMinErr('insecurl',
-              'Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}',
-              maybeTrusted.toString());
-        }
-      } else if (type === SCE_CONTEXTS.HTML) {
-        return htmlSanitizer(maybeTrusted);
-      }
-      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
-    }
-
-    return { trustAs: trustAs,
-             getTrusted: getTrusted,
-             valueOf: valueOf };
-  }];
-}
-
-
-/**
- * @ngdoc provider
- * @name $sceProvider
- * @description
- *
- * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.
- * -   enable/disable Strict Contextual Escaping (SCE) in a module
- * -   override the default implementation with a custom delegate
- *
- * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.
- */
-
-/* jshint maxlen: false*/
-
-/**
- * @ngdoc service
- * @name $sce
- * @kind function
- *
- * @description
- *
- * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.
- *
- * # Strict Contextual Escaping
- *
- * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain
- * contexts to result in a value that is marked as safe to use for that context.  One example of
- * such a context is binding arbitrary html controlled by the user via `ng-bind-html`.  We refer
- * to these contexts as privileged or SCE contexts.
- *
- * As of version 1.2, Angular ships with SCE enabled by default.
- *
- * Note:  When enabled (the default), IE<11 in quirks mode is not supported.  In this mode, IE<11 allow
- * one to execute arbitrary javascript by the use of the expression() syntax.  Refer
- * <http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx> to learn more about them.
- * You can ensure your document is in standards mode and not quirks mode by adding `<!doctype html>`
- * to the top of your HTML document.
- *
- * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for
- * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.
- *
- * Here's an example of a binding in a privileged context:
- *
- * ```
- * <input ng-model="userHtml">
- * <div ng-bind-html="userHtml"></div>
- * ```
- *
- * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user.  With SCE
- * disabled, this application allows the user to render arbitrary HTML into the DIV.
- * In a more realistic example, one may be rendering user comments, blog articles, etc. via
- * bindings.  (HTML is just one example of a context where rendering user controlled input creates
- * security vulnerabilities.)
- *
- * For the case of HTML, you might use a library, either on the client side, or on the server side,
- * to sanitize unsafe HTML before binding to the value and rendering it in the document.
- *
- * How would you ensure that every place that used these types of bindings was bound to a value that
- * was sanitized by your library (or returned as safe for rendering by your server?)  How can you
- * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some
- * properties/fields and forgot to update the binding to the sanitized value?
- *
- * To be secure by default, you want to ensure that any such bindings are disallowed unless you can
- * determine that something explicitly says it's safe to use a value for binding in that
- * context.  You can then audit your code (a simple grep would do) to ensure that this is only done
- * for those values that you can easily tell are safe - because they were received from your server,
- * sanitized by your library, etc.  You can organize your codebase to help with this - perhaps
- * allowing only the files in a specific directory to do this.  Ensuring that the internal API
- * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.
- *
- * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}
- * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to
- * obtain values that will be accepted by SCE / privileged contexts.
- *
- *
- * ## How does it work?
- *
- * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted
- * $sce.getTrusted(context, value)} rather than to the value directly.  Directives use {@link
- * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the
- * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
- *
- * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
- * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}.  Here's the actual code (slightly
- * simplified):
- *
- * ```
- * var ngBindHtmlDirective = ['$sce', function($sce) {
- *   return function(scope, element, attr) {
- *     scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {
- *       element.html(value || '');
- *     });
- *   };
- * }];
- * ```
- *
- * ## Impact on loading templates
- *
- * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as
- * `templateUrl`'s specified by {@link guide/directive directives}.
- *
- * By default, Angular only loads templates from the same domain and protocol as the application
- * document.  This is done by calling {@link ng.$sce#getTrustedResourceUrl
- * $sce.getTrustedResourceUrl} on the template URL.  To load templates from other domains and/or
- * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist
- * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.
- *
- * *Please note*:
- * The browser's
- * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
- * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
- * policy apply in addition to this and may further restrict whether the template is successfully
- * loaded.  This means that without the right CORS policy, loading templates from a different domain
- * won't work on all browsers.  Also, loading templates from `file://` URL does not work on some
- * browsers.
- *
- * ## This feels like too much overhead
- *
- * It's important to remember that SCE only applies to interpolation expressions.
- *
- * If your expressions are constant literals, they're automatically trusted and you don't need to
- * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.
- * `<div ng-bind-html="'<b>implicitly trusted</b>'"></div>`) just works.
- *
- * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them
- * through {@link ng.$sce#getTrusted $sce.getTrusted}.  SCE doesn't play a role here.
- *
- * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load
- * templates in `ng-include` from your application's domain without having to even know about SCE.
- * It blocks loading templates from other domains or loading templates over http from an https
- * served document.  You can change these by setting your own custom {@link
- * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link
- * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.
- *
- * This significantly reduces the overhead.  It is far easier to pay the small overhead and have an
- * application that's secure and can be audited to verify that with much more ease than bolting
- * security onto an application later.
- *
- * <a name="contexts"></a>
- * ## What trusted context types are supported?
- *
- * | Context             | Notes          |
- * |---------------------|----------------|
- * | `$sce.HTML`         | For HTML that's safe to source into the application.  The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |
- * | `$sce.CSS`          | For CSS that's safe to source into the application.  Currently unused.  Feel free to use it in your own directives. |
- * | `$sce.URL`          | For URLs that are safe to follow as links.  Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
- * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application.  Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.)  <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
- * | `$sce.JS`           | For JavaScript that is safe to execute in your application's context.  Currently unused.  Feel free to use it in your own directives. |
- *
- * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
- *
- *  Each element in these arrays must be one of the following:
- *
- *  - **'self'**
- *    - The special **string**, `'self'`, can be used to match against all URLs of the **same
- *      domain** as the application document using the **same protocol**.
- *  - **String** (except the special value `'self'`)
- *    - The string is matched against the full *normalized / absolute URL* of the resource
- *      being tested (substring matches are not good enough.)
- *    - There are exactly **two wildcard sequences** - `*` and `**`.  All other characters
- *      match themselves.
- *    - `*`: matches zero or more occurrences of any character other than one of the following 6
- *      characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'.  It's a useful wildcard for use
- *      in a whitelist.
- *    - `**`: matches zero or more occurrences of *any* character.  As such, it's not
- *      not appropriate to use in for a scheme, domain, etc. as it would match too much.  (e.g.
- *      http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might
- *      not have been the intention.)  Its usage at the very end of the path is ok.  (e.g.
- *      http://foo.example.com/templates/**).
- *  - **RegExp** (*see caveat below*)
- *    - *Caveat*:  While regular expressions are powerful and offer great flexibility,  their syntax
- *      (and all the inevitable escaping) makes them *harder to maintain*.  It's easy to
- *      accidentally introduce a bug when one updates a complex expression (imho, all regexes should
- *      have good test coverage.).  For instance, the use of `.` in the regex is correct only in a
- *      small number of cases.  A `.` character in the regex used when matching the scheme or a
- *      subdomain could be matched against a `:` or literal `.` that was likely not intended.   It
- *      is highly recommended to use the string patterns and only fall back to regular expressions
- *      if they as a last resort.
- *    - The regular expression must be an instance of RegExp (i.e. not a string.)  It is
- *      matched against the **entire** *normalized / absolute URL* of the resource being tested
- *      (even when the RegExp did not have the `^` and `$` codes.)  In addition, any flags
- *      present on the RegExp (such as multiline, global, ignoreCase) are ignored.
- *    - If you are generating your JavaScript from some other templating engine (not
- *      recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),
- *      remember to escape your regular expression (and be aware that you might need more than
- *      one level of escaping depending on your templating engine and the way you interpolated
- *      the value.)  Do make use of your platform's escaping mechanism as it might be good
- *      enough before coding your own.  e.g. Ruby has
- *      [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)
- *      and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).
- *      Javascript lacks a similar built in function for escaping.  Take a look at Google
- *      Closure library's [goog.string.regExpEscape(s)](
- *      http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).
- *
- * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.
- *
- * ## Show me an example using SCE.
- *
- * <example module="mySceApp" deps="angular-sanitize.js">
- * <file name="index.html">
- *   <div ng-controller="AppController as myCtrl">
- *     <i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
- *     <b>User comments</b><br>
- *     By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when
- *     $sanitize is available.  If $sanitize isn't available, this results in an error instead of an
- *     exploit.
- *     <div class="well">
- *       <div ng-repeat="userComment in myCtrl.userComments">
- *         <b>{{userComment.name}}</b>:
- *         <span ng-bind-html="userComment.htmlComment" class="htmlComment"></span>
- *         <br>
- *       </div>
- *     </div>
- *   </div>
- * </file>
- *
- * <file name="script.js">
- *   angular.module('mySceApp', ['ngSanitize'])
- *     .controller('AppController', ['$http', '$templateCache', '$sce',
- *       function($http, $templateCache, $sce) {
- *         var self = this;
- *         $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) {
- *           self.userComments = userComments;
- *         });
- *         self.explicitlyTrustedHtml = $sce.trustAsHtml(
- *             '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
- *             'sanitization.&quot;">Hover over this text.</span>');
- *       }]);
- * </file>
- *
- * <file name="test_data.json">
- * [
- *   { "name": "Alice",
- *     "htmlComment":
- *         "<span onmouseover='this.textContent=\"PWN3D!\"'>Is <i>anyone</i> reading this?</span>"
- *   },
- *   { "name": "Bob",
- *     "htmlComment": "<i>Yes!</i>  Am I the only other one?"
- *   }
- * ]
- * </file>
- *
- * <file name="protractor.js" type="protractor">
- *   describe('SCE doc demo', function() {
- *     it('should sanitize untrusted values', function() {
- *       expect(element.all(by.css('.htmlComment')).first().getInnerHtml())
- *           .toBe('<span>Is <i>anyone</i> reading this?</span>');
- *     });
- *
- *     it('should NOT sanitize explicitly trusted values', function() {
- *       expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(
- *           '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
- *           'sanitization.&quot;">Hover over this text.</span>');
- *     });
- *   });
- * </file>
- * </example>
- *
- *
- *
- * ## Can I disable SCE completely?
- *
- * Yes, you can.  However, this is strongly discouraged.  SCE gives you a lot of security benefits
- * for little coding overhead.  It will be much harder to take an SCE disabled application and
- * either secure it on your own or enable SCE at a later stage.  It might make sense to disable SCE
- * for cases where you have a lot of existing code that was written before SCE was introduced and
- * you're migrating them a module at a time.
- *
- * That said, here's how you can completely disable SCE:
- *
- * ```
- * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
- *   // Completely disable SCE.  For demonstration purposes only!
- *   // Do not use in new projects.
- *   $sceProvider.enabled(false);
- * });
- * ```
- *
- */
-/* jshint maxlen: 100 */
-
-function $SceProvider() {
-  var enabled = true;
-
-  /**
-   * @ngdoc method
-   * @name $sceProvider#enabled
-   * @kind function
-   *
-   * @param {boolean=} value If provided, then enables/disables SCE.
-   * @return {boolean} true if SCE is enabled, false otherwise.
-   *
-   * @description
-   * Enables/disables SCE and returns the current value.
-   */
-  this.enabled = function(value) {
-    if (arguments.length) {
-      enabled = !!value;
-    }
-    return enabled;
-  };
-
-
-  /* Design notes on the default implementation for SCE.
-   *
-   * The API contract for the SCE delegate
-   * -------------------------------------
-   * The SCE delegate object must provide the following 3 methods:
-   *
-   * - trustAs(contextEnum, value)
-   *     This method is used to tell the SCE service that the provided value is OK to use in the
-   *     contexts specified by contextEnum.  It must return an object that will be accepted by
-   *     getTrusted() for a compatible contextEnum and return this value.
-   *
-   * - valueOf(value)
-   *     For values that were not produced by trustAs(), return them as is.  For values that were
-   *     produced by trustAs(), return the corresponding input value to trustAs.  Basically, if
-   *     trustAs is wrapping the given values into some type, this operation unwraps it when given
-   *     such a value.
-   *
-   * - getTrusted(contextEnum, value)
-   *     This function should return the a value that is safe to use in the context specified by
-   *     contextEnum or throw and exception otherwise.
-   *
-   * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be
-   * opaque or wrapped in some holder object.  That happens to be an implementation detail.  For
-   * instance, an implementation could maintain a registry of all trusted objects by context.  In
-   * such a case, trustAs() would return the same object that was passed in.  getTrusted() would
-   * return the same object passed in if it was found in the registry under a compatible context or
-   * throw an exception otherwise.  An implementation might only wrap values some of the time based
-   * on some criteria.  getTrusted() might return a value and not throw an exception for special
-   * constants or objects even if not wrapped.  All such implementations fulfill this contract.
-   *
-   *
-   * A note on the inheritance model for SCE contexts
-   * ------------------------------------------------
-   * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types.  This
-   * is purely an implementation details.
-   *
-   * The contract is simply this:
-   *
-   *     getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)
-   *     will also succeed.
-   *
-   * Inheritance happens to capture this in a natural way.  In some future, we
-   * may not use inheritance anymore.  That is OK because no code outside of
-   * sce.js and sceSpecs.js would need to be aware of this detail.
-   */
-
-  this.$get = ['$parse', '$sceDelegate', function(
-                $parse,   $sceDelegate) {
-    // Prereq: Ensure that we're not running in IE<11 quirks mode.  In that mode, IE < 11 allow
-    // the "expression(javascript expression)" syntax which is insecure.
-    if (enabled && msie < 8) {
-      throw $sceMinErr('iequirks',
-        'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' +
-        'mode.  You can fix this by adding the text <!doctype html> to the top of your HTML ' +
-        'document.  See http://docs.angularjs.org/api/ng.$sce for more information.');
-    }
-
-    var sce = shallowCopy(SCE_CONTEXTS);
-
-    /**
-     * @ngdoc method
-     * @name $sce#isEnabled
-     * @kind function
-     *
-     * @return {Boolean} true if SCE is enabled, false otherwise.  If you want to set the value, you
-     * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.
-     *
-     * @description
-     * Returns a boolean indicating if SCE is enabled.
-     */
-    sce.isEnabled = function() {
-      return enabled;
-    };
-    sce.trustAs = $sceDelegate.trustAs;
-    sce.getTrusted = $sceDelegate.getTrusted;
-    sce.valueOf = $sceDelegate.valueOf;
-
-    if (!enabled) {
-      sce.trustAs = sce.getTrusted = function(type, value) { return value; };
-      sce.valueOf = identity;
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAs
-     *
-     * @description
-     * Converts Angular {@link guide/expression expression} into a function.  This is like {@link
-     * ng.$parse $parse} and is identical when the expression is a literal constant.  Otherwise, it
-     * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,
-     * *result*)}
-     *
-     * @param {string} type The kind of SCE context in which this result will be used.
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-    sce.parseAs = function sceParseAs(type, expr) {
-      var parsed = $parse(expr);
-      if (parsed.literal && parsed.constant) {
-        return parsed;
-      } else {
-        return $parse(expr, function(value) {
-          return sce.getTrusted(type, value);
-        });
-      }
-    };
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAs
-     *
-     * @description
-     * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.  As such,
-     * returns an object that is trusted by angular for use in specified strict contextual
-     * escaping contexts (such as ng-bind-html, ng-include, any src attribute
-     * interpolation, any dom event binding attribute interpolation such as for onclick,  etc.)
-     * that uses the provided value.  See * {@link ng.$sce $sce} for enabling strict contextual
-     * escaping.
-     *
-     * @param {string} type The kind of context in which this value is safe for use.  e.g. url,
-     *   resource_url, html, js and css.
-     * @param {*} value The value that that should be considered trusted/safe.
-     * @returns {*} A value that can be used to stand in for the provided `value` in places
-     * where Angular expects a $sce.trustAs() return value.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsHtml(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml
-     *     $sce.getTrustedHtml(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsUrl(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl
-     *     $sce.getTrustedUrl(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsResourceUrl(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl
-     *     $sce.getTrustedResourceUrl(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the return
-     *     value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsJs
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsJs(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs
-     *     $sce.getTrustedJs(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrusted
-     *
-     * @description
-     * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}.  As such,
-     * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the
-     * originally supplied value if the queried context type is a supertype of the created type.
-     * If this condition isn't satisfied, throws an exception.
-     *
-     * @param {string} type The kind of context in which this value is to be used.
-     * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}
-     *                         call.
-     * @returns {*} The value the was originally provided to
-     *              {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.
-     *              Otherwise, throws an exception.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedHtml(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedCss
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedCss(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedUrl(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedResourceUrl(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}
-     *
-     * @param {*} value The value to pass to `$sceDelegate.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedJs
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedJs(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsHtml(expression string)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsCss
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsCss(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsUrl(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsResourceUrl(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsJs
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsJs(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    // Shorthand delegations.
-    var parse = sce.parseAs,
-        getTrusted = sce.getTrusted,
-        trustAs = sce.trustAs;
-
-    forEach(SCE_CONTEXTS, function(enumValue, name) {
-      var lName = lowercase(name);
-      sce[camelCase("parse_as_" + lName)] = function(expr) {
-        return parse(enumValue, expr);
-      };
-      sce[camelCase("get_trusted_" + lName)] = function(value) {
-        return getTrusted(enumValue, value);
-      };
-      sce[camelCase("trust_as_" + lName)] = function(value) {
-        return trustAs(enumValue, value);
-      };
-    });
-
-    return sce;
-  }];
-}
-
-/**
- * !!! This is an undocumented "private" service !!!
- *
- * @name $sniffer
- * @requires $window
- * @requires $document
- *
- * @property {boolean} history Does the browser support html5 history api ?
- * @property {boolean} transitions Does the browser support CSS transition events ?
- * @property {boolean} animations Does the browser support CSS animation events ?
- *
- * @description
- * This is very simple implementation of testing browser's features.
- */
-function $SnifferProvider() {
-  this.$get = ['$window', '$document', function($window, $document) {
-    var eventSupport = {},
-        android =
-          int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
-        boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
-        document = $document[0] || {},
-        vendorPrefix,
-        vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/,
-        bodyStyle = document.body && document.body.style,
-        transitions = false,
-        animations = false,
-        match;
-
-    if (bodyStyle) {
-      for (var prop in bodyStyle) {
-        if (match = vendorRegex.exec(prop)) {
-          vendorPrefix = match[0];
-          vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);
-          break;
-        }
-      }
-
-      if (!vendorPrefix) {
-        vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
-      }
-
-      transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
-      animations  = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
-
-      if (android && (!transitions ||  !animations)) {
-        transitions = isString(document.body.style.webkitTransition);
-        animations = isString(document.body.style.webkitAnimation);
-      }
-    }
-
-
-    return {
-      // Android has history.pushState, but it does not update location correctly
-      // so let's not use the history API at all.
-      // http://code.google.com/p/android/issues/detail?id=17471
-      // https://github.com/angular/angular.js/issues/904
-
-      // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
-      // so let's not use the history API also
-      // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
-      // jshint -W018
-      history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
-      // jshint +W018
-      hasEvent: function(event) {
-        // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have
-        // it. In particular the event is not fired when backspace or delete key are pressed or
-        // when cut operation is performed.
-        // IE10+ implements 'input' event but it erroneously fires under various situations,
-        // e.g. when placeholder changes, or a form is focused.
-        if (event === 'input' && msie <= 11) return false;
-
-        if (isUndefined(eventSupport[event])) {
-          var divElm = document.createElement('div');
-          eventSupport[event] = 'on' + event in divElm;
-        }
-
-        return eventSupport[event];
-      },
-      csp: csp(),
-      vendorPrefix: vendorPrefix,
-      transitions: transitions,
-      animations: animations,
-      android: android
-    };
-  }];
-}
-
-var $compileMinErr = minErr('$compile');
-
-/**
- * @ngdoc service
- * @name $templateRequest
- *
- * @description
- * The `$templateRequest` service downloads the provided template using `$http` and, upon success,
- * stores the contents inside of `$templateCache`. If the HTTP request fails or the response data
- * of the HTTP request is empty, a `$compile` error will be thrown (the exception can be thwarted
- * by setting the 2nd parameter of the function to true).
- *
- * @param {string} tpl The HTTP request template URL
- * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty
- *
- * @return {Promise} the HTTP Promise for the given.
- *
- * @property {number} totalPendingRequests total amount of pending template requests being downloaded.
- */
-function $TemplateRequestProvider() {
-  this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
-    function handleRequestFn(tpl, ignoreRequestError) {
-      handleRequestFn.totalPendingRequests++;
-
-      var transformResponse = $http.defaults && $http.defaults.transformResponse;
-
-      if (isArray(transformResponse)) {
-        transformResponse = transformResponse.filter(function(transformer) {
-          return transformer !== defaultHttpResponseTransform;
-        });
-      } else if (transformResponse === defaultHttpResponseTransform) {
-        transformResponse = null;
-      }
-
-      var httpOptions = {
-        cache: $templateCache,
-        transformResponse: transformResponse
-      };
-
-      return $http.get(tpl, httpOptions)
-        .finally(function() {
-          handleRequestFn.totalPendingRequests--;
-        })
-        .then(function(response) {
-          return response.data;
-        }, handleError);
-
-      function handleError(resp) {
-        if (!ignoreRequestError) {
-          throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
-        }
-        return $q.reject(resp);
-      }
-    }
-
-    handleRequestFn.totalPendingRequests = 0;
-
-    return handleRequestFn;
-  }];
-}
-
-function $$TestabilityProvider() {
-  this.$get = ['$rootScope', '$browser', '$location',
-       function($rootScope,   $browser,   $location) {
-
-    /**
-     * @name $testability
-     *
-     * @description
-     * The private $$testability service provides a collection of methods for use when debugging
-     * or by automated test and debugging tools.
-     */
-    var testability = {};
-
-    /**
-     * @name $$testability#findBindings
-     *
-     * @description
-     * Returns an array of elements that are bound (via ng-bind or {{}})
-     * to expressions matching the input.
-     *
-     * @param {Element} element The element root to search from.
-     * @param {string} expression The binding expression to match.
-     * @param {boolean} opt_exactMatch If true, only returns exact matches
-     *     for the expression. Filters and whitespace are ignored.
-     */
-    testability.findBindings = function(element, expression, opt_exactMatch) {
-      var bindings = element.getElementsByClassName('ng-binding');
-      var matches = [];
-      forEach(bindings, function(binding) {
-        var dataBinding = angular.element(binding).data('$binding');
-        if (dataBinding) {
-          forEach(dataBinding, function(bindingName) {
-            if (opt_exactMatch) {
-              var matcher = new RegExp('(^|\\s)' + escapeForRegexp(expression) + '(\\s|\\||$)');
-              if (matcher.test(bindingName)) {
-                matches.push(binding);
-              }
-            } else {
-              if (bindingName.indexOf(expression) != -1) {
-                matches.push(binding);
-              }
-            }
-          });
-        }
-      });
-      return matches;
-    };
-
-    /**
-     * @name $$testability#findModels
-     *
-     * @description
-     * Returns an array of elements that are two-way found via ng-model to
-     * expressions matching the input.
-     *
-     * @param {Element} element The element root to search from.
-     * @param {string} expression The model expression to match.
-     * @param {boolean} opt_exactMatch If true, only returns exact matches
-     *     for the expression.
-     */
-    testability.findModels = function(element, expression, opt_exactMatch) {
-      var prefixes = ['ng-', 'data-ng-', 'ng\\:'];
-      for (var p = 0; p < prefixes.length; ++p) {
-        var attributeEquals = opt_exactMatch ? '=' : '*=';
-        var selector = '[' + prefixes[p] + 'model' + attributeEquals + '"' + expression + '"]';
-        var elements = element.querySelectorAll(selector);
-        if (elements.length) {
-          return elements;
-        }
-      }
-    };
-
-    /**
-     * @name $$testability#getLocation
-     *
-     * @description
-     * Shortcut for getting the location in a browser agnostic way. Returns
-     *     the path, search, and hash. (e.g. /path?a=b#hash)
-     */
-    testability.getLocation = function() {
-      return $location.url();
-    };
-
-    /**
-     * @name $$testability#setLocation
-     *
-     * @description
-     * Shortcut for navigating to a location without doing a full page reload.
-     *
-     * @param {string} url The location url (path, search and hash,
-     *     e.g. /path?a=b#hash) to go to.
-     */
-    testability.setLocation = function(url) {
-      if (url !== $location.url()) {
-        $location.url(url);
-        $rootScope.$digest();
-      }
-    };
-
-    /**
-     * @name $$testability#whenStable
-     *
-     * @description
-     * Calls the callback when $timeout and $http requests are completed.
-     *
-     * @param {function} callback
-     */
-    testability.whenStable = function(callback) {
-      $browser.notifyWhenNoOutstandingRequests(callback);
-    };
-
-    return testability;
-  }];
-}
-
-function $TimeoutProvider() {
-  this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler',
-       function($rootScope,   $browser,   $q,   $$q,   $exceptionHandler) {
-    var deferreds = {};
-
-
-     /**
-      * @ngdoc service
-      * @name $timeout
-      *
-      * @description
-      * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch
-      * block and delegates any exceptions to
-      * {@link ng.$exceptionHandler $exceptionHandler} service.
-      *
-      * The return value of registering a timeout function is a promise, which will be resolved when
-      * the timeout is reached and the timeout function is executed.
-      *
-      * To cancel a timeout request, call `$timeout.cancel(promise)`.
-      *
-      * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to
-      * synchronously flush the queue of deferred functions.
-      *
-      * @param {function()} fn A function, whose execution should be delayed.
-      * @param {number=} [delay=0] Delay in milliseconds.
-      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
-      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
-      * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this
-      *   promise will be resolved with is the return value of the `fn` function.
-      *
-      */
-    function timeout(fn, delay, invokeApply) {
-      var skipApply = (isDefined(invokeApply) && !invokeApply),
-          deferred = (skipApply ? $$q : $q).defer(),
-          promise = deferred.promise,
-          timeoutId;
-
-      timeoutId = $browser.defer(function() {
-        try {
-          deferred.resolve(fn());
-        } catch (e) {
-          deferred.reject(e);
-          $exceptionHandler(e);
-        }
-        finally {
-          delete deferreds[promise.$$timeoutId];
-        }
-
-        if (!skipApply) $rootScope.$apply();
-      }, delay);
-
-      promise.$$timeoutId = timeoutId;
-      deferreds[timeoutId] = deferred;
-
-      return promise;
-    }
-
-
-     /**
-      * @ngdoc method
-      * @name $timeout#cancel
-      *
-      * @description
-      * Cancels a task associated with the `promise`. As a result of this, the promise will be
-      * resolved with a rejection.
-      *
-      * @param {Promise=} promise Promise returned by the `$timeout` function.
-      * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
-      *   canceled.
-      */
-    timeout.cancel = function(promise) {
-      if (promise && promise.$$timeoutId in deferreds) {
-        deferreds[promise.$$timeoutId].reject('canceled');
-        delete deferreds[promise.$$timeoutId];
-        return $browser.defer.cancel(promise.$$timeoutId);
-      }
-      return false;
-    };
-
-    return timeout;
-  }];
-}
-
-// NOTE:  The usage of window and document instead of $window and $document here is
-// deliberate.  This service depends on the specific behavior of anchor nodes created by the
-// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and
-// cause us to break tests.  In addition, when the browser resolves a URL for XHR, it
-// doesn't know about mocked locations and resolves URLs to the real document - which is
-// exactly the behavior needed here.  There is little value is mocking these out for this
-// service.
-var urlParsingNode = document.createElement("a");
-var originUrl = urlResolve(window.location.href);
-
-
-/**
- *
- * Implementation Notes for non-IE browsers
- * ----------------------------------------
- * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,
- * results both in the normalizing and parsing of the URL.  Normalizing means that a relative
- * URL will be resolved into an absolute URL in the context of the application document.
- * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related
- * properties are all populated to reflect the normalized URL.  This approach has wide
- * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc.  See
- * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
- *
- * Implementation Notes for IE
- * ---------------------------
- * IE >= 8 and <= 10 normalizes the URL when assigned to the anchor node similar to the other
- * browsers.  However, the parsed components will not be set if the URL assigned did not specify
- * them.  (e.g. if you assign a.href = "foo", then a.protocol, a.host, etc. will be empty.)  We
- * work around that by performing the parsing in a 2nd step by taking a previously normalized
- * URL (e.g. by assigning to a.href) and assigning it a.href again.  This correctly populates the
- * properties such as protocol, hostname, port, etc.
- *
- * IE7 does not normalize the URL when assigned to an anchor node.  (Apparently, it does, if one
- * uses the inner HTML approach to assign the URL as part of an HTML snippet -
- * http://stackoverflow.com/a/472729)  However, setting img[src] does normalize the URL.
- * Unfortunately, setting img[src] to something like "javascript:foo" on IE throws an exception.
- * Since the primary usage for normalizing URLs is to sanitize such URLs, we can't use that
- * method and IE < 8 is unsupported.
- *
- * References:
- *   http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement
- *   http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
- *   http://url.spec.whatwg.org/#urlutils
- *   https://github.com/angular/angular.js/pull/2902
- *   http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
- *
- * @kind function
- * @param {string} url The URL to be parsed.
- * @description Normalizes and parses a URL.
- * @returns {object} Returns the normalized URL as a dictionary.
- *
- *   | member name   | Description    |
- *   |---------------|----------------|
- *   | href          | A normalized version of the provided URL if it was not an absolute URL |
- *   | protocol      | The protocol including the trailing colon                              |
- *   | host          | The host and port (if the port is non-default) of the normalizedUrl    |
- *   | search        | The search params, minus the question mark                             |
- *   | hash          | The hash string, minus the hash symbol
- *   | hostname      | The hostname
- *   | port          | The port, without ":"
- *   | pathname      | The pathname, beginning with "/"
- *
- */
-function urlResolve(url) {
-  var href = url;
-
-  if (msie) {
-    // Normalize before parse.  Refer Implementation Notes on why this is
-    // done in two steps on IE.
-    urlParsingNode.setAttribute("href", href);
-    href = urlParsingNode.href;
-  }
-
-  urlParsingNode.setAttribute('href', href);
-
-  // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
-  return {
-    href: urlParsingNode.href,
-    protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
-    host: urlParsingNode.host,
-    search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
-    hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
-    hostname: urlParsingNode.hostname,
-    port: urlParsingNode.port,
-    pathname: (urlParsingNode.pathname.charAt(0) === '/')
-      ? urlParsingNode.pathname
-      : '/' + urlParsingNode.pathname
-  };
-}
-
-/**
- * Parse a request URL and determine whether this is a same-origin request as the application document.
- *
- * @param {string|object} requestUrl The url of the request as a string that will be resolved
- * or a parsed URL object.
- * @returns {boolean} Whether the request is for the same origin as the application document.
- */
-function urlIsSameOrigin(requestUrl) {
-  var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
-  return (parsed.protocol === originUrl.protocol &&
-          parsed.host === originUrl.host);
-}
-
-/**
- * @ngdoc service
- * @name $window
- *
- * @description
- * A reference to the browser's `window` object. While `window`
- * is globally available in JavaScript, it causes testability problems, because
- * it is a global variable. In angular we always refer to it through the
- * `$window` service, so it may be overridden, removed or mocked for testing.
- *
- * Expressions, like the one defined for the `ngClick` directive in the example
- * below, are evaluated with respect to the current scope.  Therefore, there is
- * no risk of inadvertently coding in a dependency on a global value in such an
- * expression.
- *
- * @example
-   <example module="windowExample">
-     <file name="index.html">
-       <script>
-         angular.module('windowExample', [])
-           .controller('ExampleController', ['$scope', '$window', function($scope, $window) {
-             $scope.greeting = 'Hello, World!';
-             $scope.doGreeting = function(greeting) {
-               $window.alert(greeting);
-             };
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input type="text" ng-model="greeting" />
-         <button ng-click="doGreeting(greeting)">ALERT</button>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-      it('should display the greeting in the input box', function() {
-       element(by.model('greeting')).sendKeys('Hello, E2E Tests');
-       // If we click the button it will block the test runner
-       // element(':button').click();
-      });
-     </file>
-   </example>
- */
-function $WindowProvider() {
-  this.$get = valueFn(window);
-}
-
-/* global currencyFilter: true,
- dateFilter: true,
- filterFilter: true,
- jsonFilter: true,
- limitToFilter: true,
- lowercaseFilter: true,
- numberFilter: true,
- orderByFilter: true,
- uppercaseFilter: true,
- */
-
-/**
- * @ngdoc provider
- * @name $filterProvider
- * @description
- *
- * Filters are just functions which transform input to an output. However filters need to be
- * Dependency Injected. To achieve this a filter definition consists of a factory function which is
- * annotated with dependencies and is responsible for creating a filter function.
- *
- * ```js
- *   // Filter registration
- *   function MyModule($provide, $filterProvider) {
- *     // create a service to demonstrate injection (not always needed)
- *     $provide.value('greet', function(name){
- *       return 'Hello ' + name + '!';
- *     });
- *
- *     // register a filter factory which uses the
- *     // greet service to demonstrate DI.
- *     $filterProvider.register('greet', function(greet){
- *       // return the filter function which uses the greet service
- *       // to generate salutation
- *       return function(text) {
- *         // filters need to be forgiving so check input validity
- *         return text && greet(text) || text;
- *       };
- *     });
- *   }
- * ```
- *
- * The filter function is registered with the `$injector` under the filter name suffix with
- * `Filter`.
- *
- * ```js
- *   it('should be the same instance', inject(
- *     function($filterProvider) {
- *       $filterProvider.register('reverse', function(){
- *         return ...;
- *       });
- *     },
- *     function($filter, reverseFilter) {
- *       expect($filter('reverse')).toBe(reverseFilter);
- *     });
- * ```
- *
- *
- * For more information about how angular filters work, and how to create your own filters, see
- * {@link guide/filter Filters} in the Angular Developer Guide.
- */
-
-/**
- * @ngdoc service
- * @name $filter
- * @kind function
- * @description
- * Filters are used for formatting data displayed to the user.
- *
- * The general syntax in templates is as follows:
- *
- *         {{ expression [| filter_name[:parameter_value] ... ] }}
- *
- * @param {String} name Name of the filter function to retrieve
- * @return {Function} the filter function
- * @example
-   <example name="$filter" module="filterExample">
-     <file name="index.html">
-       <div ng-controller="MainCtrl">
-        <h3>{{ originalText }}</h3>
-        <h3>{{ filteredText }}</h3>
-       </div>
-     </file>
-
-     <file name="script.js">
-      angular.module('filterExample', [])
-      .controller('MainCtrl', function($scope, $filter) {
-        $scope.originalText = 'hello';
-        $scope.filteredText = $filter('uppercase')($scope.originalText);
-      });
-     </file>
-   </example>
-  */
-$FilterProvider.$inject = ['$provide'];
-function $FilterProvider($provide) {
-  var suffix = 'Filter';
-
-  /**
-   * @ngdoc method
-   * @name $filterProvider#register
-   * @param {string|Object} name Name of the filter function, or an object map of filters where
-   *    the keys are the filter names and the values are the filter factories.
-   * @returns {Object} Registered filter instance, or if a map of filters was provided then a map
-   *    of the registered filter instances.
-   */
-  function register(name, factory) {
-    if (isObject(name)) {
-      var filters = {};
-      forEach(name, function(filter, key) {
-        filters[key] = register(key, filter);
-      });
-      return filters;
-    } else {
-      return $provide.factory(name + suffix, factory);
-    }
-  }
-  this.register = register;
-
-  this.$get = ['$injector', function($injector) {
-    return function(name) {
-      return $injector.get(name + suffix);
-    };
-  }];
-
-  ////////////////////////////////////////
-
-  /* global
-    currencyFilter: false,
-    dateFilter: false,
-    filterFilter: false,
-    jsonFilter: false,
-    limitToFilter: false,
-    lowercaseFilter: false,
-    numberFilter: false,
-    orderByFilter: false,
-    uppercaseFilter: false,
-  */
-
-  register('currency', currencyFilter);
-  register('date', dateFilter);
-  register('filter', filterFilter);
-  register('json', jsonFilter);
-  register('limitTo', limitToFilter);
-  register('lowercase', lowercaseFilter);
-  register('number', numberFilter);
-  register('orderBy', orderByFilter);
-  register('uppercase', uppercaseFilter);
-}
-
-/**
- * @ngdoc filter
- * @name filter
- * @kind function
- *
- * @description
- * Selects a subset of items from `array` and returns it as a new array.
- *
- * @param {Array} array The source array.
- * @param {string|Object|function()} expression The predicate to be used for selecting items from
- *   `array`.
- *
- *   Can be one of:
- *
- *   - `string`: The string is used for matching against the contents of the `array`. All strings or
- *     objects with string properties in `array` that match this string will be returned. This also
- *     applies to nested object properties.
- *     The predicate can be negated by prefixing the string with `!`.
- *
- *   - `Object`: A pattern object can be used to filter specific properties on objects contained
- *     by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items
- *     which have property `name` containing "M" and property `phone` containing "1". A special
- *     property name `$` can be used (as in `{$:"text"}`) to accept a match against any
- *     property of the object or its nested object properties. That's equivalent to the simple
- *     substring match with a `string` as described above. The predicate can be negated by prefixing
- *     the string with `!`.
- *     For example `{name: "!M"}` predicate will return an array of items which have property `name`
- *     not containing "M".
- *
- *     Note that a named property will match properties on the same level only, while the special
- *     `$` property will match properties on the same level or deeper. E.g. an array item like
- *     `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but
- *     **will** be matched by `{$: 'John'}`.
- *
- *   - `function(value, index)`: A predicate function can be used to write arbitrary filters. The
- *     function is called for each element of `array`. The final result is an array of those
- *     elements that the predicate returned true for.
- *
- * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
- *     determining if the expected value (from the filter expression) and actual value (from
- *     the object in the array) should be considered a match.
- *
- *   Can be one of:
- *
- *   - `function(actual, expected)`:
- *     The function will be given the object value and the predicate value to compare and
- *     should return true if both values should be considered equal.
- *
- *   - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`.
- *     This is essentially strict comparison of expected and actual.
- *
- *   - `false|undefined`: A short hand for a function which will look for a substring match in case
- *     insensitive way.
- *
- * @example
-   <example>
-     <file name="index.html">
-       <div ng-init="friends = [{name:'John', phone:'555-1276'},
-                                {name:'Mary', phone:'800-BIG-MARY'},
-                                {name:'Mike', phone:'555-4321'},
-                                {name:'Adam', phone:'555-5678'},
-                                {name:'Julie', phone:'555-8765'},
-                                {name:'Juliette', phone:'555-5678'}]"></div>
-
-       Search: <input ng-model="searchText">
-       <table id="searchTextResults">
-         <tr><th>Name</th><th>Phone</th></tr>
-         <tr ng-repeat="friend in friends | filter:searchText">
-           <td>{{friend.name}}</td>
-           <td>{{friend.phone}}</td>
-         </tr>
-       </table>
-       <hr>
-       Any: <input ng-model="search.$"> <br>
-       Name only <input ng-model="search.name"><br>
-       Phone only <input ng-model="search.phone"><br>
-       Equality <input type="checkbox" ng-model="strict"><br>
-       <table id="searchObjResults">
-         <tr><th>Name</th><th>Phone</th></tr>
-         <tr ng-repeat="friendObj in friends | filter:search:strict">
-           <td>{{friendObj.name}}</td>
-           <td>{{friendObj.phone}}</td>
-         </tr>
-       </table>
-     </file>
-     <file name="protractor.js" type="protractor">
-       var expectFriendNames = function(expectedNames, key) {
-         element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {
-           arr.forEach(function(wd, i) {
-             expect(wd.getText()).toMatch(expectedNames[i]);
-           });
-         });
-       };
-
-       it('should search across all fields when filtering with a string', function() {
-         var searchText = element(by.model('searchText'));
-         searchText.clear();
-         searchText.sendKeys('m');
-         expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');
-
-         searchText.clear();
-         searchText.sendKeys('76');
-         expectFriendNames(['John', 'Julie'], 'friend');
-       });
-
-       it('should search in specific fields when filtering with a predicate object', function() {
-         var searchAny = element(by.model('search.$'));
-         searchAny.clear();
-         searchAny.sendKeys('i');
-         expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');
-       });
-       it('should use a equal comparison when comparator is true', function() {
-         var searchName = element(by.model('search.name'));
-         var strict = element(by.model('strict'));
-         searchName.clear();
-         searchName.sendKeys('Julie');
-         strict.click();
-         expectFriendNames(['Julie'], 'friendObj');
-       });
-     </file>
-   </example>
- */
-function filterFilter() {
-  return function(array, expression, comparator) {
-    if (!isArray(array)) return array;
-
-    var predicateFn;
-    var matchAgainstAnyProp;
-
-    switch (typeof expression) {
-      case 'function':
-        predicateFn = expression;
-        break;
-      case 'boolean':
-      case 'number':
-      case 'string':
-        matchAgainstAnyProp = true;
-        //jshint -W086
-      case 'object':
-        //jshint +W086
-        predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp);
-        break;
-      default:
-        return array;
-    }
-
-    return array.filter(predicateFn);
-  };
-}
-
-// Helper functions for `filterFilter`
-function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
-  var shouldMatchPrimitives = isObject(expression) && ('$' in expression);
-  var predicateFn;
-
-  if (comparator === true) {
-    comparator = equals;
-  } else if (!isFunction(comparator)) {
-    comparator = function(actual, expected) {
-      if (isObject(actual) || isObject(expected)) {
-        // Prevent an object to be considered equal to a string like `'[object'`
-        return false;
-      }
-
-      actual = lowercase('' + actual);
-      expected = lowercase('' + expected);
-      return actual.indexOf(expected) !== -1;
-    };
-  }
-
-  predicateFn = function(item) {
-    if (shouldMatchPrimitives && !isObject(item)) {
-      return deepCompare(item, expression.$, comparator, false);
-    }
-    return deepCompare(item, expression, comparator, matchAgainstAnyProp);
-  };
-
-  return predicateFn;
-}
-
-function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) {
-  var actualType = typeof actual;
-  var expectedType = typeof expected;
-
-  if ((expectedType === 'string') && (expected.charAt(0) === '!')) {
-    return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp);
-  } else if (isArray(actual)) {
-    // In case `actual` is an array, consider it a match
-    // if ANY of it's items matches `expected`
-    return actual.some(function(item) {
-      return deepCompare(item, expected, comparator, matchAgainstAnyProp);
-    });
-  }
-
-  switch (actualType) {
-    case 'object':
-      var key;
-      if (matchAgainstAnyProp) {
-        for (key in actual) {
-          if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) {
-            return true;
-          }
-        }
-        return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false);
-      } else if (expectedType === 'object') {
-        for (key in expected) {
-          var expectedVal = expected[key];
-          if (isFunction(expectedVal)) {
-            continue;
-          }
-
-          var matchAnyProperty = key === '$';
-          var actualVal = matchAnyProperty ? actual : actual[key];
-          if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) {
-            return false;
-          }
-        }
-        return true;
-      } else {
-        return comparator(actual, expected);
-      }
-      break;
-    case 'function':
-      return false;
-    default:
-      return comparator(actual, expected);
-  }
-}
-
-/**
- * @ngdoc filter
- * @name currency
- * @kind function
- *
- * @description
- * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default
- * symbol for current locale is used.
- *
- * @param {number} amount Input to filter.
- * @param {string=} symbol Currency symbol or identifier to be displayed.
- * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale
- * @returns {string} Formatted number.
- *
- *
- * @example
-   <example module="currencyExample">
-     <file name="index.html">
-       <script>
-         angular.module('currencyExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.amount = 1234.56;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input type="number" ng-model="amount"> <br>
-         default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br>
-         custom currency identifier (USD$): <span id="currency-custom">{{amount | currency:"USD$"}}</span>
-         no fractions (0): <span id="currency-no-fractions">{{amount | currency:"USD$":0}}</span>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should init with 1234.56', function() {
-         expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');
-         expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56');
-         expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235');
-       });
-       it('should update', function() {
-         if (browser.params.browser == 'safari') {
-           // Safari does not understand the minus key. See
-           // https://github.com/angular/protractor/issues/481
-           return;
-         }
-         element(by.model('amount')).clear();
-         element(by.model('amount')).sendKeys('-1234');
-         expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');
-         expect(element(by.id('currency-custom')).getText()).toBe('(USD$1,234.00)');
-         expect(element(by.id('currency-no-fractions')).getText()).toBe('(USD$1,234)');
-       });
-     </file>
-   </example>
- */
-currencyFilter.$inject = ['$locale'];
-function currencyFilter($locale) {
-  var formats = $locale.NUMBER_FORMATS;
-  return function(amount, currencySymbol, fractionSize) {
-    if (isUndefined(currencySymbol)) {
-      currencySymbol = formats.CURRENCY_SYM;
-    }
-
-    if (isUndefined(fractionSize)) {
-      fractionSize = formats.PATTERNS[1].maxFrac;
-    }
-
-    // if null or undefined pass it through
-    return (amount == null)
-        ? amount
-        : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).
-            replace(/\u00A4/g, currencySymbol);
-  };
-}
-
-/**
- * @ngdoc filter
- * @name number
- * @kind function
- *
- * @description
- * Formats a number as text.
- *
- * If the input is not a number an empty string is returned.
- *
- * @param {number|string} number Number to format.
- * @param {(number|string)=} fractionSize Number of decimal places to round the number to.
- * If this is not provided then the fraction size is computed from the current locale's number
- * formatting pattern. In the case of the default locale, it will be 3.
- * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.
- *
- * @example
-   <example module="numberFilterExample">
-     <file name="index.html">
-       <script>
-         angular.module('numberFilterExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.val = 1234.56789;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Enter number: <input ng-model='val'><br>
-         Default formatting: <span id='number-default'>{{val | number}}</span><br>
-         No fractions: <span>{{val | number:0}}</span><br>
-         Negative number: <span>{{-val | number:4}}</span>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should format numbers', function() {
-         expect(element(by.id('number-default')).getText()).toBe('1,234.568');
-         expect(element(by.binding('val | number:0')).getText()).toBe('1,235');
-         expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');
-       });
-
-       it('should update', function() {
-         element(by.model('val')).clear();
-         element(by.model('val')).sendKeys('3374.333');
-         expect(element(by.id('number-default')).getText()).toBe('3,374.333');
-         expect(element(by.binding('val | number:0')).getText()).toBe('3,374');
-         expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');
-      });
-     </file>
-   </example>
- */
-
-
-numberFilter.$inject = ['$locale'];
-function numberFilter($locale) {
-  var formats = $locale.NUMBER_FORMATS;
-  return function(number, fractionSize) {
-
-    // if null or undefined pass it through
-    return (number == null)
-        ? number
-        : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,
-                       fractionSize);
-  };
-}
-
-var DECIMAL_SEP = '.';
-function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
-  if (!isFinite(number) || isObject(number)) return '';
-
-  var isNegative = number < 0;
-  number = Math.abs(number);
-  var numStr = number + '',
-      formatedText = '',
-      parts = [];
-
-  var hasExponent = false;
-  if (numStr.indexOf('e') !== -1) {
-    var match = numStr.match(/([\d\.]+)e(-?)(\d+)/);
-    if (match && match[2] == '-' && match[3] > fractionSize + 1) {
-      number = 0;
-    } else {
-      formatedText = numStr;
-      hasExponent = true;
-    }
-  }
-
-  if (!hasExponent) {
-    var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;
-
-    // determine fractionSize if it is not specified
-    if (isUndefined(fractionSize)) {
-      fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
-    }
-
-    // safely round numbers in JS without hitting imprecisions of floating-point arithmetics
-    // inspired by:
-    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
-    number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
-
-    var fraction = ('' + number).split(DECIMAL_SEP);
-    var whole = fraction[0];
-    fraction = fraction[1] || '';
-
-    var i, pos = 0,
-        lgroup = pattern.lgSize,
-        group = pattern.gSize;
-
-    if (whole.length >= (lgroup + group)) {
-      pos = whole.length - lgroup;
-      for (i = 0; i < pos; i++) {
-        if ((pos - i) % group === 0 && i !== 0) {
-          formatedText += groupSep;
-        }
-        formatedText += whole.charAt(i);
-      }
-    }
-
-    for (i = pos; i < whole.length; i++) {
-      if ((whole.length - i) % lgroup === 0 && i !== 0) {
-        formatedText += groupSep;
-      }
-      formatedText += whole.charAt(i);
-    }
-
-    // format fraction part.
-    while (fraction.length < fractionSize) {
-      fraction += '0';
-    }
-
-    if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize);
-  } else {
-    if (fractionSize > 0 && number < 1) {
-      formatedText = number.toFixed(fractionSize);
-      number = parseFloat(formatedText);
-    }
-  }
-
-  if (number === 0) {
-    isNegative = false;
-  }
-
-  parts.push(isNegative ? pattern.negPre : pattern.posPre,
-             formatedText,
-             isNegative ? pattern.negSuf : pattern.posSuf);
-  return parts.join('');
-}
-
-function padNumber(num, digits, trim) {
-  var neg = '';
-  if (num < 0) {
-    neg =  '-';
-    num = -num;
-  }
-  num = '' + num;
-  while (num.length < digits) num = '0' + num;
-  if (trim)
-    num = num.substr(num.length - digits);
-  return neg + num;
-}
-
-
-function dateGetter(name, size, offset, trim) {
-  offset = offset || 0;
-  return function(date) {
-    var value = date['get' + name]();
-    if (offset > 0 || value > -offset)
-      value += offset;
-    if (value === 0 && offset == -12) value = 12;
-    return padNumber(value, size, trim);
-  };
-}
-
-function dateStrGetter(name, shortForm) {
-  return function(date, formats) {
-    var value = date['get' + name]();
-    var get = uppercase(shortForm ? ('SHORT' + name) : name);
-
-    return formats[get][value];
-  };
-}
-
-function timeZoneGetter(date) {
-  var zone = -1 * date.getTimezoneOffset();
-  var paddedZone = (zone >= 0) ? "+" : "";
-
-  paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +
-                padNumber(Math.abs(zone % 60), 2);
-
-  return paddedZone;
-}
-
-function getFirstThursdayOfYear(year) {
-    // 0 = index of January
-    var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay();
-    // 4 = index of Thursday (+1 to account for 1st = 5)
-    // 11 = index of *next* Thursday (+1 account for 1st = 12)
-    return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst);
-}
-
-function getThursdayThisWeek(datetime) {
-    return new Date(datetime.getFullYear(), datetime.getMonth(),
-      // 4 = index of Thursday
-      datetime.getDate() + (4 - datetime.getDay()));
-}
-
-function weekGetter(size) {
-   return function(date) {
-      var firstThurs = getFirstThursdayOfYear(date.getFullYear()),
-         thisThurs = getThursdayThisWeek(date);
-
-      var diff = +thisThurs - +firstThurs,
-         result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week
-
-      return padNumber(result, size);
-   };
-}
-
-function ampmGetter(date, formats) {
-  return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
-}
-
-var DATE_FORMATS = {
-  yyyy: dateGetter('FullYear', 4),
-    yy: dateGetter('FullYear', 2, 0, true),
-     y: dateGetter('FullYear', 1),
-  MMMM: dateStrGetter('Month'),
-   MMM: dateStrGetter('Month', true),
-    MM: dateGetter('Month', 2, 1),
-     M: dateGetter('Month', 1, 1),
-    dd: dateGetter('Date', 2),
-     d: dateGetter('Date', 1),
-    HH: dateGetter('Hours', 2),
-     H: dateGetter('Hours', 1),
-    hh: dateGetter('Hours', 2, -12),
-     h: dateGetter('Hours', 1, -12),
-    mm: dateGetter('Minutes', 2),
-     m: dateGetter('Minutes', 1),
-    ss: dateGetter('Seconds', 2),
-     s: dateGetter('Seconds', 1),
-     // while ISO 8601 requires fractions to be prefixed with `.` or `,`
-     // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions
-   sss: dateGetter('Milliseconds', 3),
-  EEEE: dateStrGetter('Day'),
-   EEE: dateStrGetter('Day', true),
-     a: ampmGetter,
-     Z: timeZoneGetter,
-    ww: weekGetter(2),
-     w: weekGetter(1)
-};
-
-var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
-    NUMBER_STRING = /^\-?\d+$/;
-
-/**
- * @ngdoc filter
- * @name date
- * @kind function
- *
- * @description
- *   Formats `date` to a string based on the requested `format`.
- *
- *   `format` string can be composed of the following elements:
- *
- *   * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
- *   * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
- *   * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
- *   * `'MMMM'`: Month in year (January-December)
- *   * `'MMM'`: Month in year (Jan-Dec)
- *   * `'MM'`: Month in year, padded (01-12)
- *   * `'M'`: Month in year (1-12)
- *   * `'dd'`: Day in month, padded (01-31)
- *   * `'d'`: Day in month (1-31)
- *   * `'EEEE'`: Day in Week,(Sunday-Saturday)
- *   * `'EEE'`: Day in Week, (Sun-Sat)
- *   * `'HH'`: Hour in day, padded (00-23)
- *   * `'H'`: Hour in day (0-23)
- *   * `'hh'`: Hour in AM/PM, padded (01-12)
- *   * `'h'`: Hour in AM/PM, (1-12)
- *   * `'mm'`: Minute in hour, padded (00-59)
- *   * `'m'`: Minute in hour (0-59)
- *   * `'ss'`: Second in minute, padded (00-59)
- *   * `'s'`: Second in minute (0-59)
- *   * `'sss'`: Millisecond in second, padded (000-999)
- *   * `'a'`: AM/PM marker
- *   * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
- *   * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
- *   * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year
- *
- *   `format` string can also be one of the following predefined
- *   {@link guide/i18n localizable formats}:
- *
- *   * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale
- *     (e.g. Sep 3, 2010 12:05:08 PM)
- *   * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US  locale (e.g. 9/3/10 12:05 PM)
- *   * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US  locale
- *     (e.g. Friday, September 3, 2010)
- *   * `'longDate'`: equivalent to `'MMMM d, y'` for en_US  locale (e.g. September 3, 2010)
- *   * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US  locale (e.g. Sep 3, 2010)
- *   * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)
- *   * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM)
- *   * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM)
- *
- *   `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.
- *   `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence
- *   (e.g. `"h 'o''clock'"`).
- *
- * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
- *    number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
- *    shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
- *    specified in the string input, the time is considered to be in the local timezone.
- * @param {string=} format Formatting rules (see Description). If not specified,
- *    `mediumDate` is used.
- * @param {string=} timezone Timezone to be used for formatting. Right now, only `'UTC'` is supported.
- *    If not specified, the timezone of the browser will be used.
- * @returns {string} Formatted string or the input if input is not recognized as date/millis.
- *
- * @example
-   <example>
-     <file name="index.html">
-       <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
-           <span>{{1288323623006 | date:'medium'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
-          <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
-          <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
-          <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should format date', function() {
-         expect(element(by.binding("1288323623006 | date:'medium'")).getText()).
-            toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/);
-         expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()).
-            toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
-         expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
-            toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
-         expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
-            toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
-       });
-     </file>
-   </example>
- */
-dateFilter.$inject = ['$locale'];
-function dateFilter($locale) {
-
-
-  var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
-                     // 1        2       3         4          5          6          7          8  9     10      11
-  function jsonStringToDate(string) {
-    var match;
-    if (match = string.match(R_ISO8601_STR)) {
-      var date = new Date(0),
-          tzHour = 0,
-          tzMin  = 0,
-          dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,
-          timeSetter = match[8] ? date.setUTCHours : date.setHours;
-
-      if (match[9]) {
-        tzHour = int(match[9] + match[10]);
-        tzMin = int(match[9] + match[11]);
-      }
-      dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));
-      var h = int(match[4] || 0) - tzHour;
-      var m = int(match[5] || 0) - tzMin;
-      var s = int(match[6] || 0);
-      var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
-      timeSetter.call(date, h, m, s, ms);
-      return date;
-    }
-    return string;
-  }
-
-
-  return function(date, format, timezone) {
-    var text = '',
-        parts = [],
-        fn, match;
-
-    format = format || 'mediumDate';
-    format = $locale.DATETIME_FORMATS[format] || format;
-    if (isString(date)) {
-      date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date);
-    }
-
-    if (isNumber(date)) {
-      date = new Date(date);
-    }
-
-    if (!isDate(date)) {
-      return date;
-    }
-
-    while (format) {
-      match = DATE_FORMATS_SPLIT.exec(format);
-      if (match) {
-        parts = concat(parts, match, 1);
-        format = parts.pop();
-      } else {
-        parts.push(format);
-        format = null;
-      }
-    }
-
-    if (timezone && timezone === 'UTC') {
-      date = new Date(date.getTime());
-      date.setMinutes(date.getMinutes() + date.getTimezoneOffset());
-    }
-    forEach(parts, function(value) {
-      fn = DATE_FORMATS[value];
-      text += fn ? fn(date, $locale.DATETIME_FORMATS)
-                 : value.replace(/(^'|'$)/g, '').replace(/''/g, "'");
-    });
-
-    return text;
-  };
-}
-
-
-/**
- * @ngdoc filter
- * @name json
- * @kind function
- *
- * @description
- *   Allows you to convert a JavaScript object into JSON string.
- *
- *   This filter is mostly useful for debugging. When using the double curly {{value}} notation
- *   the binding is automatically converted to JSON.
- *
- * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.
- * @param {number=} spacing The number of spaces to use per indentation, defaults to 2.
- * @returns {string} JSON string.
- *
- *
- * @example
-   <example>
-     <file name="index.html">
-       <pre id="default-spacing">{{ {'name':'value'} | json }}</pre>
-       <pre id="custom-spacing">{{ {'name':'value'} | json:4 }}</pre>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should jsonify filtered objects', function() {
-         expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n  "name": ?"value"\n}/);
-         expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n    "name": ?"value"\n}/);
-       });
-     </file>
-   </example>
- *
- */
-function jsonFilter() {
-  return function(object, spacing) {
-    if (isUndefined(spacing)) {
-        spacing = 2;
-    }
-    return toJson(object, spacing);
-  };
-}
-
-
-/**
- * @ngdoc filter
- * @name lowercase
- * @kind function
- * @description
- * Converts string to lowercase.
- * @see angular.lowercase
- */
-var lowercaseFilter = valueFn(lowercase);
-
-
-/**
- * @ngdoc filter
- * @name uppercase
- * @kind function
- * @description
- * Converts string to uppercase.
- * @see angular.uppercase
- */
-var uppercaseFilter = valueFn(uppercase);
-
-/**
- * @ngdoc filter
- * @name limitTo
- * @kind function
- *
- * @description
- * Creates a new array or string containing only a specified number of elements. The elements
- * are taken from either the beginning or the end of the source array, string or number, as specified by
- * the value and sign (positive or negative) of `limit`. If a number is used as input, it is
- * converted to a string.
- *
- * @param {Array|string|number} input Source array, string or number to be limited.
- * @param {string|number} limit The length of the returned array or string. If the `limit` number
- *     is positive, `limit` number of items from the beginning of the source array/string are copied.
- *     If the number is negative, `limit` number  of items from the end of the source array/string
- *     are copied. The `limit` will be trimmed if it exceeds `array.length`
- * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array
- *     had less than `limit` elements.
- *
- * @example
-   <example module="limitToExample">
-     <file name="index.html">
-       <script>
-         angular.module('limitToExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.numbers = [1,2,3,4,5,6,7,8,9];
-             $scope.letters = "abcdefghi";
-             $scope.longNumber = 2345432342;
-             $scope.numLimit = 3;
-             $scope.letterLimit = 3;
-             $scope.longNumberLimit = 3;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Limit {{numbers}} to: <input type="number" step="1" ng-model="numLimit">
-         <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>
-         Limit {{letters}} to: <input type="number" step="1" ng-model="letterLimit">
-         <p>Output letters: {{ letters | limitTo:letterLimit }}</p>
-         Limit {{longNumber}} to: <input type="number" step="1" ng-model="longNumberLimit">
-         <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       var numLimitInput = element(by.model('numLimit'));
-       var letterLimitInput = element(by.model('letterLimit'));
-       var longNumberLimitInput = element(by.model('longNumberLimit'));
-       var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));
-       var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));
-       var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit'));
-
-       it('should limit the number array to first three items', function() {
-         expect(numLimitInput.getAttribute('value')).toBe('3');
-         expect(letterLimitInput.getAttribute('value')).toBe('3');
-         expect(longNumberLimitInput.getAttribute('value')).toBe('3');
-         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');
-         expect(limitedLetters.getText()).toEqual('Output letters: abc');
-         expect(limitedLongNumber.getText()).toEqual('Output long number: 234');
-       });
-
-       // There is a bug in safari and protractor that doesn't like the minus key
-       // it('should update the output when -3 is entered', function() {
-       //   numLimitInput.clear();
-       //   numLimitInput.sendKeys('-3');
-       //   letterLimitInput.clear();
-       //   letterLimitInput.sendKeys('-3');
-       //   longNumberLimitInput.clear();
-       //   longNumberLimitInput.sendKeys('-3');
-       //   expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');
-       //   expect(limitedLetters.getText()).toEqual('Output letters: ghi');
-       //   expect(limitedLongNumber.getText()).toEqual('Output long number: 342');
-       // });
-
-       it('should not exceed the maximum size of input array', function() {
-         numLimitInput.clear();
-         numLimitInput.sendKeys('100');
-         letterLimitInput.clear();
-         letterLimitInput.sendKeys('100');
-         longNumberLimitInput.clear();
-         longNumberLimitInput.sendKeys('100');
-         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');
-         expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');
-         expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342');
-       });
-     </file>
-   </example>
-*/
-function limitToFilter() {
-  return function(input, limit) {
-    if (isNumber(input)) input = input.toString();
-    if (!isArray(input) && !isString(input)) return input;
-
-    if (Math.abs(Number(limit)) === Infinity) {
-      limit = Number(limit);
-    } else {
-      limit = int(limit);
-    }
-
-    //NaN check on limit
-    if (limit) {
-      return limit > 0 ? input.slice(0, limit) : input.slice(limit);
-    } else {
-      return isString(input) ? "" : [];
-    }
-  };
-}
-
-/**
- * @ngdoc filter
- * @name orderBy
- * @kind function
- *
- * @description
- * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically
- * for strings and numerically for numbers. Note: if you notice numbers are not being sorted
- * correctly, make sure they are actually being saved as numbers and not strings.
- *
- * @param {Array} array The array to sort.
- * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be
- *    used by the comparator to determine the order of elements.
- *
- *    Can be one of:
- *
- *    - `function`: Getter function. The result of this function will be sorted using the
- *      `<`, `=`, `>` operator.
- *    - `string`: An Angular expression. The result of this expression is used to compare elements
- *      (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
- *      3 first characters of a property called `name`). The result of a constant expression
- *      is interpreted as a property name to be used in comparisons (for example `"special name"`
- *      to sort object by the value of their `special name` property). An expression can be
- *      optionally prefixed with `+` or `-` to control ascending or descending sort order
- *      (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array
- *      element itself is used to compare where sorting.
- *    - `Array`: An array of function or string predicates. The first predicate in the array
- *      is used for sorting, but when two items are equivalent, the next predicate is used.
- *
- *    If the predicate is missing or empty then it defaults to `'+'`.
- *
- * @param {boolean=} reverse Reverse the order of the array.
- * @returns {Array} Sorted copy of the source array.
- *
- * @example
-   <example module="orderByExample">
-     <file name="index.html">
-       <script>
-         angular.module('orderByExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.friends =
-                 [{name:'John', phone:'555-1212', age:10},
-                  {name:'Mary', phone:'555-9876', age:19},
-                  {name:'Mike', phone:'555-4321', age:21},
-                  {name:'Adam', phone:'555-5678', age:35},
-                  {name:'Julie', phone:'555-8765', age:29}];
-             $scope.predicate = '-age';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
-         <hr/>
-         [ <a href="" ng-click="predicate=''">unsorted</a> ]
-         <table class="friend">
-           <tr>
-             <th><a href="" ng-click="predicate = 'name'; reverse=false">Name</a>
-                 (<a href="" ng-click="predicate = '-name'; reverse=false">^</a>)</th>
-             <th><a href="" ng-click="predicate = 'phone'; reverse=!reverse">Phone Number</a></th>
-             <th><a href="" ng-click="predicate = 'age'; reverse=!reverse">Age</a></th>
-           </tr>
-           <tr ng-repeat="friend in friends | orderBy:predicate:reverse">
-             <td>{{friend.name}}</td>
-             <td>{{friend.phone}}</td>
-             <td>{{friend.age}}</td>
-           </tr>
-         </table>
-       </div>
-     </file>
-   </example>
- *
- * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the
- * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the
- * desired parameters.
- *
- * Example:
- *
- * @example
-  <example module="orderByExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <table class="friend">
-          <tr>
-            <th><a href="" ng-click="reverse=false;order('name', false)">Name</a>
-              (<a href="" ng-click="order('-name',false)">^</a>)</th>
-            <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th>
-            <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th>
-          </tr>
-          <tr ng-repeat="friend in friends">
-            <td>{{friend.name}}</td>
-            <td>{{friend.phone}}</td>
-            <td>{{friend.age}}</td>
-          </tr>
-        </table>
-      </div>
-    </file>
-
-    <file name="script.js">
-      angular.module('orderByExample', [])
-        .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {
-          var orderBy = $filter('orderBy');
-          $scope.friends = [
-            { name: 'John',    phone: '555-1212',    age: 10 },
-            { name: 'Mary',    phone: '555-9876',    age: 19 },
-            { name: 'Mike',    phone: '555-4321',    age: 21 },
-            { name: 'Adam',    phone: '555-5678',    age: 35 },
-            { name: 'Julie',   phone: '555-8765',    age: 29 }
-          ];
-          $scope.order = function(predicate, reverse) {
-            $scope.friends = orderBy($scope.friends, predicate, reverse);
-          };
-          $scope.order('-age',false);
-        }]);
-    </file>
-</example>
- */
-orderByFilter.$inject = ['$parse'];
-function orderByFilter($parse) {
-  return function(array, sortPredicate, reverseOrder) {
-    if (!(isArrayLike(array))) return array;
-    sortPredicate = isArray(sortPredicate) ? sortPredicate : [sortPredicate];
-    if (sortPredicate.length === 0) { sortPredicate = ['+']; }
-    sortPredicate = sortPredicate.map(function(predicate) {
-      var descending = false, get = predicate || identity;
-      if (isString(predicate)) {
-        if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {
-          descending = predicate.charAt(0) == '-';
-          predicate = predicate.substring(1);
-        }
-        if (predicate === '') {
-          // Effectively no predicate was passed so we compare identity
-          return reverseComparator(compare, descending);
-        }
-        get = $parse(predicate);
-        if (get.constant) {
-          var key = get();
-          return reverseComparator(function(a, b) {
-            return compare(a[key], b[key]);
-          }, descending);
-        }
-      }
-      return reverseComparator(function(a, b) {
-        return compare(get(a),get(b));
-      }, descending);
-    });
-    return slice.call(array).sort(reverseComparator(comparator, reverseOrder));
-
-    function comparator(o1, o2) {
-      for (var i = 0; i < sortPredicate.length; i++) {
-        var comp = sortPredicate[i](o1, o2);
-        if (comp !== 0) return comp;
-      }
-      return 0;
-    }
-    function reverseComparator(comp, descending) {
-      return descending
-          ? function(a, b) {return comp(b,a);}
-          : comp;
-    }
-
-    function isPrimitive(value) {
-      switch (typeof value) {
-        case 'number': /* falls through */
-        case 'boolean': /* falls through */
-        case 'string':
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    function objectToString(value) {
-      if (value === null) return 'null';
-      if (typeof value.valueOf === 'function') {
-        value = value.valueOf();
-        if (isPrimitive(value)) return value;
-      }
-      if (typeof value.toString === 'function') {
-        value = value.toString();
-        if (isPrimitive(value)) return value;
-      }
-      return '';
-    }
-
-    function compare(v1, v2) {
-      var t1 = typeof v1;
-      var t2 = typeof v2;
-      if (t1 === t2 && t1 === "object") {
-        v1 = objectToString(v1);
-        v2 = objectToString(v2);
-      }
-      if (t1 === t2) {
-        if (t1 === "string") {
-           v1 = v1.toLowerCase();
-           v2 = v2.toLowerCase();
-        }
-        if (v1 === v2) return 0;
-        return v1 < v2 ? -1 : 1;
-      } else {
-        return t1 < t2 ? -1 : 1;
-      }
-    }
-  };
-}
-
-function ngDirective(directive) {
-  if (isFunction(directive)) {
-    directive = {
-      link: directive
-    };
-  }
-  directive.restrict = directive.restrict || 'AC';
-  return valueFn(directive);
-}
-
-/**
- * @ngdoc directive
- * @name a
- * @restrict E
- *
- * @description
- * Modifies the default behavior of the html A tag so that the default action is prevented when
- * the href attribute is empty.
- *
- * This change permits the easy creation of action links with the `ngClick` directive
- * without changing the location or causing page reloads, e.g.:
- * `<a href="" ng-click="list.addItem()">Add Item</a>`
- */
-var htmlAnchorDirective = valueFn({
-  restrict: 'E',
-  compile: function(element, attr) {
-    if (!attr.href && !attr.xlinkHref && !attr.name) {
-      return function(scope, element) {
-        // If the linked element is not an anchor tag anymore, do nothing
-        if (element[0].nodeName.toLowerCase() !== 'a') return;
-
-        // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
-        var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
-                   'xlink:href' : 'href';
-        element.on('click', function(event) {
-          // if we have no href url, then don't navigate anywhere.
-          if (!element.attr(href)) {
-            event.preventDefault();
-          }
-        });
-      };
-    }
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngHref
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in an href attribute will
- * make the link go to the wrong URL if the user clicks it before
- * Angular has a chance to replace the `{{hash}}` markup with its
- * value. Until Angular replaces the markup the link will be broken
- * and will most likely return a 404 error. The `ngHref` directive
- * solves this problem.
- *
- * The wrong way to write it:
- * ```html
- * <a href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <a ng-href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
- * ```
- *
- * @element A
- * @param {template} ngHref any string which can contain `{{}}` markup.
- *
- * @example
- * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes
- * in links and their different behaviors:
-    <example>
-      <file name="index.html">
-        <input ng-model="value" /><br />
-        <a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)<br />
-        <a id="link-2" href="" ng-click="value = 2">link 2</a> (link, don't reload)<br />
-        <a id="link-3" ng-href="/{{'123'}}">link 3</a> (link, reload!)<br />
-        <a id="link-4" href="" name="xx" ng-click="value = 4">anchor</a> (link, don't reload)<br />
-        <a id="link-5" name="xxx" ng-click="value = 5">anchor</a> (no link)<br />
-        <a id="link-6" ng-href="{{value}}">link</a> (link, change location)
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should execute ng-click but not reload when href without value', function() {
-          element(by.id('link-1')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('1');
-          expect(element(by.id('link-1')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click but not reload when href empty string', function() {
-          element(by.id('link-2')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('2');
-          expect(element(by.id('link-2')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click and change url when ng-href specified', function() {
-          expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/);
-
-          element(by.id('link-3')).click();
-
-          // At this point, we navigate away from an Angular page, so we need
-          // to use browser.driver to get the base webdriver.
-
-          browser.wait(function() {
-            return browser.driver.getCurrentUrl().then(function(url) {
-              return url.match(/\/123$/);
-            });
-          }, 5000, 'page should navigate to /123');
-        });
-
-        xit('should execute ng-click but not reload when href empty string and name specified', function() {
-          element(by.id('link-4')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('4');
-          expect(element(by.id('link-4')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click but not reload when no href but name specified', function() {
-          element(by.id('link-5')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('5');
-          expect(element(by.id('link-5')).getAttribute('href')).toBe(null);
-        });
-
-        it('should only change url when only ng-href', function() {
-          element(by.model('value')).clear();
-          element(by.model('value')).sendKeys('6');
-          expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/);
-
-          element(by.id('link-6')).click();
-
-          // At this point, we navigate away from an Angular page, so we need
-          // to use browser.driver to get the base webdriver.
-          browser.wait(function() {
-            return browser.driver.getCurrentUrl().then(function(url) {
-              return url.match(/\/6$/);
-            });
-          }, 5000, 'page should navigate to /6');
-        });
-      </file>
-    </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngSrc
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in a `src` attribute doesn't
- * work right: The browser will fetch from the URL with the literal
- * text `{{hash}}` until Angular replaces the expression inside
- * `{{hash}}`. The `ngSrc` directive solves this problem.
- *
- * The buggy way to write it:
- * ```html
- * <img src="http://www.gravatar.com/avatar/{{hash}}"/>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <img ng-src="http://www.gravatar.com/avatar/{{hash}}"/>
- * ```
- *
- * @element IMG
- * @param {template} ngSrc any string which can contain `{{}}` markup.
- */
-
-/**
- * @ngdoc directive
- * @name ngSrcset
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't
- * work right: The browser will fetch from the URL with the literal
- * text `{{hash}}` until Angular replaces the expression inside
- * `{{hash}}`. The `ngSrcset` directive solves this problem.
- *
- * The buggy way to write it:
- * ```html
- * <img srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <img ng-srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
- * ```
- *
- * @element IMG
- * @param {template} ngSrcset any string which can contain `{{}}` markup.
- */
-
-/**
- * @ngdoc directive
- * @name ngDisabled
- * @restrict A
- * @priority 100
- *
- * @description
- *
- * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:
- * ```html
- * <div ng-init="scope = { isDisabled: false }">
- *  <button disabled="{{scope.isDisabled}}">Disabled</button>
- * </div>
- * ```
- *
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as disabled. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngDisabled` directive solves this problem for the `disabled` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- *
- * @example
-    <example>
-      <file name="index.html">
-        Click me to toggle: <input type="checkbox" ng-model="checked"><br/>
-        <button ng-model="button" ng-disabled="checked">Button</button>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should toggle button', function() {
-          expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();
-          element(by.model('checked')).click();
-          expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
- *     then special attribute "disabled" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngChecked
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as checked. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngChecked` directive solves this problem for the `checked` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-    <example>
-      <file name="index.html">
-        Check me to check both: <input type="checkbox" ng-model="master"><br/>
-        <input id="checkSlave" type="checkbox" ng-checked="master">
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should check both checkBoxes', function() {
-          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();
-          element(by.model('master')).click();
-          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,
- *     then special attribute "checked" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngReadonly
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as readonly. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngReadonly` directive solves this problem for the `readonly` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-    <example>
-      <file name="index.html">
-        Check me to make text readonly: <input type="checkbox" ng-model="checked"><br/>
-        <input type="text" ng-readonly="checked" value="I'm Angular"/>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should toggle readonly attr', function() {
-          expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
-          element(by.model('checked')).click();
-          expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,
- *     then special attribute "readonly" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngSelected
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as selected. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngSelected` directive solves this problem for the `selected` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- *
- * @example
-    <example>
-      <file name="index.html">
-        Check me to select: <input type="checkbox" ng-model="selected"><br/>
-        <select>
-          <option>Hello!</option>
-          <option id="greet" ng-selected="selected">Greetings!</option>
-        </select>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should select Greetings!', function() {
-          expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();
-          element(by.model('selected')).click();
-          expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element OPTION
- * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,
- *     then special attribute "selected" will be set on the element
- */
-
-/**
- * @ngdoc directive
- * @name ngOpen
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as open. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngOpen` directive solves this problem for the `open` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-     <example>
-       <file name="index.html">
-         Check me check multiple: <input type="checkbox" ng-model="open"><br/>
-         <details id="details" ng-open="open">
-            <summary>Show/Hide me</summary>
-         </details>
-       </file>
-       <file name="protractor.js" type="protractor">
-         it('should toggle open', function() {
-           expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
-           element(by.model('open')).click();
-           expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
-         });
-       </file>
-     </example>
- *
- * @element DETAILS
- * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,
- *     then special attribute "open" will be set on the element
- */
-
-var ngAttributeAliasDirectives = {};
-
-
-// boolean attrs are evaluated
-forEach(BOOLEAN_ATTR, function(propName, attrName) {
-  // binding to multiple is not supported
-  if (propName == "multiple") return;
-
-  var normalized = directiveNormalize('ng-' + attrName);
-  ngAttributeAliasDirectives[normalized] = function() {
-    return {
-      restrict: 'A',
-      priority: 100,
-      link: function(scope, element, attr) {
-        scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
-          attr.$set(attrName, !!value);
-        });
-      }
-    };
-  };
-});
-
-// aliased input attrs are evaluated
-forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {
-  ngAttributeAliasDirectives[ngAttr] = function() {
-    return {
-      priority: 100,
-      link: function(scope, element, attr) {
-        //special case ngPattern when a literal regular expression value
-        //is used as the expression (this way we don't have to watch anything).
-        if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) == "/") {
-          var match = attr.ngPattern.match(REGEX_STRING_REGEXP);
-          if (match) {
-            attr.$set("ngPattern", new RegExp(match[1], match[2]));
-            return;
-          }
-        }
-
-        scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {
-          attr.$set(ngAttr, value);
-        });
-      }
-    };
-  };
-});
-
-// ng-src, ng-srcset, ng-href are interpolated
-forEach(['src', 'srcset', 'href'], function(attrName) {
-  var normalized = directiveNormalize('ng-' + attrName);
-  ngAttributeAliasDirectives[normalized] = function() {
-    return {
-      priority: 99, // it needs to run after the attributes are interpolated
-      link: function(scope, element, attr) {
-        var propName = attrName,
-            name = attrName;
-
-        if (attrName === 'href' &&
-            toString.call(element.prop('href')) === '[object SVGAnimatedString]') {
-          name = 'xlinkHref';
-          attr.$attr[name] = 'xlink:href';
-          propName = null;
-        }
-
-        attr.$observe(normalized, function(value) {
-          if (!value) {
-            if (attrName === 'href') {
-              attr.$set(name, null);
-            }
-            return;
-          }
-
-          attr.$set(name, value);
-
-          // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist
-          // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need
-          // to set the property as well to achieve the desired effect.
-          // we use attr[attrName] value since $set can sanitize the url.
-          if (msie && propName) element.prop(propName, attr[name]);
-        });
-      }
-    };
-  };
-});
-
-/* global -nullFormCtrl, -SUBMITTED_CLASS, addSetValidityMethod: true
- */
-var nullFormCtrl = {
-  $addControl: noop,
-  $$renameControl: nullFormRenameControl,
-  $removeControl: noop,
-  $setValidity: noop,
-  $setDirty: noop,
-  $setPristine: noop,
-  $setSubmitted: noop
-},
-SUBMITTED_CLASS = 'ng-submitted';
-
-function nullFormRenameControl(control, name) {
-  control.$name = name;
-}
-
-/**
- * @ngdoc type
- * @name form.FormController
- *
- * @property {boolean} $pristine True if user has not interacted with the form yet.
- * @property {boolean} $dirty True if user has already interacted with the form.
- * @property {boolean} $valid True if all of the containing forms and controls are valid.
- * @property {boolean} $invalid True if at least one containing control or form is invalid.
- * @property {boolean} $submitted True if user has submitted the form even if its invalid.
- *
- * @property {Object} $error Is an object hash, containing references to controls or
- *  forms with failing validators, where:
- *
- *  - keys are validation tokens (error names),
- *  - values are arrays of controls or forms that have a failing validator for given error name.
- *
- *  Built-in validation tokens:
- *
- *  - `email`
- *  - `max`
- *  - `maxlength`
- *  - `min`
- *  - `minlength`
- *  - `number`
- *  - `pattern`
- *  - `required`
- *  - `url`
- *  - `date`
- *  - `datetimelocal`
- *  - `time`
- *  - `week`
- *  - `month`
- *
- * @description
- * `FormController` keeps track of all its controls and nested forms as well as the state of them,
- * such as being valid/invalid or dirty/pristine.
- *
- * Each {@link ng.directive:form form} directive creates an instance
- * of `FormController`.
- *
- */
-//asks for $scope to fool the BC controller module
-FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate'];
-function FormController(element, attrs, $scope, $animate, $interpolate) {
-  var form = this,
-      controls = [];
-
-  var parentForm = form.$$parentForm = element.parent().controller('form') || nullFormCtrl;
-
-  // init state
-  form.$error = {};
-  form.$$success = {};
-  form.$pending = undefined;
-  form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope);
-  form.$dirty = false;
-  form.$pristine = true;
-  form.$valid = true;
-  form.$invalid = false;
-  form.$submitted = false;
-
-  parentForm.$addControl(form);
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$rollbackViewValue
-   *
-   * @description
-   * Rollback all form controls pending updates to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. This method is typically needed by the reset button of
-   * a form that uses `ng-model-options` to pend updates.
-   */
-  form.$rollbackViewValue = function() {
-    forEach(controls, function(control) {
-      control.$rollbackViewValue();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$commitViewValue
-   *
-   * @description
-   * Commit all form controls pending updates to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. This method is rarely needed as `NgModelController`
-   * usually handles calling this in response to input events.
-   */
-  form.$commitViewValue = function() {
-    forEach(controls, function(control) {
-      control.$commitViewValue();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$addControl
-   *
-   * @description
-   * Register a control with the form.
-   *
-   * Input elements using ngModelController do this automatically when they are linked.
-   */
-  form.$addControl = function(control) {
-    // Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
-    // and not added to the scope.  Now we throw an error.
-    assertNotHasOwnProperty(control.$name, 'input');
-    controls.push(control);
-
-    if (control.$name) {
-      form[control.$name] = control;
-    }
-  };
-
-  // Private API: rename a form control
-  form.$$renameControl = function(control, newName) {
-    var oldName = control.$name;
-
-    if (form[oldName] === control) {
-      delete form[oldName];
-    }
-    form[newName] = control;
-    control.$name = newName;
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$removeControl
-   *
-   * @description
-   * Deregister a control from the form.
-   *
-   * Input elements using ngModelController do this automatically when they are destroyed.
-   */
-  form.$removeControl = function(control) {
-    if (control.$name && form[control.$name] === control) {
-      delete form[control.$name];
-    }
-    forEach(form.$pending, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-    forEach(form.$error, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-    forEach(form.$$success, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-
-    arrayRemove(controls, control);
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setValidity
-   *
-   * @description
-   * Sets the validity of a form control.
-   *
-   * This method will also propagate to parent forms.
-   */
-  addSetValidityMethod({
-    ctrl: this,
-    $element: element,
-    set: function(object, property, controller) {
-      var list = object[property];
-      if (!list) {
-        object[property] = [controller];
-      } else {
-        var index = list.indexOf(controller);
-        if (index === -1) {
-          list.push(controller);
-        }
-      }
-    },
-    unset: function(object, property, controller) {
-      var list = object[property];
-      if (!list) {
-        return;
-      }
-      arrayRemove(list, controller);
-      if (list.length === 0) {
-        delete object[property];
-      }
-    },
-    parentForm: parentForm,
-    $animate: $animate
-  });
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setDirty
-   *
-   * @description
-   * Sets the form to a dirty state.
-   *
-   * This method can be called to add the 'ng-dirty' class and set the form to a dirty
-   * state (ng-dirty class). This method will also propagate to parent forms.
-   */
-  form.$setDirty = function() {
-    $animate.removeClass(element, PRISTINE_CLASS);
-    $animate.addClass(element, DIRTY_CLASS);
-    form.$dirty = true;
-    form.$pristine = false;
-    parentForm.$setDirty();
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setPristine
-   *
-   * @description
-   * Sets the form to its pristine state.
-   *
-   * This method can be called to remove the 'ng-dirty' class and set the form to its pristine
-   * state (ng-pristine class). This method will also propagate to all the controls contained
-   * in this form.
-   *
-   * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after
-   * saving or resetting it.
-   */
-  form.$setPristine = function() {
-    $animate.setClass(element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS);
-    form.$dirty = false;
-    form.$pristine = true;
-    form.$submitted = false;
-    forEach(controls, function(control) {
-      control.$setPristine();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setUntouched
-   *
-   * @description
-   * Sets the form to its untouched state.
-   *
-   * This method can be called to remove the 'ng-touched' class and set the form controls to their
-   * untouched state (ng-untouched class).
-   *
-   * Setting a form controls back to their untouched state is often useful when setting the form
-   * back to its pristine state.
-   */
-  form.$setUntouched = function() {
-    forEach(controls, function(control) {
-      control.$setUntouched();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setSubmitted
-   *
-   * @description
-   * Sets the form to its submitted state.
-   */
-  form.$setSubmitted = function() {
-    $animate.addClass(element, SUBMITTED_CLASS);
-    form.$submitted = true;
-    parentForm.$setSubmitted();
-  };
-}
-
-/**
- * @ngdoc directive
- * @name ngForm
- * @restrict EAC
- *
- * @description
- * Nestable alias of {@link ng.directive:form `form`} directive. HTML
- * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a
- * sub-group of controls needs to be determined.
- *
- * Note: the purpose of `ngForm` is to group controls,
- * but not to be a replacement for the `<form>` tag with all of its capabilities
- * (e.g. posting to the server, ...).
- *
- * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into
- *                       related scope, under this name.
- *
- */
-
- /**
- * @ngdoc directive
- * @name form
- * @restrict E
- *
- * @description
- * Directive that instantiates
- * {@link form.FormController FormController}.
- *
- * If the `name` attribute is specified, the form controller is published onto the current scope under
- * this name.
- *
- * # Alias: {@link ng.directive:ngForm `ngForm`}
- *
- * In Angular forms can be nested. This means that the outer form is valid when all of the child
- * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so
- * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to
- * `<form>` but can be nested.  This allows you to have nested forms, which is very useful when
- * using Angular validation directives in forms that are dynamically generated using the
- * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`
- * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an
- * `ngForm` directive and nest these in an outer `form` element.
- *
- *
- * # CSS classes
- *  - `ng-valid` is set if the form is valid.
- *  - `ng-invalid` is set if the form is invalid.
- *  - `ng-pristine` is set if the form is pristine.
- *  - `ng-dirty` is set if the form is dirty.
- *  - `ng-submitted` is set if the form was submitted.
- *
- * Keep in mind that ngAnimate can detect each of these classes when added and removed.
- *
- *
- * # Submitting a form and preventing the default action
- *
- * Since the role of forms in client-side Angular applications is different than in classical
- * roundtrip apps, it is desirable for the browser not to translate the form submission into a full
- * page reload that sends the data to the server. Instead some javascript logic should be triggered
- * to handle the form submission in an application-specific way.
- *
- * For this reason, Angular prevents the default action (form submission to the server) unless the
- * `<form>` element has an `action` attribute specified.
- *
- * You can use one of the following two ways to specify what javascript method should be called when
- * a form is submitted:
- *
- * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element
- * - {@link ng.directive:ngClick ngClick} directive on the first
-  *  button or input field of type submit (input[type=submit])
- *
- * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}
- * or {@link ng.directive:ngClick ngClick} directives.
- * This is because of the following form submission rules in the HTML specification:
- *
- * - If a form has only one input field then hitting enter in this field triggers form submit
- * (`ngSubmit`)
- * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter
- * doesn't trigger submit
- * - if a form has one or more input fields and one or more buttons or input[type=submit] then
- * hitting enter in any of the input fields will trigger the click handler on the *first* button or
- * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)
- *
- * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is
- * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
- * to have access to the updated model.
- *
- * ## Animation Hooks
- *
- * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.
- * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any
- * other validations that are performed within the form. Animations in ngForm are similar to how
- * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well
- * as JS animations.
- *
- * The following example shows a simple way to utilize CSS transitions to style a form element
- * that has been rendered as invalid after it has been validated:
- *
- * <pre>
- * //be sure to include ngAnimate as a module to hook into more
- * //advanced animations
- * .my-form {
- *   transition:0.5s linear all;
- *   background: white;
- * }
- * .my-form.ng-invalid {
- *   background: red;
- *   color:white;
- * }
- * </pre>
- *
- * @example
-    <example deps="angular-animate.js" animations="true" fixBase="true" module="formExample">
-      <file name="index.html">
-       <script>
-         angular.module('formExample', [])
-           .controller('FormController', ['$scope', function($scope) {
-             $scope.userType = 'guest';
-           }]);
-       </script>
-       <style>
-        .my-form {
-          -webkit-transition:all linear 0.5s;
-          transition:all linear 0.5s;
-          background: transparent;
-        }
-        .my-form.ng-invalid {
-          background: red;
-        }
-       </style>
-       <form name="myForm" ng-controller="FormController" class="my-form">
-         userType: <input name="input" ng-model="userType" required>
-         <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
-         <tt>userType = {{userType}}</tt><br>
-         <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br>
-         <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br>
-         <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
-         <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
-        </form>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should initialize to model', function() {
-          var userType = element(by.binding('userType'));
-          var valid = element(by.binding('myForm.input.$valid'));
-
-          expect(userType.getText()).toContain('guest');
-          expect(valid.getText()).toContain('true');
-        });
-
-        it('should be invalid if empty', function() {
-          var userType = element(by.binding('userType'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var userInput = element(by.model('userType'));
-
-          userInput.clear();
-          userInput.sendKeys('');
-
-          expect(userType.getText()).toEqual('userType =');
-          expect(valid.getText()).toContain('false');
-        });
-      </file>
-    </example>
- *
- * @param {string=} name Name of the form. If specified, the form controller will be published into
- *                       related scope, under this name.
- */
-var formDirectiveFactory = function(isNgForm) {
-  return ['$timeout', function($timeout) {
-    var formDirective = {
-      name: 'form',
-      restrict: isNgForm ? 'EAC' : 'E',
-      controller: FormController,
-      compile: function ngFormCompile(formElement) {
-        // Setup initial state of the control
-        formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
-
-        return {
-          pre: function ngFormPreLink(scope, formElement, attr, controller) {
-            // if `action` attr is not present on the form, prevent the default action (submission)
-            if (!('action' in attr)) {
-              // we can't use jq events because if a form is destroyed during submission the default
-              // action is not prevented. see #1238
-              //
-              // IE 9 is not affected because it doesn't fire a submit event and try to do a full
-              // page reload if the form was destroyed by submission of the form via a click handler
-              // on a button in the form. Looks like an IE9 specific bug.
-              var handleFormSubmission = function(event) {
-                scope.$apply(function() {
-                  controller.$commitViewValue();
-                  controller.$setSubmitted();
-                });
-
-                event.preventDefault();
-              };
-
-              addEventListenerFn(formElement[0], 'submit', handleFormSubmission);
-
-              // unregister the preventDefault listener so that we don't not leak memory but in a
-              // way that will achieve the prevention of the default action.
-              formElement.on('$destroy', function() {
-                $timeout(function() {
-                  removeEventListenerFn(formElement[0], 'submit', handleFormSubmission);
-                }, 0, false);
-              });
-            }
-
-            var parentFormCtrl = controller.$$parentForm,
-                alias = controller.$name;
-
-            if (alias) {
-              setter(scope, null, alias, controller, alias);
-              attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) {
-                if (alias === newValue) return;
-                setter(scope, null, alias, undefined, alias);
-                alias = newValue;
-                setter(scope, null, alias, controller, alias);
-                parentFormCtrl.$$renameControl(controller, alias);
-              });
-            }
-            formElement.on('$destroy', function() {
-              parentFormCtrl.$removeControl(controller);
-              if (alias) {
-                setter(scope, null, alias, undefined, alias);
-              }
-              extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards
-            });
-          }
-        };
-      }
-    };
-
-    return formDirective;
-  }];
-};
-
-var formDirective = formDirectiveFactory();
-var ngFormDirective = formDirectiveFactory(true);
-
-/* global VALID_CLASS: false,
-  INVALID_CLASS: false,
-  PRISTINE_CLASS: false,
-  DIRTY_CLASS: false,
-  UNTOUCHED_CLASS: false,
-  TOUCHED_CLASS: false,
-  $ngModelMinErr: false,
-*/
-
-// Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231
-var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
-var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
-var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
-var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;
-var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/;
-var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
-var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/;
-var MONTH_REGEXP = /^(\d{4})-(\d\d)$/;
-var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
-
-var inputType = {
-
-  /**
-   * @ngdoc input
-   * @name input[text]
-   *
-   * @description
-   * Standard HTML text input with angular data binding, inherited by most of the `input` elements.
-   *
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Adds `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
-   *    This parameter is ignored for input[type=password] controls, which will never trim the
-   *    input.
-   *
-   * @example
-      <example name="text-input-directive" module="textInputExample">
-        <file name="index.html">
-         <script>
-           angular.module('textInputExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.example = {
-                 text: 'guest',
-                 word: /^\s*\w*\s*$/
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Single word: <input type="text" name="input" ng-model="example.text"
-                               ng-pattern="example.word" required ng-trim="false">
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.pattern">
-             Single word only!</span>
-
-           <tt>text = {{example.text}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('example.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('example.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('guest');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if multi word', function() {
-            input.clear();
-            input.sendKeys('hello world');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'text': textInputType,
-
-    /**
-     * @ngdoc input
-     * @name input[date]
-     *
-     * @description
-     * Input with date validation and transformation. In browsers that do not yet support
-     * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601
-     * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many
-     * modern browsers do not yet support this input type, it is important to provide cues to users on the
-     * expected input format via a placeholder or label.
-     *
-     * The model must always be a Date object, otherwise Angular will throw an error.
-     * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-     *
-     * The timezone to be used to read/write the `Date` instance in the model can be defined using
-     * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-     *
-     * @param {string} ngModel Assignable angular expression to data-bind to.
-     * @param {string=} name Property name of the form under which the control is published.
-     * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-     * valid ISO date string (yyyy-MM-dd).
-     * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-     * a valid ISO date string (yyyy-MM-dd).
-     * @param {string=} required Sets `required` validation error key if the value is not entered.
-     * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-     *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-     *    `required` when you want to data-bind to the `required` attribute.
-     * @param {string=} ngChange Angular expression to be executed when input changes due to user
-     *    interaction with the input element.
-     *
-     * @example
-     <example name="date-input-directive" module="dateInputExample">
-     <file name="index.html">
-       <script>
-          angular.module('dateInputExample', [])
-            .controller('DateController', ['$scope', function($scope) {
-              $scope.example = {
-                value: new Date(2013, 9, 22)
-              };
-            }]);
-       </script>
-       <form name="myForm" ng-controller="DateController as dateCtrl">
-          Pick a date in 2013:
-          <input type="date" id="exampleInput" name="input" ng-model="example.value"
-              placeholder="yyyy-MM-dd" min="2013-01-01" max="2013-12-31" required />
-          <span class="error" ng-show="myForm.input.$error.required">
-              Required!</span>
-          <span class="error" ng-show="myForm.input.$error.date">
-              Not a valid date!</span>
-           <tt>value = {{example.value | date: "yyyy-MM-dd"}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-       </form>
-     </file>
-     <file name="protractor.js" type="protractor">
-        var value = element(by.binding('example.value | date: "yyyy-MM-dd"'));
-        var valid = element(by.binding('myForm.input.$valid'));
-        var input = element(by.model('example.value'));
-
-        // currently protractor/webdriver does not support
-        // sending keys to all known HTML5 input controls
-        // for various browsers (see https://github.com/angular/protractor/issues/562).
-        function setInput(val) {
-          // set the value of the element and force validation.
-          var scr = "var ipt = document.getElementById('exampleInput'); " +
-          "ipt.value = '" + val + "';" +
-          "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-          browser.executeScript(scr);
-        }
-
-        it('should initialize to model', function() {
-          expect(value.getText()).toContain('2013-10-22');
-          expect(valid.getText()).toContain('myForm.input.$valid = true');
-        });
-
-        it('should be invalid if empty', function() {
-          setInput('');
-          expect(value.getText()).toEqual('value =');
-          expect(valid.getText()).toContain('myForm.input.$valid = false');
-        });
-
-        it('should be invalid if over max', function() {
-          setInput('2015-01-01');
-          expect(value.getText()).toContain('');
-          expect(valid.getText()).toContain('myForm.input.$valid = false');
-        });
-     </file>
-     </example>
-     */
-  'date': createDateInputType('date', DATE_REGEXP,
-         createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),
-         'yyyy-MM-dd'),
-
-   /**
-    * @ngdoc input
-    * @name input[datetime-local]
-    *
-    * @description
-    * Input with datetime validation and transformation. In browsers that do not yet support
-    * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-    * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`.
-    *
-    * The model must always be a Date object, otherwise Angular will throw an error.
-    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-    *
-    * The timezone to be used to read/write the `Date` instance in the model can be defined using
-    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-    *
-    * @param {string} ngModel Assignable angular expression to data-bind to.
-    * @param {string=} name Property name of the form under which the control is published.
-    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-    * valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
-    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-    * a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
-    * @param {string=} required Sets `required` validation error key if the value is not entered.
-    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-    *    `required` when you want to data-bind to the `required` attribute.
-    * @param {string=} ngChange Angular expression to be executed when input changes due to user
-    *    interaction with the input element.
-    *
-    * @example
-    <example name="datetimelocal-input-directive" module="dateExample">
-    <file name="index.html">
-      <script>
-        angular.module('dateExample', [])
-          .controller('DateController', ['$scope', function($scope) {
-            $scope.example = {
-              value: new Date(2010, 11, 28, 14, 57)
-            };
-          }]);
-      </script>
-      <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a date between in 2013:
-        <input type="datetime-local" id="exampleInput" name="input" ng-model="example.value"
-            placeholder="yyyy-MM-ddTHH:mm:ss" min="2001-01-01T00:00:00" max="2013-12-31T00:00:00" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.datetimelocal">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2010-12-28T14:57:00');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-01-01T23:59:00');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-    </file>
-    </example>
-    */
-  'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP,
-      createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']),
-      'yyyy-MM-ddTHH:mm:ss.sss'),
-
-  /**
-   * @ngdoc input
-   * @name input[time]
-   *
-   * @description
-   * Input with time validation and transformation. In browsers that do not yet support
-   * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-   * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a
-   * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`.
-   *
-   * The model must always be a Date object, otherwise Angular will throw an error.
-   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-   *
-   * The timezone to be used to read/write the `Date` instance in the model can be defined using
-   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-   * valid ISO time format (HH:mm:ss).
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be a
-   * valid ISO time format (HH:mm:ss).
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-   <example name="time-input-directive" module="timeExample">
-   <file name="index.html">
-     <script>
-      angular.module('timeExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(1970, 0, 1, 14, 57, 0)
-          };
-        }]);
-     </script>
-     <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a between 8am and 5pm:
-        <input type="time" id="exampleInput" name="input" ng-model="example.value"
-            placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.time">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "HH:mm:ss"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-     </form>
-   </file>
-   <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "HH:mm:ss"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('14:57:00');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('23:59:00');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-   </file>
-   </example>
-   */
-  'time': createDateInputType('time', TIME_REGEXP,
-      createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),
-     'HH:mm:ss.sss'),
-
-   /**
-    * @ngdoc input
-    * @name input[week]
-    *
-    * @description
-    * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support
-    * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-    * week format (yyyy-W##), for example: `2013-W02`.
-    *
-    * The model must always be a Date object, otherwise Angular will throw an error.
-    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-    *
-    * The timezone to be used to read/write the `Date` instance in the model can be defined using
-    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-    *
-    * @param {string} ngModel Assignable angular expression to data-bind to.
-    * @param {string=} name Property name of the form under which the control is published.
-    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-    * valid ISO week format (yyyy-W##).
-    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-    * a valid ISO week format (yyyy-W##).
-    * @param {string=} required Sets `required` validation error key if the value is not entered.
-    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-    *    `required` when you want to data-bind to the `required` attribute.
-    * @param {string=} ngChange Angular expression to be executed when input changes due to user
-    *    interaction with the input element.
-    *
-    * @example
-    <example name="week-input-directive" module="weekExample">
-    <file name="index.html">
-      <script>
-      angular.module('weekExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(2013, 0, 3)
-          };
-        }]);
-      </script>
-      <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a date between in 2013:
-        <input id="exampleInput" type="week" name="input" ng-model="example.value"
-            placeholder="YYYY-W##" min="2012-W32" max="2013-W52" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.week">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "yyyy-Www"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-Www"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2013-W01');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-W01');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-    </file>
-    </example>
-    */
-  'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'),
-
-  /**
-   * @ngdoc input
-   * @name input[month]
-   *
-   * @description
-   * Input with month validation and transformation. In browsers that do not yet support
-   * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-   * month format (yyyy-MM), for example: `2009-01`.
-   *
-   * The model must always be a Date object, otherwise Angular will throw an error.
-   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-   * If the model is not set to the first of the month, the next view to model update will set it
-   * to the first of the month.
-   *
-   * The timezone to be used to read/write the `Date` instance in the model can be defined using
-   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be
-   * a valid ISO month format (yyyy-MM).
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must
-   * be a valid ISO month format (yyyy-MM).
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-   <example name="month-input-directive" module="monthExample">
-   <file name="index.html">
-     <script>
-      angular.module('monthExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(2013, 9, 1)
-          };
-        }]);
-     </script>
-     <form name="myForm" ng-controller="DateController as dateCtrl">
-       Pick a month in 2013:
-       <input id="exampleInput" type="month" name="input" ng-model="example.value"
-          placeholder="yyyy-MM" min="2013-01" max="2013-12" required />
-       <span class="error" ng-show="myForm.input.$error.required">
-          Required!</span>
-       <span class="error" ng-show="myForm.input.$error.month">
-          Not a valid month!</span>
-       <tt>value = {{example.value | date: "yyyy-MM"}}</tt><br/>
-       <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-       <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-       <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-       <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-     </form>
-   </file>
-   <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-MM"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2013-10');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-01');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-   </file>
-   </example>
-   */
-  'month': createDateInputType('month', MONTH_REGEXP,
-     createDateParser(MONTH_REGEXP, ['yyyy', 'MM']),
-     'yyyy-MM'),
-
-  /**
-   * @ngdoc input
-   * @name input[number]
-   *
-   * @description
-   * Text input with number validation and transformation. Sets the `number` validation
-   * error if not a valid number.
-   *
-   * The model must always be a number, otherwise Angular will throw an error.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="number-input-directive" module="numberExample">
-        <file name="index.html">
-         <script>
-           angular.module('numberExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.example = {
-                 value: 12
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Number: <input type="number" name="input" ng-model="example.value"
-                          min="0" max="99" required>
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.number">
-             Not valid number!</span>
-           <tt>value = {{example.value}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var value = element(by.binding('example.value'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('example.value'));
-
-          it('should initialize to model', function() {
-            expect(value.getText()).toContain('12');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-            expect(value.getText()).toEqual('value =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if over max', function() {
-            input.clear();
-            input.sendKeys('123');
-            expect(value.getText()).toEqual('value =');
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'number': numberInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[url]
-   *
-   * @description
-   * Text input with URL validation. Sets the `url` validation error key if the content is not a
-   * valid URL.
-   *
-   * <div class="alert alert-warning">
-   * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex
-   * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify
-   * the built-in validators (see the {@link guide/forms Forms guide})
-   * </div>
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="url-input-directive" module="urlExample">
-        <file name="index.html">
-         <script>
-           angular.module('urlExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.url = {
-                 text: 'http://google.com'
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           URL: <input type="url" name="input" ng-model="url.text" required>
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.url">
-             Not valid url!</span>
-           <tt>text = {{url.text}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-           <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('url.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('url.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('http://google.com');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if not url', function() {
-            input.clear();
-            input.sendKeys('box');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'url': urlInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[email]
-   *
-   * @description
-   * Text input with email validation. Sets the `email` validation error key if not a valid email
-   * address.
-   *
-   * <div class="alert alert-warning">
-   * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex
-   * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can
-   * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide})
-   * </div>
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="email-input-directive" module="emailExample">
-        <file name="index.html">
-         <script>
-           angular.module('emailExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.email = {
-                 text: 'me@example.com'
-               };
-             }]);
-         </script>
-           <form name="myForm" ng-controller="ExampleController">
-             Email: <input type="email" name="input" ng-model="email.text" required>
-             <span class="error" ng-show="myForm.input.$error.required">
-               Required!</span>
-             <span class="error" ng-show="myForm.input.$error.email">
-               Not valid email!</span>
-             <tt>text = {{email.text}}</tt><br/>
-             <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-             <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-             <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-             <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-             <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
-           </form>
-         </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('email.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('email.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('me@example.com');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if not email', function() {
-            input.clear();
-            input.sendKeys('xxx');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'email': emailInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[radio]
-   *
-   * @description
-   * HTML radio button.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string} value The value to which the expression should be set when selected.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   * @param {string} ngValue Angular expression which sets the value to which the expression should
-   *    be set when selected.
-   *
-   * @example
-      <example name="radio-input-directive" module="radioExample">
-        <file name="index.html">
-         <script>
-           angular.module('radioExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.color = {
-                 name: 'blue'
-               };
-               $scope.specialValue = {
-                 "id": "12345",
-                 "value": "green"
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           <input type="radio" ng-model="color.name" value="red">  Red <br/>
-           <input type="radio" ng-model="color.name" ng-value="specialValue"> Green <br/>
-           <input type="radio" ng-model="color.name" value="blue"> Blue <br/>
-           <tt>color = {{color.name | json}}</tt><br/>
-          </form>
-          Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
-        </file>
-        <file name="protractor.js" type="protractor">
-          it('should change state', function() {
-            var color = element(by.binding('color.name'));
-
-            expect(color.getText()).toContain('blue');
-
-            element.all(by.model('color.name')).get(0).click();
-
-            expect(color.getText()).toContain('red');
-          });
-        </file>
-      </example>
-   */
-  'radio': radioInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[checkbox]
-   *
-   * @description
-   * HTML checkbox.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {expression=} ngTrueValue The value to which the expression should be set when selected.
-   * @param {expression=} ngFalseValue The value to which the expression should be set when not selected.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="checkbox-input-directive" module="checkboxExample">
-        <file name="index.html">
-         <script>
-           angular.module('checkboxExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.checkboxModel = {
-                value1 : true,
-                value2 : 'YES'
-              };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Value1: <input type="checkbox" ng-model="checkboxModel.value1"> <br/>
-           Value2: <input type="checkbox" ng-model="checkboxModel.value2"
-                          ng-true-value="'YES'" ng-false-value="'NO'"> <br/>
-           <tt>value1 = {{checkboxModel.value1}}</tt><br/>
-           <tt>value2 = {{checkboxModel.value2}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          it('should change state', function() {
-            var value1 = element(by.binding('checkboxModel.value1'));
-            var value2 = element(by.binding('checkboxModel.value2'));
-
-            expect(value1.getText()).toContain('true');
-            expect(value2.getText()).toContain('YES');
-
-            element(by.model('checkboxModel.value1')).click();
-            element(by.model('checkboxModel.value2')).click();
-
-            expect(value1.getText()).toContain('false');
-            expect(value2.getText()).toContain('NO');
-          });
-        </file>
-      </example>
-   */
-  'checkbox': checkboxInputType,
-
-  'hidden': noop,
-  'button': noop,
-  'submit': noop,
-  'reset': noop,
-  'file': noop
-};
-
-function stringBasedInputType(ctrl) {
-  ctrl.$formatters.push(function(value) {
-    return ctrl.$isEmpty(value) ? value : value.toString();
-  });
-}
-
-function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-}
-
-function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  var type = lowercase(element[0].type);
-
-  // In composition mode, users are still inputing intermediate text buffer,
-  // hold the listener until composition is done.
-  // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
-  if (!$sniffer.android) {
-    var composing = false;
-
-    element.on('compositionstart', function(data) {
-      composing = true;
-    });
-
-    element.on('compositionend', function() {
-      composing = false;
-      listener();
-    });
-  }
-
-  var listener = function(ev) {
-    if (timeout) {
-      $browser.defer.cancel(timeout);
-      timeout = null;
-    }
-    if (composing) return;
-    var value = element.val(),
-        event = ev && ev.type;
-
-    // By default we will trim the value
-    // If the attribute ng-trim exists we will avoid trimming
-    // If input type is 'password', the value is never trimmed
-    if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) {
-      value = trim(value);
-    }
-
-    // If a control is suffering from bad input (due to native validators), browsers discard its
-    // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the
-    // control's value is the same empty value twice in a row.
-    if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) {
-      ctrl.$setViewValue(value, event);
-    }
-  };
-
-  // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the
-  // input event on backspace, delete or cut
-  if ($sniffer.hasEvent('input')) {
-    element.on('input', listener);
-  } else {
-    var timeout;
-
-    var deferListener = function(ev, input, origValue) {
-      if (!timeout) {
-        timeout = $browser.defer(function() {
-          timeout = null;
-          if (!input || input.value !== origValue) {
-            listener(ev);
-          }
-        });
-      }
-    };
-
-    element.on('keydown', function(event) {
-      var key = event.keyCode;
-
-      // ignore
-      //    command            modifiers                   arrows
-      if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;
-
-      deferListener(event, this, this.value);
-    });
-
-    // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it
-    if ($sniffer.hasEvent('paste')) {
-      element.on('paste cut', deferListener);
-    }
-  }
-
-  // if user paste into input using mouse on older browser
-  // or form autocomplete on newer browser, we need "change" event to catch it
-  element.on('change', listener);
-
-  ctrl.$render = function() {
-    element.val(ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue);
-  };
-}
-
-function weekParser(isoWeek, existingDate) {
-  if (isDate(isoWeek)) {
-    return isoWeek;
-  }
-
-  if (isString(isoWeek)) {
-    WEEK_REGEXP.lastIndex = 0;
-    var parts = WEEK_REGEXP.exec(isoWeek);
-    if (parts) {
-      var year = +parts[1],
-          week = +parts[2],
-          hours = 0,
-          minutes = 0,
-          seconds = 0,
-          milliseconds = 0,
-          firstThurs = getFirstThursdayOfYear(year),
-          addDays = (week - 1) * 7;
-
-      if (existingDate) {
-        hours = existingDate.getHours();
-        minutes = existingDate.getMinutes();
-        seconds = existingDate.getSeconds();
-        milliseconds = existingDate.getMilliseconds();
-      }
-
-      return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);
-    }
-  }
-
-  return NaN;
-}
-
-function createDateParser(regexp, mapping) {
-  return function(iso, date) {
-    var parts, map;
-
-    if (isDate(iso)) {
-      return iso;
-    }
-
-    if (isString(iso)) {
-      // When a date is JSON'ified to wraps itself inside of an extra
-      // set of double quotes. This makes the date parsing code unable
-      // to match the date string and parse it as a date.
-      if (iso.charAt(0) == '"' && iso.charAt(iso.length - 1) == '"') {
-        iso = iso.substring(1, iso.length - 1);
-      }
-      if (ISO_DATE_REGEXP.test(iso)) {
-        return new Date(iso);
-      }
-      regexp.lastIndex = 0;
-      parts = regexp.exec(iso);
-
-      if (parts) {
-        parts.shift();
-        if (date) {
-          map = {
-            yyyy: date.getFullYear(),
-            MM: date.getMonth() + 1,
-            dd: date.getDate(),
-            HH: date.getHours(),
-            mm: date.getMinutes(),
-            ss: date.getSeconds(),
-            sss: date.getMilliseconds() / 1000
-          };
-        } else {
-          map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };
-        }
-
-        forEach(parts, function(part, index) {
-          if (index < mapping.length) {
-            map[mapping[index]] = +part;
-          }
-        });
-        return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0);
-      }
-    }
-
-    return NaN;
-  };
-}
-
-function createDateInputType(type, regexp, parseDate, format) {
-  return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) {
-    badInputChecker(scope, element, attr, ctrl);
-    baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-    var timezone = ctrl && ctrl.$options && ctrl.$options.timezone;
-    var previousDate;
-
-    ctrl.$$parserName = type;
-    ctrl.$parsers.push(function(value) {
-      if (ctrl.$isEmpty(value)) return null;
-      if (regexp.test(value)) {
-        // Note: We cannot read ctrl.$modelValue, as there might be a different
-        // parser/formatter in the processing chain so that the model
-        // contains some different data format!
-        var parsedDate = parseDate(value, previousDate);
-        if (timezone === 'UTC') {
-          parsedDate.setMinutes(parsedDate.getMinutes() - parsedDate.getTimezoneOffset());
-        }
-        return parsedDate;
-      }
-      return undefined;
-    });
-
-    ctrl.$formatters.push(function(value) {
-      if (value && !isDate(value)) {
-        throw $ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);
-      }
-      if (isValidDate(value)) {
-        previousDate = value;
-        if (previousDate && timezone === 'UTC') {
-          var timezoneOffset = 60000 * previousDate.getTimezoneOffset();
-          previousDate = new Date(previousDate.getTime() + timezoneOffset);
-        }
-        return $filter('date')(value, format, timezone);
-      } else {
-        previousDate = null;
-        return '';
-      }
-    });
-
-    if (isDefined(attr.min) || attr.ngMin) {
-      var minVal;
-      ctrl.$validators.min = function(value) {
-        return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;
-      };
-      attr.$observe('min', function(val) {
-        minVal = parseObservedDateValue(val);
-        ctrl.$validate();
-      });
-    }
-
-    if (isDefined(attr.max) || attr.ngMax) {
-      var maxVal;
-      ctrl.$validators.max = function(value) {
-        return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;
-      };
-      attr.$observe('max', function(val) {
-        maxVal = parseObservedDateValue(val);
-        ctrl.$validate();
-      });
-    }
-
-    function isValidDate(value) {
-      // Invalid Date: getTime() returns NaN
-      return value && !(value.getTime && value.getTime() !== value.getTime());
-    }
-
-    function parseObservedDateValue(val) {
-      return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined;
-    }
-  };
-}
-
-function badInputChecker(scope, element, attr, ctrl) {
-  var node = element[0];
-  var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);
-  if (nativeValidation) {
-    ctrl.$parsers.push(function(value) {
-      var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};
-      // Detect bug in FF35 for input[email] (https://bugzilla.mozilla.org/show_bug.cgi?id=1064430):
-      // - also sets validity.badInput (should only be validity.typeMismatch).
-      // - see http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#e-mail-state-(type=email)
-      // - can ignore this case as we can still read out the erroneous email...
-      return validity.badInput && !validity.typeMismatch ? undefined : value;
-    });
-  }
-}
-
-function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  badInputChecker(scope, element, attr, ctrl);
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-
-  ctrl.$$parserName = 'number';
-  ctrl.$parsers.push(function(value) {
-    if (ctrl.$isEmpty(value))      return null;
-    if (NUMBER_REGEXP.test(value)) return parseFloat(value);
-    return undefined;
-  });
-
-  ctrl.$formatters.push(function(value) {
-    if (!ctrl.$isEmpty(value)) {
-      if (!isNumber(value)) {
-        throw $ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value);
-      }
-      value = value.toString();
-    }
-    return value;
-  });
-
-  if (attr.min || attr.ngMin) {
-    var minVal;
-    ctrl.$validators.min = function(value) {
-      return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
-    };
-
-    attr.$observe('min', function(val) {
-      if (isDefined(val) && !isNumber(val)) {
-        val = parseFloat(val, 10);
-      }
-      minVal = isNumber(val) && !isNaN(val) ? val : undefined;
-      // TODO(matsko): implement validateLater to reduce number of validations
-      ctrl.$validate();
-    });
-  }
-
-  if (attr.max || attr.ngMax) {
-    var maxVal;
-    ctrl.$validators.max = function(value) {
-      return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
-    };
-
-    attr.$observe('max', function(val) {
-      if (isDefined(val) && !isNumber(val)) {
-        val = parseFloat(val, 10);
-      }
-      maxVal = isNumber(val) && !isNaN(val) ? val : undefined;
-      // TODO(matsko): implement validateLater to reduce number of validations
-      ctrl.$validate();
-    });
-  }
-}
-
-function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  // Note: no badInputChecker here by purpose as `url` is only a validation
-  // in browsers, i.e. we can always read out input.value even if it is not valid!
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-
-  ctrl.$$parserName = 'url';
-  ctrl.$validators.url = function(modelValue, viewValue) {
-    var value = modelValue || viewValue;
-    return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
-  };
-}
-
-function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  // Note: no badInputChecker here by purpose as `url` is only a validation
-  // in browsers, i.e. we can always read out input.value even if it is not valid!
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-
-  ctrl.$$parserName = 'email';
-  ctrl.$validators.email = function(modelValue, viewValue) {
-    var value = modelValue || viewValue;
-    return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
-  };
-}
-
-function radioInputType(scope, element, attr, ctrl) {
-  // make the name unique, if not defined
-  if (isUndefined(attr.name)) {
-    element.attr('name', nextUid());
-  }
-
-  var listener = function(ev) {
-    if (element[0].checked) {
-      ctrl.$setViewValue(attr.value, ev && ev.type);
-    }
-  };
-
-  element.on('click', listener);
-
-  ctrl.$render = function() {
-    var value = attr.value;
-    element[0].checked = (value == ctrl.$viewValue);
-  };
-
-  attr.$observe('value', ctrl.$render);
-}
-
-function parseConstantExpr($parse, context, name, expression, fallback) {
-  var parseFn;
-  if (isDefined(expression)) {
-    parseFn = $parse(expression);
-    if (!parseFn.constant) {
-      throw minErr('ngModel')('constexpr', 'Expected constant expression for `{0}`, but saw ' +
-                                   '`{1}`.', name, expression);
-    }
-    return parseFn(context);
-  }
-  return fallback;
-}
-
-function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
-  var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true);
-  var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false);
-
-  var listener = function(ev) {
-    ctrl.$setViewValue(element[0].checked, ev && ev.type);
-  };
-
-  element.on('click', listener);
-
-  ctrl.$render = function() {
-    element[0].checked = ctrl.$viewValue;
-  };
-
-  // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`
-  // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert
-  // it to a boolean.
-  ctrl.$isEmpty = function(value) {
-    return value === false;
-  };
-
-  ctrl.$formatters.push(function(value) {
-    return equals(value, trueValue);
-  });
-
-  ctrl.$parsers.push(function(value) {
-    return value ? trueValue : falseValue;
-  });
-}
-
-
-/**
- * @ngdoc directive
- * @name textarea
- * @restrict E
- *
- * @description
- * HTML textarea element control with angular data-binding. The data-binding and validation
- * properties of this element are exactly the same as those of the
- * {@link ng.directive:input input element}.
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required Sets `required` validation error key if the value is not entered.
- * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
- *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
- *    `required` when you want to data-bind to the `required` attribute.
- * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
- *    minlength.
- * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
- *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
- *    length.
- * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
- *    RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
- *    patterns defined as scope expressions.
- * @param {string=} ngChange Angular expression to be executed when input changes due to user
- *    interaction with the input element.
- * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
- */
-
-
-/**
- * @ngdoc directive
- * @name input
- * @restrict E
- *
- * @description
- * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding,
- * input state control, and validation.
- * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers.
- *
- * <div class="alert alert-warning">
- * **Note:** Not every feature offered is available for all input types.
- * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`.
- * </div>
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required Sets `required` validation error key if the value is not entered.
- * @param {boolean=} ngRequired Sets `required` attribute if set to true
- * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
- *    minlength.
- * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
- *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
- *    length.
- * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
- *    RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
- *    patterns defined as scope expressions.
- * @param {string=} ngChange Angular expression to be executed when input changes due to user
- *    interaction with the input element.
- * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
- *    This parameter is ignored for input[type=password] controls, which will never trim the
- *    input.
- *
- * @example
-    <example name="input-directive" module="inputExample">
-      <file name="index.html">
-       <script>
-          angular.module('inputExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.user = {name: 'guest', last: 'visitor'};
-            }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <form name="myForm">
-           User name: <input type="text" name="userName" ng-model="user.name" required>
-           <span class="error" ng-show="myForm.userName.$error.required">
-             Required!</span><br>
-           Last name: <input type="text" name="lastName" ng-model="user.last"
-             ng-minlength="3" ng-maxlength="10">
-           <span class="error" ng-show="myForm.lastName.$error.minlength">
-             Too short!</span>
-           <span class="error" ng-show="myForm.lastName.$error.maxlength">
-             Too long!</span><br>
-         </form>
-         <hr>
-         <tt>user = {{user}}</tt><br/>
-         <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br>
-         <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br>
-         <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br>
-         <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br>
-         <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
-         <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
-         <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br>
-         <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br>
-       </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-        var user = element(by.exactBinding('user'));
-        var userNameValid = element(by.binding('myForm.userName.$valid'));
-        var lastNameValid = element(by.binding('myForm.lastName.$valid'));
-        var lastNameError = element(by.binding('myForm.lastName.$error'));
-        var formValid = element(by.binding('myForm.$valid'));
-        var userNameInput = element(by.model('user.name'));
-        var userLastInput = element(by.model('user.last'));
-
-        it('should initialize to model', function() {
-          expect(user.getText()).toContain('{"name":"guest","last":"visitor"}');
-          expect(userNameValid.getText()).toContain('true');
-          expect(formValid.getText()).toContain('true');
-        });
-
-        it('should be invalid if empty when required', function() {
-          userNameInput.clear();
-          userNameInput.sendKeys('');
-
-          expect(user.getText()).toContain('{"last":"visitor"}');
-          expect(userNameValid.getText()).toContain('false');
-          expect(formValid.getText()).toContain('false');
-        });
-
-        it('should be valid if empty when min length is set', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('');
-
-          expect(user.getText()).toContain('{"name":"guest","last":""}');
-          expect(lastNameValid.getText()).toContain('true');
-          expect(formValid.getText()).toContain('true');
-        });
-
-        it('should be invalid if less than required min length', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('xx');
-
-          expect(user.getText()).toContain('{"name":"guest"}');
-          expect(lastNameValid.getText()).toContain('false');
-          expect(lastNameError.getText()).toContain('minlength');
-          expect(formValid.getText()).toContain('false');
-        });
-
-        it('should be invalid if longer than max length', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('some ridiculously long name');
-
-          expect(user.getText()).toContain('{"name":"guest"}');
-          expect(lastNameValid.getText()).toContain('false');
-          expect(lastNameError.getText()).toContain('maxlength');
-          expect(formValid.getText()).toContain('false');
-        });
-      </file>
-    </example>
- */
-var inputDirective = ['$browser', '$sniffer', '$filter', '$parse',
-    function($browser, $sniffer, $filter, $parse) {
-  return {
-    restrict: 'E',
-    require: ['?ngModel'],
-    link: {
-      pre: function(scope, element, attr, ctrls) {
-        if (ctrls[0]) {
-          (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer,
-                                                              $browser, $filter, $parse);
-        }
-      }
-    }
-  };
-}];
-
-
-
-var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
-/**
- * @ngdoc directive
- * @name ngValue
- *
- * @description
- * Binds the given expression to the value of `<option>` or {@link input[radio] `input[radio]`},
- * so that when the element is selected, the {@link ngModel `ngModel`} of that element is set to
- * the bound value.
- *
- * `ngValue` is useful when dynamically generating lists of radio buttons using
- * {@link ngRepeat `ngRepeat`}, as shown below.
- *
- * Likewise, `ngValue` can be used to generate `<option>` elements for
- * the {@link select `select`} element. In that case however, only strings are supported
- * for the `value `attribute, so the resulting `ngModel` will always be a string.
- * Support for `select` models with non-string values is available via `ngOptions`.
- *
- * @element input
- * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute
- *   of the `input` element
- *
- * @example
-    <example name="ngValue-directive" module="valueExample">
-      <file name="index.html">
-       <script>
-          angular.module('valueExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.names = ['pizza', 'unicorns', 'robots'];
-              $scope.my = { favorite: 'unicorns' };
-            }]);
-       </script>
-        <form ng-controller="ExampleController">
-          <h2>Which is your favorite?</h2>
-            <label ng-repeat="name in names" for="{{name}}">
-              {{name}}
-              <input type="radio"
-                     ng-model="my.favorite"
-                     ng-value="name"
-                     id="{{name}}"
-                     name="favorite">
-            </label>
-          <div>You chose {{my.favorite}}</div>
-        </form>
-      </file>
-      <file name="protractor.js" type="protractor">
-        var favorite = element(by.binding('my.favorite'));
-
-        it('should initialize to model', function() {
-          expect(favorite.getText()).toContain('unicorns');
-        });
-        it('should bind the values to the inputs', function() {
-          element.all(by.model('my.favorite')).get(0).click();
-          expect(favorite.getText()).toContain('pizza');
-        });
-      </file>
-    </example>
- */
-var ngValueDirective = function() {
-  return {
-    restrict: 'A',
-    priority: 100,
-    compile: function(tpl, tplAttr) {
-      if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
-        return function ngValueConstantLink(scope, elm, attr) {
-          attr.$set('value', scope.$eval(attr.ngValue));
-        };
-      } else {
-        return function ngValueLink(scope, elm, attr) {
-          scope.$watch(attr.ngValue, function valueWatchAction(value) {
-            attr.$set('value', value);
-          });
-        };
-      }
-    }
-  };
-};
-
-/**
- * @ngdoc directive
- * @name ngBind
- * @restrict AC
- *
- * @description
- * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element
- * with the value of a given expression, and to update the text content when the value of that
- * expression changes.
- *
- * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
- * `{{ expression }}` which is similar but less verbose.
- *
- * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily
- * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an
- * element attribute, it makes the bindings invisible to the user while the page is loading.
- *
- * An alternative solution to this problem would be using the
- * {@link ng.directive:ngCloak ngCloak} directive.
- *
- *
- * @element ANY
- * @param {expression} ngBind {@link guide/expression Expression} to evaluate.
- *
- * @example
- * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.
-   <example module="bindExample">
-     <file name="index.html">
-       <script>
-         angular.module('bindExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.name = 'Whirled';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Enter name: <input type="text" ng-model="name"><br>
-         Hello <span ng-bind="name"></span>!
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind', function() {
-         var nameInput = element(by.model('name'));
-
-         expect(element(by.binding('name')).getText()).toBe('Whirled');
-         nameInput.clear();
-         nameInput.sendKeys('world');
-         expect(element(by.binding('name')).getText()).toBe('world');
-       });
-     </file>
-   </example>
- */
-var ngBindDirective = ['$compile', function($compile) {
-  return {
-    restrict: 'AC',
-    compile: function ngBindCompile(templateElement) {
-      $compile.$$addBindingClass(templateElement);
-      return function ngBindLink(scope, element, attr) {
-        $compile.$$addBindingInfo(element, attr.ngBind);
-        element = element[0];
-        scope.$watch(attr.ngBind, function ngBindWatchAction(value) {
-          element.textContent = value === undefined ? '' : value;
-        });
-      };
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngBindTemplate
- *
- * @description
- * The `ngBindTemplate` directive specifies that the element
- * text content should be replaced with the interpolation of the template
- * in the `ngBindTemplate` attribute.
- * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`
- * expressions. This directive is needed since some HTML elements
- * (such as TITLE and OPTION) cannot contain SPAN elements.
- *
- * @element ANY
- * @param {string} ngBindTemplate template of form
- *   <tt>{{</tt> <tt>expression</tt> <tt>}}</tt> to eval.
- *
- * @example
- * Try it here: enter text in text box and watch the greeting change.
-   <example module="bindExample">
-     <file name="index.html">
-       <script>
-         angular.module('bindExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.salutation = 'Hello';
-             $scope.name = 'World';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-        Salutation: <input type="text" ng-model="salutation"><br>
-        Name: <input type="text" ng-model="name"><br>
-        <pre ng-bind-template="{{salutation}} {{name}}!"></pre>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind', function() {
-         var salutationElem = element(by.binding('salutation'));
-         var salutationInput = element(by.model('salutation'));
-         var nameInput = element(by.model('name'));
-
-         expect(salutationElem.getText()).toBe('Hello World!');
-
-         salutationInput.clear();
-         salutationInput.sendKeys('Greetings');
-         nameInput.clear();
-         nameInput.sendKeys('user');
-
-         expect(salutationElem.getText()).toBe('Greetings user!');
-       });
-     </file>
-   </example>
- */
-var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate, $compile) {
-  return {
-    compile: function ngBindTemplateCompile(templateElement) {
-      $compile.$$addBindingClass(templateElement);
-      return function ngBindTemplateLink(scope, element, attr) {
-        var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));
-        $compile.$$addBindingInfo(element, interpolateFn.expressions);
-        element = element[0];
-        attr.$observe('ngBindTemplate', function(value) {
-          element.textContent = value === undefined ? '' : value;
-        });
-      };
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngBindHtml
- *
- * @description
- * Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,
- * the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.
- * To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link
- * ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}
- * in your module's dependencies, you need to include "angular-sanitize.js" in your application.
- *
- * You may also bypass sanitization for values you know are safe. To do so, bind to
- * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}.  See the example
- * under {@link ng.$sce#show-me-an-example-using-sce- Strict Contextual Escaping (SCE)}.
- *
- * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you
- * will have an exception (instead of an exploit.)
- *
- * @element ANY
- * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
- *
- * @example
-
-   <example module="bindHtmlExample" deps="angular-sanitize.js">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-        <p ng-bind-html="myHTML"></p>
-       </div>
-     </file>
-
-     <file name="script.js">
-       angular.module('bindHtmlExample', ['ngSanitize'])
-         .controller('ExampleController', ['$scope', function($scope) {
-           $scope.myHTML =
-              'I am an <code>HTML</code>string with ' +
-              '<a href="#">links!</a> and other <em>stuff</em>';
-         }]);
-     </file>
-
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind-html', function() {
-         expect(element(by.binding('myHTML')).getText()).toBe(
-             'I am an HTMLstring with links! and other stuff');
-       });
-     </file>
-   </example>
- */
-var ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse, $compile) {
-  return {
-    restrict: 'A',
-    compile: function ngBindHtmlCompile(tElement, tAttrs) {
-      var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
-      var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function getStringValue(value) {
-        return (value || '').toString();
-      });
-      $compile.$$addBindingClass(tElement);
-
-      return function ngBindHtmlLink(scope, element, attr) {
-        $compile.$$addBindingInfo(element, attr.ngBindHtml);
-
-        scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
-          // we re-evaluate the expr because we want a TrustedValueHolderType
-          // for $sce, not a string
-          element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope)) || '');
-        });
-      };
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngChange
- *
- * @description
- * Evaluate the given expression when the user changes the input.
- * The expression is evaluated immediately, unlike the JavaScript onchange event
- * which only triggers at the end of a change (usually, when the user leaves the
- * form element or presses the return key).
- *
- * The `ngChange` expression is only evaluated when a change in the input value causes
- * a new value to be committed to the model.
- *
- * It will not be evaluated:
- * * if the value returned from the `$parsers` transformation pipeline has not changed
- * * if the input has continued to be invalid since the model will stay `null`
- * * if the model is changed programmatically and not by a change to the input value
- *
- *
- * Note, this directive requires `ngModel` to be present.
- *
- * @element input
- * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change
- * in input value.
- *
- * @example
- * <example name="ngChange-directive" module="changeExample">
- *   <file name="index.html">
- *     <script>
- *       angular.module('changeExample', [])
- *         .controller('ExampleController', ['$scope', function($scope) {
- *           $scope.counter = 0;
- *           $scope.change = function() {
- *             $scope.counter++;
- *           };
- *         }]);
- *     </script>
- *     <div ng-controller="ExampleController">
- *       <input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
- *       <input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
- *       <label for="ng-change-example2">Confirmed</label><br />
- *       <tt>debug = {{confirmed}}</tt><br/>
- *       <tt>counter = {{counter}}</tt><br/>
- *     </div>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     var counter = element(by.binding('counter'));
- *     var debug = element(by.binding('confirmed'));
- *
- *     it('should evaluate the expression if changing from view', function() {
- *       expect(counter.getText()).toContain('0');
- *
- *       element(by.id('ng-change-example1')).click();
- *
- *       expect(counter.getText()).toContain('1');
- *       expect(debug.getText()).toContain('true');
- *     });
- *
- *     it('should not evaluate the expression if changing from model', function() {
- *       element(by.id('ng-change-example2')).click();
-
- *       expect(counter.getText()).toContain('0');
- *       expect(debug.getText()).toContain('true');
- *     });
- *   </file>
- * </example>
- */
-var ngChangeDirective = valueFn({
-  restrict: 'A',
-  require: 'ngModel',
-  link: function(scope, element, attr, ctrl) {
-    ctrl.$viewChangeListeners.push(function() {
-      scope.$eval(attr.ngChange);
-    });
-  }
-});
-
-function classDirective(name, selector) {
-  name = 'ngClass' + name;
-  return ['$animate', function($animate) {
-    return {
-      restrict: 'AC',
-      link: function(scope, element, attr) {
-        var oldVal;
-
-        scope.$watch(attr[name], ngClassWatchAction, true);
-
-        attr.$observe('class', function(value) {
-          ngClassWatchAction(scope.$eval(attr[name]));
-        });
-
-
-        if (name !== 'ngClass') {
-          scope.$watch('$index', function($index, old$index) {
-            // jshint bitwise: false
-            var mod = $index & 1;
-            if (mod !== (old$index & 1)) {
-              var classes = arrayClasses(scope.$eval(attr[name]));
-              mod === selector ?
-                addClasses(classes) :
-                removeClasses(classes);
-            }
-          });
-        }
-
-        function addClasses(classes) {
-          var newClasses = digestClassCounts(classes, 1);
-          attr.$addClass(newClasses);
-        }
-
-        function removeClasses(classes) {
-          var newClasses = digestClassCounts(classes, -1);
-          attr.$removeClass(newClasses);
-        }
-
-        function digestClassCounts(classes, count) {
-          var classCounts = element.data('$classCounts') || {};
-          var classesToUpdate = [];
-          forEach(classes, function(className) {
-            if (count > 0 || classCounts[className]) {
-              classCounts[className] = (classCounts[className] || 0) + count;
-              if (classCounts[className] === +(count > 0)) {
-                classesToUpdate.push(className);
-              }
-            }
-          });
-          element.data('$classCounts', classCounts);
-          return classesToUpdate.join(' ');
-        }
-
-        function updateClasses(oldClasses, newClasses) {
-          var toAdd = arrayDifference(newClasses, oldClasses);
-          var toRemove = arrayDifference(oldClasses, newClasses);
-          toAdd = digestClassCounts(toAdd, 1);
-          toRemove = digestClassCounts(toRemove, -1);
-          if (toAdd && toAdd.length) {
-            $animate.addClass(element, toAdd);
-          }
-          if (toRemove && toRemove.length) {
-            $animate.removeClass(element, toRemove);
-          }
-        }
-
-        function ngClassWatchAction(newVal) {
-          if (selector === true || scope.$index % 2 === selector) {
-            var newClasses = arrayClasses(newVal || []);
-            if (!oldVal) {
-              addClasses(newClasses);
-            } else if (!equals(newVal,oldVal)) {
-              var oldClasses = arrayClasses(oldVal);
-              updateClasses(oldClasses, newClasses);
-            }
-          }
-          oldVal = shallowCopy(newVal);
-        }
-      }
-    };
-
-    function arrayDifference(tokens1, tokens2) {
-      var values = [];
-
-      outer:
-      for (var i = 0; i < tokens1.length; i++) {
-        var token = tokens1[i];
-        for (var j = 0; j < tokens2.length; j++) {
-          if (token == tokens2[j]) continue outer;
-        }
-        values.push(token);
-      }
-      return values;
-    }
-
-    function arrayClasses(classVal) {
-      if (isArray(classVal)) {
-        return classVal;
-      } else if (isString(classVal)) {
-        return classVal.split(' ');
-      } else if (isObject(classVal)) {
-        var classes = [];
-        forEach(classVal, function(v, k) {
-          if (v) {
-            classes = classes.concat(k.split(' '));
-          }
-        });
-        return classes;
-      }
-      return classVal;
-    }
-  }];
-}
-
-/**
- * @ngdoc directive
- * @name ngClass
- * @restrict AC
- *
- * @description
- * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding
- * an expression that represents all classes to be added.
- *
- * The directive operates in three different ways, depending on which of three types the expression
- * evaluates to:
- *
- * 1. If the expression evaluates to a string, the string should be one or more space-delimited class
- * names.
- *
- * 2. If the expression evaluates to an array, each element of the array should be a string that is
- * one or more space-delimited class names.
- *
- * 3. If the expression evaluates to an object, then for each key-value pair of the
- * object with a truthy value the corresponding key is used as a class name.
- *
- * The directive won't add duplicate classes if a particular class was already set.
- *
- * When the expression changes, the previously added classes are removed and only then the
- * new classes are added.
- *
- * @animations
- * **add** - happens just before the class is applied to the elements
- *
- * **remove** - happens just before the class is removed from the element
- *
- * @element ANY
- * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
- *   of the evaluation can be a string representing space delimited class
- *   names, an array, or a map of class names to boolean values. In the case of a map, the
- *   names of the properties whose values are truthy will be added as css classes to the
- *   element.
- *
- * @example Example that demonstrates basic bindings via ngClass directive.
-   <example>
-     <file name="index.html">
-       <p ng-class="{strike: deleted, bold: important, red: error}">Map Syntax Example</p>
-       <input type="checkbox" ng-model="deleted"> deleted (apply "strike" class)<br>
-       <input type="checkbox" ng-model="important"> important (apply "bold" class)<br>
-       <input type="checkbox" ng-model="error"> error (apply "red" class)
-       <hr>
-       <p ng-class="style">Using String Syntax</p>
-       <input type="text" ng-model="style" placeholder="Type: bold strike red">
-       <hr>
-       <p ng-class="[style1, style2, style3]">Using Array Syntax</p>
-       <input ng-model="style1" placeholder="Type: bold, strike or red"><br>
-       <input ng-model="style2" placeholder="Type: bold, strike or red"><br>
-       <input ng-model="style3" placeholder="Type: bold, strike or red"><br>
-     </file>
-     <file name="style.css">
-       .strike {
-         text-decoration: line-through;
-       }
-       .bold {
-           font-weight: bold;
-       }
-       .red {
-           color: red;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       var ps = element.all(by.css('p'));
-
-       it('should let you toggle the class', function() {
-
-         expect(ps.first().getAttribute('class')).not.toMatch(/bold/);
-         expect(ps.first().getAttribute('class')).not.toMatch(/red/);
-
-         element(by.model('important')).click();
-         expect(ps.first().getAttribute('class')).toMatch(/bold/);
-
-         element(by.model('error')).click();
-         expect(ps.first().getAttribute('class')).toMatch(/red/);
-       });
-
-       it('should let you toggle string example', function() {
-         expect(ps.get(1).getAttribute('class')).toBe('');
-         element(by.model('style')).clear();
-         element(by.model('style')).sendKeys('red');
-         expect(ps.get(1).getAttribute('class')).toBe('red');
-       });
-
-       it('array example should have 3 classes', function() {
-         expect(ps.last().getAttribute('class')).toBe('');
-         element(by.model('style1')).sendKeys('bold');
-         element(by.model('style2')).sendKeys('strike');
-         element(by.model('style3')).sendKeys('red');
-         expect(ps.last().getAttribute('class')).toBe('bold strike red');
-       });
-     </file>
-   </example>
-
-   ## Animations
-
-   The example below demonstrates how to perform animations using ngClass.
-
-   <example module="ngAnimate" deps="angular-animate.js" animations="true">
-     <file name="index.html">
-      <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'">
-      <input id="clearbtn" type="button" value="clear" ng-click="myVar=''">
-      <br>
-      <span class="base-class" ng-class="myVar">Sample Text</span>
-     </file>
-     <file name="style.css">
-       .base-class {
-         -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-         transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-       }
-
-       .base-class.my-class {
-         color: red;
-         font-size:3em;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class', function() {
-         expect(element(by.css('.base-class')).getAttribute('class')).not.
-           toMatch(/my-class/);
-
-         element(by.id('setbtn')).click();
-
-         expect(element(by.css('.base-class')).getAttribute('class')).
-           toMatch(/my-class/);
-
-         element(by.id('clearbtn')).click();
-
-         expect(element(by.css('.base-class')).getAttribute('class')).not.
-           toMatch(/my-class/);
-       });
-     </file>
-   </example>
-
-
-   ## ngClass and pre-existing CSS3 Transitions/Animations
-   The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
-   Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder
-   any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure
-   to view the step by step details of {@link ng.$animate#addClass $animate.addClass} and
-   {@link ng.$animate#removeClass $animate.removeClass}.
- */
-var ngClassDirective = classDirective('', true);
-
-/**
- * @ngdoc directive
- * @name ngClassOdd
- * @restrict AC
- *
- * @description
- * The `ngClassOdd` and `ngClassEven` directives work exactly as
- * {@link ng.directive:ngClass ngClass}, except they work in
- * conjunction with `ngRepeat` and take effect only on odd (even) rows.
- *
- * This directive can be applied only within the scope of an
- * {@link ng.directive:ngRepeat ngRepeat}.
- *
- * @element ANY
- * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result
- *   of the evaluation can be a string representing space delimited class names or an array.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
-          <li ng-repeat="name in names">
-           <span ng-class-odd="'odd'" ng-class-even="'even'">
-             {{name}}
-           </span>
-          </li>
-        </ol>
-     </file>
-     <file name="style.css">
-       .odd {
-         color: red;
-       }
-       .even {
-         color: blue;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class-odd and ng-class-even', function() {
-         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
-           toMatch(/odd/);
-         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
-           toMatch(/even/);
-       });
-     </file>
-   </example>
- */
-var ngClassOddDirective = classDirective('Odd', 0);
-
-/**
- * @ngdoc directive
- * @name ngClassEven
- * @restrict AC
- *
- * @description
- * The `ngClassOdd` and `ngClassEven` directives work exactly as
- * {@link ng.directive:ngClass ngClass}, except they work in
- * conjunction with `ngRepeat` and take effect only on odd (even) rows.
- *
- * This directive can be applied only within the scope of an
- * {@link ng.directive:ngRepeat ngRepeat}.
- *
- * @element ANY
- * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The
- *   result of the evaluation can be a string representing space delimited class names or an array.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
-          <li ng-repeat="name in names">
-           <span ng-class-odd="'odd'" ng-class-even="'even'">
-             {{name}} &nbsp; &nbsp; &nbsp;
-           </span>
-          </li>
-        </ol>
-     </file>
-     <file name="style.css">
-       .odd {
-         color: red;
-       }
-       .even {
-         color: blue;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class-odd and ng-class-even', function() {
-         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
-           toMatch(/odd/);
-         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
-           toMatch(/even/);
-       });
-     </file>
-   </example>
- */
-var ngClassEvenDirective = classDirective('Even', 1);
-
-/**
- * @ngdoc directive
- * @name ngCloak
- * @restrict AC
- *
- * @description
- * The `ngCloak` directive is used to prevent the Angular html template from being briefly
- * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this
- * directive to avoid the undesirable flicker effect caused by the html template display.
- *
- * The directive can be applied to the `<body>` element, but the preferred usage is to apply
- * multiple `ngCloak` directives to small portions of the page to permit progressive rendering
- * of the browser view.
- *
- * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and
- * `angular.min.js`.
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```css
- * [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
- *   display: none !important;
- * }
- * ```
- *
- * When this css rule is loaded by the browser, all html elements (including their children) that
- * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive
- * during the compilation of the template it deletes the `ngCloak` element attribute, making
- * the compiled element visible.
- *
- * For the best result, the `angular.js` script must be loaded in the head section of the html
- * document; alternatively, the css rule above must be included in the external stylesheet of the
- * application.
- *
- * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they
- * cannot match the `[ng\:cloak]` selector. To work around this limitation, you must add the css
- * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below.
- *
- * @element ANY
- *
- * @example
-   <example>
-     <file name="index.html">
-        <div id="template1" ng-cloak>{{ 'hello' }}</div>
-        <div id="template2" ng-cloak class="ng-cloak">{{ 'hello IE7' }}</div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should remove the template directive and css class', function() {
-         expect($('#template1').getAttribute('ng-cloak')).
-           toBeNull();
-         expect($('#template2').getAttribute('ng-cloak')).
-           toBeNull();
-       });
-     </file>
-   </example>
- *
- */
-var ngCloakDirective = ngDirective({
-  compile: function(element, attr) {
-    attr.$set('ngCloak', undefined);
-    element.removeClass('ng-cloak');
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngController
- *
- * @description
- * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular
- * supports the principles behind the Model-View-Controller design pattern.
- *
- * MVC components in angular:
- *
- * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties
- *   are accessed through bindings.
- * * View — The template (HTML with data bindings) that is rendered into the View.
- * * Controller — The `ngController` directive specifies a Controller class; the class contains business
- *   logic behind the application to decorate the scope with functions and values
- *
- * Note that you can also attach controllers to the DOM by declaring it in a route definition
- * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller
- * again using `ng-controller` in the template itself.  This will cause the controller to be attached
- * and executed twice.
- *
- * @element ANY
- * @scope
- * @priority 500
- * @param {expression} ngController Name of a constructor function registered with the current
- * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression}
- * that on the current scope evaluates to a constructor function.
- *
- * The controller instance can be published into a scope property by specifying
- * `ng-controller="as propertyName"`.
- *
- * If the current `$controllerProvider` is configured to use globals (via
- * {@link ng.$controllerProvider#allowGlobals `$controllerProvider.allowGlobals()` }), this may
- * also be the name of a globally accessible constructor function (not recommended).
- *
- * @example
- * Here is a simple form for editing user contact information. Adding, removing, clearing, and
- * greeting are methods declared on the controller (see source tab). These methods can
- * easily be called from the angular markup. Any changes to the data are automatically reflected
- * in the View without the need for a manual update.
- *
- * Two different declaration styles are included below:
- *
- * * one binds methods and properties directly onto the controller using `this`:
- * `ng-controller="SettingsController1 as settings"`
- * * one injects `$scope` into the controller:
- * `ng-controller="SettingsController2"`
- *
- * The second option is more common in the Angular community, and is generally used in boilerplates
- * and in this guide. However, there are advantages to binding properties directly to the controller
- * and avoiding scope.
- *
- * * Using `controller as` makes it obvious which controller you are accessing in the template when
- * multiple controllers apply to an element.
- * * If you are writing your controllers as classes you have easier access to the properties and
- * methods, which will appear on the scope, from inside the controller code.
- * * Since there is always a `.` in the bindings, you don't have to worry about prototypal
- * inheritance masking primitives.
- *
- * This example demonstrates the `controller as` syntax.
- *
- * <example name="ngControllerAs" module="controllerAsExample">
- *   <file name="index.html">
- *    <div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
- *      Name: <input type="text" ng-model="settings.name"/>
- *      [ <a href="" ng-click="settings.greet()">greet</a> ]<br/>
- *      Contact:
- *      <ul>
- *        <li ng-repeat="contact in settings.contacts">
- *          <select ng-model="contact.type">
- *             <option>phone</option>
- *             <option>email</option>
- *          </select>
- *          <input type="text" ng-model="contact.value"/>
- *          [ <a href="" ng-click="settings.clearContact(contact)">clear</a>
- *          | <a href="" ng-click="settings.removeContact(contact)">X</a> ]
- *        </li>
- *        <li>[ <a href="" ng-click="settings.addContact()">add</a> ]</li>
- *     </ul>
- *    </div>
- *   </file>
- *   <file name="app.js">
- *    angular.module('controllerAsExample', [])
- *      .controller('SettingsController1', SettingsController1);
- *
- *    function SettingsController1() {
- *      this.name = "John Smith";
- *      this.contacts = [
- *        {type: 'phone', value: '408 555 1212'},
- *        {type: 'email', value: 'john.smith@example.org'} ];
- *    }
- *
- *    SettingsController1.prototype.greet = function() {
- *      alert(this.name);
- *    };
- *
- *    SettingsController1.prototype.addContact = function() {
- *      this.contacts.push({type: 'email', value: 'yourname@example.org'});
- *    };
- *
- *    SettingsController1.prototype.removeContact = function(contactToRemove) {
- *     var index = this.contacts.indexOf(contactToRemove);
- *      this.contacts.splice(index, 1);
- *    };
- *
- *    SettingsController1.prototype.clearContact = function(contact) {
- *      contact.type = 'phone';
- *      contact.value = '';
- *    };
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     it('should check controller as', function() {
- *       var container = element(by.id('ctrl-as-exmpl'));
- *         expect(container.element(by.model('settings.name'))
- *           .getAttribute('value')).toBe('John Smith');
- *
- *       var firstRepeat =
- *           container.element(by.repeater('contact in settings.contacts').row(0));
- *       var secondRepeat =
- *           container.element(by.repeater('contact in settings.contacts').row(1));
- *
- *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('408 555 1212');
- *
- *       expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('john.smith@example.org');
- *
- *       firstRepeat.element(by.linkText('clear')).click();
- *
- *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('');
- *
- *       container.element(by.linkText('add')).click();
- *
- *       expect(container.element(by.repeater('contact in settings.contacts').row(2))
- *           .element(by.model('contact.value'))
- *           .getAttribute('value'))
- *           .toBe('yourname@example.org');
- *     });
- *   </file>
- * </example>
- *
- * This example demonstrates the "attach to `$scope`" style of controller.
- *
- * <example name="ngController" module="controllerExample">
- *  <file name="index.html">
- *   <div id="ctrl-exmpl" ng-controller="SettingsController2">
- *     Name: <input type="text" ng-model="name"/>
- *     [ <a href="" ng-click="greet()">greet</a> ]<br/>
- *     Contact:
- *     <ul>
- *       <li ng-repeat="contact in contacts">
- *         <select ng-model="contact.type">
- *            <option>phone</option>
- *            <option>email</option>
- *         </select>
- *         <input type="text" ng-model="contact.value"/>
- *         [ <a href="" ng-click="clearContact(contact)">clear</a>
- *         | <a href="" ng-click="removeContact(contact)">X</a> ]
- *       </li>
- *       <li>[ <a href="" ng-click="addContact()">add</a> ]</li>
- *    </ul>
- *   </div>
- *  </file>
- *  <file name="app.js">
- *   angular.module('controllerExample', [])
- *     .controller('SettingsController2', ['$scope', SettingsController2]);
- *
- *   function SettingsController2($scope) {
- *     $scope.name = "John Smith";
- *     $scope.contacts = [
- *       {type:'phone', value:'408 555 1212'},
- *       {type:'email', value:'john.smith@example.org'} ];
- *
- *     $scope.greet = function() {
- *       alert($scope.name);
- *     };
- *
- *     $scope.addContact = function() {
- *       $scope.contacts.push({type:'email', value:'yourname@example.org'});
- *     };
- *
- *     $scope.removeContact = function(contactToRemove) {
- *       var index = $scope.contacts.indexOf(contactToRemove);
- *       $scope.contacts.splice(index, 1);
- *     };
- *
- *     $scope.clearContact = function(contact) {
- *       contact.type = 'phone';
- *       contact.value = '';
- *     };
- *   }
- *  </file>
- *  <file name="protractor.js" type="protractor">
- *    it('should check controller', function() {
- *      var container = element(by.id('ctrl-exmpl'));
- *
- *      expect(container.element(by.model('name'))
- *          .getAttribute('value')).toBe('John Smith');
- *
- *      var firstRepeat =
- *          container.element(by.repeater('contact in contacts').row(0));
- *      var secondRepeat =
- *          container.element(by.repeater('contact in contacts').row(1));
- *
- *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('408 555 1212');
- *      expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('john.smith@example.org');
- *
- *      firstRepeat.element(by.linkText('clear')).click();
- *
- *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('');
- *
- *      container.element(by.linkText('add')).click();
- *
- *      expect(container.element(by.repeater('contact in contacts').row(2))
- *          .element(by.model('contact.value'))
- *          .getAttribute('value'))
- *          .toBe('yourname@example.org');
- *    });
- *  </file>
- *</example>
-
- */
-var ngControllerDirective = [function() {
-  return {
-    restrict: 'A',
-    scope: true,
-    controller: '@',
-    priority: 500
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngCsp
- *
- * @element html
- * @description
- * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.
- *
- * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps.
- *
- * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).
- * For Angular to be CSP compatible there are only two things that we need to do differently:
- *
- * - don't use `Function` constructor to generate optimized value getters
- * - don't inject custom stylesheet into the document
- *
- * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp`
- * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will
- * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will
- * be raised.
- *
- * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically
- * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}).
- * To make those directives work in CSP mode, include the `angular-csp.css` manually.
- *
- * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This
- * autodetection however triggers a CSP error to be logged in the console:
- *
- * ```
- * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
- * script in the following Content Security Policy directive: "default-src 'self'". Note that
- * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
- * ```
- *
- * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`
- * directive on the root element of the application or on the `angular.js` script tag, whichever
- * appears first in the html document.
- *
- * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*
- *
- * @example
- * This example shows how to apply the `ngCsp` directive to the `html` tag.
-   ```html
-     <!doctype html>
-     <html ng-app ng-csp>
-     ...
-     ...
-     </html>
-   ```
-  * @example
-      // Note: the suffix `.csp` in the example name triggers
-      // csp mode in our http server!
-      <example name="example.csp" module="cspExample" ng-csp="true">
-        <file name="index.html">
-          <div ng-controller="MainController as ctrl">
-            <div>
-              <button ng-click="ctrl.inc()" id="inc">Increment</button>
-              <span id="counter">
-                {{ctrl.counter}}
-              </span>
-            </div>
-
-            <div>
-              <button ng-click="ctrl.evil()" id="evil">Evil</button>
-              <span id="evilError">
-                {{ctrl.evilError}}
-              </span>
-            </div>
-          </div>
-        </file>
-        <file name="script.js">
-           angular.module('cspExample', [])
-             .controller('MainController', function() {
-                this.counter = 0;
-                this.inc = function() {
-                  this.counter++;
-                };
-                this.evil = function() {
-                  // jshint evil:true
-                  try {
-                    eval('1+2');
-                  } catch (e) {
-                    this.evilError = e.message;
-                  }
-                };
-              });
-        </file>
-        <file name="protractor.js" type="protractor">
-          var util, webdriver;
-
-          var incBtn = element(by.id('inc'));
-          var counter = element(by.id('counter'));
-          var evilBtn = element(by.id('evil'));
-          var evilError = element(by.id('evilError'));
-
-          function getAndClearSevereErrors() {
-            return browser.manage().logs().get('browser').then(function(browserLog) {
-              return browserLog.filter(function(logEntry) {
-                return logEntry.level.value > webdriver.logging.Level.WARNING.value;
-              });
-            });
-          }
-
-          function clearErrors() {
-            getAndClearSevereErrors();
-          }
-
-          function expectNoErrors() {
-            getAndClearSevereErrors().then(function(filteredLog) {
-              expect(filteredLog.length).toEqual(0);
-              if (filteredLog.length) {
-                console.log('browser console errors: ' + util.inspect(filteredLog));
-              }
-            });
-          }
-
-          function expectError(regex) {
-            getAndClearSevereErrors().then(function(filteredLog) {
-              var found = false;
-              filteredLog.forEach(function(log) {
-                if (log.message.match(regex)) {
-                  found = true;
-                }
-              });
-              if (!found) {
-                throw new Error('expected an error that matches ' + regex);
-              }
-            });
-          }
-
-          beforeEach(function() {
-            util = require('util');
-            webdriver = require('protractor/node_modules/selenium-webdriver');
-          });
-
-          // For now, we only test on Chrome,
-          // as Safari does not load the page with Protractor's injected scripts,
-          // and Firefox webdriver always disables content security policy (#6358)
-          if (browser.params.browser !== 'chrome') {
-            return;
-          }
-
-          it('should not report errors when the page is loaded', function() {
-            // clear errors so we are not dependent on previous tests
-            clearErrors();
-            // Need to reload the page as the page is already loaded when
-            // we come here
-            browser.driver.getCurrentUrl().then(function(url) {
-              browser.get(url);
-            });
-            expectNoErrors();
-          });
-
-          it('should evaluate expressions', function() {
-            expect(counter.getText()).toEqual('0');
-            incBtn.click();
-            expect(counter.getText()).toEqual('1');
-            expectNoErrors();
-          });
-
-          it('should throw and report an error when using "eval"', function() {
-            evilBtn.click();
-            expect(evilError.getText()).toMatch(/Content Security Policy/);
-            expectError(/Content Security Policy/);
-          });
-        </file>
-      </example>
-  */
-
-// ngCsp is not implemented as a proper directive any more, because we need it be processed while we
-// bootstrap the system (before $parse is instantiated), for this reason we just have
-// the csp.isActive() fn that looks for ng-csp attribute anywhere in the current doc
-
-/**
- * @ngdoc directive
- * @name ngClick
- *
- * @description
- * The ngClick directive allows you to specify custom behavior when
- * an element is clicked.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
- * click. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-click="count = count + 1" ng-init="count=0">
-        Increment
-      </button>
-      <span>
-        count: {{count}}
-      </span>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-click', function() {
-         expect(element(by.binding('count')).getText()).toMatch('0');
-         element(by.css('button')).click();
-         expect(element(by.binding('count')).getText()).toMatch('1');
-       });
-     </file>
-   </example>
- */
-/*
- * A collection of directives that allows creation of custom event handlers that are defined as
- * angular expressions and are compiled and executed within the current scope.
- */
-var ngEventDirectives = {};
-
-// For events that might fire synchronously during DOM manipulation
-// we need to execute their event handlers asynchronously using $evalAsync,
-// so that they are not executed in an inconsistent state.
-var forceAsyncEvents = {
-  'blur': true,
-  'focus': true
-};
-forEach(
-  'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
-  function(eventName) {
-    var directiveName = directiveNormalize('ng-' + eventName);
-    ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {
-      return {
-        restrict: 'A',
-        compile: function($element, attr) {
-          // We expose the powerful $event object on the scope that provides access to the Window,
-          // etc. that isn't protected by the fast paths in $parse.  We explicitly request better
-          // checks at the cost of speed since event handler expressions are not executed as
-          // frequently as regular change detection.
-          var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true);
-          return function ngEventHandler(scope, element) {
-            element.on(eventName, function(event) {
-              var callback = function() {
-                fn(scope, {$event:event});
-              };
-              if (forceAsyncEvents[eventName] && $rootScope.$$phase) {
-                scope.$evalAsync(callback);
-              } else {
-                scope.$apply(callback);
-              }
-            });
-          };
-        }
-      };
-    }];
-  }
-);
-
-/**
- * @ngdoc directive
- * @name ngDblclick
- *
- * @description
- * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon
- * a dblclick. (The Event object is available as `$event`)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-dblclick="count = count + 1" ng-init="count=0">
-        Increment (on double click)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMousedown
- *
- * @description
- * The ngMousedown directive allows you to specify custom behavior on mousedown event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
- * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mousedown="count = count + 1" ng-init="count=0">
-        Increment (on mouse down)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseup
- *
- * @description
- * Specify custom behavior on mouseup event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
- * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseup="count = count + 1" ng-init="count=0">
-        Increment (on mouse up)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngMouseover
- *
- * @description
- * Specify custom behavior on mouseover event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
- * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseover="count = count + 1" ng-init="count=0">
-        Increment (when mouse is over)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseenter
- *
- * @description
- * Specify custom behavior on mouseenter event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
- * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseenter="count = count + 1" ng-init="count=0">
-        Increment (when mouse enters)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseleave
- *
- * @description
- * Specify custom behavior on mouseleave event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
- * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseleave="count = count + 1" ng-init="count=0">
-        Increment (when mouse leaves)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMousemove
- *
- * @description
- * Specify custom behavior on mousemove event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
- * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mousemove="count = count + 1" ng-init="count=0">
-        Increment (when mouse moves)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeydown
- *
- * @description
- * Specify custom behavior on keydown event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
- * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-keydown="count = count + 1" ng-init="count=0">
-      key down count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeyup
- *
- * @description
- * Specify custom behavior on keyup event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
- * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-       <p>Typing in the input box below updates the key count</p>
-       <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
-
-       <p>Typing in the input box below updates the keycode</p>
-       <input ng-keyup="event=$event">
-       <p>event keyCode: {{ event.keyCode }}</p>
-       <p>event altKey: {{ event.altKey }}</p>
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeypress
- *
- * @description
- * Specify custom behavior on keypress event.
- *
- * @element ANY
- * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
- * keypress. ({@link guide/expression#-event- Event object is available as `$event`}
- * and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-keypress="count = count + 1" ng-init="count=0">
-      key press count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngSubmit
- *
- * @description
- * Enables binding angular expressions to onsubmit events.
- *
- * Additionally it prevents the default action (which for form means sending the request to the
- * server and reloading the current page), but only if the form does not contain `action`,
- * `data-action`, or `x-action` attributes.
- *
- * <div class="alert alert-warning">
- * **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
- * `ngSubmit` handlers together. See the
- * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
- * for a detailed discussion of when `ngSubmit` may be triggered.
- * </div>
- *
- * @element form
- * @priority 0
- * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
- * ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example module="submitExample">
-     <file name="index.html">
-      <script>
-        angular.module('submitExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.list = [];
-            $scope.text = 'hello';
-            $scope.submit = function() {
-              if ($scope.text) {
-                $scope.list.push(this.text);
-                $scope.text = '';
-              }
-            };
-          }]);
-      </script>
-      <form ng-submit="submit()" ng-controller="ExampleController">
-        Enter text and hit enter:
-        <input type="text" ng-model="text" name="text" />
-        <input type="submit" id="submit" value="Submit" />
-        <pre>list={{list}}</pre>
-      </form>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-submit', function() {
-         expect(element(by.binding('list')).getText()).toBe('list=[]');
-         element(by.css('#submit')).click();
-         expect(element(by.binding('list')).getText()).toContain('hello');
-         expect(element(by.model('text')).getAttribute('value')).toBe('');
-       });
-       it('should ignore empty strings', function() {
-         expect(element(by.binding('list')).getText()).toBe('list=[]');
-         element(by.css('#submit')).click();
-         element(by.css('#submit')).click();
-         expect(element(by.binding('list')).getText()).toContain('hello');
-        });
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngFocus
- *
- * @description
- * Specify custom behavior on focus event.
- *
- * Note: As the `focus` event is executed synchronously when calling `input.focus()`
- * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
- * during an `$apply` to ensure a consistent state.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
- * focus. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
- * See {@link ng.directive:ngClick ngClick}
- */
-
-/**
- * @ngdoc directive
- * @name ngBlur
- *
- * @description
- * Specify custom behavior on blur event.
- *
- * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when
- * an element has lost focus.
- *
- * Note: As the `blur` event is executed synchronously also during DOM manipulations
- * (e.g. removing a focussed input),
- * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
- * during an `$apply` to ensure a consistent state.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
- * blur. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
- * See {@link ng.directive:ngClick ngClick}
- */
-
-/**
- * @ngdoc directive
- * @name ngCopy
- *
- * @description
- * Specify custom behavior on copy event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
- * copy. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value">
-      copied: {{copied}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngCut
- *
- * @description
- * Specify custom behavior on cut event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
- * cut. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value">
-      cut: {{cut}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngPaste
- *
- * @description
- * Specify custom behavior on paste event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
- * paste. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
-      pasted: {{paste}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngIf
- * @restrict A
- *
- * @description
- * The `ngIf` directive removes or recreates a portion of the DOM tree based on an
- * {expression}. If the expression assigned to `ngIf` evaluates to a false
- * value then the element is removed from the DOM, otherwise a clone of the
- * element is reinserted into the DOM.
- *
- * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the
- * element in the DOM rather than changing its visibility via the `display` css property.  A common
- * case when this difference is significant is when using css selectors that rely on an element's
- * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.
- *
- * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope
- * is created when the element is restored.  The scope created within `ngIf` inherits from
- * its parent scope using
- * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).
- * An important implication of this is if `ngModel` is used within `ngIf` to bind to
- * a javascript primitive defined in the parent scope. In this case any modifications made to the
- * variable within the child scope will override (hide) the value in the parent scope.
- *
- * Also, `ngIf` recreates elements using their compiled state. An example of this behavior
- * is if an element's class attribute is directly modified after it's compiled, using something like
- * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element
- * the added class will be lost because the original compiled state is used to regenerate the element.
- *
- * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`
- * and `leave` effects.
- *
- * @animations
- * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container
- * leave - happens just before the `ngIf` contents are removed from the DOM
- *
- * @element ANY
- * @scope
- * @priority 600
- * @param {expression} ngIf If the {@link guide/expression expression} is falsy then
- *     the element is removed from the DOM tree. If it is truthy a copy of the compiled
- *     element is added to the DOM tree.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/>
-      Show when checked:
-      <span ng-if="checked" class="animate-if">
-        This is removed when the checkbox is unchecked.
-      </span>
-    </file>
-    <file name="animations.css">
-      .animate-if {
-        background:white;
-        border:1px solid black;
-        padding:10px;
-      }
-
-      .animate-if.ng-enter, .animate-if.ng-leave {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-      }
-
-      .animate-if.ng-enter,
-      .animate-if.ng-leave.ng-leave-active {
-        opacity:0;
-      }
-
-      .animate-if.ng-leave,
-      .animate-if.ng-enter.ng-enter-active {
-        opacity:1;
-      }
-    </file>
-  </example>
- */
-var ngIfDirective = ['$animate', function($animate) {
-  return {
-    multiElement: true,
-    transclude: 'element',
-    priority: 600,
-    terminal: true,
-    restrict: 'A',
-    $$tlb: true,
-    link: function($scope, $element, $attr, ctrl, $transclude) {
-        var block, childScope, previousElements;
-        $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {
-
-          if (value) {
-            if (!childScope) {
-              $transclude(function(clone, newScope) {
-                childScope = newScope;
-                clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');
-                // Note: We only need the first/last node of the cloned nodes.
-                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
-                // by a directive with templateUrl when its template arrives.
-                block = {
-                  clone: clone
-                };
-                $animate.enter(clone, $element.parent(), $element);
-              });
-            }
-          } else {
-            if (previousElements) {
-              previousElements.remove();
-              previousElements = null;
-            }
-            if (childScope) {
-              childScope.$destroy();
-              childScope = null;
-            }
-            if (block) {
-              previousElements = getBlockNodes(block.clone);
-              $animate.leave(previousElements).then(function() {
-                previousElements = null;
-              });
-              block = null;
-            }
-          }
-        });
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngInclude
- * @restrict ECA
- *
- * @description
- * Fetches, compiles and includes an external HTML fragment.
- *
- * By default, the template URL is restricted to the same domain and protocol as the
- * application document. This is done by calling {@link $sce#getTrustedResourceUrl
- * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols
- * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or
- * {@link $sce#trustAsResourceUrl wrap them} as trusted values. Refer to Angular's {@link
- * ng.$sce Strict Contextual Escaping}.
- *
- * In addition, the browser's
- * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
- * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
- * policy may further restrict whether the template is successfully loaded.
- * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`
- * access on some browsers.
- *
- * @animations
- * enter - animation is used to bring new content into the browser.
- * leave - animation is used to animate existing content away.
- *
- * The enter and leave animation occur concurrently.
- *
- * @scope
- * @priority 400
- *
- * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,
- *                 make sure you wrap it in **single** quotes, e.g. `src="'myPartialTemplate.html'"`.
- * @param {string=} onload Expression to evaluate when a new partial is loaded.
- *
- * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll
- *                  $anchorScroll} to scroll the viewport after the content is loaded.
- *
- *                  - If the attribute is not set, disable scrolling.
- *                  - If the attribute is set without value, enable scrolling.
- *                  - Otherwise enable scrolling only if the expression evaluates to truthy value.
- *
- * @example
-  <example module="includeExample" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-     <div ng-controller="ExampleController">
-       <select ng-model="template" ng-options="t.name for t in templates">
-        <option value="">(blank)</option>
-       </select>
-       url of the template: <code>{{template.url}}</code>
-       <hr/>
-       <div class="slide-animate-container">
-         <div class="slide-animate" ng-include="template.url"></div>
-       </div>
-     </div>
-    </file>
-    <file name="script.js">
-      angular.module('includeExample', ['ngAnimate'])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.templates =
-            [ { name: 'template1.html', url: 'template1.html'},
-              { name: 'template2.html', url: 'template2.html'} ];
-          $scope.template = $scope.templates[0];
-        }]);
-     </file>
-    <file name="template1.html">
-      Content of template1.html
-    </file>
-    <file name="template2.html">
-      Content of template2.html
-    </file>
-    <file name="animations.css">
-      .slide-animate-container {
-        position:relative;
-        background:white;
-        border:1px solid black;
-        height:40px;
-        overflow:hidden;
-      }
-
-      .slide-animate {
-        padding:10px;
-      }
-
-      .slide-animate.ng-enter, .slide-animate.ng-leave {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-
-        position:absolute;
-        top:0;
-        left:0;
-        right:0;
-        bottom:0;
-        display:block;
-        padding:10px;
-      }
-
-      .slide-animate.ng-enter {
-        top:-50px;
-      }
-      .slide-animate.ng-enter.ng-enter-active {
-        top:0;
-      }
-
-      .slide-animate.ng-leave {
-        top:0;
-      }
-      .slide-animate.ng-leave.ng-leave-active {
-        top:50px;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var templateSelect = element(by.model('template'));
-      var includeElem = element(by.css('[ng-include]'));
-
-      it('should load template1.html', function() {
-        expect(includeElem.getText()).toMatch(/Content of template1.html/);
-      });
-
-      it('should load template2.html', function() {
-        if (browser.params.browser == 'firefox') {
-          // Firefox can't handle using selects
-          // See https://github.com/angular/protractor/issues/480
-          return;
-        }
-        templateSelect.click();
-        templateSelect.all(by.css('option')).get(2).click();
-        expect(includeElem.getText()).toMatch(/Content of template2.html/);
-      });
-
-      it('should change to blank', function() {
-        if (browser.params.browser == 'firefox') {
-          // Firefox can't handle using selects
-          return;
-        }
-        templateSelect.click();
-        templateSelect.all(by.css('option')).get(0).click();
-        expect(includeElem.isPresent()).toBe(false);
-      });
-    </file>
-  </example>
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentRequested
- * @eventType emit on the scope ngInclude was declared in
- * @description
- * Emitted every time the ngInclude content is requested.
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentLoaded
- * @eventType emit on the current ngInclude scope
- * @description
- * Emitted every time the ngInclude content is reloaded.
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentError
- * @eventType emit on the scope ngInclude was declared in
- * @description
- * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', '$sce',
-                  function($templateRequest,   $anchorScroll,   $animate,   $sce) {
-  return {
-    restrict: 'ECA',
-    priority: 400,
-    terminal: true,
-    transclude: 'element',
-    controller: angular.noop,
-    compile: function(element, attr) {
-      var srcExp = attr.ngInclude || attr.src,
-          onloadExp = attr.onload || '',
-          autoScrollExp = attr.autoscroll;
-
-      return function(scope, $element, $attr, ctrl, $transclude) {
-        var changeCounter = 0,
-            currentScope,
-            previousElement,
-            currentElement;
-
-        var cleanupLastIncludeContent = function() {
-          if (previousElement) {
-            previousElement.remove();
-            previousElement = null;
-          }
-          if (currentScope) {
-            currentScope.$destroy();
-            currentScope = null;
-          }
-          if (currentElement) {
-            $animate.leave(currentElement).then(function() {
-              previousElement = null;
-            });
-            previousElement = currentElement;
-            currentElement = null;
-          }
-        };
-
-        scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) {
-          var afterAnimation = function() {
-            if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
-              $anchorScroll();
-            }
-          };
-          var thisChangeId = ++changeCounter;
-
-          if (src) {
-            //set the 2nd param to true to ignore the template request error so that the inner
-            //contents and scope can be cleaned up.
-            $templateRequest(src, true).then(function(response) {
-              if (thisChangeId !== changeCounter) return;
-              var newScope = scope.$new();
-              ctrl.template = response;
-
-              // Note: This will also link all children of ng-include that were contained in the original
-              // html. If that content contains controllers, ... they could pollute/change the scope.
-              // However, using ng-include on an element with additional content does not make sense...
-              // Note: We can't remove them in the cloneAttchFn of $transclude as that
-              // function is called before linking the content, which would apply child
-              // directives to non existing elements.
-              var clone = $transclude(newScope, function(clone) {
-                cleanupLastIncludeContent();
-                $animate.enter(clone, null, $element).then(afterAnimation);
-              });
-
-              currentScope = newScope;
-              currentElement = clone;
-
-              currentScope.$emit('$includeContentLoaded', src);
-              scope.$eval(onloadExp);
-            }, function() {
-              if (thisChangeId === changeCounter) {
-                cleanupLastIncludeContent();
-                scope.$emit('$includeContentError', src);
-              }
-            });
-            scope.$emit('$includeContentRequested', src);
-          } else {
-            cleanupLastIncludeContent();
-            ctrl.template = null;
-          }
-        });
-      };
-    }
-  };
-}];
-
-// This directive is called during the $transclude call of the first `ngInclude` directive.
-// It will replace and compile the content of the element with the loaded template.
-// We need this directive so that the element content is already filled when
-// the link function of another directive on the same element as ngInclude
-// is called.
-var ngIncludeFillContentDirective = ['$compile',
-  function($compile) {
-    return {
-      restrict: 'ECA',
-      priority: -400,
-      require: 'ngInclude',
-      link: function(scope, $element, $attr, ctrl) {
-        if (/SVG/.test($element[0].toString())) {
-          // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not
-          // support innerHTML, so detect this here and try to generate the contents
-          // specially.
-          $element.empty();
-          $compile(jqLiteBuildFragment(ctrl.template, document).childNodes)(scope,
-              function namespaceAdaptedClone(clone) {
-            $element.append(clone);
-          }, {futureParentElement: $element});
-          return;
-        }
-
-        $element.html(ctrl.template);
-        $compile($element.contents())(scope);
-      }
-    };
-  }];
-
-/**
- * @ngdoc directive
- * @name ngInit
- * @restrict AC
- *
- * @description
- * The `ngInit` directive allows you to evaluate an expression in the
- * current scope.
- *
- * <div class="alert alert-error">
- * The only appropriate use of `ngInit` is for aliasing special properties of
- * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you
- * should use {@link guide/controller controllers} rather than `ngInit`
- * to initialize values on a scope.
- * </div>
- * <div class="alert alert-warning">
- * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make
- * sure you have parenthesis for correct precedence:
- * <pre class="prettyprint">
- * `<div ng-init="test1 = (data | orderBy:'name')"></div>`
- * </pre>
- * </div>
- *
- * @priority 450
- *
- * @element ANY
- * @param {expression} ngInit {@link guide/expression Expression} to eval.
- *
- * @example
-   <example module="initExample">
-     <file name="index.html">
-   <script>
-     angular.module('initExample', [])
-       .controller('ExampleController', ['$scope', function($scope) {
-         $scope.list = [['a', 'b'], ['c', 'd']];
-       }]);
-   </script>
-   <div ng-controller="ExampleController">
-     <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
-       <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
-          <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
-       </div>
-     </div>
-   </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should alias index positions', function() {
-         var elements = element.all(by.css('.example-init'));
-         expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
-         expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
-         expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
-         expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
-       });
-     </file>
-   </example>
- */
-var ngInitDirective = ngDirective({
-  priority: 450,
-  compile: function() {
-    return {
-      pre: function(scope, element, attrs) {
-        scope.$eval(attrs.ngInit);
-      }
-    };
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngList
- *
- * @description
- * Text input that converts between a delimited string and an array of strings. The default
- * delimiter is a comma followed by a space - equivalent to `ng-list=", "`. You can specify a custom
- * delimiter as the value of the `ngList` attribute - for example, `ng-list=" | "`.
- *
- * The behaviour of the directive is affected by the use of the `ngTrim` attribute.
- * * If `ngTrim` is set to `"false"` then whitespace around both the separator and each
- *   list item is respected. This implies that the user of the directive is responsible for
- *   dealing with whitespace but also allows you to use whitespace as a delimiter, such as a
- *   tab or newline character.
- * * Otherwise whitespace around the delimiter is ignored when splitting (although it is respected
- *   when joining the list items back together) and whitespace around each list item is stripped
- *   before it is added to the model.
- *
- * ### Example with Validation
- *
- * <example name="ngList-directive" module="listExample">
- *   <file name="app.js">
- *      angular.module('listExample', [])
- *        .controller('ExampleController', ['$scope', function($scope) {
- *          $scope.names = ['morpheus', 'neo', 'trinity'];
- *        }]);
- *   </file>
- *   <file name="index.html">
- *    <form name="myForm" ng-controller="ExampleController">
- *      List: <input name="namesInput" ng-model="names" ng-list required>
- *      <span class="error" ng-show="myForm.namesInput.$error.required">
- *        Required!</span>
- *      <br>
- *      <tt>names = {{names}}</tt><br/>
- *      <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
- *      <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
- *      <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
- *      <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
- *     </form>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     var listInput = element(by.model('names'));
- *     var names = element(by.exactBinding('names'));
- *     var valid = element(by.binding('myForm.namesInput.$valid'));
- *     var error = element(by.css('span.error'));
- *
- *     it('should initialize to model', function() {
- *       expect(names.getText()).toContain('["morpheus","neo","trinity"]');
- *       expect(valid.getText()).toContain('true');
- *       expect(error.getCssValue('display')).toBe('none');
- *     });
- *
- *     it('should be invalid if empty', function() {
- *       listInput.clear();
- *       listInput.sendKeys('');
- *
- *       expect(names.getText()).toContain('');
- *       expect(valid.getText()).toContain('false');
- *       expect(error.getCssValue('display')).not.toBe('none');
- *     });
- *   </file>
- * </example>
- *
- * ### Example - splitting on whitespace
- * <example name="ngList-directive-newlines">
- *   <file name="index.html">
- *    <textarea ng-model="list" ng-list="&#10;" ng-trim="false"></textarea>
- *    <pre>{{ list | json }}</pre>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     it("should split the text by newlines", function() {
- *       var listInput = element(by.model('list'));
- *       var output = element(by.binding('list | json'));
- *       listInput.sendKeys('abc\ndef\nghi');
- *       expect(output.getText()).toContain('[\n  "abc",\n  "def",\n  "ghi"\n]');
- *     });
- *   </file>
- * </example>
- *
- * @element input
- * @param {string=} ngList optional delimiter that should be used to split the value.
- */
-var ngListDirective = function() {
-  return {
-    restrict: 'A',
-    priority: 100,
-    require: 'ngModel',
-    link: function(scope, element, attr, ctrl) {
-      // We want to control whitespace trimming so we use this convoluted approach
-      // to access the ngList attribute, which doesn't pre-trim the attribute
-      var ngList = element.attr(attr.$attr.ngList) || ', ';
-      var trimValues = attr.ngTrim !== 'false';
-      var separator = trimValues ? trim(ngList) : ngList;
-
-      var parse = function(viewValue) {
-        // If the viewValue is invalid (say required but empty) it will be `undefined`
-        if (isUndefined(viewValue)) return;
-
-        var list = [];
-
-        if (viewValue) {
-          forEach(viewValue.split(separator), function(value) {
-            if (value) list.push(trimValues ? trim(value) : value);
-          });
-        }
-
-        return list;
-      };
-
-      ctrl.$parsers.push(parse);
-      ctrl.$formatters.push(function(value) {
-        if (isArray(value)) {
-          return value.join(ngList);
-        }
-
-        return undefined;
-      });
-
-      // Override the standard $isEmpty because an empty array means the input is empty.
-      ctrl.$isEmpty = function(value) {
-        return !value || !value.length;
-      };
-    }
-  };
-};
-
-/* global VALID_CLASS: true,
-  INVALID_CLASS: true,
-  PRISTINE_CLASS: true,
-  DIRTY_CLASS: true,
-  UNTOUCHED_CLASS: true,
-  TOUCHED_CLASS: true,
-*/
-
-var VALID_CLASS = 'ng-valid',
-    INVALID_CLASS = 'ng-invalid',
-    PRISTINE_CLASS = 'ng-pristine',
-    DIRTY_CLASS = 'ng-dirty',
-    UNTOUCHED_CLASS = 'ng-untouched',
-    TOUCHED_CLASS = 'ng-touched',
-    PENDING_CLASS = 'ng-pending';
-
-
-var $ngModelMinErr = new minErr('ngModel');
-
-/**
- * @ngdoc type
- * @name ngModel.NgModelController
- *
- * @property {string} $viewValue Actual string value in the view.
- * @property {*} $modelValue The value in the model that the control is bound to.
- * @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever
-       the control reads value from the DOM. The functions are called in array order, each passing
-       its return value through to the next. The last return value is forwarded to the
-       {@link ngModel.NgModelController#$validators `$validators`} collection.
-
-Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue
-`$viewValue`}.
-
-Returning `undefined` from a parser means a parse error occurred. In that case,
-no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel`
-will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`}
-is set to `true`. The parse error is stored in `ngModel.$error.parse`.
-
- *
- * @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever
-       the model value changes. The functions are called in reverse array order, each passing the value through to the
-       next. The last return value is used as the actual DOM value.
-       Used to format / convert values for display in the control.
- * ```js
- * function formatter(value) {
- *   if (value) {
- *     return value.toUpperCase();
- *   }
- * }
- * ngModel.$formatters.push(formatter);
- * ```
- *
- * @property {Object.<string, function>} $validators A collection of validators that are applied
- *      whenever the model value changes. The key value within the object refers to the name of the
- *      validator while the function refers to the validation operation. The validation operation is
- *      provided with the model value as an argument and must return a true or false value depending
- *      on the response of that validation.
- *
- * ```js
- * ngModel.$validators.validCharacters = function(modelValue, viewValue) {
- *   var value = modelValue || viewValue;
- *   return /[0-9]+/.test(value) &&
- *          /[a-z]+/.test(value) &&
- *          /[A-Z]+/.test(value) &&
- *          /\W+/.test(value);
- * };
- * ```
- *
- * @property {Object.<string, function>} $asyncValidators A collection of validations that are expected to
- *      perform an asynchronous validation (e.g. a HTTP request). The validation function that is provided
- *      is expected to return a promise when it is run during the model validation process. Once the promise
- *      is delivered then the validation status will be set to true when fulfilled and false when rejected.
- *      When the asynchronous validators are triggered, each of the validators will run in parallel and the model
- *      value will only be updated once all validators have been fulfilled. As long as an asynchronous validator
- *      is unfulfilled, its key will be added to the controllers `$pending` property. Also, all asynchronous validators
- *      will only run once all synchronous validators have passed.
- *
- * Please note that if $http is used then it is important that the server returns a success HTTP response code
- * in order to fulfill the validation and a status level of `4xx` in order to reject the validation.
- *
- * ```js
- * ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
- *   var value = modelValue || viewValue;
- *
- *   // Lookup user by username
- *   return $http.get('/api/users/' + value).
- *      then(function resolved() {
- *        //username exists, this means validation fails
- *        return $q.reject('exists');
- *      }, function rejected() {
- *        //username does not exist, therefore this validation passes
- *        return true;
- *      });
- * };
- * ```
- *
- * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the
- *     view value has changed. It is called with no arguments, and its return value is ignored.
- *     This can be used in place of additional $watches against the model value.
- *
- * @property {Object} $error An object hash with all failing validator ids as keys.
- * @property {Object} $pending An object hash with all pending validator ids as keys.
- *
- * @property {boolean} $untouched True if control has not lost focus yet.
- * @property {boolean} $touched True if control has lost focus.
- * @property {boolean} $pristine True if user has not interacted with the control yet.
- * @property {boolean} $dirty True if user has already interacted with the control.
- * @property {boolean} $valid True if there is no error.
- * @property {boolean} $invalid True if at least one error on the control.
- * @property {string} $name The name attribute of the control.
- *
- * @description
- *
- * `NgModelController` provides API for the {@link ngModel `ngModel`} directive.
- * The controller contains services for data-binding, validation, CSS updates, and value formatting
- * and parsing. It purposefully does not contain any logic which deals with DOM rendering or
- * listening to DOM events.
- * Such DOM related logic should be provided by other directives which make use of
- * `NgModelController` for data-binding to control elements.
- * Angular provides this DOM logic for most {@link input `input`} elements.
- * At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example
- * custom control example} that uses `ngModelController` to bind to `contenteditable` elements.
- *
- * @example
- * ### Custom Control Example
- * This example shows how to use `NgModelController` with a custom control to achieve
- * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
- * collaborate together to achieve the desired result.
- *
- * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element
- * contents be edited in place by the user.  This will not work on older browsers.
- *
- * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}
- * module to automatically remove "bad" content like inline event listener (e.g. `<span onclick="...">`).
- * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks
- * that content using the `$sce` service.
- *
- * <example name="NgModelController" module="customControl" deps="angular-sanitize.js">
-    <file name="style.css">
-      [contenteditable] {
-        border: 1px solid black;
-        background-color: white;
-        min-height: 20px;
-      }
-
-      .ng-invalid {
-        border: 1px solid red;
-      }
-
-    </file>
-    <file name="script.js">
-      angular.module('customControl', ['ngSanitize']).
-        directive('contenteditable', ['$sce', function($sce) {
-          return {
-            restrict: 'A', // only activate on element attribute
-            require: '?ngModel', // get a hold of NgModelController
-            link: function(scope, element, attrs, ngModel) {
-              if (!ngModel) return; // do nothing if no ng-model
-
-              // Specify how UI should be updated
-              ngModel.$render = function() {
-                element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
-              };
-
-              // Listen for change events to enable binding
-              element.on('blur keyup change', function() {
-                scope.$evalAsync(read);
-              });
-              read(); // initialize
-
-              // Write data to the model
-              function read() {
-                var html = element.html();
-                // When we clear the content editable the browser leaves a <br> behind
-                // If strip-br attribute is provided then we strip this out
-                if ( attrs.stripBr && html == '<br>' ) {
-                  html = '';
-                }
-                ngModel.$setViewValue(html);
-              }
-            }
-          };
-        }]);
-    </file>
-    <file name="index.html">
-      <form name="myForm">
-       <div contenteditable
-            name="myWidget" ng-model="userContent"
-            strip-br="true"
-            required>Change me!</div>
-        <span ng-show="myForm.myWidget.$error.required">Required!</span>
-       <hr>
-       <textarea ng-model="userContent"></textarea>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-    it('should data-bind and become invalid', function() {
-      if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {
-        // SafariDriver can't handle contenteditable
-        // and Firefox driver can't clear contenteditables very well
-        return;
-      }
-      var contentEditable = element(by.css('[contenteditable]'));
-      var content = 'Change me!';
-
-      expect(contentEditable.getText()).toEqual(content);
-
-      contentEditable.clear();
-      contentEditable.sendKeys(protractor.Key.BACK_SPACE);
-      expect(contentEditable.getText()).toEqual('');
-      expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);
-    });
-    </file>
- * </example>
- *
- *
- */
-var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', '$interpolate',
-    function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) {
-  this.$viewValue = Number.NaN;
-  this.$modelValue = Number.NaN;
-  this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.
-  this.$validators = {};
-  this.$asyncValidators = {};
-  this.$parsers = [];
-  this.$formatters = [];
-  this.$viewChangeListeners = [];
-  this.$untouched = true;
-  this.$touched = false;
-  this.$pristine = true;
-  this.$dirty = false;
-  this.$valid = true;
-  this.$invalid = false;
-  this.$error = {}; // keep invalid keys here
-  this.$$success = {}; // keep valid keys here
-  this.$pending = undefined; // keep pending keys here
-  this.$name = $interpolate($attr.name || '', false)($scope);
-
-
-  var parsedNgModel = $parse($attr.ngModel),
-      parsedNgModelAssign = parsedNgModel.assign,
-      ngModelGet = parsedNgModel,
-      ngModelSet = parsedNgModelAssign,
-      pendingDebounce = null,
-      ctrl = this;
-
-  this.$$setOptions = function(options) {
-    ctrl.$options = options;
-    if (options && options.getterSetter) {
-      var invokeModelGetter = $parse($attr.ngModel + '()'),
-          invokeModelSetter = $parse($attr.ngModel + '($$$p)');
-
-      ngModelGet = function($scope) {
-        var modelValue = parsedNgModel($scope);
-        if (isFunction(modelValue)) {
-          modelValue = invokeModelGetter($scope);
-        }
-        return modelValue;
-      };
-      ngModelSet = function($scope, newValue) {
-        if (isFunction(parsedNgModel($scope))) {
-          invokeModelSetter($scope, {$$$p: ctrl.$modelValue});
-        } else {
-          parsedNgModelAssign($scope, ctrl.$modelValue);
-        }
-      };
-    } else if (!parsedNgModel.assign) {
-      throw $ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}",
-          $attr.ngModel, startingTag($element));
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$render
-   *
-   * @description
-   * Called when the view needs to be updated. It is expected that the user of the ng-model
-   * directive will implement this method.
-   *
-   * The `$render()` method is invoked in the following situations:
-   *
-   * * `$rollbackViewValue()` is called.  If we are rolling back the view value to the last
-   *   committed value then `$render()` is called to update the input control.
-   * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and
-   *   the `$viewValue` are different to last time.
-   *
-   * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of
-   * `$modelValue` and `$viewValue` are actually different to their previous value. If `$modelValue`
-   * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be
-   * invoked if you only change a property on the objects.
-   */
-  this.$render = noop;
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$isEmpty
-   *
-   * @description
-   * This is called when we need to determine if the value of an input is empty.
-   *
-   * For instance, the required directive does this to work out if the input has data or not.
-   *
-   * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.
-   *
-   * You can override this for input directives whose concept of being empty is different to the
-   * default. The `checkboxInputType` directive does this because in its case a value of `false`
-   * implies empty.
-   *
-   * @param {*} value The value of the input to check for emptiness.
-   * @returns {boolean} True if `value` is "empty".
-   */
-  this.$isEmpty = function(value) {
-    return isUndefined(value) || value === '' || value === null || value !== value;
-  };
-
-  var parentForm = $element.inheritedData('$formController') || nullFormCtrl,
-      currentValidationRunId = 0;
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setValidity
-   *
-   * @description
-   * Change the validity state, and notify the form.
-   *
-   * This method can be called within $parsers/$formatters or a custom validation implementation.
-   * However, in most cases it should be sufficient to use the `ngModel.$validators` and
-   * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically.
-   *
-   * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned
-   *        to either `$error[validationErrorKey]` or `$pending[validationErrorKey]`
-   *        (for unfulfilled `$asyncValidators`), so that it is available for data-binding.
-   *        The `validationErrorKey` should be in camelCase and will get converted into dash-case
-   *        for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`
-   *        class and can be bound to as  `{{someForm.someControl.$error.myError}}` .
-   * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined),
-   *                          or skipped (null). Pending is used for unfulfilled `$asyncValidators`.
-   *                          Skipped is used by Angular when validators do not run because of parse errors and
-   *                          when `$asyncValidators` do not run because any of the `$validators` failed.
-   */
-  addSetValidityMethod({
-    ctrl: this,
-    $element: $element,
-    set: function(object, property) {
-      object[property] = true;
-    },
-    unset: function(object, property) {
-      delete object[property];
-    },
-    parentForm: parentForm,
-    $animate: $animate
-  });
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setPristine
-   *
-   * @description
-   * Sets the control to its pristine state.
-   *
-   * This method can be called to remove the `ng-dirty` class and set the control to its pristine
-   * state (`ng-pristine` class). A model is considered to be pristine when the control
-   * has not been changed from when first compiled.
-   */
-  this.$setPristine = function() {
-    ctrl.$dirty = false;
-    ctrl.$pristine = true;
-    $animate.removeClass($element, DIRTY_CLASS);
-    $animate.addClass($element, PRISTINE_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setDirty
-   *
-   * @description
-   * Sets the control to its dirty state.
-   *
-   * This method can be called to remove the `ng-pristine` class and set the control to its dirty
-   * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed
-   * from when first compiled.
-   */
-  this.$setDirty = function() {
-    ctrl.$dirty = true;
-    ctrl.$pristine = false;
-    $animate.removeClass($element, PRISTINE_CLASS);
-    $animate.addClass($element, DIRTY_CLASS);
-    parentForm.$setDirty();
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setUntouched
-   *
-   * @description
-   * Sets the control to its untouched state.
-   *
-   * This method can be called to remove the `ng-touched` class and set the control to its
-   * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched
-   * by default, however this function can be used to restore that state if the model has
-   * already been touched by the user.
-   */
-  this.$setUntouched = function() {
-    ctrl.$touched = false;
-    ctrl.$untouched = true;
-    $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setTouched
-   *
-   * @description
-   * Sets the control to its touched state.
-   *
-   * This method can be called to remove the `ng-untouched` class and set the control to its
-   * touched state (`ng-touched` class). A model is considered to be touched when the user has
-   * first focused the control element and then shifted focus away from the control (blur event).
-   */
-  this.$setTouched = function() {
-    ctrl.$touched = true;
-    ctrl.$untouched = false;
-    $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$rollbackViewValue
-   *
-   * @description
-   * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`,
-   * which may be caused by a pending debounced event or because the input is waiting for a some
-   * future event.
-   *
-   * If you have an input that uses `ng-model-options` to set up debounced events or events such
-   * as blur you can have a situation where there is a period when the `$viewValue`
-   * is out of synch with the ngModel's `$modelValue`.
-   *
-   * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue`
-   * programmatically before these debounced/future events have resolved/occurred, because Angular's
-   * dirty checking mechanism is not able to tell whether the model has actually changed or not.
-   *
-   * The `$rollbackViewValue()` method should be called before programmatically changing the model of an
-   * input which may have such events pending. This is important in order to make sure that the
-   * input field will be updated with the new model value and any pending operations are cancelled.
-   *
-   * <example name="ng-model-cancel-update" module="cancel-update-example">
-   *   <file name="app.js">
-   *     angular.module('cancel-update-example', [])
-   *
-   *     .controller('CancelUpdateController', ['$scope', function($scope) {
-   *       $scope.resetWithCancel = function(e) {
-   *         if (e.keyCode == 27) {
-   *           $scope.myForm.myInput1.$rollbackViewValue();
-   *           $scope.myValue = '';
-   *         }
-   *       };
-   *       $scope.resetWithoutCancel = function(e) {
-   *         if (e.keyCode == 27) {
-   *           $scope.myValue = '';
-   *         }
-   *       };
-   *     }]);
-   *   </file>
-   *   <file name="index.html">
-   *     <div ng-controller="CancelUpdateController">
-   *       <p>Try typing something in each input.  See that the model only updates when you
-   *          blur off the input.
-   *        </p>
-   *        <p>Now see what happens if you start typing then press the Escape key</p>
-   *
-   *       <form name="myForm" ng-model-options="{ updateOn: 'blur' }">
-   *         <p>With $rollbackViewValue()</p>
-   *         <input name="myInput1" ng-model="myValue" ng-keydown="resetWithCancel($event)"><br/>
-   *         myValue: "{{ myValue }}"
-   *
-   *         <p>Without $rollbackViewValue()</p>
-   *         <input name="myInput2" ng-model="myValue" ng-keydown="resetWithoutCancel($event)"><br/>
-   *         myValue: "{{ myValue }}"
-   *       </form>
-   *     </div>
-   *   </file>
-   * </example>
-   */
-  this.$rollbackViewValue = function() {
-    $timeout.cancel(pendingDebounce);
-    ctrl.$viewValue = ctrl.$$lastCommittedViewValue;
-    ctrl.$render();
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$validate
-   *
-   * @description
-   * Runs each of the registered validators (first synchronous validators and then
-   * asynchronous validators).
-   * If the validity changes to invalid, the model will be set to `undefined`,
-   * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
-   * If the validity changes to valid, it will set the model to the last available valid
-   * modelValue, i.e. either the last parsed value or the last value set from the scope.
-   */
-  this.$validate = function() {
-    // ignore $validate before model is initialized
-    if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
-      return;
-    }
-
-    var viewValue = ctrl.$$lastCommittedViewValue;
-    // Note: we use the $$rawModelValue as $modelValue might have been
-    // set to undefined during a view -> model update that found validation
-    // errors. We can't parse the view here, since that could change
-    // the model although neither viewValue nor the model on the scope changed
-    var modelValue = ctrl.$$rawModelValue;
-
-    // Check if the there's a parse error, so we don't unset it accidentially
-    var parserName = ctrl.$$parserName || 'parse';
-    var parserValid = ctrl.$error[parserName] ? false : undefined;
-
-    var prevValid = ctrl.$valid;
-    var prevModelValue = ctrl.$modelValue;
-
-    var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
-
-    ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) {
-      // If there was no change in validity, don't update the model
-      // This prevents changing an invalid modelValue to undefined
-      if (!allowInvalid && prevValid !== allValid) {
-        // Note: Don't check ctrl.$valid here, as we could have
-        // external validators (e.g. calculated on the server),
-        // that just call $setValidity and need the model value
-        // to calculate their validity.
-        ctrl.$modelValue = allValid ? modelValue : undefined;
-
-        if (ctrl.$modelValue !== prevModelValue) {
-          ctrl.$$writeModelToScope();
-        }
-      }
-    });
-
-  };
-
-  this.$$runValidators = function(parseValid, modelValue, viewValue, doneCallback) {
-    currentValidationRunId++;
-    var localValidationRunId = currentValidationRunId;
-
-    // check parser error
-    if (!processParseErrors(parseValid)) {
-      validationDone(false);
-      return;
-    }
-    if (!processSyncValidators()) {
-      validationDone(false);
-      return;
-    }
-    processAsyncValidators();
-
-    function processParseErrors(parseValid) {
-      var errorKey = ctrl.$$parserName || 'parse';
-      if (parseValid === undefined) {
-        setValidity(errorKey, null);
-      } else {
-        setValidity(errorKey, parseValid);
-        if (!parseValid) {
-          forEach(ctrl.$validators, function(v, name) {
-            setValidity(name, null);
-          });
-          forEach(ctrl.$asyncValidators, function(v, name) {
-            setValidity(name, null);
-          });
-          return false;
-        }
-      }
-      return true;
-    }
-
-    function processSyncValidators() {
-      var syncValidatorsValid = true;
-      forEach(ctrl.$validators, function(validator, name) {
-        var result = validator(modelValue, viewValue);
-        syncValidatorsValid = syncValidatorsValid && result;
-        setValidity(name, result);
-      });
-      if (!syncValidatorsValid) {
-        forEach(ctrl.$asyncValidators, function(v, name) {
-          setValidity(name, null);
-        });
-        return false;
-      }
-      return true;
-    }
-
-    function processAsyncValidators() {
-      var validatorPromises = [];
-      var allValid = true;
-      forEach(ctrl.$asyncValidators, function(validator, name) {
-        var promise = validator(modelValue, viewValue);
-        if (!isPromiseLike(promise)) {
-          throw $ngModelMinErr("$asyncValidators",
-            "Expected asynchronous validator to return a promise but got '{0}' instead.", promise);
-        }
-        setValidity(name, undefined);
-        validatorPromises.push(promise.then(function() {
-          setValidity(name, true);
-        }, function(error) {
-          allValid = false;
-          setValidity(name, false);
-        }));
-      });
-      if (!validatorPromises.length) {
-        validationDone(true);
-      } else {
-        $q.all(validatorPromises).then(function() {
-          validationDone(allValid);
-        }, noop);
-      }
-    }
-
-    function setValidity(name, isValid) {
-      if (localValidationRunId === currentValidationRunId) {
-        ctrl.$setValidity(name, isValid);
-      }
-    }
-
-    function validationDone(allValid) {
-      if (localValidationRunId === currentValidationRunId) {
-
-        doneCallback(allValid);
-      }
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$commitViewValue
-   *
-   * @description
-   * Commit a pending update to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. this method is rarely needed as `NgModelController`
-   * usually handles calling this in response to input events.
-   */
-  this.$commitViewValue = function() {
-    var viewValue = ctrl.$viewValue;
-
-    $timeout.cancel(pendingDebounce);
-
-    // If the view value has not changed then we should just exit, except in the case where there is
-    // a native validator on the element. In this case the validation state may have changed even though
-    // the viewValue has stayed empty.
-    if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) {
-      return;
-    }
-    ctrl.$$lastCommittedViewValue = viewValue;
-
-    // change to dirty
-    if (ctrl.$pristine) {
-      this.$setDirty();
-    }
-    this.$$parseAndValidate();
-  };
-
-  this.$$parseAndValidate = function() {
-    var viewValue = ctrl.$$lastCommittedViewValue;
-    var modelValue = viewValue;
-    var parserValid = isUndefined(modelValue) ? undefined : true;
-
-    if (parserValid) {
-      for (var i = 0; i < ctrl.$parsers.length; i++) {
-        modelValue = ctrl.$parsers[i](modelValue);
-        if (isUndefined(modelValue)) {
-          parserValid = false;
-          break;
-        }
-      }
-    }
-    if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
-      // ctrl.$modelValue has not been touched yet...
-      ctrl.$modelValue = ngModelGet($scope);
-    }
-    var prevModelValue = ctrl.$modelValue;
-    var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
-    ctrl.$$rawModelValue = modelValue;
-
-    if (allowInvalid) {
-      ctrl.$modelValue = modelValue;
-      writeToModelIfNeeded();
-    }
-
-    // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
-    // This can happen if e.g. $setViewValue is called from inside a parser
-    ctrl.$$runValidators(parserValid, modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
-      if (!allowInvalid) {
-        // Note: Don't check ctrl.$valid here, as we could have
-        // external validators (e.g. calculated on the server),
-        // that just call $setValidity and need the model value
-        // to calculate their validity.
-        ctrl.$modelValue = allValid ? modelValue : undefined;
-        writeToModelIfNeeded();
-      }
-    });
-
-    function writeToModelIfNeeded() {
-      if (ctrl.$modelValue !== prevModelValue) {
-        ctrl.$$writeModelToScope();
-      }
-    }
-  };
-
-  this.$$writeModelToScope = function() {
-    ngModelSet($scope, ctrl.$modelValue);
-    forEach(ctrl.$viewChangeListeners, function(listener) {
-      try {
-        listener();
-      } catch (e) {
-        $exceptionHandler(e);
-      }
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setViewValue
-   *
-   * @description
-   * Update the view value.
-   *
-   * This method should be called when an input directive want to change the view value; typically,
-   * this is done from within a DOM event handler.
-   *
-   * For example {@link ng.directive:input input} calls it when the value of the input changes and
-   * {@link ng.directive:select select} calls it when an option is selected.
-   *
-   * If the new `value` is an object (rather than a string or a number), we should make a copy of the
-   * object before passing it to `$setViewValue`.  This is because `ngModel` does not perform a deep
-   * watch of objects, it only looks for a change of identity. If you only change the property of
-   * the object then ngModel will not realise that the object has changed and will not invoke the
-   * `$parsers` and `$validators` pipelines.
-   *
-   * For this reason, you should not change properties of the copy once it has been passed to
-   * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly.
-   *
-   * When this method is called, the new `value` will be staged for committing through the `$parsers`
-   * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged
-   * value sent directly for processing, finally to be applied to `$modelValue` and then the
-   * **expression** specified in the `ng-model` attribute.
-   *
-   * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.
-   *
-   * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn`
-   * and the `default` trigger is not listed, all those actions will remain pending until one of the
-   * `updateOn` events is triggered on the DOM element.
-   * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions}
-   * directive is used with a custom debounce for this particular event.
-   *
-   * Note that calling this function does not trigger a `$digest`.
-   *
-   * @param {string} value Value from the view.
-   * @param {string} trigger Event that triggered the update.
-   */
-  this.$setViewValue = function(value, trigger) {
-    ctrl.$viewValue = value;
-    if (!ctrl.$options || ctrl.$options.updateOnDefault) {
-      ctrl.$$debounceViewValueCommit(trigger);
-    }
-  };
-
-  this.$$debounceViewValueCommit = function(trigger) {
-    var debounceDelay = 0,
-        options = ctrl.$options,
-        debounce;
-
-    if (options && isDefined(options.debounce)) {
-      debounce = options.debounce;
-      if (isNumber(debounce)) {
-        debounceDelay = debounce;
-      } else if (isNumber(debounce[trigger])) {
-        debounceDelay = debounce[trigger];
-      } else if (isNumber(debounce['default'])) {
-        debounceDelay = debounce['default'];
-      }
-    }
-
-    $timeout.cancel(pendingDebounce);
-    if (debounceDelay) {
-      pendingDebounce = $timeout(function() {
-        ctrl.$commitViewValue();
-      }, debounceDelay);
-    } else if ($rootScope.$$phase) {
-      ctrl.$commitViewValue();
-    } else {
-      $scope.$apply(function() {
-        ctrl.$commitViewValue();
-      });
-    }
-  };
-
-  // model -> value
-  // Note: we cannot use a normal scope.$watch as we want to detect the following:
-  // 1. scope value is 'a'
-  // 2. user enters 'b'
-  // 3. ng-change kicks in and reverts scope value to 'a'
-  //    -> scope value did not change since the last digest as
-  //       ng-change executes in apply phase
-  // 4. view should be changed back to 'a'
-  $scope.$watch(function ngModelWatch() {
-    var modelValue = ngModelGet($scope);
-
-    // if scope model value and ngModel value are out of sync
-    // TODO(perf): why not move this to the action fn?
-    if (modelValue !== ctrl.$modelValue) {
-      ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
-
-      var formatters = ctrl.$formatters,
-          idx = formatters.length;
-
-      var viewValue = modelValue;
-      while (idx--) {
-        viewValue = formatters[idx](viewValue);
-      }
-      if (ctrl.$viewValue !== viewValue) {
-        ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
-        ctrl.$render();
-
-        ctrl.$$runValidators(undefined, modelValue, viewValue, noop);
-      }
-    }
-
-    return modelValue;
-  });
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngModel
- *
- * @element input
- * @priority 1
- *
- * @description
- * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a
- * property on the scope using {@link ngModel.NgModelController NgModelController},
- * which is created and exposed by this directive.
- *
- * `ngModel` is responsible for:
- *
- * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`
- *   require.
- * - Providing validation behavior (i.e. required, number, email, url).
- * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors).
- * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`, `ng-untouched`) including animations.
- * - Registering the control with its parent {@link ng.directive:form form}.
- *
- * Note: `ngModel` will try to bind to the property given by evaluating the expression on the
- * current scope. If the property doesn't already exist on this scope, it will be created
- * implicitly and added to the scope.
- *
- * For best practices on using `ngModel`, see:
- *
- *  - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)
- *
- * For basic examples, how to use `ngModel`, see:
- *
- *  - {@link ng.directive:input input}
- *    - {@link input[text] text}
- *    - {@link input[checkbox] checkbox}
- *    - {@link input[radio] radio}
- *    - {@link input[number] number}
- *    - {@link input[email] email}
- *    - {@link input[url] url}
- *    - {@link input[date] date}
- *    - {@link input[datetime-local] datetime-local}
- *    - {@link input[time] time}
- *    - {@link input[month] month}
- *    - {@link input[week] week}
- *  - {@link ng.directive:select select}
- *  - {@link ng.directive:textarea textarea}
- *
- * # CSS classes
- * The following CSS classes are added and removed on the associated input/select/textarea element
- * depending on the validity of the model.
- *
- *  - `ng-valid`: the model is valid
- *  - `ng-invalid`: the model is invalid
- *  - `ng-valid-[key]`: for each valid key added by `$setValidity`
- *  - `ng-invalid-[key]`: for each invalid key added by `$setValidity`
- *  - `ng-pristine`: the control hasn't been interacted with yet
- *  - `ng-dirty`: the control has been interacted with
- *  - `ng-touched`: the control has been blurred
- *  - `ng-untouched`: the control hasn't been blurred
- *  - `ng-pending`: any `$asyncValidators` are unfulfilled
- *
- * Keep in mind that ngAnimate can detect each of these classes when added and removed.
- *
- * ## Animation Hooks
- *
- * Animations within models are triggered when any of the associated CSS classes are added and removed
- * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,
- * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.
- * The animations that are triggered within ngModel are similar to how they work in ngClass and
- * animations can be hooked into using CSS transitions, keyframes as well as JS animations.
- *
- * The following example shows a simple way to utilize CSS transitions to style an input element
- * that has been rendered as invalid after it has been validated:
- *
- * <pre>
- * //be sure to include ngAnimate as a module to hook into more
- * //advanced animations
- * .my-input {
- *   transition:0.5s linear all;
- *   background: white;
- * }
- * .my-input.ng-invalid {
- *   background: red;
- *   color:white;
- * }
- * </pre>
- *
- * @example
- * <example deps="angular-animate.js" animations="true" fixBase="true" module="inputExample">
-     <file name="index.html">
-       <script>
-        angular.module('inputExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.val = '1';
-          }]);
-       </script>
-       <style>
-         .my-input {
-           -webkit-transition:all linear 0.5s;
-           transition:all linear 0.5s;
-           background: transparent;
-         }
-         .my-input.ng-invalid {
-           color:white;
-           background: red;
-         }
-       </style>
-       Update input to see transitions when valid/invalid.
-       Integer is a valid value.
-       <form name="testForm" ng-controller="ExampleController">
-         <input ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input" />
-       </form>
-     </file>
- * </example>
- *
- * ## Binding to a getter/setter
- *
- * Sometimes it's helpful to bind `ngModel` to a getter/setter function.  A getter/setter is a
- * function that returns a representation of the model when called with zero arguments, and sets
- * the internal state of a model when called with an argument. It's sometimes useful to use this
- * for models that have an internal representation that's different than what the model exposes
- * to the view.
- *
- * <div class="alert alert-success">
- * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more
- * frequently than other parts of your code.
- * </div>
- *
- * You use this behavior by adding `ng-model-options="{ getterSetter: true }"` to an element that
- * has `ng-model` attached to it. You can also add `ng-model-options="{ getterSetter: true }"` to
- * a `<form>`, which will enable this behavior for all `<input>`s within it. See
- * {@link ng.directive:ngModelOptions `ngModelOptions`} for more.
- *
- * The following example shows how to use `ngModel` with a getter/setter:
- *
- * @example
- * <example name="ngModel-getter-setter" module="getterSetterExample">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-         <form name="userForm">
-           Name:
-           <input type="text" name="userName"
-                  ng-model="user.name"
-                  ng-model-options="{ getterSetter: true }" />
-         </form>
-         <pre>user.name = <span ng-bind="user.name()"></span></pre>
-       </div>
-     </file>
-     <file name="app.js">
-       angular.module('getterSetterExample', [])
-         .controller('ExampleController', ['$scope', function($scope) {
-           var _name = 'Brian';
-           $scope.user = {
-             name: function(newName) {
-               if (angular.isDefined(newName)) {
-                 _name = newName;
-               }
-               return _name;
-             }
-           };
-         }]);
-     </file>
- * </example>
- */
-var ngModelDirective = ['$rootScope', function($rootScope) {
-  return {
-    restrict: 'A',
-    require: ['ngModel', '^?form', '^?ngModelOptions'],
-    controller: NgModelController,
-    // Prelink needs to run before any input directive
-    // so that we can set the NgModelOptions in NgModelController
-    // before anyone else uses it.
-    priority: 1,
-    compile: function ngModelCompile(element) {
-      // Setup initial state of the control
-      element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);
-
-      return {
-        pre: function ngModelPreLink(scope, element, attr, ctrls) {
-          var modelCtrl = ctrls[0],
-              formCtrl = ctrls[1] || nullFormCtrl;
-
-          modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options);
-
-          // notify others, especially parent forms
-          formCtrl.$addControl(modelCtrl);
-
-          attr.$observe('name', function(newValue) {
-            if (modelCtrl.$name !== newValue) {
-              formCtrl.$$renameControl(modelCtrl, newValue);
-            }
-          });
-
-          scope.$on('$destroy', function() {
-            formCtrl.$removeControl(modelCtrl);
-          });
-        },
-        post: function ngModelPostLink(scope, element, attr, ctrls) {
-          var modelCtrl = ctrls[0];
-          if (modelCtrl.$options && modelCtrl.$options.updateOn) {
-            element.on(modelCtrl.$options.updateOn, function(ev) {
-              modelCtrl.$$debounceViewValueCommit(ev && ev.type);
-            });
-          }
-
-          element.on('blur', function(ev) {
-            if (modelCtrl.$touched) return;
-
-            if ($rootScope.$$phase) {
-              scope.$evalAsync(modelCtrl.$setTouched);
-            } else {
-              scope.$apply(modelCtrl.$setTouched);
-            }
-          });
-        }
-      };
-    }
-  };
-}];
-
-var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/;
-
-/**
- * @ngdoc directive
- * @name ngModelOptions
- *
- * @description
- * Allows tuning how model updates are done. Using `ngModelOptions` you can specify a custom list of
- * events that will trigger a model update and/or a debouncing delay so that the actual update only
- * takes place when a timer expires; this timer will be reset after another change takes place.
- *
- * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might
- * be different than the value in the actual model. This means that if you update the model you
- * should also invoke {@link ngModel.NgModelController `$rollbackViewValue`} on the relevant input field in
- * order to make sure it is synchronized with the model and that any debounced action is canceled.
- *
- * The easiest way to reference the control's {@link ngModel.NgModelController `$rollbackViewValue`}
- * method is by making sure the input is placed inside a form that has a `name` attribute. This is
- * important because `form` controllers are published to the related scope under the name in their
- * `name` attribute.
- *
- * Any pending changes will take place immediately when an enclosing form is submitted via the
- * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
- * to have access to the updated model.
- *
- * `ngModelOptions` has an effect on the element it's declared on and its descendants.
- *
- * @param {Object} ngModelOptions options to apply to the current model. Valid keys are:
- *   - `updateOn`: string specifying which event should the input be bound to. You can set several
- *     events using an space delimited list. There is a special event called `default` that
- *     matches the default events belonging of the control.
- *   - `debounce`: integer value which contains the debounce model update value in milliseconds. A
- *     value of 0 triggers an immediate update. If an object is supplied instead, you can specify a
- *     custom value for each event. For example:
- *     `ng-model-options="{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }"`
- *   - `allowInvalid`: boolean value which indicates that the model can be set with values that did
- *     not validate correctly instead of the default behavior of setting the model to undefined.
- *   - `getterSetter`: boolean value which determines whether or not to treat functions bound to
-       `ngModel` as getters/setters.
- *   - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for
- *     `<input type="date">`, `<input type="time">`, ... . Right now, the only supported value is `'UTC'`,
- *     otherwise the default timezone of the browser will be used.
- *
- * @example
-
-  The following example shows how to override immediate updates. Changes on the inputs within the
-  form will update the model only when the control loses focus (blur event). If `escape` key is
-  pressed while the input field is focused, the value is reset to the value in the current model.
-
-  <example name="ngModelOptions-directive-blur" module="optionsExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ updateOn: 'blur' }"
-                 ng-keyup="cancel($event)" /><br />
-
-          Other data:
-          <input type="text" ng-model="user.data" /><br />
-        </form>
-        <pre>user.name = <span ng-bind="user.name"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('optionsExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.user = { name: 'say', data: '' };
-
-          $scope.cancel = function(e) {
-            if (e.keyCode == 27) {
-              $scope.userForm.userName.$rollbackViewValue();
-            }
-          };
-        }]);
-    </file>
-    <file name="protractor.js" type="protractor">
-      var model = element(by.binding('user.name'));
-      var input = element(by.model('user.name'));
-      var other = element(by.model('user.data'));
-
-      it('should allow custom events', function() {
-        input.sendKeys(' hello');
-        input.click();
-        expect(model.getText()).toEqual('say');
-        other.click();
-        expect(model.getText()).toEqual('say hello');
-      });
-
-      it('should $rollbackViewValue when model changes', function() {
-        input.sendKeys(' hello');
-        expect(input.getAttribute('value')).toEqual('say hello');
-        input.sendKeys(protractor.Key.ESCAPE);
-        expect(input.getAttribute('value')).toEqual('say');
-        other.click();
-        expect(model.getText()).toEqual('say');
-      });
-    </file>
-  </example>
-
-  This one shows how to debounce model changes. Model will be updated only 1 sec after last change.
-  If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.
-
-  <example name="ngModelOptions-directive-debounce" module="optionsExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ debounce: 1000 }" />
-          <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button><br />
-        </form>
-        <pre>user.name = <span ng-bind="user.name"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('optionsExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.user = { name: 'say' };
-        }]);
-    </file>
-  </example>
-
-  This one shows how to bind to getter/setters:
-
-  <example name="ngModelOptions-directive-getter-setter" module="getterSetterExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ getterSetter: true }" />
-        </form>
-        <pre>user.name = <span ng-bind="user.name()"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('getterSetterExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          var _name = 'Brian';
-          $scope.user = {
-            name: function(newName) {
-              return angular.isDefined(newName) ? (_name = newName) : _name;
-            }
-          };
-        }]);
-    </file>
-  </example>
- */
-var ngModelOptionsDirective = function() {
-  return {
-    restrict: 'A',
-    controller: ['$scope', '$attrs', function($scope, $attrs) {
-      var that = this;
-      this.$options = $scope.$eval($attrs.ngModelOptions);
-      // Allow adding/overriding bound events
-      if (this.$options.updateOn !== undefined) {
-        this.$options.updateOnDefault = false;
-        // extract "default" pseudo-event from list of events that can trigger a model update
-        this.$options.updateOn = trim(this.$options.updateOn.replace(DEFAULT_REGEXP, function() {
-          that.$options.updateOnDefault = true;
-          return ' ';
-        }));
-      } else {
-        this.$options.updateOnDefault = true;
-      }
-    }]
-  };
-};
-
-
-
-// helper methods
-function addSetValidityMethod(context) {
-  var ctrl = context.ctrl,
-      $element = context.$element,
-      classCache = {},
-      set = context.set,
-      unset = context.unset,
-      parentForm = context.parentForm,
-      $animate = context.$animate;
-
-  classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS));
-
-  ctrl.$setValidity = setValidity;
-
-  function setValidity(validationErrorKey, state, controller) {
-    if (state === undefined) {
-      createAndSet('$pending', validationErrorKey, controller);
-    } else {
-      unsetAndCleanup('$pending', validationErrorKey, controller);
-    }
-    if (!isBoolean(state)) {
-      unset(ctrl.$error, validationErrorKey, controller);
-      unset(ctrl.$$success, validationErrorKey, controller);
-    } else {
-      if (state) {
-        unset(ctrl.$error, validationErrorKey, controller);
-        set(ctrl.$$success, validationErrorKey, controller);
-      } else {
-        set(ctrl.$error, validationErrorKey, controller);
-        unset(ctrl.$$success, validationErrorKey, controller);
-      }
-    }
-    if (ctrl.$pending) {
-      cachedToggleClass(PENDING_CLASS, true);
-      ctrl.$valid = ctrl.$invalid = undefined;
-      toggleValidationCss('', null);
-    } else {
-      cachedToggleClass(PENDING_CLASS, false);
-      ctrl.$valid = isObjectEmpty(ctrl.$error);
-      ctrl.$invalid = !ctrl.$valid;
-      toggleValidationCss('', ctrl.$valid);
-    }
-
-    // re-read the state as the set/unset methods could have
-    // combined state in ctrl.$error[validationError] (used for forms),
-    // where setting/unsetting only increments/decrements the value,
-    // and does not replace it.
-    var combinedState;
-    if (ctrl.$pending && ctrl.$pending[validationErrorKey]) {
-      combinedState = undefined;
-    } else if (ctrl.$error[validationErrorKey]) {
-      combinedState = false;
-    } else if (ctrl.$$success[validationErrorKey]) {
-      combinedState = true;
-    } else {
-      combinedState = null;
-    }
-
-    toggleValidationCss(validationErrorKey, combinedState);
-    parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
-  }
-
-  function createAndSet(name, value, controller) {
-    if (!ctrl[name]) {
-      ctrl[name] = {};
-    }
-    set(ctrl[name], value, controller);
-  }
-
-  function unsetAndCleanup(name, value, controller) {
-    if (ctrl[name]) {
-      unset(ctrl[name], value, controller);
-    }
-    if (isObjectEmpty(ctrl[name])) {
-      ctrl[name] = undefined;
-    }
-  }
-
-  function cachedToggleClass(className, switchValue) {
-    if (switchValue && !classCache[className]) {
-      $animate.addClass($element, className);
-      classCache[className] = true;
-    } else if (!switchValue && classCache[className]) {
-      $animate.removeClass($element, className);
-      classCache[className] = false;
-    }
-  }
-
-  function toggleValidationCss(validationErrorKey, isValid) {
-    validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';
-
-    cachedToggleClass(VALID_CLASS + validationErrorKey, isValid === true);
-    cachedToggleClass(INVALID_CLASS + validationErrorKey, isValid === false);
-  }
-}
-
-function isObjectEmpty(obj) {
-  if (obj) {
-    for (var prop in obj) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/**
- * @ngdoc directive
- * @name ngNonBindable
- * @restrict AC
- * @priority 1000
- *
- * @description
- * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current
- * DOM element. This is useful if the element contains what appears to be Angular directives and
- * bindings but which should be ignored by Angular. This could be the case if you have a site that
- * displays snippets of code, for instance.
- *
- * @element ANY
- *
- * @example
- * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,
- * but the one wrapped in `ngNonBindable` is left alone.
- *
- * @example
-    <example>
-      <file name="index.html">
-        <div>Normal: {{1 + 2}}</div>
-        <div ng-non-bindable>Ignored: {{1 + 2}}</div>
-      </file>
-      <file name="protractor.js" type="protractor">
-       it('should check ng-non-bindable', function() {
-         expect(element(by.binding('1 + 2')).getText()).toContain('3');
-         expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
-       });
-      </file>
-    </example>
- */
-var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
-
-/**
- * @ngdoc directive
- * @name ngPluralize
- * @restrict EA
- *
- * @description
- * `ngPluralize` is a directive that displays messages according to en-US localization rules.
- * These rules are bundled with angular.js, but can be overridden
- * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
- * by specifying the mappings between
- * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
- * and the strings to be displayed.
- *
- * # Plural categories and explicit number rules
- * There are two
- * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
- * in Angular's default en-US locale: "one" and "other".
- *
- * While a plural category may match many numbers (for example, in en-US locale, "other" can match
- * any number that is not 1), an explicit number rule can only match one number. For example, the
- * explicit number rule for "3" matches the number 3. There are examples of plural categories
- * and explicit number rules throughout the rest of this documentation.
- *
- * # Configuring ngPluralize
- * You configure ngPluralize by providing 2 attributes: `count` and `when`.
- * You can also provide an optional attribute, `offset`.
- *
- * The value of the `count` attribute can be either a string or an {@link guide/expression
- * Angular expression}; these are evaluated on the current scope for its bound value.
- *
- * The `when` attribute specifies the mappings between plural categories and the actual
- * string to be displayed. The value of the attribute should be a JSON object.
- *
- * The following example shows how to configure ngPluralize:
- *
- * ```html
- * <ng-pluralize count="personCount"
-                 when="{'0': 'Nobody is viewing.',
- *                      'one': '1 person is viewing.',
- *                      'other': '{} people are viewing.'}">
- * </ng-pluralize>
- *```
- *
- * In the example, `"0: Nobody is viewing."` is an explicit number rule. If you did not
- * specify this rule, 0 would be matched to the "other" category and "0 people are viewing"
- * would be shown instead of "Nobody is viewing". You can specify an explicit number rule for
- * other numbers, for example 12, so that instead of showing "12 people are viewing", you can
- * show "a dozen people are viewing".
- *
- * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
- * into pluralized strings. In the previous example, Angular will replace `{}` with
- * <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder
- * for <span ng-non-bindable>{{numberExpression}}</span>.
- *
- * # Configuring ngPluralize with offset
- * The `offset` attribute allows further customization of pluralized text, which can result in
- * a better user experience. For example, instead of the message "4 people are viewing this document",
- * you might display "John, Kate and 2 others are viewing this document".
- * The offset attribute allows you to offset a number by any desired value.
- * Let's take a look at an example:
- *
- * ```html
- * <ng-pluralize count="personCount" offset=2
- *               when="{'0': 'Nobody is viewing.',
- *                      '1': '{{person1}} is viewing.',
- *                      '2': '{{person1}} and {{person2}} are viewing.',
- *                      'one': '{{person1}}, {{person2}} and one other person are viewing.',
- *                      'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
- * </ng-pluralize>
- * ```
- *
- * Notice that we are still using two plural categories(one, other), but we added
- * three explicit number rules 0, 1 and 2.
- * When one person, perhaps John, views the document, "John is viewing" will be shown.
- * When three people view the document, no explicit number rule is found, so
- * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.
- * In this case, plural category 'one' is matched and "John, Mary and one other person are viewing"
- * is shown.
- *
- * Note that when you specify offsets, you must provide explicit number rules for
- * numbers from 0 up to and including the offset. If you use an offset of 3, for example,
- * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for
- * plural categories "one" and "other".
- *
- * @param {string|expression} count The variable to be bound to.
- * @param {string} when The mapping between plural category to its corresponding strings.
- * @param {number=} offset Offset to deduct from the total number.
- *
- * @example
-    <example module="pluralizeExample">
-      <file name="index.html">
-        <script>
-          angular.module('pluralizeExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.person1 = 'Igor';
-              $scope.person2 = 'Misko';
-              $scope.personCount = 1;
-            }]);
-        </script>
-        <div ng-controller="ExampleController">
-          Person 1:<input type="text" ng-model="person1" value="Igor" /><br/>
-          Person 2:<input type="text" ng-model="person2" value="Misko" /><br/>
-          Number of People:<input type="text" ng-model="personCount" value="1" /><br/>
-
-          <!--- Example with simple pluralization rules for en locale --->
-          Without Offset:
-          <ng-pluralize count="personCount"
-                        when="{'0': 'Nobody is viewing.',
-                               'one': '1 person is viewing.',
-                               'other': '{} people are viewing.'}">
-          </ng-pluralize><br>
-
-          <!--- Example with offset --->
-          With Offset(2):
-          <ng-pluralize count="personCount" offset=2
-                        when="{'0': 'Nobody is viewing.',
-                               '1': '{{person1}} is viewing.',
-                               '2': '{{person1}} and {{person2}} are viewing.',
-                               'one': '{{person1}}, {{person2}} and one other person are viewing.',
-                               'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
-          </ng-pluralize>
-        </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should show correct pluralized string', function() {
-          var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
-          var withOffset = element.all(by.css('ng-pluralize')).get(1);
-          var countInput = element(by.model('personCount'));
-
-          expect(withoutOffset.getText()).toEqual('1 person is viewing.');
-          expect(withOffset.getText()).toEqual('Igor is viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('0');
-
-          expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
-          expect(withOffset.getText()).toEqual('Nobody is viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('2');
-
-          expect(withoutOffset.getText()).toEqual('2 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('3');
-
-          expect(withoutOffset.getText()).toEqual('3 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('4');
-
-          expect(withoutOffset.getText()).toEqual('4 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
-        });
-        it('should show data-bound names', function() {
-          var withOffset = element.all(by.css('ng-pluralize')).get(1);
-          var personCount = element(by.model('personCount'));
-          var person1 = element(by.model('person1'));
-          var person2 = element(by.model('person2'));
-          personCount.clear();
-          personCount.sendKeys('4');
-          person1.clear();
-          person1.sendKeys('Di');
-          person2.clear();
-          person2.sendKeys('Vojta');
-          expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
-        });
-      </file>
-    </example>
- */
-var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {
-  var BRACE = /{}/g,
-      IS_WHEN = /^when(Minus)?(.+)$/;
-
-  return {
-    restrict: 'EA',
-    link: function(scope, element, attr) {
-      var numberExp = attr.count,
-          whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs
-          offset = attr.offset || 0,
-          whens = scope.$eval(whenExp) || {},
-          whensExpFns = {},
-          startSymbol = $interpolate.startSymbol(),
-          endSymbol = $interpolate.endSymbol(),
-          braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
-          watchRemover = angular.noop,
-          lastCount;
-
-      forEach(attr, function(expression, attributeName) {
-        var tmpMatch = IS_WHEN.exec(attributeName);
-        if (tmpMatch) {
-          var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
-          whens[whenKey] = element.attr(attr.$attr[attributeName]);
-        }
-      });
-      forEach(whens, function(expression, key) {
-        whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
-
-      });
-
-      scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
-        var count = parseFloat(newVal);
-        var countIsNaN = isNaN(count);
-
-        if (!countIsNaN && !(count in whens)) {
-          // If an explicit number rule such as 1, 2, 3... is defined, just use it.
-          // Otherwise, check it against pluralization rules in $locale service.
-          count = $locale.pluralCat(count - offset);
-        }
-
-        // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
-        // In JS `NaN !== NaN`, so we have to exlicitly check.
-        if ((count !== lastCount) && !(countIsNaN && isNaN(lastCount))) {
-          watchRemover();
-          watchRemover = scope.$watch(whensExpFns[count], updateElementText);
-          lastCount = count;
-        }
-      });
-
-      function updateElementText(newText) {
-        element.text(newText || '');
-      }
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngRepeat
- *
- * @description
- * The `ngRepeat` directive instantiates a template once per item from a collection. Each template
- * instance gets its own scope, where the given loop variable is set to the current collection item,
- * and `$index` is set to the item index or key.
- *
- * Special properties are exposed on the local scope of each template instance, including:
- *
- * | Variable  | Type            | Details                                                                     |
- * |-----------|-----------------|-----------------------------------------------------------------------------|
- * | `$index`  | {@type number}  | iterator offset of the repeated element (0..length-1)                       |
- * | `$first`  | {@type boolean} | true if the repeated element is first in the iterator.                      |
- * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |
- * | `$last`   | {@type boolean} | true if the repeated element is last in the iterator.                       |
- * | `$even`   | {@type boolean} | true if the iterator position `$index` is even (otherwise false).           |
- * | `$odd`    | {@type boolean} | true if the iterator position `$index` is odd (otherwise false).            |
- *
- * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
- * This may be useful when, for instance, nesting ngRepeats.
- *
- * # Iterating over object properties
- *
- * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
- * syntax:
- *
- * ```js
- * <div ng-repeat="(key, value) in myObj"> ... </div>
- * ```
- *
- * You need to be aware that the JavaScript specification does not define what order
- * it will return the keys for an object. In order to have a guaranteed deterministic order
- * for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
- *
- * If this is not desired, the recommended workaround is to convert your object into an array
- * that is sorted into the order that you prefer before providing it to `ngRepeat`.  You could
- * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
- * or implement a `$watch` on the object yourself.
- *
- * In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
- * strategy of providing keys in the order in which they were defined, although there are exceptions
- * when keys are deleted and reinstated.
- *
- *
- * # Special repeat start and end points
- * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
- * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
- * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)
- * up to and including the ending HTML tag where **ng-repeat-end** is placed.
- *
- * The example below makes use of this feature:
- * ```html
- *   <header ng-repeat-start="item in items">
- *     Header {{ item }}
- *   </header>
- *   <div class="body">
- *     Body {{ item }}
- *   </div>
- *   <footer ng-repeat-end>
- *     Footer {{ item }}
- *   </footer>
- * ```
- *
- * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:
- * ```html
- *   <header>
- *     Header A
- *   </header>
- *   <div class="body">
- *     Body A
- *   </div>
- *   <footer>
- *     Footer A
- *   </footer>
- *   <header>
- *     Header B
- *   </header>
- *   <div class="body">
- *     Body B
- *   </div>
- *   <footer>
- *     Footer B
- *   </footer>
- * ```
- *
- * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such
- * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).
- *
- * @animations
- * **.enter** - when a new item is added to the list or when an item is revealed after a filter
- *
- * **.leave** - when an item is removed from the list or when an item is filtered out
- *
- * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered
- *
- * @element ANY
- * @scope
- * @priority 1000
- * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These
- *   formats are currently supported:
- *
- *   * `variable in expression` – where variable is the user defined loop variable and `expression`
- *     is a scope expression giving the collection to enumerate.
- *
- *     For example: `album in artist.albums`.
- *
- *   * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,
- *     and `expression` is the scope expression giving the collection to enumerate.
- *
- *     For example: `(name, age) in {'adam':10, 'amalie':12}`.
- *
- *   * `variable in expression track by tracking_expression` – You can also provide an optional tracking function
- *     which can be used to associate the objects in the collection with the DOM elements. If no tracking function
- *     is specified the ng-repeat associates elements by identity in the collection. It is an error to have
- *     more than one tracking function to resolve to the same key. (This would mean that two distinct objects are
- *     mapped to the same DOM element, which is not possible.)  Filters should be applied to the expression,
- *     before specifying a tracking expression.
- *
- *     For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
- *     will be associated by item identity in the array.
- *
- *     For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
- *     `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
- *     with the corresponding item in the array by identity. Moving the same object in array would move the DOM
- *     element in the same way in the DOM.
- *
- *     For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
- *     case the object identity does not matter. Two objects are considered equivalent as long as their `id`
- *     property is same.
- *
- *     For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter
- *     to items in conjunction with a tracking expression.
- *
- *   * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the
- *     intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message
- *     when a filter is active on the repeater, but the filtered result set is empty.
- *
- *     For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after
- *     the items have been processed through the filter.
- *
- * @example
- * This example initializes the scope to a list of names and
- * then uses `ngRepeat` to display every person:
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      <div ng-init="friends = [
-        {name:'John', age:25, gender:'boy'},
-        {name:'Jessie', age:30, gender:'girl'},
-        {name:'Johanna', age:28, gender:'girl'},
-        {name:'Joy', age:15, gender:'girl'},
-        {name:'Mary', age:28, gender:'girl'},
-        {name:'Peter', age:95, gender:'boy'},
-        {name:'Sebastian', age:50, gender:'boy'},
-        {name:'Erika', age:27, gender:'girl'},
-        {name:'Patrick', age:40, gender:'boy'},
-        {name:'Samantha', age:60, gender:'girl'}
-      ]">
-        I have {{friends.length}} friends. They are:
-        <input type="search" ng-model="q" placeholder="filter friends..." />
-        <ul class="example-animate-container">
-          <li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
-            [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
-          </li>
-          <li class="animate-repeat" ng-if="results.length == 0">
-            <strong>No results found...</strong>
-          </li>
-        </ul>
-      </div>
-    </file>
-    <file name="animations.css">
-      .example-animate-container {
-        background:white;
-        border:1px solid black;
-        list-style:none;
-        margin:0;
-        padding:0 10px;
-      }
-
-      .animate-repeat {
-        line-height:40px;
-        list-style:none;
-        box-sizing:border-box;
-      }
-
-      .animate-repeat.ng-move,
-      .animate-repeat.ng-enter,
-      .animate-repeat.ng-leave {
-        -webkit-transition:all linear 0.5s;
-        transition:all linear 0.5s;
-      }
-
-      .animate-repeat.ng-leave.ng-leave-active,
-      .animate-repeat.ng-move,
-      .animate-repeat.ng-enter {
-        opacity:0;
-        max-height:0;
-      }
-
-      .animate-repeat.ng-leave,
-      .animate-repeat.ng-move.ng-move-active,
-      .animate-repeat.ng-enter.ng-enter-active {
-        opacity:1;
-        max-height:40px;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var friends = element.all(by.repeater('friend in friends'));
-
-      it('should render initial data set', function() {
-        expect(friends.count()).toBe(10);
-        expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
-        expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
-        expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
-        expect(element(by.binding('friends.length')).getText())
-            .toMatch("I have 10 friends. They are:");
-      });
-
-       it('should update repeater when filter predicate changes', function() {
-         expect(friends.count()).toBe(10);
-
-         element(by.model('q')).sendKeys('ma');
-
-         expect(friends.count()).toBe(2);
-         expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
-         expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
-       });
-      </file>
-    </example>
- */
-var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
-  var NG_REMOVED = '$$NG_REMOVED';
-  var ngRepeatMinErr = minErr('ngRepeat');
-
-  var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {
-    // TODO(perf): generate setters to shave off ~40ms or 1-1.5%
-    scope[valueIdentifier] = value;
-    if (keyIdentifier) scope[keyIdentifier] = key;
-    scope.$index = index;
-    scope.$first = (index === 0);
-    scope.$last = (index === (arrayLength - 1));
-    scope.$middle = !(scope.$first || scope.$last);
-    // jshint bitwise: false
-    scope.$odd = !(scope.$even = (index&1) === 0);
-    // jshint bitwise: true
-  };
-
-  var getBlockStart = function(block) {
-    return block.clone[0];
-  };
-
-  var getBlockEnd = function(block) {
-    return block.clone[block.clone.length - 1];
-  };
-
-
-  return {
-    restrict: 'A',
-    multiElement: true,
-    transclude: 'element',
-    priority: 1000,
-    terminal: true,
-    $$tlb: true,
-    compile: function ngRepeatCompile($element, $attr) {
-      var expression = $attr.ngRepeat;
-      var ngRepeatEndComment = document.createComment(' end ngRepeat: ' + expression + ' ');
-
-      var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
-
-      if (!match) {
-        throw ngRepeatMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
-            expression);
-      }
-
-      var lhs = match[1];
-      var rhs = match[2];
-      var aliasAs = match[3];
-      var trackByExp = match[4];
-
-      match = lhs.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);
-
-      if (!match) {
-        throw ngRepeatMinErr('iidexp', "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
-            lhs);
-      }
-      var valueIdentifier = match[3] || match[1];
-      var keyIdentifier = match[2];
-
-      if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
-          /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
-        throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
-          aliasAs);
-      }
-
-      var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;
-      var hashFnLocals = {$id: hashKey};
-
-      if (trackByExp) {
-        trackByExpGetter = $parse(trackByExp);
-      } else {
-        trackByIdArrayFn = function(key, value) {
-          return hashKey(value);
-        };
-        trackByIdObjFn = function(key) {
-          return key;
-        };
-      }
-
-      return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
-
-        if (trackByExpGetter) {
-          trackByIdExpFn = function(key, value, index) {
-            // assign key, value, and $index to the locals so that they can be used in hash functions
-            if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
-            hashFnLocals[valueIdentifier] = value;
-            hashFnLocals.$index = index;
-            return trackByExpGetter($scope, hashFnLocals);
-          };
-        }
-
-        // Store a list of elements from previous run. This is a hash where key is the item from the
-        // iterator, and the value is objects with following properties.
-        //   - scope: bound scope
-        //   - element: previous element.
-        //   - index: position
-        //
-        // We are using no-proto object so that we don't need to guard against inherited props via
-        // hasOwnProperty.
-        var lastBlockMap = createMap();
-
-        //watch props
-        $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
-          var index, length,
-              previousNode = $element[0],     // node that cloned nodes should be inserted after
-                                              // initialized to the comment node anchor
-              nextNode,
-              // Same as lastBlockMap but it has the current state. It will become the
-              // lastBlockMap on the next iteration.
-              nextBlockMap = createMap(),
-              collectionLength,
-              key, value, // key/value of iteration
-              trackById,
-              trackByIdFn,
-              collectionKeys,
-              block,       // last object information {scope, element, id}
-              nextBlockOrder,
-              elementsToRemove;
-
-          if (aliasAs) {
-            $scope[aliasAs] = collection;
-          }
-
-          if (isArrayLike(collection)) {
-            collectionKeys = collection;
-            trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
-          } else {
-            trackByIdFn = trackByIdExpFn || trackByIdObjFn;
-            // if object, extract keys, sort them and use to determine order of iteration over obj props
-            collectionKeys = [];
-            for (var itemKey in collection) {
-              if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) != '$') {
-                collectionKeys.push(itemKey);
-              }
-            }
-            collectionKeys.sort();
-          }
-
-          collectionLength = collectionKeys.length;
-          nextBlockOrder = new Array(collectionLength);
-
-          // locate existing items
-          for (index = 0; index < collectionLength; index++) {
-            key = (collection === collectionKeys) ? index : collectionKeys[index];
-            value = collection[key];
-            trackById = trackByIdFn(key, value, index);
-            if (lastBlockMap[trackById]) {
-              // found previously seen block
-              block = lastBlockMap[trackById];
-              delete lastBlockMap[trackById];
-              nextBlockMap[trackById] = block;
-              nextBlockOrder[index] = block;
-            } else if (nextBlockMap[trackById]) {
-              // if collision detected. restore lastBlockMap and throw an error
-              forEach(nextBlockOrder, function(block) {
-                if (block && block.scope) lastBlockMap[block.id] = block;
-              });
-              throw ngRepeatMinErr('dupes',
-                  "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
-                  expression, trackById, value);
-            } else {
-              // new never before seen block
-              nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};
-              nextBlockMap[trackById] = true;
-            }
-          }
-
-          // remove leftover items
-          for (var blockKey in lastBlockMap) {
-            block = lastBlockMap[blockKey];
-            elementsToRemove = getBlockNodes(block.clone);
-            $animate.leave(elementsToRemove);
-            if (elementsToRemove[0].parentNode) {
-              // if the element was not removed yet because of pending animation, mark it as deleted
-              // so that we can ignore it later
-              for (index = 0, length = elementsToRemove.length; index < length; index++) {
-                elementsToRemove[index][NG_REMOVED] = true;
-              }
-            }
-            block.scope.$destroy();
-          }
-
-          // we are not using forEach for perf reasons (trying to avoid #call)
-          for (index = 0; index < collectionLength; index++) {
-            key = (collection === collectionKeys) ? index : collectionKeys[index];
-            value = collection[key];
-            block = nextBlockOrder[index];
-
-            if (block.scope) {
-              // if we have already seen this object, then we need to reuse the
-              // associated scope/element
-
-              nextNode = previousNode;
-
-              // skip nodes that are already pending removal via leave animation
-              do {
-                nextNode = nextNode.nextSibling;
-              } while (nextNode && nextNode[NG_REMOVED]);
-
-              if (getBlockStart(block) != nextNode) {
-                // existing item which got moved
-                $animate.move(getBlockNodes(block.clone), null, jqLite(previousNode));
-              }
-              previousNode = getBlockEnd(block);
-              updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
-            } else {
-              // new item which we don't know about
-              $transclude(function ngRepeatTransclude(clone, scope) {
-                block.scope = scope;
-                // http://jsperf.com/clone-vs-createcomment
-                var endNode = ngRepeatEndComment.cloneNode(false);
-                clone[clone.length++] = endNode;
-
-                // TODO(perf): support naked previousNode in `enter` to avoid creation of jqLite wrapper?
-                $animate.enter(clone, null, jqLite(previousNode));
-                previousNode = endNode;
-                // Note: We only need the first/last node of the cloned nodes.
-                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
-                // by a directive with templateUrl when its template arrives.
-                block.clone = clone;
-                nextBlockMap[block.id] = block;
-                updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
-              });
-            }
-          }
-          lastBlockMap = nextBlockMap;
-        });
-      };
-    }
-  };
-}];
-
-var NG_HIDE_CLASS = 'ng-hide';
-var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
-/**
- * @ngdoc directive
- * @name ngShow
- *
- * @description
- * The `ngShow` directive shows or hides the given HTML element based on the expression
- * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding
- * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
- * in AngularJS and sets the display style to none (using an !important flag).
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```html
- * <!-- when $scope.myValue is truthy (element is visible) -->
- * <div ng-show="myValue"></div>
- *
- * <!-- when $scope.myValue is falsy (element is hidden) -->
- * <div ng-show="myValue" class="ng-hide"></div>
- * ```
- *
- * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added to the class
- * attribute on the element causing it to become hidden. When truthy, the `.ng-hide` CSS class is removed
- * from the element causing the element not to appear hidden.
- *
- * ## Why is !important used?
- *
- * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
- * can be easily overridden by heavier selectors. For example, something as simple
- * as changing the display style on a HTML list item would make hidden elements appear visible.
- * This also becomes a bigger issue when dealing with CSS frameworks.
- *
- * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
- * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
- * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
- *
- * ### Overriding `.ng-hide`
- *
- * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
- * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
- * class in CSS:
- *
- * ```css
- * .ng-hide {
- *   /&#42; this is just another form of hiding an element &#42;/
- *   display: block!important;
- *   position: absolute;
- *   top: -9999px;
- *   left: -9999px;
- * }
- * ```
- *
- * By default you don't need to override in CSS anything and the animations will work around the display style.
- *
- * ## A note about animations with `ngShow`
- *
- * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
- * is true and false. This system works like the animation system present with ngClass except that
- * you must also include the !important flag to override the display property
- * so that you can perform an animation when the element is hidden during the time of the animation.
- *
- * ```css
- * //
- * //a working example can be found at the bottom of this page
- * //
- * .my-element.ng-hide-add, .my-element.ng-hide-remove {
- *   /&#42; this is required as of 1.3x to properly
- *      apply all styling in a show/hide animation &#42;/
- *   transition: 0s linear all;
- * }
- *
- * .my-element.ng-hide-add-active,
- * .my-element.ng-hide-remove-active {
- *   /&#42; the transition is defined in the active class &#42;/
- *   transition: 1s linear all;
- * }
- *
- * .my-element.ng-hide-add { ... }
- * .my-element.ng-hide-add.ng-hide-add-active { ... }
- * .my-element.ng-hide-remove { ... }
- * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
- * ```
- *
- * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
- * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
- *
- * @animations
- * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible
- * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden
- *
- * @element ANY
- * @param {expression} ngShow If the {@link guide/expression expression} is truthy
- *     then the element is shown or hidden respectively.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked"><br/>
-      <div>
-        Show:
-        <div class="check-element animate-show" ng-show="checked">
-          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
-        </div>
-      </div>
-      <div>
-        Hide:
-        <div class="check-element animate-show" ng-hide="checked">
-          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
-        </div>
-      </div>
-    </file>
-    <file name="glyphicons.css">
-      @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
-    </file>
-    <file name="animations.css">
-      .animate-show {
-        line-height: 20px;
-        opacity: 1;
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-
-      .animate-show.ng-hide-add.ng-hide-add-active,
-      .animate-show.ng-hide-remove.ng-hide-remove-active {
-        -webkit-transition: all linear 0.5s;
-        transition: all linear 0.5s;
-      }
-
-      .animate-show.ng-hide {
-        line-height: 0;
-        opacity: 0;
-        padding: 0 10px;
-      }
-
-      .check-element {
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
-      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
-
-      it('should check ng-show / ng-hide', function() {
-        expect(thumbsUp.isDisplayed()).toBeFalsy();
-        expect(thumbsDown.isDisplayed()).toBeTruthy();
-
-        element(by.model('checked')).click();
-
-        expect(thumbsUp.isDisplayed()).toBeTruthy();
-        expect(thumbsDown.isDisplayed()).toBeFalsy();
-      });
-    </file>
-  </example>
- */
-var ngShowDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'A',
-    multiElement: true,
-    link: function(scope, element, attr) {
-      scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
-        // we're adding a temporary, animation-specific class for ng-hide since this way
-        // we can control when the element is actually displayed on screen without having
-        // to have a global/greedy CSS selector that breaks when other animations are run.
-        // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845
-        $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
-          tempClasses: NG_HIDE_IN_PROGRESS_CLASS
-        });
-      });
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngHide
- *
- * @description
- * The `ngHide` directive shows or hides the given HTML element based on the expression
- * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding
- * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
- * in AngularJS and sets the display style to none (using an !important flag).
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```html
- * <!-- when $scope.myValue is truthy (element is hidden) -->
- * <div ng-hide="myValue" class="ng-hide"></div>
- *
- * <!-- when $scope.myValue is falsy (element is visible) -->
- * <div ng-hide="myValue"></div>
- * ```
- *
- * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added to the class
- * attribute on the element causing it to become hidden. When falsy, the `.ng-hide` CSS class is removed
- * from the element causing the element not to appear hidden.
- *
- * ## Why is !important used?
- *
- * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
- * can be easily overridden by heavier selectors. For example, something as simple
- * as changing the display style on a HTML list item would make hidden elements appear visible.
- * This also becomes a bigger issue when dealing with CSS frameworks.
- *
- * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
- * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
- * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
- *
- * ### Overriding `.ng-hide`
- *
- * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
- * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
- * class in CSS:
- *
- * ```css
- * .ng-hide {
- *   /&#42; this is just another form of hiding an element &#42;/
- *   display: block!important;
- *   position: absolute;
- *   top: -9999px;
- *   left: -9999px;
- * }
- * ```
- *
- * By default you don't need to override in CSS anything and the animations will work around the display style.
- *
- * ## A note about animations with `ngHide`
- *
- * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
- * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`
- * CSS class is added and removed for you instead of your own CSS class.
- *
- * ```css
- * //
- * //a working example can be found at the bottom of this page
- * //
- * .my-element.ng-hide-add, .my-element.ng-hide-remove {
- *   transition: 0.5s linear all;
- * }
- *
- * .my-element.ng-hide-add { ... }
- * .my-element.ng-hide-add.ng-hide-add-active { ... }
- * .my-element.ng-hide-remove { ... }
- * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
- * ```
- *
- * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
- * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
- *
- * @animations
- * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden
- * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible
- *
- * @element ANY
- * @param {expression} ngHide If the {@link guide/expression expression} is truthy then
- *     the element is shown or hidden respectively.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked"><br/>
-      <div>
-        Show:
-        <div class="check-element animate-hide" ng-show="checked">
-          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
-        </div>
-      </div>
-      <div>
-        Hide:
-        <div class="check-element animate-hide" ng-hide="checked">
-          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
-        </div>
-      </div>
-    </file>
-    <file name="glyphicons.css">
-      @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
-    </file>
-    <file name="animations.css">
-      .animate-hide {
-        -webkit-transition: all linear 0.5s;
-        transition: all linear 0.5s;
-        line-height: 20px;
-        opacity: 1;
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-
-      .animate-hide.ng-hide {
-        line-height: 0;
-        opacity: 0;
-        padding: 0 10px;
-      }
-
-      .check-element {
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
-      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
-
-      it('should check ng-show / ng-hide', function() {
-        expect(thumbsUp.isDisplayed()).toBeFalsy();
-        expect(thumbsDown.isDisplayed()).toBeTruthy();
-
-        element(by.model('checked')).click();
-
-        expect(thumbsUp.isDisplayed()).toBeTruthy();
-        expect(thumbsDown.isDisplayed()).toBeFalsy();
-      });
-    </file>
-  </example>
- */
-var ngHideDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'A',
-    multiElement: true,
-    link: function(scope, element, attr) {
-      scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
-        // The comment inside of the ngShowDirective explains why we add and
-        // remove a temporary class for the show/hide animation
-        $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {
-          tempClasses: NG_HIDE_IN_PROGRESS_CLASS
-        });
-      });
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngStyle
- * @restrict AC
- *
- * @description
- * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
- *
- * @element ANY
- * @param {expression} ngStyle
- *
- * {@link guide/expression Expression} which evals to an
- * object whose keys are CSS style names and values are corresponding values for those CSS
- * keys.
- *
- * Since some CSS style names are not valid keys for an object, they must be quoted.
- * See the 'background-color' style in the example below.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <input type="button" value="set color" ng-click="myStyle={color:'red'}">
-        <input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
-        <input type="button" value="clear" ng-click="myStyle={}">
-        <br/>
-        <span ng-style="myStyle">Sample Text</span>
-        <pre>myStyle={{myStyle}}</pre>
-     </file>
-     <file name="style.css">
-       span {
-         color: black;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       var colorSpan = element(by.css('span'));
-
-       it('should check ng-style', function() {
-         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
-         element(by.css('input[value=\'set color\']')).click();
-         expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
-         element(by.css('input[value=clear]')).click();
-         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
-       });
-     </file>
-   </example>
- */
-var ngStyleDirective = ngDirective(function(scope, element, attr) {
-  scope.$watchCollection(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
-    if (oldStyles && (newStyles !== oldStyles)) {
-      forEach(oldStyles, function(val, style) { element.css(style, '');});
-    }
-    if (newStyles) element.css(newStyles);
-  });
-});
-
-/**
- * @ngdoc directive
- * @name ngSwitch
- * @restrict EA
- *
- * @description
- * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
- * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
- * as specified in the template.
- *
- * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
- * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element
- * matches the value obtained from the evaluated expression. In other words, you define a container element
- * (where you place the directive), place an expression on the **`on="..."` attribute**
- * (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
- * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
- * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
- * attribute is displayed.
- *
- * <div class="alert alert-info">
- * Be aware that the attribute values to match against cannot be expressions. They are interpreted
- * as literal string values to match against.
- * For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
- * value of the expression `$scope.someVal`.
- * </div>
-
- * @animations
- * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
- * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
- *
- * @usage
- *
- * ```
- * <ANY ng-switch="expression">
- *   <ANY ng-switch-when="matchValue1">...</ANY>
- *   <ANY ng-switch-when="matchValue2">...</ANY>
- *   <ANY ng-switch-default>...</ANY>
- * </ANY>
- * ```
- *
- *
- * @scope
- * @priority 1200
- * @param {*} ngSwitch|on expression to match against <tt>ng-switch-when</tt>.
- * On child elements add:
- *
- * * `ngSwitchWhen`: the case statement to match against. If match then this
- *   case will be displayed. If the same match appears multiple times, all the
- *   elements will be displayed.
- * * `ngSwitchDefault`: the default case when no other case match. If there
- *   are multiple default cases, all of them will be displayed when no other
- *   case match.
- *
- *
- * @example
-  <example module="switchExample" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <select ng-model="selection" ng-options="item for item in items">
-        </select>
-        <tt>selection={{selection}}</tt>
-        <hr/>
-        <div class="animate-switch-container"
-          ng-switch on="selection">
-            <div class="animate-switch" ng-switch-when="settings">Settings Div</div>
-            <div class="animate-switch" ng-switch-when="home">Home Span</div>
-            <div class="animate-switch" ng-switch-default>default</div>
-        </div>
-      </div>
-    </file>
-    <file name="script.js">
-      angular.module('switchExample', ['ngAnimate'])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.items = ['settings', 'home', 'other'];
-          $scope.selection = $scope.items[0];
-        }]);
-    </file>
-    <file name="animations.css">
-      .animate-switch-container {
-        position:relative;
-        background:white;
-        border:1px solid black;
-        height:40px;
-        overflow:hidden;
-      }
-
-      .animate-switch {
-        padding:10px;
-      }
-
-      .animate-switch.ng-animate {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-
-        position:absolute;
-        top:0;
-        left:0;
-        right:0;
-        bottom:0;
-      }
-
-      .animate-switch.ng-leave.ng-leave-active,
-      .animate-switch.ng-enter {
-        top:-50px;
-      }
-      .animate-switch.ng-leave,
-      .animate-switch.ng-enter.ng-enter-active {
-        top:0;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var switchElem = element(by.css('[ng-switch]'));
-      var select = element(by.model('selection'));
-
-      it('should start in settings', function() {
-        expect(switchElem.getText()).toMatch(/Settings Div/);
-      });
-      it('should change to home', function() {
-        select.all(by.css('option')).get(1).click();
-        expect(switchElem.getText()).toMatch(/Home Span/);
-      });
-      it('should select default', function() {
-        select.all(by.css('option')).get(2).click();
-        expect(switchElem.getText()).toMatch(/default/);
-      });
-    </file>
-  </example>
- */
-var ngSwitchDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'EA',
-    require: 'ngSwitch',
-
-    // asks for $scope to fool the BC controller module
-    controller: ['$scope', function ngSwitchController() {
-     this.cases = {};
-    }],
-    link: function(scope, element, attr, ngSwitchController) {
-      var watchExpr = attr.ngSwitch || attr.on,
-          selectedTranscludes = [],
-          selectedElements = [],
-          previousLeaveAnimations = [],
-          selectedScopes = [];
-
-      var spliceFactory = function(array, index) {
-          return function() { array.splice(index, 1); };
-      };
-
-      scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
-        var i, ii;
-        for (i = 0, ii = previousLeaveAnimations.length; i < ii; ++i) {
-          $animate.cancel(previousLeaveAnimations[i]);
-        }
-        previousLeaveAnimations.length = 0;
-
-        for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
-          var selected = getBlockNodes(selectedElements[i].clone);
-          selectedScopes[i].$destroy();
-          var promise = previousLeaveAnimations[i] = $animate.leave(selected);
-          promise.then(spliceFactory(previousLeaveAnimations, i));
-        }
-
-        selectedElements.length = 0;
-        selectedScopes.length = 0;
-
-        if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {
-          forEach(selectedTranscludes, function(selectedTransclude) {
-            selectedTransclude.transclude(function(caseElement, selectedScope) {
-              selectedScopes.push(selectedScope);
-              var anchor = selectedTransclude.element;
-              caseElement[caseElement.length++] = document.createComment(' end ngSwitchWhen: ');
-              var block = { clone: caseElement };
-
-              selectedElements.push(block);
-              $animate.enter(caseElement, anchor.parent(), anchor);
-            });
-          });
-        }
-      });
-    }
-  };
-}];
-
-var ngSwitchWhenDirective = ngDirective({
-  transclude: 'element',
-  priority: 1200,
-  require: '^ngSwitch',
-  multiElement: true,
-  link: function(scope, element, attrs, ctrl, $transclude) {
-    ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);
-    ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });
-  }
-});
-
-var ngSwitchDefaultDirective = ngDirective({
-  transclude: 'element',
-  priority: 1200,
-  require: '^ngSwitch',
-  multiElement: true,
-  link: function(scope, element, attr, ctrl, $transclude) {
-    ctrl.cases['?'] = (ctrl.cases['?'] || []);
-    ctrl.cases['?'].push({ transclude: $transclude, element: element });
-   }
-});
-
-/**
- * @ngdoc directive
- * @name ngTransclude
- * @restrict EAC
- *
- * @description
- * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
- *
- * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
- *
- * @element ANY
- *
- * @example
-   <example module="transcludeExample">
-     <file name="index.html">
-       <script>
-         angular.module('transcludeExample', [])
-          .directive('pane', function(){
-             return {
-               restrict: 'E',
-               transclude: true,
-               scope: { title:'@' },
-               template: '<div style="border: 1px solid black;">' +
-                           '<div style="background-color: gray">{{title}}</div>' +
-                           '<ng-transclude></ng-transclude>' +
-                         '</div>'
-             };
-         })
-         .controller('ExampleController', ['$scope', function($scope) {
-           $scope.title = 'Lorem Ipsum';
-           $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
-         }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input ng-model="title"> <br/>
-         <textarea ng-model="text"></textarea> <br/>
-         <pane title="{{title}}">{{text}}</pane>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-        it('should have transcluded', function() {
-          var titleElement = element(by.model('title'));
-          titleElement.clear();
-          titleElement.sendKeys('TITLE');
-          var textElement = element(by.model('text'));
-          textElement.clear();
-          textElement.sendKeys('TEXT');
-          expect(element(by.binding('title')).getText()).toEqual('TITLE');
-          expect(element(by.binding('text')).getText()).toEqual('TEXT');
-        });
-     </file>
-   </example>
- *
- */
-var ngTranscludeDirective = ngDirective({
-  restrict: 'EAC',
-  link: function($scope, $element, $attrs, controller, $transclude) {
-    if (!$transclude) {
-      throw minErr('ngTransclude')('orphan',
-       'Illegal use of ngTransclude directive in the template! ' +
-       'No parent directive that requires a transclusion found. ' +
-       'Element: {0}',
-       startingTag($element));
-    }
-
-    $transclude(function(clone) {
-      $element.empty();
-      $element.append(clone);
-    });
-  }
-});
-
-/**
- * @ngdoc directive
- * @name script
- * @restrict E
- *
- * @description
- * Load the content of a `<script>` element into {@link ng.$templateCache `$templateCache`}, so that the
- * template can be used by {@link ng.directive:ngInclude `ngInclude`},
- * {@link ngRoute.directive:ngView `ngView`}, or {@link guide/directive directives}. The type of the
- * `<script>` element must be specified as `text/ng-template`, and a cache name for the template must be
- * assigned through the element's `id`, which can then be used as a directive's `templateUrl`.
- *
- * @param {string} type Must be set to `'text/ng-template'`.
- * @param {string} id Cache name of the template.
- *
- * @example
-  <example>
-    <file name="index.html">
-      <script type="text/ng-template" id="/tpl.html">
-        Content of the template.
-      </script>
-
-      <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a>
-      <div id="tpl-content" ng-include src="currentTpl"></div>
-    </file>
-    <file name="protractor.js" type="protractor">
-      it('should load template defined inside script tag', function() {
-        element(by.css('#tpl-link')).click();
-        expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
-      });
-    </file>
-  </example>
- */
-var scriptDirective = ['$templateCache', function($templateCache) {
-  return {
-    restrict: 'E',
-    terminal: true,
-    compile: function(element, attr) {
-      if (attr.type == 'text/ng-template') {
-        var templateUrl = attr.id,
-            text = element[0].text;
-
-        $templateCache.put(templateUrl, text);
-      }
-    }
-  };
-}];
-
-var ngOptionsMinErr = minErr('ngOptions');
-/**
- * @ngdoc directive
- * @name select
- * @restrict E
- *
- * @description
- * HTML `SELECT` element with angular data-binding.
- *
- * # `ngOptions`
- *
- * The `ngOptions` attribute can be used to dynamically generate a list of `<option>`
- * elements for the `<select>` element using the array or object obtained by evaluating the
- * `ngOptions` comprehension expression.
- *
- * In many cases, `ngRepeat` can be used on `<option>` elements instead of `ngOptions` to achieve a
- * similar result. However, `ngOptions` provides some benefits such as reducing memory and
- * increasing speed by not creating a new scope for each repeated instance, as well as providing
- * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
- * comprehension expression. `ngOptions` should be used when the `<select>` model needs to be bound
- *  to a non-string value. This is because an option element can only be bound to string values at
- * present.
- *
- * When an item in the `<select>` menu is selected, the array element or object property
- * represented by the selected option will be bound to the model identified by the `ngModel`
- * directive.
- *
- * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
- * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
- * option. See example below for demonstration.
- *
- * <div class="alert alert-warning">
- * **Note:** `ngModel` compares by reference, not value. This is important when binding to an
- * array of objects. See an example [in this jsfiddle](http://jsfiddle.net/qWzTb/).
- * </div>
- *
- * ## `select` **`as`**
- *
- * Using `select` **`as`** will bind the result of the `select` expression to the model, but
- * the value of the `<select>` and `<option>` html elements will be either the index (for array data sources)
- * or property name (for object data sources) of the value within the collection. If a **`track by`** expression
- * is used, the result of that expression will be set as the value of the `option` and `select` elements.
- *
- *
- * ### `select` **`as`** and **`track by`**
- *
- * <div class="alert alert-warning">
- * Do not use `select` **`as`** and **`track by`** in the same expression. They are not designed to work together.
- * </div>
- *
- * Consider the following example:
- *
- * ```html
- * <select ng-options="item.subItem as item.label for item in values track by item.id" ng-model="selected">
- * ```
- *
- * ```js
- * $scope.values = [{
- *   id: 1,
- *   label: 'aLabel',
- *   subItem: { name: 'aSubItem' }
- * }, {
- *   id: 2,
- *   label: 'bLabel',
- *   subItem: { name: 'bSubItem' }
- * }];
- *
- * $scope.selected = { name: 'aSubItem' };
- * ```
- *
- * With the purpose of preserving the selection, the **`track by`** expression is always applied to the element
- * of the data source (to `item` in this example). To calculate whether an element is selected, we do the
- * following:
- *
- * 1. Apply **`track by`** to the elements in the array. In the example: `[1, 2]`
- * 2. Apply **`track by`** to the already selected value in `ngModel`.
- *    In the example: this is not possible as **`track by`** refers to `item.id`, but the selected
- *    value from `ngModel` is `{name: 'aSubItem'}`, so the **`track by`** expression is applied to
- *    a wrong object, the selected element can't be found, `<select>` is always reset to the "not
- *    selected" option.
- *
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required The control is considered valid only if value is entered.
- * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
- *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
- *    `required` when you want to data-bind to the `required` attribute.
- * @param {comprehension_expression=} ngOptions in one of the following forms:
- *
- *   * for array data sources:
- *     * `label` **`for`** `value` **`in`** `array`
- *     * `select` **`as`** `label` **`for`** `value` **`in`** `array`
- *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array`
- *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
- *     * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`
- *        (for including a filter with `track by`)
- *   * for object data sources:
- *     * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
- *     * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
- *     * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`
- *     * `select` **`as`** `label` **`group by`** `group`
- *         **`for` `(`**`key`**`,`** `value`**`) in`** `object`
- *
- * Where:
- *
- *   * `array` / `object`: an expression which evaluates to an array / object to iterate over.
- *   * `value`: local variable which will refer to each item in the `array` or each property value
- *      of `object` during iteration.
- *   * `key`: local variable which will refer to a property name in `object` during iteration.
- *   * `label`: The result of this expression will be the label for `<option>` element. The
- *     `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).
- *   * `select`: The result of this expression will be bound to the model of the parent `<select>`
- *      element. If not specified, `select` expression will default to `value`.
- *   * `group`: The result of this expression will be used to group options using the `<optgroup>`
- *      DOM element.
- *   * `trackexpr`: Used when working with an array of objects. The result of this expression will be
- *      used to identify the objects in the array. The `trackexpr` will most likely refer to the
- *     `value` variable (e.g. `value.propertyName`). With this the selection is preserved
- *      even when the options are recreated (e.g. reloaded from the server).
- *
- * @example
-    <example module="selectExample">
-      <file name="index.html">
-        <script>
-        angular.module('selectExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.colors = [
-              {name:'black', shade:'dark'},
-              {name:'white', shade:'light'},
-              {name:'red', shade:'dark'},
-              {name:'blue', shade:'dark'},
-              {name:'yellow', shade:'light'}
-            ];
-            $scope.myColor = $scope.colors[2]; // red
-          }]);
-        </script>
-        <div ng-controller="ExampleController">
-          <ul>
-            <li ng-repeat="color in colors">
-              Name: <input ng-model="color.name">
-              [<a href ng-click="colors.splice($index, 1)">X</a>]
-            </li>
-            <li>
-              [<a href ng-click="colors.push({})">add</a>]
-            </li>
-          </ul>
-          <hr/>
-          Color (null not allowed):
-          <select ng-model="myColor" ng-options="color.name for color in colors"></select><br>
-
-          Color (null allowed):
-          <span  class="nullable">
-            <select ng-model="myColor" ng-options="color.name for color in colors">
-              <option value="">-- choose color --</option>
-            </select>
-          </span><br/>
-
-          Color grouped by shade:
-          <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
-          </select><br/>
-
-
-          Select <a href ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</a>.<br>
-          <hr/>
-          Currently selected: {{ {selected_color:myColor} }}
-          <div style="border:solid 1px black; height:20px"
-               ng-style="{'background-color':myColor.name}">
-          </div>
-        </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-         it('should check ng-options', function() {
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
-           element.all(by.model('myColor')).first().click();
-           element.all(by.css('select[ng-model="myColor"] option')).first().click();
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
-           element(by.css('.nullable select[ng-model="myColor"]')).click();
-           element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
-         });
-      </file>
-    </example>
- */
-
-var ngOptionsDirective = valueFn({
-  restrict: 'A',
-  terminal: true
-});
-
-// jshint maxlen: false
-var selectDirective = ['$compile', '$parse', function($compile,   $parse) {
-                         //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888
-  var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
-      nullModelCtrl = {$setViewValue: noop};
-// jshint maxlen: 100
-
-  return {
-    restrict: 'E',
-    require: ['select', '?ngModel'],
-    controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {
-      var self = this,
-          optionsMap = {},
-          ngModelCtrl = nullModelCtrl,
-          nullOption,
-          unknownOption;
-
-
-      self.databound = $attrs.ngModel;
-
-
-      self.init = function(ngModelCtrl_, nullOption_, unknownOption_) {
-        ngModelCtrl = ngModelCtrl_;
-        nullOption = nullOption_;
-        unknownOption = unknownOption_;
-      };
-
-
-      self.addOption = function(value, element) {
-        assertNotHasOwnProperty(value, '"option value"');
-        optionsMap[value] = true;
-
-        if (ngModelCtrl.$viewValue == value) {
-          $element.val(value);
-          if (unknownOption.parent()) unknownOption.remove();
-        }
-        // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459
-        // Adding an <option selected="selected"> element to a <select required="required"> should
-        // automatically select the new element
-        if (element && element[0].hasAttribute('selected')) {
-          element[0].selected = true;
-        }
-      };
-
-
-      self.removeOption = function(value) {
-        if (this.hasOption(value)) {
-          delete optionsMap[value];
-          if (ngModelCtrl.$viewValue === value) {
-            this.renderUnknownOption(value);
-          }
-        }
-      };
-
-
-      self.renderUnknownOption = function(val) {
-        var unknownVal = '? ' + hashKey(val) + ' ?';
-        unknownOption.val(unknownVal);
-        $element.prepend(unknownOption);
-        $element.val(unknownVal);
-        unknownOption.prop('selected', true); // needed for IE
-      };
-
-
-      self.hasOption = function(value) {
-        return optionsMap.hasOwnProperty(value);
-      };
-
-      $scope.$on('$destroy', function() {
-        // disable unknown option so that we don't do work when the whole select is being destroyed
-        self.renderUnknownOption = noop;
-      });
-    }],
-
-    link: function(scope, element, attr, ctrls) {
-      // if ngModel is not defined, we don't need to do anything
-      if (!ctrls[1]) return;
-
-      var selectCtrl = ctrls[0],
-          ngModelCtrl = ctrls[1],
-          multiple = attr.multiple,
-          optionsExp = attr.ngOptions,
-          nullOption = false, // if false, user will not be able to select it (used by ngOptions)
-          emptyOption,
-          renderScheduled = false,
-          // we can't just jqLite('<option>') since jqLite is not smart enough
-          // to create it in <select> and IE barfs otherwise.
-          optionTemplate = jqLite(document.createElement('option')),
-          optGroupTemplate =jqLite(document.createElement('optgroup')),
-          unknownOption = optionTemplate.clone();
-
-      // find "null" option
-      for (var i = 0, children = element.children(), ii = children.length; i < ii; i++) {
-        if (children[i].value === '') {
-          emptyOption = nullOption = children.eq(i);
-          break;
-        }
-      }
-
-      selectCtrl.init(ngModelCtrl, nullOption, unknownOption);
-
-      // required validator
-      if (multiple) {
-        ngModelCtrl.$isEmpty = function(value) {
-          return !value || value.length === 0;
-        };
-      }
-
-      if (optionsExp) setupAsOptions(scope, element, ngModelCtrl);
-      else if (multiple) setupAsMultiple(scope, element, ngModelCtrl);
-      else setupAsSingle(scope, element, ngModelCtrl, selectCtrl);
-
-
-      ////////////////////////////
-
-
-
-      function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
-        ngModelCtrl.$render = function() {
-          var viewValue = ngModelCtrl.$viewValue;
-
-          if (selectCtrl.hasOption(viewValue)) {
-            if (unknownOption.parent()) unknownOption.remove();
-            selectElement.val(viewValue);
-            if (viewValue === '') emptyOption.prop('selected', true); // to make IE9 happy
-          } else {
-            if (isUndefined(viewValue) && emptyOption) {
-              selectElement.val('');
-            } else {
-              selectCtrl.renderUnknownOption(viewValue);
-            }
-          }
-        };
-
-        selectElement.on('change', function() {
-          scope.$apply(function() {
-            if (unknownOption.parent()) unknownOption.remove();
-            ngModelCtrl.$setViewValue(selectElement.val());
-          });
-        });
-      }
-
-      function setupAsMultiple(scope, selectElement, ctrl) {
-        var lastView;
-        ctrl.$render = function() {
-          var items = new HashMap(ctrl.$viewValue);
-          forEach(selectElement.find('option'), function(option) {
-            option.selected = isDefined(items.get(option.value));
-          });
-        };
-
-        // we have to do it on each watch since ngModel watches reference, but
-        // we need to work of an array, so we need to see if anything was inserted/removed
-        scope.$watch(function selectMultipleWatch() {
-          if (!equals(lastView, ctrl.$viewValue)) {
-            lastView = shallowCopy(ctrl.$viewValue);
-            ctrl.$render();
-          }
-        });
-
-        selectElement.on('change', function() {
-          scope.$apply(function() {
-            var array = [];
-            forEach(selectElement.find('option'), function(option) {
-              if (option.selected) {
-                array.push(option.value);
-              }
-            });
-            ctrl.$setViewValue(array);
-          });
-        });
-      }
-
-      function setupAsOptions(scope, selectElement, ctrl) {
-        var match;
-
-        if (!(match = optionsExp.match(NG_OPTIONS_REGEXP))) {
-          throw ngOptionsMinErr('iexp',
-            "Expected expression in form of " +
-            "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" +
-            " but got '{0}'. Element: {1}",
-            optionsExp, startingTag(selectElement));
-        }
-
-        var displayFn = $parse(match[2] || match[1]),
-            valueName = match[4] || match[6],
-            selectAs = / as /.test(match[0]) && match[1],
-            selectAsFn = selectAs ? $parse(selectAs) : null,
-            keyName = match[5],
-            groupByFn = $parse(match[3] || ''),
-            valueFn = $parse(match[2] ? match[1] : valueName),
-            valuesFn = $parse(match[7]),
-            track = match[8],
-            trackFn = track ? $parse(match[8]) : null,
-            trackKeysCache = {},
-            // This is an array of array of existing option groups in DOM.
-            // We try to reuse these if possible
-            // - optionGroupsCache[0] is the options with no option group
-            // - optionGroupsCache[?][0] is the parent: either the SELECT or OPTGROUP element
-            optionGroupsCache = [[{element: selectElement, label:''}]],
-            //re-usable object to represent option's locals
-            locals = {};
-
-        if (nullOption) {
-          // compile the element since there might be bindings in it
-          $compile(nullOption)(scope);
-
-          // remove the class, which is added automatically because we recompile the element and it
-          // becomes the compilation root
-          nullOption.removeClass('ng-scope');
-
-          // we need to remove it before calling selectElement.empty() because otherwise IE will
-          // remove the label from the element. wtf?
-          nullOption.remove();
-        }
-
-        // clear contents, we'll add what's needed based on the model
-        selectElement.empty();
-
-        selectElement.on('change', selectionChanged);
-
-        ctrl.$render = render;
-
-        scope.$watchCollection(valuesFn, scheduleRendering);
-        scope.$watchCollection(getLabels, scheduleRendering);
-
-        if (multiple) {
-          scope.$watchCollection(function() { return ctrl.$modelValue; }, scheduleRendering);
-        }
-
-        // ------------------------------------------------------------------ //
-
-        function callExpression(exprFn, key, value) {
-          locals[valueName] = value;
-          if (keyName) locals[keyName] = key;
-          return exprFn(scope, locals);
-        }
-
-        function selectionChanged() {
-          scope.$apply(function() {
-            var collection = valuesFn(scope) || [];
-            var viewValue;
-            if (multiple) {
-              viewValue = [];
-              forEach(selectElement.val(), function(selectedKey) {
-                  selectedKey = trackFn ? trackKeysCache[selectedKey] : selectedKey;
-                viewValue.push(getViewValue(selectedKey, collection[selectedKey]));
-              });
-            } else {
-              var selectedKey = trackFn ? trackKeysCache[selectElement.val()] : selectElement.val();
-              viewValue = getViewValue(selectedKey, collection[selectedKey]);
-            }
-            ctrl.$setViewValue(viewValue);
-            render();
-          });
-        }
-
-        function getViewValue(key, value) {
-          if (key === '?') {
-            return undefined;
-          } else if (key === '') {
-            return null;
-          } else {
-            var viewValueFn = selectAsFn ? selectAsFn : valueFn;
-            return callExpression(viewValueFn, key, value);
-          }
-        }
-
-        function getLabels() {
-          var values = valuesFn(scope);
-          var toDisplay;
-          if (values && isArray(values)) {
-            toDisplay = new Array(values.length);
-            for (var i = 0, ii = values.length; i < ii; i++) {
-              toDisplay[i] = callExpression(displayFn, i, values[i]);
-            }
-            return toDisplay;
-          } else if (values) {
-            // TODO: Add a test for this case
-            toDisplay = {};
-            for (var prop in values) {
-              if (values.hasOwnProperty(prop)) {
-                toDisplay[prop] = callExpression(displayFn, prop, values[prop]);
-              }
-            }
-          }
-          return toDisplay;
-        }
-
-        function createIsSelectedFn(viewValue) {
-          var selectedSet;
-          if (multiple) {
-            if (trackFn && isArray(viewValue)) {
-
-              selectedSet = new HashMap([]);
-              for (var trackIndex = 0; trackIndex < viewValue.length; trackIndex++) {
-                // tracking by key
-                selectedSet.put(callExpression(trackFn, null, viewValue[trackIndex]), true);
-              }
-            } else {
-              selectedSet = new HashMap(viewValue);
-            }
-          } else if (trackFn) {
-            viewValue = callExpression(trackFn, null, viewValue);
-          }
-
-          return function isSelected(key, value) {
-            var compareValueFn;
-            if (trackFn) {
-              compareValueFn = trackFn;
-            } else if (selectAsFn) {
-              compareValueFn = selectAsFn;
-            } else {
-              compareValueFn = valueFn;
-            }
-
-            if (multiple) {
-              return isDefined(selectedSet.remove(callExpression(compareValueFn, key, value)));
-            } else {
-              return viewValue === callExpression(compareValueFn, key, value);
-            }
-          };
-        }
-
-        function scheduleRendering() {
-          if (!renderScheduled) {
-            scope.$$postDigest(render);
-            renderScheduled = true;
-          }
-        }
-
-        /**
-         * A new labelMap is created with each render.
-         * This function is called for each existing option with added=false,
-         * and each new option with added=true.
-         * - Labels that are passed to this method twice,
-         * (once with added=true and once with added=false) will end up with a value of 0, and
-         * will cause no change to happen to the corresponding option.
-         * - Labels that are passed to this method only once with added=false will end up with a
-         * value of -1 and will eventually be passed to selectCtrl.removeOption()
-         * - Labels that are passed to this method only once with added=true will end up with a
-         * value of 1 and will eventually be passed to selectCtrl.addOption()
-        */
-        function updateLabelMap(labelMap, label, added) {
-          labelMap[label] = labelMap[label] || 0;
-          labelMap[label] += (added ? 1 : -1);
-        }
-
-        function render() {
-          renderScheduled = false;
-
-          // Temporary location for the option groups before we render them
-          var optionGroups = {'':[]},
-              optionGroupNames = [''],
-              optionGroupName,
-              optionGroup,
-              option,
-              existingParent, existingOptions, existingOption,
-              viewValue = ctrl.$viewValue,
-              values = valuesFn(scope) || [],
-              keys = keyName ? sortedKeys(values) : values,
-              key,
-              value,
-              groupLength, length,
-              groupIndex, index,
-              labelMap = {},
-              selected,
-              isSelected = createIsSelectedFn(viewValue),
-              anySelected = false,
-              lastElement,
-              element,
-              label,
-              optionId;
-
-          trackKeysCache = {};
-
-          // We now build up the list of options we need (we merge later)
-          for (index = 0; length = keys.length, index < length; index++) {
-            key = index;
-            if (keyName) {
-              key = keys[index];
-              if (key.charAt(0) === '$') continue;
-            }
-            value = values[key];
-
-            optionGroupName = callExpression(groupByFn, key, value) || '';
-            if (!(optionGroup = optionGroups[optionGroupName])) {
-              optionGroup = optionGroups[optionGroupName] = [];
-              optionGroupNames.push(optionGroupName);
-            }
-
-            selected = isSelected(key, value);
-            anySelected = anySelected || selected;
-
-            label = callExpression(displayFn, key, value); // what will be seen by the user
-
-            // doing displayFn(scope, locals) || '' overwrites zero values
-            label = isDefined(label) ? label : '';
-            optionId = trackFn ? trackFn(scope, locals) : (keyName ? keys[index] : index);
-            if (trackFn) {
-              trackKeysCache[optionId] = key;
-            }
-
-            optionGroup.push({
-              // either the index into array or key from object
-              id: optionId,
-              label: label,
-              selected: selected                   // determine if we should be selected
-            });
-          }
-          if (!multiple) {
-            if (nullOption || viewValue === null) {
-              // insert null option if we have a placeholder, or the model is null
-              optionGroups[''].unshift({id:'', label:'', selected:!anySelected});
-            } else if (!anySelected) {
-              // option could not be found, we have to insert the undefined item
-              optionGroups[''].unshift({id:'?', label:'', selected:true});
-            }
-          }
-
-          // Now we need to update the list of DOM nodes to match the optionGroups we computed above
-          for (groupIndex = 0, groupLength = optionGroupNames.length;
-               groupIndex < groupLength;
-               groupIndex++) {
-            // current option group name or '' if no group
-            optionGroupName = optionGroupNames[groupIndex];
-
-            // list of options for that group. (first item has the parent)
-            optionGroup = optionGroups[optionGroupName];
-
-            if (optionGroupsCache.length <= groupIndex) {
-              // we need to grow the optionGroups
-              existingParent = {
-                element: optGroupTemplate.clone().attr('label', optionGroupName),
-                label: optionGroup.label
-              };
-              existingOptions = [existingParent];
-              optionGroupsCache.push(existingOptions);
-              selectElement.append(existingParent.element);
-            } else {
-              existingOptions = optionGroupsCache[groupIndex];
-              existingParent = existingOptions[0];  // either SELECT (no group) or OPTGROUP element
-
-              // update the OPTGROUP label if not the same.
-              if (existingParent.label != optionGroupName) {
-                existingParent.element.attr('label', existingParent.label = optionGroupName);
-              }
-            }
-
-            lastElement = null;  // start at the beginning
-            for (index = 0, length = optionGroup.length; index < length; index++) {
-              option = optionGroup[index];
-              if ((existingOption = existingOptions[index + 1])) {
-                // reuse elements
-                lastElement = existingOption.element;
-                if (existingOption.label !== option.label) {
-                  updateLabelMap(labelMap, existingOption.label, false);
-                  updateLabelMap(labelMap, option.label, true);
-                  lastElement.text(existingOption.label = option.label);
-                  lastElement.prop('label', existingOption.label);
-                }
-                if (existingOption.id !== option.id) {
-                  lastElement.val(existingOption.id = option.id);
-                }
-                // lastElement.prop('selected') provided by jQuery has side-effects
-                if (lastElement[0].selected !== option.selected) {
-                  lastElement.prop('selected', (existingOption.selected = option.selected));
-                  if (msie) {
-                    // See #7692
-                    // The selected item wouldn't visually update on IE without this.
-                    // Tested on Win7: IE9, IE10 and IE11. Future IEs should be tested as well
-                    lastElement.prop('selected', existingOption.selected);
-                  }
-                }
-              } else {
-                // grow elements
-
-                // if it's a null option
-                if (option.id === '' && nullOption) {
-                  // put back the pre-compiled element
-                  element = nullOption;
-                } else {
-                  // jQuery(v1.4.2) Bug: We should be able to chain the method calls, but
-                  // in this version of jQuery on some browser the .text() returns a string
-                  // rather then the element.
-                  (element = optionTemplate.clone())
-                      .val(option.id)
-                      .prop('selected', option.selected)
-                      .attr('selected', option.selected)
-                      .prop('label', option.label)
-                      .text(option.label);
-                }
-
-                existingOptions.push(existingOption = {
-                    element: element,
-                    label: option.label,
-                    id: option.id,
-                    selected: option.selected
-                });
-                updateLabelMap(labelMap, option.label, true);
-                if (lastElement) {
-                  lastElement.after(element);
-                } else {
-                  existingParent.element.append(element);
-                }
-                lastElement = element;
-              }
-            }
-            // remove any excessive OPTIONs in a group
-            index++; // increment since the existingOptions[0] is parent element not OPTION
-            while (existingOptions.length > index) {
-              option = existingOptions.pop();
-              updateLabelMap(labelMap, option.label, false);
-              option.element.remove();
-            }
-          }
-          // remove any excessive OPTGROUPs from select
-          while (optionGroupsCache.length > groupIndex) {
-            // remove all the labels in the option group
-            optionGroup = optionGroupsCache.pop();
-            for (index = 1; index < optionGroup.length; ++index) {
-              updateLabelMap(labelMap, optionGroup[index].label, false);
-            }
-            optionGroup[0].element.remove();
-          }
-          forEach(labelMap, function(count, label) {
-            if (count > 0) {
-              selectCtrl.addOption(label);
-            } else if (count < 0) {
-              selectCtrl.removeOption(label);
-            }
-          });
-        }
-      }
-    }
-  };
-}];
-
-var optionDirective = ['$interpolate', function($interpolate) {
-  var nullSelectCtrl = {
-    addOption: noop,
-    removeOption: noop
-  };
-
-  return {
-    restrict: 'E',
-    priority: 100,
-    compile: function(element, attr) {
-      if (isUndefined(attr.value)) {
-        var interpolateFn = $interpolate(element.text(), true);
-        if (!interpolateFn) {
-          attr.$set('value', element.text());
-        }
-      }
-
-      return function(scope, element, attr) {
-        var selectCtrlName = '$selectController',
-            parent = element.parent(),
-            selectCtrl = parent.data(selectCtrlName) ||
-              parent.parent().data(selectCtrlName); // in case we are in optgroup
-
-        if (!selectCtrl || !selectCtrl.databound) {
-          selectCtrl = nullSelectCtrl;
-        }
-
-        if (interpolateFn) {
-          scope.$watch(interpolateFn, function interpolateWatchAction(newVal, oldVal) {
-            attr.$set('value', newVal);
-            if (oldVal !== newVal) {
-              selectCtrl.removeOption(oldVal);
-            }
-            selectCtrl.addOption(newVal, element);
-          });
-        } else {
-          selectCtrl.addOption(attr.value, element);
-        }
-
-        element.on('$destroy', function() {
-          selectCtrl.removeOption(attr.value);
-        });
-      };
-    }
-  };
-}];
-
-var styleDirective = valueFn({
-  restrict: 'E',
-  terminal: false
-});
-
-var requiredDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-      attr.required = true; // force truthy in case we are on non input element
-
-      ctrl.$validators.required = function(modelValue, viewValue) {
-        return !attr.required || !ctrl.$isEmpty(viewValue);
-      };
-
-      attr.$observe('required', function() {
-        ctrl.$validate();
-      });
-    }
-  };
-};
-
-
-var patternDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var regexp, patternExp = attr.ngPattern || attr.pattern;
-      attr.$observe('pattern', function(regex) {
-        if (isString(regex) && regex.length > 0) {
-          regex = new RegExp('^' + regex + '$');
-        }
-
-        if (regex && !regex.test) {
-          throw minErr('ngPattern')('noregexp',
-            'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,
-            regex, startingTag(elm));
-        }
-
-        regexp = regex || undefined;
-        ctrl.$validate();
-      });
-
-      ctrl.$validators.pattern = function(value) {
-        return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
-      };
-    }
-  };
-};
-
-
-var maxlengthDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var maxlength = -1;
-      attr.$observe('maxlength', function(value) {
-        var intVal = int(value);
-        maxlength = isNaN(intVal) ? -1 : intVal;
-        ctrl.$validate();
-      });
-      ctrl.$validators.maxlength = function(modelValue, viewValue) {
-        return (maxlength < 0) || ctrl.$isEmpty(modelValue) || (viewValue.length <= maxlength);
-      };
-    }
-  };
-};
-
-var minlengthDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var minlength = 0;
-      attr.$observe('minlength', function(value) {
-        minlength = int(value) || 0;
-        ctrl.$validate();
-      });
-      ctrl.$validators.minlength = function(modelValue, viewValue) {
-        return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
-      };
-    }
-  };
-};
-
-/**
- * Setup file for the Scenario.
- * Must be first in the compilation/bootstrap list.
- */
-
-// Public namespace
-angular.scenario = angular.scenario || {};
-
-/**
- * Expose jQuery (e.g. for custom dsl extensions).
- */
-angular.scenario.jQuery = _jQuery;
-
-/**
- * Defines a new output format.
- *
- * @param {string} name the name of the new output format
- * @param {function()} fn function(context, runner) that generates the output
- */
-angular.scenario.output = angular.scenario.output || function(name, fn) {
-  angular.scenario.output[name] = fn;
-};
-
-/**
- * Defines a new DSL statement. If your factory function returns a Future
- * it's returned, otherwise the result is assumed to be a map of functions
- * for chaining. Chained functions are subject to the same rules.
- *
- * Note: All functions on the chain are bound to the chain scope so values
- *   set on "this" in your statement function are available in the chained
- *   functions.
- *
- * @param {string} name The name of the statement
- * @param {function()} fn Factory function(), return a function for
- *  the statement.
- */
-angular.scenario.dsl = angular.scenario.dsl || function(name, fn) {
-  angular.scenario.dsl[name] = function() {
-    /* jshint -W040 *//* The dsl binds `this` for us when calling chained functions */
-    function executeStatement(statement, args) {
-      var result = statement.apply(this, args);
-      if (angular.isFunction(result) || result instanceof angular.scenario.Future)
-        return result;
-      var self = this;
-      var chain = angular.extend({}, result);
-      angular.forEach(chain, function(value, name) {
-        if (angular.isFunction(value)) {
-          chain[name] = function() {
-            return executeStatement.call(self, value, arguments);
-          };
-        } else {
-          chain[name] = value;
-        }
-      });
-      return chain;
-    }
-    var statement = fn.apply(this, arguments);
-    return function() {
-      return executeStatement.call(this, statement, arguments);
-    };
-  };
-};
-
-/**
- * Defines a new matcher for use with the expects() statement. The value
- * this.actual (like in Jasmine) is available in your matcher to compare
- * against. Your function should return a boolean. The future is automatically
- * created for you.
- *
- * @param {string} name The name of the matcher
- * @param {function()} fn The matching function(expected).
- */
-angular.scenario.matcher = angular.scenario.matcher || function(name, fn) {
-  angular.scenario.matcher[name] = function(expected) {
-    var description = this.future.name +
-                      (this.inverse ? ' not ' : ' ') + name +
-                      ' ' + angular.toJson(expected);
-    var self = this;
-    this.addFuture('expect ' + description,
-      function(done) {
-        var error;
-        self.actual = self.future.value;
-        if ((self.inverse && fn.call(self, expected)) ||
-            (!self.inverse && !fn.call(self, expected))) {
-          error = 'expected ' + description +
-            ' but was ' + angular.toJson(self.actual);
-        }
-        done(error);
-    });
-  };
-};
-
-/**
- * Initialize the scenario runner and run !
- *
- * Access global window and document object
- * Access $runner through closure
- *
- * @param {Object=} config Config options
- */
-angular.scenario.setUpAndRun = function(config) {
-  var href = window.location.href;
-  var body = _jQuery(document.body);
-  var output = [];
-  var objModel = new angular.scenario.ObjectModel($runner);
-
-  if (config && config.scenario_output) {
-    output = config.scenario_output.split(',');
-  }
-
-  angular.forEach(angular.scenario.output, function(fn, name) {
-    if (!output.length || output.indexOf(name) != -1) {
-      var context = body.append('<div></div>').find('div:last');
-      context.attr('id', name);
-      fn.call({}, context, $runner, objModel);
-    }
-  });
-
-  if (!/^http/.test(href) && !/^https/.test(href)) {
-    body.append('<p id="system-error"></p>');
-    body.find('#system-error').text(
-      'Scenario runner must be run using http or https. The protocol ' +
-      href.split(':')[0] + ':// is not supported.'
-    );
-    return;
-  }
-
-  var appFrame = body.append('<div id="application"></div>').find('#application');
-  var application = new angular.scenario.Application(appFrame);
-
-  $runner.on('RunnerEnd', function() {
-    appFrame.css('display', 'none');
-    appFrame.find('iframe').attr('src', 'about:blank');
-  });
-
-  $runner.on('RunnerError', function(error) {
-    if (window.console) {
-      console.log(formatException(error));
-    } else {
-      // Do something for IE
-      alert(error);
-    }
-  });
-
-  $runner.run(application);
-};
-
-/**
- * Iterates through list with iterator function that must call the
- * continueFunction to continue iterating.
- *
- * @param {Array} list list to iterate over
- * @param {function()} iterator Callback function(value, continueFunction)
- * @param {function()} done Callback function(error, result) called when
- *   iteration finishes or an error occurs.
- */
-function asyncForEach(list, iterator, done) {
-  var i = 0;
-  function loop(error, index) {
-    if (index && index > i) {
-      i = index;
-    }
-    if (error || i >= list.length) {
-      done(error);
-    } else {
-      try {
-        iterator(list[i++], loop);
-      } catch (e) {
-        done(e);
-      }
-    }
-  }
-  loop();
-}
-
-/**
- * Formats an exception into a string with the stack trace, but limits
- * to a specific line length.
- *
- * @param {Object} error The exception to format, can be anything throwable
- * @param {Number=} [maxStackLines=5] max lines of the stack trace to include
- *  default is 5.
- */
-function formatException(error, maxStackLines) {
-  maxStackLines = maxStackLines || 5;
-  var message = error.toString();
-  if (error.stack) {
-    var stack = error.stack.split('\n');
-    if (stack[0].indexOf(message) === -1) {
-      maxStackLines++;
-      stack.unshift(error.message);
-    }
-    message = stack.slice(0, maxStackLines).join('\n');
-  }
-  return message;
-}
-
-/**
- * Returns a function that gets the file name and line number from a
- * location in the stack if available based on the call site.
- *
- * Note: this returns another function because accessing .stack is very
- * expensive in Chrome.
- *
- * @param {Number} offset Number of stack lines to skip
- */
-function callerFile(offset) {
-  var error = new Error();
-
-  return function() {
-    var line = (error.stack || '').split('\n')[offset];
-
-    // Clean up the stack trace line
-    if (line) {
-      if (line.indexOf('@') !== -1) {
-        // Firefox
-        line = line.substring(line.indexOf('@') + 1);
-      } else {
-        // Chrome
-        line = line.substring(line.indexOf('(') + 1).replace(')', '');
-      }
-    }
-
-    return line || '';
-  };
-}
-
-
-/**
- * Don't use the jQuery trigger method since it works incorrectly.
- *
- * jQuery notifies listeners and then changes the state of a checkbox and
- * does not create a real browser event. A real click changes the state of
- * the checkbox and then notifies listeners.
- *
- * To work around this we instead use our own handler that fires a real event.
- */
-(function(fn) {
-  // We need a handle to the original trigger function for input tests.
-  var parentTrigger = fn._originalTrigger = fn.trigger;
-  fn.trigger = function(type) {
-    if (/(click|change|keydown|blur|input|mousedown|mouseup)/.test(type)) {
-      var processDefaults = [];
-      this.each(function(index, node) {
-        processDefaults.push(browserTrigger(node, type));
-      });
-
-      // this is not compatible with jQuery - we return an array of returned values,
-      // so that scenario runner know whether JS code has preventDefault() of the event or not...
-      return processDefaults;
-    }
-    return parentTrigger.apply(this, arguments);
-  };
-})(_jQuery.fn);
-
-/**
- * Finds all bindings with the substring match of name and returns an
- * array of their values.
- *
- * @param {string} bindExp The name to match
- * @return {Array.<string>} String of binding values
- */
-_jQuery.fn.bindings = function(windowJquery, bindExp) {
-  var result = [], match,
-      bindSelector = '.ng-binding:visible';
-  if (angular.isString(bindExp)) {
-    bindExp = bindExp.replace(/\s/g, '');
-    match = function(actualExp) {
-      if (actualExp) {
-        actualExp = actualExp.replace(/\s/g, '');
-        if (actualExp == bindExp) return true;
-        if (actualExp.indexOf(bindExp) === 0) {
-          return actualExp.charAt(bindExp.length) == '|';
-        }
-      }
-    };
-  } else if (bindExp) {
-    match = function(actualExp) {
-      return actualExp && bindExp.exec(actualExp);
-    };
-  } else {
-    match = function(actualExp) {
-      return !!actualExp;
-    };
-  }
-  var selection = this.find(bindSelector);
-  if (this.is(bindSelector)) {
-    selection = selection.add(this);
-  }
-
-  function push(value) {
-    if (value === undefined) {
-      value = '';
-    } else if (typeof value !== 'string') {
-      value = angular.toJson(value);
-    }
-    result.push('' + value);
-  }
-
-  selection.each(function() {
-    var element = windowJquery(this),
-        bindings;
-    if (bindings = element.data('$binding')) {
-      for (var expressions = [], binding, j=0, jj=bindings.length;  j < jj; j++) {
-        binding = bindings[j];
-
-        if (binding.expressions) {
-          expressions = binding.expressions;
-        } else {
-          expressions = [binding];
-        }
-        for (var scope, expression, i = 0, ii = expressions.length; i < ii; i++) {
-          expression = expressions[i];
-          if (match(expression)) {
-            scope = scope || element.scope();
-            push(scope.$eval(expression));
-          }
-        }
-      }
-    }
-  });
-  return result;
-};
-
-(function() {
-  /**
-   * Triggers a browser event. Attempts to choose the right event if one is
-   * not specified.
-   *
-   * @param {Object} element Either a wrapped jQuery/jqLite node or a DOMElement
-   * @param {string} eventType Optional event type
-   * @param {Object=} eventData An optional object which contains additional event data (such as x,y
-   * coordinates, keys, etc...) that are passed into the event when triggered
-   */
-  window.browserTrigger = function browserTrigger(element, eventType, eventData) {
-    if (element && !element.nodeName) element = element[0];
-    if (!element) return;
-
-    eventData = eventData || {};
-    var keys = eventData.keys;
-    var x = eventData.x;
-    var y = eventData.y;
-
-    var inputType = (element.type) ? element.type.toLowerCase() : null,
-        nodeName = element.nodeName.toLowerCase();
-    if (!eventType) {
-      eventType = {
-        'text':            'change',
-        'textarea':        'change',
-        'hidden':          'change',
-        'password':        'change',
-        'button':          'click',
-        'submit':          'click',
-        'reset':           'click',
-        'image':           'click',
-        'checkbox':        'click',
-        'radio':           'click',
-        'select-one':      'change',
-        'select-multiple': 'change',
-        '_default_':       'click'
-      }[inputType || '_default_'];
-    }
-
-    if (nodeName == 'option') {
-      element.parentNode.value = element.value;
-      element = element.parentNode;
-      eventType = 'change';
-    }
-
-    keys = keys || [];
-    function pressed(key) {
-      return keys.indexOf(key) !== -1;
-    }
-
-    var evnt;
-    if (/transitionend/.test(eventType)) {
-      if (window.WebKitTransitionEvent) {
-        evnt = new WebKitTransitionEvent(eventType, eventData);
-        evnt.initEvent(eventType, false, true);
-      }
-      else {
-        try {
-          evnt = new TransitionEvent(eventType, eventData);
-        }
-        catch (e) {
-          evnt = document.createEvent('TransitionEvent');
-          evnt.initTransitionEvent(eventType, null, null, null, eventData.elapsedTime || 0);
-        }
-      }
-    }
-    else if (/animationend/.test(eventType)) {
-      if (window.WebKitAnimationEvent) {
-        evnt = new WebKitAnimationEvent(eventType, eventData);
-        evnt.initEvent(eventType, false, true);
-      }
-      else {
-        try {
-          evnt = new AnimationEvent(eventType, eventData);
-        }
-        catch (e) {
-          evnt = document.createEvent('AnimationEvent');
-          evnt.initAnimationEvent(eventType, null, null, null, eventData.elapsedTime || 0);
-        }
-      }
-    }
-    else {
-      evnt = document.createEvent('MouseEvents');
-      x = x || 0;
-      y = y || 0;
-      evnt.initMouseEvent(eventType, true, true, window, 0, x, y, x, y, pressed('ctrl'),
-          pressed('alt'), pressed('shift'), pressed('meta'), 0, element);
-    }
-
-    /* we're unable to change the timeStamp value directly so this
-     * is only here to allow for testing where the timeStamp value is
-     * read */
-    evnt.$manualTimeStamp = eventData.timeStamp;
-
-    if (!evnt) return;
-
-    var originalPreventDefault = evnt.preventDefault,
-        appWindow = element.ownerDocument.defaultView,
-        fakeProcessDefault = true,
-        finalProcessDefault,
-        angular = appWindow.angular || {};
-
-    // igor: temporary fix for https://bugzilla.mozilla.org/show_bug.cgi?id=684208
-    angular['ff-684208-preventDefault'] = false;
-    evnt.preventDefault = function() {
-      fakeProcessDefault = false;
-      return originalPreventDefault.apply(evnt, arguments);
-    };
-
-    element.dispatchEvent(evnt);
-    finalProcessDefault = !(angular['ff-684208-preventDefault'] || !fakeProcessDefault);
-
-    delete angular['ff-684208-preventDefault'];
-
-    return finalProcessDefault;
-  };
-}());
-
-/**
- * Represents the application currently being tested and abstracts usage
- * of iframes or separate windows.
- *
- * @param {Object} context jQuery wrapper around HTML context.
- */
-angular.scenario.Application = function(context) {
-  this.context = context;
-  context.append(
-    '<h2>Current URL: <a href="about:blank">None</a></h2>' +
-    '<div id="test-frames"></div>'
-  );
-};
-
-/**
- * Gets the jQuery collection of frames. Don't use this directly because
- * frames may go stale.
- *
- * @private
- * @return {Object} jQuery collection
- */
-angular.scenario.Application.prototype.getFrame_ = function() {
-  return this.context.find('#test-frames iframe:last');
-};
-
-/**
- * Gets the window of the test runner frame. Always favor executeAction()
- * instead of this method since it prevents you from getting a stale window.
- *
- * @private
- * @return {Object} the window of the frame
- */
-angular.scenario.Application.prototype.getWindow_ = function() {
-  var contentWindow = this.getFrame_().prop('contentWindow');
-  if (!contentWindow)
-    throw 'Frame window is not accessible.';
-  return contentWindow;
-};
-
-/**
- * Changes the location of the frame.
- *
- * @param {string} url The URL. If it begins with a # then only the
- *   hash of the page is changed.
- * @param {function()} loadFn function($window, $document) Called when frame loads.
- * @param {function()} errorFn function(error) Called if any error when loading.
- */
-angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorFn) {
-  var self = this;
-  var frame = self.getFrame_();
-  //TODO(esprehn): Refactor to use rethrow()
-  errorFn = errorFn || function(e) { throw e; };
-  if (url === 'about:blank') {
-    errorFn('Sandbox Error: Navigating to about:blank is not allowed.');
-  } else if (url.charAt(0) === '#') {
-    url = frame.attr('src').split('#')[0] + url;
-    frame.attr('src', url);
-    self.executeAction(loadFn);
-  } else {
-    frame.remove();
-    self.context.find('#test-frames').append('<iframe>');
-    frame = self.getFrame_();
-
-    frame.load(function() {
-      frame.off();
-      try {
-        var $window = self.getWindow_();
-
-        if ($window.angular) {
-          // Disable animations
-          $window.angular.resumeBootstrap([['$provide', function($provide) {
-            return ['$animate', function($animate) {
-              $animate.enabled(false);
-            }];
-          }]]);
-        }
-
-        self.executeAction(loadFn);
-      } catch (e) {
-        errorFn(e);
-      }
-    }).attr('src', url);
-
-    // for IE compatibility set the name *after* setting the frame url
-    frame[0].contentWindow.name = "NG_DEFER_BOOTSTRAP!";
-  }
-  self.context.find('> h2 a').attr('href', url).text(url);
-};
-
-/**
- * Executes a function in the context of the tested application. Will wait
- * for all pending angular xhr requests before executing.
- *
- * @param {function()} action The callback to execute. function($window, $document)
- *  $document is a jQuery wrapped document.
- */
-angular.scenario.Application.prototype.executeAction = function(action) {
-  var self = this;
-  var $window = this.getWindow_();
-  if (!$window.document) {
-    throw 'Sandbox Error: Application document not accessible.';
-  }
-  if (!$window.angular) {
-    return action.call(this, $window, _jQuery($window.document));
-  }
-  angularInit($window.document, function(element) {
-    var $injector = $window.angular.element(element).injector();
-    var $element = _jQuery(element);
-
-    $element.injector = function() {
-      return $injector;
-    };
-
-    $injector.invoke(function($browser) {
-      $browser.notifyWhenNoOutstandingRequests(function() {
-        action.call(self, $window, $element);
-      });
-    });
-  });
-};
-
-/**
- * The representation of define blocks. Don't used directly, instead use
- * define() in your tests.
- *
- * @param {string} descName Name of the block
- * @param {Object} parent describe or undefined if the root.
- */
-angular.scenario.Describe = function(descName, parent) {
-  this.only = parent && parent.only;
-  this.beforeEachFns = [];
-  this.afterEachFns = [];
-  this.its = [];
-  this.children = [];
-  this.name = descName;
-  this.parent = parent;
-  this.id = angular.scenario.Describe.id++;
-
-  /**
-   * Calls all before functions.
-   */
-  var beforeEachFns = this.beforeEachFns;
-  this.setupBefore = function() {
-    if (parent) parent.setupBefore.call(this);
-    angular.forEach(beforeEachFns, function(fn) { fn.call(this); }, this);
-  };
-
-  /**
-   * Calls all after functions.
-   */
-  var afterEachFns = this.afterEachFns;
-  this.setupAfter  = function() {
-    angular.forEach(afterEachFns, function(fn) { fn.call(this); }, this);
-    if (parent) parent.setupAfter.call(this);
-  };
-};
-
-// Shared Unique ID generator for every describe block
-angular.scenario.Describe.id = 0;
-
-// Shared Unique ID generator for every it (spec)
-angular.scenario.Describe.specId = 0;
-
-/**
- * Defines a block to execute before each it or nested describe.
- *
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.beforeEach = function(body) {
-  this.beforeEachFns.push(body);
-};
-
-/**
- * Defines a block to execute after each it or nested describe.
- *
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.afterEach = function(body) {
-  this.afterEachFns.push(body);
-};
-
-/**
- * Creates a new describe block that's a child of this one.
- *
- * @param {string} name Name of the block. Appended to the parent block's name.
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.describe = function(name, body) {
-  var child = new angular.scenario.Describe(name, this);
-  this.children.push(child);
-  body.call(child);
-};
-
-/**
- * Same as describe() but makes ddescribe blocks the only to run.
- *
- * @param {string} name Name of the test.
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.ddescribe = function(name, body) {
-  var child = new angular.scenario.Describe(name, this);
-  child.only = true;
-  this.children.push(child);
-  body.call(child);
-};
-
-/**
- * Use to disable a describe block.
- */
-angular.scenario.Describe.prototype.xdescribe = angular.noop;
-
-/**
- * Defines a test.
- *
- * @param {string} name Name of the test.
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.it = function(name, body) {
-  this.its.push({
-    id: angular.scenario.Describe.specId++,
-    definition: this,
-    only: this.only,
-    name: name,
-    before: this.setupBefore,
-    body: body,
-    after: this.setupAfter
-  });
-};
-
-/**
- * Same as it() but makes iit tests the only test to run.
- *
- * @param {string} name Name of the test.
- * @param {function()} body Body of the block.
- */
-angular.scenario.Describe.prototype.iit = function(name, body) {
-  this.it.apply(this, arguments);
-  this.its[this.its.length - 1].only = true;
-};
-
-/**
- * Use to disable a test block.
- */
-angular.scenario.Describe.prototype.xit = angular.noop;
-
-/**
- * Gets an array of functions representing all the tests (recursively).
- * that can be executed with SpecRunner's.
- *
- * @return {Array<Object>} Array of it blocks {
- *   definition : Object // parent Describe
- *   only: boolean
- *   name: string
- *   before: Function
- *   body: Function
- *   after: Function
- *  }
- */
-angular.scenario.Describe.prototype.getSpecs = function() {
-  var specs = arguments[0] || [];
-  angular.forEach(this.children, function(child) {
-    child.getSpecs(specs);
-  });
-  angular.forEach(this.its, function(it) {
-    specs.push(it);
-  });
-  var only = [];
-  angular.forEach(specs, function(it) {
-    if (it.only) {
-      only.push(it);
-    }
-  });
-  return (only.length && only) || specs;
-};
-
-/**
- * A future action in a spec.
- *
- * @param {string} name name of the future action
- * @param {function()} behavior future callback(error, result)
- * @param {function()} line Optional. function that returns the file/line number.
- */
-angular.scenario.Future = function(name, behavior, line) {
-  this.name = name;
-  this.behavior = behavior;
-  this.fulfilled = false;
-  this.value = undefined;
-  this.parser = angular.identity;
-  this.line = line || function() { return ''; };
-};
-
-/**
- * Executes the behavior of the closure.
- *
- * @param {function()} doneFn Callback function(error, result)
- */
-angular.scenario.Future.prototype.execute = function(doneFn) {
-  var self = this;
-  this.behavior(function(error, result) {
-    self.fulfilled = true;
-    if (result) {
-      try {
-        result = self.parser(result);
-      } catch (e) {
-        error = e;
-      }
-    }
-    self.value = error || result;
-    doneFn(error, result);
-  });
-};
-
-/**
- * Configures the future to convert its final with a function fn(value)
- *
- * @param {function()} fn function(value) that returns the parsed value
- */
-angular.scenario.Future.prototype.parsedWith = function(fn) {
-  this.parser = fn;
-  return this;
-};
-
-/**
- * Configures the future to parse its final value from JSON
- * into objects.
- */
-angular.scenario.Future.prototype.fromJson = function() {
-  return this.parsedWith(angular.fromJson);
-};
-
-/**
- * Configures the future to convert its final value from objects
- * into JSON.
- */
-angular.scenario.Future.prototype.toJson = function() {
-  return this.parsedWith(angular.toJson);
-};
-
-/**
- * Maintains an object tree from the runner events.
- *
- * @param {Object} runner The scenario Runner instance to connect to.
- *
- * TODO(esprehn): Every output type creates one of these, but we probably
- *  want one global shared instance. Need to handle events better too
- *  so the HTML output doesn't need to do spec model.getSpec(spec.id)
- *  silliness.
- *
- * TODO(vojta) refactor on, emit methods (from all objects) - use inheritance
- */
-angular.scenario.ObjectModel = function(runner) {
-  var self = this;
-
-  this.specMap = {};
-  this.listeners = [];
-  this.value = {
-    name: '',
-    children: {}
-  };
-
-  runner.on('SpecBegin', function(spec) {
-    var block = self.value,
-        definitions = [];
-
-    angular.forEach(self.getDefinitionPath(spec), function(def) {
-      if (!block.children[def.name]) {
-        block.children[def.name] = {
-          id: def.id,
-          name: def.name,
-          children: {},
-          specs: {}
-        };
-      }
-      block = block.children[def.name];
-      definitions.push(def.name);
-    });
-
-    var it = self.specMap[spec.id] =
-             block.specs[spec.name] =
-             new angular.scenario.ObjectModel.Spec(spec.id, spec.name, definitions);
-
-    // forward the event
-    self.emit('SpecBegin', it);
-  });
-
-  runner.on('SpecError', function(spec, error) {
-    var it = self.getSpec(spec.id);
-    it.status = 'error';
-    it.error = error;
-
-    // forward the event
-    self.emit('SpecError', it, error);
-  });
-
-  runner.on('SpecEnd', function(spec) {
-    var it = self.getSpec(spec.id);
-    complete(it);
-
-    // forward the event
-    self.emit('SpecEnd', it);
-  });
-
-  runner.on('StepBegin', function(spec, step) {
-    var it = self.getSpec(spec.id);
-    step = new angular.scenario.ObjectModel.Step(step.name);
-    it.steps.push(step);
-
-    // forward the event
-    self.emit('StepBegin', it, step);
-  });
-
-  runner.on('StepEnd', function(spec) {
-    var it = self.getSpec(spec.id);
-    var step = it.getLastStep();
-    if (step.name !== step.name)
-      throw 'Events fired in the wrong order. Step names don\'t match.';
-    complete(step);
-
-    // forward the event
-    self.emit('StepEnd', it, step);
-  });
-
-  runner.on('StepFailure', function(spec, step, error) {
-    var it = self.getSpec(spec.id),
-        modelStep = it.getLastStep();
-
-    modelStep.setErrorStatus('failure', error, step.line());
-    it.setStatusFromStep(modelStep);
-
-    // forward the event
-    self.emit('StepFailure', it, modelStep, error);
-  });
-
-  runner.on('StepError', function(spec, step, error) {
-    var it = self.getSpec(spec.id),
-        modelStep = it.getLastStep();
-
-    modelStep.setErrorStatus('error', error, step.line());
-    it.setStatusFromStep(modelStep);
-
-    // forward the event
-    self.emit('StepError', it, modelStep, error);
-  });
-
-  runner.on('RunnerBegin', function() {
-    self.emit('RunnerBegin');
-  });
-  runner.on('RunnerEnd', function() {
-    self.emit('RunnerEnd');
-  });
-
-  function complete(item) {
-    item.endTime = new Date().getTime();
-    item.duration = item.endTime - item.startTime;
-    item.status = item.status || 'success';
-  }
-};
-
-/**
- * Adds a listener for an event.
- *
- * @param {string} eventName Name of the event to add a handler for
- * @param {function()} listener Function that will be called when event is fired
- */
-angular.scenario.ObjectModel.prototype.on = function(eventName, listener) {
-  eventName = eventName.toLowerCase();
-  this.listeners[eventName] = this.listeners[eventName] || [];
-  this.listeners[eventName].push(listener);
-};
-
-/**
- * Emits an event which notifies listeners and passes extra
- * arguments.
- *
- * @param {string} eventName Name of the event to fire.
- */
-angular.scenario.ObjectModel.prototype.emit = function(eventName) {
-  var self = this,
-      args = Array.prototype.slice.call(arguments, 1);
-
-  eventName = eventName.toLowerCase();
-
-  if (this.listeners[eventName]) {
-    angular.forEach(this.listeners[eventName], function(listener) {
-      listener.apply(self, args);
-    });
-  }
-};
-
-/**
- * Computes the path of definition describe blocks that wrap around
- * this spec.
- *
- * @param spec Spec to compute the path for.
- * @return {Array<Describe>} The describe block path
- */
-angular.scenario.ObjectModel.prototype.getDefinitionPath = function(spec) {
-  var path = [];
-  var currentDefinition = spec.definition;
-  while (currentDefinition && currentDefinition.name) {
-    path.unshift(currentDefinition);
-    currentDefinition = currentDefinition.parent;
-  }
-  return path;
-};
-
-/**
- * Gets a spec by id.
- *
- * @param {string} id The id of the spec to get the object for.
- * @return {Object} the Spec instance
- */
-angular.scenario.ObjectModel.prototype.getSpec = function(id) {
-  return this.specMap[id];
-};
-
-/**
- * A single it block.
- *
- * @param {string} id Id of the spec
- * @param {string} name Name of the spec
- * @param {Array<string>=} definitionNames List of all describe block names that wrap this spec
- */
-angular.scenario.ObjectModel.Spec = function(id, name, definitionNames) {
-  this.id = id;
-  this.name = name;
-  this.startTime = new Date().getTime();
-  this.steps = [];
-  this.fullDefinitionName = (definitionNames || []).join(' ');
-};
-
-/**
- * Adds a new step to the Spec.
- *
- * @param {string} name Name of the step (really name of the future)
- * @return {Object} the added step
- */
-angular.scenario.ObjectModel.Spec.prototype.addStep = function(name) {
-  var step = new angular.scenario.ObjectModel.Step(name);
-  this.steps.push(step);
-  return step;
-};
-
-/**
- * Gets the most recent step.
- *
- * @return {Object} the step
- */
-angular.scenario.ObjectModel.Spec.prototype.getLastStep = function() {
-  return this.steps[this.steps.length - 1];
-};
-
-/**
- * Set status of the Spec from given Step
- *
- * @param {angular.scenario.ObjectModel.Step} step
- */
-angular.scenario.ObjectModel.Spec.prototype.setStatusFromStep = function(step) {
-  if (!this.status || step.status == 'error') {
-    this.status = step.status;
-    this.error = step.error;
-    this.line = step.line;
-  }
-};
-
-/**
- * A single step inside a Spec.
- *
- * @param {string} name Name of the step
- */
-angular.scenario.ObjectModel.Step = function(name) {
-  this.name = name;
-  this.startTime = new Date().getTime();
-};
-
-/**
- * Helper method for setting all error status related properties
- *
- * @param {string} status
- * @param {string} error
- * @param {string} line
- */
-angular.scenario.ObjectModel.Step.prototype.setErrorStatus = function(status, error, line) {
-  this.status = status;
-  this.error = error;
-  this.line = line;
-};
-
-/**
- * Runner for scenarios
- *
- * Has to be initialized before any test is loaded,
- * because it publishes the API into window (global space).
- */
-angular.scenario.Runner = function($window) {
-  this.listeners = [];
-  this.$window = $window;
-  this.rootDescribe = new angular.scenario.Describe();
-  this.currentDescribe = this.rootDescribe;
-  this.api = {
-    it: this.it,
-    iit: this.iit,
-    xit: angular.noop,
-    describe: this.describe,
-    ddescribe: this.ddescribe,
-    xdescribe: angular.noop,
-    beforeEach: this.beforeEach,
-    afterEach: this.afterEach
-  };
-  angular.forEach(this.api, angular.bind(this, function(fn, key) {
-    this.$window[key] = angular.bind(this, fn);
-  }));
-};
-
-/**
- * Emits an event which notifies listeners and passes extra
- * arguments.
- *
- * @param {string} eventName Name of the event to fire.
- */
-angular.scenario.Runner.prototype.emit = function(eventName) {
-  var self = this;
-  var args = Array.prototype.slice.call(arguments, 1);
-  eventName = eventName.toLowerCase();
-  if (!this.listeners[eventName])
-    return;
-  angular.forEach(this.listeners[eventName], function(listener) {
-    listener.apply(self, args);
-  });
-};
-
-/**
- * Adds a listener for an event.
- *
- * @param {string} eventName The name of the event to add a handler for
- * @param {string} listener The fn(...) that takes the extra arguments from emit()
- */
-angular.scenario.Runner.prototype.on = function(eventName, listener) {
-  eventName = eventName.toLowerCase();
-  this.listeners[eventName] = this.listeners[eventName] || [];
-  this.listeners[eventName].push(listener);
-};
-
-/**
- * Defines a describe block of a spec.
- *
- * @see Describe.js
- *
- * @param {string} name Name of the block
- * @param {function()} body Body of the block
- */
-angular.scenario.Runner.prototype.describe = function(name, body) {
-  var self = this;
-  this.currentDescribe.describe(name, function() {
-    var parentDescribe = self.currentDescribe;
-    self.currentDescribe = this;
-    try {
-      body.call(this);
-    } finally {
-      self.currentDescribe = parentDescribe;
-    }
-  });
-};
-
-/**
- * Same as describe, but makes ddescribe the only blocks to run.
- *
- * @see Describe.js
- *
- * @param {string} name Name of the block
- * @param {function()} body Body of the block
- */
-angular.scenario.Runner.prototype.ddescribe = function(name, body) {
-  var self = this;
-  this.currentDescribe.ddescribe(name, function() {
-    var parentDescribe = self.currentDescribe;
-    self.currentDescribe = this;
-    try {
-      body.call(this);
-    } finally {
-      self.currentDescribe = parentDescribe;
-    }
-  });
-};
-
-/**
- * Defines a test in a describe block of a spec.
- *
- * @see Describe.js
- *
- * @param {string} name Name of the block
- * @param {function()} body Body of the block
- */
-angular.scenario.Runner.prototype.it = function(name, body) {
-  this.currentDescribe.it(name, body);
-};
-
-/**
- * Same as it, but makes iit tests the only tests to run.
- *
- * @see Describe.js
- *
- * @param {string} name Name of the block
- * @param {function()} body Body of the block
- */
-angular.scenario.Runner.prototype.iit = function(name, body) {
-  this.currentDescribe.iit(name, body);
-};
-
-/**
- * Defines a function to be called before each it block in the describe
- * (and before all nested describes).
- *
- * @see Describe.js
- *
- * @param {function()} Callback to execute
- */
-angular.scenario.Runner.prototype.beforeEach = function(body) {
-  this.currentDescribe.beforeEach(body);
-};
-
-/**
- * Defines a function to be called after each it block in the describe
- * (and before all nested describes).
- *
- * @see Describe.js
- *
- * @param {function()} Callback to execute
- */
-angular.scenario.Runner.prototype.afterEach = function(body) {
-  this.currentDescribe.afterEach(body);
-};
-
-/**
- * Creates a new spec runner.
- *
- * @private
- * @param {Object} scope parent scope
- */
-angular.scenario.Runner.prototype.createSpecRunner_ = function(scope) {
-  var child = scope.$new();
-  var Cls = angular.scenario.SpecRunner;
-
-  // Export all the methods to child scope manually as now we don't mess controllers with scopes
-  // TODO(vojta): refactor scenario runner so that these objects are not tightly coupled as current
-  for (var name in Cls.prototype)
-    child[name] = angular.bind(child, Cls.prototype[name]);
-
-  Cls.call(child);
-  return child;
-};
-
-/**
- * Runs all the loaded tests with the specified runner class on the
- * provided application.
- *
- * @param {angular.scenario.Application} application App to remote control.
- */
-angular.scenario.Runner.prototype.run = function(application) {
-  var self = this;
-  var $root = angular.injector(['ng']).get('$rootScope');
-  angular.extend($root, this);
-  angular.forEach(angular.scenario.Runner.prototype, function(fn, name) {
-    $root[name] = angular.bind(self, fn);
-  });
-  $root.application = application;
-  $root.emit('RunnerBegin');
-  asyncForEach(this.rootDescribe.getSpecs(), function(spec, specDone) {
-    var dslCache = {};
-    var runner = self.createSpecRunner_($root);
-    angular.forEach(angular.scenario.dsl, function(fn, key) {
-      dslCache[key] = fn.call($root);
-    });
-    angular.forEach(angular.scenario.dsl, function(fn, key) {
-      self.$window[key] = function() {
-        var line = callerFile(3);
-        var scope = runner.$new();
-
-        // Make the dsl accessible on the current chain
-        scope.dsl = {};
-        angular.forEach(dslCache, function(fn, key) {
-          scope.dsl[key] = function() {
-            return dslCache[key].apply(scope, arguments);
-          };
-        });
-
-        // Make these methods work on the current chain
-        scope.addFuture = function() {
-          Array.prototype.push.call(arguments, line);
-          return angular.scenario.SpecRunner.
-            prototype.addFuture.apply(scope, arguments);
-        };
-        scope.addFutureAction = function() {
-          Array.prototype.push.call(arguments, line);
-          return angular.scenario.SpecRunner.
-            prototype.addFutureAction.apply(scope, arguments);
-        };
-
-        return scope.dsl[key].apply(scope, arguments);
-      };
-    });
-    runner.run(spec, function() {
-      runner.$destroy();
-      specDone.apply(this, arguments);
-    });
-  },
-  function(error) {
-    if (error) {
-      self.emit('RunnerError', error);
-    }
-    self.emit('RunnerEnd');
-  });
-};
-
-/**
- * This class is the "this" of the it/beforeEach/afterEach method.
- * Responsibilities:
- *   - "this" for it/beforeEach/afterEach
- *   - keep state for single it/beforeEach/afterEach execution
- *   - keep track of all of the futures to execute
- *   - run single spec (execute each future)
- */
-angular.scenario.SpecRunner = function() {
-  this.futures = [];
-  this.afterIndex = 0;
-};
-
-/**
- * Executes a spec which is an it block with associated before/after functions
- * based on the describe nesting.
- *
- * @param {Object} spec A spec object
- * @param {function()} specDone function that is called when the spec finishes,
- *                              of the form `Function(error, index)`
- */
-angular.scenario.SpecRunner.prototype.run = function(spec, specDone) {
-  var self = this;
-  this.spec = spec;
-
-  this.emit('SpecBegin', spec);
-
-  try {
-    spec.before.call(this);
-    spec.body.call(this);
-    this.afterIndex = this.futures.length;
-    spec.after.call(this);
-  } catch (e) {
-    this.emit('SpecError', spec, e);
-    this.emit('SpecEnd', spec);
-    specDone();
-    return;
-  }
-
-  var handleError = function(error, done) {
-    if (self.error) {
-      return done();
-    }
-    self.error = true;
-    done(null, self.afterIndex);
-  };
-
-  asyncForEach(
-    this.futures,
-    function(future, futureDone) {
-      self.step = future;
-      self.emit('StepBegin', spec, future);
-      try {
-        future.execute(function(error) {
-          if (error) {
-            self.emit('StepFailure', spec, future, error);
-            self.emit('StepEnd', spec, future);
-            return handleError(error, futureDone);
-          }
-          self.emit('StepEnd', spec, future);
-          self.$window.setTimeout(function() { futureDone(); }, 0);
-        });
-      } catch (e) {
-        self.emit('StepError', spec, future, e);
-        self.emit('StepEnd', spec, future);
-        handleError(e, futureDone);
-      }
-    },
-    function(e) {
-      if (e) {
-        self.emit('SpecError', spec, e);
-      }
-      self.emit('SpecEnd', spec);
-      // Call done in a timeout so exceptions don't recursively
-      // call this function
-      self.$window.setTimeout(function() { specDone(); }, 0);
-    }
-  );
-};
-
-/**
- * Adds a new future action.
- *
- * Note: Do not pass line manually. It happens automatically.
- *
- * @param {string} name Name of the future
- * @param {function()} behavior Behavior of the future
- * @param {function()} line fn() that returns file/line number
- */
-angular.scenario.SpecRunner.prototype.addFuture = function(name, behavior, line) {
-  var future = new angular.scenario.Future(name, angular.bind(this, behavior), line);
-  this.futures.push(future);
-  return future;
-};
-
-/**
- * Adds a new future action to be executed on the application window.
- *
- * Note: Do not pass line manually. It happens automatically.
- *
- * @param {string} name Name of the future
- * @param {function()} behavior Behavior of the future
- * @param {function()} line fn() that returns file/line number
- */
-angular.scenario.SpecRunner.prototype.addFutureAction = function(name, behavior, line) {
-  var self = this;
-  var NG = /\[ng\\\:/;
-  return this.addFuture(name, function(done) {
-    this.application.executeAction(function($window, $document) {
-
-      //TODO(esprehn): Refactor this so it doesn't need to be in here.
-      $document.elements = function(selector) {
-        var args = Array.prototype.slice.call(arguments, 1);
-        selector = (self.selector || '') + ' ' + (selector || '');
-        selector = _jQuery.trim(selector) || '*';
-        angular.forEach(args, function(value, index) {
-          selector = selector.replace('$' + (index + 1), value);
-        });
-        var result = $document.find(selector);
-        if (selector.match(NG)) {
-          angular.forEach(['[ng-','[data-ng-','[x-ng-'], function(value, index) {
-            result = result.add(selector.replace(NG, value), $document);
-          });
-        }
-        if (!result.length) {
-          throw {
-            type: 'selector',
-            message: 'Selector ' + selector + ' did not match any elements.'
-          };
-        }
-
-        return result;
-      };
-
-      try {
-        behavior.call(self, $window, $document, done);
-      } catch (e) {
-        if (e.type && e.type === 'selector') {
-          done(e.message);
-        } else {
-          throw e;
-        }
-      }
-    });
-  }, line);
-};
-
-/**
- * Shared DSL statements that are useful to all scenarios.
- */
-
- /**
- * Usage:
- *    pause() pauses until you call resume() in the console
- */
-angular.scenario.dsl('pause', function() {
-  return function() {
-    return this.addFuture('pausing for you to resume', function(done) {
-      this.emit('InteractivePause', this.spec, this.step);
-      this.$window.resume = function() { done(); };
-    });
-  };
-});
-
-/**
- * Usage:
- *    sleep(seconds) pauses the test for specified number of seconds
- */
-angular.scenario.dsl('sleep', function() {
-  return function(time) {
-    return this.addFuture('sleep for ' + time + ' seconds', function(done) {
-      this.$window.setTimeout(function() { done(null, time * 1000); }, time * 1000);
-    });
-  };
-});
-
-/**
- * Usage:
- *    browser().navigateTo(url) Loads the url into the frame
- *    browser().navigateTo(url, fn) where fn(url) is called and returns the URL to navigate to
- *    browser().reload() refresh the page (reload the same URL)
- *    browser().window.href() window.location.href
- *    browser().window.path() window.location.pathname
- *    browser().window.search() window.location.search
- *    browser().window.hash() window.location.hash without # prefix
- *    browser().location().url() see ng.$location#url
- *    browser().location().path() see ng.$location#path
- *    browser().location().search() see ng.$location#search
- *    browser().location().hash() see ng.$location#hash
- */
-angular.scenario.dsl('browser', function() {
-  var chain = {};
-
-  chain.navigateTo = function(url, delegate) {
-    var application = this.application;
-    return this.addFuture("browser navigate to '" + url + "'", function(done) {
-      if (delegate) {
-        url = delegate.call(this, url);
-      }
-      application.navigateTo(url, function() {
-        done(null, url);
-      }, done);
-    });
-  };
-
-  chain.reload = function() {
-    var application = this.application;
-    return this.addFutureAction('browser reload', function($window, $document, done) {
-      var href = $window.location.href;
-      application.navigateTo(href, function() {
-        done(null, href);
-      }, done);
-    });
-  };
-
-  chain.window = function() {
-    var api = {};
-
-    api.href = function() {
-      return this.addFutureAction('window.location.href', function($window, $document, done) {
-        done(null, $window.location.href);
-      });
-    };
-
-    api.path = function() {
-      return this.addFutureAction('window.location.path', function($window, $document, done) {
-        done(null, $window.location.pathname);
-      });
-    };
-
-    api.search = function() {
-      return this.addFutureAction('window.location.search', function($window, $document, done) {
-        done(null, $window.location.search);
-      });
-    };
-
-    api.hash = function() {
-      return this.addFutureAction('window.location.hash', function($window, $document, done) {
-        done(null, $window.location.hash.replace('#', ''));
-      });
-    };
-
-    return api;
-  };
-
-  chain.location = function() {
-    var api = {};
-
-    api.url = function() {
-      return this.addFutureAction('$location.url()', function($window, $document, done) {
-        done(null, $document.injector().get('$location').url());
-      });
-    };
-
-    api.path = function() {
-      return this.addFutureAction('$location.path()', function($window, $document, done) {
-        done(null, $document.injector().get('$location').path());
-      });
-    };
-
-    api.search = function() {
-      return this.addFutureAction('$location.search()', function($window, $document, done) {
-        done(null, $document.injector().get('$location').search());
-      });
-    };
-
-    api.hash = function() {
-      return this.addFutureAction('$location.hash()', function($window, $document, done) {
-        done(null, $document.injector().get('$location').hash());
-      });
-    };
-
-    return api;
-  };
-
-  return function() {
-    return chain;
-  };
-});
-
-/**
- * Usage:
- *    expect(future).{matcher} where matcher is one of the matchers defined
- *    with angular.scenario.matcher
- *
- * ex. expect(binding("name")).toEqual("Elliott")
- */
-angular.scenario.dsl('expect', function() {
-  var chain = angular.extend({}, angular.scenario.matcher);
-
-  chain.not = function() {
-    this.inverse = true;
-    return chain;
-  };
-
-  return function(future) {
-    this.future = future;
-    return chain;
-  };
-});
-
-/**
- * Usage:
- *    using(selector, label) scopes the next DSL element selection
- *
- * ex.
- *   using('#foo', "'Foo' text field").input('bar')
- */
-angular.scenario.dsl('using', function() {
-  return function(selector, label) {
-    this.selector = _jQuery.trim((this.selector || '') + ' ' + selector);
-    if (angular.isString(label) && label.length) {
-      this.label = label + ' ( ' + this.selector + ' )';
-    } else {
-      this.label = this.selector;
-    }
-    return this.dsl;
-  };
-});
-
-/**
- * Usage:
- *    binding(name) returns the value of the first matching binding
- */
-angular.scenario.dsl('binding', function() {
-  return function(name) {
-    return this.addFutureAction("select binding '" + name + "'",
-      function($window, $document, done) {
-        var values = $document.elements().bindings($window.angular.element, name);
-        if (!values.length) {
-          return done("Binding selector '" + name + "' did not match.");
-        }
-        done(null, values[0]);
-    });
-  };
-});
-
-/**
- * Usage:
- *    input(name).enter(value) enters value in input with specified name
- *    input(name).check() checks checkbox
- *    input(name).select(value) selects the radio button with specified name/value
- *    input(name).val() returns the value of the input.
- */
-angular.scenario.dsl('input', function() {
-  var chain = {};
-  var supportInputEvent = 'oninput' in document.createElement('div') && !(msie && msie <= 11);
-
-  chain.enter = function(value, event) {
-    return this.addFutureAction("input '" + this.name + "' enter '" + value + "'",
-      function($window, $document, done) {
-        var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input');
-        input.val(value);
-        input.trigger(event || (supportInputEvent ? 'input' : 'change'));
-        done();
-    });
-  };
-
-  chain.check = function() {
-    return this.addFutureAction("checkbox '" + this.name + "' toggle",
-      function($window, $document, done) {
-        var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':checkbox');
-        input.trigger('click');
-        done();
-    });
-  };
-
-  chain.select = function(value) {
-    return this.addFutureAction("radio button '" + this.name + "' toggle '" + value + "'",
-      function($window, $document, done) {
-        var input = $document.
-          elements('[ng\\:model="$1"][value="$2"]', this.name, value).filter(':radio');
-        input.trigger('click');
-        done();
-    });
-  };
-
-  chain.val = function() {
-    return this.addFutureAction("return input val", function($window, $document, done) {
-      var input = $document.elements('[ng\\:model="$1"]', this.name).filter(':input');
-      done(null,input.val());
-    });
-  };
-
-  return function(name) {
-    this.name = name;
-    return chain;
-  };
-});
-
-
-/**
- * Usage:
- *    repeater('#products table', 'Product List').count() number of rows
- *    repeater('#products table', 'Product List').row(1) all bindings in row as an array
- *    repeater('#products table', 'Product List').column('product.name') all values across all rows
- *    in an array
- */
-angular.scenario.dsl('repeater', function() {
-  var chain = {};
-
-  chain.count = function() {
-    return this.addFutureAction("repeater '" + this.label + "' count",
-      function($window, $document, done) {
-        try {
-          done(null, $document.elements().length);
-        } catch (e) {
-          done(null, 0);
-        }
-    });
-  };
-
-  chain.column = function(binding) {
-    return this.addFutureAction("repeater '" + this.label + "' column '" + binding + "'",
-      function($window, $document, done) {
-        done(null, $document.elements().bindings($window.angular.element, binding));
-    });
-  };
-
-  chain.row = function(index) {
-    return this.addFutureAction("repeater '" + this.label + "' row '" + index + "'",
-      function($window, $document, done) {
-        var matches = $document.elements().slice(index, index + 1);
-        if (!matches.length)
-          return done('row ' + index + ' out of bounds');
-        done(null, matches.bindings($window.angular.element));
-    });
-  };
-
-  return function(selector, label) {
-    this.dsl.using(selector, label);
-    return chain;
-  };
-});
-
-/**
- * Usage:
- *    select(name).option('value') select one option
- *    select(name).options('value1', 'value2', ...) select options from a multi select
- */
-angular.scenario.dsl('select', function() {
-  var chain = {};
-
-  chain.option = function(value) {
-    return this.addFutureAction("select '" + this.name + "' option '" + value + "'",
-      function($window, $document, done) {
-        var select = $document.elements('select[ng\\:model="$1"]', this.name);
-        var option = select.find('option[value="' + value + '"]');
-        if (option.length) {
-          select.val(value);
-        } else {
-          option = select.find('option').filter(function() {
-            return _jQuery(this).text() === value;
-          });
-          if (!option.length) {
-            option = select.find('option:contains("' + value + '")');
-          }
-          if (option.length) {
-            select.val(option.val());
-          } else {
-              return done("option '" + value + "' not found");
-          }
-        }
-        select.trigger('change');
-        done();
-    });
-  };
-
-  chain.options = function() {
-    var values = arguments;
-    return this.addFutureAction("select '" + this.name + "' options '" + values + "'",
-      function($window, $document, done) {
-        var select = $document.elements('select[multiple][ng\\:model="$1"]', this.name);
-        select.val(values);
-        select.trigger('change');
-        done();
-    });
-  };
-
-  return function(name) {
-    this.name = name;
-    return chain;
-  };
-});
-
-/**
- * Usage:
- *    element(selector, label).count() get the number of elements that match selector
- *    element(selector, label).click() clicks an element
- *    element(selector, label).mouseover() mouseover an element
- *    element(selector, label).mousedown() mousedown an element
- *    element(selector, label).mouseup() mouseup an element
- *    element(selector, label).query(fn) executes fn(selectedElements, done)
- *    element(selector, label).{method}() gets the value (as defined by jQuery, ex. val)
- *    element(selector, label).{method}(value) sets the value (as defined by jQuery, ex. val)
- *    element(selector, label).{method}(key) gets the value (as defined by jQuery, ex. attr)
- *    element(selector, label).{method}(key, value) sets the value (as defined by jQuery, ex. attr)
- */
-angular.scenario.dsl('element', function() {
-  var KEY_VALUE_METHODS = ['attr', 'css', 'prop'];
-  var VALUE_METHODS = [
-    'val', 'text', 'html', 'height', 'innerHeight', 'outerHeight', 'width',
-    'innerWidth', 'outerWidth', 'position', 'scrollLeft', 'scrollTop', 'offset'
-  ];
-  var chain = {};
-
-  chain.count = function() {
-    return this.addFutureAction("element '" + this.label + "' count",
-      function($window, $document, done) {
-        try {
-          done(null, $document.elements().length);
-        } catch (e) {
-          done(null, 0);
-        }
-    });
-  };
-
-  chain.click = function() {
-    return this.addFutureAction("element '" + this.label + "' click",
-      function($window, $document, done) {
-        var elements = $document.elements();
-        var href = elements.attr('href');
-        var eventProcessDefault = elements.trigger('click')[0];
-
-        if (href && elements[0].nodeName.toLowerCase() === 'a' && eventProcessDefault) {
-          this.application.navigateTo(href, function() {
-            done();
-          }, done);
-        } else {
-          done();
-        }
-    });
-  };
-
-  chain.dblclick = function() {
-    return this.addFutureAction("element '" + this.label + "' dblclick",
-      function($window, $document, done) {
-        var elements = $document.elements();
-        var href = elements.attr('href');
-        var eventProcessDefault = elements.trigger('dblclick')[0];
-
-        if (href && elements[0].nodeName.toLowerCase() === 'a' && eventProcessDefault) {
-          this.application.navigateTo(href, function() {
-            done();
-          }, done);
-        } else {
-          done();
-        }
-    });
-  };
-
-  chain.mouseover = function() {
-    return this.addFutureAction("element '" + this.label + "' mouseover",
-      function($window, $document, done) {
-        var elements = $document.elements();
-        elements.trigger('mouseover');
-        done();
-    });
-  };
-
-  chain.mousedown = function() {
-      return this.addFutureAction("element '" + this.label + "' mousedown",
-        function($window, $document, done) {
-          var elements = $document.elements();
-          elements.trigger('mousedown');
-          done();
-      });
-    };
-
-  chain.mouseup = function() {
-      return this.addFutureAction("element '" + this.label + "' mouseup",
-        function($window, $document, done) {
-          var elements = $document.elements();
-          elements.trigger('mouseup');
-          done();
-      });
-    };
-
-  chain.query = function(fn) {
-    return this.addFutureAction('element ' + this.label + ' custom query',
-      function($window, $document, done) {
-        fn.call(this, $document.elements(), done);
-    });
-  };
-
-  angular.forEach(KEY_VALUE_METHODS, function(methodName) {
-    chain[methodName] = function(name, value) {
-      var args = arguments,
-          futureName = (args.length == 1)
-              ? "element '" + this.label + "' get " + methodName + " '" + name + "'"
-              : "element '" + this.label + "' set " + methodName + " '" + name + "' to " + "'" +
-                value + "'";
-
-      return this.addFutureAction(futureName, function($window, $document, done) {
-        var element = $document.elements();
-        done(null, element[methodName].apply(element, args));
-      });
-    };
-  });
-
-  angular.forEach(VALUE_METHODS, function(methodName) {
-    chain[methodName] = function(value) {
-      var args = arguments,
-          futureName = (args.length === 0)
-              ? "element '" + this.label + "' " + methodName
-              : "element '" + this.label + "' set " + methodName + " to '" + value + "'";
-
-      return this.addFutureAction(futureName, function($window, $document, done) {
-        var element = $document.elements();
-        done(null, element[methodName].apply(element, args));
-      });
-    };
-  });
-
-  return function(selector, label) {
-    this.dsl.using(selector, label);
-    return chain;
-  };
-});
-
-/**
- * Matchers for implementing specs. Follows the Jasmine spec conventions.
- */
-
-angular.scenario.matcher('toEqual', function(expected) {
-  return angular.equals(this.actual, expected);
-});
-
-angular.scenario.matcher('toBe', function(expected) {
-  return this.actual === expected;
-});
-
-angular.scenario.matcher('toBeDefined', function() {
-  return angular.isDefined(this.actual);
-});
-
-angular.scenario.matcher('toBeTruthy', function() {
-  return this.actual;
-});
-
-angular.scenario.matcher('toBeFalsy', function() {
-  return !this.actual;
-});
-
-angular.scenario.matcher('toMatch', function(expected) {
-  return new RegExp(expected).test(this.actual);
-});
-
-angular.scenario.matcher('toBeNull', function() {
-  return this.actual === null;
-});
-
-angular.scenario.matcher('toContain', function(expected) {
-  return includes(this.actual, expected);
-});
-
-angular.scenario.matcher('toBeLessThan', function(expected) {
-  return this.actual < expected;
-});
-
-angular.scenario.matcher('toBeGreaterThan', function(expected) {
-  return this.actual > expected;
-});
-
-/**
- * User Interface for the Scenario Runner.
- *
- * TODO(esprehn): This should be refactored now that ObjectModel exists
- *  to use angular bindings for the UI.
- */
-angular.scenario.output('html', function(context, runner, model) {
-  var specUiMap = {},
-      lastStepUiMap = {};
-
-  context.append(
-    '<div id="header">' +
-    '  <h1><span class="angular">AngularJS</span>: Scenario Test Runner</h1>' +
-    '  <ul id="status-legend" class="status-display">' +
-    '    <li class="status-error">0 Errors</li>' +
-    '    <li class="status-failure">0 Failures</li>' +
-    '    <li class="status-success">0 Passed</li>' +
-    '  </ul>' +
-    '</div>' +
-    '<div id="specs">' +
-    '  <div class="test-children"></div>' +
-    '</div>'
-  );
-
-  runner.on('InteractivePause', function(spec) {
-    var ui = lastStepUiMap[spec.id];
-    ui.find('.test-title').
-      html('paused... <a href="javascript:resume()">resume</a> when ready.');
-  });
-
-  runner.on('SpecBegin', function(spec) {
-    var ui = findContext(spec);
-    ui.find('> .tests').append(
-      '<li class="status-pending test-it"></li>'
-    );
-    ui = ui.find('> .tests li:last');
-    ui.append(
-      '<div class="test-info">' +
-      '  <p class="test-title">' +
-      '    <span class="timer-result"></span>' +
-      '    <span class="test-name"></span>' +
-      '  </p>' +
-      '</div>' +
-      '<div class="scrollpane">' +
-      '  <ol class="test-actions"></ol>' +
-      '</div>'
-    );
-    ui.find('> .test-info .test-name').text(spec.name);
-    ui.find('> .test-info').click(function() {
-      var scrollpane = ui.find('> .scrollpane');
-      var actions = scrollpane.find('> .test-actions');
-      var name = context.find('> .test-info .test-name');
-      if (actions.find(':visible').length) {
-        actions.hide();
-        name.removeClass('open').addClass('closed');
-      } else {
-        actions.show();
-        scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
-        name.removeClass('closed').addClass('open');
-      }
-    });
-
-    specUiMap[spec.id] = ui;
-  });
-
-  runner.on('SpecError', function(spec, error) {
-    var ui = specUiMap[spec.id];
-    ui.append('<pre></pre>');
-    ui.find('> pre').text(formatException(error));
-  });
-
-  runner.on('SpecEnd', function(spec) {
-    var ui = specUiMap[spec.id];
-    spec = model.getSpec(spec.id);
-    ui.removeClass('status-pending');
-    ui.addClass('status-' + spec.status);
-    ui.find("> .test-info .timer-result").text(spec.duration + "ms");
-    if (spec.status === 'success') {
-      ui.find('> .test-info .test-name').addClass('closed');
-      ui.find('> .scrollpane .test-actions').hide();
-    }
-    updateTotals(spec.status);
-  });
-
-  runner.on('StepBegin', function(spec, step) {
-    var ui = specUiMap[spec.id];
-    spec = model.getSpec(spec.id);
-    step = spec.getLastStep();
-    ui.find('> .scrollpane .test-actions').append('<li class="status-pending"></li>');
-    var stepUi = lastStepUiMap[spec.id] = ui.find('> .scrollpane .test-actions li:last');
-    stepUi.append(
-      '<div class="timer-result"></div>' +
-      '<div class="test-title"></div>'
-    );
-    stepUi.find('> .test-title').text(step.name);
-    var scrollpane = stepUi.parents('.scrollpane');
-    scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
-  });
-
-  runner.on('StepFailure', function(spec, step, error) {
-    var ui = lastStepUiMap[spec.id];
-    addError(ui, step.line, error);
-  });
-
-  runner.on('StepError', function(spec, step, error) {
-    var ui = lastStepUiMap[spec.id];
-    addError(ui, step.line, error);
-  });
-
-  runner.on('StepEnd', function(spec, step) {
-    var stepUi = lastStepUiMap[spec.id];
-    spec = model.getSpec(spec.id);
-    step = spec.getLastStep();
-    stepUi.find('.timer-result').text(step.duration + 'ms');
-    stepUi.removeClass('status-pending');
-    stepUi.addClass('status-' + step.status);
-    var scrollpane = specUiMap[spec.id].find('> .scrollpane');
-    scrollpane.attr('scrollTop', scrollpane.attr('scrollHeight'));
-  });
-
-  /**
-   * Finds the context of a spec block defined by the passed definition.
-   *
-   * @param {Object} The definition created by the Describe object.
-   */
-  function findContext(spec) {
-    var currentContext = context.find('#specs');
-    angular.forEach(model.getDefinitionPath(spec), function(defn) {
-      var id = 'describe-' + defn.id;
-      if (!context.find('#' + id).length) {
-        currentContext.find('> .test-children').append(
-          '<div class="test-describe" id="' + id + '">' +
-          '  <h2></h2>' +
-          '  <div class="test-children"></div>' +
-          '  <ul class="tests"></ul>' +
-          '</div>'
-        );
-        context.find('#' + id).find('> h2').text('describe: ' + defn.name);
-      }
-      currentContext = context.find('#' + id);
-    });
-    return context.find('#describe-' + spec.definition.id);
-  }
-
-  /**
-   * Updates the test counter for the status.
-   *
-   * @param {string} the status.
-   */
-  function updateTotals(status) {
-    var legend = context.find('#status-legend .status-' + status);
-    var parts = legend.text().split(' ');
-    var value = (parts[0] * 1) + 1;
-    legend.text(value + ' ' + parts[1]);
-  }
-
-  /**
-   * Add an error to a step.
-   *
-   * @param {Object} The JQuery wrapped context
-   * @param {function()} fn() that should return the file/line number of the error
-   * @param {Object} the error.
-   */
-  function addError(context, line, error) {
-    context.find('.test-title').append('<pre></pre>');
-    var message = _jQuery.trim(line() + '\n\n' + formatException(error));
-    context.find('.test-title pre:last').text(message);
-  }
-});
-
-/**
- * Generates JSON output into a context.
- */
-angular.scenario.output('json', function(context, runner, model) {
-  model.on('RunnerEnd', function() {
-    context.text(angular.toJson(model.value));
-  });
-});
-
-/**
- * Generates XML output into a context.
- */
-angular.scenario.output('xml', function(context, runner, model) {
-  var $ = function(args) {return new context.init(args);};
-  model.on('RunnerEnd', function() {
-    var scenario = $('<scenario></scenario>');
-    context.append(scenario);
-    serializeXml(scenario, model.value);
-  });
-
-  /**
-   * Convert the tree into XML.
-   *
-   * @param {Object} context jQuery context to add the XML to.
-   * @param {Object} tree node to serialize
-   */
-  function serializeXml(context, tree) {
-     angular.forEach(tree.children, function(child) {
-       var describeContext = $('<describe></describe>');
-       describeContext.attr('id', child.id);
-       describeContext.attr('name', child.name);
-       context.append(describeContext);
-       serializeXml(describeContext, child);
-     });
-     var its = $('<its></its>');
-     context.append(its);
-     angular.forEach(tree.specs, function(spec) {
-       var it = $('<it></it>');
-       it.attr('id', spec.id);
-       it.attr('name', spec.name);
-       it.attr('duration', spec.duration);
-       it.attr('status', spec.status);
-       its.append(it);
-       angular.forEach(spec.steps, function(step) {
-         var stepContext = $('<step></step>');
-         stepContext.attr('name', step.name);
-         stepContext.attr('duration', step.duration);
-         stepContext.attr('status', step.status);
-         it.append(stepContext);
-         if (step.error) {
-           var error = $('<error></error>');
-           stepContext.append(error);
-           error.text(formatException(step.error));
-         }
-       });
-     });
-   }
-});
-
-/**
- * Creates a global value $result with the result of the runner.
- */
-angular.scenario.output('object', function(context, runner, model) {
-  runner.$window.$result = model.value;
-});
-
-bindJQuery();
-publishExternalAPI(angular);
-
-var $runner = new angular.scenario.Runner(window),
-    scripts = document.getElementsByTagName('script'),
-    script = scripts[scripts.length - 1],
-    config = {};
-
-angular.forEach(script.attributes, function(attr) {
-  var match = attr.name.match(/ng[:\-](.*)/);
-  if (match) {
-    config[match[1]] = attr.value || true;
-  }
-});
-
-if (config.autotest) {
-  JQLite(document).ready(function() {
-    angular.scenario.setUpAndRun(config);
-  });
-}
-})(window, document);
-
-
-!window.angular.$$csp() && window.angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide:not(.ng-hide-animate) {\n  display: none !important;\n}\n\nng\\:form {\n  display: block;\n}\n</style>');
-!window.angular.$$csp() && window.angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n  font-family: Arial, sans-serif;\n  margin: 0;\n  font-size: 14px;\n}\n\n#system-error {\n  font-size: 1.5em;\n  text-align: center;\n}\n\n#json, #xml {\n  display: none;\n}\n\n#header {\n  position: fixed;\n  width: 100%;\n}\n\n#specs {\n  padding-top: 50px;\n}\n\n#header .angular {\n  font-family: Courier New, monospace;\n  font-weight: bold;\n}\n\n#header h1 {\n  font-weight: normal;\n  float: left;\n  font-size: 30px;\n  line-height: 30px;\n  margin: 0;\n  padding: 10px 10px;\n  height: 30px;\n}\n\n#application h2,\n#specs h2 {\n  margin: 0;\n  padding: 0.5em;\n  font-size: 1.1em;\n}\n\n#status-legend {\n  margin-top: 10px;\n  margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n  overflow: hidden;\n}\n\n#application {\n  margin: 10px;\n}\n\n#application iframe {\n  width: 100%;\n  height: 758px;\n}\n\n#application .popout {\n  float: right;\n}\n\n#application iframe {\n  border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n  list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n  margin: 0;\n  padding: 0;\n}\n\n.test-info {\n  margin-left: 1em;\n  margin-top: 0.5em;\n  border-radius: 8px 0 0 8px;\n  -webkit-border-radius: 8px 0 0 8px;\n  -moz-border-radius: 8px 0 0 8px;\n  cursor: pointer;\n}\n\n.test-info:hover .test-name {\n  text-decoration: underline;\n}\n\n.test-info .closed:before {\n  content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n  content: \'\\25be\\00A0\';\n  font-weight: bold;\n}\n\n.test-it ol {\n  margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n  float: right;\n}\n\n.status-display li {\n  padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n  display: inline-block;\n  margin: 0;\n  padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n  display: table-cell;\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n}\n\n.test-actions {\n  display: table;\n}\n\n.test-actions li {\n  display: table-row;\n}\n\n.timer-result {\n  width: 4em;\n  padding: 0 10px;\n  text-align: right;\n  font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n  clear: left;\n  color: black;\n  margin-left: 6em;\n}\n\n.test-describe {\n  padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n  margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n  content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n   max-height: 20em;\n   overflow: auto;\n}\n\n/** Colors */\n\n#header {\n  background-color: #F2C200;\n}\n\n#specs h2 {\n  border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n  background-color: #efefef;\n}\n\n#application {\n  border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n  border-left: 1px solid #BABAD1;\n  border-right: 1px solid #BABAD1;\n  border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n  border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n  background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n  background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n  background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n  background-color: black;\n  color: white;\n}\n\n.test-actions .status-success .test-title {\n  color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n  color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n  color: black;\n}\n\n.test-actions .timer-result {\n  color: #888;\n}\n</style>');
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-scenario/bower.json b/src/main/webapp/bower_components/angular-scenario/bower.json
deleted file mode 100644
index 9d43e06b..00000000
--- a/src/main/webapp/bower_components/angular-scenario/bower.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "angular-scenario",
-  "version": "1.3.11",
-  "main": "./angular-scenario.js",
-  "ignore": [],
-  "dependencies": {
-    "angular": "1.3.11"
-  }
-}
diff --git a/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter-config.js b/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter-config.js
deleted file mode 100644
index 5147ab34..00000000
--- a/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter-config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Configuration for jstd scenario adapter 
- */
-var jstdScenarioAdapter = {
-  relativeUrlPrefix: '/build/docs/'
-};
diff --git a/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter.js b/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter.js
deleted file mode 100644
index f65afd90..00000000
--- a/src/main/webapp/bower_components/angular-scenario/jstd-scenario-adapter.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * @license AngularJS v1.0.4
- * (c) 2010-2012 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window) {
-'use strict';
-
-/**
- * JSTestDriver adapter for angular scenario tests
- *
- * Example of jsTestDriver.conf for running scenario tests with JSTD:
-  <pre>
-    server: http://localhost:9877
-
-    load:
-      - lib/angular-scenario.js
-      - lib/jstd-scenario-adapter-config.js
-      - lib/jstd-scenario-adapter.js
-      # your test files go here #
-
-    proxy:
-     - {matcher: "/your-prefix/*", server: "http://localhost:8000/"}
-  </pre>
- *
- * For more information on how to configure jstd proxy, see {@link http://code.google.com/p/js-test-driver/wiki/Proxy}
- * Note the order of files - it's important !
- *
- * Example of jstd-scenario-adapter-config.js
-  <pre>
-    var jstdScenarioAdapter = {
-      relativeUrlPrefix: '/your-prefix/'
-    };
-  </pre>
- *
- * Whenever you use <code>browser().navigateTo('relativeUrl')</code> in your scenario test, the relativeUrlPrefix will be prepended.
- * You have to configure this to work together with JSTD proxy.
- *
- * Let's assume you are using the above configuration (jsTestDriver.conf and jstd-scenario-adapter-config.js):
- * Now, when you call <code>browser().navigateTo('index.html')</code> in your scenario test, the browser will open /your-prefix/index.html.
- * That matches the proxy, so JSTD will proxy this request to http://localhost:8000/index.html.
- */
-
-/**
- * Custom type of test case
- *
- * @const
- * @see jstestdriver.TestCaseInfo
- */
-var SCENARIO_TYPE = 'scenario';
-
-/**
- * Plugin for JSTestDriver
- * Connection point between scenario's jstd output and jstestdriver.
- *
- * @see jstestdriver.PluginRegistrar
- */
-function JstdPlugin() {
-  var nop = function() {};
-
-  this.reportResult = nop;
-  this.reportEnd = nop;
-  this.runScenario = nop;
-
-  this.name = 'Angular Scenario Adapter';
-
-  /**
-   * Called for each JSTD TestCase
-   *
-   * Handles only SCENARIO_TYPE test cases. There should be only one fake TestCase.
-   * Runs all scenario tests (under one fake TestCase) and report all results to JSTD.
-   *
-   * @param {jstestdriver.TestRunConfiguration} configuration
-   * @param {Function} onTestDone
-   * @param {Function} onAllTestsComplete
-   * @returns {boolean} True if this type of test is handled by this plugin, false otherwise
-   */
-  this.runTestConfiguration = function(configuration, onTestDone, onAllTestsComplete) {
-    if (configuration.getTestCaseInfo().getType() != SCENARIO_TYPE) return false;
-
-    this.reportResult = onTestDone;
-    this.reportEnd = onAllTestsComplete;
-    this.runScenario();
-
-    return true;
-  };
-
-  this.getTestRunsConfigurationFor = function(testCaseInfos, expressions, testRunsConfiguration) {
-    testRunsConfiguration.push(
-        new jstestdriver.TestRunConfiguration(
-            new jstestdriver.TestCaseInfo(
-                'Angular Scenario Tests', function() {}, SCENARIO_TYPE), []));
-
-    return true;
-  };
-}
-
-/**
- * Singleton instance of the plugin
- * Accessed using closure by:
- *  - jstd output (reports to this plugin)
- *  - initScenarioAdapter (register the plugin to jstd)
- */
-var plugin = new JstdPlugin();
-
-/**
- * Initialise scenario jstd-adapter
- * (only if jstestdriver is defined)
- *
- * @param {Object} jstestdriver Undefined when run from browser (without jstd)
- * @param {Function} initScenarioAndRun Function that inits scenario and runs all the tests
- * @param {Object=} config Configuration object, supported properties:
- *  - relativeUrlPrefix: prefix for all relative links when navigateTo()
- */
-function initScenarioAdapter(jstestdriver, initScenarioAndRun, config) {
-  if (jstestdriver) {
-    // create and register ScenarioPlugin
-    jstestdriver.pluginRegistrar.register(plugin);
-    plugin.runScenario = initScenarioAndRun;
-
-    /**
-     * HACK (angular.scenario.Application.navigateTo)
-     *
-     * We need to navigate to relative urls when running from browser (without JSTD),
-     * because we want to allow running scenario tests without creating its own virtual host.
-     * For example: http://angular.local/build/docs/docs-scenario.html
-     *
-     * On the other hand, when running with JSTD, we need to navigate to absolute urls,
-     * because of JSTD proxy. (proxy, because of same domain policy)
-     *
-     * So this hack is applied only if running with JSTD and change all relative urls to absolute.
-     */
-    var appProto = angular.scenario.Application.prototype,
-        navigateTo = appProto.navigateTo,
-        relativeUrlPrefix = config && config.relativeUrlPrefix || '/';
-
-    appProto.navigateTo = function(url, loadFn, errorFn) {
-      if (url.charAt(0) != '/' && url.charAt(0) != '#' &&
-          url != 'about:blank' && !url.match(/^https?/)) {
-        url = relativeUrlPrefix + url;
-      }
-
-      return navigateTo.call(this, url, loadFn, errorFn);
-    };
-  }
-}
-
-/**
- * Builds proper TestResult object from given model spec
- *
- * TODO(vojta) report error details
- *
- * @param {angular.scenario.ObjectModel.Spec} spec
- * @returns {jstestdriver.TestResult}
- */
-function createTestResultFromSpec(spec) {
-  var map = {
-    success: 'PASSED',
-    error:   'ERROR',
-    failure: 'FAILED'
-  };
-
-  return new jstestdriver.TestResult(
-    spec.fullDefinitionName,
-    spec.name,
-    jstestdriver.TestResult.RESULT[map[spec.status]],
-    spec.error || '',
-    spec.line || '',
-    spec.duration);
-}
-
-/**
- * Generates JSTD output (jstestdriver.TestResult)
- */
-angular.scenario.output('jstd', function(context, runner, model) {
-  model.on('SpecEnd', function(spec) {
-    plugin.reportResult(createTestResultFromSpec(spec));
-  });
-
-  model.on('RunnerEnd', function() {
-    plugin.reportEnd();
-  });
-});
-initScenarioAdapter(window.jstestdriver, angular.scenario.setUpAndRun, window.jstdScenarioAdapter);
-})(window);
diff --git a/src/main/webapp/bower_components/angular-scenario/package.json b/src/main/webapp/bower_components/angular-scenario/package.json
deleted file mode 100644
index c11ff383..00000000
--- a/src/main/webapp/bower_components/angular-scenario/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "name": "angular-scenario",
-  "version": "1.3.11",
-  "description": "AngularJS module for end-to-end testing",
-  "main": "angular-scenario.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.js.git"
-  },
-  "keywords": [
-    "angular",
-    "framework",
-    "browser",
-    "testing",
-    "client-side"
-  ],
-  "author": "Angular Core Team <angular-core+npm@google.com>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular.js/issues"
-  },
-  "homepage": "http://angularjs.org"
-}
diff --git a/src/main/webapp/bower_components/angular-ui-router/.bower.json b/src/main/webapp/bower_components/angular-ui-router/.bower.json
deleted file mode 100644
index 64d84e8d..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/.bower.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-  "name": "angular-ui-router",
-  "version": "0.2.15",
-  "main": "./release/angular-ui-router.js",
-  "dependencies": {
-    "angular": ">= 1.0.8"
-  },
-  "ignore": [
-    "**/.*",
-    "node_modules",
-    "bower_components",
-    "component.json",
-    "package.json",
-    "lib",
-    "config",
-    "sample",
-    "test",
-    "tests",
-    "ngdoc_assets",
-    "Gruntfile.js",
-    "files.js"
-  ],
-  "homepage": "https://github.com/angular-ui/ui-router",
-  "_release": "0.2.15",
-  "_resolution": {
-    "type": "version",
-    "tag": "0.2.15",
-    "commit": "805e69bae319e922e4d3265b7ef565058aaff850"
-  },
-  "_source": "git://github.com/angular-ui/ui-router.git",
-  "_target": "0.2.15",
-  "_originalSource": "angular-ui-router"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-ui-router/CHANGELOG.md b/src/main/webapp/bower_components/angular-ui-router/CHANGELOG.md
deleted file mode 100644
index 23b59d3a..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/CHANGELOG.md
+++ /dev/null
@@ -1,228 +0,0 @@
-<a name="0.2.14"></a>
-### 0.2.14 (2015-04-23)
-
-
-#### Bug Fixes
-
-* **$StateRefDirective:** resolve missing support for svg anchor elements #1667 ([0149a7bb](https://github.com/angular-ui/ui-router/commit/0149a7bb38b7af99388a1ad7cc9909a7b7c4439d))
-* **$urlMatcherFactory:**
-  * regex params should respect case-sensitivity ([1e10519f](https://github.com/angular-ui/ui-router/commit/1e10519f3be6bbf0cefdcce623cd2ade06e649e5), closes [#1671](https://github.com/angular-ui/ui-router/issues/1671))
-  * unquote all dashes from array params ([06664d33](https://github.com/angular-ui/ui-router/commit/06664d330f882390655dcfa83e10276110d0d0fa))
-  * add Type.$normalize function ([b0c6aa23](https://github.com/angular-ui/ui-router/commit/b0c6aa2350fdd3ce8483144774adc12f5a72b7e9))
-  * make optional params regex grouping optional ([06f73794](https://github.com/angular-ui/ui-router/commit/06f737945e83e668d09cfc3bcffd04a500ff1963), closes [#1576](https://github.com/angular-ui/ui-router/issues/1576))
-* **$state:** allow about.*.** glob patterns ([e39b27a2](https://github.com/angular-ui/ui-router/commit/e39b27a2cb7d88525c446a041f9fbf1553202010))
-* **uiSref:**
-  * use Object's toString instead of Window's toString ([2aa7f4d1](https://github.com/angular-ui/ui-router/commit/2aa7f4d139dbd5b9fcc4afdcf2ab6642c87f5671))
-  * add absolute to allowed transition options ([ae1b3c4e](https://github.com/angular-ui/ui-router/commit/ae1b3c4eedc37983400d830895afb50457c63af4))
-* **uiSrefActive:** Apply active classes on lazy loaded states ([f0ddbe7b](https://github.com/angular-ui/ui-router/commit/f0ddbe7b4a91daf279c3b7d0cee732bb1f3be5b4))
-* **uiView:** add `$element` to locals for view controller ([db68914c](https://github.com/angular-ui/ui-router/commit/db68914cd6c821e7dec8155bd33142a3a97f5453))
-
-
-#### Features
-
-* **$state:**
-  * support URLs with #fragments ([3da0a170](https://github.com/angular-ui/ui-router/commit/3da0a17069e27598c0f9d9164e104dd5ce05cdc6))
-  * inject resolve params into controllerProvider ([b380c223](https://github.com/angular-ui/ui-router/commit/b380c223fe12e2fde7582c0d6b1ed7b15a23579b), closes [#1131](https://github.com/angular-ui/ui-router/issues/1131))
-  * added 'state' to state reload method (feat no.1612)  - modiefied options.reload  ([b8f04575](https://github.com/angular-ui/ui-router/commit/b8f04575a8557035c1858c4d5c8dbde3e1855aaa))
-  * broadcast $stateChangeCancel event when event.preventDefault() is called in $sta ([ecefb758](https://github.com/angular-ui/ui-router/commit/ecefb758cb445e41620b62a272aafa3638613d7a))
-* **$uiViewScroll:** change function to return promise ([c2a9a311](https://github.com/angular-ui/ui-router/commit/c2a9a311388bb212e5a2e820536d1d739f829ccd), closes [#1702](https://github.com/angular-ui/ui-router/issues/1702))
-* **uiSrefActive:** Added support for multiple nested uiSref directives ([b1844948](https://github.com/angular-ui/ui-router/commit/b18449481d152b50705abfce2493a444eb059fa5))
-
-
-<a name="0.2.13"></a>
-### 0.2.13 (2014-11-20)
-
-This release primarily fixes issues reported against 0.2.12
-
-#### Bug Fixes
-
-* **$state:** fix $state.includes/.is to apply param types before comparisions fix(uiSref): ma ([19715d15](https://github.com/angular-ui/ui-router/commit/19715d15e3cbfff724519e9febedd05b49c75baa), closes [#1513](https://github.com/angular-ui/ui-router/issues/1513))
-  * Avoid re-synchronizing from url after .transitionTo ([b267ecd3](https://github.com/angular-ui/ui-router/commit/b267ecd348e5c415233573ef95ebdbd051875f52), closes [#1573](https://github.com/angular-ui/ui-router/issues/1573))
-* **$urlMatcherFactory:**
-  * Built-in date type uses local time zone ([d726bedc](https://github.com/angular-ui/ui-router/commit/d726bedcbb5f70a5660addf43fd52ec730790293))
-  * make date type fn check .is before running ([aa94ce3b](https://github.com/angular-ui/ui-router/commit/aa94ce3b86632ad05301530a2213099da73a3dc0), closes [#1564](https://github.com/angular-ui/ui-router/issues/1564))
-  * early binding of array handler bypasses type resolution ([ada4bc27](https://github.com/angular-ui/ui-router/commit/ada4bc27df5eff3ba3ab0de94a09bd91b0f7a28c))
-  * add 'any' Type for non-encoding non-url params ([3bfd75ab](https://github.com/angular-ui/ui-router/commit/3bfd75ab445ee2f1dd55275465059ed116b10b27), closes [#1562](https://github.com/angular-ui/ui-router/issues/1562))
-  * fix encoding slashes in params ([0c983a08](https://github.com/angular-ui/ui-router/commit/0c983a08e2947f999683571477debd73038e95cf), closes [#1119](https://github.com/angular-ui/ui-router/issues/1119))
-  * fix mixed path/query params ordering problem ([a479fbd0](https://github.com/angular-ui/ui-router/commit/a479fbd0b8eb393a94320973e5b9a62d83912ee2), closes [#1543](https://github.com/angular-ui/ui-router/issues/1543))
-* **ArrayType:**
-  * specify empty array mapping corner case ([74aa6091](https://github.com/angular-ui/ui-router/commit/74aa60917e996b0b4e27bbb4eb88c3c03832021d), closes [#1511](https://github.com/angular-ui/ui-router/issues/1511))
-  * fix .equals for array types ([5e6783b7](https://github.com/angular-ui/ui-router/commit/5e6783b77af9a90ddff154f990b43dbb17eeda6e), closes [#1538](https://github.com/angular-ui/ui-router/issues/1538))
-* **Param:** fix default value shorthand declaration ([831d812a](https://github.com/angular-ui/ui-router/commit/831d812a524524c71f0ee1c9afaf0487a5a66230), closes [#1554](https://github.com/angular-ui/ui-router/issues/1554))
-* **common:** fixed the _.filter clone to not create sparse arrays ([750f5cf5](https://github.com/angular-ui/ui-router/commit/750f5cf5fd91f9ada96f39e50d39aceb2caf22b6), closes [#1563](https://github.com/angular-ui/ui-router/issues/1563))
-* **ie8:** fix calls to indexOf and filter ([dcb31b84](https://github.com/angular-ui/ui-router/commit/dcb31b843391b3e61dee4de13f368c109541813e), closes [#1556](https://github.com/angular-ui/ui-router/issues/1556))
-
-
-#### Features
-
-* add json parameter Type ([027f1fcf](https://github.com/angular-ui/ui-router/commit/027f1fcf9c0916cea651e88981345da6f9ff214a))
-
-
-<a name="0.2.12"></a>
-### 0.2.12 (2014-11-13)
-
-#### Bug Fixes
-
-* **$resolve:** use resolve fn result, not parent resolved value of same name ([67f5e00c](https://github.com/angular-ui/ui-router/commit/67f5e00cc9aa006ce3fe6cde9dff261c28eab70a), closes [#1317], [#1353])
-* **$state:**
-  * populate default params in .transitionTo. ([3f60fbe6](https://github.com/angular-ui/ui-router/commit/3f60fbe6d65ebeca8d97952c05aa1d269f1b7ba1), closes [#1396])
-  * reload() now reinvokes controllers ([73443420](https://github.com/angular-ui/ui-router/commit/7344342018847902594dc1fc62d30a5c30f01763), closes [#582])
-  * do not emit $viewContentLoading if notify: false ([74255feb](https://github.com/angular-ui/ui-router/commit/74255febdf48ae082a02ca1e735165f2c369a463), closes [#1387](https://github.com/angular-ui/ui-router/issues/1387))
-  * register states at config-time ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a))
-  * handle parent.name when parent is obj ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a))
-* **$urlMatcherFactory:**
-  * register types at config ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a), closes [#1476])
-  * made path params default value "" for backwards compat ([8f998e71](https://github.com/angular-ui/ui-router/commit/8f998e71e43a0b31293331c981f5db0f0097b8ba))
-  * Pre-replace certain param values for better mapping ([6374a3e2](https://github.com/angular-ui/ui-router/commit/6374a3e29ab932014a7c77d2e1ab884cc841a2e3))
-  * fixed ParamSet.$$keys() ordering ([9136fecb](https://github.com/angular-ui/ui-router/commit/9136fecbc2bfd4fda748a9914f0225a46c933860))
-  * empty string policy now respected in Param.value() ([db12c85c](https://github.com/angular-ui/ui-router/commit/db12c85c16f2d105415f9bbbdeb11863f64728e0))
-  * "string" type now encodes/decodes slashes ([3045e415](https://github.com/angular-ui/ui-router/commit/3045e41577a8b8b8afc6039f42adddf5f3c061ec), closes [#1119])
-  * allow arrays in both path and query params ([fdd2f2c1](https://github.com/angular-ui/ui-router/commit/fdd2f2c191c4a67c874fdb9ec9a34f8dde9ad180), closes [#1073], [#1045], [#1486], [#1394])
-  * typed params in search ([8d4cab69](https://github.com/angular-ui/ui-router/commit/8d4cab69dd67058e1a716892cc37b7d80a57037f), closes [#1488](https://github.com/angular-ui/ui-router/issues/1488))
-  * no longer generate unroutable urls ([cb9fd9d8](https://github.com/angular-ui/ui-router/commit/cb9fd9d8943cb26c7223f6990db29c82ae8740f8), closes [#1487](https://github.com/angular-ui/ui-router/issues/1487))
-  * handle optional parameter followed by required parameter in url format. ([efc72106](https://github.com/angular-ui/ui-router/commit/efc72106ddcc4774b48ea176a505ef9e95193b41))
-  * default to parameter string coersion. ([13a468a7](https://github.com/angular-ui/ui-router/commit/13a468a7d54c2fb0751b94c0c1841d580b71e6dc), closes [#1414](https://github.com/angular-ui/ui-router/issues/1414))
-  * concat respects strictMode/caseInsensitive ([dd72e103](https://github.com/angular-ui/ui-router/commit/dd72e103edb342d9cf802816fe127e1bbd68fd5f), closes [#1395])
-* **ui-sref:**
-  * Allow sref state options to take a scope object ([b5f7b596](https://github.com/angular-ui/ui-router/commit/b5f7b59692ce4933e2d63eb5df3f50a4ba68ccc0))
-  * replace raw href modification with attrs. ([08c96782](https://github.com/angular-ui/ui-router/commit/08c96782faf881b0c7ab00afc233ee6729548fa0))
-  * nagivate to state when url is "" fix($state.href): generate href for state with  ([656b5aab](https://github.com/angular-ui/ui-router/commit/656b5aab906e5749db9b5a080c6a83b95f50fd91), closes [#1363](https://github.com/angular-ui/ui-router/issues/1363))
-  * Check that state is defined in isMatch() ([92aebc75](https://github.com/angular-ui/ui-router/commit/92aebc7520f88babdc6e266536086e07263514c3), closes [#1314](https://github.com/angular-ui/ui-router/issues/1314), [#1332](https://github.com/angular-ui/ui-router/issues/1332))
-* **uiView:**
-  * allow inteprolated ui-view names ([81f6a19a](https://github.com/angular-ui/ui-router/commit/81f6a19a432dac9198fd33243855bfd3b4fea8c0), closes [#1324](https://github.com/angular-ui/ui-router/issues/1324))
-  * Made anim work with angular 1.3 ([c3bb7ad9](https://github.com/angular-ui/ui-router/commit/c3bb7ad903da1e1f3c91019cfd255be8489ff4ef), closes [#1367](https://github.com/angular-ui/ui-router/issues/1367), [#1345](https://github.com/angular-ui/ui-router/issues/1345))
-* **urlRouter:** html5Mode accepts an object from angular v1.3.0-rc.3 ([7fea1e9d](https://github.com/angular-ui/ui-router/commit/7fea1e9d0d8c6e09cc6c895ecb93d4221e9adf48))
-* **stateFilters:** mark state filters as stateful. ([a00b353e](https://github.com/angular-ui/ui-router/commit/a00b353e3036f64a81245c4e7898646ba218f833), closes [#1479])
-* **ui-router:** re-add IE8 compatibility for map/filter/keys ([8ce69d9f](https://github.com/angular-ui/ui-router/commit/8ce69d9f7c886888ab53eca7e53536f36b428aae), closes [#1518], [#1383])
-* **package:** point 'main' to a valid filename ([ac903350](https://github.com/angular-ui/ui-router/commit/ac9033501debb63364539d91fbf3a0cba4579f8e))
-* **travis:** make CI build faster ([0531de05](https://github.com/angular-ui/ui-router/commit/0531de052e414a8d839fbb4e7635e923e94865b3))
-
-
-#### Features
-
-##### Default and Typed params
-
-This release includes a lot of bug fixes around default/optional and typed parameters.  As such, 0.2.12 is the first release where we recommend those features be used.
-
-* **$state:**
-  * add state params validation ([b1379e6a](https://github.com/angular-ui/ui-router/commit/b1379e6a4d38f7ed7436e05873932d7c279af578), closes [#1433](https://github.com/angular-ui/ui-router/issues/1433))
-  * is/includes/get work on relative stateOrName ([232e94b3](https://github.com/angular-ui/ui-router/commit/232e94b3c2ca2c764bb9510046e4b61690c87852))
-  * .reload() returns state transition promise ([639e0565](https://github.com/angular-ui/ui-router/commit/639e0565dece9d5544cc93b3eee6e11c99bd7373))
-* **$templateFactory:** request templateURL as text/html ([ccd60769](https://github.com/angular-ui/ui-router/commit/ccd6076904a4b801d77b47f6e2de4c06ce9962f8), closes [#1287])
-* **$urlMatcherFactory:** Made a Params and ParamSet class ([0cc1e6cc](https://github.com/angular-ui/ui-router/commit/0cc1e6cc461a4640618e2bb594566551c54834e2))
-
-
-
-<a name="0.2.11"></a>
-### 0.2.11 (2014-08-26)
-
-
-#### Bug Fixes
-
-* **$resolve:** Resolves only inherit from immediate parent fixes #702 ([df34e20c](https://github.com/angular-ui/ui-router/commit/df34e20c576299e7a3c8bd4ebc68d42341c0ace9))
-* **$state:**
-  * change $state.href default options.inherit to true ([deea695f](https://github.com/angular-ui/ui-router/commit/deea695f5cacc55de351ab985144fd233c02a769))
-  * sanity-check state lookups ([456fd5ae](https://github.com/angular-ui/ui-router/commit/456fd5aec9ea507518927bfabd62b4afad4cf714), closes [#980](https://github.com/angular-ui/ui-router/issues/980))
-  * didn't comply to inherit parameter ([09836781](https://github.com/angular-ui/ui-router/commit/09836781f126c1c485b06551eb9cfd4fa0f45c35))
-  * allow view content loading broadcast ([7b78edee](https://github.com/angular-ui/ui-router/commit/7b78edeeb52a74abf4d3f00f79534033d5a08d1a))
-* **$urlMatcherFactory:**
-  * detect injected functions ([91f75ae6](https://github.com/angular-ui/ui-router/commit/91f75ae66c4d129f6f69e53bd547594e9661f5d5))
-  * syntax ([1ebed370](https://github.com/angular-ui/ui-router/commit/1ebed37069bae8614d41541d56521f5c45f703f3))
-* **UrlMatcher:**
-  * query param function defaults ([f9c20530](https://github.com/angular-ui/ui-router/commit/f9c205304f10d8a4ebe7efe9025e642016479a51))
-  * don't decode default values ([63607bdb](https://github.com/angular-ui/ui-router/commit/63607bdbbcb432d3fb37856a1cb3da0cd496804e))
-* **travis:** update Node version to fix build ([d6b95ef2](https://github.com/angular-ui/ui-router/commit/d6b95ef23d9dacb4eba08897f5190a0bcddb3a48))
-* **uiSref:**
-  * Generate an href for states with a blank url. closes #1293 ([691745b1](https://github.com/angular-ui/ui-router/commit/691745b12fa05d3700dd28f0c8d25f8a105074ad))
-  * should inherit params by default ([b973dad1](https://github.com/angular-ui/ui-router/commit/b973dad155ad09a7975e1476bd096f7b2c758eeb))
-  * cancel transition if preventDefault() has been called ([2e6d9167](https://github.com/angular-ui/ui-router/commit/2e6d9167d3afbfbca6427e53e012f94fb5fb8022))
-* **uiView:** Fixed infinite loop when is called .go() from a controller. ([e13988b8](https://github.com/angular-ui/ui-router/commit/e13988b8cd6231d75c78876ee9d012cc87f4a8d9), closes [#1194](https://github.com/angular-ui/ui-router/issues/1194))
-* **docs:**
-  * Fixed link to milestones ([6c0ae500](https://github.com/angular-ui/ui-router/commit/6c0ae500cc238ea9fc95adcc15415c55fc9e1f33))
-  * fix bug in decorator example ([4bd00af5](https://github.com/angular-ui/ui-router/commit/4bd00af50b8b88a49d1545a76290731cb8e0feb1))
-  * Removed an incorrect semi-colon ([af97cef8](https://github.com/angular-ui/ui-router/commit/af97cef8b967f2e32177e539ef41450dca131a7d))
-  * Explain return value of rule as function ([5e887890](https://github.com/angular-ui/ui-router/commit/5e8878900a6ffe59a81aed531a3925e34a297377))
-
-
-#### Features
-
-* **$state:**
-  * allow parameters to pass unharmed ([8939d057](https://github.com/angular-ui/ui-router/commit/8939d0572ab1316e458ef016317ecff53131a822))
-    * **BREAKING CHANGE**: state parameters are no longer automatically coerced to strings, and unspecified parameter values are now set to undefined rather than null.
-  * allow prevent syncUrl on failure ([753060b9](https://github.com/angular-ui/ui-router/commit/753060b910d5d2da600a6fa0757976e401c33172))
-* **typescript:** Add typescript definitions for component builds ([521ceb3f](https://github.com/angular-ui/ui-router/commit/521ceb3fd7850646422f411921e21ce5e7d82e0f))
-* **uiSref:** extend syntax for ui-sref ([71cad3d6](https://github.com/angular-ui/ui-router/commit/71cad3d636508b5a9fe004775ad1f1adc0c80c3e))
-* **uiSrefActive:** 
-  * Also activate for child states. ([bf163ad6](https://github.com/angular-ui/ui-router/commit/bf163ad6ce176ce28792696c8302d7cdf5c05a01), closes [#818](https://github.com/angular-ui/ui-router/issues/818))
-    * **BREAKING CHANGE** Since ui-sref-active now activates even when child states are active you may need to swap out your ui-sref-active with ui-sref-active-eq, thought typically we think devs want the auto inheritance.
-
-  * uiSrefActiveEq: new directive with old ui-sref-active behavior
-* **$urlRouter:**
-  * defer URL change interception ([c72d8ce1](https://github.com/angular-ui/ui-router/commit/c72d8ce11916d0ac22c81b409c9e61d7048554d7))
-  * force URLs to have valid params ([d48505cd](https://github.com/angular-ui/ui-router/commit/d48505cd328d83e39d5706e085ba319715f999a6))
-  * abstract $location handling ([08b4636b](https://github.com/angular-ui/ui-router/commit/08b4636b294611f08db35f00641eb5211686fb50))
-* **$urlMatcherFactory:**
-  * fail on bad parameters ([d8f124c1](https://github.com/angular-ui/ui-router/commit/d8f124c10d00c7e5dde88c602d966db261aea221))
-  * date type support ([b7f074ff](https://github.com/angular-ui/ui-router/commit/b7f074ff65ca150a3cdbda4d5ad6cb17107300eb))
-  * implement type support ([450b1f0e](https://github.com/angular-ui/ui-router/commit/450b1f0e8e03c738174ff967f688b9a6373290f4))
-* **UrlMatcher:**
-  * handle query string arrays ([9cf764ef](https://github.com/angular-ui/ui-router/commit/9cf764efab45fa9309368688d535ddf6e96d6449), closes [#373](https://github.com/angular-ui/ui-router/issues/373))
-  * injectable functions as defaults ([00966ecd](https://github.com/angular-ui/ui-router/commit/00966ecd91fb745846039160cab707bfca8b3bec))
-  * default values & type decoding for query params ([a472b301](https://github.com/angular-ui/ui-router/commit/a472b301389fbe84d1c1fa9f24852b492a569d11))
-  * allow shorthand definitions ([5b724304](https://github.com/angular-ui/ui-router/commit/5b7243049793505e44b6608ea09878c37c95b1f5))
-  * validates whole interface ([32b27db1](https://github.com/angular-ui/ui-router/commit/32b27db173722e9194ef1d5c0ea7d93f25a98d11))
-  * implement non-strict matching ([a3e21366](https://github.com/angular-ui/ui-router/commit/a3e21366bee0475c9795a1ec76f70eec41c5b4e3))
-  * add per-param config support ([07b3029f](https://github.com/angular-ui/ui-router/commit/07b3029f4d409cf955780113df92e36401b47580))
-    * **BREAKING CHANGE**: the `params` option in state configurations must now be an object keyed by parameter name.
-
-### 0.2.10 (2014-03-12)
-
-
-#### Bug Fixes
-
-* **$state:** use $browser.baseHref() when generating urls with .href() ([cbcc8488](https://github.com/angular-ui/ui-router/commit/cbcc84887d6b6d35258adabb97c714cd9c1e272d))
-* **bower.json:** JS files should not be ignored ([ccdab193](https://github.com/angular-ui/ui-router/commit/ccdab193315f304eb3be5f5b97c47a926c79263e))
-* **dev:** karma:background task is missing, can't run grunt:dev. ([d9f7b898](https://github.com/angular-ui/ui-router/commit/d9f7b898e8e3abb8c846b0faa16a382913d7b22b))
-* **sample:** Contacts menu button not staying active when navigating to detail states. Need t ([2fcb8443](https://github.com/angular-ui/ui-router/commit/2fcb84437cb43ade12682a92b764f13cac77dfe7))
-* **uiSref:** support mock-clicks/events with no data ([717d3ff7](https://github.com/angular-ui/ui-router/commit/717d3ff7d0ba72d239892dee562b401cdf90e418))
-* **uiView:**
-  * Do NOT autoscroll when autoscroll attr is missing ([affe5bd7](https://github.com/angular-ui/ui-router/commit/affe5bd785cdc3f02b7a9f64a52e3900386ec3a0), closes [#807](https://github.com/angular-ui/ui-router/issues/807))
-  * Refactoring uiView directive to copy ngView logic ([548fab6a](https://github.com/angular-ui/ui-router/commit/548fab6ab9debc9904c5865c8bc68b4fc3271dd0), closes [#857](https://github.com/angular-ui/ui-router/issues/857), [#552](https://github.com/angular-ui/ui-router/issues/552))
-
-
-#### Features
-
-* **$state:** includes() allows glob patterns for state matching. ([2d5f6b37](https://github.com/angular-ui/ui-router/commit/2d5f6b37191a3135f4a6d9e8f344c54edcdc065b))
-* **UrlMatcher:** Add support for case insensitive url matching ([642d5247](https://github.com/angular-ui/ui-router/commit/642d524799f604811e680331002feec7199a1fb5))
-* **uiSref:** add support for transition options ([2ed7a728](https://github.com/angular-ui/ui-router/commit/2ed7a728cee6854b38501fbc1df6139d3de5b28a))
-* **uiView:** add controllerAs config with function ([1ee7334a](https://github.com/angular-ui/ui-router/commit/1ee7334a73efeccc9b95340e315cdfd59944762d))
-
-
-### 0.2.9 (2014-01-17)
-
-
-This release is identical to 0.2.8. 0.2.8 was re-tagged in git to fix a problem with bower.
-
-
-### 0.2.8 (2014-01-16)
-
-
-#### Bug Fixes
-
-* **$state:** allow null to be passed as 'params' param ([094dc30e](https://github.com/angular-ui/ui-router/commit/094dc30e883e1bd14e50a475553bafeaade3b178))
-* **$state.go:** param inheritance shouldn't inherit from siblings ([aea872e0](https://github.com/angular-ui/ui-router/commit/aea872e0b983cb433436ce5875df10c838fccedb))
-* **bower.json:** fixes bower.json ([eed3cc4d](https://github.com/angular-ui/ui-router/commit/eed3cc4d4dfef1d3ef84b9fd063127538ebf59d3))
-* **uiSrefActive:** annotate controller injection ([85921422](https://github.com/angular-ui/ui-router/commit/85921422ff7fb0effed358136426d616cce3d583), closes [#671](https://github.com/angular-ui/ui-router/issues/671))
-* **uiView:**
-  * autoscroll tests pass on 1.2.4 & 1.1.5 ([86eacac0](https://github.com/angular-ui/ui-router/commit/86eacac09ca5e9000bd3b9c7ba6e2cc95d883a3a))
-  * don't animate initial load ([83b6634d](https://github.com/angular-ui/ui-router/commit/83b6634d27942ca74766b2b1244a7fc52c5643d9))
-  * test pass against 1.0.8 and 1.2.4 ([a402415a](https://github.com/angular-ui/ui-router/commit/a402415a2a28b360c43b9fe8f4f54c540f6c33de))
-  * it should autoscroll when expr is missing. ([8bb9e27a](https://github.com/angular-ui/ui-router/commit/8bb9e27a2986725f45daf44c4c9f846385095aff))
-
-
-#### Features
-
-* **uiSref:** add target attribute behaviour ([c12bf9a5](https://github.com/angular-ui/ui-router/commit/c12bf9a520d30d70294e3d82de7661900f8e394e))
-* **uiView:**
-  * merge autoscroll expression test. ([b89e0f87](https://github.com/angular-ui/ui-router/commit/b89e0f871d5cc35c10925ede986c10684d5c9252))
-  * cache and test autoscroll expression ([ee262282](https://github.com/angular-ui/ui-router/commit/ee2622828c2ce83807f006a459ac4e11406d9258))
diff --git a/src/main/webapp/bower_components/angular-ui-router/CONTRIBUTING.md b/src/main/webapp/bower_components/angular-ui-router/CONTRIBUTING.md
deleted file mode 100644
index 63829a54..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/CONTRIBUTING.md
+++ /dev/null
@@ -1,65 +0,0 @@
-
-# Report an Issue
-
-Help us make UI-Router better! If you think you might have found a bug, or some other weirdness, start by making sure
-it hasn't already been reported. You can [search through existing issues](https://github.com/angular-ui/ui-router/search?q=wat%3F&type=Issues)
-to see if someone's reported one similar to yours.
-
-If not, then [create a plunkr](http://bit.ly/UIR-Plunk) that demonstrates the problem (try to use as little code
-as possible: the more minimalist, the faster we can debug it).
-
-Next, [create a new issue](https://github.com/angular-ui/ui-router/issues/new) that briefly explains the problem,
-and provides a bit of background as to the circumstances that triggered it. Don't forget to include the link to
-that plunkr you created!
-
-**Note**: If you're unsure how a feature is used, or are encountering some unexpected behavior that you aren't sure
-is a bug, it's best to talk it out on
-[StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) before reporting it. This
-keeps development streamlined, and helps us focus on building great software.
-
-
-Issues only! |
--------------|
-Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). |
-
-####Purple Labels
-A purple label means that **you** need to take some further action.  
- - ![Not Actionable - Need Info](http://angular-ui.github.io/ui-router/images/notactionable.png): Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
- - ![Plunkr Please](http://angular-ui.github.io/ui-router/images/plunkrplease.png): Please [create a plunkr](http://bit.ly/UIR-Plunk)
- - ![StackOverflow](http://angular-ui.github.io/ui-router/images/stackoverflow.png): We suspect your issue is really a help request, or could be answered by the community.  Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router).  If you determine that is an actual issue, please explain why.
- 
-If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately.
-
-# Contribute
-
-**(1)** See the **[Developing](#developing)** section below, to get the development version of UI-Router up and running on your local machine.
-
-**(2)** Check out the [roadmap](https://github.com/angular-ui/ui-router/milestones) to see where the project is headed, and if your feature idea fits with where we're headed.
-
-**(3)** If you're not sure, [open an RFC](https://github.com/angular-ui/ui-router/issues/new?title=RFC:%20My%20idea) to get some feedback on your idea.
-
-**(4)** Finally, commit some code and open a pull request. Code & commits should abide by the following rules:
-
-- *Always* have test coverage for new features (or regression tests for bug fixes), and *never* break existing tests
-- Commits should represent one logical change each; if a feature goes through multiple iterations, squash your commits down to one
-- Make sure to follow the [Angular commit message format](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) so your change will appear in the changelog of the next release.
-- Changes should always respect the coding style of the project
-
-
-
-# Developing
-
-UI-Router uses <code>grunt >= 0.4.x</code>. Make sure to upgrade your environment and read the
-[Migration Guide](http://gruntjs.com/upgrading-from-0.3-to-0.4).
-
-Dependencies for building from source and running tests:
-
-* [grunt-cli](https://github.com/gruntjs/grunt-cli) - run: `$ npm install -g grunt-cli`
-* Then, install the development dependencies by running `$ npm install` from the project directory
-
-There are a number of targets in the gruntfile that are used to generating different builds:
-
-* `grunt`: Perform a normal build, runs jshint and karma tests
-* `grunt build`: Perform a normal build
-* `grunt dist`: Perform a clean build and generate documentation
-* `grunt dev`: Run dev server (sample app) and watch for changes, builds and runs karma tests on changes.
diff --git a/src/main/webapp/bower_components/angular-ui-router/LICENSE b/src/main/webapp/bower_components/angular-ui-router/LICENSE
deleted file mode 100644
index 6413b092..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2013-2015 The AngularUI Team, Karsten Sperling
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/angular-ui-router/README.md b/src/main/webapp/bower_components/angular-ui-router/README.md
deleted file mode 100644
index 1d8bcd61..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/README.md
+++ /dev/null
@@ -1,245 +0,0 @@
-# AngularUI Router &nbsp;[![Build Status](https://travis-ci.org/angular-ui/ui-router.svg?branch=master)](https://travis-ci.org/angular-ui/ui-router)
-
-#### The de-facto solution to flexible routing with nested views
----
-**[Download 0.2.15](http://angular-ui.github.io/ui-router/release/angular-ui-router.js)** (or **[Minified](http://angular-ui.github.io/ui-router/release/angular-ui-router.min.js)**) **|**
-**[Guide](https://github.com/angular-ui/ui-router/wiki) |**
-**[API](http://angular-ui.github.io/ui-router/site) |**
-**[Sample](http://angular-ui.github.com/ui-router/sample/) ([Src](https://github.com/angular-ui/ui-router/tree/gh-pages/sample)) |**
-**[FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions) |**
-**[Resources](#resources) |**
-**[Report an Issue](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#report-an-issue) |**
-**[Contribute](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#contribute) |**
-**[Help!](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) |**
-**[Discuss](https://groups.google.com/forum/#!categories/angular-ui/router)**
-
----
-
-AngularUI Router is a routing framework for [AngularJS](http://angularjs.org), which allows you to organize the
-parts of your interface into a [*state machine*](https://en.wikipedia.org/wiki/Finite-state_machine). Unlike the
-[`$route` service](http://docs.angularjs.org/api/ngRoute.$route) in the Angular ngRoute module, which is organized around URL
-routes, UI-Router is organized around [*states*](https://github.com/angular-ui/ui-router/wiki),
-which may optionally have routes, as well as other behavior, attached.
-
-States are bound to *named*, *nested* and *parallel views*, allowing you to powerfully manage your application's interface.
-
-Check out the sample app: http://angular-ui.github.io/ui-router/sample/
-
--
-**Note:** *UI-Router is under active development. As such, while this library is well-tested, the API may change. Consider using it in production applications only if you're comfortable following a changelog and updating your usage accordingly.*
-
-
-## Get Started
-
-**(1)** Get UI-Router in one of the following ways:
- - clone & [build](CONTRIBUTING.md#developing) this repository
- - [download the release](http://angular-ui.github.io/ui-router/release/angular-ui-router.js) (or [minified](http://angular-ui.github.io/ui-router/release/angular-ui-router.min.js))
- - [link to cdn](http://cdnjs.com/libraries/angular-ui-router)
- - via **[jspm](http://jspm.io/)**: by running `$ jspm install angular-ui-router` from your console
- - or via **[npm](https://www.npmjs.org/)**: by running `$ npm install angular-ui-router` from your console
- - or via **[Bower](http://bower.io/)**: by running `$ bower install angular-ui-router` from your console
- - or via **[Component](https://github.com/component/component)**: by running `$ component install angular-ui/ui-router` from your console
-
-**(2)** Include `angular-ui-router.js` (or `angular-ui-router.min.js`) in your `index.html`, after including Angular itself (For Component users: ignore this step)
-
-**(3)** Add `'ui.router'` to your main module's list of dependencies (For Component users: replace `'ui.router'` with `require('angular-ui-router')`)
-
-When you're done, your setup should look similar to the following:
-
->
-```html
-<!doctype html>
-<html ng-app="myApp">
-<head>
-    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
-    <script src="js/angular-ui-router.min.js"></script>
-    <script>
-        var myApp = angular.module('myApp', ['ui.router']);
-        // For Component users, it should look like this:
-        // var myApp = angular.module('myApp', [require('angular-ui-router')]);
-    </script>
-    ...
-</head>
-<body>
-    ...
-</body>
-</html>
-```
-
-### [Nested States & Views](http://plnkr.co/edit/u18KQc?p=preview)
-
-The majority of UI-Router's power is in its ability to nest states & views.
-
-**(1)** First, follow the [setup](#get-started) instructions detailed above.
-
-**(2)** Then, add a [`ui-view` directive](https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-view) to the `<body />` of your app.
-
->
-```html
-<!-- index.html -->
-<body>
-    <div ui-view></div>
-    <!-- We'll also add some navigation: -->
-    <a ui-sref="state1">State 1</a>
-    <a ui-sref="state2">State 2</a>
-</body>
-```
-
-**(3)** You'll notice we also added some links with [`ui-sref` directives](https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-sref). In addition to managing state transitions, this directive auto-generates the `href` attribute of the `<a />` element it's attached to, if the corresponding state has a URL. Next we'll add some templates. These will plug into the `ui-view` within `index.html`. Notice that they have their own `ui-view` as well! That is the key to nesting states and views.
-
->
-```html
-<!-- partials/state1.html -->
-<h1>State 1</h1>
-<hr/>
-<a ui-sref="state1.list">Show List</a>
-<div ui-view></div>
-```
-```html
-<!-- partials/state2.html -->
-<h1>State 2</h1>
-<hr/>
-<a ui-sref="state2.list">Show List</a>
-<div ui-view></div>
-```
-
-**(4)** Next, we'll add some child templates. *These* will get plugged into the `ui-view` of their parent state templates.
-
->
-```html
-<!-- partials/state1.list.html -->
-<h3>List of State 1 Items</h3>
-<ul>
-  <li ng-repeat="item in items">{{ item }}</li>
-</ul>
-```
-
->
-```html
-<!-- partials/state2.list.html -->
-<h3>List of State 2 Things</h3>
-<ul>
-  <li ng-repeat="thing in things">{{ thing }}</li>
-</ul>
-```
-
-**(5)** Finally, we'll wire it all up with `$stateProvider`. Set up your states in the module config, as in the following:
-
-
->
-```javascript
-myApp.config(function($stateProvider, $urlRouterProvider) {
-  //
-  // For any unmatched url, redirect to /state1
-  $urlRouterProvider.otherwise("/state1");
-  //
-  // Now set up the states
-  $stateProvider
-    .state('state1', {
-      url: "/state1",
-      templateUrl: "partials/state1.html"
-    })
-    .state('state1.list', {
-      url: "/list",
-      templateUrl: "partials/state1.list.html",
-      controller: function($scope) {
-        $scope.items = ["A", "List", "Of", "Items"];
-      }
-    })
-    .state('state2', {
-      url: "/state2",
-      templateUrl: "partials/state2.html"
-    })
-    .state('state2.list', {
-      url: "/list",
-      templateUrl: "partials/state2.list.html",
-      controller: function($scope) {
-        $scope.things = ["A", "Set", "Of", "Things"];
-      }
-    });
-});
-```
-
-**(6)** See this quick start example in action.
->**[Go to Quick Start Plunker for Nested States & Views](http://plnkr.co/edit/u18KQc?p=preview)**
-
-**(7)** This only scratches the surface
->**[Dive Deeper!](https://github.com/angular-ui/ui-router/wiki)**
-
-
-### [Multiple & Named Views](http://plnkr.co/edit/SDOcGS?p=preview)
-
-Another great feature is the ability to have multiple `ui-view`s view per template.
-
-**Pro Tip:** *While multiple parallel views are a powerful feature, you'll often be able to manage your
-interfaces more effectively by nesting your views, and pairing those views with nested states.*
-
-**(1)** Follow the [setup](#get-started) instructions detailed above.
-
-**(2)** Add one or more `ui-view` to your app, give them names.
->
-```html
-<!-- index.html -->
-<body>
-    <div ui-view="viewA"></div>
-    <div ui-view="viewB"></div>
-    <!-- Also a way to navigate -->
-    <a ui-sref="route1">Route 1</a>
-    <a ui-sref="route2">Route 2</a>
-</body>
-```
-
-**(3)** Set up your states in the module config:
->
-```javascript
-myApp.config(function($stateProvider) {
-  $stateProvider
-    .state('index', {
-      url: "",
-      views: {
-        "viewA": { template: "index.viewA" },
-        "viewB": { template: "index.viewB" }
-      }
-    })
-    .state('route1', {
-      url: "/route1",
-      views: {
-        "viewA": { template: "route1.viewA" },
-        "viewB": { template: "route1.viewB" }
-      }
-    })
-    .state('route2', {
-      url: "/route2",
-      views: {
-        "viewA": { template: "route2.viewA" },
-        "viewB": { template: "route2.viewB" }
-      }
-    })
-});
-```
-
-**(4)** See this quick start example in action.
->**[Go to Quick Start Plunker for Multiple & Named Views](http://plnkr.co/edit/SDOcGS?p=preview)**
-
-
-## Resources
-
-* [In-Depth Guide](https://github.com/angular-ui/ui-router/wiki)
-* [API Reference](http://angular-ui.github.io/ui-router/site)
-* [Sample App](http://angular-ui.github.com/ui-router/sample/) ([Source](https://github.com/angular-ui/ui-router/tree/gh-pages/sample))
-* [FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions)
-* [Slides comparing ngRoute to ui-router](http://slid.es/timkindberg/ui-router#/)
-* [UI-Router Extras / Addons](http://christopherthielen.github.io/ui-router-extras/#/home) (@christopherthielen)
- 
-### Videos
-
-* [Introduction Video](https://egghead.io/lessons/angularjs-introduction-ui-router) (egghead.io)
-* [Tim Kindberg on Angular UI-Router](https://www.youtube.com/watch?v=lBqiZSemrqg)
-* [Activating States](https://egghead.io/lessons/angularjs-ui-router-activating-states) (egghead.io)
-* [Learn Angular.js using UI-Router](http://youtu.be/QETUuZ27N0w) (LearnCode.academy)
-
-
-
-## Reporting issues and Contributing
-
-Please read our [Contributor guidelines](CONTRIBUTING.md) before reporting an issue or creating a pull request.
diff --git a/src/main/webapp/bower_components/angular-ui-router/api/angular-ui-router.d.ts b/src/main/webapp/bower_components/angular-ui-router/api/angular-ui-router.d.ts
deleted file mode 100644
index 55c5d5e0..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/api/angular-ui-router.d.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-// Type definitions for Angular JS 1.1.5+ (ui.router module)
-// Project: https://github.com/angular-ui/ui-router
-// Definitions by: Michel Salib <https://github.com/michelsalib>
-// Definitions: https://github.com/borisyankov/DefinitelyTyped
-
-declare module ng.ui {
-
-    interface IState {
-        name?: string;
-        template?: string;
-        templateUrl?: any; // string || () => string
-        templateProvider?: any; // () => string || IPromise<string>
-        controller?: any;
-        controllerAs?: string;    
-        controllerProvider?: any;
-        resolve?: {};
-        url?: string;
-        params?: any;
-        views?: {};
-        abstract?: boolean;
-        onEnter?: (...args: any[]) => void;
-        onExit?: (...args: any[]) => void;
-        data?: any;
-        reloadOnSearch?: boolean;
-    }
-
-    interface ITypedState<T> extends IState {
-        data?: T;
-    }
-
-    interface IStateProvider extends IServiceProvider {
-        state(name: string, config: IState): IStateProvider;
-        state(config: IState): IStateProvider;
-        decorator(name?: string, decorator?: (state: IState, parent: Function) => any): any;
-    }
-
-    interface IUrlMatcher {
-        concat(pattern: string): IUrlMatcher;
-        exec(path: string, searchParams: {}): {};
-        parameters(): string[];
-        format(values: {}): string;
-    }
-
-    interface IUrlMatcherFactory {
-        compile(pattern: string): IUrlMatcher;
-        isMatcher(o: any): boolean;
-    }
-
-    interface IUrlRouterProvider extends IServiceProvider {
-        when(whenPath: RegExp, handler: Function): IUrlRouterProvider;
-        when(whenPath: RegExp, handler: any[]): IUrlRouterProvider;
-        when(whenPath: RegExp, toPath: string): IUrlRouterProvider;
-        when(whenPath: IUrlMatcher, hanlder: Function): IUrlRouterProvider;
-        when(whenPath: IUrlMatcher, handler: any[]): IUrlRouterProvider;
-        when(whenPath: IUrlMatcher, toPath: string): IUrlRouterProvider;
-        when(whenPath: string, handler: Function): IUrlRouterProvider;
-        when(whenPath: string, handler: any[]): IUrlRouterProvider;
-        when(whenPath: string, toPath: string): IUrlRouterProvider;
-        otherwise(handler: Function): IUrlRouterProvider;
-        otherwise(handler: any[]): IUrlRouterProvider;
-        otherwise(path: string): IUrlRouterProvider;
-        rule(handler: Function): IUrlRouterProvider;
-        rule(handler: any[]): IUrlRouterProvider;
-    }
-
-    interface IStateOptions {
-        location?: any;
-        inherit?: boolean;
-        relative?: IState;
-        notify?: boolean;
-        reload?: boolean;
-    }
-
-    interface IHrefOptions {
-        lossy?: boolean;
-        inherit?: boolean;
-        relative?: IState;
-        absolute?: boolean;
-    }
-
-    interface IStateService {
-        go(to: string, params?: {}, options?: IStateOptions): IPromise<any>;
-        transitionTo(state: string, params?: {}, updateLocation?: boolean): void;
-        transitionTo(state: string, params?: {}, options?: IStateOptions): void;
-        includes(state: string, params?: {}): boolean;
-        is(state:string, params?: {}): boolean;
-        is(state: IState, params?: {}): boolean;
-        href(state: IState, params?: {}, options?: IHrefOptions): string;
-        href(state: string, params?: {}, options?: IHrefOptions): string;
-        get(state: string): IState;
-        get(): IState[];
-        current: IState;
-        params: any;
-        reload(): void;
-    }
-
-    interface IStateParamsService {
-        [key: string]: any;
-    }
-
-    interface IStateParams {
-        [key: string]: any;
-    }
-
-    interface IUrlRouterService {
-        /*
-         * Triggers an update; the same update that happens when the address bar
-         * url changes, aka $locationChangeSuccess.
-         *
-         * This method is useful when you need to use preventDefault() on the
-         * $locationChangeSuccess event, perform some custom logic (route protection,
-         * auth, config, redirection, etc) and then finally proceed with the transition
-         * by calling $urlRouter.sync().
-         *
-         */
-        sync(): void;
-    }
-
-    interface IUiViewScrollProvider {
-        /*
-         * Reverts back to using the core $anchorScroll service for scrolling 
-         * based on the url anchor.
-         */
-        useAnchorScroll(): void;
-    }
-}
diff --git a/src/main/webapp/bower_components/angular-ui-router/bower.json b/src/main/webapp/bower_components/angular-ui-router/bower.json
deleted file mode 100644
index f4f08fa2..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/bower.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "name": "angular-ui-router",
-  "version": "0.2.15",
-  "main": "./release/angular-ui-router.js",
-  "dependencies": {
-    "angular": ">= 1.0.8"
-  },
-  "ignore": [
-    "**/.*",
-    "node_modules",
-    "bower_components",
-    "component.json",
-    "package.json",
-    "lib",
-    "config",
-    "sample",
-    "test",
-    "tests",
-    "ngdoc_assets",
-    "Gruntfile.js",
-    "files.js"
-  ]
-}
diff --git a/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.js b/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.js
deleted file mode 100644
index 57c62cca..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.js
+++ /dev/null
@@ -1,4370 +0,0 @@
-/**
- * State-based routing for AngularJS
- * @version v0.2.15
- * @link http://angular-ui.github.com/
- * @license MIT License, http://www.opensource.org/licenses/MIT
- */
-
-/* commonjs package manager support (eg componentjs) */
-if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){
-  module.exports = 'ui.router';
-}
-
-(function (window, angular, undefined) {
-/*jshint globalstrict:true*/
-/*global angular:false*/
-'use strict';
-
-var isDefined = angular.isDefined,
-    isFunction = angular.isFunction,
-    isString = angular.isString,
-    isObject = angular.isObject,
-    isArray = angular.isArray,
-    forEach = angular.forEach,
-    extend = angular.extend,
-    copy = angular.copy;
-
-function inherit(parent, extra) {
-  return extend(new (extend(function() {}, { prototype: parent }))(), extra);
-}
-
-function merge(dst) {
-  forEach(arguments, function(obj) {
-    if (obj !== dst) {
-      forEach(obj, function(value, key) {
-        if (!dst.hasOwnProperty(key)) dst[key] = value;
-      });
-    }
-  });
-  return dst;
-}
-
-/**
- * Finds the common ancestor path between two states.
- *
- * @param {Object} first The first state.
- * @param {Object} second The second state.
- * @return {Array} Returns an array of state names in descending order, not including the root.
- */
-function ancestors(first, second) {
-  var path = [];
-
-  for (var n in first.path) {
-    if (first.path[n] !== second.path[n]) break;
-    path.push(first.path[n]);
-  }
-  return path;
-}
-
-/**
- * IE8-safe wrapper for `Object.keys()`.
- *
- * @param {Object} object A JavaScript object.
- * @return {Array} Returns the keys of the object as an array.
- */
-function objectKeys(object) {
-  if (Object.keys) {
-    return Object.keys(object);
-  }
-  var result = [];
-
-  forEach(object, function(val, key) {
-    result.push(key);
-  });
-  return result;
-}
-
-/**
- * IE8-safe wrapper for `Array.prototype.indexOf()`.
- *
- * @param {Array} array A JavaScript array.
- * @param {*} value A value to search the array for.
- * @return {Number} Returns the array index value of `value`, or `-1` if not present.
- */
-function indexOf(array, value) {
-  if (Array.prototype.indexOf) {
-    return array.indexOf(value, Number(arguments[2]) || 0);
-  }
-  var len = array.length >>> 0, from = Number(arguments[2]) || 0;
-  from = (from < 0) ? Math.ceil(from) : Math.floor(from);
-
-  if (from < 0) from += len;
-
-  for (; from < len; from++) {
-    if (from in array && array[from] === value) return from;
-  }
-  return -1;
-}
-
-/**
- * Merges a set of parameters with all parameters inherited between the common parents of the
- * current state and a given destination state.
- *
- * @param {Object} currentParams The value of the current state parameters ($stateParams).
- * @param {Object} newParams The set of parameters which will be composited with inherited params.
- * @param {Object} $current Internal definition of object representing the current state.
- * @param {Object} $to Internal definition of object representing state to transition to.
- */
-function inheritParams(currentParams, newParams, $current, $to) {
-  var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = [];
-
-  for (var i in parents) {
-    if (!parents[i].params) continue;
-    parentParams = objectKeys(parents[i].params);
-    if (!parentParams.length) continue;
-
-    for (var j in parentParams) {
-      if (indexOf(inheritList, parentParams[j]) >= 0) continue;
-      inheritList.push(parentParams[j]);
-      inherited[parentParams[j]] = currentParams[parentParams[j]];
-    }
-  }
-  return extend({}, inherited, newParams);
-}
-
-/**
- * Performs a non-strict comparison of the subset of two objects, defined by a list of keys.
- *
- * @param {Object} a The first object.
- * @param {Object} b The second object.
- * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified,
- *                     it defaults to the list of keys in `a`.
- * @return {Boolean} Returns `true` if the keys match, otherwise `false`.
- */
-function equalForKeys(a, b, keys) {
-  if (!keys) {
-    keys = [];
-    for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility
-  }
-
-  for (var i=0; i<keys.length; i++) {
-    var k = keys[i];
-    if (a[k] != b[k]) return false; // Not '===', values aren't necessarily normalized
-  }
-  return true;
-}
-
-/**
- * Returns the subset of an object, based on a list of keys.
- *
- * @param {Array} keys
- * @param {Object} values
- * @return {Boolean} Returns a subset of `values`.
- */
-function filterByKeys(keys, values) {
-  var filtered = {};
-
-  forEach(keys, function (name) {
-    filtered[name] = values[name];
-  });
-  return filtered;
-}
-
-// like _.indexBy
-// when you know that your index values will be unique, or you want last-one-in to win
-function indexBy(array, propName) {
-  var result = {};
-  forEach(array, function(item) {
-    result[item[propName]] = item;
-  });
-  return result;
-}
-
-// extracted from underscore.js
-// Return a copy of the object only containing the whitelisted properties.
-function pick(obj) {
-  var copy = {};
-  var keys = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
-  forEach(keys, function(key) {
-    if (key in obj) copy[key] = obj[key];
-  });
-  return copy;
-}
-
-// extracted from underscore.js
-// Return a copy of the object omitting the blacklisted properties.
-function omit(obj) {
-  var copy = {};
-  var keys = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
-  for (var key in obj) {
-    if (indexOf(keys, key) == -1) copy[key] = obj[key];
-  }
-  return copy;
-}
-
-function pluck(collection, key) {
-  var result = isArray(collection) ? [] : {};
-
-  forEach(collection, function(val, i) {
-    result[i] = isFunction(key) ? key(val) : val[key];
-  });
-  return result;
-}
-
-function filter(collection, callback) {
-  var array = isArray(collection);
-  var result = array ? [] : {};
-  forEach(collection, function(val, i) {
-    if (callback(val, i)) {
-      result[array ? result.length : i] = val;
-    }
-  });
-  return result;
-}
-
-function map(collection, callback) {
-  var result = isArray(collection) ? [] : {};
-
-  forEach(collection, function(val, i) {
-    result[i] = callback(val, i);
-  });
-  return result;
-}
-
-/**
- * @ngdoc overview
- * @name ui.router.util
- *
- * @description
- * # ui.router.util sub-module
- *
- * This module is a dependency of other sub-modules. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- *
- */
-angular.module('ui.router.util', ['ng']);
-
-/**
- * @ngdoc overview
- * @name ui.router.router
- * 
- * @requires ui.router.util
- *
- * @description
- * # ui.router.router sub-module
- *
- * This module is a dependency of other sub-modules. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- */
-angular.module('ui.router.router', ['ui.router.util']);
-
-/**
- * @ngdoc overview
- * @name ui.router.state
- * 
- * @requires ui.router.router
- * @requires ui.router.util
- *
- * @description
- * # ui.router.state sub-module
- *
- * This module is a dependency of the main ui.router module. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- * 
- */
-angular.module('ui.router.state', ['ui.router.router', 'ui.router.util']);
-
-/**
- * @ngdoc overview
- * @name ui.router
- *
- * @requires ui.router.state
- *
- * @description
- * # ui.router
- * 
- * ## The main module for ui.router 
- * There are several sub-modules included with the ui.router module, however only this module is needed
- * as a dependency within your angular app. The other modules are for organization purposes. 
- *
- * The modules are:
- * * ui.router - the main "umbrella" module
- * * ui.router.router - 
- * 
- * *You'll need to include **only** this module as the dependency within your angular app.*
- * 
- * <pre>
- * <!doctype html>
- * <html ng-app="myApp">
- * <head>
- *   <script src="js/angular.js"></script>
- *   <!-- Include the ui-router script -->
- *   <script src="js/angular-ui-router.min.js"></script>
- *   <script>
- *     // ...and add 'ui.router' as a dependency
- *     var myApp = angular.module('myApp', ['ui.router']);
- *   </script>
- * </head>
- * <body>
- * </body>
- * </html>
- * </pre>
- */
-angular.module('ui.router', ['ui.router.state']);
-
-angular.module('ui.router.compat', ['ui.router']);
-
-/**
- * @ngdoc object
- * @name ui.router.util.$resolve
- *
- * @requires $q
- * @requires $injector
- *
- * @description
- * Manages resolution of (acyclic) graphs of promises.
- */
-$Resolve.$inject = ['$q', '$injector'];
-function $Resolve(  $q,    $injector) {
-  
-  var VISIT_IN_PROGRESS = 1,
-      VISIT_DONE = 2,
-      NOTHING = {},
-      NO_DEPENDENCIES = [],
-      NO_LOCALS = NOTHING,
-      NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING });
-  
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$resolve#study
-   * @methodOf ui.router.util.$resolve
-   *
-   * @description
-   * Studies a set of invocables that are likely to be used multiple times.
-   * <pre>
-   * $resolve.study(invocables)(locals, parent, self)
-   * </pre>
-   * is equivalent to
-   * <pre>
-   * $resolve.resolve(invocables, locals, parent, self)
-   * </pre>
-   * but the former is more efficient (in fact `resolve` just calls `study` 
-   * internally).
-   *
-   * @param {object} invocables Invocable objects
-   * @return {function} a function to pass in locals, parent and self
-   */
-  this.study = function (invocables) {
-    if (!isObject(invocables)) throw new Error("'invocables' must be an object");
-    var invocableKeys = objectKeys(invocables || {});
-    
-    // Perform a topological sort of invocables to build an ordered plan
-    var plan = [], cycle = [], visited = {};
-    function visit(value, key) {
-      if (visited[key] === VISIT_DONE) return;
-      
-      cycle.push(key);
-      if (visited[key] === VISIT_IN_PROGRESS) {
-        cycle.splice(0, indexOf(cycle, key));
-        throw new Error("Cyclic dependency: " + cycle.join(" -> "));
-      }
-      visited[key] = VISIT_IN_PROGRESS;
-      
-      if (isString(value)) {
-        plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES);
-      } else {
-        var params = $injector.annotate(value);
-        forEach(params, function (param) {
-          if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param);
-        });
-        plan.push(key, value, params);
-      }
-      
-      cycle.pop();
-      visited[key] = VISIT_DONE;
-    }
-    forEach(invocables, visit);
-    invocables = cycle = visited = null; // plan is all that's required
-    
-    function isResolve(value) {
-      return isObject(value) && value.then && value.$$promises;
-    }
-    
-    return function (locals, parent, self) {
-      if (isResolve(locals) && self === undefined) {
-        self = parent; parent = locals; locals = null;
-      }
-      if (!locals) locals = NO_LOCALS;
-      else if (!isObject(locals)) {
-        throw new Error("'locals' must be an object");
-      }       
-      if (!parent) parent = NO_PARENT;
-      else if (!isResolve(parent)) {
-        throw new Error("'parent' must be a promise returned by $resolve.resolve()");
-      }
-      
-      // To complete the overall resolution, we have to wait for the parent
-      // promise and for the promise for each invokable in our plan.
-      var resolution = $q.defer(),
-          result = resolution.promise,
-          promises = result.$$promises = {},
-          values = extend({}, locals),
-          wait = 1 + plan.length/3,
-          merged = false;
-          
-      function done() {
-        // Merge parent values we haven't got yet and publish our own $$values
-        if (!--wait) {
-          if (!merged) merge(values, parent.$$values); 
-          result.$$values = values;
-          result.$$promises = result.$$promises || true; // keep for isResolve()
-          delete result.$$inheritedValues;
-          resolution.resolve(values);
-        }
-      }
-      
-      function fail(reason) {
-        result.$$failure = reason;
-        resolution.reject(reason);
-      }
-
-      // Short-circuit if parent has already failed
-      if (isDefined(parent.$$failure)) {
-        fail(parent.$$failure);
-        return result;
-      }
-      
-      if (parent.$$inheritedValues) {
-        merge(values, omit(parent.$$inheritedValues, invocableKeys));
-      }
-
-      // Merge parent values if the parent has already resolved, or merge
-      // parent promises and wait if the parent resolve is still in progress.
-      extend(promises, parent.$$promises);
-      if (parent.$$values) {
-        merged = merge(values, omit(parent.$$values, invocableKeys));
-        result.$$inheritedValues = omit(parent.$$values, invocableKeys);
-        done();
-      } else {
-        if (parent.$$inheritedValues) {
-          result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys);
-        }        
-        parent.then(done, fail);
-      }
-      
-      // Process each invocable in the plan, but ignore any where a local of the same name exists.
-      for (var i=0, ii=plan.length; i<ii; i+=3) {
-        if (locals.hasOwnProperty(plan[i])) done();
-        else invoke(plan[i], plan[i+1], plan[i+2]);
-      }
-      
-      function invoke(key, invocable, params) {
-        // Create a deferred for this invocation. Failures will propagate to the resolution as well.
-        var invocation = $q.defer(), waitParams = 0;
-        function onfailure(reason) {
-          invocation.reject(reason);
-          fail(reason);
-        }
-        // Wait for any parameter that we have a promise for (either from parent or from this
-        // resolve; in that case study() will have made sure it's ordered before us in the plan).
-        forEach(params, function (dep) {
-          if (promises.hasOwnProperty(dep) && !locals.hasOwnProperty(dep)) {
-            waitParams++;
-            promises[dep].then(function (result) {
-              values[dep] = result;
-              if (!(--waitParams)) proceed();
-            }, onfailure);
-          }
-        });
-        if (!waitParams) proceed();
-        function proceed() {
-          if (isDefined(result.$$failure)) return;
-          try {
-            invocation.resolve($injector.invoke(invocable, self, values));
-            invocation.promise.then(function (result) {
-              values[key] = result;
-              done();
-            }, onfailure);
-          } catch (e) {
-            onfailure(e);
-          }
-        }
-        // Publish promise synchronously; invocations further down in the plan may depend on it.
-        promises[key] = invocation.promise;
-      }
-      
-      return result;
-    };
-  };
-  
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$resolve#resolve
-   * @methodOf ui.router.util.$resolve
-   *
-   * @description
-   * Resolves a set of invocables. An invocable is a function to be invoked via 
-   * `$injector.invoke()`, and can have an arbitrary number of dependencies. 
-   * An invocable can either return a value directly,
-   * or a `$q` promise. If a promise is returned it will be resolved and the 
-   * resulting value will be used instead. Dependencies of invocables are resolved 
-   * (in this order of precedence)
-   *
-   * - from the specified `locals`
-   * - from another invocable that is part of this `$resolve` call
-   * - from an invocable that is inherited from a `parent` call to `$resolve` 
-   *   (or recursively
-   * - from any ancestor `$resolve` of that parent).
-   *
-   * The return value of `$resolve` is a promise for an object that contains 
-   * (in this order of precedence)
-   *
-   * - any `locals` (if specified)
-   * - the resolved return values of all injectables
-   * - any values inherited from a `parent` call to `$resolve` (if specified)
-   *
-   * The promise will resolve after the `parent` promise (if any) and all promises 
-   * returned by injectables have been resolved. If any invocable 
-   * (or `$injector.invoke`) throws an exception, or if a promise returned by an 
-   * invocable is rejected, the `$resolve` promise is immediately rejected with the 
-   * same error. A rejection of a `parent` promise (if specified) will likewise be 
-   * propagated immediately. Once the `$resolve` promise has been rejected, no 
-   * further invocables will be called.
-   * 
-   * Cyclic dependencies between invocables are not permitted and will caues `$resolve`
-   * to throw an error. As a special case, an injectable can depend on a parameter 
-   * with the same name as the injectable, which will be fulfilled from the `parent` 
-   * injectable of the same name. This allows inherited values to be decorated. 
-   * Note that in this case any other injectable in the same `$resolve` with the same
-   * dependency would see the decorated value, not the inherited value.
-   *
-   * Note that missing dependencies -- unlike cyclic dependencies -- will cause an 
-   * (asynchronous) rejection of the `$resolve` promise rather than a (synchronous) 
-   * exception.
-   *
-   * Invocables are invoked eagerly as soon as all dependencies are available. 
-   * This is true even for dependencies inherited from a `parent` call to `$resolve`.
-   *
-   * As a special case, an invocable can be a string, in which case it is taken to 
-   * be a service name to be passed to `$injector.get()`. This is supported primarily 
-   * for backwards-compatibility with the `resolve` property of `$routeProvider` 
-   * routes.
-   *
-   * @param {object} invocables functions to invoke or 
-   * `$injector` services to fetch.
-   * @param {object} locals  values to make available to the injectables
-   * @param {object} parent  a promise returned by another call to `$resolve`.
-   * @param {object} self  the `this` for the invoked methods
-   * @return {object} Promise for an object that contains the resolved return value
-   * of all invocables, as well as any inherited and local values.
-   */
-  this.resolve = function (invocables, locals, parent, self) {
-    return this.study(invocables)(locals, parent, self);
-  };
-}
-
-angular.module('ui.router.util').service('$resolve', $Resolve);
-
-
-/**
- * @ngdoc object
- * @name ui.router.util.$templateFactory
- *
- * @requires $http
- * @requires $templateCache
- * @requires $injector
- *
- * @description
- * Service. Manages loading of templates.
- */
-$TemplateFactory.$inject = ['$http', '$templateCache', '$injector'];
-function $TemplateFactory(  $http,   $templateCache,   $injector) {
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromConfig
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template from a configuration object. 
-   *
-   * @param {object} config Configuration object for which to load a template. 
-   * The following properties are search in the specified order, and the first one 
-   * that is defined is used to create the template:
-   *
-   * @param {string|object} config.template html string template or function to 
-   * load via {@link ui.router.util.$templateFactory#fromString fromString}.
-   * @param {string|object} config.templateUrl url to load or a function returning 
-   * the url to load via {@link ui.router.util.$templateFactory#fromUrl fromUrl}.
-   * @param {Function} config.templateProvider function to invoke via 
-   * {@link ui.router.util.$templateFactory#fromProvider fromProvider}.
-   * @param {object} params  Parameters to pass to the template function.
-   * @param {object} locals Locals to pass to `invoke` if the template is loaded 
-   * via a `templateProvider`. Defaults to `{ params: params }`.
-   *
-   * @return {string|object}  The template html as a string, or a promise for 
-   * that string,or `null` if no template is configured.
-   */
-  this.fromConfig = function (config, params, locals) {
-    return (
-      isDefined(config.template) ? this.fromString(config.template, params) :
-      isDefined(config.templateUrl) ? this.fromUrl(config.templateUrl, params) :
-      isDefined(config.templateProvider) ? this.fromProvider(config.templateProvider, params, locals) :
-      null
-    );
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromString
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template from a string or a function returning a string.
-   *
-   * @param {string|object} template html template as a string or function that 
-   * returns an html template as a string.
-   * @param {object} params Parameters to pass to the template function.
-   *
-   * @return {string|object} The template html as a string, or a promise for that 
-   * string.
-   */
-  this.fromString = function (template, params) {
-    return isFunction(template) ? template(params) : template;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromUrl
-   * @methodOf ui.router.util.$templateFactory
-   * 
-   * @description
-   * Loads a template from the a URL via `$http` and `$templateCache`.
-   *
-   * @param {string|Function} url url of the template to load, or a function 
-   * that returns a url.
-   * @param {Object} params Parameters to pass to the url function.
-   * @return {string|Promise.<string>} The template html as a string, or a promise 
-   * for that string.
-   */
-  this.fromUrl = function (url, params) {
-    if (isFunction(url)) url = url(params);
-    if (url == null) return null;
-    else return $http
-        .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }})
-        .then(function(response) { return response.data; });
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromProvider
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template by invoking an injectable provider function.
-   *
-   * @param {Function} provider Function to invoke via `$injector.invoke`
-   * @param {Object} params Parameters for the template.
-   * @param {Object} locals Locals to pass to `invoke`. Defaults to 
-   * `{ params: params }`.
-   * @return {string|Promise.<string>} The template html as a string, or a promise 
-   * for that string.
-   */
-  this.fromProvider = function (provider, params, locals) {
-    return $injector.invoke(provider, null, locals || { params: params });
-  };
-}
-
-angular.module('ui.router.util').service('$templateFactory', $TemplateFactory);
-
-var $$UMFP; // reference to $UrlMatcherFactoryProvider
-
-/**
- * @ngdoc object
- * @name ui.router.util.type:UrlMatcher
- *
- * @description
- * Matches URLs against patterns and extracts named parameters from the path or the search
- * part of the URL. A URL pattern consists of a path pattern, optionally followed by '?' and a list
- * of search parameters. Multiple search parameter names are separated by '&'. Search parameters
- * do not influence whether or not a URL is matched, but their values are passed through into
- * the matched parameters returned by {@link ui.router.util.type:UrlMatcher#methods_exec exec}.
- *
- * Path parameter placeholders can be specified using simple colon/catch-all syntax or curly brace
- * syntax, which optionally allows a regular expression for the parameter to be specified:
- *
- * * `':'` name - colon placeholder
- * * `'*'` name - catch-all placeholder
- * * `'{' name '}'` - curly placeholder
- * * `'{' name ':' regexp|type '}'` - curly placeholder with regexp or type name. Should the
- *   regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.
- *
- * Parameter names may contain only word characters (latin letters, digits, and underscore) and
- * must be unique within the pattern (across both path and search parameters). For colon
- * placeholders or curly placeholders without an explicit regexp, a path parameter matches any
- * number of characters other than '/'. For catch-all placeholders the path parameter matches
- * any number of characters.
- *
- * Examples:
- *
- * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for
- *   trailing slashes, and patterns have to match the entire path, not just a prefix.
- * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or
- *   '/user/bob/details'. The second path segment will be captured as the parameter 'id'.
- * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.
- * * `'/user/{id:[^/]*}'` - Same as the previous example.
- * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id
- *   parameter consists of 1 to 8 hex digits.
- * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the
- *   path into the parameter 'path'.
- * * `'/files/*path'` - ditto.
- * * `'/calendar/{start:date}'` - Matches "/calendar/2014-11-12" (because the pattern defined
- *   in the built-in  `date` Type matches `2014-11-12`) and provides a Date object in $stateParams.start
- *
- * @param {string} pattern  The pattern to compile into a matcher.
- * @param {Object} config  A configuration object hash:
- * @param {Object=} parentMatcher Used to concatenate the pattern/config onto
- *   an existing UrlMatcher
- *
- * * `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.
- * * `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.
- *
- * @property {string} prefix  A static prefix of this pattern. The matcher guarantees that any
- *   URL matching this matcher (i.e. any string for which {@link ui.router.util.type:UrlMatcher#methods_exec exec()} returns
- *   non-null) will start with this prefix.
- *
- * @property {string} source  The pattern that was passed into the constructor
- *
- * @property {string} sourcePath  The path portion of the source property
- *
- * @property {string} sourceSearch  The search portion of the source property
- *
- * @property {string} regex  The constructed regex that will be used to match against the url when
- *   it is time to determine which url will match.
- *
- * @returns {Object}  New `UrlMatcher` object
- */
-function UrlMatcher(pattern, config, parentMatcher) {
-  config = extend({ params: {} }, isObject(config) ? config : {});
-
-  // Find all placeholders and create a compiled pattern, using either classic or curly syntax:
-  //   '*' name
-  //   ':' name
-  //   '{' name '}'
-  //   '{' name ':' regexp '}'
-  // The regular expression is somewhat complicated due to the need to allow curly braces
-  // inside the regular expression. The placeholder regexp breaks down as follows:
-  //    ([:*])([\w\[\]]+)              - classic placeholder ($1 / $2) (search version has - for snake-case)
-  //    \{([\w\[\]]+)(?:\:( ... ))?\}  - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case
-  //    (?: ... | ... | ... )+         - the regexp consists of any number of atoms, an atom being either
-  //    [^{}\\]+                       - anything other than curly braces or backslash
-  //    \\.                            - a backslash escape
-  //    \{(?:[^{}\\]+|\\.)*\}          - a matched set of curly braces containing other atoms
-  var placeholder       = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
-      searchPlaceholder = /([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
-      compiled = '^', last = 0, m,
-      segments = this.segments = [],
-      parentParams = parentMatcher ? parentMatcher.params : {},
-      params = this.params = parentMatcher ? parentMatcher.params.$$new() : new $$UMFP.ParamSet(),
-      paramNames = [];
-
-  function addParameter(id, type, config, location) {
-    paramNames.push(id);
-    if (parentParams[id]) return parentParams[id];
-    if (!/^\w+(-+\w+)*(?:\[\])?$/.test(id)) throw new Error("Invalid parameter name '" + id + "' in pattern '" + pattern + "'");
-    if (params[id]) throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'");
-    params[id] = new $$UMFP.Param(id, type, config, location);
-    return params[id];
-  }
-
-  function quoteRegExp(string, pattern, squash, optional) {
-    var surroundPattern = ['',''], result = string.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
-    if (!pattern) return result;
-    switch(squash) {
-      case false: surroundPattern = ['(', ')' + (optional ? "?" : "")]; break;
-      case true:  surroundPattern = ['?(', ')?']; break;
-      default:    surroundPattern = ['(' + squash + "|", ')?']; break;
-    }
-    return result + surroundPattern[0] + pattern + surroundPattern[1];
-  }
-
-  this.source = pattern;
-
-  // Split into static segments separated by path parameter placeholders.
-  // The number of segments is always 1 more than the number of parameters.
-  function matchDetails(m, isSearch) {
-    var id, regexp, segment, type, cfg, arrayMode;
-    id          = m[2] || m[3]; // IE[78] returns '' for unmatched groups instead of null
-    cfg         = config.params[id];
-    segment     = pattern.substring(last, m.index);
-    regexp      = isSearch ? m[4] : m[4] || (m[1] == '*' ? '.*' : null);
-    type        = $$UMFP.type(regexp || "string") || inherit($$UMFP.type("string"), { pattern: new RegExp(regexp, config.caseInsensitive ? 'i' : undefined) });
-    return {
-      id: id, regexp: regexp, segment: segment, type: type, cfg: cfg
-    };
-  }
-
-  var p, param, segment;
-  while ((m = placeholder.exec(pattern))) {
-    p = matchDetails(m, false);
-    if (p.segment.indexOf('?') >= 0) break; // we're into the search part
-
-    param = addParameter(p.id, p.type, p.cfg, "path");
-    compiled += quoteRegExp(p.segment, param.type.pattern.source, param.squash, param.isOptional);
-    segments.push(p.segment);
-    last = placeholder.lastIndex;
-  }
-  segment = pattern.substring(last);
-
-  // Find any search parameter names and remove them from the last segment
-  var i = segment.indexOf('?');
-
-  if (i >= 0) {
-    var search = this.sourceSearch = segment.substring(i);
-    segment = segment.substring(0, i);
-    this.sourcePath = pattern.substring(0, last + i);
-
-    if (search.length > 0) {
-      last = 0;
-      while ((m = searchPlaceholder.exec(search))) {
-        p = matchDetails(m, true);
-        param = addParameter(p.id, p.type, p.cfg, "search");
-        last = placeholder.lastIndex;
-        // check if ?&
-      }
-    }
-  } else {
-    this.sourcePath = pattern;
-    this.sourceSearch = '';
-  }
-
-  compiled += quoteRegExp(segment) + (config.strict === false ? '\/?' : '') + '$';
-  segments.push(segment);
-
-  this.regexp = new RegExp(compiled, config.caseInsensitive ? 'i' : undefined);
-  this.prefix = segments[0];
-  this.$$paramNames = paramNames;
-}
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#concat
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Returns a new matcher for a pattern constructed by appending the path part and adding the
- * search parameters of the specified pattern to this pattern. The current pattern is not
- * modified. This can be understood as creating a pattern for URLs that are relative to (or
- * suffixes of) the current pattern.
- *
- * @example
- * The following two matchers are equivalent:
- * <pre>
- * new UrlMatcher('/user/{id}?q').concat('/details?date');
- * new UrlMatcher('/user/{id}/details?q&date');
- * </pre>
- *
- * @param {string} pattern  The pattern to append.
- * @param {Object} config  An object hash of the configuration for the matcher.
- * @returns {UrlMatcher}  A matcher for the concatenated pattern.
- */
-UrlMatcher.prototype.concat = function (pattern, config) {
-  // Because order of search parameters is irrelevant, we can add our own search
-  // parameters to the end of the new pattern. Parse the new pattern by itself
-  // and then join the bits together, but it's much easier to do this on a string level.
-  var defaultConfig = {
-    caseInsensitive: $$UMFP.caseInsensitive(),
-    strict: $$UMFP.strictMode(),
-    squash: $$UMFP.defaultSquashPolicy()
-  };
-  return new UrlMatcher(this.sourcePath + pattern + this.sourceSearch, extend(defaultConfig, config), this);
-};
-
-UrlMatcher.prototype.toString = function () {
-  return this.source;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#exec
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Tests the specified path against this matcher, and returns an object containing the captured
- * parameter values, or null if the path does not match. The returned object contains the values
- * of any search parameters that are mentioned in the pattern, but their value may be null if
- * they are not present in `searchParams`. This means that search parameters are always treated
- * as optional.
- *
- * @example
- * <pre>
- * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {
- *   x: '1', q: 'hello'
- * });
- * // returns { id: 'bob', q: 'hello', r: null }
- * </pre>
- *
- * @param {string} path  The URL path to match, e.g. `$location.path()`.
- * @param {Object} searchParams  URL search parameters, e.g. `$location.search()`.
- * @returns {Object}  The captured parameter values.
- */
-UrlMatcher.prototype.exec = function (path, searchParams) {
-  var m = this.regexp.exec(path);
-  if (!m) return null;
-  searchParams = searchParams || {};
-
-  var paramNames = this.parameters(), nTotal = paramNames.length,
-    nPath = this.segments.length - 1,
-    values = {}, i, j, cfg, paramName;
-
-  if (nPath !== m.length - 1) throw new Error("Unbalanced capture group in route '" + this.source + "'");
-
-  function decodePathArray(string) {
-    function reverseString(str) { return str.split("").reverse().join(""); }
-    function unquoteDashes(str) { return str.replace(/\\-/g, "-"); }
-
-    var split = reverseString(string).split(/-(?!\\)/);
-    var allReversed = map(split, reverseString);
-    return map(allReversed, unquoteDashes).reverse();
-  }
-
-  for (i = 0; i < nPath; i++) {
-    paramName = paramNames[i];
-    var param = this.params[paramName];
-    var paramVal = m[i+1];
-    // if the param value matches a pre-replace pair, replace the value before decoding.
-    for (j = 0; j < param.replace; j++) {
-      if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;
-    }
-    if (paramVal && param.array === true) paramVal = decodePathArray(paramVal);
-    values[paramName] = param.value(paramVal);
-  }
-  for (/**/; i < nTotal; i++) {
-    paramName = paramNames[i];
-    values[paramName] = this.params[paramName].value(searchParams[paramName]);
-  }
-
-  return values;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#parameters
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Returns the names of all path and search parameters of this pattern in an unspecified order.
- *
- * @returns {Array.<string>}  An array of parameter names. Must be treated as read-only. If the
- *    pattern has no parameters, an empty array is returned.
- */
-UrlMatcher.prototype.parameters = function (param) {
-  if (!isDefined(param)) return this.$$paramNames;
-  return this.params[param] || null;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#validate
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Checks an object hash of parameters to validate their correctness according to the parameter
- * types of this `UrlMatcher`.
- *
- * @param {Object} params The object hash of parameters to validate.
- * @returns {boolean} Returns `true` if `params` validates, otherwise `false`.
- */
-UrlMatcher.prototype.validates = function (params) {
-  return this.params.$$validates(params);
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#format
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Creates a URL that matches this pattern by substituting the specified values
- * for the path and search parameters. Null values for path parameters are
- * treated as empty strings.
- *
- * @example
- * <pre>
- * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });
- * // returns '/user/bob?q=yes'
- * </pre>
- *
- * @param {Object} values  the values to substitute for the parameters in this pattern.
- * @returns {string}  the formatted URL (path and optionally search part).
- */
-UrlMatcher.prototype.format = function (values) {
-  values = values || {};
-  var segments = this.segments, params = this.parameters(), paramset = this.params;
-  if (!this.validates(values)) return null;
-
-  var i, search = false, nPath = segments.length - 1, nTotal = params.length, result = segments[0];
-
-  function encodeDashes(str) { // Replace dashes with encoded "\-"
-    return encodeURIComponent(str).replace(/-/g, function(c) { return '%5C%' + c.charCodeAt(0).toString(16).toUpperCase(); });
-  }
-
-  for (i = 0; i < nTotal; i++) {
-    var isPathParam = i < nPath;
-    var name = params[i], param = paramset[name], value = param.value(values[name]);
-    var isDefaultValue = param.isOptional && param.type.equals(param.value(), value);
-    var squash = isDefaultValue ? param.squash : false;
-    var encoded = param.type.encode(value);
-
-    if (isPathParam) {
-      var nextSegment = segments[i + 1];
-      if (squash === false) {
-        if (encoded != null) {
-          if (isArray(encoded)) {
-            result += map(encoded, encodeDashes).join("-");
-          } else {
-            result += encodeURIComponent(encoded);
-          }
-        }
-        result += nextSegment;
-      } else if (squash === true) {
-        var capture = result.match(/\/$/) ? /\/?(.*)/ : /(.*)/;
-        result += nextSegment.match(capture)[1];
-      } else if (isString(squash)) {
-        result += squash + nextSegment;
-      }
-    } else {
-      if (encoded == null || (isDefaultValue && squash !== false)) continue;
-      if (!isArray(encoded)) encoded = [ encoded ];
-      encoded = map(encoded, encodeURIComponent).join('&' + name + '=');
-      result += (search ? '&' : '?') + (name + '=' + encoded);
-      search = true;
-    }
-  }
-
-  return result;
-};
-
-/**
- * @ngdoc object
- * @name ui.router.util.type:Type
- *
- * @description
- * Implements an interface to define custom parameter types that can be decoded from and encoded to
- * string parameters matched in a URL. Used by {@link ui.router.util.type:UrlMatcher `UrlMatcher`}
- * objects when matching or formatting URLs, or comparing or validating parameter values.
- *
- * See {@link ui.router.util.$urlMatcherFactory#methods_type `$urlMatcherFactory#type()`} for more
- * information on registering custom types.
- *
- * @param {Object} config  A configuration object which contains the custom type definition.  The object's
- *        properties will override the default methods and/or pattern in `Type`'s public interface.
- * @example
- * <pre>
- * {
- *   decode: function(val) { return parseInt(val, 10); },
- *   encode: function(val) { return val && val.toString(); },
- *   equals: function(a, b) { return this.is(a) && a === b; },
- *   is: function(val) { return angular.isNumber(val) isFinite(val) && val % 1 === 0; },
- *   pattern: /\d+/
- * }
- * </pre>
- *
- * @property {RegExp} pattern The regular expression pattern used to match values of this type when
- *           coming from a substring of a URL.
- *
- * @returns {Object}  Returns a new `Type` object.
- */
-function Type(config) {
-  extend(this, config);
-}
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#is
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Detects whether a value is of a particular type. Accepts a native (decoded) value
- * and determines whether it matches the current `Type` object.
- *
- * @param {*} val  The value to check.
- * @param {string} key  Optional. If the type check is happening in the context of a specific
- *        {@link ui.router.util.type:UrlMatcher `UrlMatcher`} object, this is the name of the
- *        parameter in which `val` is stored. Can be used for meta-programming of `Type` objects.
- * @returns {Boolean}  Returns `true` if the value matches the type, otherwise `false`.
- */
-Type.prototype.is = function(val, key) {
-  return true;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#encode
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Encodes a custom/native type value to a string that can be embedded in a URL. Note that the
- * return value does *not* need to be URL-safe (i.e. passed through `encodeURIComponent()`), it
- * only needs to be a representation of `val` that has been coerced to a string.
- *
- * @param {*} val  The value to encode.
- * @param {string} key  The name of the parameter in which `val` is stored. Can be used for
- *        meta-programming of `Type` objects.
- * @returns {string}  Returns a string representation of `val` that can be encoded in a URL.
- */
-Type.prototype.encode = function(val, key) {
-  return val;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#decode
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Converts a parameter value (from URL string or transition param) to a custom/native value.
- *
- * @param {string} val  The URL parameter value to decode.
- * @param {string} key  The name of the parameter in which `val` is stored. Can be used for
- *        meta-programming of `Type` objects.
- * @returns {*}  Returns a custom representation of the URL parameter value.
- */
-Type.prototype.decode = function(val, key) {
-  return val;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#equals
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Determines whether two decoded values are equivalent.
- *
- * @param {*} a  A value to compare against.
- * @param {*} b  A value to compare against.
- * @returns {Boolean}  Returns `true` if the values are equivalent/equal, otherwise `false`.
- */
-Type.prototype.equals = function(a, b) {
-  return a == b;
-};
-
-Type.prototype.$subPattern = function() {
-  var sub = this.pattern.toString();
-  return sub.substr(1, sub.length - 2);
-};
-
-Type.prototype.pattern = /.*/;
-
-Type.prototype.toString = function() { return "{Type:" + this.name + "}"; };
-
-/** Given an encoded string, or a decoded object, returns a decoded object */
-Type.prototype.$normalize = function(val) {
-  return this.is(val) ? val : this.decode(val);
-};
-
-/*
- * Wraps an existing custom Type as an array of Type, depending on 'mode'.
- * e.g.:
- * - urlmatcher pattern "/path?{queryParam[]:int}"
- * - url: "/path?queryParam=1&queryParam=2
- * - $stateParams.queryParam will be [1, 2]
- * if `mode` is "auto", then
- * - url: "/path?queryParam=1 will create $stateParams.queryParam: 1
- * - url: "/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]
- */
-Type.prototype.$asArray = function(mode, isSearch) {
-  if (!mode) return this;
-  if (mode === "auto" && !isSearch) throw new Error("'auto' array mode is for query parameters only");
-
-  function ArrayType(type, mode) {
-    function bindTo(type, callbackName) {
-      return function() {
-        return type[callbackName].apply(type, arguments);
-      };
-    }
-
-    // Wrap non-array value as array
-    function arrayWrap(val) { return isArray(val) ? val : (isDefined(val) ? [ val ] : []); }
-    // Unwrap array value for "auto" mode. Return undefined for empty array.
-    function arrayUnwrap(val) {
-      switch(val.length) {
-        case 0: return undefined;
-        case 1: return mode === "auto" ? val[0] : val;
-        default: return val;
-      }
-    }
-    function falsey(val) { return !val; }
-
-    // Wraps type (.is/.encode/.decode) functions to operate on each value of an array
-    function arrayHandler(callback, allTruthyMode) {
-      return function handleArray(val) {
-        val = arrayWrap(val);
-        var result = map(val, callback);
-        if (allTruthyMode === true)
-          return filter(result, falsey).length === 0;
-        return arrayUnwrap(result);
-      };
-    }
-
-    // Wraps type (.equals) functions to operate on each value of an array
-    function arrayEqualsHandler(callback) {
-      return function handleArray(val1, val2) {
-        var left = arrayWrap(val1), right = arrayWrap(val2);
-        if (left.length !== right.length) return false;
-        for (var i = 0; i < left.length; i++) {
-          if (!callback(left[i], right[i])) return false;
-        }
-        return true;
-      };
-    }
-
-    this.encode = arrayHandler(bindTo(type, 'encode'));
-    this.decode = arrayHandler(bindTo(type, 'decode'));
-    this.is     = arrayHandler(bindTo(type, 'is'), true);
-    this.equals = arrayEqualsHandler(bindTo(type, 'equals'));
-    this.pattern = type.pattern;
-    this.$normalize = arrayHandler(bindTo(type, '$normalize'));
-    this.name = type.name;
-    this.$arrayMode = mode;
-  }
-
-  return new ArrayType(this, mode);
-};
-
-
-
-/**
- * @ngdoc object
- * @name ui.router.util.$urlMatcherFactory
- *
- * @description
- * Factory for {@link ui.router.util.type:UrlMatcher `UrlMatcher`} instances. The factory
- * is also available to providers under the name `$urlMatcherFactoryProvider`.
- */
-function $UrlMatcherFactory() {
-  $$UMFP = this;
-
-  var isCaseInsensitive = false, isStrictMode = true, defaultSquashPolicy = false;
-
-  function valToString(val) { return val != null ? val.toString().replace(/\//g, "%2F") : val; }
-  function valFromString(val) { return val != null ? val.toString().replace(/%2F/g, "/") : val; }
-
-  var $types = {}, enqueue = true, typeQueue = [], injector, defaultTypes = {
-    string: {
-      encode: valToString,
-      decode: valFromString,
-      // TODO: in 1.0, make string .is() return false if value is undefined/null by default.
-      // In 0.2.x, string params are optional by default for backwards compat
-      is: function(val) { return val == null || !isDefined(val) || typeof val === "string"; },
-      pattern: /[^/]*/
-    },
-    int: {
-      encode: valToString,
-      decode: function(val) { return parseInt(val, 10); },
-      is: function(val) { return isDefined(val) && this.decode(val.toString()) === val; },
-      pattern: /\d+/
-    },
-    bool: {
-      encode: function(val) { return val ? 1 : 0; },
-      decode: function(val) { return parseInt(val, 10) !== 0; },
-      is: function(val) { return val === true || val === false; },
-      pattern: /0|1/
-    },
-    date: {
-      encode: function (val) {
-        if (!this.is(val))
-          return undefined;
-        return [ val.getFullYear(),
-          ('0' + (val.getMonth() + 1)).slice(-2),
-          ('0' + val.getDate()).slice(-2)
-        ].join("-");
-      },
-      decode: function (val) {
-        if (this.is(val)) return val;
-        var match = this.capture.exec(val);
-        return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;
-      },
-      is: function(val) { return val instanceof Date && !isNaN(val.valueOf()); },
-      equals: function (a, b) { return this.is(a) && this.is(b) && a.toISOString() === b.toISOString(); },
-      pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
-      capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
-    },
-    json: {
-      encode: angular.toJson,
-      decode: angular.fromJson,
-      is: angular.isObject,
-      equals: angular.equals,
-      pattern: /[^/]*/
-    },
-    any: { // does not encode/decode
-      encode: angular.identity,
-      decode: angular.identity,
-      equals: angular.equals,
-      pattern: /.*/
-    }
-  };
-
-  function getDefaultConfig() {
-    return {
-      strict: isStrictMode,
-      caseInsensitive: isCaseInsensitive
-    };
-  }
-
-  function isInjectable(value) {
-    return (isFunction(value) || (isArray(value) && isFunction(value[value.length - 1])));
-  }
-
-  /**
-   * [Internal] Get the default value of a parameter, which may be an injectable function.
-   */
-  $UrlMatcherFactory.$$getDefaultValue = function(config) {
-    if (!isInjectable(config.value)) return config.value;
-    if (!injector) throw new Error("Injectable functions cannot be called at configuration time");
-    return injector.invoke(config.value);
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#caseInsensitive
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Defines whether URL matching should be case sensitive (the default behavior), or not.
-   *
-   * @param {boolean} value `false` to match URL in a case sensitive manner; otherwise `true`;
-   * @returns {boolean} the current value of caseInsensitive
-   */
-  this.caseInsensitive = function(value) {
-    if (isDefined(value))
-      isCaseInsensitive = value;
-    return isCaseInsensitive;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#strictMode
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Defines whether URLs should match trailing slashes, or not (the default behavior).
-   *
-   * @param {boolean=} value `false` to match trailing slashes in URLs, otherwise `true`.
-   * @returns {boolean} the current value of strictMode
-   */
-  this.strictMode = function(value) {
-    if (isDefined(value))
-      isStrictMode = value;
-    return isStrictMode;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#defaultSquashPolicy
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Sets the default behavior when generating or matching URLs with default parameter values.
-   *
-   * @param {string} value A string that defines the default parameter URL squashing behavior.
-   *    `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL
-   *    `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the
-   *             parameter is surrounded by slashes, squash (remove) one slash from the URL
-   *    any other string, e.g. "~": When generating an href with a default parameter value, squash (remove)
-   *             the parameter value from the URL and replace it with this string.
-   */
-  this.defaultSquashPolicy = function(value) {
-    if (!isDefined(value)) return defaultSquashPolicy;
-    if (value !== true && value !== false && !isString(value))
-      throw new Error("Invalid squash policy: " + value + ". Valid policies: false, true, arbitrary-string");
-    defaultSquashPolicy = value;
-    return value;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#compile
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Creates a {@link ui.router.util.type:UrlMatcher `UrlMatcher`} for the specified pattern.
-   *
-   * @param {string} pattern  The URL pattern.
-   * @param {Object} config  The config object hash.
-   * @returns {UrlMatcher}  The UrlMatcher.
-   */
-  this.compile = function (pattern, config) {
-    return new UrlMatcher(pattern, extend(getDefaultConfig(), config));
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#isMatcher
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Returns true if the specified object is a `UrlMatcher`, or false otherwise.
-   *
-   * @param {Object} object  The object to perform the type check against.
-   * @returns {Boolean}  Returns `true` if the object matches the `UrlMatcher` interface, by
-   *          implementing all the same methods.
-   */
-  this.isMatcher = function (o) {
-    if (!isObject(o)) return false;
-    var result = true;
-
-    forEach(UrlMatcher.prototype, function(val, name) {
-      if (isFunction(val)) {
-        result = result && (isDefined(o[name]) && isFunction(o[name]));
-      }
-    });
-    return result;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#type
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Registers a custom {@link ui.router.util.type:Type `Type`} object that can be used to
-   * generate URLs with typed parameters.
-   *
-   * @param {string} name  The type name.
-   * @param {Object|Function} definition   The type definition. See
-   *        {@link ui.router.util.type:Type `Type`} for information on the values accepted.
-   * @param {Object|Function} definitionFn (optional) A function that is injected before the app
-   *        runtime starts.  The result of this function is merged into the existing `definition`.
-   *        See {@link ui.router.util.type:Type `Type`} for information on the values accepted.
-   *
-   * @returns {Object}  Returns `$urlMatcherFactoryProvider`.
-   *
-   * @example
-   * This is a simple example of a custom type that encodes and decodes items from an
-   * array, using the array index as the URL-encoded value:
-   *
-   * <pre>
-   * var list = ['John', 'Paul', 'George', 'Ringo'];
-   *
-   * $urlMatcherFactoryProvider.type('listItem', {
-   *   encode: function(item) {
-   *     // Represent the list item in the URL using its corresponding index
-   *     return list.indexOf(item);
-   *   },
-   *   decode: function(item) {
-   *     // Look up the list item by index
-   *     return list[parseInt(item, 10)];
-   *   },
-   *   is: function(item) {
-   *     // Ensure the item is valid by checking to see that it appears
-   *     // in the list
-   *     return list.indexOf(item) > -1;
-   *   }
-   * });
-   *
-   * $stateProvider.state('list', {
-   *   url: "/list/{item:listItem}",
-   *   controller: function($scope, $stateParams) {
-   *     console.log($stateParams.item);
-   *   }
-   * });
-   *
-   * // ...
-   *
-   * // Changes URL to '/list/3', logs "Ringo" to the console
-   * $state.go('list', { item: "Ringo" });
-   * </pre>
-   *
-   * This is a more complex example of a type that relies on dependency injection to
-   * interact with services, and uses the parameter name from the URL to infer how to
-   * handle encoding and decoding parameter values:
-   *
-   * <pre>
-   * // Defines a custom type that gets a value from a service,
-   * // where each service gets different types of values from
-   * // a backend API:
-   * $urlMatcherFactoryProvider.type('dbObject', {}, function(Users, Posts) {
-   *
-   *   // Matches up services to URL parameter names
-   *   var services = {
-   *     user: Users,
-   *     post: Posts
-   *   };
-   *
-   *   return {
-   *     encode: function(object) {
-   *       // Represent the object in the URL using its unique ID
-   *       return object.id;
-   *     },
-   *     decode: function(value, key) {
-   *       // Look up the object by ID, using the parameter
-   *       // name (key) to call the correct service
-   *       return services[key].findById(value);
-   *     },
-   *     is: function(object, key) {
-   *       // Check that object is a valid dbObject
-   *       return angular.isObject(object) && object.id && services[key];
-   *     }
-   *     equals: function(a, b) {
-   *       // Check the equality of decoded objects by comparing
-   *       // their unique IDs
-   *       return a.id === b.id;
-   *     }
-   *   };
-   * });
-   *
-   * // In a config() block, you can then attach URLs with
-   * // type-annotated parameters:
-   * $stateProvider.state('users', {
-   *   url: "/users",
-   *   // ...
-   * }).state('users.item', {
-   *   url: "/{user:dbObject}",
-   *   controller: function($scope, $stateParams) {
-   *     // $stateParams.user will now be an object returned from
-   *     // the Users service
-   *   },
-   *   // ...
-   * });
-   * </pre>
-   */
-  this.type = function (name, definition, definitionFn) {
-    if (!isDefined(definition)) return $types[name];
-    if ($types.hasOwnProperty(name)) throw new Error("A type named '" + name + "' has already been defined.");
-
-    $types[name] = new Type(extend({ name: name }, definition));
-    if (definitionFn) {
-      typeQueue.push({ name: name, def: definitionFn });
-      if (!enqueue) flushTypeQueue();
-    }
-    return this;
-  };
-
-  // `flushTypeQueue()` waits until `$urlMatcherFactory` is injected before invoking the queued `definitionFn`s
-  function flushTypeQueue() {
-    while(typeQueue.length) {
-      var type = typeQueue.shift();
-      if (type.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
-      angular.extend($types[type.name], injector.invoke(type.def));
-    }
-  }
-
-  // Register default types. Store them in the prototype of $types.
-  forEach(defaultTypes, function(type, name) { $types[name] = new Type(extend({name: name}, type)); });
-  $types = inherit($types, {});
-
-  /* No need to document $get, since it returns this */
-  this.$get = ['$injector', function ($injector) {
-    injector = $injector;
-    enqueue = false;
-    flushTypeQueue();
-
-    forEach(defaultTypes, function(type, name) {
-      if (!$types[name]) $types[name] = new Type(type);
-    });
-    return this;
-  }];
-
-  this.Param = function Param(id, type, config, location) {
-    var self = this;
-    config = unwrapShorthand(config);
-    type = getType(config, type, location);
-    var arrayMode = getArrayMode();
-    type = arrayMode ? type.$asArray(arrayMode, location === "search") : type;
-    if (type.name === "string" && !arrayMode && location === "path" && config.value === undefined)
-      config.value = ""; // for 0.2.x; in 0.3.0+ do not automatically default to ""
-    var isOptional = config.value !== undefined;
-    var squash = getSquashPolicy(config, isOptional);
-    var replace = getReplace(config, arrayMode, isOptional, squash);
-
-    function unwrapShorthand(config) {
-      var keys = isObject(config) ? objectKeys(config) : [];
-      var isShorthand = indexOf(keys, "value") === -1 && indexOf(keys, "type") === -1 &&
-                        indexOf(keys, "squash") === -1 && indexOf(keys, "array") === -1;
-      if (isShorthand) config = { value: config };
-      config.$$fn = isInjectable(config.value) ? config.value : function () { return config.value; };
-      return config;
-    }
-
-    function getType(config, urlType, location) {
-      if (config.type && urlType) throw new Error("Param '"+id+"' has two type configurations.");
-      if (urlType) return urlType;
-      if (!config.type) return (location === "config" ? $types.any : $types.string);
-      return config.type instanceof Type ? config.type : new Type(config.type);
-    }
-
-    // array config: param name (param[]) overrides default settings.  explicit config overrides param name.
-    function getArrayMode() {
-      var arrayDefaults = { array: (location === "search" ? "auto" : false) };
-      var arrayParamNomenclature = id.match(/\[\]$/) ? { array: true } : {};
-      return extend(arrayDefaults, arrayParamNomenclature, config).array;
-    }
-
-    /**
-     * returns false, true, or the squash value to indicate the "default parameter url squash policy".
-     */
-    function getSquashPolicy(config, isOptional) {
-      var squash = config.squash;
-      if (!isOptional || squash === false) return false;
-      if (!isDefined(squash) || squash == null) return defaultSquashPolicy;
-      if (squash === true || isString(squash)) return squash;
-      throw new Error("Invalid squash policy: '" + squash + "'. Valid policies: false, true, or arbitrary string");
-    }
-
-    function getReplace(config, arrayMode, isOptional, squash) {
-      var replace, configuredKeys, defaultPolicy = [
-        { from: "",   to: (isOptional || arrayMode ? undefined : "") },
-        { from: null, to: (isOptional || arrayMode ? undefined : "") }
-      ];
-      replace = isArray(config.replace) ? config.replace : [];
-      if (isString(squash))
-        replace.push({ from: squash, to: undefined });
-      configuredKeys = map(replace, function(item) { return item.from; } );
-      return filter(defaultPolicy, function(item) { return indexOf(configuredKeys, item.from) === -1; }).concat(replace);
-    }
-
-    /**
-     * [Internal] Get the default value of a parameter, which may be an injectable function.
-     */
-    function $$getDefaultValue() {
-      if (!injector) throw new Error("Injectable functions cannot be called at configuration time");
-      var defaultValue = injector.invoke(config.$$fn);
-      if (defaultValue !== null && defaultValue !== undefined && !self.type.is(defaultValue))
-        throw new Error("Default value (" + defaultValue + ") for parameter '" + self.id + "' is not an instance of Type (" + self.type.name + ")");
-      return defaultValue;
-    }
-
-    /**
-     * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the
-     * default value, which may be the result of an injectable function.
-     */
-    function $value(value) {
-      function hasReplaceVal(val) { return function(obj) { return obj.from === val; }; }
-      function $replace(value) {
-        var replacement = map(filter(self.replace, hasReplaceVal(value)), function(obj) { return obj.to; });
-        return replacement.length ? replacement[0] : value;
-      }
-      value = $replace(value);
-      return !isDefined(value) ? $$getDefaultValue() : self.type.$normalize(value);
-    }
-
-    function toString() { return "{Param:" + id + " " + type + " squash: '" + squash + "' optional: " + isOptional + "}"; }
-
-    extend(this, {
-      id: id,
-      type: type,
-      location: location,
-      array: arrayMode,
-      squash: squash,
-      replace: replace,
-      isOptional: isOptional,
-      value: $value,
-      dynamic: undefined,
-      config: config,
-      toString: toString
-    });
-  };
-
-  function ParamSet(params) {
-    extend(this, params || {});
-  }
-
-  ParamSet.prototype = {
-    $$new: function() {
-      return inherit(this, extend(new ParamSet(), { $$parent: this}));
-    },
-    $$keys: function () {
-      var keys = [], chain = [], parent = this,
-        ignore = objectKeys(ParamSet.prototype);
-      while (parent) { chain.push(parent); parent = parent.$$parent; }
-      chain.reverse();
-      forEach(chain, function(paramset) {
-        forEach(objectKeys(paramset), function(key) {
-            if (indexOf(keys, key) === -1 && indexOf(ignore, key) === -1) keys.push(key);
-        });
-      });
-      return keys;
-    },
-    $$values: function(paramValues) {
-      var values = {}, self = this;
-      forEach(self.$$keys(), function(key) {
-        values[key] = self[key].value(paramValues && paramValues[key]);
-      });
-      return values;
-    },
-    $$equals: function(paramValues1, paramValues2) {
-      var equal = true, self = this;
-      forEach(self.$$keys(), function(key) {
-        var left = paramValues1 && paramValues1[key], right = paramValues2 && paramValues2[key];
-        if (!self[key].type.equals(left, right)) equal = false;
-      });
-      return equal;
-    },
-    $$validates: function $$validate(paramValues) {
-      var keys = this.$$keys(), i, param, rawVal, normalized, encoded;
-      for (i = 0; i < keys.length; i++) {
-        param = this[keys[i]];
-        rawVal = paramValues[keys[i]];
-        if ((rawVal === undefined || rawVal === null) && param.isOptional)
-          break; // There was no parameter value, but the param is optional
-        normalized = param.type.$normalize(rawVal);
-        if (!param.type.is(normalized))
-          return false; // The value was not of the correct Type, and could not be decoded to the correct Type
-        encoded = param.type.encode(normalized);
-        if (angular.isString(encoded) && !param.type.pattern.exec(encoded))
-          return false; // The value was of the correct type, but when encoded, did not match the Type's regexp
-      }
-      return true;
-    },
-    $$parent: undefined
-  };
-
-  this.ParamSet = ParamSet;
-}
-
-// Register as a provider so it's available to other providers
-angular.module('ui.router.util').provider('$urlMatcherFactory', $UrlMatcherFactory);
-angular.module('ui.router.util').run(['$urlMatcherFactory', function($urlMatcherFactory) { }]);
-
-/**
- * @ngdoc object
- * @name ui.router.router.$urlRouterProvider
- *
- * @requires ui.router.util.$urlMatcherFactoryProvider
- * @requires $locationProvider
- *
- * @description
- * `$urlRouterProvider` has the responsibility of watching `$location`. 
- * When `$location` changes it runs through a list of rules one by one until a 
- * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify 
- * a url in a state configuration. All urls are compiled into a UrlMatcher object.
- *
- * There are several methods on `$urlRouterProvider` that make it useful to use directly
- * in your module config.
- */
-$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];
-function $UrlRouterProvider(   $locationProvider,   $urlMatcherFactory) {
-  var rules = [], otherwise = null, interceptDeferred = false, listener;
-
-  // Returns a string that is a prefix of all strings matching the RegExp
-  function regExpPrefix(re) {
-    var prefix = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(re.source);
-    return (prefix != null) ? prefix[1].replace(/\\(.)/g, "$1") : '';
-  }
-
-  // Interpolates matched values into a String.replace()-style pattern
-  function interpolate(pattern, match) {
-    return pattern.replace(/\$(\$|\d{1,2})/, function (m, what) {
-      return match[what === '$' ? 0 : Number(what)];
-    });
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#rule
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Defines rules that are used by `$urlRouterProvider` to find matches for
-   * specific URLs.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   // Here's an example of how you might allow case insensitive urls
-   *   $urlRouterProvider.rule(function ($injector, $location) {
-   *     var path = $location.path(),
-   *         normalized = path.toLowerCase();
-   *
-   *     if (path !== normalized) {
-   *       return normalized;
-   *     }
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {object} rule Handler function that takes `$injector` and `$location`
-   * services as arguments. You can use them to return a valid path as a string.
-   *
-   * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
-   */
-  this.rule = function (rule) {
-    if (!isFunction(rule)) throw new Error("'rule' must be a function");
-    rules.push(rule);
-    return this;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.router.$urlRouterProvider#otherwise
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Defines a path that is used when an invalid route is requested.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   // if the path doesn't match any of the urls you configured
-   *   // otherwise will take care of routing the user to the
-   *   // specified url
-   *   $urlRouterProvider.otherwise('/index');
-   *
-   *   // Example of using function rule as param
-   *   $urlRouterProvider.otherwise(function ($injector, $location) {
-   *     return '/a/valid/url';
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {string|object} rule The url path you want to redirect to or a function 
-   * rule that returns the url path. The function version is passed two params: 
-   * `$injector` and `$location` services, and must return a url string.
-   *
-   * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
-   */
-  this.otherwise = function (rule) {
-    if (isString(rule)) {
-      var redirect = rule;
-      rule = function () { return redirect; };
-    }
-    else if (!isFunction(rule)) throw new Error("'rule' must be a function");
-    otherwise = rule;
-    return this;
-  };
-
-
-  function handleIfMatch($injector, handler, match) {
-    if (!match) return false;
-    var result = $injector.invoke(handler, handler, { $match: match });
-    return isDefined(result) ? result : true;
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#when
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Registers a handler for a given url matching. if handle is a string, it is
-   * treated as a redirect, and is interpolated according to the syntax of match
-   * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).
-   *
-   * If the handler is a function, it is injectable. It gets invoked if `$location`
-   * matches. You have the option of inject the match object as `$match`.
-   *
-   * The handler can return
-   *
-   * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`
-   *   will continue trying to find another one that matches.
-   * - **string** which is treated as a redirect and passed to `$location.url()`
-   * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {
-   *     if ($state.$current.navigable !== state ||
-   *         !equalForKeys($match, $stateParams) {
-   *      $state.transitionTo(state, $match, false);
-   *     }
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {string|object} what The incoming path that you want to redirect.
-   * @param {string|object} handler The path you want to redirect your user to.
-   */
-  this.when = function (what, handler) {
-    var redirect, handlerIsString = isString(handler);
-    if (isString(what)) what = $urlMatcherFactory.compile(what);
-
-    if (!handlerIsString && !isFunction(handler) && !isArray(handler))
-      throw new Error("invalid 'handler' in when()");
-
-    var strategies = {
-      matcher: function (what, handler) {
-        if (handlerIsString) {
-          redirect = $urlMatcherFactory.compile(handler);
-          handler = ['$match', function ($match) { return redirect.format($match); }];
-        }
-        return extend(function ($injector, $location) {
-          return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));
-        }, {
-          prefix: isString(what.prefix) ? what.prefix : ''
-        });
-      },
-      regex: function (what, handler) {
-        if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky");
-
-        if (handlerIsString) {
-          redirect = handler;
-          handler = ['$match', function ($match) { return interpolate(redirect, $match); }];
-        }
-        return extend(function ($injector, $location) {
-          return handleIfMatch($injector, handler, what.exec($location.path()));
-        }, {
-          prefix: regExpPrefix(what)
-        });
-      }
-    };
-
-    var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };
-
-    for (var n in check) {
-      if (check[n]) return this.rule(strategies[n](what, handler));
-    }
-
-    throw new Error("invalid 'what' in when()");
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#deferIntercept
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Disables (or enables) deferring location change interception.
-   *
-   * If you wish to customize the behavior of syncing the URL (for example, if you wish to
-   * defer a transition but maintain the current URL), call this method at configuration time.
-   * Then, at run time, call `$urlRouter.listen()` after you have configured your own
-   * `$locationChangeSuccess` event handler.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *
-   *   // Prevent $urlRouter from automatically intercepting URL changes;
-   *   // this allows you to configure custom behavior in between
-   *   // location changes and route synchronization:
-   *   $urlRouterProvider.deferIntercept();
-   *
-   * }).run(function ($rootScope, $urlRouter, UserService) {
-   *
-   *   $rootScope.$on('$locationChangeSuccess', function(e) {
-   *     // UserService is an example service for managing user state
-   *     if (UserService.isLoggedIn()) return;
-   *
-   *     // Prevent $urlRouter's default handler from firing
-   *     e.preventDefault();
-   *
-   *     UserService.handleLogin().then(function() {
-   *       // Once the user has logged in, sync the current URL
-   *       // to the router:
-   *       $urlRouter.sync();
-   *     });
-   *   });
-   *
-   *   // Configures $urlRouter's listener *after* your custom listener
-   *   $urlRouter.listen();
-   * });
-   * </pre>
-   *
-   * @param {boolean} defer Indicates whether to defer location change interception. Passing
-            no parameter is equivalent to `true`.
-   */
-  this.deferIntercept = function (defer) {
-    if (defer === undefined) defer = true;
-    interceptDeferred = defer;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.router.$urlRouter
-   *
-   * @requires $location
-   * @requires $rootScope
-   * @requires $injector
-   * @requires $browser
-   *
-   * @description
-   *
-   */
-  this.$get = $get;
-  $get.$inject = ['$location', '$rootScope', '$injector', '$browser'];
-  function $get(   $location,   $rootScope,   $injector,   $browser) {
-
-    var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl;
-
-    function appendBasePath(url, isHtml5, absolute) {
-      if (baseHref === '/') return url;
-      if (isHtml5) return baseHref.slice(0, -1) + url;
-      if (absolute) return baseHref.slice(1) + url;
-      return url;
-    }
-
-    // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree
-    function update(evt) {
-      if (evt && evt.defaultPrevented) return;
-      var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl;
-      lastPushedUrl = undefined;
-      // TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573
-      //if (ignoreUpdate) return true;
-
-      function check(rule) {
-        var handled = rule($injector, $location);
-
-        if (!handled) return false;
-        if (isString(handled)) $location.replace().url(handled);
-        return true;
-      }
-      var n = rules.length, i;
-
-      for (i = 0; i < n; i++) {
-        if (check(rules[i])) return;
-      }
-      // always check otherwise last to allow dynamic updates to the set of rules
-      if (otherwise) check(otherwise);
-    }
-
-    function listen() {
-      listener = listener || $rootScope.$on('$locationChangeSuccess', update);
-      return listener;
-    }
-
-    if (!interceptDeferred) listen();
-
-    return {
-      /**
-       * @ngdoc function
-       * @name ui.router.router.$urlRouter#sync
-       * @methodOf ui.router.router.$urlRouter
-       *
-       * @description
-       * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.
-       * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,
-       * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed
-       * with the transition by calling `$urlRouter.sync()`.
-       *
-       * @example
-       * <pre>
-       * angular.module('app', ['ui.router'])
-       *   .run(function($rootScope, $urlRouter) {
-       *     $rootScope.$on('$locationChangeSuccess', function(evt) {
-       *       // Halt state change from even starting
-       *       evt.preventDefault();
-       *       // Perform custom logic
-       *       var meetsRequirement = ...
-       *       // Continue with the update and state transition if logic allows
-       *       if (meetsRequirement) $urlRouter.sync();
-       *     });
-       * });
-       * </pre>
-       */
-      sync: function() {
-        update();
-      },
-
-      listen: function() {
-        return listen();
-      },
-
-      update: function(read) {
-        if (read) {
-          location = $location.url();
-          return;
-        }
-        if ($location.url() === location) return;
-
-        $location.url(location);
-        $location.replace();
-      },
-
-      push: function(urlMatcher, params, options) {
-         var url = urlMatcher.format(params || {});
-
-        // Handle the special hash param, if needed
-        if (url !== null && params && params['#']) {
-            url += '#' + params['#'];
-        }
-
-        $location.url(url);
-        lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined;
-        if (options && options.replace) $location.replace();
-      },
-
-      /**
-       * @ngdoc function
-       * @name ui.router.router.$urlRouter#href
-       * @methodOf ui.router.router.$urlRouter
-       *
-       * @description
-       * A URL generation method that returns the compiled URL for a given
-       * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters.
-       *
-       * @example
-       * <pre>
-       * $bob = $urlRouter.href(new UrlMatcher("/about/:person"), {
-       *   person: "bob"
-       * });
-       * // $bob == "/about/bob";
-       * </pre>
-       *
-       * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate.
-       * @param {object=} params An object of parameter values to fill the matcher's required parameters.
-       * @param {object=} options Options object. The options are:
-       *
-       * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. "http://www.example.com/fullurl".
-       *
-       * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`
-       */
-      href: function(urlMatcher, params, options) {
-        if (!urlMatcher.validates(params)) return null;
-
-        var isHtml5 = $locationProvider.html5Mode();
-        if (angular.isObject(isHtml5)) {
-          isHtml5 = isHtml5.enabled;
-        }
-        
-        var url = urlMatcher.format(params);
-        options = options || {};
-
-        if (!isHtml5 && url !== null) {
-          url = "#" + $locationProvider.hashPrefix() + url;
-        }
-
-        // Handle special hash param, if needed
-        if (url !== null && params && params['#']) {
-          url += '#' + params['#'];
-        }
-
-        url = appendBasePath(url, isHtml5, options.absolute);
-
-        if (!options.absolute || !url) {
-          return url;
-        }
-
-        var slash = (!isHtml5 && url ? '/' : ''), port = $location.port();
-        port = (port === 80 || port === 443 ? '' : ':' + port);
-
-        return [$location.protocol(), '://', $location.host(), port, slash, url].join('');
-      }
-    };
-  }
-}
-
-angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);
-
-/**
- * @ngdoc object
- * @name ui.router.state.$stateProvider
- *
- * @requires ui.router.router.$urlRouterProvider
- * @requires ui.router.util.$urlMatcherFactoryProvider
- *
- * @description
- * The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely
- * on state.
- *
- * A state corresponds to a "place" in the application in terms of the overall UI and
- * navigation. A state describes (via the controller / template / view properties) what
- * the UI looks like and does at that place.
- *
- * States often have things in common, and the primary way of factoring out these
- * commonalities in this model is via the state hierarchy, i.e. parent/child states aka
- * nested states.
- *
- * The `$stateProvider` provides interfaces to declare these states for your app.
- */
-$StateProvider.$inject = ['$urlRouterProvider', '$urlMatcherFactoryProvider'];
-function $StateProvider(   $urlRouterProvider,   $urlMatcherFactory) {
-
-  var root, states = {}, $state, queue = {}, abstractKey = 'abstract';
-
-  // Builds state properties from definition passed to registerState()
-  var stateBuilder = {
-
-    // Derive parent state from a hierarchical name only if 'parent' is not explicitly defined.
-    // state.children = [];
-    // if (parent) parent.children.push(state);
-    parent: function(state) {
-      if (isDefined(state.parent) && state.parent) return findState(state.parent);
-      // regex matches any valid composite state name
-      // would match "contact.list" but not "contacts"
-      var compositeName = /^(.+)\.[^.]+$/.exec(state.name);
-      return compositeName ? findState(compositeName[1]) : root;
-    },
-
-    // inherit 'data' from parent and override by own values (if any)
-    data: function(state) {
-      if (state.parent && state.parent.data) {
-        state.data = state.self.data = extend({}, state.parent.data, state.data);
-      }
-      return state.data;
-    },
-
-    // Build a URLMatcher if necessary, either via a relative or absolute URL
-    url: function(state) {
-      var url = state.url, config = { params: state.params || {} };
-
-      if (isString(url)) {
-        if (url.charAt(0) == '^') return $urlMatcherFactory.compile(url.substring(1), config);
-        return (state.parent.navigable || root).url.concat(url, config);
-      }
-
-      if (!url || $urlMatcherFactory.isMatcher(url)) return url;
-      throw new Error("Invalid url '" + url + "' in state '" + state + "'");
-    },
-
-    // Keep track of the closest ancestor state that has a URL (i.e. is navigable)
-    navigable: function(state) {
-      return state.url ? state : (state.parent ? state.parent.navigable : null);
-    },
-
-    // Own parameters for this state. state.url.params is already built at this point. Create and add non-url params
-    ownParams: function(state) {
-      var params = state.url && state.url.params || new $$UMFP.ParamSet();
-      forEach(state.params || {}, function(config, id) {
-        if (!params[id]) params[id] = new $$UMFP.Param(id, null, config, "config");
-      });
-      return params;
-    },
-
-    // Derive parameters for this state and ensure they're a super-set of parent's parameters
-    params: function(state) {
-      return state.parent && state.parent.params ? extend(state.parent.params.$$new(), state.ownParams) : new $$UMFP.ParamSet();
-    },
-
-    // If there is no explicit multi-view configuration, make one up so we don't have
-    // to handle both cases in the view directive later. Note that having an explicit
-    // 'views' property will mean the default unnamed view properties are ignored. This
-    // is also a good time to resolve view names to absolute names, so everything is a
-    // straight lookup at link time.
-    views: function(state) {
-      var views = {};
-
-      forEach(isDefined(state.views) ? state.views : { '': state }, function (view, name) {
-        if (name.indexOf('@') < 0) name += '@' + state.parent.name;
-        views[name] = view;
-      });
-      return views;
-    },
-
-    // Keep a full path from the root down to this state as this is needed for state activation.
-    path: function(state) {
-      return state.parent ? state.parent.path.concat(state) : []; // exclude root from path
-    },
-
-    // Speed up $state.contains() as it's used a lot
-    includes: function(state) {
-      var includes = state.parent ? extend({}, state.parent.includes) : {};
-      includes[state.name] = true;
-      return includes;
-    },
-
-    $delegates: {}
-  };
-
-  function isRelative(stateName) {
-    return stateName.indexOf(".") === 0 || stateName.indexOf("^") === 0;
-  }
-
-  function findState(stateOrName, base) {
-    if (!stateOrName) return undefined;
-
-    var isStr = isString(stateOrName),
-        name  = isStr ? stateOrName : stateOrName.name,
-        path  = isRelative(name);
-
-    if (path) {
-      if (!base) throw new Error("No reference point given for path '"  + name + "'");
-      base = findState(base);
-      
-      var rel = name.split("."), i = 0, pathLength = rel.length, current = base;
-
-      for (; i < pathLength; i++) {
-        if (rel[i] === "" && i === 0) {
-          current = base;
-          continue;
-        }
-        if (rel[i] === "^") {
-          if (!current.parent) throw new Error("Path '" + name + "' not valid for state '" + base.name + "'");
-          current = current.parent;
-          continue;
-        }
-        break;
-      }
-      rel = rel.slice(i).join(".");
-      name = current.name + (current.name && rel ? "." : "") + rel;
-    }
-    var state = states[name];
-
-    if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {
-      return state;
-    }
-    return undefined;
-  }
-
-  function queueState(parentName, state) {
-    if (!queue[parentName]) {
-      queue[parentName] = [];
-    }
-    queue[parentName].push(state);
-  }
-
-  function flushQueuedChildren(parentName) {
-    var queued = queue[parentName] || [];
-    while(queued.length) {
-      registerState(queued.shift());
-    }
-  }
-
-  function registerState(state) {
-    // Wrap a new object around the state so we can store our private details easily.
-    state = inherit(state, {
-      self: state,
-      resolve: state.resolve || {},
-      toString: function() { return this.name; }
-    });
-
-    var name = state.name;
-    if (!isString(name) || name.indexOf('@') >= 0) throw new Error("State must have a valid name");
-    if (states.hasOwnProperty(name)) throw new Error("State '" + name + "'' is already defined");
-
-    // Get parent name
-    var parentName = (name.indexOf('.') !== -1) ? name.substring(0, name.lastIndexOf('.'))
-        : (isString(state.parent)) ? state.parent
-        : (isObject(state.parent) && isString(state.parent.name)) ? state.parent.name
-        : '';
-
-    // If parent is not registered yet, add state to queue and register later
-    if (parentName && !states[parentName]) {
-      return queueState(parentName, state.self);
-    }
-
-    for (var key in stateBuilder) {
-      if (isFunction(stateBuilder[key])) state[key] = stateBuilder[key](state, stateBuilder.$delegates[key]);
-    }
-    states[name] = state;
-
-    // Register the state in the global state list and with $urlRouter if necessary.
-    if (!state[abstractKey] && state.url) {
-      $urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {
-        if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {
-          $state.transitionTo(state, $match, { inherit: true, location: false });
-        }
-      }]);
-    }
-
-    // Register any queued children
-    flushQueuedChildren(name);
-
-    return state;
-  }
-
-  // Checks text to see if it looks like a glob.
-  function isGlob (text) {
-    return text.indexOf('*') > -1;
-  }
-
-  // Returns true if glob matches current $state name.
-  function doesStateMatchGlob (glob) {
-    var globSegments = glob.split('.'),
-        segments = $state.$current.name.split('.');
-
-    //match single stars
-    for (var i = 0, l = globSegments.length; i < l; i++) {
-      if (globSegments[i] === '*') {
-        segments[i] = '*';
-      }
-    }
-
-    //match greedy starts
-    if (globSegments[0] === '**') {
-       segments = segments.slice(indexOf(segments, globSegments[1]));
-       segments.unshift('**');
-    }
-    //match greedy ends
-    if (globSegments[globSegments.length - 1] === '**') {
-       segments.splice(indexOf(segments, globSegments[globSegments.length - 2]) + 1, Number.MAX_VALUE);
-       segments.push('**');
-    }
-
-    if (globSegments.length != segments.length) {
-      return false;
-    }
-
-    return segments.join('') === globSegments.join('');
-  }
-
-
-  // Implicit root state that is always active
-  root = registerState({
-    name: '',
-    url: '^',
-    views: null,
-    'abstract': true
-  });
-  root.navigable = null;
-
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$stateProvider#decorator
-   * @methodOf ui.router.state.$stateProvider
-   *
-   * @description
-   * Allows you to extend (carefully) or override (at your own peril) the 
-   * `stateBuilder` object used internally by `$stateProvider`. This can be used 
-   * to add custom functionality to ui-router, for example inferring templateUrl 
-   * based on the state name.
-   *
-   * When passing only a name, it returns the current (original or decorated) builder
-   * function that matches `name`.
-   *
-   * The builder functions that can be decorated are listed below. Though not all
-   * necessarily have a good use case for decoration, that is up to you to decide.
-   *
-   * In addition, users can attach custom decorators, which will generate new 
-   * properties within the state's internal definition. There is currently no clear 
-   * use-case for this beyond accessing internal states (i.e. $state.$current), 
-   * however, expect this to become increasingly relevant as we introduce additional 
-   * meta-programming features.
-   *
-   * **Warning**: Decorators should not be interdependent because the order of 
-   * execution of the builder functions in non-deterministic. Builder functions 
-   * should only be dependent on the state definition object and super function.
-   *
-   *
-   * Existing builder functions and current return values:
-   *
-   * - **parent** `{object}` - returns the parent state object.
-   * - **data** `{object}` - returns state data, including any inherited data that is not
-   *   overridden by own values (if any).
-   * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}
-   *   or `null`.
-   * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is 
-   *   navigable).
-   * - **params** `{object}` - returns an array of state params that are ensured to 
-   *   be a super-set of parent's params.
-   * - **views** `{object}` - returns a views object where each key is an absolute view 
-   *   name (i.e. "viewName@stateName") and each value is the config object 
-   *   (template, controller) for the view. Even when you don't use the views object 
-   *   explicitly on a state config, one is still created for you internally.
-   *   So by decorating this builder function you have access to decorating template 
-   *   and controller properties.
-   * - **ownParams** `{object}` - returns an array of params that belong to the state, 
-   *   not including any params defined by ancestor states.
-   * - **path** `{string}` - returns the full path from the root down to this state. 
-   *   Needed for state activation.
-   * - **includes** `{object}` - returns an object that includes every state that 
-   *   would pass a `$state.includes()` test.
-   *
-   * @example
-   * <pre>
-   * // Override the internal 'views' builder with a function that takes the state
-   * // definition, and a reference to the internal function being overridden:
-   * $stateProvider.decorator('views', function (state, parent) {
-   *   var result = {},
-   *       views = parent(state);
-   *
-   *   angular.forEach(views, function (config, name) {
-   *     var autoName = (state.name + '.' + name).replace('.', '/');
-   *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';
-   *     result[name] = config;
-   *   });
-   *   return result;
-   * });
-   *
-   * $stateProvider.state('home', {
-   *   views: {
-   *     'contact.list': { controller: 'ListController' },
-   *     'contact.item': { controller: 'ItemController' }
-   *   }
-   * });
-   *
-   * // ...
-   *
-   * $state.go('home');
-   * // Auto-populates list and item views with /partials/home/contact/list.html,
-   * // and /partials/home/contact/item.html, respectively.
-   * </pre>
-   *
-   * @param {string} name The name of the builder function to decorate. 
-   * @param {object} func A function that is responsible for decorating the original 
-   * builder function. The function receives two parameters:
-   *
-   *   - `{object}` - state - The state config object.
-   *   - `{object}` - super - The original builder function.
-   *
-   * @return {object} $stateProvider - $stateProvider instance
-   */
-  this.decorator = decorator;
-  function decorator(name, func) {
-    /*jshint validthis: true */
-    if (isString(name) && !isDefined(func)) {
-      return stateBuilder[name];
-    }
-    if (!isFunction(func) || !isString(name)) {
-      return this;
-    }
-    if (stateBuilder[name] && !stateBuilder.$delegates[name]) {
-      stateBuilder.$delegates[name] = stateBuilder[name];
-    }
-    stateBuilder[name] = func;
-    return this;
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$stateProvider#state
-   * @methodOf ui.router.state.$stateProvider
-   *
-   * @description
-   * Registers a state configuration under a given state name. The stateConfig object
-   * has the following acceptable properties.
-   *
-   * @param {string} name A unique state name, e.g. "home", "about", "contacts".
-   * To create a parent/child state use a dot, e.g. "about.sales", "home.newest".
-   * @param {object} stateConfig State configuration object.
-   * @param {string|function=} stateConfig.template
-   * <a id='template'></a>
-   *   html template as a string or a function that returns
-   *   an html template as a string which should be used by the uiView directives. This property 
-   *   takes precedence over templateUrl.
-   *   
-   *   If `template` is a function, it will be called with the following parameters:
-   *
-   *   - {array.&lt;object&gt;} - state parameters extracted from the current $location.path() by
-   *     applying the current state
-   *
-   * <pre>template:
-   *   "<h1>inline template definition</h1>" +
-   *   "<div ui-view></div>"</pre>
-   * <pre>template: function(params) {
-   *       return "<h1>generated template</h1>"; }</pre>
-   * </div>
-   *
-   * @param {string|function=} stateConfig.templateUrl
-   * <a id='templateUrl'></a>
-   *
-   *   path or function that returns a path to an html
-   *   template that should be used by uiView.
-   *   
-   *   If `templateUrl` is a function, it will be called with the following parameters:
-   *
-   *   - {array.&lt;object&gt;} - state parameters extracted from the current $location.path() by 
-   *     applying the current state
-   *
-   * <pre>templateUrl: "home.html"</pre>
-   * <pre>templateUrl: function(params) {
-   *     return myTemplates[params.pageId]; }</pre>
-   *
-   * @param {function=} stateConfig.templateProvider
-   * <a id='templateProvider'></a>
-   *    Provider function that returns HTML content string.
-   * <pre> templateProvider:
-   *       function(MyTemplateService, params) {
-   *         return MyTemplateService.getTemplate(params.pageId);
-   *       }</pre>
-   *
-   * @param {string|function=} stateConfig.controller
-   * <a id='controller'></a>
-   *
-   *  Controller fn that should be associated with newly
-   *   related scope or the name of a registered controller if passed as a string.
-   *   Optionally, the ControllerAs may be declared here.
-   * <pre>controller: "MyRegisteredController"</pre>
-   * <pre>controller:
-   *     "MyRegisteredController as fooCtrl"}</pre>
-   * <pre>controller: function($scope, MyService) {
-   *     $scope.data = MyService.getData(); }</pre>
-   *
-   * @param {function=} stateConfig.controllerProvider
-   * <a id='controllerProvider'></a>
-   *
-   * Injectable provider function that returns the actual controller or string.
-   * <pre>controllerProvider:
-   *   function(MyResolveData) {
-   *     if (MyResolveData.foo)
-   *       return "FooCtrl"
-   *     else if (MyResolveData.bar)
-   *       return "BarCtrl";
-   *     else return function($scope) {
-   *       $scope.baz = "Qux";
-   *     }
-   *   }</pre>
-   *
-   * @param {string=} stateConfig.controllerAs
-   * <a id='controllerAs'></a>
-   * 
-   * A controller alias name. If present the controller will be
-   *   published to scope under the controllerAs name.
-   * <pre>controllerAs: "myCtrl"</pre>
-   *
-   * @param {string|object=} stateConfig.parent
-   * <a id='parent'></a>
-   * Optionally specifies the parent state of this state.
-   *
-   * <pre>parent: 'parentState'</pre>
-   * <pre>parent: parentState // JS variable</pre>
-   *
-   * @param {object=} stateConfig.resolve
-   * <a id='resolve'></a>
-   *
-   * An optional map&lt;string, function&gt; of dependencies which
-   *   should be injected into the controller. If any of these dependencies are promises, 
-   *   the router will wait for them all to be resolved before the controller is instantiated.
-   *   If all the promises are resolved successfully, the $stateChangeSuccess event is fired
-   *   and the values of the resolved promises are injected into any controllers that reference them.
-   *   If any  of the promises are rejected the $stateChangeError event is fired.
-   *
-   *   The map object is:
-   *   
-   *   - key - {string}: name of dependency to be injected into controller
-   *   - factory - {string|function}: If string then it is alias for service. Otherwise if function, 
-   *     it is injected and return value it treated as dependency. If result is a promise, it is 
-   *     resolved before its value is injected into controller.
-   *
-   * <pre>resolve: {
-   *     myResolve1:
-   *       function($http, $stateParams) {
-   *         return $http.get("/api/foos/"+stateParams.fooID);
-   *       }
-   *     }</pre>
-   *
-   * @param {string=} stateConfig.url
-   * <a id='url'></a>
-   *
-   *   A url fragment with optional parameters. When a state is navigated or
-   *   transitioned to, the `$stateParams` service will be populated with any 
-   *   parameters that were passed.
-   *
-   *   (See {@link ui.router.util.type:UrlMatcher UrlMatcher} `UrlMatcher`} for
-   *   more details on acceptable patterns )
-   *
-   * examples:
-   * <pre>url: "/home"
-   * url: "/users/:userid"
-   * url: "/books/{bookid:[a-zA-Z_-]}"
-   * url: "/books/{categoryid:int}"
-   * url: "/books/{publishername:string}/{categoryid:int}"
-   * url: "/messages?before&after"
-   * url: "/messages?{before:date}&{after:date}"
-   * url: "/messages/:mailboxid?{before:date}&{after:date}"
-   * </pre>
-   *
-   * @param {object=} stateConfig.views
-   * <a id='views'></a>
-   * an optional map&lt;string, object&gt; which defined multiple views, or targets views
-   * manually/explicitly.
-   *
-   * Examples:
-   *
-   * Targets three named `ui-view`s in the parent state's template
-   * <pre>views: {
-   *     header: {
-   *       controller: "headerCtrl",
-   *       templateUrl: "header.html"
-   *     }, body: {
-   *       controller: "bodyCtrl",
-   *       templateUrl: "body.html"
-   *     }, footer: {
-   *       controller: "footCtrl",
-   *       templateUrl: "footer.html"
-   *     }
-   *   }</pre>
-   *
-   * Targets named `ui-view="header"` from grandparent state 'top''s template, and named `ui-view="body" from parent state's template.
-   * <pre>views: {
-   *     'header@top': {
-   *       controller: "msgHeaderCtrl",
-   *       templateUrl: "msgHeader.html"
-   *     }, 'body': {
-   *       controller: "messagesCtrl",
-   *       templateUrl: "messages.html"
-   *     }
-   *   }</pre>
-   *
-   * @param {boolean=} [stateConfig.abstract=false]
-   * <a id='abstract'></a>
-   * An abstract state will never be directly activated,
-   *   but can provide inherited properties to its common children states.
-   * <pre>abstract: true</pre>
-   *
-   * @param {function=} stateConfig.onEnter
-   * <a id='onEnter'></a>
-   *
-   * Callback function for when a state is entered. Good way
-   *   to trigger an action or dispatch an event, such as opening a dialog.
-   * If minifying your scripts, make sure to explictly annotate this function,
-   * because it won't be automatically annotated by your build tools.
-   *
-   * <pre>onEnter: function(MyService, $stateParams) {
-   *     MyService.foo($stateParams.myParam);
-   * }</pre>
-   *
-   * @param {function=} stateConfig.onExit
-   * <a id='onExit'></a>
-   *
-   * Callback function for when a state is exited. Good way to
-   *   trigger an action or dispatch an event, such as opening a dialog.
-   * If minifying your scripts, make sure to explictly annotate this function,
-   * because it won't be automatically annotated by your build tools.
-   *
-   * <pre>onExit: function(MyService, $stateParams) {
-   *     MyService.cleanup($stateParams.myParam);
-   * }</pre>
-   *
-   * @param {boolean=} [stateConfig.reloadOnSearch=true]
-   * <a id='reloadOnSearch'></a>
-   *
-   * If `false`, will not retrigger the same state
-   *   just because a search/query parameter has changed (via $location.search() or $location.hash()). 
-   *   Useful for when you'd like to modify $location.search() without triggering a reload.
-   * <pre>reloadOnSearch: false</pre>
-   *
-   * @param {object=} stateConfig.data
-   * <a id='data'></a>
-   *
-   * Arbitrary data object, useful for custom configuration.  The parent state's `data` is
-   *   prototypally inherited.  In other words, adding a data property to a state adds it to
-   *   the entire subtree via prototypal inheritance.
-   *
-   * <pre>data: {
-   *     requiredRole: 'foo'
-   * } </pre>
-   *
-   * @param {object=} stateConfig.params
-   * <a id='params'></a>
-   *
-   * A map which optionally configures parameters declared in the `url`, or
-   *   defines additional non-url parameters.  For each parameter being
-   *   configured, add a configuration object keyed to the name of the parameter.
-   *
-   *   Each parameter configuration object may contain the following properties:
-   *
-   *   - ** value ** - {object|function=}: specifies the default value for this
-   *     parameter.  This implicitly sets this parameter as optional.
-   *
-   *     When UI-Router routes to a state and no value is
-   *     specified for this parameter in the URL or transition, the
-   *     default value will be used instead.  If `value` is a function,
-   *     it will be injected and invoked, and the return value used.
-   *
-   *     *Note*: `undefined` is treated as "no default value" while `null`
-   *     is treated as "the default value is `null`".
-   *
-   *     *Shorthand*: If you only need to configure the default value of the
-   *     parameter, you may use a shorthand syntax.   In the **`params`**
-   *     map, instead mapping the param name to a full parameter configuration
-   *     object, simply set map it to the default parameter value, e.g.:
-   *
-   * <pre>// define a parameter's default value
-   * params: {
-   *     param1: { value: "defaultValue" }
-   * }
-   * // shorthand default values
-   * params: {
-   *     param1: "defaultValue",
-   *     param2: "param2Default"
-   * }</pre>
-   *
-   *   - ** array ** - {boolean=}: *(default: false)* If true, the param value will be
-   *     treated as an array of values.  If you specified a Type, the value will be
-   *     treated as an array of the specified Type.  Note: query parameter values
-   *     default to a special `"auto"` mode.
-   *
-   *     For query parameters in `"auto"` mode, if multiple  values for a single parameter
-   *     are present in the URL (e.g.: `/foo?bar=1&bar=2&bar=3`) then the values
-   *     are mapped to an array (e.g.: `{ foo: [ '1', '2', '3' ] }`).  However, if
-   *     only one value is present (e.g.: `/foo?bar=1`) then the value is treated as single
-   *     value (e.g.: `{ foo: '1' }`).
-   *
-   * <pre>params: {
-   *     param1: { array: true }
-   * }</pre>
-   *
-   *   - ** squash ** - {bool|string=}: `squash` configures how a default parameter value is represented in the URL when
-   *     the current parameter value is the same as the default value. If `squash` is not set, it uses the
-   *     configured default squash policy.
-   *     (See {@link ui.router.util.$urlMatcherFactory#methods_defaultSquashPolicy `defaultSquashPolicy()`})
-   *
-   *   There are three squash settings:
-   *
-   *     - false: The parameter's default value is not squashed.  It is encoded and included in the URL
-   *     - true: The parameter's default value is omitted from the URL.  If the parameter is preceeded and followed
-   *       by slashes in the state's `url` declaration, then one of those slashes are omitted.
-   *       This can allow for cleaner looking URLs.
-   *     - `"<arbitrary string>"`: The parameter's default value is replaced with an arbitrary placeholder of  your choice.
-   *
-   * <pre>params: {
-   *     param1: {
-   *       value: "defaultId",
-   *       squash: true
-   * } }
-   * // squash "defaultValue" to "~"
-   * params: {
-   *     param1: {
-   *       value: "defaultValue",
-   *       squash: "~"
-   * } }
-   * </pre>
-   *
-   *
-   * @example
-   * <pre>
-   * // Some state name examples
-   *
-   * // stateName can be a single top-level name (must be unique).
-   * $stateProvider.state("home", {});
-   *
-   * // Or it can be a nested state name. This state is a child of the
-   * // above "home" state.
-   * $stateProvider.state("home.newest", {});
-   *
-   * // Nest states as deeply as needed.
-   * $stateProvider.state("home.newest.abc.xyz.inception", {});
-   *
-   * // state() returns $stateProvider, so you can chain state declarations.
-   * $stateProvider
-   *   .state("home", {})
-   *   .state("about", {})
-   *   .state("contacts", {});
-   * </pre>
-   *
-   */
-  this.state = state;
-  function state(name, definition) {
-    /*jshint validthis: true */
-    if (isObject(name)) definition = name;
-    else definition.name = name;
-    registerState(definition);
-    return this;
-  }
-
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$state
-   *
-   * @requires $rootScope
-   * @requires $q
-   * @requires ui.router.state.$view
-   * @requires $injector
-   * @requires ui.router.util.$resolve
-   * @requires ui.router.state.$stateParams
-   * @requires ui.router.router.$urlRouter
-   *
-   * @property {object} params A param object, e.g. {sectionId: section.id)}, that 
-   * you'd like to test against the current active state.
-   * @property {object} current A reference to the state's config object. However 
-   * you passed it in. Useful for accessing custom data.
-   * @property {object} transition Currently pending transition. A promise that'll 
-   * resolve or reject.
-   *
-   * @description
-   * `$state` service is responsible for representing states as well as transitioning
-   * between them. It also provides interfaces to ask for current state or even states
-   * you're coming from.
-   */
-  this.$get = $get;
-  $get.$inject = ['$rootScope', '$q', '$view', '$injector', '$resolve', '$stateParams', '$urlRouter', '$location', '$urlMatcherFactory'];
-  function $get(   $rootScope,   $q,   $view,   $injector,   $resolve,   $stateParams,   $urlRouter,   $location,   $urlMatcherFactory) {
-
-    var TransitionSuperseded = $q.reject(new Error('transition superseded'));
-    var TransitionPrevented = $q.reject(new Error('transition prevented'));
-    var TransitionAborted = $q.reject(new Error('transition aborted'));
-    var TransitionFailed = $q.reject(new Error('transition failed'));
-
-    // Handles the case where a state which is the target of a transition is not found, and the user
-    // can optionally retry or defer the transition
-    function handleRedirect(redirect, state, params, options) {
-      /**
-       * @ngdoc event
-       * @name ui.router.state.$state#$stateNotFound
-       * @eventOf ui.router.state.$state
-       * @eventType broadcast on root scope
-       * @description
-       * Fired when a requested state **cannot be found** using the provided state name during transition.
-       * The event is broadcast allowing any handlers a single chance to deal with the error (usually by
-       * lazy-loading the unfound state). A special `unfoundState` object is passed to the listener handler,
-       * you can see its three properties in the example. You can use `event.preventDefault()` to abort the
-       * transition and the promise returned from `go` will be rejected with a `'transition aborted'` value.
-       *
-       * @param {Object} event Event object.
-       * @param {Object} unfoundState Unfound State information. Contains: `to, toParams, options` properties.
-       * @param {State} fromState Current state object.
-       * @param {Object} fromParams Current state params.
-       *
-       * @example
-       *
-       * <pre>
-       * // somewhere, assume lazy.state has not been defined
-       * $state.go("lazy.state", {a:1, b:2}, {inherit:false});
-       *
-       * // somewhere else
-       * $scope.$on('$stateNotFound',
-       * function(event, unfoundState, fromState, fromParams){
-       *     console.log(unfoundState.to); // "lazy.state"
-       *     console.log(unfoundState.toParams); // {a:1, b:2}
-       *     console.log(unfoundState.options); // {inherit:false} + default options
-       * })
-       * </pre>
-       */
-      var evt = $rootScope.$broadcast('$stateNotFound', redirect, state, params);
-
-      if (evt.defaultPrevented) {
-        $urlRouter.update();
-        return TransitionAborted;
-      }
-
-      if (!evt.retry) {
-        return null;
-      }
-
-      // Allow the handler to return a promise to defer state lookup retry
-      if (options.$retry) {
-        $urlRouter.update();
-        return TransitionFailed;
-      }
-      var retryTransition = $state.transition = $q.when(evt.retry);
-
-      retryTransition.then(function() {
-        if (retryTransition !== $state.transition) return TransitionSuperseded;
-        redirect.options.$retry = true;
-        return $state.transitionTo(redirect.to, redirect.toParams, redirect.options);
-      }, function() {
-        return TransitionAborted;
-      });
-      $urlRouter.update();
-
-      return retryTransition;
-    }
-
-    root.locals = { resolve: null, globals: { $stateParams: {} } };
-
-    $state = {
-      params: {},
-      current: root.self,
-      $current: root,
-      transition: null
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#reload
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A method that force reloads the current state. All resolves are re-resolved,
-     * controllers reinstantiated, and events re-fired.
-     *
-     * @example
-     * <pre>
-     * var app angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.reload = function(){
-     *     $state.reload();
-     *   }
-     * });
-     * </pre>
-     *
-     * `reload()` is just an alias for:
-     * <pre>
-     * $state.transitionTo($state.current, $stateParams, { 
-     *   reload: true, inherit: false, notify: true
-     * });
-     * </pre>
-     *
-     * @param {string=|object=} state - A state name or a state object, which is the root of the resolves to be re-resolved.
-     * @example
-     * <pre>
-     * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item' 
-     * //and current state is 'contacts.detail.item'
-     * var app angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.reload = function(){
-     *     //will reload 'contact.detail' and 'contact.detail.item' states
-     *     $state.reload('contact.detail');
-     *   }
-     * });
-     * </pre>
-     *
-     * `reload()` is just an alias for:
-     * <pre>
-     * $state.transitionTo($state.current, $stateParams, { 
-     *   reload: true, inherit: false, notify: true
-     * });
-     * </pre>
-
-     * @returns {promise} A promise representing the state of the new transition. See
-     * {@link ui.router.state.$state#methods_go $state.go}.
-     */
-    $state.reload = function reload(state) {
-      return $state.transitionTo($state.current, $stateParams, { reload: state || true, inherit: false, notify: true});
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#go
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Convenience method for transitioning to a new state. `$state.go` calls 
-     * `$state.transitionTo` internally but automatically sets options to 
-     * `{ location: true, inherit: true, relative: $state.$current, notify: true }`. 
-     * This allows you to easily use an absolute or relative to path and specify 
-     * only the parameters you'd like to update (while letting unspecified parameters 
-     * inherit from the currently active ancestor states).
-     *
-     * @example
-     * <pre>
-     * var app = angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.changeState = function () {
-     *     $state.go('contact.detail');
-     *   };
-     * });
-     * </pre>
-     * <img src='../ngdoc_assets/StateGoExamples.png'/>
-     *
-     * @param {string} to Absolute state name or relative state path. Some examples:
-     *
-     * - `$state.go('contact.detail')` - will go to the `contact.detail` state
-     * - `$state.go('^')` - will go to a parent state
-     * - `$state.go('^.sibling')` - will go to a sibling state
-     * - `$state.go('.child.grandchild')` - will go to grandchild state
-     *
-     * @param {object=} params A map of the parameters that will be sent to the state, 
-     * will populate $stateParams. Any parameters that are not specified will be inherited from currently 
-     * defined parameters. This allows, for example, going to a sibling state that shares parameters
-     * specified in a parent state. Parameter inheritance only works between common ancestor states, I.e.
-     * transitioning to a sibling will get you the parameters for all parents, transitioning to a child
-     * will get you all current parameters, etc.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`
-     *    will not. If string, must be `"replace"`, which will update url and also replace last history record.
-     * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.
-     * - **`reload`** (v0.2.5) - {boolean=false}, If `true` will force transition even if the state or params 
-     *    have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd
-     *    use this when you want to force a reload when *everything* is the same, including search params.
-     *
-     * @returns {promise} A promise representing the state of the new transition.
-     *
-     * Possible success values:
-     *
-     * - $state.current
-     *
-     * <br/>Possible rejection values:
-     *
-     * - 'transition superseded' - when a newer transition has been started after this one
-     * - 'transition prevented' - when `event.preventDefault()` has been called in a `$stateChangeStart` listener
-     * - 'transition aborted' - when `event.preventDefault()` has been called in a `$stateNotFound` listener or
-     *   when a `$stateNotFound` `event.retry` promise errors.
-     * - 'transition failed' - when a state has been unsuccessfully found after 2 tries.
-     * - *resolve error* - when an error has occurred with a `resolve`
-     *
-     */
-    $state.go = function go(to, params, options) {
-      return $state.transitionTo(to, params, extend({ inherit: true, relative: $state.$current }, options));
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#transitionTo
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Low-level method for transitioning to a new state. {@link ui.router.state.$state#methods_go $state.go}
-     * uses `transitionTo` internally. `$state.go` is recommended in most situations.
-     *
-     * @example
-     * <pre>
-     * var app = angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.changeState = function () {
-     *     $state.transitionTo('contact.detail');
-     *   };
-     * });
-     * </pre>
-     *
-     * @param {string} to State name.
-     * @param {object=} toParams A map of the parameters that will be sent to the state,
-     * will populate $stateParams.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`
-     *    will not. If string, must be `"replace"`, which will update url and also replace last history record.
-     * - **`inherit`** - {boolean=false}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.
-     * - **`reload`** (v0.2.5) - {boolean=false|string=|object=}, If `true` will force transition even if the state or params 
-     *    have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd
-     *    use this when you want to force a reload when *everything* is the same, including search params.
-     *    if String, then will reload the state with the name given in reload, and any children.
-     *    if Object, then a stateObj is expected, will reload the state found in stateObj, and any children.
-     *
-     * @returns {promise} A promise representing the state of the new transition. See
-     * {@link ui.router.state.$state#methods_go $state.go}.
-     */
-    $state.transitionTo = function transitionTo(to, toParams, options) {
-      toParams = toParams || {};
-      options = extend({
-        location: true, inherit: false, relative: null, notify: true, reload: false, $retry: false
-      }, options || {});
-
-      var from = $state.$current, fromParams = $state.params, fromPath = from.path;
-      var evt, toState = findState(to, options.relative);
-
-      // Store the hash param for later (since it will be stripped out by various methods)
-      var hash = toParams['#'];
-
-      if (!isDefined(toState)) {
-        var redirect = { to: to, toParams: toParams, options: options };
-        var redirectResult = handleRedirect(redirect, from.self, fromParams, options);
-
-        if (redirectResult) {
-          return redirectResult;
-        }
-
-        // Always retry once if the $stateNotFound was not prevented
-        // (handles either redirect changed or state lazy-definition)
-        to = redirect.to;
-        toParams = redirect.toParams;
-        options = redirect.options;
-        toState = findState(to, options.relative);
-
-        if (!isDefined(toState)) {
-          if (!options.relative) throw new Error("No such state '" + to + "'");
-          throw new Error("Could not resolve '" + to + "' from state '" + options.relative + "'");
-        }
-      }
-      if (toState[abstractKey]) throw new Error("Cannot transition to abstract state '" + to + "'");
-      if (options.inherit) toParams = inheritParams($stateParams, toParams || {}, $state.$current, toState);
-      if (!toState.params.$$validates(toParams)) return TransitionFailed;
-
-      toParams = toState.params.$$values(toParams);
-      to = toState;
-
-      var toPath = to.path;
-
-      // Starting from the root of the path, keep all levels that haven't changed
-      var keep = 0, state = toPath[keep], locals = root.locals, toLocals = [];
-
-      if (!options.reload) {
-        while (state && state === fromPath[keep] && state.ownParams.$$equals(toParams, fromParams)) {
-          locals = toLocals[keep] = state.locals;
-          keep++;
-          state = toPath[keep];
-        }
-      } else if (isString(options.reload) || isObject(options.reload)) {
-        if (isObject(options.reload) && !options.reload.name) {
-          throw new Error('Invalid reload state object');
-        }
-        
-        var reloadState = options.reload === true ? fromPath[0] : findState(options.reload);
-        if (options.reload && !reloadState) {
-          throw new Error("No such reload state '" + (isString(options.reload) ? options.reload : options.reload.name) + "'");
-        }
-
-        while (state && state === fromPath[keep] && state !== reloadState) {
-          locals = toLocals[keep] = state.locals;
-          keep++;
-          state = toPath[keep];
-        }
-      }
-
-      // If we're going to the same state and all locals are kept, we've got nothing to do.
-      // But clear 'transition', as we still want to cancel any other pending transitions.
-      // TODO: We may not want to bump 'transition' if we're called from a location change
-      // that we've initiated ourselves, because we might accidentally abort a legitimate
-      // transition initiated from code?
-      if (shouldSkipReload(to, toParams, from, fromParams, locals, options)) {
-        if (hash) toParams['#'] = hash;
-        $state.params = toParams;
-        copy($state.params, $stateParams);
-        if (options.location && to.navigable && to.navigable.url) {
-          $urlRouter.push(to.navigable.url, toParams, {
-            $$avoidResync: true, replace: options.location === 'replace'
-          });
-          $urlRouter.update(true);
-        }
-        $state.transition = null;
-        return $q.when($state.current);
-      }
-
-      // Filter parameters before we pass them to event handlers etc.
-      toParams = filterByKeys(to.params.$$keys(), toParams || {});
-
-      // Broadcast start event and cancel the transition if requested
-      if (options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeStart
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired when the state transition **begins**. You can use `event.preventDefault()`
-         * to prevent the transition from happening and then the transition promise will be
-         * rejected with a `'transition prevented'` value.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         *
-         * @example
-         *
-         * <pre>
-         * $rootScope.$on('$stateChangeStart',
-         * function(event, toState, toParams, fromState, fromParams){
-         *     event.preventDefault();
-         *     // transitionTo() promise will be rejected with
-         *     // a 'transition prevented' error
-         * })
-         * </pre>
-         */
-        if ($rootScope.$broadcast('$stateChangeStart', to.self, toParams, from.self, fromParams).defaultPrevented) {
-          $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);
-          $urlRouter.update();
-          return TransitionPrevented;
-        }
-      }
-
-      // Resolve locals for the remaining states, but don't update any global state just
-      // yet -- if anything fails to resolve the current state needs to remain untouched.
-      // We also set up an inheritance chain for the locals here. This allows the view directive
-      // to quickly look up the correct definition for each view in the current state. Even
-      // though we create the locals object itself outside resolveState(), it is initially
-      // empty and gets filled asynchronously. We need to keep track of the promise for the
-      // (fully resolved) current locals, and pass this down the chain.
-      var resolved = $q.when(locals);
-
-      for (var l = keep; l < toPath.length; l++, state = toPath[l]) {
-        locals = toLocals[l] = inherit(locals);
-        resolved = resolveState(state, toParams, state === to, resolved, locals, options);
-      }
-
-      // Once everything is resolved, we are ready to perform the actual transition
-      // and return a promise for the new state. We also keep track of what the
-      // current promise is, so that we can detect overlapping transitions and
-      // keep only the outcome of the last transition.
-      var transition = $state.transition = resolved.then(function () {
-        var l, entering, exiting;
-
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        // Exit 'from' states not kept
-        for (l = fromPath.length - 1; l >= keep; l--) {
-          exiting = fromPath[l];
-          if (exiting.self.onExit) {
-            $injector.invoke(exiting.self.onExit, exiting.self, exiting.locals.globals);
-          }
-          exiting.locals = null;
-        }
-
-        // Enter 'to' states not kept
-        for (l = keep; l < toPath.length; l++) {
-          entering = toPath[l];
-          entering.locals = toLocals[l];
-          if (entering.self.onEnter) {
-            $injector.invoke(entering.self.onEnter, entering.self, entering.locals.globals);
-          }
-        }
-
-        // Re-add the saved hash before we start returning things
-        if (hash) toParams['#'] = hash;
-
-        // Run it again, to catch any transitions in callbacks
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        // Update globals in $state
-        $state.$current = to;
-        $state.current = to.self;
-        $state.params = toParams;
-        copy($state.params, $stateParams);
-        $state.transition = null;
-
-        if (options.location && to.navigable) {
-          $urlRouter.push(to.navigable.url, to.navigable.locals.globals.$stateParams, {
-            $$avoidResync: true, replace: options.location === 'replace'
-          });
-        }
-
-        if (options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeSuccess
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired once the state transition is **complete**.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         */
-          $rootScope.$broadcast('$stateChangeSuccess', to.self, toParams, from.self, fromParams);
-        }
-        $urlRouter.update(true);
-
-        return $state.current;
-      }, function (error) {
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        $state.transition = null;
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeError
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired when an **error occurs** during transition. It's important to note that if you
-         * have any errors in your resolve functions (javascript errors, non-existent services, etc)
-         * they will not throw traditionally. You must listen for this $stateChangeError event to
-         * catch **ALL** errors.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         * @param {Error} error The resolve error object.
-         */
-        evt = $rootScope.$broadcast('$stateChangeError', to.self, toParams, from.self, fromParams, error);
-
-        if (!evt.defaultPrevented) {
-            $urlRouter.update();
-        }
-
-        return $q.reject(error);
-      });
-
-      return transition;
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#is
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Similar to {@link ui.router.state.$state#methods_includes $state.includes},
-     * but only checks for the full state name. If params is supplied then it will be
-     * tested for strict equality against the current active params object, so all params
-     * must match with none missing and no extras.
-     *
-     * @example
-     * <pre>
-     * $state.$current.name = 'contacts.details.item';
-     *
-     * // absolute name
-     * $state.is('contact.details.item'); // returns true
-     * $state.is(contactDetailItemStateObject); // returns true
-     *
-     * // relative name (. and ^), typically from a template
-     * // E.g. from the 'contacts.details' template
-     * <div ng-class="{highlighted: $state.is('.item')}">Item</div>
-     * </pre>
-     *
-     * @param {string|object} stateOrName The state name (absolute or relative) or state object you'd like to check.
-     * @param {object=} params A param object, e.g. `{sectionId: section.id}`, that you'd like
-     * to test against the current active state.
-     * @param {object=} options An options object.  The options are:
-     *
-     * - **`relative`** - {string|object} -  If `stateOrName` is a relative state name and `options.relative` is set, .is will
-     * test relative to `options.relative` state (or name).
-     *
-     * @returns {boolean} Returns true if it is the state.
-     */
-    $state.is = function is(stateOrName, params, options) {
-      options = extend({ relative: $state.$current }, options || {});
-      var state = findState(stateOrName, options.relative);
-
-      if (!isDefined(state)) { return undefined; }
-      if ($state.$current !== state) { return false; }
-      return params ? equalForKeys(state.params.$$values(params), $stateParams) : true;
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#includes
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A method to determine if the current active state is equal to or is the child of the
-     * state stateName. If any params are passed then they will be tested for a match as well.
-     * Not all the parameters need to be passed, just the ones you'd like to test for equality.
-     *
-     * @example
-     * Partial and relative names
-     * <pre>
-     * $state.$current.name = 'contacts.details.item';
-     *
-     * // Using partial names
-     * $state.includes("contacts"); // returns true
-     * $state.includes("contacts.details"); // returns true
-     * $state.includes("contacts.details.item"); // returns true
-     * $state.includes("contacts.list"); // returns false
-     * $state.includes("about"); // returns false
-     *
-     * // Using relative names (. and ^), typically from a template
-     * // E.g. from the 'contacts.details' template
-     * <div ng-class="{highlighted: $state.includes('.item')}">Item</div>
-     * </pre>
-     *
-     * Basic globbing patterns
-     * <pre>
-     * $state.$current.name = 'contacts.details.item.url';
-     *
-     * $state.includes("*.details.*.*"); // returns true
-     * $state.includes("*.details.**"); // returns true
-     * $state.includes("**.item.**"); // returns true
-     * $state.includes("*.details.item.url"); // returns true
-     * $state.includes("*.details.*.url"); // returns true
-     * $state.includes("*.details.*"); // returns false
-     * $state.includes("item.**"); // returns false
-     * </pre>
-     *
-     * @param {string} stateOrName A partial name, relative name, or glob pattern
-     * to be searched for within the current state name.
-     * @param {object=} params A param object, e.g. `{sectionId: section.id}`,
-     * that you'd like to test against the current active state.
-     * @param {object=} options An options object.  The options are:
-     *
-     * - **`relative`** - {string|object=} -  If `stateOrName` is a relative state reference and `options.relative` is set,
-     * .includes will test relative to `options.relative` state (or name).
-     *
-     * @returns {boolean} Returns true if it does include the state
-     */
-    $state.includes = function includes(stateOrName, params, options) {
-      options = extend({ relative: $state.$current }, options || {});
-      if (isString(stateOrName) && isGlob(stateOrName)) {
-        if (!doesStateMatchGlob(stateOrName)) {
-          return false;
-        }
-        stateOrName = $state.$current.name;
-      }
-
-      var state = findState(stateOrName, options.relative);
-      if (!isDefined(state)) { return undefined; }
-      if (!isDefined($state.$current.includes[state.name])) { return false; }
-      return params ? equalForKeys(state.params.$$values(params), $stateParams, objectKeys(params)) : true;
-    };
-
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#href
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A url generation method that returns the compiled url for the given state populated with the given params.
-     *
-     * @example
-     * <pre>
-     * expect($state.href("about.person", { person: "bob" })).toEqual("/about/bob");
-     * </pre>
-     *
-     * @param {string|object} stateOrName The state name or state object you'd like to generate a url from.
-     * @param {object=} params An object of parameter values to fill the state's required parameters.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`lossy`** - {boolean=true} -  If true, and if there is no url associated with the state provided in the
-     *    first parameter, then the constructed href url will be built from the first navigable ancestor (aka
-     *    ancestor with a valid url).
-     * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. "http://www.example.com/fullurl".
-     * 
-     * @returns {string} compiled state url
-     */
-    $state.href = function href(stateOrName, params, options) {
-      options = extend({
-        lossy:    true,
-        inherit:  true,
-        absolute: false,
-        relative: $state.$current
-      }, options || {});
-
-      var state = findState(stateOrName, options.relative);
-
-      if (!isDefined(state)) return null;
-      if (options.inherit) params = inheritParams($stateParams, params || {}, $state.$current, state);
-      
-      var nav = (state && options.lossy) ? state.navigable : state;
-
-      if (!nav || nav.url === undefined || nav.url === null) {
-        return null;
-      }
-      return $urlRouter.href(nav.url, filterByKeys(state.params.$$keys().concat('#'), params || {}), {
-        absolute: options.absolute
-      });
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#get
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Returns the state configuration object for any specific state or all states.
-     *
-     * @param {string|object=} stateOrName (absolute or relative) If provided, will only get the config for
-     * the requested state. If not provided, returns an array of ALL state configs.
-     * @param {string|object=} context When stateOrName is a relative state reference, the state will be retrieved relative to context.
-     * @returns {Object|Array} State configuration object or array of all objects.
-     */
-    $state.get = function (stateOrName, context) {
-      if (arguments.length === 0) return map(objectKeys(states), function(name) { return states[name].self; });
-      var state = findState(stateOrName, context || $state.$current);
-      return (state && state.self) ? state.self : null;
-    };
-
-    function resolveState(state, params, paramsAreFiltered, inherited, dst, options) {
-      // Make a restricted $stateParams with only the parameters that apply to this state if
-      // necessary. In addition to being available to the controller and onEnter/onExit callbacks,
-      // we also need $stateParams to be available for any $injector calls we make during the
-      // dependency resolution process.
-      var $stateParams = (paramsAreFiltered) ? params : filterByKeys(state.params.$$keys(), params);
-      var locals = { $stateParams: $stateParams };
-
-      // Resolve 'global' dependencies for the state, i.e. those not specific to a view.
-      // We're also including $stateParams in this; that way the parameters are restricted
-      // to the set that should be visible to the state, and are independent of when we update
-      // the global $state and $stateParams values.
-      dst.resolve = $resolve.resolve(state.resolve, locals, dst.resolve, state);
-      var promises = [dst.resolve.then(function (globals) {
-        dst.globals = globals;
-      })];
-      if (inherited) promises.push(inherited);
-
-      function resolveViews() {
-        var viewsPromises = [];
-
-        // Resolve template and dependencies for all views.
-        forEach(state.views, function (view, name) {
-          var injectables = (view.resolve && view.resolve !== state.resolve ? view.resolve : {});
-          injectables.$template = [ function () {
-            return $view.load(name, { view: view, locals: dst.globals, params: $stateParams, notify: options.notify }) || '';
-          }];
-
-          viewsPromises.push($resolve.resolve(injectables, dst.globals, dst.resolve, state).then(function (result) {
-            // References to the controller (only instantiated at link time)
-            if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) {
-              var injectLocals = angular.extend({}, injectables, dst.globals);
-              result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals);
-            } else {
-              result.$$controller = view.controller;
-            }
-            // Provide access to the state itself for internal use
-            result.$$state = state;
-            result.$$controllerAs = view.controllerAs;
-            dst[name] = result;
-          }));
-        });
-
-        return $q.all(viewsPromises).then(function(){
-          return dst.globals;
-        });
-      }
-
-      // Wait for all the promises and then return the activation object
-      return $q.all(promises).then(resolveViews).then(function (values) {
-        return dst;
-      });
-    }
-
-    return $state;
-  }
-
-  function shouldSkipReload(to, toParams, from, fromParams, locals, options) {
-    // Return true if there are no differences in non-search (path/object) params, false if there are differences
-    function nonSearchParamsEqual(fromAndToState, fromParams, toParams) {
-      // Identify whether all the parameters that differ between `fromParams` and `toParams` were search params.
-      function notSearchParam(key) {
-        return fromAndToState.params[key].location != "search";
-      }
-      var nonQueryParamKeys = fromAndToState.params.$$keys().filter(notSearchParam);
-      var nonQueryParams = pick.apply({}, [fromAndToState.params].concat(nonQueryParamKeys));
-      var nonQueryParamSet = new $$UMFP.ParamSet(nonQueryParams);
-      return nonQueryParamSet.$$equals(fromParams, toParams);
-    }
-
-    // If reload was not explicitly requested
-    // and we're transitioning to the same state we're already in
-    // and    the locals didn't change
-    //     or they changed in a way that doesn't merit reloading
-    //        (reloadOnParams:false, or reloadOnSearch.false and only search params changed)
-    // Then return true.
-    if (!options.reload && to === from &&
-      (locals === from.locals || (to.self.reloadOnSearch === false && nonSearchParamsEqual(from, fromParams, toParams)))) {
-      return true;
-    }
-  }
-}
-
-angular.module('ui.router.state')
-  .value('$stateParams', {})
-  .provider('$state', $StateProvider);
-
-
-$ViewProvider.$inject = [];
-function $ViewProvider() {
-
-  this.$get = $get;
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$view
-   *
-   * @requires ui.router.util.$templateFactory
-   * @requires $rootScope
-   *
-   * @description
-   *
-   */
-  $get.$inject = ['$rootScope', '$templateFactory'];
-  function $get(   $rootScope,   $templateFactory) {
-    return {
-      // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })
-      /**
-       * @ngdoc function
-       * @name ui.router.state.$view#load
-       * @methodOf ui.router.state.$view
-       *
-       * @description
-       *
-       * @param {string} name name
-       * @param {object} options option object.
-       */
-      load: function load(name, options) {
-        var result, defaults = {
-          template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}
-        };
-        options = extend(defaults, options);
-
-        if (options.view) {
-          result = $templateFactory.fromConfig(options.view, options.params, options.locals);
-        }
-        if (result && options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$viewContentLoading
-         * @eventOf ui.router.state.$view
-         * @eventType broadcast on root scope
-         * @description
-         *
-         * Fired once the view **begins loading**, *before* the DOM is rendered.
-         *
-         * @param {Object} event Event object.
-         * @param {Object} viewConfig The view config properties (template, controller, etc).
-         *
-         * @example
-         *
-         * <pre>
-         * $scope.$on('$viewContentLoading',
-         * function(event, viewConfig){
-         *     // Access to all the view config properties.
-         *     // and one special property 'targetView'
-         *     // viewConfig.targetView
-         * });
-         * </pre>
-         */
-          $rootScope.$broadcast('$viewContentLoading', options);
-        }
-        return result;
-      }
-    };
-  }
-}
-
-angular.module('ui.router.state').provider('$view', $ViewProvider);
-
-/**
- * @ngdoc object
- * @name ui.router.state.$uiViewScrollProvider
- *
- * @description
- * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.
- */
-function $ViewScrollProvider() {
-
-  var useAnchorScroll = false;
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll
-   * @methodOf ui.router.state.$uiViewScrollProvider
-   *
-   * @description
-   * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for
-   * scrolling based on the url anchor.
-   */
-  this.useAnchorScroll = function () {
-    useAnchorScroll = true;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$uiViewScroll
-   *
-   * @requires $anchorScroll
-   * @requires $timeout
-   *
-   * @description
-   * When called with a jqLite element, it scrolls the element into view (after a
-   * `$timeout` so the DOM has time to refresh).
-   *
-   * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,
-   * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.
-   */
-  this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {
-    if (useAnchorScroll) {
-      return $anchorScroll;
-    }
-
-    return function ($element) {
-      return $timeout(function () {
-        $element[0].scrollIntoView();
-      }, 0, false);
-    };
-  }];
-}
-
-angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-view
- *
- * @requires ui.router.state.$state
- * @requires $compile
- * @requires $controller
- * @requires $injector
- * @requires ui.router.state.$uiViewScroll
- * @requires $document
- *
- * @restrict ECA
- *
- * @description
- * The ui-view directive tells $state where to place your templates.
- *
- * @param {string=} name A view name. The name should be unique amongst the other views in the
- * same state. You can have views of the same name that live in different states.
- *
- * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window
- * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll
- * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you
- * scroll ui-view elements into view when they are populated during a state activation.
- *
- * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)
- * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.*
- *
- * @param {string=} onload Expression to evaluate whenever the view updates.
- * 
- * @example
- * A view can be unnamed or named. 
- * <pre>
- * <!-- Unnamed -->
- * <div ui-view></div> 
- * 
- * <!-- Named -->
- * <div ui-view="viewName"></div>
- * </pre>
- *
- * You can only have one unnamed view within any template (or root html). If you are only using a 
- * single view and it is unnamed then you can populate it like so:
- * <pre>
- * <div ui-view></div> 
- * $stateProvider.state("home", {
- *   template: "<h1>HELLO!</h1>"
- * })
- * </pre>
- * 
- * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`}
- * config property, by name, in this case an empty name:
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "": {
- *       template: "<h1>HELLO!</h1>"
- *     }
- *   }    
- * })
- * </pre>
- * 
- * But typically you'll only use the views property if you name your view or have more than one view 
- * in the same template. There's not really a compelling reason to name a view if its the only one, 
- * but you could if you wanted, like so:
- * <pre>
- * <div ui-view="main"></div>
- * </pre> 
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "main": {
- *       template: "<h1>HELLO!</h1>"
- *     }
- *   }    
- * })
- * </pre>
- * 
- * Really though, you'll use views to set up multiple views:
- * <pre>
- * <div ui-view></div>
- * <div ui-view="chart"></div> 
- * <div ui-view="data"></div> 
- * </pre>
- * 
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "": {
- *       template: "<h1>HELLO!</h1>"
- *     },
- *     "chart": {
- *       template: "<chart_thing/>"
- *     },
- *     "data": {
- *       template: "<data_thing/>"
- *     }
- *   }    
- * })
- * </pre>
- *
- * Examples for `autoscroll`:
- *
- * <pre>
- * <!-- If autoscroll present with no expression,
- *      then scroll ui-view into view -->
- * <ui-view autoscroll/>
- *
- * <!-- If autoscroll present with valid expression,
- *      then scroll ui-view into view if expression evaluates to true -->
- * <ui-view autoscroll='true'/>
- * <ui-view autoscroll='false'/>
- * <ui-view autoscroll='scopeVariable'/>
- * </pre>
- */
-$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate'];
-function $ViewDirective(   $state,   $injector,   $uiViewScroll,   $interpolate) {
-
-  function getService() {
-    return ($injector.has) ? function(service) {
-      return $injector.has(service) ? $injector.get(service) : null;
-    } : function(service) {
-      try {
-        return $injector.get(service);
-      } catch (e) {
-        return null;
-      }
-    };
-  }
-
-  var service = getService(),
-      $animator = service('$animator'),
-      $animate = service('$animate');
-
-  // Returns a set of DOM manipulation functions based on which Angular version
-  // it should use
-  function getRenderer(attrs, scope) {
-    var statics = function() {
-      return {
-        enter: function (element, target, cb) { target.after(element); cb(); },
-        leave: function (element, cb) { element.remove(); cb(); }
-      };
-    };
-
-    if ($animate) {
-      return {
-        enter: function(element, target, cb) {
-          var promise = $animate.enter(element, null, target, cb);
-          if (promise && promise.then) promise.then(cb);
-        },
-        leave: function(element, cb) {
-          var promise = $animate.leave(element, cb);
-          if (promise && promise.then) promise.then(cb);
-        }
-      };
-    }
-
-    if ($animator) {
-      var animate = $animator && $animator(scope, attrs);
-
-      return {
-        enter: function(element, target, cb) {animate.enter(element, null, target); cb(); },
-        leave: function(element, cb) { animate.leave(element); cb(); }
-      };
-    }
-
-    return statics();
-  }
-
-  var directive = {
-    restrict: 'ECA',
-    terminal: true,
-    priority: 400,
-    transclude: 'element',
-    compile: function (tElement, tAttrs, $transclude) {
-      return function (scope, $element, attrs) {
-        var previousEl, currentEl, currentScope, latestLocals,
-            onloadExp     = attrs.onload || '',
-            autoScrollExp = attrs.autoscroll,
-            renderer      = getRenderer(attrs, scope);
-
-        scope.$on('$stateChangeSuccess', function() {
-          updateView(false);
-        });
-        scope.$on('$viewContentLoading', function() {
-          updateView(false);
-        });
-
-        updateView(true);
-
-        function cleanupLastView() {
-          if (previousEl) {
-            previousEl.remove();
-            previousEl = null;
-          }
-
-          if (currentScope) {
-            currentScope.$destroy();
-            currentScope = null;
-          }
-
-          if (currentEl) {
-            renderer.leave(currentEl, function() {
-              previousEl = null;
-            });
-
-            previousEl = currentEl;
-            currentEl = null;
-          }
-        }
-
-        function updateView(firstTime) {
-          var newScope,
-              name            = getUiViewName(scope, attrs, $element, $interpolate),
-              previousLocals  = name && $state.$current && $state.$current.locals[name];
-
-          if (!firstTime && previousLocals === latestLocals) return; // nothing to do
-          newScope = scope.$new();
-          latestLocals = $state.$current.locals[name];
-
-          var clone = $transclude(newScope, function(clone) {
-            renderer.enter(clone, $element, function onUiViewEnter() {
-              if(currentScope) {
-                currentScope.$emit('$viewContentAnimationEnded');
-              }
-
-              if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {
-                $uiViewScroll(clone);
-              }
-            });
-            cleanupLastView();
-          });
-
-          currentEl = clone;
-          currentScope = newScope;
-          /**
-           * @ngdoc event
-           * @name ui.router.state.directive:ui-view#$viewContentLoaded
-           * @eventOf ui.router.state.directive:ui-view
-           * @eventType emits on ui-view directive scope
-           * @description           *
-           * Fired once the view is **loaded**, *after* the DOM is rendered.
-           *
-           * @param {Object} event Event object.
-           */
-          currentScope.$emit('$viewContentLoaded');
-          currentScope.$eval(onloadExp);
-        }
-      };
-    }
-  };
-
-  return directive;
-}
-
-$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate'];
-function $ViewDirectiveFill (  $compile,   $controller,   $state,   $interpolate) {
-  return {
-    restrict: 'ECA',
-    priority: -400,
-    compile: function (tElement) {
-      var initial = tElement.html();
-      return function (scope, $element, attrs) {
-        var current = $state.$current,
-            name = getUiViewName(scope, attrs, $element, $interpolate),
-            locals  = current && current.locals[name];
-
-        if (! locals) {
-          return;
-        }
-
-        $element.data('$uiView', { name: name, state: locals.$$state });
-        $element.html(locals.$template ? locals.$template : initial);
-
-        var link = $compile($element.contents());
-
-        if (locals.$$controller) {
-          locals.$scope = scope;
-          locals.$element = $element;
-          var controller = $controller(locals.$$controller, locals);
-          if (locals.$$controllerAs) {
-            scope[locals.$$controllerAs] = controller;
-          }
-          $element.data('$ngControllerController', controller);
-          $element.children().data('$ngControllerController', controller);
-        }
-
-        link(scope);
-      };
-    }
-  };
-}
-
-/**
- * Shared ui-view code for both directives:
- * Given scope, element, and its attributes, return the view's name
- */
-function getUiViewName(scope, attrs, element, $interpolate) {
-  var name = $interpolate(attrs.uiView || attrs.name || '')(scope);
-  var inherited = element.inheritedData('$uiView');
-  return name.indexOf('@') >= 0 ?  name :  (name + '@' + (inherited ? inherited.state.name : ''));
-}
-
-angular.module('ui.router.state').directive('uiView', $ViewDirective);
-angular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);
-
-function parseStateRef(ref, current) {
-  var preparsed = ref.match(/^\s*({[^}]*})\s*$/), parsed;
-  if (preparsed) ref = current + '(' + preparsed[1] + ')';
-  parsed = ref.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/);
-  if (!parsed || parsed.length !== 4) throw new Error("Invalid state ref '" + ref + "'");
-  return { state: parsed[1], paramExpr: parsed[3] || null };
-}
-
-function stateContext(el) {
-  var stateData = el.parent().inheritedData('$uiView');
-
-  if (stateData && stateData.state && stateData.state.name) {
-    return stateData.state;
-  }
-}
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref
- *
- * @requires ui.router.state.$state
- * @requires $timeout
- *
- * @restrict A
- *
- * @description
- * A directive that binds a link (`<a>` tag) to a state. If the state has an associated 
- * URL, the directive will automatically generate & update the `href` attribute via 
- * the {@link ui.router.state.$state#methods_href $state.href()} method. Clicking 
- * the link will trigger a state transition with optional parameters. 
- *
- * Also middle-clicking, right-clicking, and ctrl-clicking on the link will be 
- * handled natively by the browser.
- *
- * You can also use relative state paths within ui-sref, just like the relative 
- * paths passed to `$state.go()`. You just need to be aware that the path is relative
- * to the state that the link lives in, in other words the state that loaded the 
- * template containing the link.
- *
- * You can specify options to pass to {@link ui.router.state.$state#go $state.go()}
- * using the `ui-sref-opts` attribute. Options are restricted to `location`, `inherit`,
- * and `reload`.
- *
- * @example
- * Here's an example of how you'd use ui-sref and how it would compile. If you have the 
- * following template:
- * <pre>
- * <a ui-sref="home">Home</a> | <a ui-sref="about">About</a> | <a ui-sref="{page: 2}">Next page</a>
- * 
- * <ul>
- *     <li ng-repeat="contact in contacts">
- *         <a ui-sref="contacts.detail({ id: contact.id })">{{ contact.name }}</a>
- *     </li>
- * </ul>
- * </pre>
- * 
- * Then the compiled html would be (assuming Html5Mode is off and current state is contacts):
- * <pre>
- * <a href="#/home" ui-sref="home">Home</a> | <a href="#/about" ui-sref="about">About</a> | <a href="#/contacts?page=2" ui-sref="{page: 2}">Next page</a>
- * 
- * <ul>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/1" ui-sref="contacts.detail({ id: contact.id })">Joe</a>
- *     </li>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/2" ui-sref="contacts.detail({ id: contact.id })">Alice</a>
- *     </li>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/3" ui-sref="contacts.detail({ id: contact.id })">Bob</a>
- *     </li>
- * </ul>
- *
- * <a ui-sref="home" ui-sref-opts="{reload: true}">Home</a>
- * </pre>
- *
- * @param {string} ui-sref 'stateName' can be any valid absolute or relative state
- * @param {Object} ui-sref-opts options to pass to {@link ui.router.state.$state#go $state.go()}
- */
-$StateRefDirective.$inject = ['$state', '$timeout'];
-function $StateRefDirective($state, $timeout) {
-  var allowedOptions = ['location', 'inherit', 'reload', 'absolute'];
-
-  return {
-    restrict: 'A',
-    require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
-    link: function(scope, element, attrs, uiSrefActive) {
-      var ref = parseStateRef(attrs.uiSref, $state.current.name);
-      var params = null, url = null, base = stateContext(element) || $state.$current;
-      // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
-      var hrefKind = Object.prototype.toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
-                 'xlink:href' : 'href';
-      var newHref = null, isAnchor = element.prop("tagName").toUpperCase() === "A";
-      var isForm = element[0].nodeName === "FORM";
-      var attr = isForm ? "action" : hrefKind, nav = true;
-
-      var options = { relative: base, inherit: true };
-      var optionsOverride = scope.$eval(attrs.uiSrefOpts) || {};
-
-      angular.forEach(allowedOptions, function(option) {
-        if (option in optionsOverride) {
-          options[option] = optionsOverride[option];
-        }
-      });
-
-      var update = function(newVal) {
-        if (newVal) params = angular.copy(newVal);
-        if (!nav) return;
-
-        newHref = $state.href(ref.state, params, options);
-
-        var activeDirective = uiSrefActive[1] || uiSrefActive[0];
-        if (activeDirective) {
-          activeDirective.$$addStateInfo(ref.state, params);
-        }
-        if (newHref === null) {
-          nav = false;
-          return false;
-        }
-        attrs.$set(attr, newHref);
-      };
-
-      if (ref.paramExpr) {
-        scope.$watch(ref.paramExpr, function(newVal, oldVal) {
-          if (newVal !== params) update(newVal);
-        }, true);
-        params = angular.copy(scope.$eval(ref.paramExpr));
-      }
-      update();
-
-      if (isForm) return;
-
-      element.bind("click", function(e) {
-        var button = e.which || e.button;
-        if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr('target')) ) {
-          // HACK: This is to allow ng-clicks to be processed before the transition is initiated:
-          var transition = $timeout(function() {
-            $state.go(ref.state, params, options);
-          });
-          e.preventDefault();
-
-          // if the state has no URL, ignore one preventDefault from the <a> directive.
-          var ignorePreventDefaultCount = isAnchor && !newHref ? 1: 0;
-          e.preventDefault = function() {
-            if (ignorePreventDefaultCount-- <= 0)
-              $timeout.cancel(transition);
-          };
-        }
-      });
-    }
-  };
-}
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref-active
- *
- * @requires ui.router.state.$state
- * @requires ui.router.state.$stateParams
- * @requires $interpolate
- *
- * @restrict A
- *
- * @description
- * A directive working alongside ui-sref to add classes to an element when the
- * related ui-sref directive's state is active, and removing them when it is inactive.
- * The primary use-case is to simplify the special appearance of navigation menus
- * relying on `ui-sref`, by having the "active" state's menu button appear different,
- * distinguishing it from the inactive menu items.
- *
- * ui-sref-active can live on the same element as ui-sref or on a parent element. The first
- * ui-sref-active found at the same level or above the ui-sref will be used.
- *
- * Will activate when the ui-sref's target state or any child state is active. If you
- * need to activate only when the ui-sref target state is active and *not* any of
- * it's children, then you will use
- * {@link ui.router.state.directive:ui-sref-active-eq ui-sref-active-eq}
- *
- * @example
- * Given the following template:
- * <pre>
- * <ul>
- *   <li ui-sref-active="active" class="item">
- *     <a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
- *   </li>
- * </ul>
- * </pre>
- *
- *
- * When the app state is "app.user" (or any children states), and contains the state parameter "user" with value "bilbobaggins",
- * the resulting HTML will appear as (note the 'active' class):
- * <pre>
- * <ul>
- *   <li ui-sref-active="active" class="item active">
- *     <a ui-sref="app.user({user: 'bilbobaggins'})" href="/users/bilbobaggins">@bilbobaggins</a>
- *   </li>
- * </ul>
- * </pre>
- *
- * The class name is interpolated **once** during the directives link time (any further changes to the
- * interpolated value are ignored).
- *
- * Multiple classes may be specified in a space-separated format:
- * <pre>
- * <ul>
- *   <li ui-sref-active='class1 class2 class3'>
- *     <a ui-sref="app.user">link</a>
- *   </li>
- * </ul>
- * </pre>
- */
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref-active-eq
- *
- * @requires ui.router.state.$state
- * @requires ui.router.state.$stateParams
- * @requires $interpolate
- *
- * @restrict A
- *
- * @description
- * The same as {@link ui.router.state.directive:ui-sref-active ui-sref-active} but will only activate
- * when the exact target state used in the `ui-sref` is active; no child states.
- *
- */
-$StateRefActiveDirective.$inject = ['$state', '$stateParams', '$interpolate'];
-function $StateRefActiveDirective($state, $stateParams, $interpolate) {
-  return  {
-    restrict: "A",
-    controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
-      var states = [], activeClass;
-
-      // There probably isn't much point in $observing this
-      // uiSrefActive and uiSrefActiveEq share the same directive object with some
-      // slight difference in logic routing
-      activeClass = $interpolate($attrs.uiSrefActiveEq || $attrs.uiSrefActive || '', false)($scope);
-
-      // Allow uiSref to communicate with uiSrefActive[Equals]
-      this.$$addStateInfo = function (newState, newParams) {
-        var state = $state.get(newState, stateContext($element));
-
-        states.push({
-          state: state || { name: newState },
-          params: newParams
-        });
-
-        update();
-      };
-
-      $scope.$on('$stateChangeSuccess', update);
-
-      // Update route state
-      function update() {
-        if (anyMatch()) {
-          $element.addClass(activeClass);
-        } else {
-          $element.removeClass(activeClass);
-        }
-      }
-
-      function anyMatch() {
-        for (var i = 0; i < states.length; i++) {
-          if (isMatch(states[i].state, states[i].params)) {
-            return true;
-          }
-        }
-        return false;
-      }
-
-      function isMatch(state, params) {
-        if (typeof $attrs.uiSrefActiveEq !== 'undefined') {
-          return $state.is(state.name, params);
-        } else {
-          return $state.includes(state.name, params);
-        }
-      }
-    }]
-  };
-}
-
-angular.module('ui.router.state')
-  .directive('uiSref', $StateRefDirective)
-  .directive('uiSrefActive', $StateRefActiveDirective)
-  .directive('uiSrefActiveEq', $StateRefActiveDirective);
-
-/**
- * @ngdoc filter
- * @name ui.router.state.filter:isState
- *
- * @requires ui.router.state.$state
- *
- * @description
- * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}.
- */
-$IsStateFilter.$inject = ['$state'];
-function $IsStateFilter($state) {
-  var isFilter = function (state) {
-    return $state.is(state);
-  };
-  isFilter.$stateful = true;
-  return isFilter;
-}
-
-/**
- * @ngdoc filter
- * @name ui.router.state.filter:includedByState
- *
- * @requires ui.router.state.$state
- *
- * @description
- * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}.
- */
-$IncludedByStateFilter.$inject = ['$state'];
-function $IncludedByStateFilter($state) {
-  var includesFilter = function (state) {
-    return $state.includes(state);
-  };
-  includesFilter.$stateful = true;
-  return  includesFilter;
-}
-
-angular.module('ui.router.state')
-  .filter('isState', $IsStateFilter)
-  .filter('includedByState', $IncludedByStateFilter);
-})(window, window.angular);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.min.js b/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.min.js
deleted file mode 100644
index 18d8307f..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/release/angular-ui-router.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * State-based routing for AngularJS
- * @version v0.2.15
- * @link http://angular-ui.github.com/
- * @license MIT License, http://www.opensource.org/licenses/MIT
- */
-"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return N(new(N(function(){},{prototype:a})),b)}function e(a){return M(arguments,function(b){b!==a&&M(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var b=[];return M(a,function(a,c){b.push(c)}),b}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return N({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e<c.length;e++){var f=c[e];if(a[f]!=b[f])return!1}return!0}function k(a,b){var c={};return M(a,function(a){c[a]=b[a]}),c}function l(a){var b={},c=Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(arguments,1));return M(c,function(c){c in a&&(b[c]=a[c])}),b}function m(a){var b={},c=Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(arguments,1));for(var d in a)-1==h(c,d)&&(b[d]=a[d]);return b}function n(a,b){var c=L(a),d=c?[]:{};return M(a,function(a,e){b(a,e)&&(d[c?d.length:e]=a)}),d}function o(a,b){var c=L(a)?[]:{};return M(a,function(a,d){c[d]=b(a,d)}),c}function p(a,b){var d=1,f=2,i={},j=[],k=i,l=N(a.when(i),{$$promises:i,$$values:i});this.study=function(i){function n(a,c){if(s[c]!==f){if(r.push(c),s[c]===d)throw r.splice(0,h(r,c)),new Error("Cyclic dependency: "+r.join(" -> "));if(s[c]=d,J(a))q.push(c,[function(){return b.get(a)}],j);else{var e=b.annotate(a);M(e,function(a){a!==c&&i.hasOwnProperty(a)&&n(i[a],a)}),q.push(c,a,e)}r.pop(),s[c]=f}}function o(a){return K(a)&&a.then&&a.$$promises}if(!K(i))throw new Error("'invocables' must be an object");var p=g(i||{}),q=[],r=[],s={};return M(i,n),i=r=s=null,function(d,f,g){function h(){--u||(v||e(t,f.$$values),r.$$values=t,r.$$promises=r.$$promises||!0,delete r.$$inheritedValues,n.resolve(t))}function i(a){r.$$failure=a,n.reject(a)}function j(c,e,f){function j(a){l.reject(a),i(a)}function k(){if(!H(r.$$failure))try{l.resolve(b.invoke(e,g,t)),l.promise.then(function(a){t[c]=a,h()},j)}catch(a){j(a)}}var l=a.defer(),m=0;M(f,function(a){s.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,s[a].then(function(b){t[a]=b,--m||k()},j))}),m||k(),s[c]=l.promise}if(o(d)&&g===c&&(g=f,f=d,d=null),d){if(!K(d))throw new Error("'locals' must be an object")}else d=k;if(f){if(!o(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=l;var n=a.defer(),r=n.promise,s=r.$$promises={},t=N({},d),u=1+q.length/3,v=!1;if(H(f.$$failure))return i(f.$$failure),r;f.$$inheritedValues&&e(t,m(f.$$inheritedValues,p)),N(s,f.$$promises),f.$$values?(v=e(t,m(f.$$values,p)),r.$$inheritedValues=m(f.$$values,p),h()):(f.$$inheritedValues&&(r.$$inheritedValues=m(f.$$inheritedValues,p)),f.then(h,i));for(var w=0,x=q.length;x>w;w+=3)d.hasOwnProperty(q[w])?h():j(q[w],q[w+1],q[w+2]);return r}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function q(a,b,c){this.fromConfig=function(a,b,c){return H(a.template)?this.fromString(a.template,b):H(a.templateUrl)?this.fromUrl(a.templateUrl,b):H(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return I(a)?a(b):a},this.fromUrl=function(c,d){return I(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b,headers:{Accept:"text/html"}}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function r(a,b,e){function f(b,c,d,e){if(q.push(b),o[b])return o[b];if(!/^\w+(-+\w+)*(?:\[\])?$/.test(b))throw new Error("Invalid parameter name '"+b+"' in pattern '"+a+"'");if(p[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");return p[b]=new P.Param(b,c,d,e),p[b]}function g(a,b,c,d){var e=["",""],f=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return f;switch(c){case!1:e=["(",")"+(d?"?":"")];break;case!0:e=["?(",")?"];break;default:e=["("+c+"|",")?"]}return f+e[0]+b+e[1]}function h(e,f){var g,h,i,j,k;return g=e[2]||e[3],k=b.params[g],i=a.substring(m,e.index),h=f?e[4]:e[4]||("*"==e[1]?".*":null),j=P.type(h||"string")||d(P.type("string"),{pattern:new RegExp(h,b.caseInsensitive?"i":c)}),{id:g,regexp:h,segment:i,type:j,cfg:k}}b=N({params:{}},K(b)?b:{});var i,j=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k=/([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l="^",m=0,n=this.segments=[],o=e?e.params:{},p=this.params=e?e.params.$$new():new P.ParamSet,q=[];this.source=a;for(var r,s,t;(i=j.exec(a))&&(r=h(i,!1),!(r.segment.indexOf("?")>=0));)s=f(r.id,r.type,r.cfg,"path"),l+=g(r.segment,s.type.pattern.source,s.squash,s.isOptional),n.push(r.segment),m=j.lastIndex;t=a.substring(m);var u=t.indexOf("?");if(u>=0){var v=this.sourceSearch=t.substring(u);if(t=t.substring(0,u),this.sourcePath=a.substring(0,m+u),v.length>0)for(m=0;i=k.exec(v);)r=h(i,!0),s=f(r.id,r.type,r.cfg,"search"),m=j.lastIndex}else this.sourcePath=a,this.sourceSearch="";l+=g(t)+(b.strict===!1?"/?":"")+"$",n.push(t),this.regexp=new RegExp(l,b.caseInsensitive?"i":c),this.prefix=n[0],this.$$paramNames=q}function s(a){N(this,a)}function t(){function a(a){return null!=a?a.toString().replace(/\//g,"%2F"):a}function e(a){return null!=a?a.toString().replace(/%2F/g,"/"):a}function f(){return{strict:p,caseInsensitive:m}}function i(a){return I(a)||L(a)&&I(a[a.length-1])}function j(){for(;w.length;){var a=w.shift();if(a.pattern)throw new Error("You cannot override a type's .pattern at runtime.");b.extend(u[a.name],l.invoke(a.def))}}function k(a){N(this,a||{})}P=this;var l,m=!1,p=!0,q=!1,u={},v=!0,w=[],x={string:{encode:a,decode:e,is:function(a){return null==a||!H(a)||"string"==typeof a},pattern:/[^/]*/},"int":{encode:a,decode:function(a){return parseInt(a,10)},is:function(a){return H(a)&&this.decode(a.toString())===a},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0!==parseInt(a,10)},is:function(a){return a===!0||a===!1},pattern:/0|1/},date:{encode:function(a){return this.is(a)?[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-"):c},decode:function(a){if(this.is(a))return a;var b=this.capture.exec(a);return b?new Date(b[1],b[2]-1,b[3]):c},is:function(a){return a instanceof Date&&!isNaN(a.valueOf())},equals:function(a,b){return this.is(a)&&this.is(b)&&a.toISOString()===b.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:b.toJson,decode:b.fromJson,is:b.isObject,equals:b.equals,pattern:/[^/]*/},any:{encode:b.identity,decode:b.identity,equals:b.equals,pattern:/.*/}};t.$$getDefaultValue=function(a){if(!i(a.value))return a.value;if(!l)throw new Error("Injectable functions cannot be called at configuration time");return l.invoke(a.value)},this.caseInsensitive=function(a){return H(a)&&(m=a),m},this.strictMode=function(a){return H(a)&&(p=a),p},this.defaultSquashPolicy=function(a){if(!H(a))return q;if(a!==!0&&a!==!1&&!J(a))throw new Error("Invalid squash policy: "+a+". Valid policies: false, true, arbitrary-string");return q=a,a},this.compile=function(a,b){return new r(a,N(f(),b))},this.isMatcher=function(a){if(!K(a))return!1;var b=!0;return M(r.prototype,function(c,d){I(c)&&(b=b&&H(a[d])&&I(a[d]))}),b},this.type=function(a,b,c){if(!H(b))return u[a];if(u.hasOwnProperty(a))throw new Error("A type named '"+a+"' has already been defined.");return u[a]=new s(N({name:a},b)),c&&(w.push({name:a,def:c}),v||j()),this},M(x,function(a,b){u[b]=new s(N({name:b},a))}),u=d(u,{}),this.$get=["$injector",function(a){return l=a,v=!1,j(),M(x,function(a,b){u[b]||(u[b]=new s(a))}),this}],this.Param=function(a,b,d,e){function f(a){var b=K(a)?g(a):[],c=-1===h(b,"value")&&-1===h(b,"type")&&-1===h(b,"squash")&&-1===h(b,"array");return c&&(a={value:a}),a.$$fn=i(a.value)?a.value:function(){return a.value},a}function j(b,c,d){if(b.type&&c)throw new Error("Param '"+a+"' has two type configurations.");return c?c:b.type?b.type instanceof s?b.type:new s(b.type):"config"===d?u.any:u.string}function k(){var b={array:"search"===e?"auto":!1},c=a.match(/\[\]$/)?{array:!0}:{};return N(b,c,d).array}function m(a,b){var c=a.squash;if(!b||c===!1)return!1;if(!H(c)||null==c)return q;if(c===!0||J(c))return c;throw new Error("Invalid squash policy: '"+c+"'. Valid policies: false, true, or arbitrary string")}function p(a,b,d,e){var f,g,i=[{from:"",to:d||b?c:""},{from:null,to:d||b?c:""}];return f=L(a.replace)?a.replace:[],J(e)&&f.push({from:e,to:c}),g=o(f,function(a){return a.from}),n(i,function(a){return-1===h(g,a.from)}).concat(f)}function r(){if(!l)throw new Error("Injectable functions cannot be called at configuration time");var a=l.invoke(d.$$fn);if(null!==a&&a!==c&&!w.type.is(a))throw new Error("Default value ("+a+") for parameter '"+w.id+"' is not an instance of Type ("+w.type.name+")");return a}function t(a){function b(a){return function(b){return b.from===a}}function c(a){var c=o(n(w.replace,b(a)),function(a){return a.to});return c.length?c[0]:a}return a=c(a),H(a)?w.type.$normalize(a):r()}function v(){return"{Param:"+a+" "+b+" squash: '"+z+"' optional: "+y+"}"}var w=this;d=f(d),b=j(d,b,e);var x=k();b=x?b.$asArray(x,"search"===e):b,"string"!==b.name||x||"path"!==e||d.value!==c||(d.value="");var y=d.value!==c,z=m(d,y),A=p(d,x,y,z);N(this,{id:a,type:b,location:e,array:x,squash:z,replace:A,isOptional:y,value:t,dynamic:c,config:d,toString:v})},k.prototype={$$new:function(){return d(this,N(new k,{$$parent:this}))},$$keys:function(){for(var a=[],b=[],c=this,d=g(k.prototype);c;)b.push(c),c=c.$$parent;return b.reverse(),M(b,function(b){M(g(b),function(b){-1===h(a,b)&&-1===h(d,b)&&a.push(b)})}),a},$$values:function(a){var b={},c=this;return M(c.$$keys(),function(d){b[d]=c[d].value(a&&a[d])}),b},$$equals:function(a,b){var c=!0,d=this;return M(d.$$keys(),function(e){var f=a&&a[e],g=b&&b[e];d[e].type.equals(f,g)||(c=!1)}),c},$$validates:function(a){var d,e,f,g,h,i=this.$$keys();for(d=0;d<i.length&&(e=this[i[d]],f=a[i[d]],f!==c&&null!==f||!e.isOptional);d++){if(g=e.type.$normalize(f),!e.type.is(g))return!1;if(h=e.type.encode(g),b.isString(h)&&!e.type.pattern.exec(h))return!1}return!0},$$parent:c},this.ParamSet=k}function u(a,d){function e(a){var b=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(a.source);return null!=b?b[1].replace(/\\(.)/g,"$1"):""}function f(a,b){return a.replace(/\$(\$|\d{1,2})/,function(a,c){return b["$"===c?0:Number(c)]})}function g(a,b,c){if(!c)return!1;var d=a.invoke(b,b,{$match:c});return H(d)?d:!0}function h(d,e,f,g){function h(a,b,c){return"/"===p?a:b?p.slice(0,-1)+a:c?p.slice(1)+a:a}function m(a){function b(a){var b=a(f,d);return b?(J(b)&&d.replace().url(b),!0):!1}if(!a||!a.defaultPrevented){o&&d.url()===o;o=c;var e,g=j.length;for(e=0;g>e;e++)if(b(j[e]))return;k&&b(k)}}function n(){return i=i||e.$on("$locationChangeSuccess",m)}var o,p=g.baseHref(),q=d.url();return l||n(),{sync:function(){m()},listen:function(){return n()},update:function(a){return a?void(q=d.url()):void(d.url()!==q&&(d.url(q),d.replace()))},push:function(a,b,e){var f=a.format(b||{});null!==f&&b&&b["#"]&&(f+="#"+b["#"]),d.url(f),o=e&&e.$$avoidResync?d.url():c,e&&e.replace&&d.replace()},href:function(c,e,f){if(!c.validates(e))return null;var g=a.html5Mode();b.isObject(g)&&(g=g.enabled);var i=c.format(e);if(f=f||{},g||null===i||(i="#"+a.hashPrefix()+i),null!==i&&e&&e["#"]&&(i+="#"+e["#"]),i=h(i,g,f.absolute),!f.absolute||!i)return i;var j=!g&&i?"/":"",k=d.port();return k=80===k||443===k?"":":"+k,[d.protocol(),"://",d.host(),k,j,i].join("")}}}var i,j=[],k=null,l=!1;this.rule=function(a){if(!I(a))throw new Error("'rule' must be a function");return j.push(a),this},this.otherwise=function(a){if(J(a)){var b=a;a=function(){return b}}else if(!I(a))throw new Error("'rule' must be a function");return k=a,this},this.when=function(a,b){var c,h=J(b);if(J(a)&&(a=d.compile(a)),!h&&!I(b)&&!L(b))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,b){return h&&(c=d.compile(b),b=["$match",function(a){return c.format(a)}]),N(function(c,d){return g(c,b,a.exec(d.path(),d.search()))},{prefix:J(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(c=b,b=["$match",function(a){return f(c,a)}]),N(function(c,d){return g(c,b,a.exec(d.path()))},{prefix:e(a)})}},j={matcher:d.isMatcher(a),regex:a instanceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,b));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),l=a},this.$get=h,h.$inject=["$location","$rootScope","$injector","$browser"]}function v(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function m(a,b){if(!a)return c;var d=J(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");b=m(b);for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var l=z[e];return!l||!d&&(d||l!==a&&l.self!==a)?c:l}function n(a,b){A[a]||(A[a]=[]),A[a].push(b)}function p(a){for(var b=A[a]||[];b.length;)q(b.shift())}function q(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!J(c)||c.indexOf("@")>=0)throw new Error("State must have a valid name");if(z.hasOwnProperty(c))throw new Error("State '"+c+"'' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):J(b.parent)?b.parent:K(b.parent)&&J(b.parent.name)?b.parent.name:"";if(e&&!z[e])return n(e,b.self);for(var f in C)I(C[f])&&(b[f]=C[f](b,C.$delegates[f]));return z[c]=b,!b[B]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){y.$current.navigable==b&&j(a,c)||y.transitionTo(b,a,{inherit:!0,location:!1})}]),p(c),b}function r(a){return a.indexOf("*")>-1}function s(a){for(var b=a.split("."),c=y.$current.name.split("."),d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return"**"===b[0]&&(c=c.slice(h(c,b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(h(c,b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length?!1:c.join("")===b.join("")}function t(a,b){return J(a)&&!H(b)?C[a]:I(b)&&J(a)?(C[a]&&!C.$delegates[a]&&(C.$delegates[a]=C[a]),C[a]=b,this):this}function u(a,b){return K(a)?b=a:b.name=a,q(b),this}function v(a,e,f,h,l,n,p,q,t){function u(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return p.update(),D;if(!g.retry)return null;if(f.$retry)return p.update(),E;var h=y.transition=e.when(g.retry);return h.then(function(){return h!==y.transition?A:(b.options.$retry=!0,y.transitionTo(b.to,b.toParams,b.options))},function(){return D}),p.update(),h}function v(a,c,d,g,i,j){function m(){var c=[];return M(a.views,function(d,e){var g=d.resolve&&d.resolve!==a.resolve?d.resolve:{};g.$template=[function(){return f.load(e,{view:d,locals:i.globals,params:n,notify:j.notify})||""}],c.push(l.resolve(g,i.globals,i.resolve,a).then(function(c){if(I(d.controllerProvider)||L(d.controllerProvider)){var f=b.extend({},g,i.globals);c.$$controller=h.invoke(d.controllerProvider,null,f)}else c.$$controller=d.controller;c.$$state=a,c.$$controllerAs=d.controllerAs,i[e]=c}))}),e.all(c).then(function(){return i.globals})}var n=d?c:k(a.params.$$keys(),c),o={$stateParams:n};i.resolve=l.resolve(a.resolve,o,i.resolve,a);var p=[i.resolve.then(function(a){i.globals=a})];return g&&p.push(g),e.all(p).then(m).then(function(a){return i})}var A=e.reject(new Error("transition superseded")),C=e.reject(new Error("transition prevented")),D=e.reject(new Error("transition aborted")),E=e.reject(new Error("transition failed"));return x.locals={resolve:null,globals:{$stateParams:{}}},y={params:{},current:x.self,$current:x,transition:null},y.reload=function(a){return y.transitionTo(y.current,n,{reload:a||!0,inherit:!1,notify:!0})},y.go=function(a,b,c){return y.transitionTo(a,b,N({inherit:!0,relative:y.$current},c))},y.transitionTo=function(b,c,f){c=c||{},f=N({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var g,j=y.$current,l=y.params,o=j.path,q=m(b,f.relative),r=c["#"];if(!H(q)){var s={to:b,toParams:c,options:f},t=u(s,j.self,l,f);if(t)return t;if(b=s.to,c=s.toParams,f=s.options,q=m(b,f.relative),!H(q)){if(!f.relative)throw new Error("No such state '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(q[B])throw new Error("Cannot transition to abstract state '"+b+"'");if(f.inherit&&(c=i(n,c||{},y.$current,q)),!q.params.$$validates(c))return E;c=q.params.$$values(c),b=q;var z=b.path,D=0,F=z[D],G=x.locals,I=[];if(f.reload){if(J(f.reload)||K(f.reload)){if(K(f.reload)&&!f.reload.name)throw new Error("Invalid reload state object");var L=f.reload===!0?o[0]:m(f.reload);if(f.reload&&!L)throw new Error("No such reload state '"+(J(f.reload)?f.reload:f.reload.name)+"'");for(;F&&F===o[D]&&F!==L;)G=I[D]=F.locals,D++,F=z[D]}}else for(;F&&F===o[D]&&F.ownParams.$$equals(c,l);)G=I[D]=F.locals,D++,F=z[D];if(w(b,c,j,l,G,f))return r&&(c["#"]=r),y.params=c,O(y.params,n),f.location&&b.navigable&&b.navigable.url&&(p.push(b.navigable.url,c,{$$avoidResync:!0,replace:"replace"===f.location}),p.update(!0)),y.transition=null,e.when(y.current);if(c=k(b.params.$$keys(),c||{}),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,j.self,l).defaultPrevented)return a.$broadcast("$stateChangeCancel",b.self,c,j.self,l),p.update(),C;for(var M=e.when(G),P=D;P<z.length;P++,F=z[P])G=I[P]=d(G),M=v(F,c,F===b,M,G,f);var Q=y.transition=M.then(function(){var d,e,g;if(y.transition!==Q)return A;for(d=o.length-1;d>=D;d--)g=o[d],g.self.onExit&&h.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=D;d<z.length;d++)e=z[d],e.locals=I[d],e.self.onEnter&&h.invoke(e.self.onEnter,e.self,e.locals.globals);return r&&(c["#"]=r),y.transition!==Q?A:(y.$current=b,y.current=b.self,y.params=c,O(y.params,n),y.transition=null,f.location&&b.navigable&&p.push(b.navigable.url,b.navigable.locals.globals.$stateParams,{$$avoidResync:!0,replace:"replace"===f.location}),f.notify&&a.$broadcast("$stateChangeSuccess",b.self,c,j.self,l),p.update(!0),y.current)},function(d){return y.transition!==Q?A:(y.transition=null,g=a.$broadcast("$stateChangeError",b.self,c,j.self,l,d),g.defaultPrevented||p.update(),e.reject(d))});return Q},y.is=function(a,b,d){d=N({relative:y.$current},d||{});var e=m(a,d.relative);return H(e)?y.$current!==e?!1:b?j(e.params.$$values(b),n):!0:c},y.includes=function(a,b,d){if(d=N({relative:y.$current},d||{}),J(a)&&r(a)){if(!s(a))return!1;a=y.$current.name}var e=m(a,d.relative);return H(e)?H(y.$current.includes[e.name])?b?j(e.params.$$values(b),n,g(b)):!0:!1:c},y.href=function(a,b,d){d=N({lossy:!0,inherit:!0,absolute:!1,relative:y.$current},d||{});var e=m(a,d.relative);if(!H(e))return null;d.inherit&&(b=i(n,b||{},y.$current,e));var f=e&&d.lossy?e.navigable:e;return f&&f.url!==c&&null!==f.url?p.href(f.url,k(e.params.$$keys().concat("#"),b||{}),{absolute:d.absolute}):null},y.get=function(a,b){if(0===arguments.length)return o(g(z),function(a){return z[a].self});var c=m(a,b||y.$current);return c&&c.self?c.self:null},y}function w(a,b,c,d,e,f){function g(a,b,c){function d(b){return"search"!=a.params[b].location}var e=a.params.$$keys().filter(d),f=l.apply({},[a.params].concat(e)),g=new P.ParamSet(f);return g.$$equals(b,c)}return!f.reload&&a===c&&(e===c.locals||a.self.reloadOnSearch===!1&&g(c,d,b))?!0:void 0}var x,y,z={},A={},B="abstract",C={parent:function(a){if(H(a.parent)&&a.parent)return m(a.parent);var b=/^(.+)\.[^.]+$/.exec(a.name);return b?m(b[1]):x},data:function(a){return a.parent&&a.parent.data&&(a.data=a.self.data=N({},a.parent.data,a.data)),a.data},url:function(a){var b=a.url,c={params:a.params||{}};if(J(b))return"^"==b.charAt(0)?e.compile(b.substring(1),c):(a.parent.navigable||x).url.concat(b,c);if(!b||e.isMatcher(b))return b;throw new Error("Invalid url '"+b+"' in state '"+a+"'")},navigable:function(a){return a.url?a:a.parent?a.parent.navigable:null},ownParams:function(a){var b=a.url&&a.url.params||new P.ParamSet;return M(a.params||{},function(a,c){b[c]||(b[c]=new P.Param(c,null,a,"config"))}),b},params:function(a){return a.parent&&a.parent.params?N(a.parent.params.$$new(),a.ownParams):new P.ParamSet},views:function(a){var b={};return M(H(a.views)?a.views:{"":a},function(c,d){d.indexOf("@")<0&&(d+="@"+a.parent.name),b[d]=c}),b},path:function(a){return a.parent?a.parent.path.concat(a):[]},includes:function(a){var b=a.parent?N({},a.parent.includes):{};return b[a.name]=!0,b},$delegates:{}};x=q({name:"",url:"^",views:null,"abstract":!0}),x.navigable=null,this.decorator=t,this.state=u,this.$get=v,v.$inject=["$rootScope","$q","$view","$injector","$resolve","$stateParams","$urlRouter","$location","$urlMatcherFactory"]}function w(){function a(a,b){return{load:function(c,d){var e,f={template:null,controller:null,view:null,locals:null,notify:!0,async:!0,params:{}};return d=N(f,d),d.view&&(e=b.fromConfig(d.view,d.params,d.locals)),e&&d.notify&&a.$broadcast("$viewContentLoading",d),e}}}this.$get=a,a.$inject=["$rootScope","$templateFactory"]}function x(){var a=!1;this.useAnchorScroll=function(){a=!0},this.$get=["$anchorScroll","$timeout",function(b,c){return a?b:function(a){return c(function(){a[0].scrollIntoView()},0,!1)}}]}function y(a,c,d,e){function f(){return c.has?function(a){return c.has(a)?c.get(a):null}:function(a){try{return c.get(a)}catch(b){return null}}}function g(a,b){var c=function(){return{enter:function(a,b,c){b.after(a),c()},leave:function(a,b){a.remove(),b()}}};if(j)return{enter:function(a,b,c){var d=j.enter(a,null,b,c);d&&d.then&&d.then(c)},leave:function(a,b){var c=j.leave(a,b);c&&c.then&&c.then(b)}};if(i){var d=i&&i(b,a);return{enter:function(a,b,c){d.enter(a,null,b),c()},leave:function(a,b){d.leave(a),b()}}}return c()}var h=f(),i=h("$animator"),j=h("$animate"),k={restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(c,f,h){return function(c,f,i){function j(){l&&(l.remove(),l=null),n&&(n.$destroy(),n=null),m&&(r.leave(m,function(){l=null}),l=m,m=null)}function k(g){var k,l=A(c,i,f,e),s=l&&a.$current&&a.$current.locals[l];if(g||s!==o){k=c.$new(),o=a.$current.locals[l];var t=h(k,function(a){r.enter(a,f,function(){n&&n.$emit("$viewContentAnimationEnded"),(b.isDefined(q)&&!q||c.$eval(q))&&d(a)}),j()});m=t,n=k,n.$emit("$viewContentLoaded"),n.$eval(p)}}var l,m,n,o,p=i.onload||"",q=i.autoscroll,r=g(i,c);c.$on("$stateChangeSuccess",function(){k(!1)}),c.$on("$viewContentLoading",function(){k(!1)}),k(!0)}}};return k}function z(a,b,c,d){return{restrict:"ECA",priority:-400,compile:function(e){var f=e.html();return function(e,g,h){var i=c.$current,j=A(e,h,g,d),k=i&&i.locals[j];if(k){g.data("$uiView",{name:j,state:k.$$state}),g.html(k.$template?k.$template:f);var l=a(g.contents());if(k.$$controller){k.$scope=e,k.$element=g;var m=b(k.$$controller,k);k.$$controllerAs&&(e[k.$$controllerAs]=m),g.data("$ngControllerController",m),g.children().data("$ngControllerController",m)}l(e)}}}}}function A(a,b,c,d){var e=d(b.uiView||b.name||"")(a),f=c.inheritedData("$uiView");return e.indexOf("@")>=0?e:e+"@"+(f?f.state.name:"")}function B(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function C(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function D(a,c){var d=["location","inherit","reload","absolute"];return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(e,f,g,h){var i=B(g.uiSref,a.current.name),j=null,k=C(f)||a.$current,l="[object SVGAnimatedString]"===Object.prototype.toString.call(f.prop("href"))?"xlink:href":"href",m=null,n="A"===f.prop("tagName").toUpperCase(),o="FORM"===f[0].nodeName,p=o?"action":l,q=!0,r={relative:k,inherit:!0},s=e.$eval(g.uiSrefOpts)||{};b.forEach(d,function(a){a in s&&(r[a]=s[a])});var t=function(c){if(c&&(j=b.copy(c)),q){m=a.href(i.state,j,r);var d=h[1]||h[0];return d&&d.$$addStateInfo(i.state,j),null===m?(q=!1,!1):void g.$set(p,m)}};i.paramExpr&&(e.$watch(i.paramExpr,function(a,b){a!==j&&t(a)},!0),j=b.copy(e.$eval(i.paramExpr))),t(),o||f.bind("click",function(b){var d=b.which||b.button;if(!(d>1||b.ctrlKey||b.metaKey||b.shiftKey||f.attr("target"))){var e=c(function(){a.go(i.state,j,r)});b.preventDefault();var g=n&&!m?1:0;b.preventDefault=function(){g--<=0&&c.cancel(e)}}})}}}function E(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs",function(b,d,e){function f(){g()?d.addClass(i):d.removeClass(i)}function g(){for(var a=0;a<j.length;a++)if(h(j[a].state,j[a].params))return!0;return!1}function h(b,c){return"undefined"!=typeof e.uiSrefActiveEq?a.is(b.name,c):a.includes(b.name,c)}var i,j=[];i=c(e.uiSrefActiveEq||e.uiSrefActive||"",!1)(b),this.$$addStateInfo=function(b,c){var e=a.get(b,C(d));j.push({state:e||{name:b},params:c}),f()},b.$on("$stateChangeSuccess",f)}]}}function F(a){var b=function(b){return a.is(b)};return b.$stateful=!0,b}function G(a){var b=function(b){return a.includes(b)};return b.$stateful=!0,b}var H=b.isDefined,I=b.isFunction,J=b.isString,K=b.isObject,L=b.isArray,M=b.forEach,N=b.extend,O=b.copy;b.module("ui.router.util",["ng"]),b.module("ui.router.router",["ui.router.util"]),b.module("ui.router.state",["ui.router.router","ui.router.util"]),b.module("ui.router",["ui.router.state"]),b.module("ui.router.compat",["ui.router"]),p.$inject=["$q","$injector"],b.module("ui.router.util").service("$resolve",p),q.$inject=["$http","$templateCache","$injector"],b.module("ui.router.util").service("$templateFactory",q);var P;r.prototype.concat=function(a,b){var c={caseInsensitive:P.caseInsensitive(),strict:P.strictMode(),squash:P.defaultSquashPolicy()};return new r(this.sourcePath+a+this.sourceSearch,N(c,b),this)},r.prototype.toString=function(){return this.source},r.prototype.exec=function(a,b){function c(a){function b(a){return a.split("").reverse().join("")}function c(a){return a.replace(/\\-/g,"-")}var d=b(a).split(/-(?!\\)/),e=o(d,b);return o(e,c).reverse()}var d=this.regexp.exec(a);if(!d)return null;b=b||{};var e,f,g,h=this.parameters(),i=h.length,j=this.segments.length-1,k={};if(j!==d.length-1)throw new Error("Unbalanced capture group in route '"+this.source+"'");for(e=0;j>e;e++){g=h[e];var l=this.params[g],m=d[e+1];for(f=0;f<l.replace;f++)l.replace[f].from===m&&(m=l.replace[f].to);m&&l.array===!0&&(m=c(m)),k[g]=l.value(m)}for(;i>e;e++)g=h[e],k[g]=this.params[g].value(b[g]);return k},r.prototype.parameters=function(a){return H(a)?this.params[a]||null:this.$$paramNames},r.prototype.validates=function(a){return this.params.$$validates(a)},r.prototype.format=function(a){function b(a){return encodeURIComponent(a).replace(/-/g,function(a){return"%5C%"+a.charCodeAt(0).toString(16).toUpperCase()})}a=a||{};var c=this.segments,d=this.parameters(),e=this.params;if(!this.validates(a))return null;var f,g=!1,h=c.length-1,i=d.length,j=c[0];for(f=0;i>f;f++){var k=h>f,l=d[f],m=e[l],n=m.value(a[l]),p=m.isOptional&&m.type.equals(m.value(),n),q=p?m.squash:!1,r=m.type.encode(n);if(k){var s=c[f+1];if(q===!1)null!=r&&(j+=L(r)?o(r,b).join("-"):encodeURIComponent(r)),j+=s;else if(q===!0){var t=j.match(/\/$/)?/\/?(.*)/:/(.*)/;j+=s.match(t)[1]}else J(q)&&(j+=q+s)}else{if(null==r||p&&q!==!1)continue;L(r)||(r=[r]),r=o(r,encodeURIComponent).join("&"+l+"="),j+=(g?"&":"?")+(l+"="+r),g=!0}}return j},s.prototype.is=function(a,b){return!0},s.prototype.encode=function(a,b){return a},s.prototype.decode=function(a,b){return a},s.prototype.equals=function(a,b){return a==b},s.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},s.prototype.pattern=/.*/,s.prototype.toString=function(){return"{Type:"+this.name+"}"},s.prototype.$normalize=function(a){return this.is(a)?a:this.decode(a)},s.prototype.$asArray=function(a,b){function d(a,b){function d(a,b){return function(){return a[b].apply(a,arguments)}}function e(a){return L(a)?a:H(a)?[a]:[]}function f(a){switch(a.length){case 0:return c;case 1:return"auto"===b?a[0]:a;default:return a}}function g(a){return!a}function h(a,b){return function(c){c=e(c);var d=o(c,a);return b===!0?0===n(d,g).length:f(d)}}function i(a){return function(b,c){var d=e(b),f=e(c);if(d.length!==f.length)return!1;for(var g=0;g<d.length;g++)if(!a(d[g],f[g]))return!1;return!0}}this.encode=h(d(a,"encode")),this.decode=h(d(a,"decode")),this.is=h(d(a,"is"),!0),this.equals=i(d(a,"equals")),this.pattern=a.pattern,this.$normalize=h(d(a,"$normalize")),this.name=a.name,this.$arrayMode=b}if(!a)return this;if("auto"===a&&!b)throw new Error("'auto' array mode is for query parameters only");return new d(this,a)},b.module("ui.router.util").provider("$urlMatcherFactory",t),b.module("ui.router.util").run(["$urlMatcherFactory",function(a){}]),u.$inject=["$locationProvider","$urlMatcherFactoryProvider"],b.module("ui.router.router").provider("$urlRouter",u),v.$inject=["$urlRouterProvider","$urlMatcherFactoryProvider"],b.module("ui.router.state").value("$stateParams",{}).provider("$state",v),w.$inject=[],b.module("ui.router.state").provider("$view",w),b.module("ui.router.state").provider("$uiViewScroll",x),y.$inject=["$state","$injector","$uiViewScroll","$interpolate"],z.$inject=["$compile","$controller","$state","$interpolate"],b.module("ui.router.state").directive("uiView",y),b.module("ui.router.state").directive("uiView",z),D.$inject=["$state","$timeout"],E.$inject=["$state","$stateParams","$interpolate"],b.module("ui.router.state").directive("uiSref",D).directive("uiSrefActive",E).directive("uiSrefActiveEq",E),F.$inject=["$state"],G.$inject=["$state"],b.module("ui.router.state").filter("isState",F).filter("includedByState",G)}(window,window.angular);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/common.js b/src/main/webapp/bower_components/angular-ui-router/src/common.js
deleted file mode 100644
index a85ff9e7..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/common.js
+++ /dev/null
@@ -1,292 +0,0 @@
-/*jshint globalstrict:true*/
-/*global angular:false*/
-'use strict';
-
-var isDefined = angular.isDefined,
-    isFunction = angular.isFunction,
-    isString = angular.isString,
-    isObject = angular.isObject,
-    isArray = angular.isArray,
-    forEach = angular.forEach,
-    extend = angular.extend,
-    copy = angular.copy;
-
-function inherit(parent, extra) {
-  return extend(new (extend(function() {}, { prototype: parent }))(), extra);
-}
-
-function merge(dst) {
-  forEach(arguments, function(obj) {
-    if (obj !== dst) {
-      forEach(obj, function(value, key) {
-        if (!dst.hasOwnProperty(key)) dst[key] = value;
-      });
-    }
-  });
-  return dst;
-}
-
-/**
- * Finds the common ancestor path between two states.
- *
- * @param {Object} first The first state.
- * @param {Object} second The second state.
- * @return {Array} Returns an array of state names in descending order, not including the root.
- */
-function ancestors(first, second) {
-  var path = [];
-
-  for (var n in first.path) {
-    if (first.path[n] !== second.path[n]) break;
-    path.push(first.path[n]);
-  }
-  return path;
-}
-
-/**
- * IE8-safe wrapper for `Object.keys()`.
- *
- * @param {Object} object A JavaScript object.
- * @return {Array} Returns the keys of the object as an array.
- */
-function objectKeys(object) {
-  if (Object.keys) {
-    return Object.keys(object);
-  }
-  var result = [];
-
-  forEach(object, function(val, key) {
-    result.push(key);
-  });
-  return result;
-}
-
-/**
- * IE8-safe wrapper for `Array.prototype.indexOf()`.
- *
- * @param {Array} array A JavaScript array.
- * @param {*} value A value to search the array for.
- * @return {Number} Returns the array index value of `value`, or `-1` if not present.
- */
-function indexOf(array, value) {
-  if (Array.prototype.indexOf) {
-    return array.indexOf(value, Number(arguments[2]) || 0);
-  }
-  var len = array.length >>> 0, from = Number(arguments[2]) || 0;
-  from = (from < 0) ? Math.ceil(from) : Math.floor(from);
-
-  if (from < 0) from += len;
-
-  for (; from < len; from++) {
-    if (from in array && array[from] === value) return from;
-  }
-  return -1;
-}
-
-/**
- * Merges a set of parameters with all parameters inherited between the common parents of the
- * current state and a given destination state.
- *
- * @param {Object} currentParams The value of the current state parameters ($stateParams).
- * @param {Object} newParams The set of parameters which will be composited with inherited params.
- * @param {Object} $current Internal definition of object representing the current state.
- * @param {Object} $to Internal definition of object representing state to transition to.
- */
-function inheritParams(currentParams, newParams, $current, $to) {
-  var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = [];
-
-  for (var i in parents) {
-    if (!parents[i].params) continue;
-    parentParams = objectKeys(parents[i].params);
-    if (!parentParams.length) continue;
-
-    for (var j in parentParams) {
-      if (indexOf(inheritList, parentParams[j]) >= 0) continue;
-      inheritList.push(parentParams[j]);
-      inherited[parentParams[j]] = currentParams[parentParams[j]];
-    }
-  }
-  return extend({}, inherited, newParams);
-}
-
-/**
- * Performs a non-strict comparison of the subset of two objects, defined by a list of keys.
- *
- * @param {Object} a The first object.
- * @param {Object} b The second object.
- * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified,
- *                     it defaults to the list of keys in `a`.
- * @return {Boolean} Returns `true` if the keys match, otherwise `false`.
- */
-function equalForKeys(a, b, keys) {
-  if (!keys) {
-    keys = [];
-    for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility
-  }
-
-  for (var i=0; i<keys.length; i++) {
-    var k = keys[i];
-    if (a[k] != b[k]) return false; // Not '===', values aren't necessarily normalized
-  }
-  return true;
-}
-
-/**
- * Returns the subset of an object, based on a list of keys.
- *
- * @param {Array} keys
- * @param {Object} values
- * @return {Boolean} Returns a subset of `values`.
- */
-function filterByKeys(keys, values) {
-  var filtered = {};
-
-  forEach(keys, function (name) {
-    filtered[name] = values[name];
-  });
-  return filtered;
-}
-
-// like _.indexBy
-// when you know that your index values will be unique, or you want last-one-in to win
-function indexBy(array, propName) {
-  var result = {};
-  forEach(array, function(item) {
-    result[item[propName]] = item;
-  });
-  return result;
-}
-
-// extracted from underscore.js
-// Return a copy of the object only containing the whitelisted properties.
-function pick(obj) {
-  var copy = {};
-  var keys = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
-  forEach(keys, function(key) {
-    if (key in obj) copy[key] = obj[key];
-  });
-  return copy;
-}
-
-// extracted from underscore.js
-// Return a copy of the object omitting the blacklisted properties.
-function omit(obj) {
-  var copy = {};
-  var keys = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
-  for (var key in obj) {
-    if (indexOf(keys, key) == -1) copy[key] = obj[key];
-  }
-  return copy;
-}
-
-function pluck(collection, key) {
-  var result = isArray(collection) ? [] : {};
-
-  forEach(collection, function(val, i) {
-    result[i] = isFunction(key) ? key(val) : val[key];
-  });
-  return result;
-}
-
-function filter(collection, callback) {
-  var array = isArray(collection);
-  var result = array ? [] : {};
-  forEach(collection, function(val, i) {
-    if (callback(val, i)) {
-      result[array ? result.length : i] = val;
-    }
-  });
-  return result;
-}
-
-function map(collection, callback) {
-  var result = isArray(collection) ? [] : {};
-
-  forEach(collection, function(val, i) {
-    result[i] = callback(val, i);
-  });
-  return result;
-}
-
-/**
- * @ngdoc overview
- * @name ui.router.util
- *
- * @description
- * # ui.router.util sub-module
- *
- * This module is a dependency of other sub-modules. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- *
- */
-angular.module('ui.router.util', ['ng']);
-
-/**
- * @ngdoc overview
- * @name ui.router.router
- * 
- * @requires ui.router.util
- *
- * @description
- * # ui.router.router sub-module
- *
- * This module is a dependency of other sub-modules. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- */
-angular.module('ui.router.router', ['ui.router.util']);
-
-/**
- * @ngdoc overview
- * @name ui.router.state
- * 
- * @requires ui.router.router
- * @requires ui.router.util
- *
- * @description
- * # ui.router.state sub-module
- *
- * This module is a dependency of the main ui.router module. Do not include this module as a dependency
- * in your angular app (use {@link ui.router} module instead).
- * 
- */
-angular.module('ui.router.state', ['ui.router.router', 'ui.router.util']);
-
-/**
- * @ngdoc overview
- * @name ui.router
- *
- * @requires ui.router.state
- *
- * @description
- * # ui.router
- * 
- * ## The main module for ui.router 
- * There are several sub-modules included with the ui.router module, however only this module is needed
- * as a dependency within your angular app. The other modules are for organization purposes. 
- *
- * The modules are:
- * * ui.router - the main "umbrella" module
- * * ui.router.router - 
- * 
- * *You'll need to include **only** this module as the dependency within your angular app.*
- * 
- * <pre>
- * <!doctype html>
- * <html ng-app="myApp">
- * <head>
- *   <script src="js/angular.js"></script>
- *   <!-- Include the ui-router script -->
- *   <script src="js/angular-ui-router.min.js"></script>
- *   <script>
- *     // ...and add 'ui.router' as a dependency
- *     var myApp = angular.module('myApp', ['ui.router']);
- *   </script>
- * </head>
- * <body>
- * </body>
- * </html>
- * </pre>
- */
-angular.module('ui.router', ['ui.router.state']);
-
-angular.module('ui.router.compat', ['ui.router']);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/resolve.js b/src/main/webapp/bower_components/angular-ui-router/src/resolve.js
deleted file mode 100644
index f1c17900..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/resolve.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * @ngdoc object
- * @name ui.router.util.$resolve
- *
- * @requires $q
- * @requires $injector
- *
- * @description
- * Manages resolution of (acyclic) graphs of promises.
- */
-$Resolve.$inject = ['$q', '$injector'];
-function $Resolve(  $q,    $injector) {
-  
-  var VISIT_IN_PROGRESS = 1,
-      VISIT_DONE = 2,
-      NOTHING = {},
-      NO_DEPENDENCIES = [],
-      NO_LOCALS = NOTHING,
-      NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING });
-  
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$resolve#study
-   * @methodOf ui.router.util.$resolve
-   *
-   * @description
-   * Studies a set of invocables that are likely to be used multiple times.
-   * <pre>
-   * $resolve.study(invocables)(locals, parent, self)
-   * </pre>
-   * is equivalent to
-   * <pre>
-   * $resolve.resolve(invocables, locals, parent, self)
-   * </pre>
-   * but the former is more efficient (in fact `resolve` just calls `study` 
-   * internally).
-   *
-   * @param {object} invocables Invocable objects
-   * @return {function} a function to pass in locals, parent and self
-   */
-  this.study = function (invocables) {
-    if (!isObject(invocables)) throw new Error("'invocables' must be an object");
-    var invocableKeys = objectKeys(invocables || {});
-    
-    // Perform a topological sort of invocables to build an ordered plan
-    var plan = [], cycle = [], visited = {};
-    function visit(value, key) {
-      if (visited[key] === VISIT_DONE) return;
-      
-      cycle.push(key);
-      if (visited[key] === VISIT_IN_PROGRESS) {
-        cycle.splice(0, indexOf(cycle, key));
-        throw new Error("Cyclic dependency: " + cycle.join(" -> "));
-      }
-      visited[key] = VISIT_IN_PROGRESS;
-      
-      if (isString(value)) {
-        plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES);
-      } else {
-        var params = $injector.annotate(value);
-        forEach(params, function (param) {
-          if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param);
-        });
-        plan.push(key, value, params);
-      }
-      
-      cycle.pop();
-      visited[key] = VISIT_DONE;
-    }
-    forEach(invocables, visit);
-    invocables = cycle = visited = null; // plan is all that's required
-    
-    function isResolve(value) {
-      return isObject(value) && value.then && value.$$promises;
-    }
-    
-    return function (locals, parent, self) {
-      if (isResolve(locals) && self === undefined) {
-        self = parent; parent = locals; locals = null;
-      }
-      if (!locals) locals = NO_LOCALS;
-      else if (!isObject(locals)) {
-        throw new Error("'locals' must be an object");
-      }       
-      if (!parent) parent = NO_PARENT;
-      else if (!isResolve(parent)) {
-        throw new Error("'parent' must be a promise returned by $resolve.resolve()");
-      }
-      
-      // To complete the overall resolution, we have to wait for the parent
-      // promise and for the promise for each invokable in our plan.
-      var resolution = $q.defer(),
-          result = resolution.promise,
-          promises = result.$$promises = {},
-          values = extend({}, locals),
-          wait = 1 + plan.length/3,
-          merged = false;
-          
-      function done() {
-        // Merge parent values we haven't got yet and publish our own $$values
-        if (!--wait) {
-          if (!merged) merge(values, parent.$$values); 
-          result.$$values = values;
-          result.$$promises = result.$$promises || true; // keep for isResolve()
-          delete result.$$inheritedValues;
-          resolution.resolve(values);
-        }
-      }
-      
-      function fail(reason) {
-        result.$$failure = reason;
-        resolution.reject(reason);
-      }
-
-      // Short-circuit if parent has already failed
-      if (isDefined(parent.$$failure)) {
-        fail(parent.$$failure);
-        return result;
-      }
-      
-      if (parent.$$inheritedValues) {
-        merge(values, omit(parent.$$inheritedValues, invocableKeys));
-      }
-
-      // Merge parent values if the parent has already resolved, or merge
-      // parent promises and wait if the parent resolve is still in progress.
-      extend(promises, parent.$$promises);
-      if (parent.$$values) {
-        merged = merge(values, omit(parent.$$values, invocableKeys));
-        result.$$inheritedValues = omit(parent.$$values, invocableKeys);
-        done();
-      } else {
-        if (parent.$$inheritedValues) {
-          result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys);
-        }        
-        parent.then(done, fail);
-      }
-      
-      // Process each invocable in the plan, but ignore any where a local of the same name exists.
-      for (var i=0, ii=plan.length; i<ii; i+=3) {
-        if (locals.hasOwnProperty(plan[i])) done();
-        else invoke(plan[i], plan[i+1], plan[i+2]);
-      }
-      
-      function invoke(key, invocable, params) {
-        // Create a deferred for this invocation. Failures will propagate to the resolution as well.
-        var invocation = $q.defer(), waitParams = 0;
-        function onfailure(reason) {
-          invocation.reject(reason);
-          fail(reason);
-        }
-        // Wait for any parameter that we have a promise for (either from parent or from this
-        // resolve; in that case study() will have made sure it's ordered before us in the plan).
-        forEach(params, function (dep) {
-          if (promises.hasOwnProperty(dep) && !locals.hasOwnProperty(dep)) {
-            waitParams++;
-            promises[dep].then(function (result) {
-              values[dep] = result;
-              if (!(--waitParams)) proceed();
-            }, onfailure);
-          }
-        });
-        if (!waitParams) proceed();
-        function proceed() {
-          if (isDefined(result.$$failure)) return;
-          try {
-            invocation.resolve($injector.invoke(invocable, self, values));
-            invocation.promise.then(function (result) {
-              values[key] = result;
-              done();
-            }, onfailure);
-          } catch (e) {
-            onfailure(e);
-          }
-        }
-        // Publish promise synchronously; invocations further down in the plan may depend on it.
-        promises[key] = invocation.promise;
-      }
-      
-      return result;
-    };
-  };
-  
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$resolve#resolve
-   * @methodOf ui.router.util.$resolve
-   *
-   * @description
-   * Resolves a set of invocables. An invocable is a function to be invoked via 
-   * `$injector.invoke()`, and can have an arbitrary number of dependencies. 
-   * An invocable can either return a value directly,
-   * or a `$q` promise. If a promise is returned it will be resolved and the 
-   * resulting value will be used instead. Dependencies of invocables are resolved 
-   * (in this order of precedence)
-   *
-   * - from the specified `locals`
-   * - from another invocable that is part of this `$resolve` call
-   * - from an invocable that is inherited from a `parent` call to `$resolve` 
-   *   (or recursively
-   * - from any ancestor `$resolve` of that parent).
-   *
-   * The return value of `$resolve` is a promise for an object that contains 
-   * (in this order of precedence)
-   *
-   * - any `locals` (if specified)
-   * - the resolved return values of all injectables
-   * - any values inherited from a `parent` call to `$resolve` (if specified)
-   *
-   * The promise will resolve after the `parent` promise (if any) and all promises 
-   * returned by injectables have been resolved. If any invocable 
-   * (or `$injector.invoke`) throws an exception, or if a promise returned by an 
-   * invocable is rejected, the `$resolve` promise is immediately rejected with the 
-   * same error. A rejection of a `parent` promise (if specified) will likewise be 
-   * propagated immediately. Once the `$resolve` promise has been rejected, no 
-   * further invocables will be called.
-   * 
-   * Cyclic dependencies between invocables are not permitted and will caues `$resolve`
-   * to throw an error. As a special case, an injectable can depend on a parameter 
-   * with the same name as the injectable, which will be fulfilled from the `parent` 
-   * injectable of the same name. This allows inherited values to be decorated. 
-   * Note that in this case any other injectable in the same `$resolve` with the same
-   * dependency would see the decorated value, not the inherited value.
-   *
-   * Note that missing dependencies -- unlike cyclic dependencies -- will cause an 
-   * (asynchronous) rejection of the `$resolve` promise rather than a (synchronous) 
-   * exception.
-   *
-   * Invocables are invoked eagerly as soon as all dependencies are available. 
-   * This is true even for dependencies inherited from a `parent` call to `$resolve`.
-   *
-   * As a special case, an invocable can be a string, in which case it is taken to 
-   * be a service name to be passed to `$injector.get()`. This is supported primarily 
-   * for backwards-compatibility with the `resolve` property of `$routeProvider` 
-   * routes.
-   *
-   * @param {object} invocables functions to invoke or 
-   * `$injector` services to fetch.
-   * @param {object} locals  values to make available to the injectables
-   * @param {object} parent  a promise returned by another call to `$resolve`.
-   * @param {object} self  the `this` for the invoked methods
-   * @return {object} Promise for an object that contains the resolved return value
-   * of all invocables, as well as any inherited and local values.
-   */
-  this.resolve = function (invocables, locals, parent, self) {
-    return this.study(invocables)(locals, parent, self);
-  };
-}
-
-angular.module('ui.router.util').service('$resolve', $Resolve);
-
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/state.js b/src/main/webapp/bower_components/angular-ui-router/src/state.js
deleted file mode 100644
index 56ee5a05..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/state.js
+++ /dev/null
@@ -1,1465 +0,0 @@
-/**
- * @ngdoc object
- * @name ui.router.state.$stateProvider
- *
- * @requires ui.router.router.$urlRouterProvider
- * @requires ui.router.util.$urlMatcherFactoryProvider
- *
- * @description
- * The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely
- * on state.
- *
- * A state corresponds to a "place" in the application in terms of the overall UI and
- * navigation. A state describes (via the controller / template / view properties) what
- * the UI looks like and does at that place.
- *
- * States often have things in common, and the primary way of factoring out these
- * commonalities in this model is via the state hierarchy, i.e. parent/child states aka
- * nested states.
- *
- * The `$stateProvider` provides interfaces to declare these states for your app.
- */
-$StateProvider.$inject = ['$urlRouterProvider', '$urlMatcherFactoryProvider'];
-function $StateProvider(   $urlRouterProvider,   $urlMatcherFactory) {
-
-  var root, states = {}, $state, queue = {}, abstractKey = 'abstract';
-
-  // Builds state properties from definition passed to registerState()
-  var stateBuilder = {
-
-    // Derive parent state from a hierarchical name only if 'parent' is not explicitly defined.
-    // state.children = [];
-    // if (parent) parent.children.push(state);
-    parent: function(state) {
-      if (isDefined(state.parent) && state.parent) return findState(state.parent);
-      // regex matches any valid composite state name
-      // would match "contact.list" but not "contacts"
-      var compositeName = /^(.+)\.[^.]+$/.exec(state.name);
-      return compositeName ? findState(compositeName[1]) : root;
-    },
-
-    // inherit 'data' from parent and override by own values (if any)
-    data: function(state) {
-      if (state.parent && state.parent.data) {
-        state.data = state.self.data = extend({}, state.parent.data, state.data);
-      }
-      return state.data;
-    },
-
-    // Build a URLMatcher if necessary, either via a relative or absolute URL
-    url: function(state) {
-      var url = state.url, config = { params: state.params || {} };
-
-      if (isString(url)) {
-        if (url.charAt(0) == '^') return $urlMatcherFactory.compile(url.substring(1), config);
-        return (state.parent.navigable || root).url.concat(url, config);
-      }
-
-      if (!url || $urlMatcherFactory.isMatcher(url)) return url;
-      throw new Error("Invalid url '" + url + "' in state '" + state + "'");
-    },
-
-    // Keep track of the closest ancestor state that has a URL (i.e. is navigable)
-    navigable: function(state) {
-      return state.url ? state : (state.parent ? state.parent.navigable : null);
-    },
-
-    // Own parameters for this state. state.url.params is already built at this point. Create and add non-url params
-    ownParams: function(state) {
-      var params = state.url && state.url.params || new $$UMFP.ParamSet();
-      forEach(state.params || {}, function(config, id) {
-        if (!params[id]) params[id] = new $$UMFP.Param(id, null, config, "config");
-      });
-      return params;
-    },
-
-    // Derive parameters for this state and ensure they're a super-set of parent's parameters
-    params: function(state) {
-      return state.parent && state.parent.params ? extend(state.parent.params.$$new(), state.ownParams) : new $$UMFP.ParamSet();
-    },
-
-    // If there is no explicit multi-view configuration, make one up so we don't have
-    // to handle both cases in the view directive later. Note that having an explicit
-    // 'views' property will mean the default unnamed view properties are ignored. This
-    // is also a good time to resolve view names to absolute names, so everything is a
-    // straight lookup at link time.
-    views: function(state) {
-      var views = {};
-
-      forEach(isDefined(state.views) ? state.views : { '': state }, function (view, name) {
-        if (name.indexOf('@') < 0) name += '@' + state.parent.name;
-        views[name] = view;
-      });
-      return views;
-    },
-
-    // Keep a full path from the root down to this state as this is needed for state activation.
-    path: function(state) {
-      return state.parent ? state.parent.path.concat(state) : []; // exclude root from path
-    },
-
-    // Speed up $state.contains() as it's used a lot
-    includes: function(state) {
-      var includes = state.parent ? extend({}, state.parent.includes) : {};
-      includes[state.name] = true;
-      return includes;
-    },
-
-    $delegates: {}
-  };
-
-  function isRelative(stateName) {
-    return stateName.indexOf(".") === 0 || stateName.indexOf("^") === 0;
-  }
-
-  function findState(stateOrName, base) {
-    if (!stateOrName) return undefined;
-
-    var isStr = isString(stateOrName),
-        name  = isStr ? stateOrName : stateOrName.name,
-        path  = isRelative(name);
-
-    if (path) {
-      if (!base) throw new Error("No reference point given for path '"  + name + "'");
-      base = findState(base);
-      
-      var rel = name.split("."), i = 0, pathLength = rel.length, current = base;
-
-      for (; i < pathLength; i++) {
-        if (rel[i] === "" && i === 0) {
-          current = base;
-          continue;
-        }
-        if (rel[i] === "^") {
-          if (!current.parent) throw new Error("Path '" + name + "' not valid for state '" + base.name + "'");
-          current = current.parent;
-          continue;
-        }
-        break;
-      }
-      rel = rel.slice(i).join(".");
-      name = current.name + (current.name && rel ? "." : "") + rel;
-    }
-    var state = states[name];
-
-    if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {
-      return state;
-    }
-    return undefined;
-  }
-
-  function queueState(parentName, state) {
-    if (!queue[parentName]) {
-      queue[parentName] = [];
-    }
-    queue[parentName].push(state);
-  }
-
-  function flushQueuedChildren(parentName) {
-    var queued = queue[parentName] || [];
-    while(queued.length) {
-      registerState(queued.shift());
-    }
-  }
-
-  function registerState(state) {
-    // Wrap a new object around the state so we can store our private details easily.
-    state = inherit(state, {
-      self: state,
-      resolve: state.resolve || {},
-      toString: function() { return this.name; }
-    });
-
-    var name = state.name;
-    if (!isString(name) || name.indexOf('@') >= 0) throw new Error("State must have a valid name");
-    if (states.hasOwnProperty(name)) throw new Error("State '" + name + "'' is already defined");
-
-    // Get parent name
-    var parentName = (name.indexOf('.') !== -1) ? name.substring(0, name.lastIndexOf('.'))
-        : (isString(state.parent)) ? state.parent
-        : (isObject(state.parent) && isString(state.parent.name)) ? state.parent.name
-        : '';
-
-    // If parent is not registered yet, add state to queue and register later
-    if (parentName && !states[parentName]) {
-      return queueState(parentName, state.self);
-    }
-
-    for (var key in stateBuilder) {
-      if (isFunction(stateBuilder[key])) state[key] = stateBuilder[key](state, stateBuilder.$delegates[key]);
-    }
-    states[name] = state;
-
-    // Register the state in the global state list and with $urlRouter if necessary.
-    if (!state[abstractKey] && state.url) {
-      $urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {
-        if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {
-          $state.transitionTo(state, $match, { inherit: true, location: false });
-        }
-      }]);
-    }
-
-    // Register any queued children
-    flushQueuedChildren(name);
-
-    return state;
-  }
-
-  // Checks text to see if it looks like a glob.
-  function isGlob (text) {
-    return text.indexOf('*') > -1;
-  }
-
-  // Returns true if glob matches current $state name.
-  function doesStateMatchGlob (glob) {
-    var globSegments = glob.split('.'),
-        segments = $state.$current.name.split('.');
-
-    //match single stars
-    for (var i = 0, l = globSegments.length; i < l; i++) {
-      if (globSegments[i] === '*') {
-        segments[i] = '*';
-      }
-    }
-
-    //match greedy starts
-    if (globSegments[0] === '**') {
-       segments = segments.slice(indexOf(segments, globSegments[1]));
-       segments.unshift('**');
-    }
-    //match greedy ends
-    if (globSegments[globSegments.length - 1] === '**') {
-       segments.splice(indexOf(segments, globSegments[globSegments.length - 2]) + 1, Number.MAX_VALUE);
-       segments.push('**');
-    }
-
-    if (globSegments.length != segments.length) {
-      return false;
-    }
-
-    return segments.join('') === globSegments.join('');
-  }
-
-
-  // Implicit root state that is always active
-  root = registerState({
-    name: '',
-    url: '^',
-    views: null,
-    'abstract': true
-  });
-  root.navigable = null;
-
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$stateProvider#decorator
-   * @methodOf ui.router.state.$stateProvider
-   *
-   * @description
-   * Allows you to extend (carefully) or override (at your own peril) the 
-   * `stateBuilder` object used internally by `$stateProvider`. This can be used 
-   * to add custom functionality to ui-router, for example inferring templateUrl 
-   * based on the state name.
-   *
-   * When passing only a name, it returns the current (original or decorated) builder
-   * function that matches `name`.
-   *
-   * The builder functions that can be decorated are listed below. Though not all
-   * necessarily have a good use case for decoration, that is up to you to decide.
-   *
-   * In addition, users can attach custom decorators, which will generate new 
-   * properties within the state's internal definition. There is currently no clear 
-   * use-case for this beyond accessing internal states (i.e. $state.$current), 
-   * however, expect this to become increasingly relevant as we introduce additional 
-   * meta-programming features.
-   *
-   * **Warning**: Decorators should not be interdependent because the order of 
-   * execution of the builder functions in non-deterministic. Builder functions 
-   * should only be dependent on the state definition object and super function.
-   *
-   *
-   * Existing builder functions and current return values:
-   *
-   * - **parent** `{object}` - returns the parent state object.
-   * - **data** `{object}` - returns state data, including any inherited data that is not
-   *   overridden by own values (if any).
-   * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}
-   *   or `null`.
-   * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is 
-   *   navigable).
-   * - **params** `{object}` - returns an array of state params that are ensured to 
-   *   be a super-set of parent's params.
-   * - **views** `{object}` - returns a views object where each key is an absolute view 
-   *   name (i.e. "viewName@stateName") and each value is the config object 
-   *   (template, controller) for the view. Even when you don't use the views object 
-   *   explicitly on a state config, one is still created for you internally.
-   *   So by decorating this builder function you have access to decorating template 
-   *   and controller properties.
-   * - **ownParams** `{object}` - returns an array of params that belong to the state, 
-   *   not including any params defined by ancestor states.
-   * - **path** `{string}` - returns the full path from the root down to this state. 
-   *   Needed for state activation.
-   * - **includes** `{object}` - returns an object that includes every state that 
-   *   would pass a `$state.includes()` test.
-   *
-   * @example
-   * <pre>
-   * // Override the internal 'views' builder with a function that takes the state
-   * // definition, and a reference to the internal function being overridden:
-   * $stateProvider.decorator('views', function (state, parent) {
-   *   var result = {},
-   *       views = parent(state);
-   *
-   *   angular.forEach(views, function (config, name) {
-   *     var autoName = (state.name + '.' + name).replace('.', '/');
-   *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';
-   *     result[name] = config;
-   *   });
-   *   return result;
-   * });
-   *
-   * $stateProvider.state('home', {
-   *   views: {
-   *     'contact.list': { controller: 'ListController' },
-   *     'contact.item': { controller: 'ItemController' }
-   *   }
-   * });
-   *
-   * // ...
-   *
-   * $state.go('home');
-   * // Auto-populates list and item views with /partials/home/contact/list.html,
-   * // and /partials/home/contact/item.html, respectively.
-   * </pre>
-   *
-   * @param {string} name The name of the builder function to decorate. 
-   * @param {object} func A function that is responsible for decorating the original 
-   * builder function. The function receives two parameters:
-   *
-   *   - `{object}` - state - The state config object.
-   *   - `{object}` - super - The original builder function.
-   *
-   * @return {object} $stateProvider - $stateProvider instance
-   */
-  this.decorator = decorator;
-  function decorator(name, func) {
-    /*jshint validthis: true */
-    if (isString(name) && !isDefined(func)) {
-      return stateBuilder[name];
-    }
-    if (!isFunction(func) || !isString(name)) {
-      return this;
-    }
-    if (stateBuilder[name] && !stateBuilder.$delegates[name]) {
-      stateBuilder.$delegates[name] = stateBuilder[name];
-    }
-    stateBuilder[name] = func;
-    return this;
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$stateProvider#state
-   * @methodOf ui.router.state.$stateProvider
-   *
-   * @description
-   * Registers a state configuration under a given state name. The stateConfig object
-   * has the following acceptable properties.
-   *
-   * @param {string} name A unique state name, e.g. "home", "about", "contacts".
-   * To create a parent/child state use a dot, e.g. "about.sales", "home.newest".
-   * @param {object} stateConfig State configuration object.
-   * @param {string|function=} stateConfig.template
-   * <a id='template'></a>
-   *   html template as a string or a function that returns
-   *   an html template as a string which should be used by the uiView directives. This property 
-   *   takes precedence over templateUrl.
-   *   
-   *   If `template` is a function, it will be called with the following parameters:
-   *
-   *   - {array.&lt;object&gt;} - state parameters extracted from the current $location.path() by
-   *     applying the current state
-   *
-   * <pre>template:
-   *   "<h1>inline template definition</h1>" +
-   *   "<div ui-view></div>"</pre>
-   * <pre>template: function(params) {
-   *       return "<h1>generated template</h1>"; }</pre>
-   * </div>
-   *
-   * @param {string|function=} stateConfig.templateUrl
-   * <a id='templateUrl'></a>
-   *
-   *   path or function that returns a path to an html
-   *   template that should be used by uiView.
-   *   
-   *   If `templateUrl` is a function, it will be called with the following parameters:
-   *
-   *   - {array.&lt;object&gt;} - state parameters extracted from the current $location.path() by 
-   *     applying the current state
-   *
-   * <pre>templateUrl: "home.html"</pre>
-   * <pre>templateUrl: function(params) {
-   *     return myTemplates[params.pageId]; }</pre>
-   *
-   * @param {function=} stateConfig.templateProvider
-   * <a id='templateProvider'></a>
-   *    Provider function that returns HTML content string.
-   * <pre> templateProvider:
-   *       function(MyTemplateService, params) {
-   *         return MyTemplateService.getTemplate(params.pageId);
-   *       }</pre>
-   *
-   * @param {string|function=} stateConfig.controller
-   * <a id='controller'></a>
-   *
-   *  Controller fn that should be associated with newly
-   *   related scope or the name of a registered controller if passed as a string.
-   *   Optionally, the ControllerAs may be declared here.
-   * <pre>controller: "MyRegisteredController"</pre>
-   * <pre>controller:
-   *     "MyRegisteredController as fooCtrl"}</pre>
-   * <pre>controller: function($scope, MyService) {
-   *     $scope.data = MyService.getData(); }</pre>
-   *
-   * @param {function=} stateConfig.controllerProvider
-   * <a id='controllerProvider'></a>
-   *
-   * Injectable provider function that returns the actual controller or string.
-   * <pre>controllerProvider:
-   *   function(MyResolveData) {
-   *     if (MyResolveData.foo)
-   *       return "FooCtrl"
-   *     else if (MyResolveData.bar)
-   *       return "BarCtrl";
-   *     else return function($scope) {
-   *       $scope.baz = "Qux";
-   *     }
-   *   }</pre>
-   *
-   * @param {string=} stateConfig.controllerAs
-   * <a id='controllerAs'></a>
-   * 
-   * A controller alias name. If present the controller will be
-   *   published to scope under the controllerAs name.
-   * <pre>controllerAs: "myCtrl"</pre>
-   *
-   * @param {string|object=} stateConfig.parent
-   * <a id='parent'></a>
-   * Optionally specifies the parent state of this state.
-   *
-   * <pre>parent: 'parentState'</pre>
-   * <pre>parent: parentState // JS variable</pre>
-   *
-   * @param {object=} stateConfig.resolve
-   * <a id='resolve'></a>
-   *
-   * An optional map&lt;string, function&gt; of dependencies which
-   *   should be injected into the controller. If any of these dependencies are promises, 
-   *   the router will wait for them all to be resolved before the controller is instantiated.
-   *   If all the promises are resolved successfully, the $stateChangeSuccess event is fired
-   *   and the values of the resolved promises are injected into any controllers that reference them.
-   *   If any  of the promises are rejected the $stateChangeError event is fired.
-   *
-   *   The map object is:
-   *   
-   *   - key - {string}: name of dependency to be injected into controller
-   *   - factory - {string|function}: If string then it is alias for service. Otherwise if function, 
-   *     it is injected and return value it treated as dependency. If result is a promise, it is 
-   *     resolved before its value is injected into controller.
-   *
-   * <pre>resolve: {
-   *     myResolve1:
-   *       function($http, $stateParams) {
-   *         return $http.get("/api/foos/"+stateParams.fooID);
-   *       }
-   *     }</pre>
-   *
-   * @param {string=} stateConfig.url
-   * <a id='url'></a>
-   *
-   *   A url fragment with optional parameters. When a state is navigated or
-   *   transitioned to, the `$stateParams` service will be populated with any 
-   *   parameters that were passed.
-   *
-   *   (See {@link ui.router.util.type:UrlMatcher UrlMatcher} `UrlMatcher`} for
-   *   more details on acceptable patterns )
-   *
-   * examples:
-   * <pre>url: "/home"
-   * url: "/users/:userid"
-   * url: "/books/{bookid:[a-zA-Z_-]}"
-   * url: "/books/{categoryid:int}"
-   * url: "/books/{publishername:string}/{categoryid:int}"
-   * url: "/messages?before&after"
-   * url: "/messages?{before:date}&{after:date}"
-   * url: "/messages/:mailboxid?{before:date}&{after:date}"
-   * </pre>
-   *
-   * @param {object=} stateConfig.views
-   * <a id='views'></a>
-   * an optional map&lt;string, object&gt; which defined multiple views, or targets views
-   * manually/explicitly.
-   *
-   * Examples:
-   *
-   * Targets three named `ui-view`s in the parent state's template
-   * <pre>views: {
-   *     header: {
-   *       controller: "headerCtrl",
-   *       templateUrl: "header.html"
-   *     }, body: {
-   *       controller: "bodyCtrl",
-   *       templateUrl: "body.html"
-   *     }, footer: {
-   *       controller: "footCtrl",
-   *       templateUrl: "footer.html"
-   *     }
-   *   }</pre>
-   *
-   * Targets named `ui-view="header"` from grandparent state 'top''s template, and named `ui-view="body" from parent state's template.
-   * <pre>views: {
-   *     'header@top': {
-   *       controller: "msgHeaderCtrl",
-   *       templateUrl: "msgHeader.html"
-   *     }, 'body': {
-   *       controller: "messagesCtrl",
-   *       templateUrl: "messages.html"
-   *     }
-   *   }</pre>
-   *
-   * @param {boolean=} [stateConfig.abstract=false]
-   * <a id='abstract'></a>
-   * An abstract state will never be directly activated,
-   *   but can provide inherited properties to its common children states.
-   * <pre>abstract: true</pre>
-   *
-   * @param {function=} stateConfig.onEnter
-   * <a id='onEnter'></a>
-   *
-   * Callback function for when a state is entered. Good way
-   *   to trigger an action or dispatch an event, such as opening a dialog.
-   * If minifying your scripts, make sure to explictly annotate this function,
-   * because it won't be automatically annotated by your build tools.
-   *
-   * <pre>onEnter: function(MyService, $stateParams) {
-   *     MyService.foo($stateParams.myParam);
-   * }</pre>
-   *
-   * @param {function=} stateConfig.onExit
-   * <a id='onExit'></a>
-   *
-   * Callback function for when a state is exited. Good way to
-   *   trigger an action or dispatch an event, such as opening a dialog.
-   * If minifying your scripts, make sure to explictly annotate this function,
-   * because it won't be automatically annotated by your build tools.
-   *
-   * <pre>onExit: function(MyService, $stateParams) {
-   *     MyService.cleanup($stateParams.myParam);
-   * }</pre>
-   *
-   * @param {boolean=} [stateConfig.reloadOnSearch=true]
-   * <a id='reloadOnSearch'></a>
-   *
-   * If `false`, will not retrigger the same state
-   *   just because a search/query parameter has changed (via $location.search() or $location.hash()). 
-   *   Useful for when you'd like to modify $location.search() without triggering a reload.
-   * <pre>reloadOnSearch: false</pre>
-   *
-   * @param {object=} stateConfig.data
-   * <a id='data'></a>
-   *
-   * Arbitrary data object, useful for custom configuration.  The parent state's `data` is
-   *   prototypally inherited.  In other words, adding a data property to a state adds it to
-   *   the entire subtree via prototypal inheritance.
-   *
-   * <pre>data: {
-   *     requiredRole: 'foo'
-   * } </pre>
-   *
-   * @param {object=} stateConfig.params
-   * <a id='params'></a>
-   *
-   * A map which optionally configures parameters declared in the `url`, or
-   *   defines additional non-url parameters.  For each parameter being
-   *   configured, add a configuration object keyed to the name of the parameter.
-   *
-   *   Each parameter configuration object may contain the following properties:
-   *
-   *   - ** value ** - {object|function=}: specifies the default value for this
-   *     parameter.  This implicitly sets this parameter as optional.
-   *
-   *     When UI-Router routes to a state and no value is
-   *     specified for this parameter in the URL or transition, the
-   *     default value will be used instead.  If `value` is a function,
-   *     it will be injected and invoked, and the return value used.
-   *
-   *     *Note*: `undefined` is treated as "no default value" while `null`
-   *     is treated as "the default value is `null`".
-   *
-   *     *Shorthand*: If you only need to configure the default value of the
-   *     parameter, you may use a shorthand syntax.   In the **`params`**
-   *     map, instead mapping the param name to a full parameter configuration
-   *     object, simply set map it to the default parameter value, e.g.:
-   *
-   * <pre>// define a parameter's default value
-   * params: {
-   *     param1: { value: "defaultValue" }
-   * }
-   * // shorthand default values
-   * params: {
-   *     param1: "defaultValue",
-   *     param2: "param2Default"
-   * }</pre>
-   *
-   *   - ** array ** - {boolean=}: *(default: false)* If true, the param value will be
-   *     treated as an array of values.  If you specified a Type, the value will be
-   *     treated as an array of the specified Type.  Note: query parameter values
-   *     default to a special `"auto"` mode.
-   *
-   *     For query parameters in `"auto"` mode, if multiple  values for a single parameter
-   *     are present in the URL (e.g.: `/foo?bar=1&bar=2&bar=3`) then the values
-   *     are mapped to an array (e.g.: `{ foo: [ '1', '2', '3' ] }`).  However, if
-   *     only one value is present (e.g.: `/foo?bar=1`) then the value is treated as single
-   *     value (e.g.: `{ foo: '1' }`).
-   *
-   * <pre>params: {
-   *     param1: { array: true }
-   * }</pre>
-   *
-   *   - ** squash ** - {bool|string=}: `squash` configures how a default parameter value is represented in the URL when
-   *     the current parameter value is the same as the default value. If `squash` is not set, it uses the
-   *     configured default squash policy.
-   *     (See {@link ui.router.util.$urlMatcherFactory#methods_defaultSquashPolicy `defaultSquashPolicy()`})
-   *
-   *   There are three squash settings:
-   *
-   *     - false: The parameter's default value is not squashed.  It is encoded and included in the URL
-   *     - true: The parameter's default value is omitted from the URL.  If the parameter is preceeded and followed
-   *       by slashes in the state's `url` declaration, then one of those slashes are omitted.
-   *       This can allow for cleaner looking URLs.
-   *     - `"<arbitrary string>"`: The parameter's default value is replaced with an arbitrary placeholder of  your choice.
-   *
-   * <pre>params: {
-   *     param1: {
-   *       value: "defaultId",
-   *       squash: true
-   * } }
-   * // squash "defaultValue" to "~"
-   * params: {
-   *     param1: {
-   *       value: "defaultValue",
-   *       squash: "~"
-   * } }
-   * </pre>
-   *
-   *
-   * @example
-   * <pre>
-   * // Some state name examples
-   *
-   * // stateName can be a single top-level name (must be unique).
-   * $stateProvider.state("home", {});
-   *
-   * // Or it can be a nested state name. This state is a child of the
-   * // above "home" state.
-   * $stateProvider.state("home.newest", {});
-   *
-   * // Nest states as deeply as needed.
-   * $stateProvider.state("home.newest.abc.xyz.inception", {});
-   *
-   * // state() returns $stateProvider, so you can chain state declarations.
-   * $stateProvider
-   *   .state("home", {})
-   *   .state("about", {})
-   *   .state("contacts", {});
-   * </pre>
-   *
-   */
-  this.state = state;
-  function state(name, definition) {
-    /*jshint validthis: true */
-    if (isObject(name)) definition = name;
-    else definition.name = name;
-    registerState(definition);
-    return this;
-  }
-
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$state
-   *
-   * @requires $rootScope
-   * @requires $q
-   * @requires ui.router.state.$view
-   * @requires $injector
-   * @requires ui.router.util.$resolve
-   * @requires ui.router.state.$stateParams
-   * @requires ui.router.router.$urlRouter
-   *
-   * @property {object} params A param object, e.g. {sectionId: section.id)}, that 
-   * you'd like to test against the current active state.
-   * @property {object} current A reference to the state's config object. However 
-   * you passed it in. Useful for accessing custom data.
-   * @property {object} transition Currently pending transition. A promise that'll 
-   * resolve or reject.
-   *
-   * @description
-   * `$state` service is responsible for representing states as well as transitioning
-   * between them. It also provides interfaces to ask for current state or even states
-   * you're coming from.
-   */
-  this.$get = $get;
-  $get.$inject = ['$rootScope', '$q', '$view', '$injector', '$resolve', '$stateParams', '$urlRouter', '$location', '$urlMatcherFactory'];
-  function $get(   $rootScope,   $q,   $view,   $injector,   $resolve,   $stateParams,   $urlRouter,   $location,   $urlMatcherFactory) {
-
-    var TransitionSuperseded = $q.reject(new Error('transition superseded'));
-    var TransitionPrevented = $q.reject(new Error('transition prevented'));
-    var TransitionAborted = $q.reject(new Error('transition aborted'));
-    var TransitionFailed = $q.reject(new Error('transition failed'));
-
-    // Handles the case where a state which is the target of a transition is not found, and the user
-    // can optionally retry or defer the transition
-    function handleRedirect(redirect, state, params, options) {
-      /**
-       * @ngdoc event
-       * @name ui.router.state.$state#$stateNotFound
-       * @eventOf ui.router.state.$state
-       * @eventType broadcast on root scope
-       * @description
-       * Fired when a requested state **cannot be found** using the provided state name during transition.
-       * The event is broadcast allowing any handlers a single chance to deal with the error (usually by
-       * lazy-loading the unfound state). A special `unfoundState` object is passed to the listener handler,
-       * you can see its three properties in the example. You can use `event.preventDefault()` to abort the
-       * transition and the promise returned from `go` will be rejected with a `'transition aborted'` value.
-       *
-       * @param {Object} event Event object.
-       * @param {Object} unfoundState Unfound State information. Contains: `to, toParams, options` properties.
-       * @param {State} fromState Current state object.
-       * @param {Object} fromParams Current state params.
-       *
-       * @example
-       *
-       * <pre>
-       * // somewhere, assume lazy.state has not been defined
-       * $state.go("lazy.state", {a:1, b:2}, {inherit:false});
-       *
-       * // somewhere else
-       * $scope.$on('$stateNotFound',
-       * function(event, unfoundState, fromState, fromParams){
-       *     console.log(unfoundState.to); // "lazy.state"
-       *     console.log(unfoundState.toParams); // {a:1, b:2}
-       *     console.log(unfoundState.options); // {inherit:false} + default options
-       * })
-       * </pre>
-       */
-      var evt = $rootScope.$broadcast('$stateNotFound', redirect, state, params);
-
-      if (evt.defaultPrevented) {
-        $urlRouter.update();
-        return TransitionAborted;
-      }
-
-      if (!evt.retry) {
-        return null;
-      }
-
-      // Allow the handler to return a promise to defer state lookup retry
-      if (options.$retry) {
-        $urlRouter.update();
-        return TransitionFailed;
-      }
-      var retryTransition = $state.transition = $q.when(evt.retry);
-
-      retryTransition.then(function() {
-        if (retryTransition !== $state.transition) return TransitionSuperseded;
-        redirect.options.$retry = true;
-        return $state.transitionTo(redirect.to, redirect.toParams, redirect.options);
-      }, function() {
-        return TransitionAborted;
-      });
-      $urlRouter.update();
-
-      return retryTransition;
-    }
-
-    root.locals = { resolve: null, globals: { $stateParams: {} } };
-
-    $state = {
-      params: {},
-      current: root.self,
-      $current: root,
-      transition: null
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#reload
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A method that force reloads the current state. All resolves are re-resolved,
-     * controllers reinstantiated, and events re-fired.
-     *
-     * @example
-     * <pre>
-     * var app angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.reload = function(){
-     *     $state.reload();
-     *   }
-     * });
-     * </pre>
-     *
-     * `reload()` is just an alias for:
-     * <pre>
-     * $state.transitionTo($state.current, $stateParams, { 
-     *   reload: true, inherit: false, notify: true
-     * });
-     * </pre>
-     *
-     * @param {string=|object=} state - A state name or a state object, which is the root of the resolves to be re-resolved.
-     * @example
-     * <pre>
-     * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item' 
-     * //and current state is 'contacts.detail.item'
-     * var app angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.reload = function(){
-     *     //will reload 'contact.detail' and 'contact.detail.item' states
-     *     $state.reload('contact.detail');
-     *   }
-     * });
-     * </pre>
-     *
-     * `reload()` is just an alias for:
-     * <pre>
-     * $state.transitionTo($state.current, $stateParams, { 
-     *   reload: true, inherit: false, notify: true
-     * });
-     * </pre>
-
-     * @returns {promise} A promise representing the state of the new transition. See
-     * {@link ui.router.state.$state#methods_go $state.go}.
-     */
-    $state.reload = function reload(state) {
-      return $state.transitionTo($state.current, $stateParams, { reload: state || true, inherit: false, notify: true});
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#go
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Convenience method for transitioning to a new state. `$state.go` calls 
-     * `$state.transitionTo` internally but automatically sets options to 
-     * `{ location: true, inherit: true, relative: $state.$current, notify: true }`. 
-     * This allows you to easily use an absolute or relative to path and specify 
-     * only the parameters you'd like to update (while letting unspecified parameters 
-     * inherit from the currently active ancestor states).
-     *
-     * @example
-     * <pre>
-     * var app = angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.changeState = function () {
-     *     $state.go('contact.detail');
-     *   };
-     * });
-     * </pre>
-     * <img src='../ngdoc_assets/StateGoExamples.png'/>
-     *
-     * @param {string} to Absolute state name or relative state path. Some examples:
-     *
-     * - `$state.go('contact.detail')` - will go to the `contact.detail` state
-     * - `$state.go('^')` - will go to a parent state
-     * - `$state.go('^.sibling')` - will go to a sibling state
-     * - `$state.go('.child.grandchild')` - will go to grandchild state
-     *
-     * @param {object=} params A map of the parameters that will be sent to the state, 
-     * will populate $stateParams. Any parameters that are not specified will be inherited from currently 
-     * defined parameters. This allows, for example, going to a sibling state that shares parameters
-     * specified in a parent state. Parameter inheritance only works between common ancestor states, I.e.
-     * transitioning to a sibling will get you the parameters for all parents, transitioning to a child
-     * will get you all current parameters, etc.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`
-     *    will not. If string, must be `"replace"`, which will update url and also replace last history record.
-     * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.
-     * - **`reload`** (v0.2.5) - {boolean=false}, If `true` will force transition even if the state or params 
-     *    have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd
-     *    use this when you want to force a reload when *everything* is the same, including search params.
-     *
-     * @returns {promise} A promise representing the state of the new transition.
-     *
-     * Possible success values:
-     *
-     * - $state.current
-     *
-     * <br/>Possible rejection values:
-     *
-     * - 'transition superseded' - when a newer transition has been started after this one
-     * - 'transition prevented' - when `event.preventDefault()` has been called in a `$stateChangeStart` listener
-     * - 'transition aborted' - when `event.preventDefault()` has been called in a `$stateNotFound` listener or
-     *   when a `$stateNotFound` `event.retry` promise errors.
-     * - 'transition failed' - when a state has been unsuccessfully found after 2 tries.
-     * - *resolve error* - when an error has occurred with a `resolve`
-     *
-     */
-    $state.go = function go(to, params, options) {
-      return $state.transitionTo(to, params, extend({ inherit: true, relative: $state.$current }, options));
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#transitionTo
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Low-level method for transitioning to a new state. {@link ui.router.state.$state#methods_go $state.go}
-     * uses `transitionTo` internally. `$state.go` is recommended in most situations.
-     *
-     * @example
-     * <pre>
-     * var app = angular.module('app', ['ui.router']);
-     *
-     * app.controller('ctrl', function ($scope, $state) {
-     *   $scope.changeState = function () {
-     *     $state.transitionTo('contact.detail');
-     *   };
-     * });
-     * </pre>
-     *
-     * @param {string} to State name.
-     * @param {object=} toParams A map of the parameters that will be sent to the state,
-     * will populate $stateParams.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`
-     *    will not. If string, must be `"replace"`, which will update url and also replace last history record.
-     * - **`inherit`** - {boolean=false}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.
-     * - **`reload`** (v0.2.5) - {boolean=false|string=|object=}, If `true` will force transition even if the state or params 
-     *    have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd
-     *    use this when you want to force a reload when *everything* is the same, including search params.
-     *    if String, then will reload the state with the name given in reload, and any children.
-     *    if Object, then a stateObj is expected, will reload the state found in stateObj, and any children.
-     *
-     * @returns {promise} A promise representing the state of the new transition. See
-     * {@link ui.router.state.$state#methods_go $state.go}.
-     */
-    $state.transitionTo = function transitionTo(to, toParams, options) {
-      toParams = toParams || {};
-      options = extend({
-        location: true, inherit: false, relative: null, notify: true, reload: false, $retry: false
-      }, options || {});
-
-      var from = $state.$current, fromParams = $state.params, fromPath = from.path;
-      var evt, toState = findState(to, options.relative);
-
-      // Store the hash param for later (since it will be stripped out by various methods)
-      var hash = toParams['#'];
-
-      if (!isDefined(toState)) {
-        var redirect = { to: to, toParams: toParams, options: options };
-        var redirectResult = handleRedirect(redirect, from.self, fromParams, options);
-
-        if (redirectResult) {
-          return redirectResult;
-        }
-
-        // Always retry once if the $stateNotFound was not prevented
-        // (handles either redirect changed or state lazy-definition)
-        to = redirect.to;
-        toParams = redirect.toParams;
-        options = redirect.options;
-        toState = findState(to, options.relative);
-
-        if (!isDefined(toState)) {
-          if (!options.relative) throw new Error("No such state '" + to + "'");
-          throw new Error("Could not resolve '" + to + "' from state '" + options.relative + "'");
-        }
-      }
-      if (toState[abstractKey]) throw new Error("Cannot transition to abstract state '" + to + "'");
-      if (options.inherit) toParams = inheritParams($stateParams, toParams || {}, $state.$current, toState);
-      if (!toState.params.$$validates(toParams)) return TransitionFailed;
-
-      toParams = toState.params.$$values(toParams);
-      to = toState;
-
-      var toPath = to.path;
-
-      // Starting from the root of the path, keep all levels that haven't changed
-      var keep = 0, state = toPath[keep], locals = root.locals, toLocals = [];
-
-      if (!options.reload) {
-        while (state && state === fromPath[keep] && state.ownParams.$$equals(toParams, fromParams)) {
-          locals = toLocals[keep] = state.locals;
-          keep++;
-          state = toPath[keep];
-        }
-      } else if (isString(options.reload) || isObject(options.reload)) {
-        if (isObject(options.reload) && !options.reload.name) {
-          throw new Error('Invalid reload state object');
-        }
-        
-        var reloadState = options.reload === true ? fromPath[0] : findState(options.reload);
-        if (options.reload && !reloadState) {
-          throw new Error("No such reload state '" + (isString(options.reload) ? options.reload : options.reload.name) + "'");
-        }
-
-        while (state && state === fromPath[keep] && state !== reloadState) {
-          locals = toLocals[keep] = state.locals;
-          keep++;
-          state = toPath[keep];
-        }
-      }
-
-      // If we're going to the same state and all locals are kept, we've got nothing to do.
-      // But clear 'transition', as we still want to cancel any other pending transitions.
-      // TODO: We may not want to bump 'transition' if we're called from a location change
-      // that we've initiated ourselves, because we might accidentally abort a legitimate
-      // transition initiated from code?
-      if (shouldSkipReload(to, toParams, from, fromParams, locals, options)) {
-        if (hash) toParams['#'] = hash;
-        $state.params = toParams;
-        copy($state.params, $stateParams);
-        if (options.location && to.navigable && to.navigable.url) {
-          $urlRouter.push(to.navigable.url, toParams, {
-            $$avoidResync: true, replace: options.location === 'replace'
-          });
-          $urlRouter.update(true);
-        }
-        $state.transition = null;
-        return $q.when($state.current);
-      }
-
-      // Filter parameters before we pass them to event handlers etc.
-      toParams = filterByKeys(to.params.$$keys(), toParams || {});
-
-      // Broadcast start event and cancel the transition if requested
-      if (options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeStart
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired when the state transition **begins**. You can use `event.preventDefault()`
-         * to prevent the transition from happening and then the transition promise will be
-         * rejected with a `'transition prevented'` value.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         *
-         * @example
-         *
-         * <pre>
-         * $rootScope.$on('$stateChangeStart',
-         * function(event, toState, toParams, fromState, fromParams){
-         *     event.preventDefault();
-         *     // transitionTo() promise will be rejected with
-         *     // a 'transition prevented' error
-         * })
-         * </pre>
-         */
-        if ($rootScope.$broadcast('$stateChangeStart', to.self, toParams, from.self, fromParams).defaultPrevented) {
-          $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);
-          $urlRouter.update();
-          return TransitionPrevented;
-        }
-      }
-
-      // Resolve locals for the remaining states, but don't update any global state just
-      // yet -- if anything fails to resolve the current state needs to remain untouched.
-      // We also set up an inheritance chain for the locals here. This allows the view directive
-      // to quickly look up the correct definition for each view in the current state. Even
-      // though we create the locals object itself outside resolveState(), it is initially
-      // empty and gets filled asynchronously. We need to keep track of the promise for the
-      // (fully resolved) current locals, and pass this down the chain.
-      var resolved = $q.when(locals);
-
-      for (var l = keep; l < toPath.length; l++, state = toPath[l]) {
-        locals = toLocals[l] = inherit(locals);
-        resolved = resolveState(state, toParams, state === to, resolved, locals, options);
-      }
-
-      // Once everything is resolved, we are ready to perform the actual transition
-      // and return a promise for the new state. We also keep track of what the
-      // current promise is, so that we can detect overlapping transitions and
-      // keep only the outcome of the last transition.
-      var transition = $state.transition = resolved.then(function () {
-        var l, entering, exiting;
-
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        // Exit 'from' states not kept
-        for (l = fromPath.length - 1; l >= keep; l--) {
-          exiting = fromPath[l];
-          if (exiting.self.onExit) {
-            $injector.invoke(exiting.self.onExit, exiting.self, exiting.locals.globals);
-          }
-          exiting.locals = null;
-        }
-
-        // Enter 'to' states not kept
-        for (l = keep; l < toPath.length; l++) {
-          entering = toPath[l];
-          entering.locals = toLocals[l];
-          if (entering.self.onEnter) {
-            $injector.invoke(entering.self.onEnter, entering.self, entering.locals.globals);
-          }
-        }
-
-        // Re-add the saved hash before we start returning things
-        if (hash) toParams['#'] = hash;
-
-        // Run it again, to catch any transitions in callbacks
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        // Update globals in $state
-        $state.$current = to;
-        $state.current = to.self;
-        $state.params = toParams;
-        copy($state.params, $stateParams);
-        $state.transition = null;
-
-        if (options.location && to.navigable) {
-          $urlRouter.push(to.navigable.url, to.navigable.locals.globals.$stateParams, {
-            $$avoidResync: true, replace: options.location === 'replace'
-          });
-        }
-
-        if (options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeSuccess
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired once the state transition is **complete**.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         */
-          $rootScope.$broadcast('$stateChangeSuccess', to.self, toParams, from.self, fromParams);
-        }
-        $urlRouter.update(true);
-
-        return $state.current;
-      }, function (error) {
-        if ($state.transition !== transition) return TransitionSuperseded;
-
-        $state.transition = null;
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$stateChangeError
-         * @eventOf ui.router.state.$state
-         * @eventType broadcast on root scope
-         * @description
-         * Fired when an **error occurs** during transition. It's important to note that if you
-         * have any errors in your resolve functions (javascript errors, non-existent services, etc)
-         * they will not throw traditionally. You must listen for this $stateChangeError event to
-         * catch **ALL** errors.
-         *
-         * @param {Object} event Event object.
-         * @param {State} toState The state being transitioned to.
-         * @param {Object} toParams The params supplied to the `toState`.
-         * @param {State} fromState The current state, pre-transition.
-         * @param {Object} fromParams The params supplied to the `fromState`.
-         * @param {Error} error The resolve error object.
-         */
-        evt = $rootScope.$broadcast('$stateChangeError', to.self, toParams, from.self, fromParams, error);
-
-        if (!evt.defaultPrevented) {
-            $urlRouter.update();
-        }
-
-        return $q.reject(error);
-      });
-
-      return transition;
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#is
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Similar to {@link ui.router.state.$state#methods_includes $state.includes},
-     * but only checks for the full state name. If params is supplied then it will be
-     * tested for strict equality against the current active params object, so all params
-     * must match with none missing and no extras.
-     *
-     * @example
-     * <pre>
-     * $state.$current.name = 'contacts.details.item';
-     *
-     * // absolute name
-     * $state.is('contact.details.item'); // returns true
-     * $state.is(contactDetailItemStateObject); // returns true
-     *
-     * // relative name (. and ^), typically from a template
-     * // E.g. from the 'contacts.details' template
-     * <div ng-class="{highlighted: $state.is('.item')}">Item</div>
-     * </pre>
-     *
-     * @param {string|object} stateOrName The state name (absolute or relative) or state object you'd like to check.
-     * @param {object=} params A param object, e.g. `{sectionId: section.id}`, that you'd like
-     * to test against the current active state.
-     * @param {object=} options An options object.  The options are:
-     *
-     * - **`relative`** - {string|object} -  If `stateOrName` is a relative state name and `options.relative` is set, .is will
-     * test relative to `options.relative` state (or name).
-     *
-     * @returns {boolean} Returns true if it is the state.
-     */
-    $state.is = function is(stateOrName, params, options) {
-      options = extend({ relative: $state.$current }, options || {});
-      var state = findState(stateOrName, options.relative);
-
-      if (!isDefined(state)) { return undefined; }
-      if ($state.$current !== state) { return false; }
-      return params ? equalForKeys(state.params.$$values(params), $stateParams) : true;
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#includes
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A method to determine if the current active state is equal to or is the child of the
-     * state stateName. If any params are passed then they will be tested for a match as well.
-     * Not all the parameters need to be passed, just the ones you'd like to test for equality.
-     *
-     * @example
-     * Partial and relative names
-     * <pre>
-     * $state.$current.name = 'contacts.details.item';
-     *
-     * // Using partial names
-     * $state.includes("contacts"); // returns true
-     * $state.includes("contacts.details"); // returns true
-     * $state.includes("contacts.details.item"); // returns true
-     * $state.includes("contacts.list"); // returns false
-     * $state.includes("about"); // returns false
-     *
-     * // Using relative names (. and ^), typically from a template
-     * // E.g. from the 'contacts.details' template
-     * <div ng-class="{highlighted: $state.includes('.item')}">Item</div>
-     * </pre>
-     *
-     * Basic globbing patterns
-     * <pre>
-     * $state.$current.name = 'contacts.details.item.url';
-     *
-     * $state.includes("*.details.*.*"); // returns true
-     * $state.includes("*.details.**"); // returns true
-     * $state.includes("**.item.**"); // returns true
-     * $state.includes("*.details.item.url"); // returns true
-     * $state.includes("*.details.*.url"); // returns true
-     * $state.includes("*.details.*"); // returns false
-     * $state.includes("item.**"); // returns false
-     * </pre>
-     *
-     * @param {string} stateOrName A partial name, relative name, or glob pattern
-     * to be searched for within the current state name.
-     * @param {object=} params A param object, e.g. `{sectionId: section.id}`,
-     * that you'd like to test against the current active state.
-     * @param {object=} options An options object.  The options are:
-     *
-     * - **`relative`** - {string|object=} -  If `stateOrName` is a relative state reference and `options.relative` is set,
-     * .includes will test relative to `options.relative` state (or name).
-     *
-     * @returns {boolean} Returns true if it does include the state
-     */
-    $state.includes = function includes(stateOrName, params, options) {
-      options = extend({ relative: $state.$current }, options || {});
-      if (isString(stateOrName) && isGlob(stateOrName)) {
-        if (!doesStateMatchGlob(stateOrName)) {
-          return false;
-        }
-        stateOrName = $state.$current.name;
-      }
-
-      var state = findState(stateOrName, options.relative);
-      if (!isDefined(state)) { return undefined; }
-      if (!isDefined($state.$current.includes[state.name])) { return false; }
-      return params ? equalForKeys(state.params.$$values(params), $stateParams, objectKeys(params)) : true;
-    };
-
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#href
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * A url generation method that returns the compiled url for the given state populated with the given params.
-     *
-     * @example
-     * <pre>
-     * expect($state.href("about.person", { person: "bob" })).toEqual("/about/bob");
-     * </pre>
-     *
-     * @param {string|object} stateOrName The state name or state object you'd like to generate a url from.
-     * @param {object=} params An object of parameter values to fill the state's required parameters.
-     * @param {object=} options Options object. The options are:
-     *
-     * - **`lossy`** - {boolean=true} -  If true, and if there is no url associated with the state provided in the
-     *    first parameter, then the constructed href url will be built from the first navigable ancestor (aka
-     *    ancestor with a valid url).
-     * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.
-     * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), 
-     *    defines which state to be relative from.
-     * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. "http://www.example.com/fullurl".
-     * 
-     * @returns {string} compiled state url
-     */
-    $state.href = function href(stateOrName, params, options) {
-      options = extend({
-        lossy:    true,
-        inherit:  true,
-        absolute: false,
-        relative: $state.$current
-      }, options || {});
-
-      var state = findState(stateOrName, options.relative);
-
-      if (!isDefined(state)) return null;
-      if (options.inherit) params = inheritParams($stateParams, params || {}, $state.$current, state);
-      
-      var nav = (state && options.lossy) ? state.navigable : state;
-
-      if (!nav || nav.url === undefined || nav.url === null) {
-        return null;
-      }
-      return $urlRouter.href(nav.url, filterByKeys(state.params.$$keys().concat('#'), params || {}), {
-        absolute: options.absolute
-      });
-    };
-
-    /**
-     * @ngdoc function
-     * @name ui.router.state.$state#get
-     * @methodOf ui.router.state.$state
-     *
-     * @description
-     * Returns the state configuration object for any specific state or all states.
-     *
-     * @param {string|object=} stateOrName (absolute or relative) If provided, will only get the config for
-     * the requested state. If not provided, returns an array of ALL state configs.
-     * @param {string|object=} context When stateOrName is a relative state reference, the state will be retrieved relative to context.
-     * @returns {Object|Array} State configuration object or array of all objects.
-     */
-    $state.get = function (stateOrName, context) {
-      if (arguments.length === 0) return map(objectKeys(states), function(name) { return states[name].self; });
-      var state = findState(stateOrName, context || $state.$current);
-      return (state && state.self) ? state.self : null;
-    };
-
-    function resolveState(state, params, paramsAreFiltered, inherited, dst, options) {
-      // Make a restricted $stateParams with only the parameters that apply to this state if
-      // necessary. In addition to being available to the controller and onEnter/onExit callbacks,
-      // we also need $stateParams to be available for any $injector calls we make during the
-      // dependency resolution process.
-      var $stateParams = (paramsAreFiltered) ? params : filterByKeys(state.params.$$keys(), params);
-      var locals = { $stateParams: $stateParams };
-
-      // Resolve 'global' dependencies for the state, i.e. those not specific to a view.
-      // We're also including $stateParams in this; that way the parameters are restricted
-      // to the set that should be visible to the state, and are independent of when we update
-      // the global $state and $stateParams values.
-      dst.resolve = $resolve.resolve(state.resolve, locals, dst.resolve, state);
-      var promises = [dst.resolve.then(function (globals) {
-        dst.globals = globals;
-      })];
-      if (inherited) promises.push(inherited);
-
-      function resolveViews() {
-        var viewsPromises = [];
-
-        // Resolve template and dependencies for all views.
-        forEach(state.views, function (view, name) {
-          var injectables = (view.resolve && view.resolve !== state.resolve ? view.resolve : {});
-          injectables.$template = [ function () {
-            return $view.load(name, { view: view, locals: dst.globals, params: $stateParams, notify: options.notify }) || '';
-          }];
-
-          viewsPromises.push($resolve.resolve(injectables, dst.globals, dst.resolve, state).then(function (result) {
-            // References to the controller (only instantiated at link time)
-            if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) {
-              var injectLocals = angular.extend({}, injectables, dst.globals);
-              result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals);
-            } else {
-              result.$$controller = view.controller;
-            }
-            // Provide access to the state itself for internal use
-            result.$$state = state;
-            result.$$controllerAs = view.controllerAs;
-            dst[name] = result;
-          }));
-        });
-
-        return $q.all(viewsPromises).then(function(){
-          return dst.globals;
-        });
-      }
-
-      // Wait for all the promises and then return the activation object
-      return $q.all(promises).then(resolveViews).then(function (values) {
-        return dst;
-      });
-    }
-
-    return $state;
-  }
-
-  function shouldSkipReload(to, toParams, from, fromParams, locals, options) {
-    // Return true if there are no differences in non-search (path/object) params, false if there are differences
-    function nonSearchParamsEqual(fromAndToState, fromParams, toParams) {
-      // Identify whether all the parameters that differ between `fromParams` and `toParams` were search params.
-      function notSearchParam(key) {
-        return fromAndToState.params[key].location != "search";
-      }
-      var nonQueryParamKeys = fromAndToState.params.$$keys().filter(notSearchParam);
-      var nonQueryParams = pick.apply({}, [fromAndToState.params].concat(nonQueryParamKeys));
-      var nonQueryParamSet = new $$UMFP.ParamSet(nonQueryParams);
-      return nonQueryParamSet.$$equals(fromParams, toParams);
-    }
-
-    // If reload was not explicitly requested
-    // and we're transitioning to the same state we're already in
-    // and    the locals didn't change
-    //     or they changed in a way that doesn't merit reloading
-    //        (reloadOnParams:false, or reloadOnSearch.false and only search params changed)
-    // Then return true.
-    if (!options.reload && to === from &&
-      (locals === from.locals || (to.self.reloadOnSearch === false && nonSearchParamsEqual(from, fromParams, toParams)))) {
-      return true;
-    }
-  }
-}
-
-angular.module('ui.router.state')
-  .value('$stateParams', {})
-  .provider('$state', $StateProvider);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/stateDirectives.js b/src/main/webapp/bower_components/angular-ui-router/src/stateDirectives.js
deleted file mode 100644
index 09991030..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/stateDirectives.js
+++ /dev/null
@@ -1,285 +0,0 @@
-function parseStateRef(ref, current) {
-  var preparsed = ref.match(/^\s*({[^}]*})\s*$/), parsed;
-  if (preparsed) ref = current + '(' + preparsed[1] + ')';
-  parsed = ref.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/);
-  if (!parsed || parsed.length !== 4) throw new Error("Invalid state ref '" + ref + "'");
-  return { state: parsed[1], paramExpr: parsed[3] || null };
-}
-
-function stateContext(el) {
-  var stateData = el.parent().inheritedData('$uiView');
-
-  if (stateData && stateData.state && stateData.state.name) {
-    return stateData.state;
-  }
-}
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref
- *
- * @requires ui.router.state.$state
- * @requires $timeout
- *
- * @restrict A
- *
- * @description
- * A directive that binds a link (`<a>` tag) to a state. If the state has an associated 
- * URL, the directive will automatically generate & update the `href` attribute via 
- * the {@link ui.router.state.$state#methods_href $state.href()} method. Clicking 
- * the link will trigger a state transition with optional parameters. 
- *
- * Also middle-clicking, right-clicking, and ctrl-clicking on the link will be 
- * handled natively by the browser.
- *
- * You can also use relative state paths within ui-sref, just like the relative 
- * paths passed to `$state.go()`. You just need to be aware that the path is relative
- * to the state that the link lives in, in other words the state that loaded the 
- * template containing the link.
- *
- * You can specify options to pass to {@link ui.router.state.$state#go $state.go()}
- * using the `ui-sref-opts` attribute. Options are restricted to `location`, `inherit`,
- * and `reload`.
- *
- * @example
- * Here's an example of how you'd use ui-sref and how it would compile. If you have the 
- * following template:
- * <pre>
- * <a ui-sref="home">Home</a> | <a ui-sref="about">About</a> | <a ui-sref="{page: 2}">Next page</a>
- * 
- * <ul>
- *     <li ng-repeat="contact in contacts">
- *         <a ui-sref="contacts.detail({ id: contact.id })">{{ contact.name }}</a>
- *     </li>
- * </ul>
- * </pre>
- * 
- * Then the compiled html would be (assuming Html5Mode is off and current state is contacts):
- * <pre>
- * <a href="#/home" ui-sref="home">Home</a> | <a href="#/about" ui-sref="about">About</a> | <a href="#/contacts?page=2" ui-sref="{page: 2}">Next page</a>
- * 
- * <ul>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/1" ui-sref="contacts.detail({ id: contact.id })">Joe</a>
- *     </li>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/2" ui-sref="contacts.detail({ id: contact.id })">Alice</a>
- *     </li>
- *     <li ng-repeat="contact in contacts">
- *         <a href="#/contacts/3" ui-sref="contacts.detail({ id: contact.id })">Bob</a>
- *     </li>
- * </ul>
- *
- * <a ui-sref="home" ui-sref-opts="{reload: true}">Home</a>
- * </pre>
- *
- * @param {string} ui-sref 'stateName' can be any valid absolute or relative state
- * @param {Object} ui-sref-opts options to pass to {@link ui.router.state.$state#go $state.go()}
- */
-$StateRefDirective.$inject = ['$state', '$timeout'];
-function $StateRefDirective($state, $timeout) {
-  var allowedOptions = ['location', 'inherit', 'reload', 'absolute'];
-
-  return {
-    restrict: 'A',
-    require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
-    link: function(scope, element, attrs, uiSrefActive) {
-      var ref = parseStateRef(attrs.uiSref, $state.current.name);
-      var params = null, url = null, base = stateContext(element) || $state.$current;
-      // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
-      var hrefKind = Object.prototype.toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
-                 'xlink:href' : 'href';
-      var newHref = null, isAnchor = element.prop("tagName").toUpperCase() === "A";
-      var isForm = element[0].nodeName === "FORM";
-      var attr = isForm ? "action" : hrefKind, nav = true;
-
-      var options = { relative: base, inherit: true };
-      var optionsOverride = scope.$eval(attrs.uiSrefOpts) || {};
-
-      angular.forEach(allowedOptions, function(option) {
-        if (option in optionsOverride) {
-          options[option] = optionsOverride[option];
-        }
-      });
-
-      var update = function(newVal) {
-        if (newVal) params = angular.copy(newVal);
-        if (!nav) return;
-
-        newHref = $state.href(ref.state, params, options);
-
-        var activeDirective = uiSrefActive[1] || uiSrefActive[0];
-        if (activeDirective) {
-          activeDirective.$$addStateInfo(ref.state, params);
-        }
-        if (newHref === null) {
-          nav = false;
-          return false;
-        }
-        attrs.$set(attr, newHref);
-      };
-
-      if (ref.paramExpr) {
-        scope.$watch(ref.paramExpr, function(newVal, oldVal) {
-          if (newVal !== params) update(newVal);
-        }, true);
-        params = angular.copy(scope.$eval(ref.paramExpr));
-      }
-      update();
-
-      if (isForm) return;
-
-      element.bind("click", function(e) {
-        var button = e.which || e.button;
-        if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr('target')) ) {
-          // HACK: This is to allow ng-clicks to be processed before the transition is initiated:
-          var transition = $timeout(function() {
-            $state.go(ref.state, params, options);
-          });
-          e.preventDefault();
-
-          // if the state has no URL, ignore one preventDefault from the <a> directive.
-          var ignorePreventDefaultCount = isAnchor && !newHref ? 1: 0;
-          e.preventDefault = function() {
-            if (ignorePreventDefaultCount-- <= 0)
-              $timeout.cancel(transition);
-          };
-        }
-      });
-    }
-  };
-}
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref-active
- *
- * @requires ui.router.state.$state
- * @requires ui.router.state.$stateParams
- * @requires $interpolate
- *
- * @restrict A
- *
- * @description
- * A directive working alongside ui-sref to add classes to an element when the
- * related ui-sref directive's state is active, and removing them when it is inactive.
- * The primary use-case is to simplify the special appearance of navigation menus
- * relying on `ui-sref`, by having the "active" state's menu button appear different,
- * distinguishing it from the inactive menu items.
- *
- * ui-sref-active can live on the same element as ui-sref or on a parent element. The first
- * ui-sref-active found at the same level or above the ui-sref will be used.
- *
- * Will activate when the ui-sref's target state or any child state is active. If you
- * need to activate only when the ui-sref target state is active and *not* any of
- * it's children, then you will use
- * {@link ui.router.state.directive:ui-sref-active-eq ui-sref-active-eq}
- *
- * @example
- * Given the following template:
- * <pre>
- * <ul>
- *   <li ui-sref-active="active" class="item">
- *     <a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
- *   </li>
- * </ul>
- * </pre>
- *
- *
- * When the app state is "app.user" (or any children states), and contains the state parameter "user" with value "bilbobaggins",
- * the resulting HTML will appear as (note the 'active' class):
- * <pre>
- * <ul>
- *   <li ui-sref-active="active" class="item active">
- *     <a ui-sref="app.user({user: 'bilbobaggins'})" href="/users/bilbobaggins">@bilbobaggins</a>
- *   </li>
- * </ul>
- * </pre>
- *
- * The class name is interpolated **once** during the directives link time (any further changes to the
- * interpolated value are ignored).
- *
- * Multiple classes may be specified in a space-separated format:
- * <pre>
- * <ul>
- *   <li ui-sref-active='class1 class2 class3'>
- *     <a ui-sref="app.user">link</a>
- *   </li>
- * </ul>
- * </pre>
- */
-
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-sref-active-eq
- *
- * @requires ui.router.state.$state
- * @requires ui.router.state.$stateParams
- * @requires $interpolate
- *
- * @restrict A
- *
- * @description
- * The same as {@link ui.router.state.directive:ui-sref-active ui-sref-active} but will only activate
- * when the exact target state used in the `ui-sref` is active; no child states.
- *
- */
-$StateRefActiveDirective.$inject = ['$state', '$stateParams', '$interpolate'];
-function $StateRefActiveDirective($state, $stateParams, $interpolate) {
-  return  {
-    restrict: "A",
-    controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
-      var states = [], activeClass;
-
-      // There probably isn't much point in $observing this
-      // uiSrefActive and uiSrefActiveEq share the same directive object with some
-      // slight difference in logic routing
-      activeClass = $interpolate($attrs.uiSrefActiveEq || $attrs.uiSrefActive || '', false)($scope);
-
-      // Allow uiSref to communicate with uiSrefActive[Equals]
-      this.$$addStateInfo = function (newState, newParams) {
-        var state = $state.get(newState, stateContext($element));
-
-        states.push({
-          state: state || { name: newState },
-          params: newParams
-        });
-
-        update();
-      };
-
-      $scope.$on('$stateChangeSuccess', update);
-
-      // Update route state
-      function update() {
-        if (anyMatch()) {
-          $element.addClass(activeClass);
-        } else {
-          $element.removeClass(activeClass);
-        }
-      }
-
-      function anyMatch() {
-        for (var i = 0; i < states.length; i++) {
-          if (isMatch(states[i].state, states[i].params)) {
-            return true;
-          }
-        }
-        return false;
-      }
-
-      function isMatch(state, params) {
-        if (typeof $attrs.uiSrefActiveEq !== 'undefined') {
-          return $state.is(state.name, params);
-        } else {
-          return $state.includes(state.name, params);
-        }
-      }
-    }]
-  };
-}
-
-angular.module('ui.router.state')
-  .directive('uiSref', $StateRefDirective)
-  .directive('uiSrefActive', $StateRefActiveDirective)
-  .directive('uiSrefActiveEq', $StateRefActiveDirective);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/stateFilters.js b/src/main/webapp/bower_components/angular-ui-router/src/stateFilters.js
deleted file mode 100644
index e0a11758..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/stateFilters.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @ngdoc filter
- * @name ui.router.state.filter:isState
- *
- * @requires ui.router.state.$state
- *
- * @description
- * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}.
- */
-$IsStateFilter.$inject = ['$state'];
-function $IsStateFilter($state) {
-  var isFilter = function (state) {
-    return $state.is(state);
-  };
-  isFilter.$stateful = true;
-  return isFilter;
-}
-
-/**
- * @ngdoc filter
- * @name ui.router.state.filter:includedByState
- *
- * @requires ui.router.state.$state
- *
- * @description
- * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}.
- */
-$IncludedByStateFilter.$inject = ['$state'];
-function $IncludedByStateFilter($state) {
-  var includesFilter = function (state) {
-    return $state.includes(state);
-  };
-  includesFilter.$stateful = true;
-  return  includesFilter;
-}
-
-angular.module('ui.router.state')
-  .filter('isState', $IsStateFilter)
-  .filter('includedByState', $IncludedByStateFilter);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/templateFactory.js b/src/main/webapp/bower_components/angular-ui-router/src/templateFactory.js
deleted file mode 100644
index ca491a98..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/templateFactory.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * @ngdoc object
- * @name ui.router.util.$templateFactory
- *
- * @requires $http
- * @requires $templateCache
- * @requires $injector
- *
- * @description
- * Service. Manages loading of templates.
- */
-$TemplateFactory.$inject = ['$http', '$templateCache', '$injector'];
-function $TemplateFactory(  $http,   $templateCache,   $injector) {
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromConfig
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template from a configuration object. 
-   *
-   * @param {object} config Configuration object for which to load a template. 
-   * The following properties are search in the specified order, and the first one 
-   * that is defined is used to create the template:
-   *
-   * @param {string|object} config.template html string template or function to 
-   * load via {@link ui.router.util.$templateFactory#fromString fromString}.
-   * @param {string|object} config.templateUrl url to load or a function returning 
-   * the url to load via {@link ui.router.util.$templateFactory#fromUrl fromUrl}.
-   * @param {Function} config.templateProvider function to invoke via 
-   * {@link ui.router.util.$templateFactory#fromProvider fromProvider}.
-   * @param {object} params  Parameters to pass to the template function.
-   * @param {object} locals Locals to pass to `invoke` if the template is loaded 
-   * via a `templateProvider`. Defaults to `{ params: params }`.
-   *
-   * @return {string|object}  The template html as a string, or a promise for 
-   * that string,or `null` if no template is configured.
-   */
-  this.fromConfig = function (config, params, locals) {
-    return (
-      isDefined(config.template) ? this.fromString(config.template, params) :
-      isDefined(config.templateUrl) ? this.fromUrl(config.templateUrl, params) :
-      isDefined(config.templateProvider) ? this.fromProvider(config.templateProvider, params, locals) :
-      null
-    );
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromString
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template from a string or a function returning a string.
-   *
-   * @param {string|object} template html template as a string or function that 
-   * returns an html template as a string.
-   * @param {object} params Parameters to pass to the template function.
-   *
-   * @return {string|object} The template html as a string, or a promise for that 
-   * string.
-   */
-  this.fromString = function (template, params) {
-    return isFunction(template) ? template(params) : template;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromUrl
-   * @methodOf ui.router.util.$templateFactory
-   * 
-   * @description
-   * Loads a template from the a URL via `$http` and `$templateCache`.
-   *
-   * @param {string|Function} url url of the template to load, or a function 
-   * that returns a url.
-   * @param {Object} params Parameters to pass to the url function.
-   * @return {string|Promise.<string>} The template html as a string, or a promise 
-   * for that string.
-   */
-  this.fromUrl = function (url, params) {
-    if (isFunction(url)) url = url(params);
-    if (url == null) return null;
-    else return $http
-        .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }})
-        .then(function(response) { return response.data; });
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$templateFactory#fromProvider
-   * @methodOf ui.router.util.$templateFactory
-   *
-   * @description
-   * Creates a template by invoking an injectable provider function.
-   *
-   * @param {Function} provider Function to invoke via `$injector.invoke`
-   * @param {Object} params Parameters for the template.
-   * @param {Object} locals Locals to pass to `invoke`. Defaults to 
-   * `{ params: params }`.
-   * @return {string|Promise.<string>} The template html as a string, or a promise 
-   * for that string.
-   */
-  this.fromProvider = function (provider, params, locals) {
-    return $injector.invoke(provider, null, locals || { params: params });
-  };
-}
-
-angular.module('ui.router.util').service('$templateFactory', $TemplateFactory);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/urlMatcherFactory.js b/src/main/webapp/bower_components/angular-ui-router/src/urlMatcherFactory.js
deleted file mode 100644
index bf116f02..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/urlMatcherFactory.js
+++ /dev/null
@@ -1,1050 +0,0 @@
-var $$UMFP; // reference to $UrlMatcherFactoryProvider
-
-/**
- * @ngdoc object
- * @name ui.router.util.type:UrlMatcher
- *
- * @description
- * Matches URLs against patterns and extracts named parameters from the path or the search
- * part of the URL. A URL pattern consists of a path pattern, optionally followed by '?' and a list
- * of search parameters. Multiple search parameter names are separated by '&'. Search parameters
- * do not influence whether or not a URL is matched, but their values are passed through into
- * the matched parameters returned by {@link ui.router.util.type:UrlMatcher#methods_exec exec}.
- *
- * Path parameter placeholders can be specified using simple colon/catch-all syntax or curly brace
- * syntax, which optionally allows a regular expression for the parameter to be specified:
- *
- * * `':'` name - colon placeholder
- * * `'*'` name - catch-all placeholder
- * * `'{' name '}'` - curly placeholder
- * * `'{' name ':' regexp|type '}'` - curly placeholder with regexp or type name. Should the
- *   regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.
- *
- * Parameter names may contain only word characters (latin letters, digits, and underscore) and
- * must be unique within the pattern (across both path and search parameters). For colon
- * placeholders or curly placeholders without an explicit regexp, a path parameter matches any
- * number of characters other than '/'. For catch-all placeholders the path parameter matches
- * any number of characters.
- *
- * Examples:
- *
- * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for
- *   trailing slashes, and patterns have to match the entire path, not just a prefix.
- * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or
- *   '/user/bob/details'. The second path segment will be captured as the parameter 'id'.
- * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.
- * * `'/user/{id:[^/]*}'` - Same as the previous example.
- * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id
- *   parameter consists of 1 to 8 hex digits.
- * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the
- *   path into the parameter 'path'.
- * * `'/files/*path'` - ditto.
- * * `'/calendar/{start:date}'` - Matches "/calendar/2014-11-12" (because the pattern defined
- *   in the built-in  `date` Type matches `2014-11-12`) and provides a Date object in $stateParams.start
- *
- * @param {string} pattern  The pattern to compile into a matcher.
- * @param {Object} config  A configuration object hash:
- * @param {Object=} parentMatcher Used to concatenate the pattern/config onto
- *   an existing UrlMatcher
- *
- * * `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.
- * * `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.
- *
- * @property {string} prefix  A static prefix of this pattern. The matcher guarantees that any
- *   URL matching this matcher (i.e. any string for which {@link ui.router.util.type:UrlMatcher#methods_exec exec()} returns
- *   non-null) will start with this prefix.
- *
- * @property {string} source  The pattern that was passed into the constructor
- *
- * @property {string} sourcePath  The path portion of the source property
- *
- * @property {string} sourceSearch  The search portion of the source property
- *
- * @property {string} regex  The constructed regex that will be used to match against the url when
- *   it is time to determine which url will match.
- *
- * @returns {Object}  New `UrlMatcher` object
- */
-function UrlMatcher(pattern, config, parentMatcher) {
-  config = extend({ params: {} }, isObject(config) ? config : {});
-
-  // Find all placeholders and create a compiled pattern, using either classic or curly syntax:
-  //   '*' name
-  //   ':' name
-  //   '{' name '}'
-  //   '{' name ':' regexp '}'
-  // The regular expression is somewhat complicated due to the need to allow curly braces
-  // inside the regular expression. The placeholder regexp breaks down as follows:
-  //    ([:*])([\w\[\]]+)              - classic placeholder ($1 / $2) (search version has - for snake-case)
-  //    \{([\w\[\]]+)(?:\:( ... ))?\}  - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case
-  //    (?: ... | ... | ... )+         - the regexp consists of any number of atoms, an atom being either
-  //    [^{}\\]+                       - anything other than curly braces or backslash
-  //    \\.                            - a backslash escape
-  //    \{(?:[^{}\\]+|\\.)*\}          - a matched set of curly braces containing other atoms
-  var placeholder       = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
-      searchPlaceholder = /([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
-      compiled = '^', last = 0, m,
-      segments = this.segments = [],
-      parentParams = parentMatcher ? parentMatcher.params : {},
-      params = this.params = parentMatcher ? parentMatcher.params.$$new() : new $$UMFP.ParamSet(),
-      paramNames = [];
-
-  function addParameter(id, type, config, location) {
-    paramNames.push(id);
-    if (parentParams[id]) return parentParams[id];
-    if (!/^\w+(-+\w+)*(?:\[\])?$/.test(id)) throw new Error("Invalid parameter name '" + id + "' in pattern '" + pattern + "'");
-    if (params[id]) throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'");
-    params[id] = new $$UMFP.Param(id, type, config, location);
-    return params[id];
-  }
-
-  function quoteRegExp(string, pattern, squash, optional) {
-    var surroundPattern = ['',''], result = string.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
-    if (!pattern) return result;
-    switch(squash) {
-      case false: surroundPattern = ['(', ')' + (optional ? "?" : "")]; break;
-      case true:  surroundPattern = ['?(', ')?']; break;
-      default:    surroundPattern = ['(' + squash + "|", ')?']; break;
-    }
-    return result + surroundPattern[0] + pattern + surroundPattern[1];
-  }
-
-  this.source = pattern;
-
-  // Split into static segments separated by path parameter placeholders.
-  // The number of segments is always 1 more than the number of parameters.
-  function matchDetails(m, isSearch) {
-    var id, regexp, segment, type, cfg, arrayMode;
-    id          = m[2] || m[3]; // IE[78] returns '' for unmatched groups instead of null
-    cfg         = config.params[id];
-    segment     = pattern.substring(last, m.index);
-    regexp      = isSearch ? m[4] : m[4] || (m[1] == '*' ? '.*' : null);
-    type        = $$UMFP.type(regexp || "string") || inherit($$UMFP.type("string"), { pattern: new RegExp(regexp, config.caseInsensitive ? 'i' : undefined) });
-    return {
-      id: id, regexp: regexp, segment: segment, type: type, cfg: cfg
-    };
-  }
-
-  var p, param, segment;
-  while ((m = placeholder.exec(pattern))) {
-    p = matchDetails(m, false);
-    if (p.segment.indexOf('?') >= 0) break; // we're into the search part
-
-    param = addParameter(p.id, p.type, p.cfg, "path");
-    compiled += quoteRegExp(p.segment, param.type.pattern.source, param.squash, param.isOptional);
-    segments.push(p.segment);
-    last = placeholder.lastIndex;
-  }
-  segment = pattern.substring(last);
-
-  // Find any search parameter names and remove them from the last segment
-  var i = segment.indexOf('?');
-
-  if (i >= 0) {
-    var search = this.sourceSearch = segment.substring(i);
-    segment = segment.substring(0, i);
-    this.sourcePath = pattern.substring(0, last + i);
-
-    if (search.length > 0) {
-      last = 0;
-      while ((m = searchPlaceholder.exec(search))) {
-        p = matchDetails(m, true);
-        param = addParameter(p.id, p.type, p.cfg, "search");
-        last = placeholder.lastIndex;
-        // check if ?&
-      }
-    }
-  } else {
-    this.sourcePath = pattern;
-    this.sourceSearch = '';
-  }
-
-  compiled += quoteRegExp(segment) + (config.strict === false ? '\/?' : '') + '$';
-  segments.push(segment);
-
-  this.regexp = new RegExp(compiled, config.caseInsensitive ? 'i' : undefined);
-  this.prefix = segments[0];
-  this.$$paramNames = paramNames;
-}
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#concat
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Returns a new matcher for a pattern constructed by appending the path part and adding the
- * search parameters of the specified pattern to this pattern. The current pattern is not
- * modified. This can be understood as creating a pattern for URLs that are relative to (or
- * suffixes of) the current pattern.
- *
- * @example
- * The following two matchers are equivalent:
- * <pre>
- * new UrlMatcher('/user/{id}?q').concat('/details?date');
- * new UrlMatcher('/user/{id}/details?q&date');
- * </pre>
- *
- * @param {string} pattern  The pattern to append.
- * @param {Object} config  An object hash of the configuration for the matcher.
- * @returns {UrlMatcher}  A matcher for the concatenated pattern.
- */
-UrlMatcher.prototype.concat = function (pattern, config) {
-  // Because order of search parameters is irrelevant, we can add our own search
-  // parameters to the end of the new pattern. Parse the new pattern by itself
-  // and then join the bits together, but it's much easier to do this on a string level.
-  var defaultConfig = {
-    caseInsensitive: $$UMFP.caseInsensitive(),
-    strict: $$UMFP.strictMode(),
-    squash: $$UMFP.defaultSquashPolicy()
-  };
-  return new UrlMatcher(this.sourcePath + pattern + this.sourceSearch, extend(defaultConfig, config), this);
-};
-
-UrlMatcher.prototype.toString = function () {
-  return this.source;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#exec
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Tests the specified path against this matcher, and returns an object containing the captured
- * parameter values, or null if the path does not match. The returned object contains the values
- * of any search parameters that are mentioned in the pattern, but their value may be null if
- * they are not present in `searchParams`. This means that search parameters are always treated
- * as optional.
- *
- * @example
- * <pre>
- * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {
- *   x: '1', q: 'hello'
- * });
- * // returns { id: 'bob', q: 'hello', r: null }
- * </pre>
- *
- * @param {string} path  The URL path to match, e.g. `$location.path()`.
- * @param {Object} searchParams  URL search parameters, e.g. `$location.search()`.
- * @returns {Object}  The captured parameter values.
- */
-UrlMatcher.prototype.exec = function (path, searchParams) {
-  var m = this.regexp.exec(path);
-  if (!m) return null;
-  searchParams = searchParams || {};
-
-  var paramNames = this.parameters(), nTotal = paramNames.length,
-    nPath = this.segments.length - 1,
-    values = {}, i, j, cfg, paramName;
-
-  if (nPath !== m.length - 1) throw new Error("Unbalanced capture group in route '" + this.source + "'");
-
-  function decodePathArray(string) {
-    function reverseString(str) { return str.split("").reverse().join(""); }
-    function unquoteDashes(str) { return str.replace(/\\-/g, "-"); }
-
-    var split = reverseString(string).split(/-(?!\\)/);
-    var allReversed = map(split, reverseString);
-    return map(allReversed, unquoteDashes).reverse();
-  }
-
-  for (i = 0; i < nPath; i++) {
-    paramName = paramNames[i];
-    var param = this.params[paramName];
-    var paramVal = m[i+1];
-    // if the param value matches a pre-replace pair, replace the value before decoding.
-    for (j = 0; j < param.replace; j++) {
-      if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;
-    }
-    if (paramVal && param.array === true) paramVal = decodePathArray(paramVal);
-    values[paramName] = param.value(paramVal);
-  }
-  for (/**/; i < nTotal; i++) {
-    paramName = paramNames[i];
-    values[paramName] = this.params[paramName].value(searchParams[paramName]);
-  }
-
-  return values;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#parameters
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Returns the names of all path and search parameters of this pattern in an unspecified order.
- *
- * @returns {Array.<string>}  An array of parameter names. Must be treated as read-only. If the
- *    pattern has no parameters, an empty array is returned.
- */
-UrlMatcher.prototype.parameters = function (param) {
-  if (!isDefined(param)) return this.$$paramNames;
-  return this.params[param] || null;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#validate
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Checks an object hash of parameters to validate their correctness according to the parameter
- * types of this `UrlMatcher`.
- *
- * @param {Object} params The object hash of parameters to validate.
- * @returns {boolean} Returns `true` if `params` validates, otherwise `false`.
- */
-UrlMatcher.prototype.validates = function (params) {
-  return this.params.$$validates(params);
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:UrlMatcher#format
- * @methodOf ui.router.util.type:UrlMatcher
- *
- * @description
- * Creates a URL that matches this pattern by substituting the specified values
- * for the path and search parameters. Null values for path parameters are
- * treated as empty strings.
- *
- * @example
- * <pre>
- * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });
- * // returns '/user/bob?q=yes'
- * </pre>
- *
- * @param {Object} values  the values to substitute for the parameters in this pattern.
- * @returns {string}  the formatted URL (path and optionally search part).
- */
-UrlMatcher.prototype.format = function (values) {
-  values = values || {};
-  var segments = this.segments, params = this.parameters(), paramset = this.params;
-  if (!this.validates(values)) return null;
-
-  var i, search = false, nPath = segments.length - 1, nTotal = params.length, result = segments[0];
-
-  function encodeDashes(str) { // Replace dashes with encoded "\-"
-    return encodeURIComponent(str).replace(/-/g, function(c) { return '%5C%' + c.charCodeAt(0).toString(16).toUpperCase(); });
-  }
-
-  for (i = 0; i < nTotal; i++) {
-    var isPathParam = i < nPath;
-    var name = params[i], param = paramset[name], value = param.value(values[name]);
-    var isDefaultValue = param.isOptional && param.type.equals(param.value(), value);
-    var squash = isDefaultValue ? param.squash : false;
-    var encoded = param.type.encode(value);
-
-    if (isPathParam) {
-      var nextSegment = segments[i + 1];
-      if (squash === false) {
-        if (encoded != null) {
-          if (isArray(encoded)) {
-            result += map(encoded, encodeDashes).join("-");
-          } else {
-            result += encodeURIComponent(encoded);
-          }
-        }
-        result += nextSegment;
-      } else if (squash === true) {
-        var capture = result.match(/\/$/) ? /\/?(.*)/ : /(.*)/;
-        result += nextSegment.match(capture)[1];
-      } else if (isString(squash)) {
-        result += squash + nextSegment;
-      }
-    } else {
-      if (encoded == null || (isDefaultValue && squash !== false)) continue;
-      if (!isArray(encoded)) encoded = [ encoded ];
-      encoded = map(encoded, encodeURIComponent).join('&' + name + '=');
-      result += (search ? '&' : '?') + (name + '=' + encoded);
-      search = true;
-    }
-  }
-
-  return result;
-};
-
-/**
- * @ngdoc object
- * @name ui.router.util.type:Type
- *
- * @description
- * Implements an interface to define custom parameter types that can be decoded from and encoded to
- * string parameters matched in a URL. Used by {@link ui.router.util.type:UrlMatcher `UrlMatcher`}
- * objects when matching or formatting URLs, or comparing or validating parameter values.
- *
- * See {@link ui.router.util.$urlMatcherFactory#methods_type `$urlMatcherFactory#type()`} for more
- * information on registering custom types.
- *
- * @param {Object} config  A configuration object which contains the custom type definition.  The object's
- *        properties will override the default methods and/or pattern in `Type`'s public interface.
- * @example
- * <pre>
- * {
- *   decode: function(val) { return parseInt(val, 10); },
- *   encode: function(val) { return val && val.toString(); },
- *   equals: function(a, b) { return this.is(a) && a === b; },
- *   is: function(val) { return angular.isNumber(val) isFinite(val) && val % 1 === 0; },
- *   pattern: /\d+/
- * }
- * </pre>
- *
- * @property {RegExp} pattern The regular expression pattern used to match values of this type when
- *           coming from a substring of a URL.
- *
- * @returns {Object}  Returns a new `Type` object.
- */
-function Type(config) {
-  extend(this, config);
-}
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#is
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Detects whether a value is of a particular type. Accepts a native (decoded) value
- * and determines whether it matches the current `Type` object.
- *
- * @param {*} val  The value to check.
- * @param {string} key  Optional. If the type check is happening in the context of a specific
- *        {@link ui.router.util.type:UrlMatcher `UrlMatcher`} object, this is the name of the
- *        parameter in which `val` is stored. Can be used for meta-programming of `Type` objects.
- * @returns {Boolean}  Returns `true` if the value matches the type, otherwise `false`.
- */
-Type.prototype.is = function(val, key) {
-  return true;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#encode
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Encodes a custom/native type value to a string that can be embedded in a URL. Note that the
- * return value does *not* need to be URL-safe (i.e. passed through `encodeURIComponent()`), it
- * only needs to be a representation of `val` that has been coerced to a string.
- *
- * @param {*} val  The value to encode.
- * @param {string} key  The name of the parameter in which `val` is stored. Can be used for
- *        meta-programming of `Type` objects.
- * @returns {string}  Returns a string representation of `val` that can be encoded in a URL.
- */
-Type.prototype.encode = function(val, key) {
-  return val;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#decode
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Converts a parameter value (from URL string or transition param) to a custom/native value.
- *
- * @param {string} val  The URL parameter value to decode.
- * @param {string} key  The name of the parameter in which `val` is stored. Can be used for
- *        meta-programming of `Type` objects.
- * @returns {*}  Returns a custom representation of the URL parameter value.
- */
-Type.prototype.decode = function(val, key) {
-  return val;
-};
-
-/**
- * @ngdoc function
- * @name ui.router.util.type:Type#equals
- * @methodOf ui.router.util.type:Type
- *
- * @description
- * Determines whether two decoded values are equivalent.
- *
- * @param {*} a  A value to compare against.
- * @param {*} b  A value to compare against.
- * @returns {Boolean}  Returns `true` if the values are equivalent/equal, otherwise `false`.
- */
-Type.prototype.equals = function(a, b) {
-  return a == b;
-};
-
-Type.prototype.$subPattern = function() {
-  var sub = this.pattern.toString();
-  return sub.substr(1, sub.length - 2);
-};
-
-Type.prototype.pattern = /.*/;
-
-Type.prototype.toString = function() { return "{Type:" + this.name + "}"; };
-
-/** Given an encoded string, or a decoded object, returns a decoded object */
-Type.prototype.$normalize = function(val) {
-  return this.is(val) ? val : this.decode(val);
-};
-
-/*
- * Wraps an existing custom Type as an array of Type, depending on 'mode'.
- * e.g.:
- * - urlmatcher pattern "/path?{queryParam[]:int}"
- * - url: "/path?queryParam=1&queryParam=2
- * - $stateParams.queryParam will be [1, 2]
- * if `mode` is "auto", then
- * - url: "/path?queryParam=1 will create $stateParams.queryParam: 1
- * - url: "/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]
- */
-Type.prototype.$asArray = function(mode, isSearch) {
-  if (!mode) return this;
-  if (mode === "auto" && !isSearch) throw new Error("'auto' array mode is for query parameters only");
-
-  function ArrayType(type, mode) {
-    function bindTo(type, callbackName) {
-      return function() {
-        return type[callbackName].apply(type, arguments);
-      };
-    }
-
-    // Wrap non-array value as array
-    function arrayWrap(val) { return isArray(val) ? val : (isDefined(val) ? [ val ] : []); }
-    // Unwrap array value for "auto" mode. Return undefined for empty array.
-    function arrayUnwrap(val) {
-      switch(val.length) {
-        case 0: return undefined;
-        case 1: return mode === "auto" ? val[0] : val;
-        default: return val;
-      }
-    }
-    function falsey(val) { return !val; }
-
-    // Wraps type (.is/.encode/.decode) functions to operate on each value of an array
-    function arrayHandler(callback, allTruthyMode) {
-      return function handleArray(val) {
-        val = arrayWrap(val);
-        var result = map(val, callback);
-        if (allTruthyMode === true)
-          return filter(result, falsey).length === 0;
-        return arrayUnwrap(result);
-      };
-    }
-
-    // Wraps type (.equals) functions to operate on each value of an array
-    function arrayEqualsHandler(callback) {
-      return function handleArray(val1, val2) {
-        var left = arrayWrap(val1), right = arrayWrap(val2);
-        if (left.length !== right.length) return false;
-        for (var i = 0; i < left.length; i++) {
-          if (!callback(left[i], right[i])) return false;
-        }
-        return true;
-      };
-    }
-
-    this.encode = arrayHandler(bindTo(type, 'encode'));
-    this.decode = arrayHandler(bindTo(type, 'decode'));
-    this.is     = arrayHandler(bindTo(type, 'is'), true);
-    this.equals = arrayEqualsHandler(bindTo(type, 'equals'));
-    this.pattern = type.pattern;
-    this.$normalize = arrayHandler(bindTo(type, '$normalize'));
-    this.name = type.name;
-    this.$arrayMode = mode;
-  }
-
-  return new ArrayType(this, mode);
-};
-
-
-
-/**
- * @ngdoc object
- * @name ui.router.util.$urlMatcherFactory
- *
- * @description
- * Factory for {@link ui.router.util.type:UrlMatcher `UrlMatcher`} instances. The factory
- * is also available to providers under the name `$urlMatcherFactoryProvider`.
- */
-function $UrlMatcherFactory() {
-  $$UMFP = this;
-
-  var isCaseInsensitive = false, isStrictMode = true, defaultSquashPolicy = false;
-
-  function valToString(val) { return val != null ? val.toString().replace(/\//g, "%2F") : val; }
-  function valFromString(val) { return val != null ? val.toString().replace(/%2F/g, "/") : val; }
-
-  var $types = {}, enqueue = true, typeQueue = [], injector, defaultTypes = {
-    string: {
-      encode: valToString,
-      decode: valFromString,
-      // TODO: in 1.0, make string .is() return false if value is undefined/null by default.
-      // In 0.2.x, string params are optional by default for backwards compat
-      is: function(val) { return val == null || !isDefined(val) || typeof val === "string"; },
-      pattern: /[^/]*/
-    },
-    int: {
-      encode: valToString,
-      decode: function(val) { return parseInt(val, 10); },
-      is: function(val) { return isDefined(val) && this.decode(val.toString()) === val; },
-      pattern: /\d+/
-    },
-    bool: {
-      encode: function(val) { return val ? 1 : 0; },
-      decode: function(val) { return parseInt(val, 10) !== 0; },
-      is: function(val) { return val === true || val === false; },
-      pattern: /0|1/
-    },
-    date: {
-      encode: function (val) {
-        if (!this.is(val))
-          return undefined;
-        return [ val.getFullYear(),
-          ('0' + (val.getMonth() + 1)).slice(-2),
-          ('0' + val.getDate()).slice(-2)
-        ].join("-");
-      },
-      decode: function (val) {
-        if (this.is(val)) return val;
-        var match = this.capture.exec(val);
-        return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;
-      },
-      is: function(val) { return val instanceof Date && !isNaN(val.valueOf()); },
-      equals: function (a, b) { return this.is(a) && this.is(b) && a.toISOString() === b.toISOString(); },
-      pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
-      capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
-    },
-    json: {
-      encode: angular.toJson,
-      decode: angular.fromJson,
-      is: angular.isObject,
-      equals: angular.equals,
-      pattern: /[^/]*/
-    },
-    any: { // does not encode/decode
-      encode: angular.identity,
-      decode: angular.identity,
-      equals: angular.equals,
-      pattern: /.*/
-    }
-  };
-
-  function getDefaultConfig() {
-    return {
-      strict: isStrictMode,
-      caseInsensitive: isCaseInsensitive
-    };
-  }
-
-  function isInjectable(value) {
-    return (isFunction(value) || (isArray(value) && isFunction(value[value.length - 1])));
-  }
-
-  /**
-   * [Internal] Get the default value of a parameter, which may be an injectable function.
-   */
-  $UrlMatcherFactory.$$getDefaultValue = function(config) {
-    if (!isInjectable(config.value)) return config.value;
-    if (!injector) throw new Error("Injectable functions cannot be called at configuration time");
-    return injector.invoke(config.value);
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#caseInsensitive
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Defines whether URL matching should be case sensitive (the default behavior), or not.
-   *
-   * @param {boolean} value `false` to match URL in a case sensitive manner; otherwise `true`;
-   * @returns {boolean} the current value of caseInsensitive
-   */
-  this.caseInsensitive = function(value) {
-    if (isDefined(value))
-      isCaseInsensitive = value;
-    return isCaseInsensitive;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#strictMode
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Defines whether URLs should match trailing slashes, or not (the default behavior).
-   *
-   * @param {boolean=} value `false` to match trailing slashes in URLs, otherwise `true`.
-   * @returns {boolean} the current value of strictMode
-   */
-  this.strictMode = function(value) {
-    if (isDefined(value))
-      isStrictMode = value;
-    return isStrictMode;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#defaultSquashPolicy
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Sets the default behavior when generating or matching URLs with default parameter values.
-   *
-   * @param {string} value A string that defines the default parameter URL squashing behavior.
-   *    `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL
-   *    `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the
-   *             parameter is surrounded by slashes, squash (remove) one slash from the URL
-   *    any other string, e.g. "~": When generating an href with a default parameter value, squash (remove)
-   *             the parameter value from the URL and replace it with this string.
-   */
-  this.defaultSquashPolicy = function(value) {
-    if (!isDefined(value)) return defaultSquashPolicy;
-    if (value !== true && value !== false && !isString(value))
-      throw new Error("Invalid squash policy: " + value + ". Valid policies: false, true, arbitrary-string");
-    defaultSquashPolicy = value;
-    return value;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#compile
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Creates a {@link ui.router.util.type:UrlMatcher `UrlMatcher`} for the specified pattern.
-   *
-   * @param {string} pattern  The URL pattern.
-   * @param {Object} config  The config object hash.
-   * @returns {UrlMatcher}  The UrlMatcher.
-   */
-  this.compile = function (pattern, config) {
-    return new UrlMatcher(pattern, extend(getDefaultConfig(), config));
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#isMatcher
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Returns true if the specified object is a `UrlMatcher`, or false otherwise.
-   *
-   * @param {Object} object  The object to perform the type check against.
-   * @returns {Boolean}  Returns `true` if the object matches the `UrlMatcher` interface, by
-   *          implementing all the same methods.
-   */
-  this.isMatcher = function (o) {
-    if (!isObject(o)) return false;
-    var result = true;
-
-    forEach(UrlMatcher.prototype, function(val, name) {
-      if (isFunction(val)) {
-        result = result && (isDefined(o[name]) && isFunction(o[name]));
-      }
-    });
-    return result;
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.util.$urlMatcherFactory#type
-   * @methodOf ui.router.util.$urlMatcherFactory
-   *
-   * @description
-   * Registers a custom {@link ui.router.util.type:Type `Type`} object that can be used to
-   * generate URLs with typed parameters.
-   *
-   * @param {string} name  The type name.
-   * @param {Object|Function} definition   The type definition. See
-   *        {@link ui.router.util.type:Type `Type`} for information on the values accepted.
-   * @param {Object|Function} definitionFn (optional) A function that is injected before the app
-   *        runtime starts.  The result of this function is merged into the existing `definition`.
-   *        See {@link ui.router.util.type:Type `Type`} for information on the values accepted.
-   *
-   * @returns {Object}  Returns `$urlMatcherFactoryProvider`.
-   *
-   * @example
-   * This is a simple example of a custom type that encodes and decodes items from an
-   * array, using the array index as the URL-encoded value:
-   *
-   * <pre>
-   * var list = ['John', 'Paul', 'George', 'Ringo'];
-   *
-   * $urlMatcherFactoryProvider.type('listItem', {
-   *   encode: function(item) {
-   *     // Represent the list item in the URL using its corresponding index
-   *     return list.indexOf(item);
-   *   },
-   *   decode: function(item) {
-   *     // Look up the list item by index
-   *     return list[parseInt(item, 10)];
-   *   },
-   *   is: function(item) {
-   *     // Ensure the item is valid by checking to see that it appears
-   *     // in the list
-   *     return list.indexOf(item) > -1;
-   *   }
-   * });
-   *
-   * $stateProvider.state('list', {
-   *   url: "/list/{item:listItem}",
-   *   controller: function($scope, $stateParams) {
-   *     console.log($stateParams.item);
-   *   }
-   * });
-   *
-   * // ...
-   *
-   * // Changes URL to '/list/3', logs "Ringo" to the console
-   * $state.go('list', { item: "Ringo" });
-   * </pre>
-   *
-   * This is a more complex example of a type that relies on dependency injection to
-   * interact with services, and uses the parameter name from the URL to infer how to
-   * handle encoding and decoding parameter values:
-   *
-   * <pre>
-   * // Defines a custom type that gets a value from a service,
-   * // where each service gets different types of values from
-   * // a backend API:
-   * $urlMatcherFactoryProvider.type('dbObject', {}, function(Users, Posts) {
-   *
-   *   // Matches up services to URL parameter names
-   *   var services = {
-   *     user: Users,
-   *     post: Posts
-   *   };
-   *
-   *   return {
-   *     encode: function(object) {
-   *       // Represent the object in the URL using its unique ID
-   *       return object.id;
-   *     },
-   *     decode: function(value, key) {
-   *       // Look up the object by ID, using the parameter
-   *       // name (key) to call the correct service
-   *       return services[key].findById(value);
-   *     },
-   *     is: function(object, key) {
-   *       // Check that object is a valid dbObject
-   *       return angular.isObject(object) && object.id && services[key];
-   *     }
-   *     equals: function(a, b) {
-   *       // Check the equality of decoded objects by comparing
-   *       // their unique IDs
-   *       return a.id === b.id;
-   *     }
-   *   };
-   * });
-   *
-   * // In a config() block, you can then attach URLs with
-   * // type-annotated parameters:
-   * $stateProvider.state('users', {
-   *   url: "/users",
-   *   // ...
-   * }).state('users.item', {
-   *   url: "/{user:dbObject}",
-   *   controller: function($scope, $stateParams) {
-   *     // $stateParams.user will now be an object returned from
-   *     // the Users service
-   *   },
-   *   // ...
-   * });
-   * </pre>
-   */
-  this.type = function (name, definition, definitionFn) {
-    if (!isDefined(definition)) return $types[name];
-    if ($types.hasOwnProperty(name)) throw new Error("A type named '" + name + "' has already been defined.");
-
-    $types[name] = new Type(extend({ name: name }, definition));
-    if (definitionFn) {
-      typeQueue.push({ name: name, def: definitionFn });
-      if (!enqueue) flushTypeQueue();
-    }
-    return this;
-  };
-
-  // `flushTypeQueue()` waits until `$urlMatcherFactory` is injected before invoking the queued `definitionFn`s
-  function flushTypeQueue() {
-    while(typeQueue.length) {
-      var type = typeQueue.shift();
-      if (type.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
-      angular.extend($types[type.name], injector.invoke(type.def));
-    }
-  }
-
-  // Register default types. Store them in the prototype of $types.
-  forEach(defaultTypes, function(type, name) { $types[name] = new Type(extend({name: name}, type)); });
-  $types = inherit($types, {});
-
-  /* No need to document $get, since it returns this */
-  this.$get = ['$injector', function ($injector) {
-    injector = $injector;
-    enqueue = false;
-    flushTypeQueue();
-
-    forEach(defaultTypes, function(type, name) {
-      if (!$types[name]) $types[name] = new Type(type);
-    });
-    return this;
-  }];
-
-  this.Param = function Param(id, type, config, location) {
-    var self = this;
-    config = unwrapShorthand(config);
-    type = getType(config, type, location);
-    var arrayMode = getArrayMode();
-    type = arrayMode ? type.$asArray(arrayMode, location === "search") : type;
-    if (type.name === "string" && !arrayMode && location === "path" && config.value === undefined)
-      config.value = ""; // for 0.2.x; in 0.3.0+ do not automatically default to ""
-    var isOptional = config.value !== undefined;
-    var squash = getSquashPolicy(config, isOptional);
-    var replace = getReplace(config, arrayMode, isOptional, squash);
-
-    function unwrapShorthand(config) {
-      var keys = isObject(config) ? objectKeys(config) : [];
-      var isShorthand = indexOf(keys, "value") === -1 && indexOf(keys, "type") === -1 &&
-                        indexOf(keys, "squash") === -1 && indexOf(keys, "array") === -1;
-      if (isShorthand) config = { value: config };
-      config.$$fn = isInjectable(config.value) ? config.value : function () { return config.value; };
-      return config;
-    }
-
-    function getType(config, urlType, location) {
-      if (config.type && urlType) throw new Error("Param '"+id+"' has two type configurations.");
-      if (urlType) return urlType;
-      if (!config.type) return (location === "config" ? $types.any : $types.string);
-      return config.type instanceof Type ? config.type : new Type(config.type);
-    }
-
-    // array config: param name (param[]) overrides default settings.  explicit config overrides param name.
-    function getArrayMode() {
-      var arrayDefaults = { array: (location === "search" ? "auto" : false) };
-      var arrayParamNomenclature = id.match(/\[\]$/) ? { array: true } : {};
-      return extend(arrayDefaults, arrayParamNomenclature, config).array;
-    }
-
-    /**
-     * returns false, true, or the squash value to indicate the "default parameter url squash policy".
-     */
-    function getSquashPolicy(config, isOptional) {
-      var squash = config.squash;
-      if (!isOptional || squash === false) return false;
-      if (!isDefined(squash) || squash == null) return defaultSquashPolicy;
-      if (squash === true || isString(squash)) return squash;
-      throw new Error("Invalid squash policy: '" + squash + "'. Valid policies: false, true, or arbitrary string");
-    }
-
-    function getReplace(config, arrayMode, isOptional, squash) {
-      var replace, configuredKeys, defaultPolicy = [
-        { from: "",   to: (isOptional || arrayMode ? undefined : "") },
-        { from: null, to: (isOptional || arrayMode ? undefined : "") }
-      ];
-      replace = isArray(config.replace) ? config.replace : [];
-      if (isString(squash))
-        replace.push({ from: squash, to: undefined });
-      configuredKeys = map(replace, function(item) { return item.from; } );
-      return filter(defaultPolicy, function(item) { return indexOf(configuredKeys, item.from) === -1; }).concat(replace);
-    }
-
-    /**
-     * [Internal] Get the default value of a parameter, which may be an injectable function.
-     */
-    function $$getDefaultValue() {
-      if (!injector) throw new Error("Injectable functions cannot be called at configuration time");
-      var defaultValue = injector.invoke(config.$$fn);
-      if (defaultValue !== null && defaultValue !== undefined && !self.type.is(defaultValue))
-        throw new Error("Default value (" + defaultValue + ") for parameter '" + self.id + "' is not an instance of Type (" + self.type.name + ")");
-      return defaultValue;
-    }
-
-    /**
-     * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the
-     * default value, which may be the result of an injectable function.
-     */
-    function $value(value) {
-      function hasReplaceVal(val) { return function(obj) { return obj.from === val; }; }
-      function $replace(value) {
-        var replacement = map(filter(self.replace, hasReplaceVal(value)), function(obj) { return obj.to; });
-        return replacement.length ? replacement[0] : value;
-      }
-      value = $replace(value);
-      return !isDefined(value) ? $$getDefaultValue() : self.type.$normalize(value);
-    }
-
-    function toString() { return "{Param:" + id + " " + type + " squash: '" + squash + "' optional: " + isOptional + "}"; }
-
-    extend(this, {
-      id: id,
-      type: type,
-      location: location,
-      array: arrayMode,
-      squash: squash,
-      replace: replace,
-      isOptional: isOptional,
-      value: $value,
-      dynamic: undefined,
-      config: config,
-      toString: toString
-    });
-  };
-
-  function ParamSet(params) {
-    extend(this, params || {});
-  }
-
-  ParamSet.prototype = {
-    $$new: function() {
-      return inherit(this, extend(new ParamSet(), { $$parent: this}));
-    },
-    $$keys: function () {
-      var keys = [], chain = [], parent = this,
-        ignore = objectKeys(ParamSet.prototype);
-      while (parent) { chain.push(parent); parent = parent.$$parent; }
-      chain.reverse();
-      forEach(chain, function(paramset) {
-        forEach(objectKeys(paramset), function(key) {
-            if (indexOf(keys, key) === -1 && indexOf(ignore, key) === -1) keys.push(key);
-        });
-      });
-      return keys;
-    },
-    $$values: function(paramValues) {
-      var values = {}, self = this;
-      forEach(self.$$keys(), function(key) {
-        values[key] = self[key].value(paramValues && paramValues[key]);
-      });
-      return values;
-    },
-    $$equals: function(paramValues1, paramValues2) {
-      var equal = true, self = this;
-      forEach(self.$$keys(), function(key) {
-        var left = paramValues1 && paramValues1[key], right = paramValues2 && paramValues2[key];
-        if (!self[key].type.equals(left, right)) equal = false;
-      });
-      return equal;
-    },
-    $$validates: function $$validate(paramValues) {
-      var keys = this.$$keys(), i, param, rawVal, normalized, encoded;
-      for (i = 0; i < keys.length; i++) {
-        param = this[keys[i]];
-        rawVal = paramValues[keys[i]];
-        if ((rawVal === undefined || rawVal === null) && param.isOptional)
-          break; // There was no parameter value, but the param is optional
-        normalized = param.type.$normalize(rawVal);
-        if (!param.type.is(normalized))
-          return false; // The value was not of the correct Type, and could not be decoded to the correct Type
-        encoded = param.type.encode(normalized);
-        if (angular.isString(encoded) && !param.type.pattern.exec(encoded))
-          return false; // The value was of the correct type, but when encoded, did not match the Type's regexp
-      }
-      return true;
-    },
-    $$parent: undefined
-  };
-
-  this.ParamSet = ParamSet;
-}
-
-// Register as a provider so it's available to other providers
-angular.module('ui.router.util').provider('$urlMatcherFactory', $UrlMatcherFactory);
-angular.module('ui.router.util').run(['$urlMatcherFactory', function($urlMatcherFactory) { }]);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/urlRouter.js b/src/main/webapp/bower_components/angular-ui-router/src/urlRouter.js
deleted file mode 100644
index 33c17090..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/urlRouter.js
+++ /dev/null
@@ -1,427 +0,0 @@
-/**
- * @ngdoc object
- * @name ui.router.router.$urlRouterProvider
- *
- * @requires ui.router.util.$urlMatcherFactoryProvider
- * @requires $locationProvider
- *
- * @description
- * `$urlRouterProvider` has the responsibility of watching `$location`. 
- * When `$location` changes it runs through a list of rules one by one until a 
- * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify 
- * a url in a state configuration. All urls are compiled into a UrlMatcher object.
- *
- * There are several methods on `$urlRouterProvider` that make it useful to use directly
- * in your module config.
- */
-$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];
-function $UrlRouterProvider(   $locationProvider,   $urlMatcherFactory) {
-  var rules = [], otherwise = null, interceptDeferred = false, listener;
-
-  // Returns a string that is a prefix of all strings matching the RegExp
-  function regExpPrefix(re) {
-    var prefix = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(re.source);
-    return (prefix != null) ? prefix[1].replace(/\\(.)/g, "$1") : '';
-  }
-
-  // Interpolates matched values into a String.replace()-style pattern
-  function interpolate(pattern, match) {
-    return pattern.replace(/\$(\$|\d{1,2})/, function (m, what) {
-      return match[what === '$' ? 0 : Number(what)];
-    });
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#rule
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Defines rules that are used by `$urlRouterProvider` to find matches for
-   * specific URLs.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   // Here's an example of how you might allow case insensitive urls
-   *   $urlRouterProvider.rule(function ($injector, $location) {
-   *     var path = $location.path(),
-   *         normalized = path.toLowerCase();
-   *
-   *     if (path !== normalized) {
-   *       return normalized;
-   *     }
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {object} rule Handler function that takes `$injector` and `$location`
-   * services as arguments. You can use them to return a valid path as a string.
-   *
-   * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
-   */
-  this.rule = function (rule) {
-    if (!isFunction(rule)) throw new Error("'rule' must be a function");
-    rules.push(rule);
-    return this;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.router.$urlRouterProvider#otherwise
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Defines a path that is used when an invalid route is requested.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   // if the path doesn't match any of the urls you configured
-   *   // otherwise will take care of routing the user to the
-   *   // specified url
-   *   $urlRouterProvider.otherwise('/index');
-   *
-   *   // Example of using function rule as param
-   *   $urlRouterProvider.otherwise(function ($injector, $location) {
-   *     return '/a/valid/url';
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {string|object} rule The url path you want to redirect to or a function 
-   * rule that returns the url path. The function version is passed two params: 
-   * `$injector` and `$location` services, and must return a url string.
-   *
-   * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
-   */
-  this.otherwise = function (rule) {
-    if (isString(rule)) {
-      var redirect = rule;
-      rule = function () { return redirect; };
-    }
-    else if (!isFunction(rule)) throw new Error("'rule' must be a function");
-    otherwise = rule;
-    return this;
-  };
-
-
-  function handleIfMatch($injector, handler, match) {
-    if (!match) return false;
-    var result = $injector.invoke(handler, handler, { $match: match });
-    return isDefined(result) ? result : true;
-  }
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#when
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Registers a handler for a given url matching. if handle is a string, it is
-   * treated as a redirect, and is interpolated according to the syntax of match
-   * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).
-   *
-   * If the handler is a function, it is injectable. It gets invoked if `$location`
-   * matches. You have the option of inject the match object as `$match`.
-   *
-   * The handler can return
-   *
-   * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`
-   *   will continue trying to find another one that matches.
-   * - **string** which is treated as a redirect and passed to `$location.url()`
-   * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {
-   *     if ($state.$current.navigable !== state ||
-   *         !equalForKeys($match, $stateParams) {
-   *      $state.transitionTo(state, $match, false);
-   *     }
-   *   });
-   * });
-   * </pre>
-   *
-   * @param {string|object} what The incoming path that you want to redirect.
-   * @param {string|object} handler The path you want to redirect your user to.
-   */
-  this.when = function (what, handler) {
-    var redirect, handlerIsString = isString(handler);
-    if (isString(what)) what = $urlMatcherFactory.compile(what);
-
-    if (!handlerIsString && !isFunction(handler) && !isArray(handler))
-      throw new Error("invalid 'handler' in when()");
-
-    var strategies = {
-      matcher: function (what, handler) {
-        if (handlerIsString) {
-          redirect = $urlMatcherFactory.compile(handler);
-          handler = ['$match', function ($match) { return redirect.format($match); }];
-        }
-        return extend(function ($injector, $location) {
-          return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));
-        }, {
-          prefix: isString(what.prefix) ? what.prefix : ''
-        });
-      },
-      regex: function (what, handler) {
-        if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky");
-
-        if (handlerIsString) {
-          redirect = handler;
-          handler = ['$match', function ($match) { return interpolate(redirect, $match); }];
-        }
-        return extend(function ($injector, $location) {
-          return handleIfMatch($injector, handler, what.exec($location.path()));
-        }, {
-          prefix: regExpPrefix(what)
-        });
-      }
-    };
-
-    var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };
-
-    for (var n in check) {
-      if (check[n]) return this.rule(strategies[n](what, handler));
-    }
-
-    throw new Error("invalid 'what' in when()");
-  };
-
-  /**
-   * @ngdoc function
-   * @name ui.router.router.$urlRouterProvider#deferIntercept
-   * @methodOf ui.router.router.$urlRouterProvider
-   *
-   * @description
-   * Disables (or enables) deferring location change interception.
-   *
-   * If you wish to customize the behavior of syncing the URL (for example, if you wish to
-   * defer a transition but maintain the current URL), call this method at configuration time.
-   * Then, at run time, call `$urlRouter.listen()` after you have configured your own
-   * `$locationChangeSuccess` event handler.
-   *
-   * @example
-   * <pre>
-   * var app = angular.module('app', ['ui.router.router']);
-   *
-   * app.config(function ($urlRouterProvider) {
-   *
-   *   // Prevent $urlRouter from automatically intercepting URL changes;
-   *   // this allows you to configure custom behavior in between
-   *   // location changes and route synchronization:
-   *   $urlRouterProvider.deferIntercept();
-   *
-   * }).run(function ($rootScope, $urlRouter, UserService) {
-   *
-   *   $rootScope.$on('$locationChangeSuccess', function(e) {
-   *     // UserService is an example service for managing user state
-   *     if (UserService.isLoggedIn()) return;
-   *
-   *     // Prevent $urlRouter's default handler from firing
-   *     e.preventDefault();
-   *
-   *     UserService.handleLogin().then(function() {
-   *       // Once the user has logged in, sync the current URL
-   *       // to the router:
-   *       $urlRouter.sync();
-   *     });
-   *   });
-   *
-   *   // Configures $urlRouter's listener *after* your custom listener
-   *   $urlRouter.listen();
-   * });
-   * </pre>
-   *
-   * @param {boolean} defer Indicates whether to defer location change interception. Passing
-            no parameter is equivalent to `true`.
-   */
-  this.deferIntercept = function (defer) {
-    if (defer === undefined) defer = true;
-    interceptDeferred = defer;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.router.$urlRouter
-   *
-   * @requires $location
-   * @requires $rootScope
-   * @requires $injector
-   * @requires $browser
-   *
-   * @description
-   *
-   */
-  this.$get = $get;
-  $get.$inject = ['$location', '$rootScope', '$injector', '$browser'];
-  function $get(   $location,   $rootScope,   $injector,   $browser) {
-
-    var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl;
-
-    function appendBasePath(url, isHtml5, absolute) {
-      if (baseHref === '/') return url;
-      if (isHtml5) return baseHref.slice(0, -1) + url;
-      if (absolute) return baseHref.slice(1) + url;
-      return url;
-    }
-
-    // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree
-    function update(evt) {
-      if (evt && evt.defaultPrevented) return;
-      var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl;
-      lastPushedUrl = undefined;
-      // TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573
-      //if (ignoreUpdate) return true;
-
-      function check(rule) {
-        var handled = rule($injector, $location);
-
-        if (!handled) return false;
-        if (isString(handled)) $location.replace().url(handled);
-        return true;
-      }
-      var n = rules.length, i;
-
-      for (i = 0; i < n; i++) {
-        if (check(rules[i])) return;
-      }
-      // always check otherwise last to allow dynamic updates to the set of rules
-      if (otherwise) check(otherwise);
-    }
-
-    function listen() {
-      listener = listener || $rootScope.$on('$locationChangeSuccess', update);
-      return listener;
-    }
-
-    if (!interceptDeferred) listen();
-
-    return {
-      /**
-       * @ngdoc function
-       * @name ui.router.router.$urlRouter#sync
-       * @methodOf ui.router.router.$urlRouter
-       *
-       * @description
-       * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.
-       * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,
-       * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed
-       * with the transition by calling `$urlRouter.sync()`.
-       *
-       * @example
-       * <pre>
-       * angular.module('app', ['ui.router'])
-       *   .run(function($rootScope, $urlRouter) {
-       *     $rootScope.$on('$locationChangeSuccess', function(evt) {
-       *       // Halt state change from even starting
-       *       evt.preventDefault();
-       *       // Perform custom logic
-       *       var meetsRequirement = ...
-       *       // Continue with the update and state transition if logic allows
-       *       if (meetsRequirement) $urlRouter.sync();
-       *     });
-       * });
-       * </pre>
-       */
-      sync: function() {
-        update();
-      },
-
-      listen: function() {
-        return listen();
-      },
-
-      update: function(read) {
-        if (read) {
-          location = $location.url();
-          return;
-        }
-        if ($location.url() === location) return;
-
-        $location.url(location);
-        $location.replace();
-      },
-
-      push: function(urlMatcher, params, options) {
-         var url = urlMatcher.format(params || {});
-
-        // Handle the special hash param, if needed
-        if (url !== null && params && params['#']) {
-            url += '#' + params['#'];
-        }
-
-        $location.url(url);
-        lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined;
-        if (options && options.replace) $location.replace();
-      },
-
-      /**
-       * @ngdoc function
-       * @name ui.router.router.$urlRouter#href
-       * @methodOf ui.router.router.$urlRouter
-       *
-       * @description
-       * A URL generation method that returns the compiled URL for a given
-       * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters.
-       *
-       * @example
-       * <pre>
-       * $bob = $urlRouter.href(new UrlMatcher("/about/:person"), {
-       *   person: "bob"
-       * });
-       * // $bob == "/about/bob";
-       * </pre>
-       *
-       * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate.
-       * @param {object=} params An object of parameter values to fill the matcher's required parameters.
-       * @param {object=} options Options object. The options are:
-       *
-       * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. "http://www.example.com/fullurl".
-       *
-       * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`
-       */
-      href: function(urlMatcher, params, options) {
-        if (!urlMatcher.validates(params)) return null;
-
-        var isHtml5 = $locationProvider.html5Mode();
-        if (angular.isObject(isHtml5)) {
-          isHtml5 = isHtml5.enabled;
-        }
-        
-        var url = urlMatcher.format(params);
-        options = options || {};
-
-        if (!isHtml5 && url !== null) {
-          url = "#" + $locationProvider.hashPrefix() + url;
-        }
-
-        // Handle special hash param, if needed
-        if (url !== null && params && params['#']) {
-          url += '#' + params['#'];
-        }
-
-        url = appendBasePath(url, isHtml5, options.absolute);
-
-        if (!options.absolute || !url) {
-          return url;
-        }
-
-        var slash = (!isHtml5 && url ? '/' : ''), port = $location.port();
-        port = (port === 80 || port === 443 ? '' : ':' + port);
-
-        return [$location.protocol(), '://', $location.host(), port, slash, url].join('');
-      }
-    };
-  }
-}
-
-angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/view.js b/src/main/webapp/bower_components/angular-ui-router/src/view.js
deleted file mode 100644
index f19a3c56..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/view.js
+++ /dev/null
@@ -1,71 +0,0 @@
-
-$ViewProvider.$inject = [];
-function $ViewProvider() {
-
-  this.$get = $get;
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$view
-   *
-   * @requires ui.router.util.$templateFactory
-   * @requires $rootScope
-   *
-   * @description
-   *
-   */
-  $get.$inject = ['$rootScope', '$templateFactory'];
-  function $get(   $rootScope,   $templateFactory) {
-    return {
-      // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })
-      /**
-       * @ngdoc function
-       * @name ui.router.state.$view#load
-       * @methodOf ui.router.state.$view
-       *
-       * @description
-       *
-       * @param {string} name name
-       * @param {object} options option object.
-       */
-      load: function load(name, options) {
-        var result, defaults = {
-          template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}
-        };
-        options = extend(defaults, options);
-
-        if (options.view) {
-          result = $templateFactory.fromConfig(options.view, options.params, options.locals);
-        }
-        if (result && options.notify) {
-        /**
-         * @ngdoc event
-         * @name ui.router.state.$state#$viewContentLoading
-         * @eventOf ui.router.state.$view
-         * @eventType broadcast on root scope
-         * @description
-         *
-         * Fired once the view **begins loading**, *before* the DOM is rendered.
-         *
-         * @param {Object} event Event object.
-         * @param {Object} viewConfig The view config properties (template, controller, etc).
-         *
-         * @example
-         *
-         * <pre>
-         * $scope.$on('$viewContentLoading',
-         * function(event, viewConfig){
-         *     // Access to all the view config properties.
-         *     // and one special property 'targetView'
-         *     // viewConfig.targetView
-         * });
-         * </pre>
-         */
-          $rootScope.$broadcast('$viewContentLoading', options);
-        }
-        return result;
-      }
-    };
-  }
-}
-
-angular.module('ui.router.state').provider('$view', $ViewProvider);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/viewDirective.js b/src/main/webapp/bower_components/angular-ui-router/src/viewDirective.js
deleted file mode 100644
index b7022077..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/viewDirective.js
+++ /dev/null
@@ -1,303 +0,0 @@
-/**
- * @ngdoc directive
- * @name ui.router.state.directive:ui-view
- *
- * @requires ui.router.state.$state
- * @requires $compile
- * @requires $controller
- * @requires $injector
- * @requires ui.router.state.$uiViewScroll
- * @requires $document
- *
- * @restrict ECA
- *
- * @description
- * The ui-view directive tells $state where to place your templates.
- *
- * @param {string=} name A view name. The name should be unique amongst the other views in the
- * same state. You can have views of the same name that live in different states.
- *
- * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window
- * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll
- * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you
- * scroll ui-view elements into view when they are populated during a state activation.
- *
- * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)
- * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.*
- *
- * @param {string=} onload Expression to evaluate whenever the view updates.
- * 
- * @example
- * A view can be unnamed or named. 
- * <pre>
- * <!-- Unnamed -->
- * <div ui-view></div> 
- * 
- * <!-- Named -->
- * <div ui-view="viewName"></div>
- * </pre>
- *
- * You can only have one unnamed view within any template (or root html). If you are only using a 
- * single view and it is unnamed then you can populate it like so:
- * <pre>
- * <div ui-view></div> 
- * $stateProvider.state("home", {
- *   template: "<h1>HELLO!</h1>"
- * })
- * </pre>
- * 
- * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`}
- * config property, by name, in this case an empty name:
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "": {
- *       template: "<h1>HELLO!</h1>"
- *     }
- *   }    
- * })
- * </pre>
- * 
- * But typically you'll only use the views property if you name your view or have more than one view 
- * in the same template. There's not really a compelling reason to name a view if its the only one, 
- * but you could if you wanted, like so:
- * <pre>
- * <div ui-view="main"></div>
- * </pre> 
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "main": {
- *       template: "<h1>HELLO!</h1>"
- *     }
- *   }    
- * })
- * </pre>
- * 
- * Really though, you'll use views to set up multiple views:
- * <pre>
- * <div ui-view></div>
- * <div ui-view="chart"></div> 
- * <div ui-view="data"></div> 
- * </pre>
- * 
- * <pre>
- * $stateProvider.state("home", {
- *   views: {
- *     "": {
- *       template: "<h1>HELLO!</h1>"
- *     },
- *     "chart": {
- *       template: "<chart_thing/>"
- *     },
- *     "data": {
- *       template: "<data_thing/>"
- *     }
- *   }    
- * })
- * </pre>
- *
- * Examples for `autoscroll`:
- *
- * <pre>
- * <!-- If autoscroll present with no expression,
- *      then scroll ui-view into view -->
- * <ui-view autoscroll/>
- *
- * <!-- If autoscroll present with valid expression,
- *      then scroll ui-view into view if expression evaluates to true -->
- * <ui-view autoscroll='true'/>
- * <ui-view autoscroll='false'/>
- * <ui-view autoscroll='scopeVariable'/>
- * </pre>
- */
-$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate'];
-function $ViewDirective(   $state,   $injector,   $uiViewScroll,   $interpolate) {
-
-  function getService() {
-    return ($injector.has) ? function(service) {
-      return $injector.has(service) ? $injector.get(service) : null;
-    } : function(service) {
-      try {
-        return $injector.get(service);
-      } catch (e) {
-        return null;
-      }
-    };
-  }
-
-  var service = getService(),
-      $animator = service('$animator'),
-      $animate = service('$animate');
-
-  // Returns a set of DOM manipulation functions based on which Angular version
-  // it should use
-  function getRenderer(attrs, scope) {
-    var statics = function() {
-      return {
-        enter: function (element, target, cb) { target.after(element); cb(); },
-        leave: function (element, cb) { element.remove(); cb(); }
-      };
-    };
-
-    if ($animate) {
-      return {
-        enter: function(element, target, cb) {
-          var promise = $animate.enter(element, null, target, cb);
-          if (promise && promise.then) promise.then(cb);
-        },
-        leave: function(element, cb) {
-          var promise = $animate.leave(element, cb);
-          if (promise && promise.then) promise.then(cb);
-        }
-      };
-    }
-
-    if ($animator) {
-      var animate = $animator && $animator(scope, attrs);
-
-      return {
-        enter: function(element, target, cb) {animate.enter(element, null, target); cb(); },
-        leave: function(element, cb) { animate.leave(element); cb(); }
-      };
-    }
-
-    return statics();
-  }
-
-  var directive = {
-    restrict: 'ECA',
-    terminal: true,
-    priority: 400,
-    transclude: 'element',
-    compile: function (tElement, tAttrs, $transclude) {
-      return function (scope, $element, attrs) {
-        var previousEl, currentEl, currentScope, latestLocals,
-            onloadExp     = attrs.onload || '',
-            autoScrollExp = attrs.autoscroll,
-            renderer      = getRenderer(attrs, scope);
-
-        scope.$on('$stateChangeSuccess', function() {
-          updateView(false);
-        });
-        scope.$on('$viewContentLoading', function() {
-          updateView(false);
-        });
-
-        updateView(true);
-
-        function cleanupLastView() {
-          if (previousEl) {
-            previousEl.remove();
-            previousEl = null;
-          }
-
-          if (currentScope) {
-            currentScope.$destroy();
-            currentScope = null;
-          }
-
-          if (currentEl) {
-            renderer.leave(currentEl, function() {
-              previousEl = null;
-            });
-
-            previousEl = currentEl;
-            currentEl = null;
-          }
-        }
-
-        function updateView(firstTime) {
-          var newScope,
-              name            = getUiViewName(scope, attrs, $element, $interpolate),
-              previousLocals  = name && $state.$current && $state.$current.locals[name];
-
-          if (!firstTime && previousLocals === latestLocals) return; // nothing to do
-          newScope = scope.$new();
-          latestLocals = $state.$current.locals[name];
-
-          var clone = $transclude(newScope, function(clone) {
-            renderer.enter(clone, $element, function onUiViewEnter() {
-              if(currentScope) {
-                currentScope.$emit('$viewContentAnimationEnded');
-              }
-
-              if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {
-                $uiViewScroll(clone);
-              }
-            });
-            cleanupLastView();
-          });
-
-          currentEl = clone;
-          currentScope = newScope;
-          /**
-           * @ngdoc event
-           * @name ui.router.state.directive:ui-view#$viewContentLoaded
-           * @eventOf ui.router.state.directive:ui-view
-           * @eventType emits on ui-view directive scope
-           * @description           *
-           * Fired once the view is **loaded**, *after* the DOM is rendered.
-           *
-           * @param {Object} event Event object.
-           */
-          currentScope.$emit('$viewContentLoaded');
-          currentScope.$eval(onloadExp);
-        }
-      };
-    }
-  };
-
-  return directive;
-}
-
-$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate'];
-function $ViewDirectiveFill (  $compile,   $controller,   $state,   $interpolate) {
-  return {
-    restrict: 'ECA',
-    priority: -400,
-    compile: function (tElement) {
-      var initial = tElement.html();
-      return function (scope, $element, attrs) {
-        var current = $state.$current,
-            name = getUiViewName(scope, attrs, $element, $interpolate),
-            locals  = current && current.locals[name];
-
-        if (! locals) {
-          return;
-        }
-
-        $element.data('$uiView', { name: name, state: locals.$$state });
-        $element.html(locals.$template ? locals.$template : initial);
-
-        var link = $compile($element.contents());
-
-        if (locals.$$controller) {
-          locals.$scope = scope;
-          locals.$element = $element;
-          var controller = $controller(locals.$$controller, locals);
-          if (locals.$$controllerAs) {
-            scope[locals.$$controllerAs] = controller;
-          }
-          $element.data('$ngControllerController', controller);
-          $element.children().data('$ngControllerController', controller);
-        }
-
-        link(scope);
-      };
-    }
-  };
-}
-
-/**
- * Shared ui-view code for both directives:
- * Given scope, element, and its attributes, return the view's name
- */
-function getUiViewName(scope, attrs, element, $interpolate) {
-  var name = $interpolate(attrs.uiView || attrs.name || '')(scope);
-  var inherited = element.inheritedData('$uiView');
-  return name.indexOf('@') >= 0 ?  name :  (name + '@' + (inherited ? inherited.state.name : ''));
-}
-
-angular.module('ui.router.state').directive('uiView', $ViewDirective);
-angular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);
diff --git a/src/main/webapp/bower_components/angular-ui-router/src/viewScroll.js b/src/main/webapp/bower_components/angular-ui-router/src/viewScroll.js
deleted file mode 100644
index 81114e20..00000000
--- a/src/main/webapp/bower_components/angular-ui-router/src/viewScroll.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @ngdoc object
- * @name ui.router.state.$uiViewScrollProvider
- *
- * @description
- * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.
- */
-function $ViewScrollProvider() {
-
-  var useAnchorScroll = false;
-
-  /**
-   * @ngdoc function
-   * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll
-   * @methodOf ui.router.state.$uiViewScrollProvider
-   *
-   * @description
-   * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for
-   * scrolling based on the url anchor.
-   */
-  this.useAnchorScroll = function () {
-    useAnchorScroll = true;
-  };
-
-  /**
-   * @ngdoc object
-   * @name ui.router.state.$uiViewScroll
-   *
-   * @requires $anchorScroll
-   * @requires $timeout
-   *
-   * @description
-   * When called with a jqLite element, it scrolls the element into view (after a
-   * `$timeout` so the DOM has time to refresh).
-   *
-   * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,
-   * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.
-   */
-  this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {
-    if (useAnchorScroll) {
-      return $anchorScroll;
-    }
-
-    return function ($element) {
-      return $timeout(function () {
-        $element[0].scrollIntoView();
-      }, 0, false);
-    };
-  }];
-}
-
-angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);
diff --git a/src/main/webapp/bower_components/angular/.bower.json b/src/main/webapp/bower_components/angular/.bower.json
deleted file mode 100644
index dcc20183..00000000
--- a/src/main/webapp/bower_components/angular/.bower.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "angular",
-  "version": "1.3.11",
-  "main": "./angular.js",
-  "ignore": [],
-  "dependencies": {},
-  "homepage": "https://github.com/angular/bower-angular",
-  "_release": "1.3.11",
-  "_resolution": {
-    "type": "version",
-    "tag": "v1.3.11",
-    "commit": "701d482321d06884dc79eae9a7b71f3c0f6d7e30"
-  },
-  "_source": "git://github.com/angular/bower-angular.git",
-  "_target": "1.3.11",
-  "_originalSource": "angular"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular/README.md b/src/main/webapp/bower_components/angular/README.md
deleted file mode 100644
index 897fb7f0..00000000
--- a/src/main/webapp/bower_components/angular/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# packaged angular
-
-This repo is for distribution on `npm` and `bower`. The source for this module is in the
-[main AngularJS repo](https://github.com/angular/angular.js).
-Please file issues and pull requests against that repo.
-
-## Install
-
-You can install this package either with `npm` or with `bower`.
-
-### npm
-
-```shell
-npm install angular
-```
-
-Then add a `<script>` to your `index.html`:
-
-```html
-<script src="/node_modules/angular/angular.js"></script>
-```
-
-Note that this package is not in CommonJS format, so doing `require('angular')` will return `undefined`.
-If you're using [Browserify](https://github.com/substack/node-browserify), you can use
-[exposify](https://github.com/thlorenz/exposify) to have `require('angular')` return the `angular`
-global.
-
-### bower
-
-```shell
-bower install angular
-```
-
-Then add a `<script>` to your `index.html`:
-
-```html
-<script src="/bower_components/angular/angular.js"></script>
-```
-
-## Documentation
-
-Documentation is available on the
-[AngularJS docs site](http://docs.angularjs.org/).
-
-## License
-
-The MIT License
-
-Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/angular/angular-csp.css b/src/main/webapp/bower_components/angular/angular-csp.css
deleted file mode 100644
index 0ce9d864..00000000
--- a/src/main/webapp/bower_components/angular/angular-csp.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Include this file in your html if you are using the CSP mode. */
-
-@charset "UTF-8";
-
-[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
-.ng-cloak, .x-ng-cloak,
-.ng-hide:not(.ng-hide-animate) {
-  display: none !important;
-}
-
-ng\:form {
-  display: block;
-}
diff --git a/src/main/webapp/bower_components/angular/angular.js b/src/main/webapp/bower_components/angular/angular.js
deleted file mode 100644
index 01a5386e..00000000
--- a/src/main/webapp/bower_components/angular/angular.js
+++ /dev/null
@@ -1,26116 +0,0 @@
-/**
- * @license AngularJS v1.3.11
- * (c) 2010-2014 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, document, undefined) {'use strict';
-
-/**
- * @description
- *
- * This object provides a utility for producing rich Error messages within
- * Angular. It can be called as follows:
- *
- * var exampleMinErr = minErr('example');
- * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
- *
- * The above creates an instance of minErr in the example namespace. The
- * resulting error will have a namespaced error code of example.one.  The
- * resulting error will replace {0} with the value of foo, and {1} with the
- * value of bar. The object is not restricted in the number of arguments it can
- * take.
- *
- * If fewer arguments are specified than necessary for interpolation, the extra
- * interpolation markers will be preserved in the final string.
- *
- * Since data will be parsed statically during a build step, some restrictions
- * are applied with respect to how minErr instances are created and called.
- * Instances should have names of the form namespaceMinErr for a minErr created
- * using minErr('namespace') . Error codes, namespaces and template strings
- * should all be static strings, not variables or general expressions.
- *
- * @param {string} module The namespace to use for the new minErr instance.
- * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
- *   error from returned function, for cases when a particular type of error is useful.
- * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
- */
-
-function minErr(module, ErrorConstructor) {
-  ErrorConstructor = ErrorConstructor || Error;
-  return function() {
-    var code = arguments[0],
-      prefix = '[' + (module ? module + ':' : '') + code + '] ',
-      template = arguments[1],
-      templateArgs = arguments,
-
-      message, i;
-
-    message = prefix + template.replace(/\{\d+\}/g, function(match) {
-      var index = +match.slice(1, -1), arg;
-
-      if (index + 2 < templateArgs.length) {
-        return toDebugString(templateArgs[index + 2]);
-      }
-      return match;
-    });
-
-    message = message + '\nhttp://errors.angularjs.org/1.3.11/' +
-      (module ? module + '/' : '') + code;
-    for (i = 2; i < arguments.length; i++) {
-      message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
-        encodeURIComponent(toDebugString(arguments[i]));
-    }
-    return new ErrorConstructor(message);
-  };
-}
-
-/* We need to tell jshint what variables are being exported */
-/* global angular: true,
-  msie: true,
-  jqLite: true,
-  jQuery: true,
-  slice: true,
-  splice: true,
-  push: true,
-  toString: true,
-  ngMinErr: true,
-  angularModule: true,
-  uid: true,
-  REGEX_STRING_REGEXP: true,
-  VALIDITY_STATE_PROPERTY: true,
-
-  lowercase: true,
-  uppercase: true,
-  manualLowercase: true,
-  manualUppercase: true,
-  nodeName_: true,
-  isArrayLike: true,
-  forEach: true,
-  sortedKeys: true,
-  forEachSorted: true,
-  reverseParams: true,
-  nextUid: true,
-  setHashKey: true,
-  extend: true,
-  int: true,
-  inherit: true,
-  noop: true,
-  identity: true,
-  valueFn: true,
-  isUndefined: true,
-  isDefined: true,
-  isObject: true,
-  isString: true,
-  isNumber: true,
-  isDate: true,
-  isArray: true,
-  isFunction: true,
-  isRegExp: true,
-  isWindow: true,
-  isScope: true,
-  isFile: true,
-  isFormData: true,
-  isBlob: true,
-  isBoolean: true,
-  isPromiseLike: true,
-  trim: true,
-  escapeForRegexp: true,
-  isElement: true,
-  makeMap: true,
-  includes: true,
-  arrayRemove: true,
-  copy: true,
-  shallowCopy: true,
-  equals: true,
-  csp: true,
-  concat: true,
-  sliceArgs: true,
-  bind: true,
-  toJsonReplacer: true,
-  toJson: true,
-  fromJson: true,
-  startingTag: true,
-  tryDecodeURIComponent: true,
-  parseKeyValue: true,
-  toKeyValue: true,
-  encodeUriSegment: true,
-  encodeUriQuery: true,
-  angularInit: true,
-  bootstrap: true,
-  getTestability: true,
-  snake_case: true,
-  bindJQuery: true,
-  assertArg: true,
-  assertArgFn: true,
-  assertNotHasOwnProperty: true,
-  getter: true,
-  getBlockNodes: true,
-  hasOwnProperty: true,
-  createMap: true,
-
-  NODE_TYPE_ELEMENT: true,
-  NODE_TYPE_TEXT: true,
-  NODE_TYPE_COMMENT: true,
-  NODE_TYPE_DOCUMENT: true,
-  NODE_TYPE_DOCUMENT_FRAGMENT: true,
-*/
-
-////////////////////////////////////
-
-/**
- * @ngdoc module
- * @name ng
- * @module ng
- * @description
- *
- * # ng (core module)
- * The ng module is loaded by default when an AngularJS application is started. The module itself
- * contains the essential components for an AngularJS application to function. The table below
- * lists a high level breakdown of each of the services/factories, filters, directives and testing
- * components available within this core module.
- *
- * <div doc-module-components="ng"></div>
- */
-
-var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
-
-// The name of a form control's ValidityState property.
-// This is used so that it's possible for internal tests to create mock ValidityStates.
-var VALIDITY_STATE_PROPERTY = 'validity';
-
-/**
- * @ngdoc function
- * @name angular.lowercase
- * @module ng
- * @kind function
- *
- * @description Converts the specified string to lowercase.
- * @param {string} string String to be converted to lowercase.
- * @returns {string} Lowercased string.
- */
-var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-/**
- * @ngdoc function
- * @name angular.uppercase
- * @module ng
- * @kind function
- *
- * @description Converts the specified string to uppercase.
- * @param {string} string String to be converted to uppercase.
- * @returns {string} Uppercased string.
- */
-var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
-
-
-var manualLowercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
-      : s;
-};
-var manualUppercase = function(s) {
-  /* jshint bitwise: false */
-  return isString(s)
-      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
-      : s;
-};
-
-
-// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
-// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
-// with correct but slower alternatives.
-if ('i' !== 'I'.toLowerCase()) {
-  lowercase = manualLowercase;
-  uppercase = manualUppercase;
-}
-
-
-var
-    msie,             // holds major version number for IE, or NaN if UA is not IE.
-    jqLite,           // delay binding since jQuery could be loaded after us.
-    jQuery,           // delay binding
-    slice             = [].slice,
-    splice            = [].splice,
-    push              = [].push,
-    toString          = Object.prototype.toString,
-    ngMinErr          = minErr('ng'),
-
-    /** @name angular */
-    angular           = window.angular || (window.angular = {}),
-    angularModule,
-    uid               = 0;
-
-/**
- * documentMode is an IE-only property
- * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
- */
-msie = document.documentMode;
-
-
-/**
- * @private
- * @param {*} obj
- * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
- *                   String ...)
- */
-function isArrayLike(obj) {
-  if (obj == null || isWindow(obj)) {
-    return false;
-  }
-
-  var length = obj.length;
-
-  if (obj.nodeType === NODE_TYPE_ELEMENT && length) {
-    return true;
-  }
-
-  return isString(obj) || isArray(obj) || length === 0 ||
-         typeof length === 'number' && length > 0 && (length - 1) in obj;
-}
-
-/**
- * @ngdoc function
- * @name angular.forEach
- * @module ng
- * @kind function
- *
- * @description
- * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
- * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
- * is the value of an object property or an array element, `key` is the object property key or
- * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
- *
- * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
- * using the `hasOwnProperty` method.
- *
- * Unlike ES262's
- * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
- * Providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
- * return the value provided.
- *
-   ```js
-     var values = {name: 'misko', gender: 'male'};
-     var log = [];
-     angular.forEach(values, function(value, key) {
-       this.push(key + ': ' + value);
-     }, log);
-     expect(log).toEqual(['name: misko', 'gender: male']);
-   ```
- *
- * @param {Object|Array} obj Object to iterate over.
- * @param {Function} iterator Iterator function.
- * @param {Object=} context Object to become context (`this`) for the iterator function.
- * @returns {Object|Array} Reference to `obj`.
- */
-
-function forEach(obj, iterator, context) {
-  var key, length;
-  if (obj) {
-    if (isFunction(obj)) {
-      for (key in obj) {
-        // Need to check if hasOwnProperty exists,
-        // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
-        if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    } else if (isArray(obj) || isArrayLike(obj)) {
-      var isPrimitive = typeof obj !== 'object';
-      for (key = 0, length = obj.length; key < length; key++) {
-        if (isPrimitive || key in obj) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    } else if (obj.forEach && obj.forEach !== forEach) {
-        obj.forEach(iterator, context, obj);
-    } else {
-      for (key in obj) {
-        if (obj.hasOwnProperty(key)) {
-          iterator.call(context, obj[key], key, obj);
-        }
-      }
-    }
-  }
-  return obj;
-}
-
-function sortedKeys(obj) {
-  return Object.keys(obj).sort();
-}
-
-function forEachSorted(obj, iterator, context) {
-  var keys = sortedKeys(obj);
-  for (var i = 0; i < keys.length; i++) {
-    iterator.call(context, obj[keys[i]], keys[i]);
-  }
-  return keys;
-}
-
-
-/**
- * when using forEach the params are value, key, but it is often useful to have key, value.
- * @param {function(string, *)} iteratorFn
- * @returns {function(*, string)}
- */
-function reverseParams(iteratorFn) {
-  return function(value, key) { iteratorFn(key, value); };
-}
-
-/**
- * A consistent way of creating unique IDs in angular.
- *
- * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
- * we hit number precision issues in JavaScript.
- *
- * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
- *
- * @returns {number} an unique alpha-numeric string
- */
-function nextUid() {
-  return ++uid;
-}
-
-
-/**
- * Set or clear the hashkey for an object.
- * @param obj object
- * @param h the hashkey (!truthy to delete the hashkey)
- */
-function setHashKey(obj, h) {
-  if (h) {
-    obj.$$hashKey = h;
-  }
-  else {
-    delete obj.$$hashKey;
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.extend
- * @module ng
- * @kind function
- *
- * @description
- * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
- * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
- * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
- * Note: Keep in mind that `angular.extend` does not support recursive merge (deep copy).
- *
- * @param {Object} dst Destination object.
- * @param {...Object} src Source object(s).
- * @returns {Object} Reference to `dst`.
- */
-function extend(dst) {
-  var h = dst.$$hashKey;
-
-  for (var i = 1, ii = arguments.length; i < ii; i++) {
-    var obj = arguments[i];
-    if (obj) {
-      var keys = Object.keys(obj);
-      for (var j = 0, jj = keys.length; j < jj; j++) {
-        var key = keys[j];
-        dst[key] = obj[key];
-      }
-    }
-  }
-
-  setHashKey(dst, h);
-  return dst;
-}
-
-function int(str) {
-  return parseInt(str, 10);
-}
-
-
-function inherit(parent, extra) {
-  return extend(Object.create(parent), extra);
-}
-
-/**
- * @ngdoc function
- * @name angular.noop
- * @module ng
- * @kind function
- *
- * @description
- * A function that performs no operations. This function can be useful when writing code in the
- * functional style.
-   ```js
-     function foo(callback) {
-       var result = calculateResult();
-       (callback || angular.noop)(result);
-     }
-   ```
- */
-function noop() {}
-noop.$inject = [];
-
-
-/**
- * @ngdoc function
- * @name angular.identity
- * @module ng
- * @kind function
- *
- * @description
- * A function that returns its first argument. This function is useful when writing code in the
- * functional style.
- *
-   ```js
-     function transformer(transformationFn, value) {
-       return (transformationFn || angular.identity)(value);
-     };
-   ```
-  * @param {*} value to be returned.
-  * @returns {*} the value passed in.
- */
-function identity($) {return $;}
-identity.$inject = [];
-
-
-function valueFn(value) {return function() {return value;};}
-
-/**
- * @ngdoc function
- * @name angular.isUndefined
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is undefined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is undefined.
- */
-function isUndefined(value) {return typeof value === 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDefined
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is defined.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is defined.
- */
-function isDefined(value) {return typeof value !== 'undefined';}
-
-
-/**
- * @ngdoc function
- * @name angular.isObject
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
- * considered to be objects. Note that JavaScript arrays are objects.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Object` but not `null`.
- */
-function isObject(value) {
-  // http://jsperf.com/isobject4
-  return value !== null && typeof value === 'object';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isString
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `String`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `String`.
- */
-function isString(value) {return typeof value === 'string';}
-
-
-/**
- * @ngdoc function
- * @name angular.isNumber
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `Number`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Number`.
- */
-function isNumber(value) {return typeof value === 'number';}
-
-
-/**
- * @ngdoc function
- * @name angular.isDate
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a value is a date.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Date`.
- */
-function isDate(value) {
-  return toString.call(value) === '[object Date]';
-}
-
-
-/**
- * @ngdoc function
- * @name angular.isArray
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is an `Array`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is an `Array`.
- */
-var isArray = Array.isArray;
-
-/**
- * @ngdoc function
- * @name angular.isFunction
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a `Function`.
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `Function`.
- */
-function isFunction(value) {return typeof value === 'function';}
-
-
-/**
- * Determines if a value is a regular expression object.
- *
- * @private
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a `RegExp`.
- */
-function isRegExp(value) {
-  return toString.call(value) === '[object RegExp]';
-}
-
-
-/**
- * Checks if `obj` is a window object.
- *
- * @private
- * @param {*} obj Object to check
- * @returns {boolean} True if `obj` is a window obj.
- */
-function isWindow(obj) {
-  return obj && obj.window === obj;
-}
-
-
-function isScope(obj) {
-  return obj && obj.$evalAsync && obj.$watch;
-}
-
-
-function isFile(obj) {
-  return toString.call(obj) === '[object File]';
-}
-
-
-function isFormData(obj) {
-  return toString.call(obj) === '[object FormData]';
-}
-
-
-function isBlob(obj) {
-  return toString.call(obj) === '[object Blob]';
-}
-
-
-function isBoolean(value) {
-  return typeof value === 'boolean';
-}
-
-
-function isPromiseLike(obj) {
-  return obj && isFunction(obj.then);
-}
-
-
-var trim = function(value) {
-  return isString(value) ? value.trim() : value;
-};
-
-// Copied from:
-// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
-// Prereq: s is a string.
-var escapeForRegexp = function(s) {
-  return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
-           replace(/\x08/g, '\\x08');
-};
-
-
-/**
- * @ngdoc function
- * @name angular.isElement
- * @module ng
- * @kind function
- *
- * @description
- * Determines if a reference is a DOM element (or wrapped jQuery element).
- *
- * @param {*} value Reference to check.
- * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
- */
-function isElement(node) {
-  return !!(node &&
-    (node.nodeName  // we are a direct element
-    || (node.prop && node.attr && node.find)));  // we have an on and find method part of jQuery API
-}
-
-/**
- * @param str 'key1,key2,...'
- * @returns {object} in the form of {key1:true, key2:true, ...}
- */
-function makeMap(str) {
-  var obj = {}, items = str.split(","), i;
-  for (i = 0; i < items.length; i++)
-    obj[ items[i] ] = true;
-  return obj;
-}
-
-
-function nodeName_(element) {
-  return lowercase(element.nodeName || (element[0] && element[0].nodeName));
-}
-
-function includes(array, obj) {
-  return Array.prototype.indexOf.call(array, obj) != -1;
-}
-
-function arrayRemove(array, value) {
-  var index = array.indexOf(value);
-  if (index >= 0)
-    array.splice(index, 1);
-  return value;
-}
-
-/**
- * @ngdoc function
- * @name angular.copy
- * @module ng
- * @kind function
- *
- * @description
- * Creates a deep copy of `source`, which should be an object or an array.
- *
- * * If no destination is supplied, a copy of the object or array is created.
- * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
- *   are deleted and then all elements/properties from the source are copied to it.
- * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
- * * If `source` is identical to 'destination' an exception will be thrown.
- *
- * @param {*} source The source that will be used to make a copy.
- *                   Can be any type, including primitives, `null`, and `undefined`.
- * @param {(Object|Array)=} destination Destination into which the source is copied. If
- *     provided, must be of the same type as `source`.
- * @returns {*} The copy or updated `destination`, if `destination` was specified.
- *
- * @example
- <example module="copyExample">
- <file name="index.html">
- <div ng-controller="ExampleController">
- <form novalidate class="simple-form">
- Name: <input type="text" ng-model="user.name" /><br />
- E-mail: <input type="email" ng-model="user.email" /><br />
- Gender: <input type="radio" ng-model="user.gender" value="male" />male
- <input type="radio" ng-model="user.gender" value="female" />female<br />
- <button ng-click="reset()">RESET</button>
- <button ng-click="update(user)">SAVE</button>
- </form>
- <pre>form = {{user | json}}</pre>
- <pre>master = {{master | json}}</pre>
- </div>
-
- <script>
-  angular.module('copyExample', [])
-    .controller('ExampleController', ['$scope', function($scope) {
-      $scope.master= {};
-
-      $scope.update = function(user) {
-        // Example with 1 argument
-        $scope.master= angular.copy(user);
-      };
-
-      $scope.reset = function() {
-        // Example with 2 arguments
-        angular.copy($scope.master, $scope.user);
-      };
-
-      $scope.reset();
-    }]);
- </script>
- </file>
- </example>
- */
-function copy(source, destination, stackSource, stackDest) {
-  if (isWindow(source) || isScope(source)) {
-    throw ngMinErr('cpws',
-      "Can't copy! Making copies of Window or Scope instances is not supported.");
-  }
-
-  if (!destination) {
-    destination = source;
-    if (source) {
-      if (isArray(source)) {
-        destination = copy(source, [], stackSource, stackDest);
-      } else if (isDate(source)) {
-        destination = new Date(source.getTime());
-      } else if (isRegExp(source)) {
-        destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
-        destination.lastIndex = source.lastIndex;
-      } else if (isObject(source)) {
-        var emptyObject = Object.create(Object.getPrototypeOf(source));
-        destination = copy(source, emptyObject, stackSource, stackDest);
-      }
-    }
-  } else {
-    if (source === destination) throw ngMinErr('cpi',
-      "Can't copy! Source and destination are identical.");
-
-    stackSource = stackSource || [];
-    stackDest = stackDest || [];
-
-    if (isObject(source)) {
-      var index = stackSource.indexOf(source);
-      if (index !== -1) return stackDest[index];
-
-      stackSource.push(source);
-      stackDest.push(destination);
-    }
-
-    var result;
-    if (isArray(source)) {
-      destination.length = 0;
-      for (var i = 0; i < source.length; i++) {
-        result = copy(source[i], null, stackSource, stackDest);
-        if (isObject(source[i])) {
-          stackSource.push(source[i]);
-          stackDest.push(result);
-        }
-        destination.push(result);
-      }
-    } else {
-      var h = destination.$$hashKey;
-      if (isArray(destination)) {
-        destination.length = 0;
-      } else {
-        forEach(destination, function(value, key) {
-          delete destination[key];
-        });
-      }
-      for (var key in source) {
-        if (source.hasOwnProperty(key)) {
-          result = copy(source[key], null, stackSource, stackDest);
-          if (isObject(source[key])) {
-            stackSource.push(source[key]);
-            stackDest.push(result);
-          }
-          destination[key] = result;
-        }
-      }
-      setHashKey(destination,h);
-    }
-
-  }
-  return destination;
-}
-
-/**
- * Creates a shallow copy of an object, an array or a primitive.
- *
- * Assumes that there are no proto properties for objects.
- */
-function shallowCopy(src, dst) {
-  if (isArray(src)) {
-    dst = dst || [];
-
-    for (var i = 0, ii = src.length; i < ii; i++) {
-      dst[i] = src[i];
-    }
-  } else if (isObject(src)) {
-    dst = dst || {};
-
-    for (var key in src) {
-      if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-        dst[key] = src[key];
-      }
-    }
-  }
-
-  return dst || src;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.equals
- * @module ng
- * @kind function
- *
- * @description
- * Determines if two objects or two values are equivalent. Supports value types, regular
- * expressions, arrays and objects.
- *
- * Two objects or values are considered equivalent if at least one of the following is true:
- *
- * * Both objects or values pass `===` comparison.
- * * Both objects or values are of the same type and all of their properties are equal by
- *   comparing them with `angular.equals`.
- * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
- * * Both values represent the same regular expression (In JavaScript,
- *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
- *   representation matches).
- *
- * During a property comparison, properties of `function` type and properties with names
- * that begin with `$` are ignored.
- *
- * Scope and DOMWindow objects are being compared only by identify (`===`).
- *
- * @param {*} o1 Object or value to compare.
- * @param {*} o2 Object or value to compare.
- * @returns {boolean} True if arguments are equal.
- */
-function equals(o1, o2) {
-  if (o1 === o2) return true;
-  if (o1 === null || o2 === null) return false;
-  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
-  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
-  if (t1 == t2) {
-    if (t1 == 'object') {
-      if (isArray(o1)) {
-        if (!isArray(o2)) return false;
-        if ((length = o1.length) == o2.length) {
-          for (key = 0; key < length; key++) {
-            if (!equals(o1[key], o2[key])) return false;
-          }
-          return true;
-        }
-      } else if (isDate(o1)) {
-        if (!isDate(o2)) return false;
-        return equals(o1.getTime(), o2.getTime());
-      } else if (isRegExp(o1) && isRegExp(o2)) {
-        return o1.toString() == o2.toString();
-      } else {
-        if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
-        keySet = {};
-        for (key in o1) {
-          if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
-          if (!equals(o1[key], o2[key])) return false;
-          keySet[key] = true;
-        }
-        for (key in o2) {
-          if (!keySet.hasOwnProperty(key) &&
-              key.charAt(0) !== '$' &&
-              o2[key] !== undefined &&
-              !isFunction(o2[key])) return false;
-        }
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
-var csp = function() {
-  if (isDefined(csp.isActive_)) return csp.isActive_;
-
-  var active = !!(document.querySelector('[ng-csp]') ||
-                  document.querySelector('[data-ng-csp]'));
-
-  if (!active) {
-    try {
-      /* jshint -W031, -W054 */
-      new Function('');
-      /* jshint +W031, +W054 */
-    } catch (e) {
-      active = true;
-    }
-  }
-
-  return (csp.isActive_ = active);
-};
-
-
-
-function concat(array1, array2, index) {
-  return array1.concat(slice.call(array2, index));
-}
-
-function sliceArgs(args, startIndex) {
-  return slice.call(args, startIndex || 0);
-}
-
-
-/* jshint -W101 */
-/**
- * @ngdoc function
- * @name angular.bind
- * @module ng
- * @kind function
- *
- * @description
- * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
- * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
- * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
- * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
- *
- * @param {Object} self Context which `fn` should be evaluated in.
- * @param {function()} fn Function to be bound.
- * @param {...*} args Optional arguments to be prebound to the `fn` function call.
- * @returns {function()} Function that wraps the `fn` with all the specified bindings.
- */
-/* jshint +W101 */
-function bind(self, fn) {
-  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
-  if (isFunction(fn) && !(fn instanceof RegExp)) {
-    return curryArgs.length
-      ? function() {
-          return arguments.length
-            ? fn.apply(self, concat(curryArgs, arguments, 0))
-            : fn.apply(self, curryArgs);
-        }
-      : function() {
-          return arguments.length
-            ? fn.apply(self, arguments)
-            : fn.call(self);
-        };
-  } else {
-    // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
-    return fn;
-  }
-}
-
-
-function toJsonReplacer(key, value) {
-  var val = value;
-
-  if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
-    val = undefined;
-  } else if (isWindow(value)) {
-    val = '$WINDOW';
-  } else if (value &&  document === value) {
-    val = '$DOCUMENT';
-  } else if (isScope(value)) {
-    val = '$SCOPE';
-  }
-
-  return val;
-}
-
-
-/**
- * @ngdoc function
- * @name angular.toJson
- * @module ng
- * @kind function
- *
- * @description
- * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
- * stripped since angular uses this notation internally.
- *
- * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
- * @param {boolean|number=} pretty If set to true, the JSON output will contain newlines and whitespace.
- *    If set to an integer, the JSON output will contain that many spaces per indentation (the default is 2).
- * @returns {string|undefined} JSON-ified string representing `obj`.
- */
-function toJson(obj, pretty) {
-  if (typeof obj === 'undefined') return undefined;
-  if (!isNumber(pretty)) {
-    pretty = pretty ? 2 : null;
-  }
-  return JSON.stringify(obj, toJsonReplacer, pretty);
-}
-
-
-/**
- * @ngdoc function
- * @name angular.fromJson
- * @module ng
- * @kind function
- *
- * @description
- * Deserializes a JSON string.
- *
- * @param {string} json JSON string to deserialize.
- * @returns {Object|Array|string|number} Deserialized JSON string.
- */
-function fromJson(json) {
-  return isString(json)
-      ? JSON.parse(json)
-      : json;
-}
-
-
-/**
- * @returns {string} Returns the string representation of the element.
- */
-function startingTag(element) {
-  element = jqLite(element).clone();
-  try {
-    // turns out IE does not let you set .html() on elements which
-    // are not allowed to have children. So we just ignore it.
-    element.empty();
-  } catch (e) {}
-  var elemHtml = jqLite('<div>').append(element).html();
-  try {
-    return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
-        elemHtml.
-          match(/^(<[^>]+>)/)[1].
-          replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
-  } catch (e) {
-    return lowercase(elemHtml);
-  }
-
-}
-
-
-/////////////////////////////////////////////////
-
-/**
- * Tries to decode the URI component without throwing an exception.
- *
- * @private
- * @param str value potential URI component to check.
- * @returns {boolean} True if `value` can be decoded
- * with the decodeURIComponent function.
- */
-function tryDecodeURIComponent(value) {
-  try {
-    return decodeURIComponent(value);
-  } catch (e) {
-    // Ignore any invalid uri component
-  }
-}
-
-
-/**
- * Parses an escaped url query string into key-value pairs.
- * @returns {Object.<string,boolean|Array>}
- */
-function parseKeyValue(/**string*/keyValue) {
-  var obj = {}, key_value, key;
-  forEach((keyValue || "").split('&'), function(keyValue) {
-    if (keyValue) {
-      key_value = keyValue.replace(/\+/g,'%20').split('=');
-      key = tryDecodeURIComponent(key_value[0]);
-      if (isDefined(key)) {
-        var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
-        if (!hasOwnProperty.call(obj, key)) {
-          obj[key] = val;
-        } else if (isArray(obj[key])) {
-          obj[key].push(val);
-        } else {
-          obj[key] = [obj[key],val];
-        }
-      }
-    }
-  });
-  return obj;
-}
-
-function toKeyValue(obj) {
-  var parts = [];
-  forEach(obj, function(value, key) {
-    if (isArray(value)) {
-      forEach(value, function(arrayValue) {
-        parts.push(encodeUriQuery(key, true) +
-                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
-      });
-    } else {
-    parts.push(encodeUriQuery(key, true) +
-               (value === true ? '' : '=' + encodeUriQuery(value, true)));
-    }
-  });
-  return parts.length ? parts.join('&') : '';
-}
-
-
-/**
- * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
- * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
- * segments:
- *    segment       = *pchar
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriSegment(val) {
-  return encodeUriQuery(val, true).
-             replace(/%26/gi, '&').
-             replace(/%3D/gi, '=').
-             replace(/%2B/gi, '+');
-}
-
-
-/**
- * This method is intended for encoding *key* or *value* parts of query component. We need a custom
- * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
- * encoded per http://tools.ietf.org/html/rfc3986:
- *    query       = *( pchar / "/" / "?" )
- *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
- *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
- *    pct-encoded   = "%" HEXDIG HEXDIG
- *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
- *                     / "*" / "+" / "," / ";" / "="
- */
-function encodeUriQuery(val, pctEncodeSpaces) {
-  return encodeURIComponent(val).
-             replace(/%40/gi, '@').
-             replace(/%3A/gi, ':').
-             replace(/%24/g, '$').
-             replace(/%2C/gi, ',').
-             replace(/%3B/gi, ';').
-             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
-}
-
-var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
-
-function getNgAttribute(element, ngAttr) {
-  var attr, i, ii = ngAttrPrefixes.length;
-  element = jqLite(element);
-  for (i = 0; i < ii; ++i) {
-    attr = ngAttrPrefixes[i] + ngAttr;
-    if (isString(attr = element.attr(attr))) {
-      return attr;
-    }
-  }
-  return null;
-}
-
-/**
- * @ngdoc directive
- * @name ngApp
- * @module ng
- *
- * @element ANY
- * @param {angular.Module} ngApp an optional application
- *   {@link angular.module module} name to load.
- * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
- *   created in "strict-di" mode. This means that the application will fail to invoke functions which
- *   do not use explicit function annotation (and are thus unsuitable for minification), as described
- *   in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
- *   tracking down the root of these bugs.
- *
- * @description
- *
- * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
- * designates the **root element** of the application and is typically placed near the root element
- * of the page - e.g. on the `<body>` or `<html>` tags.
- *
- * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
- * found in the document will be used to define the root element to auto-bootstrap as an
- * application. To run multiple applications in an HTML document you must manually bootstrap them using
- * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
- *
- * You can specify an **AngularJS module** to be used as the root module for the application.  This
- * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
- * should contain the application code needed or have dependencies on other modules that will
- * contain the code. See {@link angular.module} for more information.
- *
- * In the example below if the `ngApp` directive were not placed on the `html` element then the
- * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
- * would not be resolved to `3`.
- *
- * `ngApp` is the easiest, and most common way to bootstrap an application.
- *
- <example module="ngAppDemo">
-   <file name="index.html">
-   <div ng-controller="ngAppDemoController">
-     I can add: {{a}} + {{b}} =  {{ a+b }}
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
-     $scope.a = 1;
-     $scope.b = 2;
-   });
-   </file>
- </example>
- *
- * Using `ngStrictDi`, you would see something like this:
- *
- <example ng-app-included="true">
-   <file name="index.html">
-   <div ng-app="ngAppStrictDemo" ng-strict-di>
-       <div ng-controller="GoodController1">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style (see
-              script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="GoodController2">
-           Name: <input ng-model="name"><br />
-           Hello, {{name}}!
-
-           <p>This renders because the controller does not fail to
-              instantiate, by using explicit annotation style
-              (see script.js for details)
-           </p>
-       </div>
-
-       <div ng-controller="BadController">
-           I can add: {{a}} + {{b}} =  {{ a+b }}
-
-           <p>The controller could not be instantiated, due to relying
-              on automatic function annotations (which are disabled in
-              strict mode). As such, the content of this section is not
-              interpolated, and there should be an error in your web console.
-           </p>
-       </div>
-   </div>
-   </file>
-   <file name="script.js">
-   angular.module('ngAppStrictDemo', [])
-     // BadController will fail to instantiate, due to relying on automatic function annotation,
-     // rather than an explicit annotation
-     .controller('BadController', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     })
-     // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
-     // due to using explicit annotations using the array style and $inject property, respectively.
-     .controller('GoodController1', ['$scope', function($scope) {
-       $scope.a = 1;
-       $scope.b = 2;
-     }])
-     .controller('GoodController2', GoodController2);
-     function GoodController2($scope) {
-       $scope.name = "World";
-     }
-     GoodController2.$inject = ['$scope'];
-   </file>
-   <file name="style.css">
-   div[ng-controller] {
-       margin-bottom: 1em;
-       -webkit-border-radius: 4px;
-       border-radius: 4px;
-       border: 1px solid;
-       padding: .5em;
-   }
-   div[ng-controller^=Good] {
-       border-color: #d6e9c6;
-       background-color: #dff0d8;
-       color: #3c763d;
-   }
-   div[ng-controller^=Bad] {
-       border-color: #ebccd1;
-       background-color: #f2dede;
-       color: #a94442;
-       margin-bottom: 0;
-   }
-   </file>
- </example>
- */
-function angularInit(element, bootstrap) {
-  var appElement,
-      module,
-      config = {};
-
-  // The element `element` has priority over any other element
-  forEach(ngAttrPrefixes, function(prefix) {
-    var name = prefix + 'app';
-
-    if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
-      appElement = element;
-      module = element.getAttribute(name);
-    }
-  });
-  forEach(ngAttrPrefixes, function(prefix) {
-    var name = prefix + 'app';
-    var candidate;
-
-    if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
-      appElement = candidate;
-      module = candidate.getAttribute(name);
-    }
-  });
-  if (appElement) {
-    config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
-    bootstrap(appElement, module ? [module] : [], config);
-  }
-}
-
-/**
- * @ngdoc function
- * @name angular.bootstrap
- * @module ng
- * @description
- * Use this function to manually start up angular application.
- *
- * See: {@link guide/bootstrap Bootstrap}
- *
- * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.
- * They must use {@link ng.directive:ngApp ngApp}.
- *
- * Angular will detect if it has been loaded into the browser more than once and only allow the
- * first loaded script to be bootstrapped and will report a warning to the browser console for
- * each of the subsequent scripts. This prevents strange results in applications, where otherwise
- * multiple instances of Angular try to work on the DOM.
- *
- * ```html
- * <!doctype html>
- * <html>
- * <body>
- * <div ng-controller="WelcomeController">
- *   {{greeting}}
- * </div>
- *
- * <script src="angular.js"></script>
- * <script>
- *   var app = angular.module('demo', [])
- *   .controller('WelcomeController', function($scope) {
- *       $scope.greeting = 'Welcome!';
- *   });
- *   angular.bootstrap(document, ['demo']);
- * </script>
- * </body>
- * </html>
- * ```
- *
- * @param {DOMElement} element DOM element which is the root of angular application.
- * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
- *     Each item in the array should be the name of a predefined module or a (DI annotated)
- *     function that will be invoked by the injector as a `config` block.
- *     See: {@link angular.module modules}
- * @param {Object=} config an object for defining configuration options for the application. The
- *     following keys are supported:
- *
- * * `strictDi` - disable automatic function annotation for the application. This is meant to
- *   assist in finding bugs which break minified code. Defaults to `false`.
- *
- * @returns {auto.$injector} Returns the newly created injector for this app.
- */
-function bootstrap(element, modules, config) {
-  if (!isObject(config)) config = {};
-  var defaultConfig = {
-    strictDi: false
-  };
-  config = extend(defaultConfig, config);
-  var doBootstrap = function() {
-    element = jqLite(element);
-
-    if (element.injector()) {
-      var tag = (element[0] === document) ? 'document' : startingTag(element);
-      //Encode angle brackets to prevent input from being sanitized to empty string #8683
-      throw ngMinErr(
-          'btstrpd',
-          "App Already Bootstrapped with this Element '{0}'",
-          tag.replace(/</,'&lt;').replace(/>/,'&gt;'));
-    }
-
-    modules = modules || [];
-    modules.unshift(['$provide', function($provide) {
-      $provide.value('$rootElement', element);
-    }]);
-
-    if (config.debugInfoEnabled) {
-      // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
-      modules.push(['$compileProvider', function($compileProvider) {
-        $compileProvider.debugInfoEnabled(true);
-      }]);
-    }
-
-    modules.unshift('ng');
-    var injector = createInjector(modules, config.strictDi);
-    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
-       function bootstrapApply(scope, element, compile, injector) {
-        scope.$apply(function() {
-          element.data('$injector', injector);
-          compile(element)(scope);
-        });
-      }]
-    );
-    return injector;
-  };
-
-  var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
-  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
-
-  if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
-    config.debugInfoEnabled = true;
-    window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
-  }
-
-  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
-    return doBootstrap();
-  }
-
-  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
-  angular.resumeBootstrap = function(extraModules) {
-    forEach(extraModules, function(module) {
-      modules.push(module);
-    });
-    doBootstrap();
-  };
-}
-
-/**
- * @ngdoc function
- * @name angular.reloadWithDebugInfo
- * @module ng
- * @description
- * Use this function to reload the current application with debug information turned on.
- * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
- *
- * See {@link ng.$compileProvider#debugInfoEnabled} for more.
- */
-function reloadWithDebugInfo() {
-  window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
-  window.location.reload();
-}
-
-/**
- * @name angular.getTestability
- * @module ng
- * @description
- * Get the testability service for the instance of Angular on the given
- * element.
- * @param {DOMElement} element DOM element which is the root of angular application.
- */
-function getTestability(rootElement) {
-  var injector = angular.element(rootElement).injector();
-  if (!injector) {
-    throw ngMinErr('test',
-      'no injector found for element argument to getTestability');
-  }
-  return injector.get('$$testability');
-}
-
-var SNAKE_CASE_REGEXP = /[A-Z]/g;
-function snake_case(name, separator) {
-  separator = separator || '_';
-  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
-    return (pos ? separator : '') + letter.toLowerCase();
-  });
-}
-
-var bindJQueryFired = false;
-var skipDestroyOnNextJQueryCleanData;
-function bindJQuery() {
-  var originalCleanData;
-
-  if (bindJQueryFired) {
-    return;
-  }
-
-  // bind to jQuery if present;
-  jQuery = window.jQuery;
-  // Use jQuery if it exists with proper functionality, otherwise default to us.
-  // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
-  // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
-  // versions. It will not work for sure with jQuery <1.7, though.
-  if (jQuery && jQuery.fn.on) {
-    jqLite = jQuery;
-    extend(jQuery.fn, {
-      scope: JQLitePrototype.scope,
-      isolateScope: JQLitePrototype.isolateScope,
-      controller: JQLitePrototype.controller,
-      injector: JQLitePrototype.injector,
-      inheritedData: JQLitePrototype.inheritedData
-    });
-
-    // All nodes removed from the DOM via various jQuery APIs like .remove()
-    // are passed through jQuery.cleanData. Monkey-patch this method to fire
-    // the $destroy event on all removed nodes.
-    originalCleanData = jQuery.cleanData;
-    jQuery.cleanData = function(elems) {
-      var events;
-      if (!skipDestroyOnNextJQueryCleanData) {
-        for (var i = 0, elem; (elem = elems[i]) != null; i++) {
-          events = jQuery._data(elem, "events");
-          if (events && events.$destroy) {
-            jQuery(elem).triggerHandler('$destroy');
-          }
-        }
-      } else {
-        skipDestroyOnNextJQueryCleanData = false;
-      }
-      originalCleanData(elems);
-    };
-  } else {
-    jqLite = JQLite;
-  }
-
-  angular.element = jqLite;
-
-  // Prevent double-proxying.
-  bindJQueryFired = true;
-}
-
-/**
- * throw error if the argument is falsy.
- */
-function assertArg(arg, name, reason) {
-  if (!arg) {
-    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
-  }
-  return arg;
-}
-
-function assertArgFn(arg, name, acceptArrayAnnotation) {
-  if (acceptArrayAnnotation && isArray(arg)) {
-      arg = arg[arg.length - 1];
-  }
-
-  assertArg(isFunction(arg), name, 'not a function, got ' +
-      (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
-  return arg;
-}
-
-/**
- * throw error if the name given is hasOwnProperty
- * @param  {String} name    the name to test
- * @param  {String} context the context in which the name is used, such as module or directive
- */
-function assertNotHasOwnProperty(name, context) {
-  if (name === 'hasOwnProperty') {
-    throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
-  }
-}
-
-/**
- * Return the value accessible from the object by path. Any undefined traversals are ignored
- * @param {Object} obj starting object
- * @param {String} path path to traverse
- * @param {boolean} [bindFnToScope=true]
- * @returns {Object} value as accessible by path
- */
-//TODO(misko): this function needs to be removed
-function getter(obj, path, bindFnToScope) {
-  if (!path) return obj;
-  var keys = path.split('.');
-  var key;
-  var lastInstance = obj;
-  var len = keys.length;
-
-  for (var i = 0; i < len; i++) {
-    key = keys[i];
-    if (obj) {
-      obj = (lastInstance = obj)[key];
-    }
-  }
-  if (!bindFnToScope && isFunction(obj)) {
-    return bind(lastInstance, obj);
-  }
-  return obj;
-}
-
-/**
- * Return the DOM siblings between the first and last node in the given array.
- * @param {Array} array like object
- * @returns {jqLite} jqLite collection containing the nodes
- */
-function getBlockNodes(nodes) {
-  // TODO(perf): just check if all items in `nodes` are siblings and if they are return the original
-  //             collection, otherwise update the original collection.
-  var node = nodes[0];
-  var endNode = nodes[nodes.length - 1];
-  var blockNodes = [node];
-
-  do {
-    node = node.nextSibling;
-    if (!node) break;
-    blockNodes.push(node);
-  } while (node !== endNode);
-
-  return jqLite(blockNodes);
-}
-
-
-/**
- * Creates a new object without a prototype. This object is useful for lookup without having to
- * guard against prototypically inherited properties via hasOwnProperty.
- *
- * Related micro-benchmarks:
- * - http://jsperf.com/object-create2
- * - http://jsperf.com/proto-map-lookup/2
- * - http://jsperf.com/for-in-vs-object-keys2
- *
- * @returns {Object}
- */
-function createMap() {
-  return Object.create(null);
-}
-
-var NODE_TYPE_ELEMENT = 1;
-var NODE_TYPE_TEXT = 3;
-var NODE_TYPE_COMMENT = 8;
-var NODE_TYPE_DOCUMENT = 9;
-var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
-
-/**
- * @ngdoc type
- * @name angular.Module
- * @module ng
- * @description
- *
- * Interface for configuring angular {@link angular.module modules}.
- */
-
-function setupModuleLoader(window) {
-
-  var $injectorMinErr = minErr('$injector');
-  var ngMinErr = minErr('ng');
-
-  function ensure(obj, name, factory) {
-    return obj[name] || (obj[name] = factory());
-  }
-
-  var angular = ensure(window, 'angular', Object);
-
-  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
-  angular.$$minErr = angular.$$minErr || minErr;
-
-  return ensure(angular, 'module', function() {
-    /** @type {Object.<string, angular.Module>} */
-    var modules = {};
-
-    /**
-     * @ngdoc function
-     * @name angular.module
-     * @module ng
-     * @description
-     *
-     * The `angular.module` is a global place for creating, registering and retrieving Angular
-     * modules.
-     * All modules (angular core or 3rd party) that should be available to an application must be
-     * registered using this mechanism.
-     *
-     * When passed two or more arguments, a new module is created.  If passed only one argument, an
-     * existing module (the name passed as the first argument to `module`) is retrieved.
-     *
-     *
-     * # Module
-     *
-     * A module is a collection of services, directives, controllers, filters, and configuration information.
-     * `angular.module` is used to configure the {@link auto.$injector $injector}.
-     *
-     * ```js
-     * // Create a new module
-     * var myModule = angular.module('myModule', []);
-     *
-     * // register a new service
-     * myModule.value('appName', 'MyCoolApp');
-     *
-     * // configure existing services inside initialization blocks.
-     * myModule.config(['$locationProvider', function($locationProvider) {
-     *   // Configure existing providers
-     *   $locationProvider.hashPrefix('!');
-     * }]);
-     * ```
-     *
-     * Then you can create an injector and load your modules like this:
-     *
-     * ```js
-     * var injector = angular.injector(['ng', 'myModule'])
-     * ```
-     *
-     * However it's more likely that you'll just use
-     * {@link ng.directive:ngApp ngApp} or
-     * {@link angular.bootstrap} to simplify this process for you.
-     *
-     * @param {!string} name The name of the module to create or retrieve.
-     * @param {!Array.<string>=} requires If specified then new module is being created. If
-     *        unspecified then the module is being retrieved for further configuration.
-     * @param {Function=} configFn Optional configuration function for the module. Same as
-     *        {@link angular.Module#config Module#config()}.
-     * @returns {module} new module with the {@link angular.Module} api.
-     */
-    return function module(name, requires, configFn) {
-      var assertNotHasOwnProperty = function(name, context) {
-        if (name === 'hasOwnProperty') {
-          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
-        }
-      };
-
-      assertNotHasOwnProperty(name, 'module');
-      if (requires && modules.hasOwnProperty(name)) {
-        modules[name] = null;
-      }
-      return ensure(modules, name, function() {
-        if (!requires) {
-          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
-             "the module name or forgot to load it. If registering a module ensure that you " +
-             "specify the dependencies as the second argument.", name);
-        }
-
-        /** @type {!Array.<Array.<*>>} */
-        var invokeQueue = [];
-
-        /** @type {!Array.<Function>} */
-        var configBlocks = [];
-
-        /** @type {!Array.<Function>} */
-        var runBlocks = [];
-
-        var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
-
-        /** @type {angular.Module} */
-        var moduleInstance = {
-          // Private state
-          _invokeQueue: invokeQueue,
-          _configBlocks: configBlocks,
-          _runBlocks: runBlocks,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#requires
-           * @module ng
-           *
-           * @description
-           * Holds the list of modules which the injector will load before the current module is
-           * loaded.
-           */
-          requires: requires,
-
-          /**
-           * @ngdoc property
-           * @name angular.Module#name
-           * @module ng
-           *
-           * @description
-           * Name of the module.
-           */
-          name: name,
-
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#provider
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerType Construction function for creating new instance of the
-           *                                service.
-           * @description
-           * See {@link auto.$provide#provider $provide.provider()}.
-           */
-          provider: invokeLater('$provide', 'provider'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#factory
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} providerFunction Function for creating new instance of the service.
-           * @description
-           * See {@link auto.$provide#factory $provide.factory()}.
-           */
-          factory: invokeLater('$provide', 'factory'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#service
-           * @module ng
-           * @param {string} name service name
-           * @param {Function} constructor A constructor function that will be instantiated.
-           * @description
-           * See {@link auto.$provide#service $provide.service()}.
-           */
-          service: invokeLater('$provide', 'service'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#value
-           * @module ng
-           * @param {string} name service name
-           * @param {*} object Service instance object.
-           * @description
-           * See {@link auto.$provide#value $provide.value()}.
-           */
-          value: invokeLater('$provide', 'value'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#constant
-           * @module ng
-           * @param {string} name constant name
-           * @param {*} object Constant value.
-           * @description
-           * Because the constant are fixed, they get applied before other provide methods.
-           * See {@link auto.$provide#constant $provide.constant()}.
-           */
-          constant: invokeLater('$provide', 'constant', 'unshift'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#animation
-           * @module ng
-           * @param {string} name animation name
-           * @param {Function} animationFactory Factory function for creating new instance of an
-           *                                    animation.
-           * @description
-           *
-           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
-           *
-           *
-           * Defines an animation hook that can be later used with
-           * {@link ngAnimate.$animate $animate} service and directives that use this service.
-           *
-           * ```js
-           * module.animation('.animation-name', function($inject1, $inject2) {
-           *   return {
-           *     eventName : function(element, done) {
-           *       //code to run the animation
-           *       //once complete, then run done()
-           *       return function cancellationFunction(element) {
-           *         //code to cancel the animation
-           *       }
-           *     }
-           *   }
-           * })
-           * ```
-           *
-           * See {@link ng.$animateProvider#register $animateProvider.register()} and
-           * {@link ngAnimate ngAnimate module} for more information.
-           */
-          animation: invokeLater('$animateProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#filter
-           * @module ng
-           * @param {string} name Filter name.
-           * @param {Function} filterFactory Factory function for creating new instance of filter.
-           * @description
-           * See {@link ng.$filterProvider#register $filterProvider.register()}.
-           */
-          filter: invokeLater('$filterProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#controller
-           * @module ng
-           * @param {string|Object} name Controller name, or an object map of controllers where the
-           *    keys are the names and the values are the constructors.
-           * @param {Function} constructor Controller constructor function.
-           * @description
-           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
-           */
-          controller: invokeLater('$controllerProvider', 'register'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#directive
-           * @module ng
-           * @param {string|Object} name Directive name, or an object map of directives where the
-           *    keys are the names and the values are the factories.
-           * @param {Function} directiveFactory Factory function for creating new instance of
-           * directives.
-           * @description
-           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
-           */
-          directive: invokeLater('$compileProvider', 'directive'),
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#config
-           * @module ng
-           * @param {Function} configFn Execute this function on module load. Useful for service
-           *    configuration.
-           * @description
-           * Use this method to register work which needs to be performed on module loading.
-           * For more about how to configure services, see
-           * {@link providers#provider-recipe Provider Recipe}.
-           */
-          config: config,
-
-          /**
-           * @ngdoc method
-           * @name angular.Module#run
-           * @module ng
-           * @param {Function} initializationFn Execute this function after injector creation.
-           *    Useful for application initialization.
-           * @description
-           * Use this method to register work which should be performed when the injector is done
-           * loading all modules.
-           */
-          run: function(block) {
-            runBlocks.push(block);
-            return this;
-          }
-        };
-
-        if (configFn) {
-          config(configFn);
-        }
-
-        return moduleInstance;
-
-        /**
-         * @param {string} provider
-         * @param {string} method
-         * @param {String=} insertMethod
-         * @returns {angular.Module}
-         */
-        function invokeLater(provider, method, insertMethod, queue) {
-          if (!queue) queue = invokeQueue;
-          return function() {
-            queue[insertMethod || 'push']([provider, method, arguments]);
-            return moduleInstance;
-          };
-        }
-      });
-    };
-  });
-
-}
-
-/* global: toDebugString: true */
-
-function serializeObject(obj) {
-  var seen = [];
-
-  return JSON.stringify(obj, function(key, val) {
-    val = toJsonReplacer(key, val);
-    if (isObject(val)) {
-
-      if (seen.indexOf(val) >= 0) return '<<already seen>>';
-
-      seen.push(val);
-    }
-    return val;
-  });
-}
-
-function toDebugString(obj) {
-  if (typeof obj === 'function') {
-    return obj.toString().replace(/ \{[\s\S]*$/, '');
-  } else if (typeof obj === 'undefined') {
-    return 'undefined';
-  } else if (typeof obj !== 'string') {
-    return serializeObject(obj);
-  }
-  return obj;
-}
-
-/* global angularModule: true,
-  version: true,
-
-  $LocaleProvider,
-  $CompileProvider,
-
-  htmlAnchorDirective,
-  inputDirective,
-  inputDirective,
-  formDirective,
-  scriptDirective,
-  selectDirective,
-  styleDirective,
-  optionDirective,
-  ngBindDirective,
-  ngBindHtmlDirective,
-  ngBindTemplateDirective,
-  ngClassDirective,
-  ngClassEvenDirective,
-  ngClassOddDirective,
-  ngCspDirective,
-  ngCloakDirective,
-  ngControllerDirective,
-  ngFormDirective,
-  ngHideDirective,
-  ngIfDirective,
-  ngIncludeDirective,
-  ngIncludeFillContentDirective,
-  ngInitDirective,
-  ngNonBindableDirective,
-  ngPluralizeDirective,
-  ngRepeatDirective,
-  ngShowDirective,
-  ngStyleDirective,
-  ngSwitchDirective,
-  ngSwitchWhenDirective,
-  ngSwitchDefaultDirective,
-  ngOptionsDirective,
-  ngTranscludeDirective,
-  ngModelDirective,
-  ngListDirective,
-  ngChangeDirective,
-  patternDirective,
-  patternDirective,
-  requiredDirective,
-  requiredDirective,
-  minlengthDirective,
-  minlengthDirective,
-  maxlengthDirective,
-  maxlengthDirective,
-  ngValueDirective,
-  ngModelOptionsDirective,
-  ngAttributeAliasDirectives,
-  ngEventDirectives,
-
-  $AnchorScrollProvider,
-  $AnimateProvider,
-  $BrowserProvider,
-  $CacheFactoryProvider,
-  $ControllerProvider,
-  $DocumentProvider,
-  $ExceptionHandlerProvider,
-  $FilterProvider,
-  $InterpolateProvider,
-  $IntervalProvider,
-  $HttpProvider,
-  $HttpBackendProvider,
-  $LocationProvider,
-  $LogProvider,
-  $ParseProvider,
-  $RootScopeProvider,
-  $QProvider,
-  $$QProvider,
-  $$SanitizeUriProvider,
-  $SceProvider,
-  $SceDelegateProvider,
-  $SnifferProvider,
-  $TemplateCacheProvider,
-  $TemplateRequestProvider,
-  $$TestabilityProvider,
-  $TimeoutProvider,
-  $$RAFProvider,
-  $$AsyncCallbackProvider,
-  $WindowProvider,
-  $$jqLiteProvider
-*/
-
-
-/**
- * @ngdoc object
- * @name angular.version
- * @module ng
- * @description
- * An object that contains information about the current AngularJS version. This object has the
- * following properties:
- *
- * - `full` – `{string}` – Full version string, such as "0.9.18".
- * - `major` – `{number}` – Major version number, such as "0".
- * - `minor` – `{number}` – Minor version number, such as "9".
- * - `dot` – `{number}` – Dot version number, such as "18".
- * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
- */
-var version = {
-  full: '1.3.11',    // all of these placeholder strings will be replaced by grunt's
-  major: 1,    // package task
-  minor: 3,
-  dot: 11,
-  codeName: 'spiffy-manatee'
-};
-
-
-function publishExternalAPI(angular) {
-  extend(angular, {
-    'bootstrap': bootstrap,
-    'copy': copy,
-    'extend': extend,
-    'equals': equals,
-    'element': jqLite,
-    'forEach': forEach,
-    'injector': createInjector,
-    'noop': noop,
-    'bind': bind,
-    'toJson': toJson,
-    'fromJson': fromJson,
-    'identity': identity,
-    'isUndefined': isUndefined,
-    'isDefined': isDefined,
-    'isString': isString,
-    'isFunction': isFunction,
-    'isObject': isObject,
-    'isNumber': isNumber,
-    'isElement': isElement,
-    'isArray': isArray,
-    'version': version,
-    'isDate': isDate,
-    'lowercase': lowercase,
-    'uppercase': uppercase,
-    'callbacks': {counter: 0},
-    'getTestability': getTestability,
-    '$$minErr': minErr,
-    '$$csp': csp,
-    'reloadWithDebugInfo': reloadWithDebugInfo
-  });
-
-  angularModule = setupModuleLoader(window);
-  try {
-    angularModule('ngLocale');
-  } catch (e) {
-    angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
-  }
-
-  angularModule('ng', ['ngLocale'], ['$provide',
-    function ngModule($provide) {
-      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
-      $provide.provider({
-        $$sanitizeUri: $$SanitizeUriProvider
-      });
-      $provide.provider('$compile', $CompileProvider).
-        directive({
-            a: htmlAnchorDirective,
-            input: inputDirective,
-            textarea: inputDirective,
-            form: formDirective,
-            script: scriptDirective,
-            select: selectDirective,
-            style: styleDirective,
-            option: optionDirective,
-            ngBind: ngBindDirective,
-            ngBindHtml: ngBindHtmlDirective,
-            ngBindTemplate: ngBindTemplateDirective,
-            ngClass: ngClassDirective,
-            ngClassEven: ngClassEvenDirective,
-            ngClassOdd: ngClassOddDirective,
-            ngCloak: ngCloakDirective,
-            ngController: ngControllerDirective,
-            ngForm: ngFormDirective,
-            ngHide: ngHideDirective,
-            ngIf: ngIfDirective,
-            ngInclude: ngIncludeDirective,
-            ngInit: ngInitDirective,
-            ngNonBindable: ngNonBindableDirective,
-            ngPluralize: ngPluralizeDirective,
-            ngRepeat: ngRepeatDirective,
-            ngShow: ngShowDirective,
-            ngStyle: ngStyleDirective,
-            ngSwitch: ngSwitchDirective,
-            ngSwitchWhen: ngSwitchWhenDirective,
-            ngSwitchDefault: ngSwitchDefaultDirective,
-            ngOptions: ngOptionsDirective,
-            ngTransclude: ngTranscludeDirective,
-            ngModel: ngModelDirective,
-            ngList: ngListDirective,
-            ngChange: ngChangeDirective,
-            pattern: patternDirective,
-            ngPattern: patternDirective,
-            required: requiredDirective,
-            ngRequired: requiredDirective,
-            minlength: minlengthDirective,
-            ngMinlength: minlengthDirective,
-            maxlength: maxlengthDirective,
-            ngMaxlength: maxlengthDirective,
-            ngValue: ngValueDirective,
-            ngModelOptions: ngModelOptionsDirective
-        }).
-        directive({
-          ngInclude: ngIncludeFillContentDirective
-        }).
-        directive(ngAttributeAliasDirectives).
-        directive(ngEventDirectives);
-      $provide.provider({
-        $anchorScroll: $AnchorScrollProvider,
-        $animate: $AnimateProvider,
-        $browser: $BrowserProvider,
-        $cacheFactory: $CacheFactoryProvider,
-        $controller: $ControllerProvider,
-        $document: $DocumentProvider,
-        $exceptionHandler: $ExceptionHandlerProvider,
-        $filter: $FilterProvider,
-        $interpolate: $InterpolateProvider,
-        $interval: $IntervalProvider,
-        $http: $HttpProvider,
-        $httpBackend: $HttpBackendProvider,
-        $location: $LocationProvider,
-        $log: $LogProvider,
-        $parse: $ParseProvider,
-        $rootScope: $RootScopeProvider,
-        $q: $QProvider,
-        $$q: $$QProvider,
-        $sce: $SceProvider,
-        $sceDelegate: $SceDelegateProvider,
-        $sniffer: $SnifferProvider,
-        $templateCache: $TemplateCacheProvider,
-        $templateRequest: $TemplateRequestProvider,
-        $$testability: $$TestabilityProvider,
-        $timeout: $TimeoutProvider,
-        $window: $WindowProvider,
-        $$rAF: $$RAFProvider,
-        $$asyncCallback: $$AsyncCallbackProvider,
-        $$jqLite: $$jqLiteProvider
-      });
-    }
-  ]);
-}
-
-/* global JQLitePrototype: true,
-  addEventListenerFn: true,
-  removeEventListenerFn: true,
-  BOOLEAN_ATTR: true,
-  ALIASED_ATTR: true,
-*/
-
-//////////////////////////////////
-//JQLite
-//////////////////////////////////
-
-/**
- * @ngdoc function
- * @name angular.element
- * @module ng
- * @kind function
- *
- * @description
- * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
- *
- * If jQuery is available, `angular.element` is an alias for the
- * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
- * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."
- *
- * <div class="alert alert-success">jqLite is a tiny, API-compatible subset of jQuery that allows
- * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most
- * commonly needed functionality with the goal of having a very small footprint.</div>
- *
- * To use jQuery, simply load it before `DOMContentLoaded` event fired.
- *
- * <div class="alert">**Note:** all element references in Angular are always wrapped with jQuery or
- * jqLite; they are never raw DOM references.</div>
- *
- * ## Angular's jqLite
- * jqLite provides only the following jQuery methods:
- *
- * - [`addClass()`](http://api.jquery.com/addClass/)
- * - [`after()`](http://api.jquery.com/after/)
- * - [`append()`](http://api.jquery.com/append/)
- * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
- * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
- * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
- * - [`clone()`](http://api.jquery.com/clone/)
- * - [`contents()`](http://api.jquery.com/contents/)
- * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`
- * - [`data()`](http://api.jquery.com/data/)
- * - [`detach()`](http://api.jquery.com/detach/)
- * - [`empty()`](http://api.jquery.com/empty/)
- * - [`eq()`](http://api.jquery.com/eq/)
- * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
- * - [`hasClass()`](http://api.jquery.com/hasClass/)
- * - [`html()`](http://api.jquery.com/html/)
- * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
- * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
- * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors
- * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
- * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
- * - [`prepend()`](http://api.jquery.com/prepend/)
- * - [`prop()`](http://api.jquery.com/prop/)
- * - [`ready()`](http://api.jquery.com/ready/)
- * - [`remove()`](http://api.jquery.com/remove/)
- * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
- * - [`removeClass()`](http://api.jquery.com/removeClass/)
- * - [`removeData()`](http://api.jquery.com/removeData/)
- * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
- * - [`text()`](http://api.jquery.com/text/)
- * - [`toggleClass()`](http://api.jquery.com/toggleClass/)
- * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
- * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
- * - [`val()`](http://api.jquery.com/val/)
- * - [`wrap()`](http://api.jquery.com/wrap/)
- *
- * ## jQuery/jqLite Extras
- * Angular also provides the following additional methods and events to both jQuery and jqLite:
- *
- * ### Events
- * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
- *    on all DOM nodes being removed.  This can be used to clean up any 3rd party bindings to the DOM
- *    element before it is removed.
- *
- * ### Methods
- * - `controller(name)` - retrieves the controller of the current element or its parent. By default
- *   retrieves controller associated with the `ngController` directive. If `name` is provided as
- *   camelCase directive name, then the controller for this directive will be retrieved (e.g.
- *   `'ngModel'`).
- * - `injector()` - retrieves the injector of the current element or its parent.
- * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
- *   element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
- *   be enabled.
- * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
- *   current element. This getter should be used only on elements that contain a directive which starts a new isolate
- *   scope. Calling `scope()` on this element always returns the original non-isolate scope.
- *   Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
- * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
- *   parent element is reached.
- *
- * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
- * @returns {Object} jQuery object.
- */
-
-JQLite.expando = 'ng339';
-
-var jqCache = JQLite.cache = {},
-    jqId = 1,
-    addEventListenerFn = function(element, type, fn) {
-      element.addEventListener(type, fn, false);
-    },
-    removeEventListenerFn = function(element, type, fn) {
-      element.removeEventListener(type, fn, false);
-    };
-
-/*
- * !!! This is an undocumented "private" function !!!
- */
-JQLite._data = function(node) {
-  //jQuery always returns an object on cache miss
-  return this.cache[node[this.expando]] || {};
-};
-
-function jqNextId() { return ++jqId; }
-
-
-var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
-var MOZ_HACK_REGEXP = /^moz([A-Z])/;
-var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"};
-var jqLiteMinErr = minErr('jqLite');
-
-/**
- * Converts snake_case to camelCase.
- * Also there is special case for Moz prefix starting with upper case letter.
- * @param name Name to normalize
- */
-function camelCase(name) {
-  return name.
-    replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
-      return offset ? letter.toUpperCase() : letter;
-    }).
-    replace(MOZ_HACK_REGEXP, 'Moz$1');
-}
-
-var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
-var HTML_REGEXP = /<|&#?\w+;/;
-var TAG_NAME_REGEXP = /<([\w:]+)/;
-var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
-
-var wrapMap = {
-  'option': [1, '<select multiple="multiple">', '</select>'],
-
-  'thead': [1, '<table>', '</table>'],
-  'col': [2, '<table><colgroup>', '</colgroup></table>'],
-  'tr': [2, '<table><tbody>', '</tbody></table>'],
-  'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
-  '_default': [0, "", ""]
-};
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-
-function jqLiteIsTextNode(html) {
-  return !HTML_REGEXP.test(html);
-}
-
-function jqLiteAcceptsData(node) {
-  // The window object can accept data but has no nodeType
-  // Otherwise we are only interested in elements (1) and documents (9)
-  var nodeType = node.nodeType;
-  return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
-}
-
-function jqLiteBuildFragment(html, context) {
-  var tmp, tag, wrap,
-      fragment = context.createDocumentFragment(),
-      nodes = [], i;
-
-  if (jqLiteIsTextNode(html)) {
-    // Convert non-html into a text node
-    nodes.push(context.createTextNode(html));
-  } else {
-    // Convert html into DOM nodes
-    tmp = tmp || fragment.appendChild(context.createElement("div"));
-    tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
-    wrap = wrapMap[tag] || wrapMap._default;
-    tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
-
-    // Descend through wrappers to the right content
-    i = wrap[0];
-    while (i--) {
-      tmp = tmp.lastChild;
-    }
-
-    nodes = concat(nodes, tmp.childNodes);
-
-    tmp = fragment.firstChild;
-    tmp.textContent = "";
-  }
-
-  // Remove wrapper from fragment
-  fragment.textContent = "";
-  fragment.innerHTML = ""; // Clear inner HTML
-  forEach(nodes, function(node) {
-    fragment.appendChild(node);
-  });
-
-  return fragment;
-}
-
-function jqLiteParseHTML(html, context) {
-  context = context || document;
-  var parsed;
-
-  if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
-    return [context.createElement(parsed[1])];
-  }
-
-  if ((parsed = jqLiteBuildFragment(html, context))) {
-    return parsed.childNodes;
-  }
-
-  return [];
-}
-
-/////////////////////////////////////////////
-function JQLite(element) {
-  if (element instanceof JQLite) {
-    return element;
-  }
-
-  var argIsString;
-
-  if (isString(element)) {
-    element = trim(element);
-    argIsString = true;
-  }
-  if (!(this instanceof JQLite)) {
-    if (argIsString && element.charAt(0) != '<') {
-      throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
-    }
-    return new JQLite(element);
-  }
-
-  if (argIsString) {
-    jqLiteAddNodes(this, jqLiteParseHTML(element));
-  } else {
-    jqLiteAddNodes(this, element);
-  }
-}
-
-function jqLiteClone(element) {
-  return element.cloneNode(true);
-}
-
-function jqLiteDealoc(element, onlyDescendants) {
-  if (!onlyDescendants) jqLiteRemoveData(element);
-
-  if (element.querySelectorAll) {
-    var descendants = element.querySelectorAll('*');
-    for (var i = 0, l = descendants.length; i < l; i++) {
-      jqLiteRemoveData(descendants[i]);
-    }
-  }
-}
-
-function jqLiteOff(element, type, fn, unsupported) {
-  if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
-
-  var expandoStore = jqLiteExpandoStore(element);
-  var events = expandoStore && expandoStore.events;
-  var handle = expandoStore && expandoStore.handle;
-
-  if (!handle) return; //no listeners registered
-
-  if (!type) {
-    for (type in events) {
-      if (type !== '$destroy') {
-        removeEventListenerFn(element, type, handle);
-      }
-      delete events[type];
-    }
-  } else {
-    forEach(type.split(' '), function(type) {
-      if (isDefined(fn)) {
-        var listenerFns = events[type];
-        arrayRemove(listenerFns || [], fn);
-        if (listenerFns && listenerFns.length > 0) {
-          return;
-        }
-      }
-
-      removeEventListenerFn(element, type, handle);
-      delete events[type];
-    });
-  }
-}
-
-function jqLiteRemoveData(element, name) {
-  var expandoId = element.ng339;
-  var expandoStore = expandoId && jqCache[expandoId];
-
-  if (expandoStore) {
-    if (name) {
-      delete expandoStore.data[name];
-      return;
-    }
-
-    if (expandoStore.handle) {
-      if (expandoStore.events.$destroy) {
-        expandoStore.handle({}, '$destroy');
-      }
-      jqLiteOff(element);
-    }
-    delete jqCache[expandoId];
-    element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
-  }
-}
-
-
-function jqLiteExpandoStore(element, createIfNecessary) {
-  var expandoId = element.ng339,
-      expandoStore = expandoId && jqCache[expandoId];
-
-  if (createIfNecessary && !expandoStore) {
-    element.ng339 = expandoId = jqNextId();
-    expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};
-  }
-
-  return expandoStore;
-}
-
-
-function jqLiteData(element, key, value) {
-  if (jqLiteAcceptsData(element)) {
-
-    var isSimpleSetter = isDefined(value);
-    var isSimpleGetter = !isSimpleSetter && key && !isObject(key);
-    var massGetter = !key;
-    var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
-    var data = expandoStore && expandoStore.data;
-
-    if (isSimpleSetter) { // data('key', value)
-      data[key] = value;
-    } else {
-      if (massGetter) {  // data()
-        return data;
-      } else {
-        if (isSimpleGetter) { // data('key')
-          // don't force creation of expandoStore if it doesn't exist yet
-          return data && data[key];
-        } else { // mass-setter: data({key1: val1, key2: val2})
-          extend(data, key);
-        }
-      }
-    }
-  }
-}
-
-function jqLiteHasClass(element, selector) {
-  if (!element.getAttribute) return false;
-  return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
-      indexOf(" " + selector + " ") > -1);
-}
-
-function jqLiteRemoveClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    forEach(cssClasses.split(' '), function(cssClass) {
-      element.setAttribute('class', trim(
-          (" " + (element.getAttribute('class') || '') + " ")
-          .replace(/[\n\t]/g, " ")
-          .replace(" " + trim(cssClass) + " ", " "))
-      );
-    });
-  }
-}
-
-function jqLiteAddClass(element, cssClasses) {
-  if (cssClasses && element.setAttribute) {
-    var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
-                            .replace(/[\n\t]/g, " ");
-
-    forEach(cssClasses.split(' '), function(cssClass) {
-      cssClass = trim(cssClass);
-      if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
-        existingClasses += cssClass + ' ';
-      }
-    });
-
-    element.setAttribute('class', trim(existingClasses));
-  }
-}
-
-
-function jqLiteAddNodes(root, elements) {
-  // THIS CODE IS VERY HOT. Don't make changes without benchmarking.
-
-  if (elements) {
-
-    // if a Node (the most common case)
-    if (elements.nodeType) {
-      root[root.length++] = elements;
-    } else {
-      var length = elements.length;
-
-      // if an Array or NodeList and not a Window
-      if (typeof length === 'number' && elements.window !== elements) {
-        if (length) {
-          for (var i = 0; i < length; i++) {
-            root[root.length++] = elements[i];
-          }
-        }
-      } else {
-        root[root.length++] = elements;
-      }
-    }
-  }
-}
-
-
-function jqLiteController(element, name) {
-  return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');
-}
-
-function jqLiteInheritedData(element, name, value) {
-  // if element is the document object work with the html element instead
-  // this makes $(document).scope() possible
-  if (element.nodeType == NODE_TYPE_DOCUMENT) {
-    element = element.documentElement;
-  }
-  var names = isArray(name) ? name : [name];
-
-  while (element) {
-    for (var i = 0, ii = names.length; i < ii; i++) {
-      if ((value = jqLite.data(element, names[i])) !== undefined) return value;
-    }
-
-    // If dealing with a document fragment node with a host element, and no parent, use the host
-    // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
-    // to lookup parent controllers.
-    element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
-  }
-}
-
-function jqLiteEmpty(element) {
-  jqLiteDealoc(element, true);
-  while (element.firstChild) {
-    element.removeChild(element.firstChild);
-  }
-}
-
-function jqLiteRemove(element, keepData) {
-  if (!keepData) jqLiteDealoc(element);
-  var parent = element.parentNode;
-  if (parent) parent.removeChild(element);
-}
-
-
-function jqLiteDocumentLoaded(action, win) {
-  win = win || window;
-  if (win.document.readyState === 'complete') {
-    // Force the action to be run async for consistent behaviour
-    // from the action's point of view
-    // i.e. it will definitely not be in a $apply
-    win.setTimeout(action);
-  } else {
-    // No need to unbind this handler as load is only ever called once
-    jqLite(win).on('load', action);
-  }
-}
-
-//////////////////////////////////////////
-// Functions which are declared directly.
-//////////////////////////////////////////
-var JQLitePrototype = JQLite.prototype = {
-  ready: function(fn) {
-    var fired = false;
-
-    function trigger() {
-      if (fired) return;
-      fired = true;
-      fn();
-    }
-
-    // check if document is already loaded
-    if (document.readyState === 'complete') {
-      setTimeout(trigger);
-    } else {
-      this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
-      // we can not use jqLite since we are not done loading and jQuery could be loaded later.
-      // jshint -W064
-      JQLite(window).on('load', trigger); // fallback to window.onload for others
-      // jshint +W064
-    }
-  },
-  toString: function() {
-    var value = [];
-    forEach(this, function(e) { value.push('' + e);});
-    return '[' + value.join(', ') + ']';
-  },
-
-  eq: function(index) {
-      return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
-  },
-
-  length: 0,
-  push: push,
-  sort: [].sort,
-  splice: [].splice
-};
-
-//////////////////////////////////////////
-// Functions iterating getter/setters.
-// these functions return self on setter and
-// value on get.
-//////////////////////////////////////////
-var BOOLEAN_ATTR = {};
-forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
-  BOOLEAN_ATTR[lowercase(value)] = value;
-});
-var BOOLEAN_ELEMENTS = {};
-forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
-  BOOLEAN_ELEMENTS[value] = true;
-});
-var ALIASED_ATTR = {
-  'ngMinlength': 'minlength',
-  'ngMaxlength': 'maxlength',
-  'ngMin': 'min',
-  'ngMax': 'max',
-  'ngPattern': 'pattern'
-};
-
-function getBooleanAttrName(element, name) {
-  // check dom last since we will most likely fail on name
-  var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
-
-  // booleanAttr is here twice to minimize DOM access
-  return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
-}
-
-function getAliasedAttrName(element, name) {
-  var nodeName = element.nodeName;
-  return (nodeName === 'INPUT' || nodeName === 'TEXTAREA') && ALIASED_ATTR[name];
-}
-
-forEach({
-  data: jqLiteData,
-  removeData: jqLiteRemoveData
-}, function(fn, name) {
-  JQLite[name] = fn;
-});
-
-forEach({
-  data: jqLiteData,
-  inheritedData: jqLiteInheritedData,
-
-  scope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
-  },
-
-  isolateScope: function(element) {
-    // Can't use jqLiteData here directly so we stay compatible with jQuery!
-    return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');
-  },
-
-  controller: jqLiteController,
-
-  injector: function(element) {
-    return jqLiteInheritedData(element, '$injector');
-  },
-
-  removeAttr: function(element, name) {
-    element.removeAttribute(name);
-  },
-
-  hasClass: jqLiteHasClass,
-
-  css: function(element, name, value) {
-    name = camelCase(name);
-
-    if (isDefined(value)) {
-      element.style[name] = value;
-    } else {
-      return element.style[name];
-    }
-  },
-
-  attr: function(element, name, value) {
-    var lowercasedName = lowercase(name);
-    if (BOOLEAN_ATTR[lowercasedName]) {
-      if (isDefined(value)) {
-        if (!!value) {
-          element[name] = true;
-          element.setAttribute(name, lowercasedName);
-        } else {
-          element[name] = false;
-          element.removeAttribute(lowercasedName);
-        }
-      } else {
-        return (element[name] ||
-                 (element.attributes.getNamedItem(name) || noop).specified)
-               ? lowercasedName
-               : undefined;
-      }
-    } else if (isDefined(value)) {
-      element.setAttribute(name, value);
-    } else if (element.getAttribute) {
-      // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
-      // some elements (e.g. Document) don't have get attribute, so return undefined
-      var ret = element.getAttribute(name, 2);
-      // normalize non-existing attributes to undefined (as jQuery)
-      return ret === null ? undefined : ret;
-    }
-  },
-
-  prop: function(element, name, value) {
-    if (isDefined(value)) {
-      element[name] = value;
-    } else {
-      return element[name];
-    }
-  },
-
-  text: (function() {
-    getText.$dv = '';
-    return getText;
-
-    function getText(element, value) {
-      if (isUndefined(value)) {
-        var nodeType = element.nodeType;
-        return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
-      }
-      element.textContent = value;
-    }
-  })(),
-
-  val: function(element, value) {
-    if (isUndefined(value)) {
-      if (element.multiple && nodeName_(element) === 'select') {
-        var result = [];
-        forEach(element.options, function(option) {
-          if (option.selected) {
-            result.push(option.value || option.text);
-          }
-        });
-        return result.length === 0 ? null : result;
-      }
-      return element.value;
-    }
-    element.value = value;
-  },
-
-  html: function(element, value) {
-    if (isUndefined(value)) {
-      return element.innerHTML;
-    }
-    jqLiteDealoc(element, true);
-    element.innerHTML = value;
-  },
-
-  empty: jqLiteEmpty
-}, function(fn, name) {
-  /**
-   * Properties: writes return selection, reads return first value
-   */
-  JQLite.prototype[name] = function(arg1, arg2) {
-    var i, key;
-    var nodeCount = this.length;
-
-    // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
-    // in a way that survives minification.
-    // jqLiteEmpty takes no arguments but is a setter.
-    if (fn !== jqLiteEmpty &&
-        (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
-      if (isObject(arg1)) {
-
-        // we are a write, but the object properties are the key/values
-        for (i = 0; i < nodeCount; i++) {
-          if (fn === jqLiteData) {
-            // data() takes the whole object in jQuery
-            fn(this[i], arg1);
-          } else {
-            for (key in arg1) {
-              fn(this[i], key, arg1[key]);
-            }
-          }
-        }
-        // return self for chaining
-        return this;
-      } else {
-        // we are a read, so read the first child.
-        // TODO: do we still need this?
-        var value = fn.$dv;
-        // Only if we have $dv do we iterate over all, otherwise it is just the first element.
-        var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;
-        for (var j = 0; j < jj; j++) {
-          var nodeValue = fn(this[j], arg1, arg2);
-          value = value ? value + nodeValue : nodeValue;
-        }
-        return value;
-      }
-    } else {
-      // we are a write, so apply to all children
-      for (i = 0; i < nodeCount; i++) {
-        fn(this[i], arg1, arg2);
-      }
-      // return self for chaining
-      return this;
-    }
-  };
-});
-
-function createEventHandler(element, events) {
-  var eventHandler = function(event, type) {
-    // jQuery specific api
-    event.isDefaultPrevented = function() {
-      return event.defaultPrevented;
-    };
-
-    var eventFns = events[type || event.type];
-    var eventFnsLength = eventFns ? eventFns.length : 0;
-
-    if (!eventFnsLength) return;
-
-    if (isUndefined(event.immediatePropagationStopped)) {
-      var originalStopImmediatePropagation = event.stopImmediatePropagation;
-      event.stopImmediatePropagation = function() {
-        event.immediatePropagationStopped = true;
-
-        if (event.stopPropagation) {
-          event.stopPropagation();
-        }
-
-        if (originalStopImmediatePropagation) {
-          originalStopImmediatePropagation.call(event);
-        }
-      };
-    }
-
-    event.isImmediatePropagationStopped = function() {
-      return event.immediatePropagationStopped === true;
-    };
-
-    // Copy event handlers in case event handlers array is modified during execution.
-    if ((eventFnsLength > 1)) {
-      eventFns = shallowCopy(eventFns);
-    }
-
-    for (var i = 0; i < eventFnsLength; i++) {
-      if (!event.isImmediatePropagationStopped()) {
-        eventFns[i].call(element, event);
-      }
-    }
-  };
-
-  // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all
-  //       events on `element`
-  eventHandler.elem = element;
-  return eventHandler;
-}
-
-//////////////////////////////////////////
-// Functions iterating traversal.
-// These functions chain results into a single
-// selector.
-//////////////////////////////////////////
-forEach({
-  removeData: jqLiteRemoveData,
-
-  on: function jqLiteOn(element, type, fn, unsupported) {
-    if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
-
-    // Do not add event handlers to non-elements because they will not be cleaned up.
-    if (!jqLiteAcceptsData(element)) {
-      return;
-    }
-
-    var expandoStore = jqLiteExpandoStore(element, true);
-    var events = expandoStore.events;
-    var handle = expandoStore.handle;
-
-    if (!handle) {
-      handle = expandoStore.handle = createEventHandler(element, events);
-    }
-
-    // http://jsperf.com/string-indexof-vs-split
-    var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];
-    var i = types.length;
-
-    while (i--) {
-      type = types[i];
-      var eventFns = events[type];
-
-      if (!eventFns) {
-        events[type] = [];
-
-        if (type === 'mouseenter' || type === 'mouseleave') {
-          // Refer to jQuery's implementation of mouseenter & mouseleave
-          // Read about mouseenter and mouseleave:
-          // http://www.quirksmode.org/js/events_mouse.html#link8
-
-          jqLiteOn(element, MOUSE_EVENT_MAP[type], function(event) {
-            var target = this, related = event.relatedTarget;
-            // 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 && !target.contains(related))) {
-              handle(event, type);
-            }
-          });
-
-        } else {
-          if (type !== '$destroy') {
-            addEventListenerFn(element, type, handle);
-          }
-        }
-        eventFns = events[type];
-      }
-      eventFns.push(fn);
-    }
-  },
-
-  off: jqLiteOff,
-
-  one: function(element, type, fn) {
-    element = jqLite(element);
-
-    //add the listener twice so that when it is called
-    //you can remove the original function and still be
-    //able to call element.off(ev, fn) normally
-    element.on(type, function onFn() {
-      element.off(type, fn);
-      element.off(type, onFn);
-    });
-    element.on(type, fn);
-  },
-
-  replaceWith: function(element, replaceNode) {
-    var index, parent = element.parentNode;
-    jqLiteDealoc(element);
-    forEach(new JQLite(replaceNode), function(node) {
-      if (index) {
-        parent.insertBefore(node, index.nextSibling);
-      } else {
-        parent.replaceChild(node, element);
-      }
-      index = node;
-    });
-  },
-
-  children: function(element) {
-    var children = [];
-    forEach(element.childNodes, function(element) {
-      if (element.nodeType === NODE_TYPE_ELEMENT)
-        children.push(element);
-    });
-    return children;
-  },
-
-  contents: function(element) {
-    return element.contentDocument || element.childNodes || [];
-  },
-
-  append: function(element, node) {
-    var nodeType = element.nodeType;
-    if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
-
-    node = new JQLite(node);
-
-    for (var i = 0, ii = node.length; i < ii; i++) {
-      var child = node[i];
-      element.appendChild(child);
-    }
-  },
-
-  prepend: function(element, node) {
-    if (element.nodeType === NODE_TYPE_ELEMENT) {
-      var index = element.firstChild;
-      forEach(new JQLite(node), function(child) {
-        element.insertBefore(child, index);
-      });
-    }
-  },
-
-  wrap: function(element, wrapNode) {
-    wrapNode = jqLite(wrapNode).eq(0).clone()[0];
-    var parent = element.parentNode;
-    if (parent) {
-      parent.replaceChild(wrapNode, element);
-    }
-    wrapNode.appendChild(element);
-  },
-
-  remove: jqLiteRemove,
-
-  detach: function(element) {
-    jqLiteRemove(element, true);
-  },
-
-  after: function(element, newElement) {
-    var index = element, parent = element.parentNode;
-    newElement = new JQLite(newElement);
-
-    for (var i = 0, ii = newElement.length; i < ii; i++) {
-      var node = newElement[i];
-      parent.insertBefore(node, index.nextSibling);
-      index = node;
-    }
-  },
-
-  addClass: jqLiteAddClass,
-  removeClass: jqLiteRemoveClass,
-
-  toggleClass: function(element, selector, condition) {
-    if (selector) {
-      forEach(selector.split(' '), function(className) {
-        var classCondition = condition;
-        if (isUndefined(classCondition)) {
-          classCondition = !jqLiteHasClass(element, className);
-        }
-        (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
-      });
-    }
-  },
-
-  parent: function(element) {
-    var parent = element.parentNode;
-    return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
-  },
-
-  next: function(element) {
-    return element.nextElementSibling;
-  },
-
-  find: function(element, selector) {
-    if (element.getElementsByTagName) {
-      return element.getElementsByTagName(selector);
-    } else {
-      return [];
-    }
-  },
-
-  clone: jqLiteClone,
-
-  triggerHandler: function(element, event, extraParameters) {
-
-    var dummyEvent, eventFnsCopy, handlerArgs;
-    var eventName = event.type || event;
-    var expandoStore = jqLiteExpandoStore(element);
-    var events = expandoStore && expandoStore.events;
-    var eventFns = events && events[eventName];
-
-    if (eventFns) {
-      // Create a dummy event to pass to the handlers
-      dummyEvent = {
-        preventDefault: function() { this.defaultPrevented = true; },
-        isDefaultPrevented: function() { return this.defaultPrevented === true; },
-        stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },
-        isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },
-        stopPropagation: noop,
-        type: eventName,
-        target: element
-      };
-
-      // If a custom event was provided then extend our dummy event with it
-      if (event.type) {
-        dummyEvent = extend(dummyEvent, event);
-      }
-
-      // Copy event handlers in case event handlers array is modified during execution.
-      eventFnsCopy = shallowCopy(eventFns);
-      handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
-
-      forEach(eventFnsCopy, function(fn) {
-        if (!dummyEvent.isImmediatePropagationStopped()) {
-          fn.apply(element, handlerArgs);
-        }
-      });
-    }
-  }
-}, function(fn, name) {
-  /**
-   * chaining functions
-   */
-  JQLite.prototype[name] = function(arg1, arg2, arg3) {
-    var value;
-
-    for (var i = 0, ii = this.length; i < ii; i++) {
-      if (isUndefined(value)) {
-        value = fn(this[i], arg1, arg2, arg3);
-        if (isDefined(value)) {
-          // any function which returns a value needs to be wrapped
-          value = jqLite(value);
-        }
-      } else {
-        jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
-      }
-    }
-    return isDefined(value) ? value : this;
-  };
-
-  // bind legacy bind/unbind to on/off
-  JQLite.prototype.bind = JQLite.prototype.on;
-  JQLite.prototype.unbind = JQLite.prototype.off;
-});
-
-
-// Provider for private $$jqLite service
-function $$jqLiteProvider() {
-  this.$get = function $$jqLite() {
-    return extend(JQLite, {
-      hasClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteHasClass(node, classes);
-      },
-      addClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteAddClass(node, classes);
-      },
-      removeClass: function(node, classes) {
-        if (node.attr) node = node[0];
-        return jqLiteRemoveClass(node, classes);
-      }
-    });
-  };
-}
-
-/**
- * Computes a hash of an 'obj'.
- * Hash of a:
- *  string is string
- *  number is number as string
- *  object is either result of calling $$hashKey function on the object or uniquely generated id,
- *         that is also assigned to the $$hashKey property of the object.
- *
- * @param obj
- * @returns {string} hash string such that the same input will have the same hash string.
- *         The resulting string key is in 'type:hashKey' format.
- */
-function hashKey(obj, nextUidFn) {
-  var key = obj && obj.$$hashKey;
-
-  if (key) {
-    if (typeof key === 'function') {
-      key = obj.$$hashKey();
-    }
-    return key;
-  }
-
-  var objType = typeof obj;
-  if (objType == 'function' || (objType == 'object' && obj !== null)) {
-    key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();
-  } else {
-    key = objType + ':' + obj;
-  }
-
-  return key;
-}
-
-/**
- * HashMap which can use objects as keys
- */
-function HashMap(array, isolatedUid) {
-  if (isolatedUid) {
-    var uid = 0;
-    this.nextUid = function() {
-      return ++uid;
-    };
-  }
-  forEach(array, this.put, this);
-}
-HashMap.prototype = {
-  /**
-   * Store key value pair
-   * @param key key to store can be any type
-   * @param value value to store can be any type
-   */
-  put: function(key, value) {
-    this[hashKey(key, this.nextUid)] = value;
-  },
-
-  /**
-   * @param key
-   * @returns {Object} the value for the key
-   */
-  get: function(key) {
-    return this[hashKey(key, this.nextUid)];
-  },
-
-  /**
-   * Remove the key/value pair
-   * @param key
-   */
-  remove: function(key) {
-    var value = this[key = hashKey(key, this.nextUid)];
-    delete this[key];
-    return value;
-  }
-};
-
-/**
- * @ngdoc function
- * @module ng
- * @name angular.injector
- * @kind function
- *
- * @description
- * Creates an injector object that can be used for retrieving services as well as for
- * dependency injection (see {@link guide/di dependency injection}).
- *
- * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
- *     {@link angular.module}. The `ng` module must be explicitly added.
- * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
- *     disallows argument name annotation inference.
- * @returns {injector} Injector object. See {@link auto.$injector $injector}.
- *
- * @example
- * Typical usage
- * ```js
- *   // create an injector
- *   var $injector = angular.injector(['ng']);
- *
- *   // use the injector to kick off your application
- *   // use the type inference to auto inject arguments, or use implicit injection
- *   $injector.invoke(function($rootScope, $compile, $document) {
- *     $compile($document)($rootScope);
- *     $rootScope.$digest();
- *   });
- * ```
- *
- * Sometimes you want to get access to the injector of a currently running Angular app
- * from outside Angular. Perhaps, you want to inject and compile some markup after the
- * application has been bootstrapped. You can do this using the extra `injector()` added
- * to JQuery/jqLite elements. See {@link angular.element}.
- *
- * *This is fairly rare but could be the case if a third party library is injecting the
- * markup.*
- *
- * In the following example a new block of HTML containing a `ng-controller`
- * directive is added to the end of the document body by JQuery. We then compile and link
- * it into the current AngularJS scope.
- *
- * ```js
- * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
- * $(document.body).append($div);
- *
- * angular.element(document).injector().invoke(function($compile) {
- *   var scope = angular.element($div).scope();
- *   $compile($div)(scope);
- * });
- * ```
- */
-
-
-/**
- * @ngdoc module
- * @name auto
- * @description
- *
- * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
- */
-
-var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
-var FN_ARG_SPLIT = /,/;
-var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
-var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
-var $injectorMinErr = minErr('$injector');
-
-function anonFn(fn) {
-  // For anonymous functions, showing at the very least the function signature can help in
-  // debugging.
-  var fnText = fn.toString().replace(STRIP_COMMENTS, ''),
-      args = fnText.match(FN_ARGS);
-  if (args) {
-    return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')';
-  }
-  return 'fn';
-}
-
-function annotate(fn, strictDi, name) {
-  var $inject,
-      fnText,
-      argDecl,
-      last;
-
-  if (typeof fn === 'function') {
-    if (!($inject = fn.$inject)) {
-      $inject = [];
-      if (fn.length) {
-        if (strictDi) {
-          if (!isString(name) || !name) {
-            name = fn.name || anonFn(fn);
-          }
-          throw $injectorMinErr('strictdi',
-            '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
-        }
-        fnText = fn.toString().replace(STRIP_COMMENTS, '');
-        argDecl = fnText.match(FN_ARGS);
-        forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
-          arg.replace(FN_ARG, function(all, underscore, name) {
-            $inject.push(name);
-          });
-        });
-      }
-      fn.$inject = $inject;
-    }
-  } else if (isArray(fn)) {
-    last = fn.length - 1;
-    assertArgFn(fn[last], 'fn');
-    $inject = fn.slice(0, last);
-  } else {
-    assertArgFn(fn, 'fn', true);
-  }
-  return $inject;
-}
-
-///////////////////////////////////////
-
-/**
- * @ngdoc service
- * @name $injector
- *
- * @description
- *
- * `$injector` is used to retrieve object instances as defined by
- * {@link auto.$provide provider}, instantiate types, invoke methods,
- * and load modules.
- *
- * The following always holds true:
- *
- * ```js
- *   var $injector = angular.injector();
- *   expect($injector.get('$injector')).toBe($injector);
- *   expect($injector.invoke(function($injector) {
- *     return $injector;
- *   })).toBe($injector);
- * ```
- *
- * # Injection Function Annotation
- *
- * JavaScript does not have annotations, and annotations are needed for dependency injection. The
- * following are all valid ways of annotating function with injection arguments and are equivalent.
- *
- * ```js
- *   // inferred (only works if code not minified/obfuscated)
- *   $injector.invoke(function(serviceA){});
- *
- *   // annotated
- *   function explicit(serviceA) {};
- *   explicit.$inject = ['serviceA'];
- *   $injector.invoke(explicit);
- *
- *   // inline
- *   $injector.invoke(['serviceA', function(serviceA){}]);
- * ```
- *
- * ## Inference
- *
- * In JavaScript calling `toString()` on a function returns the function definition. The definition
- * can then be parsed and the function arguments can be extracted. This method of discovering
- * annotations is disallowed when the injector is in strict mode.
- * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
- * argument names.
- *
- * ## `$inject` Annotation
- * By adding an `$inject` property onto a function the injection parameters can be specified.
- *
- * ## Inline
- * As an array of injection names, where the last item in the array is the function to call.
- */
-
-/**
- * @ngdoc method
- * @name $injector#get
- *
- * @description
- * Return an instance of the service.
- *
- * @param {string} name The name of the instance to retrieve.
- * @param {string} caller An optional string to provide the origin of the function call for error messages.
- * @return {*} The instance.
- */
-
-/**
- * @ngdoc method
- * @name $injector#invoke
- *
- * @description
- * Invoke the method and supply the method arguments from the `$injector`.
- *
- * @param {!Function} fn The function to invoke. Function parameters are injected according to the
- *   {@link guide/di $inject Annotation} rules.
- * @param {Object=} self The `this` for the invoked method.
- * @param {Object=} locals Optional object. If preset then any argument names are read from this
- *                         object first, before the `$injector` is consulted.
- * @returns {*} the value returned by the invoked `fn` function.
- */
-
-/**
- * @ngdoc method
- * @name $injector#has
- *
- * @description
- * Allows the user to query if the particular service exists.
- *
- * @param {string} name Name of the service to query.
- * @returns {boolean} `true` if injector has given service.
- */
-
-/**
- * @ngdoc method
- * @name $injector#instantiate
- * @description
- * Create a new instance of JS type. The method takes a constructor function, invokes the new
- * operator, and supplies all of the arguments to the constructor function as specified by the
- * constructor annotation.
- *
- * @param {Function} Type Annotated constructor function.
- * @param {Object=} locals Optional object. If preset then any argument names are read from this
- * object first, before the `$injector` is consulted.
- * @returns {Object} new instance of `Type`.
- */
-
-/**
- * @ngdoc method
- * @name $injector#annotate
- *
- * @description
- * Returns an array of service names which the function is requesting for injection. This API is
- * used by the injector to determine which services need to be injected into the function when the
- * function is invoked. There are three ways in which the function can be annotated with the needed
- * dependencies.
- *
- * # Argument names
- *
- * The simplest form is to extract the dependencies from the arguments of the function. This is done
- * by converting the function into a string using `toString()` method and extracting the argument
- * names.
- * ```js
- *   // Given
- *   function MyController($scope, $route) {
- *     // ...
- *   }
- *
- *   // Then
- *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
- * ```
- *
- * You can disallow this method by using strict injection mode.
- *
- * This method does not work with code minification / obfuscation. For this reason the following
- * annotation strategies are supported.
- *
- * # The `$inject` property
- *
- * If a function has an `$inject` property and its value is an array of strings, then the strings
- * represent names of services to be injected into the function.
- * ```js
- *   // Given
- *   var MyController = function(obfuscatedScope, obfuscatedRoute) {
- *     // ...
- *   }
- *   // Define function dependencies
- *   MyController['$inject'] = ['$scope', '$route'];
- *
- *   // Then
- *   expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
- * ```
- *
- * # The array notation
- *
- * It is often desirable to inline Injected functions and that's when setting the `$inject` property
- * is very inconvenient. In these situations using the array notation to specify the dependencies in
- * a way that survives minification is a better choice:
- *
- * ```js
- *   // We wish to write this (not minification / obfuscation safe)
- *   injector.invoke(function($compile, $rootScope) {
- *     // ...
- *   });
- *
- *   // We are forced to write break inlining
- *   var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
- *     // ...
- *   };
- *   tmpFn.$inject = ['$compile', '$rootScope'];
- *   injector.invoke(tmpFn);
- *
- *   // To better support inline function the inline annotation is supported
- *   injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
- *     // ...
- *   }]);
- *
- *   // Therefore
- *   expect(injector.annotate(
- *      ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
- *    ).toEqual(['$compile', '$rootScope']);
- * ```
- *
- * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
- * be retrieved as described above.
- *
- * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
- *
- * @returns {Array.<string>} The names of the services which the function requires.
- */
-
-
-
-
-/**
- * @ngdoc service
- * @name $provide
- *
- * @description
- *
- * The {@link auto.$provide $provide} service has a number of methods for registering components
- * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
- * {@link angular.Module}.
- *
- * An Angular **service** is a singleton object created by a **service factory**.  These **service
- * factories** are functions which, in turn, are created by a **service provider**.
- * The **service providers** are constructor functions. When instantiated they must contain a
- * property called `$get`, which holds the **service factory** function.
- *
- * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
- * correct **service provider**, instantiating it and then calling its `$get` **service factory**
- * function to get the instance of the **service**.
- *
- * Often services have no configuration options and there is no need to add methods to the service
- * provider.  The provider will be no more than a constructor function with a `$get` property. For
- * these cases the {@link auto.$provide $provide} service has additional helper methods to register
- * services without specifying a provider.
- *
- * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the
- *     {@link auto.$injector $injector}
- * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by
- *     providers and services.
- * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by
- *     services, not providers.
- * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,
- *     that will be wrapped in a **service provider** object, whose `$get` property will contain the
- *     given factory function.
- * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`
- *     that will be wrapped in a **service provider** object, whose `$get` property will instantiate
- *      a new object using the given constructor function.
- *
- * See the individual methods for more information and examples.
- */
-
-/**
- * @ngdoc method
- * @name $provide#provider
- * @description
- *
- * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
- * are constructor functions, whose instances are responsible for "providing" a factory for a
- * service.
- *
- * Service provider names start with the name of the service they provide followed by `Provider`.
- * For example, the {@link ng.$log $log} service has a provider called
- * {@link ng.$logProvider $logProvider}.
- *
- * Service provider objects can have additional methods which allow configuration of the provider
- * and its service. Importantly, you can configure what kind of service is created by the `$get`
- * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
- * method {@link ng.$logProvider#debugEnabled debugEnabled}
- * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
- * console or not.
- *
- * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
-                        'Provider'` key.
- * @param {(Object|function())} provider If the provider is:
- *
- *   - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
- *     {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
- *   - `Constructor`: a new instance of the provider will be created using
- *     {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
- *
- * @returns {Object} registered provider instance
-
- * @example
- *
- * The following example shows how to create a simple event tracking service and register it using
- * {@link auto.$provide#provider $provide.provider()}.
- *
- * ```js
- *  // Define the eventTracker provider
- *  function EventTrackerProvider() {
- *    var trackingUrl = '/track';
- *
- *    // A provider method for configuring where the tracked events should been saved
- *    this.setTrackingUrl = function(url) {
- *      trackingUrl = url;
- *    };
- *
- *    // The service factory function
- *    this.$get = ['$http', function($http) {
- *      var trackedEvents = {};
- *      return {
- *        // Call this to track an event
- *        event: function(event) {
- *          var count = trackedEvents[event] || 0;
- *          count += 1;
- *          trackedEvents[event] = count;
- *          return count;
- *        },
- *        // Call this to save the tracked events to the trackingUrl
- *        save: function() {
- *          $http.post(trackingUrl, trackedEvents);
- *        }
- *      };
- *    }];
- *  }
- *
- *  describe('eventTracker', function() {
- *    var postSpy;
- *
- *    beforeEach(module(function($provide) {
- *      // Register the eventTracker provider
- *      $provide.provider('eventTracker', EventTrackerProvider);
- *    }));
- *
- *    beforeEach(module(function(eventTrackerProvider) {
- *      // Configure eventTracker provider
- *      eventTrackerProvider.setTrackingUrl('/custom-track');
- *    }));
- *
- *    it('tracks events', inject(function(eventTracker) {
- *      expect(eventTracker.event('login')).toEqual(1);
- *      expect(eventTracker.event('login')).toEqual(2);
- *    }));
- *
- *    it('saves to the tracking url', inject(function(eventTracker, $http) {
- *      postSpy = spyOn($http, 'post');
- *      eventTracker.event('login');
- *      eventTracker.save();
- *      expect(postSpy).toHaveBeenCalled();
- *      expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
- *      expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
- *      expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
- *    }));
- *  });
- * ```
- */
-
-/**
- * @ngdoc method
- * @name $provide#factory
- * @description
- *
- * Register a **service factory**, which will be called to return the service instance.
- * This is short for registering a service where its provider consists of only a `$get` property,
- * which is the given service factory function.
- * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
- * configure your service in a provider.
- *
- * @param {string} name The name of the instance.
- * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand
- *                            for `$provide.provider(name, {$get: $getFn})`.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here is an example of registering a service
- * ```js
- *   $provide.factory('ping', ['$http', function($http) {
- *     return function ping() {
- *       return $http.send('/ping');
- *     };
- *   }]);
- * ```
- * You would then inject and use this service like this:
- * ```js
- *   someModule.controller('Ctrl', ['ping', function(ping) {
- *     ping();
- *   }]);
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#service
- * @description
- *
- * Register a **service constructor**, which will be invoked with `new` to create the service
- * instance.
- * This is short for registering a service where its provider's `$get` property is the service
- * constructor function that will be used to instantiate the service instance.
- *
- * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
- * as a type/class.
- *
- * @param {string} name The name of the instance.
- * @param {Function} constructor A class (constructor function) that will be instantiated.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here is an example of registering a service using
- * {@link auto.$provide#service $provide.service(class)}.
- * ```js
- *   var Ping = function($http) {
- *     this.$http = $http;
- *   };
- *
- *   Ping.$inject = ['$http'];
- *
- *   Ping.prototype.send = function() {
- *     return this.$http.get('/ping');
- *   };
- *   $provide.service('ping', Ping);
- * ```
- * You would then inject and use this service like this:
- * ```js
- *   someModule.controller('Ctrl', ['ping', function(ping) {
- *     ping.send();
- *   }]);
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#value
- * @description
- *
- * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
- * number, an array, an object or a function.  This is short for registering a service where its
- * provider's `$get` property is a factory function that takes no arguments and returns the **value
- * service**.
- *
- * Value services are similar to constant services, except that they cannot be injected into a
- * module configuration function (see {@link angular.Module#config}) but they can be overridden by
- * an Angular
- * {@link auto.$provide#decorator decorator}.
- *
- * @param {string} name The name of the instance.
- * @param {*} value The value.
- * @returns {Object} registered provider instance
- *
- * @example
- * Here are some examples of creating value services.
- * ```js
- *   $provide.value('ADMIN_USER', 'admin');
- *
- *   $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
- *
- *   $provide.value('halfOf', function(value) {
- *     return value / 2;
- *   });
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#constant
- * @description
- *
- * Register a **constant service**, such as a string, a number, an array, an object or a function,
- * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be
- * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
- * be overridden by an Angular {@link auto.$provide#decorator decorator}.
- *
- * @param {string} name The name of the constant.
- * @param {*} value The constant value.
- * @returns {Object} registered instance
- *
- * @example
- * Here a some examples of creating constants:
- * ```js
- *   $provide.constant('SHARD_HEIGHT', 306);
- *
- *   $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
- *
- *   $provide.constant('double', function(value) {
- *     return value * 2;
- *   });
- * ```
- */
-
-
-/**
- * @ngdoc method
- * @name $provide#decorator
- * @description
- *
- * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator
- * intercepts the creation of a service, allowing it to override or modify the behaviour of the
- * service. The object returned by the decorator may be the original service, or a new service
- * object which replaces or wraps and delegates to the original service.
- *
- * @param {string} name The name of the service to decorate.
- * @param {function()} decorator This function will be invoked when the service needs to be
- *    instantiated and should return the decorated service instance. The function is called using
- *    the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
- *    Local injection arguments:
- *
- *    * `$delegate` - The original service instance, which can be monkey patched, configured,
- *      decorated or delegated to.
- *
- * @example
- * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
- * calls to {@link ng.$log#error $log.warn()}.
- * ```js
- *   $provide.decorator('$log', ['$delegate', function($delegate) {
- *     $delegate.warn = $delegate.error;
- *     return $delegate;
- *   }]);
- * ```
- */
-
-
-function createInjector(modulesToLoad, strictDi) {
-  strictDi = (strictDi === true);
-  var INSTANTIATING = {},
-      providerSuffix = 'Provider',
-      path = [],
-      loadedModules = new HashMap([], true),
-      providerCache = {
-        $provide: {
-            provider: supportObject(provider),
-            factory: supportObject(factory),
-            service: supportObject(service),
-            value: supportObject(value),
-            constant: supportObject(constant),
-            decorator: decorator
-          }
-      },
-      providerInjector = (providerCache.$injector =
-          createInternalInjector(providerCache, function(serviceName, caller) {
-            if (angular.isString(caller)) {
-              path.push(caller);
-            }
-            throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
-          })),
-      instanceCache = {},
-      instanceInjector = (instanceCache.$injector =
-          createInternalInjector(instanceCache, function(serviceName, caller) {
-            var provider = providerInjector.get(serviceName + providerSuffix, caller);
-            return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
-          }));
-
-
-  forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });
-
-  return instanceInjector;
-
-  ////////////////////////////////////
-  // $provider
-  ////////////////////////////////////
-
-  function supportObject(delegate) {
-    return function(key, value) {
-      if (isObject(key)) {
-        forEach(key, reverseParams(delegate));
-      } else {
-        return delegate(key, value);
-      }
-    };
-  }
-
-  function provider(name, provider_) {
-    assertNotHasOwnProperty(name, 'service');
-    if (isFunction(provider_) || isArray(provider_)) {
-      provider_ = providerInjector.instantiate(provider_);
-    }
-    if (!provider_.$get) {
-      throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
-    }
-    return providerCache[name + providerSuffix] = provider_;
-  }
-
-  function enforceReturnValue(name, factory) {
-    return function enforcedReturnValue() {
-      var result = instanceInjector.invoke(factory, this);
-      if (isUndefined(result)) {
-        throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
-      }
-      return result;
-    };
-  }
-
-  function factory(name, factoryFn, enforce) {
-    return provider(name, {
-      $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
-    });
-  }
-
-  function service(name, constructor) {
-    return factory(name, ['$injector', function($injector) {
-      return $injector.instantiate(constructor);
-    }]);
-  }
-
-  function value(name, val) { return factory(name, valueFn(val), false); }
-
-  function constant(name, value) {
-    assertNotHasOwnProperty(name, 'constant');
-    providerCache[name] = value;
-    instanceCache[name] = value;
-  }
-
-  function decorator(serviceName, decorFn) {
-    var origProvider = providerInjector.get(serviceName + providerSuffix),
-        orig$get = origProvider.$get;
-
-    origProvider.$get = function() {
-      var origInstance = instanceInjector.invoke(orig$get, origProvider);
-      return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
-    };
-  }
-
-  ////////////////////////////////////
-  // Module Loading
-  ////////////////////////////////////
-  function loadModules(modulesToLoad) {
-    var runBlocks = [], moduleFn;
-    forEach(modulesToLoad, function(module) {
-      if (loadedModules.get(module)) return;
-      loadedModules.put(module, true);
-
-      function runInvokeQueue(queue) {
-        var i, ii;
-        for (i = 0, ii = queue.length; i < ii; i++) {
-          var invokeArgs = queue[i],
-              provider = providerInjector.get(invokeArgs[0]);
-
-          provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
-        }
-      }
-
-      try {
-        if (isString(module)) {
-          moduleFn = angularModule(module);
-          runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
-          runInvokeQueue(moduleFn._invokeQueue);
-          runInvokeQueue(moduleFn._configBlocks);
-        } else if (isFunction(module)) {
-            runBlocks.push(providerInjector.invoke(module));
-        } else if (isArray(module)) {
-            runBlocks.push(providerInjector.invoke(module));
-        } else {
-          assertArgFn(module, 'module');
-        }
-      } catch (e) {
-        if (isArray(module)) {
-          module = module[module.length - 1];
-        }
-        if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
-          // Safari & FF's stack traces don't contain error.message content
-          // unlike those of Chrome and IE
-          // So if stack doesn't contain message, we create a new string that contains both.
-          // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
-          /* jshint -W022 */
-          e = e.message + '\n' + e.stack;
-        }
-        throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
-                  module, e.stack || e.message || e);
-      }
-    });
-    return runBlocks;
-  }
-
-  ////////////////////////////////////
-  // internal Injector
-  ////////////////////////////////////
-
-  function createInternalInjector(cache, factory) {
-
-    function getService(serviceName, caller) {
-      if (cache.hasOwnProperty(serviceName)) {
-        if (cache[serviceName] === INSTANTIATING) {
-          throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
-                    serviceName + ' <- ' + path.join(' <- '));
-        }
-        return cache[serviceName];
-      } else {
-        try {
-          path.unshift(serviceName);
-          cache[serviceName] = INSTANTIATING;
-          return cache[serviceName] = factory(serviceName, caller);
-        } catch (err) {
-          if (cache[serviceName] === INSTANTIATING) {
-            delete cache[serviceName];
-          }
-          throw err;
-        } finally {
-          path.shift();
-        }
-      }
-    }
-
-    function invoke(fn, self, locals, serviceName) {
-      if (typeof locals === 'string') {
-        serviceName = locals;
-        locals = null;
-      }
-
-      var args = [],
-          $inject = annotate(fn, strictDi, serviceName),
-          length, i,
-          key;
-
-      for (i = 0, length = $inject.length; i < length; i++) {
-        key = $inject[i];
-        if (typeof key !== 'string') {
-          throw $injectorMinErr('itkn',
-                  'Incorrect injection token! Expected service name as string, got {0}', key);
-        }
-        args.push(
-          locals && locals.hasOwnProperty(key)
-          ? locals[key]
-          : getService(key, serviceName)
-        );
-      }
-      if (isArray(fn)) {
-        fn = fn[length];
-      }
-
-      // http://jsperf.com/angularjs-invoke-apply-vs-switch
-      // #5388
-      return fn.apply(self, args);
-    }
-
-    function instantiate(Type, locals, serviceName) {
-      // Check if Type is annotated and use just the given function at n-1 as parameter
-      // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
-      // Object creation: http://jsperf.com/create-constructor/2
-      var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
-      var returnedValue = invoke(Type, instance, locals, serviceName);
-
-      return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
-    }
-
-    return {
-      invoke: invoke,
-      instantiate: instantiate,
-      get: getService,
-      annotate: annotate,
-      has: function(name) {
-        return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
-      }
-    };
-  }
-}
-
-createInjector.$$annotate = annotate;
-
-/**
- * @ngdoc provider
- * @name $anchorScrollProvider
- *
- * @description
- * Use `$anchorScrollProvider` to disable automatic scrolling whenever
- * {@link ng.$location#hash $location.hash()} changes.
- */
-function $AnchorScrollProvider() {
-
-  var autoScrollingEnabled = true;
-
-  /**
-   * @ngdoc method
-   * @name $anchorScrollProvider#disableAutoScrolling
-   *
-   * @description
-   * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to
-   * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />
-   * Use this method to disable automatic scrolling.
-   *
-   * If automatic scrolling is disabled, one must explicitly call
-   * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the
-   * current hash.
-   */
-  this.disableAutoScrolling = function() {
-    autoScrollingEnabled = false;
-  };
-
-  /**
-   * @ngdoc service
-   * @name $anchorScroll
-   * @kind function
-   * @requires $window
-   * @requires $location
-   * @requires $rootScope
-   *
-   * @description
-   * When called, it checks the current value of {@link ng.$location#hash $location.hash()} and
-   * scrolls to the related element, according to the rules specified in the
-   * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).
-   *
-   * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to
-   * match any anchor whenever it changes. This can be disabled by calling
-   * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.
-   *
-   * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a
-   * vertical scroll-offset (either fixed or dynamic).
-   *
-   * @property {(number|function|jqLite)} yOffset
-   * If set, specifies a vertical scroll-offset. This is often useful when there are fixed
-   * positioned elements at the top of the page, such as navbars, headers etc.
-   *
-   * `yOffset` can be specified in various ways:
-   * - **number**: A fixed number of pixels to be used as offset.<br /><br />
-   * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return
-   *   a number representing the offset (in pixels).<br /><br />
-   * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from
-   *   the top of the page to the element's bottom will be used as offset.<br />
-   *   **Note**: The element will be taken into account only as long as its `position` is set to
-   *   `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust
-   *   their height and/or positioning according to the viewport's size.
-   *
-   * <br />
-   * <div class="alert alert-warning">
-   * In order for `yOffset` to work properly, scrolling should take place on the document's root and
-   * not some child element.
-   * </div>
-   *
-   * @example
-     <example module="anchorScrollExample">
-       <file name="index.html">
-         <div id="scrollArea" ng-controller="ScrollController">
-           <a ng-click="gotoBottom()">Go to bottom</a>
-           <a id="bottom"></a> You're at the bottom!
-         </div>
-       </file>
-       <file name="script.js">
-         angular.module('anchorScrollExample', [])
-           .controller('ScrollController', ['$scope', '$location', '$anchorScroll',
-             function ($scope, $location, $anchorScroll) {
-               $scope.gotoBottom = function() {
-                 // set the location.hash to the id of
-                 // the element you wish to scroll to.
-                 $location.hash('bottom');
-
-                 // call $anchorScroll()
-                 $anchorScroll();
-               };
-             }]);
-       </file>
-       <file name="style.css">
-         #scrollArea {
-           height: 280px;
-           overflow: auto;
-         }
-
-         #bottom {
-           display: block;
-           margin-top: 2000px;
-         }
-       </file>
-     </example>
-   *
-   * <hr />
-   * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).
-   * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.
-   *
-   * @example
-     <example module="anchorScrollOffsetExample">
-       <file name="index.html">
-         <div class="fixed-header" ng-controller="headerCtrl">
-           <a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
-             Go to anchor {{x}}
-           </a>
-         </div>
-         <div id="anchor{{x}}" class="anchor" ng-repeat="x in [1,2,3,4,5]">
-           Anchor {{x}} of 5
-         </div>
-       </file>
-       <file name="script.js">
-         angular.module('anchorScrollOffsetExample', [])
-           .run(['$anchorScroll', function($anchorScroll) {
-             $anchorScroll.yOffset = 50;   // always scroll by 50 extra pixels
-           }])
-           .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
-             function ($anchorScroll, $location, $scope) {
-               $scope.gotoAnchor = function(x) {
-                 var newHash = 'anchor' + x;
-                 if ($location.hash() !== newHash) {
-                   // set the $location.hash to `newHash` and
-                   // $anchorScroll will automatically scroll to it
-                   $location.hash('anchor' + x);
-                 } else {
-                   // call $anchorScroll() explicitly,
-                   // since $location.hash hasn't changed
-                   $anchorScroll();
-                 }
-               };
-             }
-           ]);
-       </file>
-       <file name="style.css">
-         body {
-           padding-top: 50px;
-         }
-
-         .anchor {
-           border: 2px dashed DarkOrchid;
-           padding: 10px 10px 200px 10px;
-         }
-
-         .fixed-header {
-           background-color: rgba(0, 0, 0, 0.2);
-           height: 50px;
-           position: fixed;
-           top: 0; left: 0; right: 0;
-         }
-
-         .fixed-header > a {
-           display: inline-block;
-           margin: 5px 15px;
-         }
-       </file>
-     </example>
-   */
-  this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
-    var document = $window.document;
-
-    // Helper function to get first anchor from a NodeList
-    // (using `Array#some()` instead of `angular#forEach()` since it's more performant
-    //  and working in all supported browsers.)
-    function getFirstAnchor(list) {
-      var result = null;
-      Array.prototype.some.call(list, function(element) {
-        if (nodeName_(element) === 'a') {
-          result = element;
-          return true;
-        }
-      });
-      return result;
-    }
-
-    function getYOffset() {
-
-      var offset = scroll.yOffset;
-
-      if (isFunction(offset)) {
-        offset = offset();
-      } else if (isElement(offset)) {
-        var elem = offset[0];
-        var style = $window.getComputedStyle(elem);
-        if (style.position !== 'fixed') {
-          offset = 0;
-        } else {
-          offset = elem.getBoundingClientRect().bottom;
-        }
-      } else if (!isNumber(offset)) {
-        offset = 0;
-      }
-
-      return offset;
-    }
-
-    function scrollTo(elem) {
-      if (elem) {
-        elem.scrollIntoView();
-
-        var offset = getYOffset();
-
-        if (offset) {
-          // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.
-          // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the
-          // top of the viewport.
-          //
-          // IF the number of pixels from the top of `elem` to the end of the page's content is less
-          // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some
-          // way down the page.
-          //
-          // This is often the case for elements near the bottom of the page.
-          //
-          // In such cases we do not need to scroll the whole `offset` up, just the difference between
-          // the top of the element and the offset, which is enough to align the top of `elem` at the
-          // desired position.
-          var elemTop = elem.getBoundingClientRect().top;
-          $window.scrollBy(0, elemTop - offset);
-        }
-      } else {
-        $window.scrollTo(0, 0);
-      }
-    }
-
-    function scroll() {
-      var hash = $location.hash(), elm;
-
-      // empty hash, scroll to the top of the page
-      if (!hash) scrollTo(null);
-
-      // element with given id
-      else if ((elm = document.getElementById(hash))) scrollTo(elm);
-
-      // first anchor with given name :-D
-      else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);
-
-      // no element and hash == 'top', scroll to the top of the page
-      else if (hash === 'top') scrollTo(null);
-    }
-
-    // does not scroll when user clicks on anchor link that is currently on
-    // (no url change, no $location.hash() change), browser native does scroll
-    if (autoScrollingEnabled) {
-      $rootScope.$watch(function autoScrollWatch() {return $location.hash();},
-        function autoScrollWatchAction(newVal, oldVal) {
-          // skip the initial scroll if $location.hash is empty
-          if (newVal === oldVal && newVal === '') return;
-
-          jqLiteDocumentLoaded(function() {
-            $rootScope.$evalAsync(scroll);
-          });
-        });
-    }
-
-    return scroll;
-  }];
-}
-
-var $animateMinErr = minErr('$animate');
-
-/**
- * @ngdoc provider
- * @name $animateProvider
- *
- * @description
- * Default implementation of $animate that doesn't perform any animations, instead just
- * synchronously performs DOM
- * updates and calls done() callbacks.
- *
- * In order to enable animations the ngAnimate module has to be loaded.
- *
- * To see the functional implementation check out src/ngAnimate/animate.js
- */
-var $AnimateProvider = ['$provide', function($provide) {
-
-
-  this.$$selectors = {};
-
-
-  /**
-   * @ngdoc method
-   * @name $animateProvider#register
-   *
-   * @description
-   * Registers a new injectable animation factory function. The factory function produces the
-   * animation object which contains callback functions for each event that is expected to be
-   * animated.
-   *
-   *   * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`
-   *   must be called once the element animation is complete. If a function is returned then the
-   *   animation service will use this function to cancel the animation whenever a cancel event is
-   *   triggered.
-   *
-   *
-   * ```js
-   *   return {
-     *     eventFn : function(element, done) {
-     *       //code to run the animation
-     *       //once complete, then run done()
-     *       return function cancellationFunction() {
-     *         //code to cancel the animation
-     *       }
-     *     }
-     *   }
-   * ```
-   *
-   * @param {string} name The name of the animation.
-   * @param {Function} factory The factory function that will be executed to return the animation
-   *                           object.
-   */
-  this.register = function(name, factory) {
-    var key = name + '-animation';
-    if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',
-        "Expecting class selector starting with '.' got '{0}'.", name);
-    this.$$selectors[name.substr(1)] = key;
-    $provide.factory(key, factory);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $animateProvider#classNameFilter
-   *
-   * @description
-   * Sets and/or returns the CSS class regular expression that is checked when performing
-   * an animation. Upon bootstrap the classNameFilter value is not set at all and will
-   * therefore enable $animate to attempt to perform an animation on any element.
-   * When setting the classNameFilter value, animations will only be performed on elements
-   * that successfully match the filter expression. This in turn can boost performance
-   * for low-powered devices as well as applications containing a lot of structural operations.
-   * @param {RegExp=} expression The className expression which will be checked against all animations
-   * @return {RegExp} The current CSS className expression value. If null then there is no expression value
-   */
-  this.classNameFilter = function(expression) {
-    if (arguments.length === 1) {
-      this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;
-    }
-    return this.$$classNameFilter;
-  };
-
-  this.$get = ['$$q', '$$asyncCallback', '$rootScope', function($$q, $$asyncCallback, $rootScope) {
-
-    var currentDefer;
-
-    function runAnimationPostDigest(fn) {
-      var cancelFn, defer = $$q.defer();
-      defer.promise.$$cancelFn = function ngAnimateMaybeCancel() {
-        cancelFn && cancelFn();
-      };
-
-      $rootScope.$$postDigest(function ngAnimatePostDigest() {
-        cancelFn = fn(function ngAnimateNotifyComplete() {
-          defer.resolve();
-        });
-      });
-
-      return defer.promise;
-    }
-
-    function resolveElementClasses(element, classes) {
-      var toAdd = [], toRemove = [];
-
-      var hasClasses = createMap();
-      forEach((element.attr('class') || '').split(/\s+/), function(className) {
-        hasClasses[className] = true;
-      });
-
-      forEach(classes, function(status, className) {
-        var hasClass = hasClasses[className];
-
-        // If the most recent class manipulation (via $animate) was to remove the class, and the
-        // element currently has the class, the class is scheduled for removal. Otherwise, if
-        // the most recent class manipulation (via $animate) was to add the class, and the
-        // element does not currently have the class, the class is scheduled to be added.
-        if (status === false && hasClass) {
-          toRemove.push(className);
-        } else if (status === true && !hasClass) {
-          toAdd.push(className);
-        }
-      });
-
-      return (toAdd.length + toRemove.length) > 0 &&
-        [toAdd.length ? toAdd : null, toRemove.length ? toRemove : null];
-    }
-
-    function cachedClassManipulation(cache, classes, op) {
-      for (var i=0, ii = classes.length; i < ii; ++i) {
-        var className = classes[i];
-        cache[className] = op;
-      }
-    }
-
-    function asyncPromise() {
-      // only serve one instance of a promise in order to save CPU cycles
-      if (!currentDefer) {
-        currentDefer = $$q.defer();
-        $$asyncCallback(function() {
-          currentDefer.resolve();
-          currentDefer = null;
-        });
-      }
-      return currentDefer.promise;
-    }
-
-    function applyStyles(element, options) {
-      if (angular.isObject(options)) {
-        var styles = extend(options.from || {}, options.to || {});
-        element.css(styles);
-      }
-    }
-
-    /**
-     *
-     * @ngdoc service
-     * @name $animate
-     * @description The $animate service provides rudimentary DOM manipulation functions to
-     * insert, remove and move elements within the DOM, as well as adding and removing classes.
-     * This service is the core service used by the ngAnimate $animator service which provides
-     * high-level animation hooks for CSS and JavaScript.
-     *
-     * $animate is available in the AngularJS core, however, the ngAnimate module must be included
-     * to enable full out animation support. Otherwise, $animate will only perform simple DOM
-     * manipulation operations.
-     *
-     * To learn more about enabling animation support, click here to visit the {@link ngAnimate
-     * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service
-     * page}.
-     */
-    return {
-      animate: function(element, from, to) {
-        applyStyles(element, { from: from, to: to });
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#enter
-       * @kind function
-       * @description Inserts the element into the DOM either after the `after` element or
-       * as the first child within the `parent` element. When the function is called a promise
-       * is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will be inserted into the DOM
-       * @param {DOMElement} parent the parent element which will append the element as
-       *   a child (if the after element is not present)
-       * @param {DOMElement} after the sibling element which will append the element
-       *   after itself
-       * @param {object=} options an optional collection of styles that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      enter: function(element, parent, after, options) {
-        applyStyles(element, options);
-        after ? after.after(element)
-              : parent.prepend(element);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#leave
-       * @kind function
-       * @description Removes the element from the DOM. When the function is called a promise
-       * is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will be removed from the DOM
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      leave: function(element, options) {
-        element.remove();
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#move
-       * @kind function
-       * @description Moves the position of the provided element within the DOM to be placed
-       * either after the `after` element or inside of the `parent` element. When the function
-       * is called a promise is returned that will be resolved at a later time.
-       *
-       * @param {DOMElement} element the element which will be moved around within the
-       *   DOM
-       * @param {DOMElement} parent the parent element where the element will be
-       *   inserted into (if the after element is not present)
-       * @param {DOMElement} after the sibling element where the element will be
-       *   positioned next to
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      move: function(element, parent, after, options) {
-        // Do not remove element before insert. Removing will cause data associated with the
-        // element to be dropped. Insert will implicitly do the remove.
-        return this.enter(element, parent, after, options);
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#addClass
-       * @kind function
-       * @description Adds the provided className CSS class value to the provided element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have the className value
-       *   added to it
-       * @param {string} className the CSS class which will be added to the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      addClass: function(element, className, options) {
-        return this.setClass(element, className, [], options);
-      },
-
-      $$addClassImmediately: function(element, className, options) {
-        element = jqLite(element);
-        className = !isString(className)
-                        ? (isArray(className) ? className.join(' ') : '')
-                        : className;
-        forEach(element, function(element) {
-          jqLiteAddClass(element, className);
-        });
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#removeClass
-       * @kind function
-       * @description Removes the provided className CSS class value from the provided element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have the className value
-       *   removed from it
-       * @param {string} className the CSS class which will be removed from the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      removeClass: function(element, className, options) {
-        return this.setClass(element, [], className, options);
-      },
-
-      $$removeClassImmediately: function(element, className, options) {
-        element = jqLite(element);
-        className = !isString(className)
-                        ? (isArray(className) ? className.join(' ') : '')
-                        : className;
-        forEach(element, function(element) {
-          jqLiteRemoveClass(element, className);
-        });
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      /**
-       *
-       * @ngdoc method
-       * @name $animate#setClass
-       * @kind function
-       * @description Adds and/or removes the given CSS classes to and from the element.
-       * When the function is called a promise is returned that will be resolved at a later time.
-       * @param {DOMElement} element the element which will have its CSS classes changed
-       *   removed from it
-       * @param {string} add the CSS classes which will be added to the element
-       * @param {string} remove the CSS class which will be removed from the element
-       * @param {object=} options an optional collection of options that will be applied to the element.
-       * @return {Promise} the animation callback promise
-       */
-      setClass: function(element, add, remove, options) {
-        var self = this;
-        var STORAGE_KEY = '$$animateClasses';
-        var createdCache = false;
-        element = jqLite(element);
-
-        var cache = element.data(STORAGE_KEY);
-        if (!cache) {
-          cache = {
-            classes: {},
-            options: options
-          };
-          createdCache = true;
-        } else if (options && cache.options) {
-          cache.options = angular.extend(cache.options || {}, options);
-        }
-
-        var classes = cache.classes;
-
-        add = isArray(add) ? add : add.split(' ');
-        remove = isArray(remove) ? remove : remove.split(' ');
-        cachedClassManipulation(classes, add, true);
-        cachedClassManipulation(classes, remove, false);
-
-        if (createdCache) {
-          cache.promise = runAnimationPostDigest(function(done) {
-            var cache = element.data(STORAGE_KEY);
-            element.removeData(STORAGE_KEY);
-
-            // in the event that the element is removed before postDigest
-            // is run then the cache will be undefined and there will be
-            // no need anymore to add or remove and of the element classes
-            if (cache) {
-              var classes = resolveElementClasses(element, cache.classes);
-              if (classes) {
-                self.$$setClassImmediately(element, classes[0], classes[1], cache.options);
-              }
-            }
-
-            done();
-          });
-          element.data(STORAGE_KEY, cache);
-        }
-
-        return cache.promise;
-      },
-
-      $$setClassImmediately: function(element, add, remove, options) {
-        add && this.$$addClassImmediately(element, add);
-        remove && this.$$removeClassImmediately(element, remove);
-        applyStyles(element, options);
-        return asyncPromise();
-      },
-
-      enabled: noop,
-      cancel: noop
-    };
-  }];
-}];
-
-function $$AsyncCallbackProvider() {
-  this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {
-    return $$rAF.supported
-      ? function(fn) { return $$rAF(fn); }
-      : function(fn) {
-        return $timeout(fn, 0, false);
-      };
-  }];
-}
-
-/* global stripHash: true */
-
-/**
- * ! This is a private undocumented service !
- *
- * @name $browser
- * @requires $log
- * @description
- * This object has two goals:
- *
- * - hide all the global state in the browser caused by the window object
- * - abstract away all the browser specific features and inconsistencies
- *
- * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`
- * service, which can be used for convenient testing of the application without the interaction with
- * the real browser apis.
- */
-/**
- * @param {object} window The global window object.
- * @param {object} document jQuery wrapped document.
- * @param {object} $log window.console or an object with the same interface.
- * @param {object} $sniffer $sniffer service
- */
-function Browser(window, document, $log, $sniffer) {
-  var self = this,
-      rawDocument = document[0],
-      location = window.location,
-      history = window.history,
-      setTimeout = window.setTimeout,
-      clearTimeout = window.clearTimeout,
-      pendingDeferIds = {};
-
-  self.isMock = false;
-
-  var outstandingRequestCount = 0;
-  var outstandingRequestCallbacks = [];
-
-  // TODO(vojta): remove this temporary api
-  self.$$completeOutstandingRequest = completeOutstandingRequest;
-  self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };
-
-  /**
-   * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`
-   * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.
-   */
-  function completeOutstandingRequest(fn) {
-    try {
-      fn.apply(null, sliceArgs(arguments, 1));
-    } finally {
-      outstandingRequestCount--;
-      if (outstandingRequestCount === 0) {
-        while (outstandingRequestCallbacks.length) {
-          try {
-            outstandingRequestCallbacks.pop()();
-          } catch (e) {
-            $log.error(e);
-          }
-        }
-      }
-    }
-  }
-
-  function getHash(url) {
-    var index = url.indexOf('#');
-    return index === -1 ? '' : url.substr(index + 1);
-  }
-
-  /**
-   * @private
-   * Note: this method is used only by scenario runner
-   * TODO(vojta): prefix this method with $$ ?
-   * @param {function()} callback Function that will be called when no outstanding request
-   */
-  self.notifyWhenNoOutstandingRequests = function(callback) {
-    // force browser to execute all pollFns - this is needed so that cookies and other pollers fire
-    // at some deterministic time in respect to the test runner's actions. Leaving things up to the
-    // regular poller would result in flaky tests.
-    forEach(pollFns, function(pollFn) { pollFn(); });
-
-    if (outstandingRequestCount === 0) {
-      callback();
-    } else {
-      outstandingRequestCallbacks.push(callback);
-    }
-  };
-
-  //////////////////////////////////////////////////////////////
-  // Poll Watcher API
-  //////////////////////////////////////////////////////////////
-  var pollFns = [],
-      pollTimeout;
-
-  /**
-   * @name $browser#addPollFn
-   *
-   * @param {function()} fn Poll function to add
-   *
-   * @description
-   * Adds a function to the list of functions that poller periodically executes,
-   * and starts polling if not started yet.
-   *
-   * @returns {function()} the added function
-   */
-  self.addPollFn = function(fn) {
-    if (isUndefined(pollTimeout)) startPoller(100, setTimeout);
-    pollFns.push(fn);
-    return fn;
-  };
-
-  /**
-   * @param {number} interval How often should browser call poll functions (ms)
-   * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.
-   *
-   * @description
-   * Configures the poller to run in the specified intervals, using the specified
-   * setTimeout fn and kicks it off.
-   */
-  function startPoller(interval, setTimeout) {
-    (function check() {
-      forEach(pollFns, function(pollFn) { pollFn(); });
-      pollTimeout = setTimeout(check, interval);
-    })();
-  }
-
-  //////////////////////////////////////////////////////////////
-  // URL API
-  //////////////////////////////////////////////////////////////
-
-  var cachedState, lastHistoryState,
-      lastBrowserUrl = location.href,
-      baseElement = document.find('base'),
-      reloadLocation = null;
-
-  cacheState();
-  lastHistoryState = cachedState;
-
-  /**
-   * @name $browser#url
-   *
-   * @description
-   * GETTER:
-   * Without any argument, this method just returns current value of location.href.
-   *
-   * SETTER:
-   * With at least one argument, this method sets url to new value.
-   * If html5 history api supported, pushState/replaceState is used, otherwise
-   * location.href/location.replace is used.
-   * Returns its own instance to allow chaining
-   *
-   * NOTE: this api is intended for use only by the $location service. Please use the
-   * {@link ng.$location $location service} to change url.
-   *
-   * @param {string} url New url (when used as setter)
-   * @param {boolean=} replace Should new url replace current history record?
-   * @param {object=} state object to use with pushState/replaceState
-   */
-  self.url = function(url, replace, state) {
-    // In modern browsers `history.state` is `null` by default; treating it separately
-    // from `undefined` would cause `$browser.url('/foo')` to change `history.state`
-    // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.
-    if (isUndefined(state)) {
-      state = null;
-    }
-
-    // Android Browser BFCache causes location, history reference to become stale.
-    if (location !== window.location) location = window.location;
-    if (history !== window.history) history = window.history;
-
-    // setter
-    if (url) {
-      var sameState = lastHistoryState === state;
-
-      // Don't change anything if previous and current URLs and states match. This also prevents
-      // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.
-      // See https://github.com/angular/angular.js/commit/ffb2701
-      if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
-        return self;
-      }
-      var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
-      lastBrowserUrl = url;
-      lastHistoryState = state;
-      // Don't use history API if only the hash changed
-      // due to a bug in IE10/IE11 which leads
-      // to not firing a `hashchange` nor `popstate` event
-      // in some cases (see #9143).
-      if ($sniffer.history && (!sameBase || !sameState)) {
-        history[replace ? 'replaceState' : 'pushState'](state, '', url);
-        cacheState();
-        // Do the assignment again so that those two variables are referentially identical.
-        lastHistoryState = cachedState;
-      } else {
-        if (!sameBase) {
-          reloadLocation = url;
-        }
-        if (replace) {
-          location.replace(url);
-        } else if (!sameBase) {
-          location.href = url;
-        } else {
-          location.hash = getHash(url);
-        }
-      }
-      return self;
-    // getter
-    } else {
-      // - reloadLocation is needed as browsers don't allow to read out
-      //   the new location.href if a reload happened.
-      // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
-      return reloadLocation || location.href.replace(/%27/g,"'");
-    }
-  };
-
-  /**
-   * @name $browser#state
-   *
-   * @description
-   * This method is a getter.
-   *
-   * Return history.state or null if history.state is undefined.
-   *
-   * @returns {object} state
-   */
-  self.state = function() {
-    return cachedState;
-  };
-
-  var urlChangeListeners = [],
-      urlChangeInit = false;
-
-  function cacheStateAndFireUrlChange() {
-    cacheState();
-    fireUrlChange();
-  }
-
-  // This variable should be used *only* inside the cacheState function.
-  var lastCachedState = null;
-  function cacheState() {
-    // This should be the only place in $browser where `history.state` is read.
-    cachedState = window.history.state;
-    cachedState = isUndefined(cachedState) ? null : cachedState;
-
-    // Prevent callbacks fo fire twice if both hashchange & popstate were fired.
-    if (equals(cachedState, lastCachedState)) {
-      cachedState = lastCachedState;
-    }
-    lastCachedState = cachedState;
-  }
-
-  function fireUrlChange() {
-    if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) {
-      return;
-    }
-
-    lastBrowserUrl = self.url();
-    lastHistoryState = cachedState;
-    forEach(urlChangeListeners, function(listener) {
-      listener(self.url(), cachedState);
-    });
-  }
-
-  /**
-   * @name $browser#onUrlChange
-   *
-   * @description
-   * Register callback function that will be called, when url changes.
-   *
-   * It's only called when the url is changed from outside of angular:
-   * - user types different url into address bar
-   * - user clicks on history (forward/back) button
-   * - user clicks on a link
-   *
-   * It's not called when url is changed by $browser.url() method
-   *
-   * The listener gets called with new url as parameter.
-   *
-   * NOTE: this api is intended for use only by the $location service. Please use the
-   * {@link ng.$location $location service} to monitor url changes in angular apps.
-   *
-   * @param {function(string)} listener Listener function to be called when url changes.
-   * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.
-   */
-  self.onUrlChange = function(callback) {
-    // TODO(vojta): refactor to use node's syntax for events
-    if (!urlChangeInit) {
-      // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)
-      // don't fire popstate when user change the address bar and don't fire hashchange when url
-      // changed by push/replaceState
-
-      // html5 history api - popstate event
-      if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange);
-      // hashchange event
-      jqLite(window).on('hashchange', cacheStateAndFireUrlChange);
-
-      urlChangeInit = true;
-    }
-
-    urlChangeListeners.push(callback);
-    return callback;
-  };
-
-  /**
-   * Checks whether the url has changed outside of Angular.
-   * Needs to be exported to be able to check for changes that have been done in sync,
-   * as hashchange/popstate events fire in async.
-   */
-  self.$$checkUrlChange = fireUrlChange;
-
-  //////////////////////////////////////////////////////////////
-  // Misc API
-  //////////////////////////////////////////////////////////////
-
-  /**
-   * @name $browser#baseHref
-   *
-   * @description
-   * Returns current <base href>
-   * (always relative - without domain)
-   *
-   * @returns {string} The current base href
-   */
-  self.baseHref = function() {
-    var href = baseElement.attr('href');
-    return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
-  };
-
-  //////////////////////////////////////////////////////////////
-  // Cookies API
-  //////////////////////////////////////////////////////////////
-  var lastCookies = {};
-  var lastCookieString = '';
-  var cookiePath = self.baseHref();
-
-  function safeDecodeURIComponent(str) {
-    try {
-      return decodeURIComponent(str);
-    } catch (e) {
-      return str;
-    }
-  }
-
-  /**
-   * @name $browser#cookies
-   *
-   * @param {string=} name Cookie name
-   * @param {string=} value Cookie value
-   *
-   * @description
-   * The cookies method provides a 'private' low level access to browser cookies.
-   * It is not meant to be used directly, use the $cookie service instead.
-   *
-   * The return values vary depending on the arguments that the method was called with as follows:
-   *
-   * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify
-   *   it
-   * - cookies(name, value) -> set name to value, if value is undefined delete the cookie
-   * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that
-   *   way)
-   *
-   * @returns {Object} Hash of all cookies (if called without any parameter)
-   */
-  self.cookies = function(name, value) {
-    var cookieLength, cookieArray, cookie, i, index;
-
-    if (name) {
-      if (value === undefined) {
-        rawDocument.cookie = encodeURIComponent(name) + "=;path=" + cookiePath +
-                                ";expires=Thu, 01 Jan 1970 00:00:00 GMT";
-      } else {
-        if (isString(value)) {
-          cookieLength = (rawDocument.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) +
-                                ';path=' + cookiePath).length + 1;
-
-          // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
-          // - 300 cookies
-          // - 20 cookies per unique domain
-          // - 4096 bytes per cookie
-          if (cookieLength > 4096) {
-            $log.warn("Cookie '" + name +
-              "' possibly not set or overflowed because it was too large (" +
-              cookieLength + " > 4096 bytes)!");
-          }
-        }
-      }
-    } else {
-      if (rawDocument.cookie !== lastCookieString) {
-        lastCookieString = rawDocument.cookie;
-        cookieArray = lastCookieString.split("; ");
-        lastCookies = {};
-
-        for (i = 0; i < cookieArray.length; i++) {
-          cookie = cookieArray[i];
-          index = cookie.indexOf('=');
-          if (index > 0) { //ignore nameless cookies
-            name = safeDecodeURIComponent(cookie.substring(0, index));
-            // the first value that is seen for a cookie is the most
-            // specific one.  values for the same cookie name that
-            // follow are for less specific paths.
-            if (lastCookies[name] === undefined) {
-              lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));
-            }
-          }
-        }
-      }
-      return lastCookies;
-    }
-  };
-
-
-  /**
-   * @name $browser#defer
-   * @param {function()} fn A function, who's execution should be deferred.
-   * @param {number=} [delay=0] of milliseconds to defer the function execution.
-   * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.
-   *
-   * @description
-   * Executes a fn asynchronously via `setTimeout(fn, delay)`.
-   *
-   * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using
-   * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed
-   * via `$browser.defer.flush()`.
-   *
-   */
-  self.defer = function(fn, delay) {
-    var timeoutId;
-    outstandingRequestCount++;
-    timeoutId = setTimeout(function() {
-      delete pendingDeferIds[timeoutId];
-      completeOutstandingRequest(fn);
-    }, delay || 0);
-    pendingDeferIds[timeoutId] = true;
-    return timeoutId;
-  };
-
-
-  /**
-   * @name $browser#defer.cancel
-   *
-   * @description
-   * Cancels a deferred task identified with `deferId`.
-   *
-   * @param {*} deferId Token returned by the `$browser.defer` function.
-   * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
-   *                    canceled.
-   */
-  self.defer.cancel = function(deferId) {
-    if (pendingDeferIds[deferId]) {
-      delete pendingDeferIds[deferId];
-      clearTimeout(deferId);
-      completeOutstandingRequest(noop);
-      return true;
-    }
-    return false;
-  };
-
-}
-
-function $BrowserProvider() {
-  this.$get = ['$window', '$log', '$sniffer', '$document',
-      function($window, $log, $sniffer, $document) {
-        return new Browser($window, $document, $log, $sniffer);
-      }];
-}
-
-/**
- * @ngdoc service
- * @name $cacheFactory
- *
- * @description
- * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
- * them.
- *
- * ```js
- *
- *  var cache = $cacheFactory('cacheId');
- *  expect($cacheFactory.get('cacheId')).toBe(cache);
- *  expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
- *
- *  cache.put("key", "value");
- *  cache.put("another key", "another value");
- *
- *  // We've specified no options on creation
- *  expect(cache.info()).toEqual({id: 'cacheId', size: 2});
- *
- * ```
- *
- *
- * @param {string} cacheId Name or id of the newly created cache.
- * @param {object=} options Options object that specifies the cache behavior. Properties:
- *
- *   - `{number=}` `capacity` — turns the cache into LRU cache.
- *
- * @returns {object} Newly created cache object with the following set of methods:
- *
- * - `{object}` `info()` — Returns id, size, and options of cache.
- * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns
- *   it.
- * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.
- * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.
- * - `{void}` `removeAll()` — Removes all cached values.
- * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
- *
- * @example
-   <example module="cacheExampleApp">
-     <file name="index.html">
-       <div ng-controller="CacheController">
-         <input ng-model="newCacheKey" placeholder="Key">
-         <input ng-model="newCacheValue" placeholder="Value">
-         <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
-
-         <p ng-if="keys.length">Cached Values</p>
-         <div ng-repeat="key in keys">
-           <span ng-bind="key"></span>
-           <span>: </span>
-           <b ng-bind="cache.get(key)"></b>
-         </div>
-
-         <p>Cache Info</p>
-         <div ng-repeat="(key, value) in cache.info()">
-           <span ng-bind="key"></span>
-           <span>: </span>
-           <b ng-bind="value"></b>
-         </div>
-       </div>
-     </file>
-     <file name="script.js">
-       angular.module('cacheExampleApp', []).
-         controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
-           $scope.keys = [];
-           $scope.cache = $cacheFactory('cacheId');
-           $scope.put = function(key, value) {
-             if ($scope.cache.get(key) === undefined) {
-               $scope.keys.push(key);
-             }
-             $scope.cache.put(key, value === undefined ? null : value);
-           };
-         }]);
-     </file>
-     <file name="style.css">
-       p {
-         margin: 10px 0 3px;
-       }
-     </file>
-   </example>
- */
-function $CacheFactoryProvider() {
-
-  this.$get = function() {
-    var caches = {};
-
-    function cacheFactory(cacheId, options) {
-      if (cacheId in caches) {
-        throw minErr('$cacheFactory')('iid', "CacheId '{0}' is already taken!", cacheId);
-      }
-
-      var size = 0,
-          stats = extend({}, options, {id: cacheId}),
-          data = {},
-          capacity = (options && options.capacity) || Number.MAX_VALUE,
-          lruHash = {},
-          freshEnd = null,
-          staleEnd = null;
-
-      /**
-       * @ngdoc type
-       * @name $cacheFactory.Cache
-       *
-       * @description
-       * A cache object used to store and retrieve data, primarily used by
-       * {@link $http $http} and the {@link ng.directive:script script} directive to cache
-       * templates and other data.
-       *
-       * ```js
-       *  angular.module('superCache')
-       *    .factory('superCache', ['$cacheFactory', function($cacheFactory) {
-       *      return $cacheFactory('super-cache');
-       *    }]);
-       * ```
-       *
-       * Example test:
-       *
-       * ```js
-       *  it('should behave like a cache', inject(function(superCache) {
-       *    superCache.put('key', 'value');
-       *    superCache.put('another key', 'another value');
-       *
-       *    expect(superCache.info()).toEqual({
-       *      id: 'super-cache',
-       *      size: 2
-       *    });
-       *
-       *    superCache.remove('another key');
-       *    expect(superCache.get('another key')).toBeUndefined();
-       *
-       *    superCache.removeAll();
-       *    expect(superCache.info()).toEqual({
-       *      id: 'super-cache',
-       *      size: 0
-       *    });
-       *  }));
-       * ```
-       */
-      return caches[cacheId] = {
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#put
-         * @kind function
-         *
-         * @description
-         * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
-         * retrieved later, and incrementing the size of the cache if the key was not already
-         * present in the cache. If behaving like an LRU cache, it will also remove stale
-         * entries from the set.
-         *
-         * It will not insert undefined values into the cache.
-         *
-         * @param {string} key the key under which the cached data is stored.
-         * @param {*} value the value to store alongside the key. If it is undefined, the key
-         *    will not be stored.
-         * @returns {*} the value stored.
-         */
-        put: function(key, value) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
-
-            refresh(lruEntry);
-          }
-
-          if (isUndefined(value)) return;
-          if (!(key in data)) size++;
-          data[key] = value;
-
-          if (size > capacity) {
-            this.remove(staleEnd.key);
-          }
-
-          return value;
-        },
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#get
-         * @kind function
-         *
-         * @description
-         * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
-         *
-         * @param {string} key the key of the data to be retrieved
-         * @returns {*} the value stored.
-         */
-        get: function(key) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key];
-
-            if (!lruEntry) return;
-
-            refresh(lruEntry);
-          }
-
-          return data[key];
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#remove
-         * @kind function
-         *
-         * @description
-         * Removes an entry from the {@link $cacheFactory.Cache Cache} object.
-         *
-         * @param {string} key the key of the entry to be removed
-         */
-        remove: function(key) {
-          if (capacity < Number.MAX_VALUE) {
-            var lruEntry = lruHash[key];
-
-            if (!lruEntry) return;
-
-            if (lruEntry == freshEnd) freshEnd = lruEntry.p;
-            if (lruEntry == staleEnd) staleEnd = lruEntry.n;
-            link(lruEntry.n,lruEntry.p);
-
-            delete lruHash[key];
-          }
-
-          delete data[key];
-          size--;
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#removeAll
-         * @kind function
-         *
-         * @description
-         * Clears the cache object of any entries.
-         */
-        removeAll: function() {
-          data = {};
-          size = 0;
-          lruHash = {};
-          freshEnd = staleEnd = null;
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#destroy
-         * @kind function
-         *
-         * @description
-         * Destroys the {@link $cacheFactory.Cache Cache} object entirely,
-         * removing it from the {@link $cacheFactory $cacheFactory} set.
-         */
-        destroy: function() {
-          data = null;
-          stats = null;
-          lruHash = null;
-          delete caches[cacheId];
-        },
-
-
-        /**
-         * @ngdoc method
-         * @name $cacheFactory.Cache#info
-         * @kind function
-         *
-         * @description
-         * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
-         *
-         * @returns {object} an object with the following properties:
-         *   <ul>
-         *     <li>**id**: the id of the cache instance</li>
-         *     <li>**size**: the number of entries kept in the cache instance</li>
-         *     <li>**...**: any additional properties from the options object when creating the
-         *       cache.</li>
-         *   </ul>
-         */
-        info: function() {
-          return extend({}, stats, {size: size});
-        }
-      };
-
-
-      /**
-       * makes the `entry` the freshEnd of the LRU linked list
-       */
-      function refresh(entry) {
-        if (entry != freshEnd) {
-          if (!staleEnd) {
-            staleEnd = entry;
-          } else if (staleEnd == entry) {
-            staleEnd = entry.n;
-          }
-
-          link(entry.n, entry.p);
-          link(entry, freshEnd);
-          freshEnd = entry;
-          freshEnd.n = null;
-        }
-      }
-
-
-      /**
-       * bidirectionally links two entries of the LRU linked list
-       */
-      function link(nextEntry, prevEntry) {
-        if (nextEntry != prevEntry) {
-          if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify
-          if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify
-        }
-      }
-    }
-
-
-  /**
-   * @ngdoc method
-   * @name $cacheFactory#info
-   *
-   * @description
-   * Get information about all the caches that have been created
-   *
-   * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`
-   */
-    cacheFactory.info = function() {
-      var info = {};
-      forEach(caches, function(cache, cacheId) {
-        info[cacheId] = cache.info();
-      });
-      return info;
-    };
-
-
-  /**
-   * @ngdoc method
-   * @name $cacheFactory#get
-   *
-   * @description
-   * Get access to a cache object by the `cacheId` used when it was created.
-   *
-   * @param {string} cacheId Name or id of a cache to access.
-   * @returns {object} Cache object identified by the cacheId or undefined if no such cache.
-   */
-    cacheFactory.get = function(cacheId) {
-      return caches[cacheId];
-    };
-
-
-    return cacheFactory;
-  };
-}
-
-/**
- * @ngdoc service
- * @name $templateCache
- *
- * @description
- * The first time a template is used, it is loaded in the template cache for quick retrieval. You
- * can load templates directly into the cache in a `script` tag, or by consuming the
- * `$templateCache` service directly.
- *
- * Adding via the `script` tag:
- *
- * ```html
- *   <script type="text/ng-template" id="templateId.html">
- *     <p>This is the content of the template</p>
- *   </script>
- * ```
- *
- * **Note:** the `script` tag containing the template does not need to be included in the `head` of
- * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,
- * element with ng-app attribute), otherwise the template will be ignored.
- *
- * Adding via the $templateCache service:
- *
- * ```js
- * var myApp = angular.module('myApp', []);
- * myApp.run(function($templateCache) {
- *   $templateCache.put('templateId.html', 'This is the content of the template');
- * });
- * ```
- *
- * To retrieve the template later, simply use it in your HTML:
- * ```html
- * <div ng-include=" 'templateId.html' "></div>
- * ```
- *
- * or get it via Javascript:
- * ```js
- * $templateCache.get('templateId.html')
- * ```
- *
- * See {@link ng.$cacheFactory $cacheFactory}.
- *
- */
-function $TemplateCacheProvider() {
-  this.$get = ['$cacheFactory', function($cacheFactory) {
-    return $cacheFactory('templates');
-  }];
-}
-
-/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
- *
- * DOM-related variables:
- *
- * - "node" - DOM Node
- * - "element" - DOM Element or Node
- * - "$node" or "$element" - jqLite-wrapped node or element
- *
- *
- * Compiler related stuff:
- *
- * - "linkFn" - linking fn of a single directive
- * - "nodeLinkFn" - function that aggregates all linking fns for a particular node
- * - "childLinkFn" -  function that aggregates all linking fns for child nodes of a particular node
- * - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList)
- */
-
-
-/**
- * @ngdoc service
- * @name $compile
- * @kind function
- *
- * @description
- * Compiles an HTML string or DOM into a template and produces a template function, which
- * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
- *
- * The compilation is a process of walking the DOM tree and matching DOM elements to
- * {@link ng.$compileProvider#directive directives}.
- *
- * <div class="alert alert-warning">
- * **Note:** This document is an in-depth reference of all directive options.
- * For a gentle introduction to directives with examples of common use cases,
- * see the {@link guide/directive directive guide}.
- * </div>
- *
- * ## Comprehensive Directive API
- *
- * There are many different options for a directive.
- *
- * The difference resides in the return value of the factory function.
- * You can either return a "Directive Definition Object" (see below) that defines the directive properties,
- * or just the `postLink` function (all other properties will have the default values).
- *
- * <div class="alert alert-success">
- * **Best Practice:** It's recommended to use the "directive definition object" form.
- * </div>
- *
- * Here's an example directive declared with a Directive Definition Object:
- *
- * ```js
- *   var myModule = angular.module(...);
- *
- *   myModule.directive('directiveName', function factory(injectables) {
- *     var directiveDefinitionObject = {
- *       priority: 0,
- *       template: '<div></div>', // or // function(tElement, tAttrs) { ... },
- *       // or
- *       // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },
- *       transclude: false,
- *       restrict: 'A',
- *       templateNamespace: 'html',
- *       scope: false,
- *       controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
- *       controllerAs: 'stringAlias',
- *       require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
- *       compile: function compile(tElement, tAttrs, transclude) {
- *         return {
- *           pre: function preLink(scope, iElement, iAttrs, controller) { ... },
- *           post: function postLink(scope, iElement, iAttrs, controller) { ... }
- *         }
- *         // or
- *         // return function postLink( ... ) { ... }
- *       },
- *       // or
- *       // link: {
- *       //  pre: function preLink(scope, iElement, iAttrs, controller) { ... },
- *       //  post: function postLink(scope, iElement, iAttrs, controller) { ... }
- *       // }
- *       // or
- *       // link: function postLink( ... ) { ... }
- *     };
- *     return directiveDefinitionObject;
- *   });
- * ```
- *
- * <div class="alert alert-warning">
- * **Note:** Any unspecified options will use the default value. You can see the default values below.
- * </div>
- *
- * Therefore the above can be simplified as:
- *
- * ```js
- *   var myModule = angular.module(...);
- *
- *   myModule.directive('directiveName', function factory(injectables) {
- *     var directiveDefinitionObject = {
- *       link: function postLink(scope, iElement, iAttrs) { ... }
- *     };
- *     return directiveDefinitionObject;
- *     // or
- *     // return function postLink(scope, iElement, iAttrs) { ... }
- *   });
- * ```
- *
- *
- *
- * ### Directive Definition Object
- *
- * The directive definition object provides instructions to the {@link ng.$compile
- * compiler}. The attributes are:
- *
- * #### `multiElement`
- * When this property is set to true, the HTML compiler will collect DOM nodes between
- * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them
- * together as the directive elements. It is recommended that this feature be used on directives
- * which are not strictly behavioural (such as {@link ngClick}), and which
- * do not manipulate or replace child nodes (such as {@link ngInclude}).
- *
- * #### `priority`
- * When there are multiple directives defined on a single DOM element, sometimes it
- * is necessary to specify the order in which the directives are applied. The `priority` is used
- * to sort the directives before their `compile` functions get called. Priority is defined as a
- * number. Directives with greater numerical `priority` are compiled first. Pre-link functions
- * are also run in priority order, but post-link functions are run in reverse order. The order
- * of directives with the same priority is undefined. The default priority is `0`.
- *
- * #### `terminal`
- * If set to true then the current `priority` will be the last set of directives
- * which will execute (any directives at the current priority will still execute
- * as the order of execution on same `priority` is undefined). Note that expressions
- * and other directives used in the directive's template will also be excluded from execution.
- *
- * #### `scope`
- * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the
- * same element request a new scope, only one new scope is created. The new scope rule does not
- * apply for the root of the template since the root of the template always gets a new scope.
- *
- * **If set to `{}` (object hash),** then a new "isolate" scope is created. The 'isolate' scope differs from
- * normal scope in that it does not prototypically inherit from the parent scope. This is useful
- * when creating reusable components, which should not accidentally read or modify data in the
- * parent scope.
- *
- * The 'isolate' scope takes an object hash which defines a set of local scope properties
- * derived from the parent scope. These local properties are useful for aliasing values for
- * templates. Locals definition is a hash of local scope property to its source:
- *
- * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is
- *   always a string since DOM attributes are strings. If no `attr` name is specified  then the
- *   attribute name is assumed to be the same as the local name.
- *   Given `<widget my-attr="hello {{name}}">` and widget definition
- *   of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect
- *   the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the
- *   `localName` property on the widget scope. The `name` is read from the parent scope (not
- *   component scope).
- *
- * * `=` or `=attr` - set up bi-directional binding between a local scope property and the
- *   parent scope property of name defined via the value of the `attr` attribute. If no `attr`
- *   name is specified then the attribute name is assumed to be the same as the local name.
- *   Given `<widget my-attr="parentModel">` and widget definition of
- *   `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the
- *   value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected
- *   in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent
- *   scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You
- *   can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional. If
- *   you want to shallow watch for changes (i.e. $watchCollection instead of $watch) you can use
- *   `=*` or `=*attr` (`=*?` or `=*?attr` if the property is optional).
- *
- * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.
- *   If no `attr` name is specified then the attribute name is assumed to be the same as the
- *   local name. Given `<widget my-attr="count = count + value">` and widget definition of
- *   `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to
- *   a function wrapper for the `count = count + value` expression. Often it's desirable to
- *   pass data from the isolated scope via an expression to the parent scope, this can be
- *   done by passing a map of local variable names and values into the expression wrapper fn.
- *   For example, if the expression is `increment(amount)` then we can specify the amount value
- *   by calling the `localFn` as `localFn({amount: 22})`.
- *
- *
- * #### `bindToController`
- * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController: true` will
- * allow a component to have its properties bound to the controller, rather than to scope. When the controller
- * is instantiated, the initial values of the isolate scope bindings are already available.
- *
- * #### `controller`
- * Controller constructor function. The controller is instantiated before the
- * pre-linking phase and it is shared with other directives (see
- * `require` attribute). This allows the directives to communicate with each other and augment
- * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:
- *
- * * `$scope` - Current scope associated with the element
- * * `$element` - Current element
- * * `$attrs` - Current attributes object for the element
- * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
- *   `function([scope], cloneLinkingFn, futureParentElement)`.
- *    * `scope`: optional argument to override the scope.
- *    * `cloneLinkingFn`: optional argument to create clones of the original transcluded content.
- *    * `futureParentElement`:
- *        * defines the parent to which the `cloneLinkingFn` will add the cloned elements.
- *        * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.
- *        * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)
- *          and when the `cloneLinkinFn` is passed,
- *          as those elements need to created and cloned in a special way when they are defined outside their
- *          usual containers (e.g. like `<svg>`).
- *        * See also the `directive.templateNamespace` property.
- *
- *
- * #### `require`
- * Require another directive and inject its controller as the fourth argument to the linking function. The
- * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the
- * injected argument will be an array in corresponding order. If no such directive can be
- * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:
- *
- * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
- * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
- * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
- * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found.
- * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
- *   `null` to the `link` fn if not found.
- * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass
- *   `null` to the `link` fn if not found.
- *
- *
- * #### `controllerAs`
- * Controller alias at the directive scope. An alias for the controller so it
- * can be referenced at the directive template. The directive needs to define a scope for this
- * configuration to be used. Useful in the case when directive is used as component.
- *
- *
- * #### `restrict`
- * String of subset of `EACM` which restricts the directive to a specific directive
- * declaration style. If omitted, the defaults (elements and attributes) are used.
- *
- * * `E` - Element name (default): `<my-directive></my-directive>`
- * * `A` - Attribute (default): `<div my-directive="exp"></div>`
- * * `C` - Class: `<div class="my-directive: exp;"></div>`
- * * `M` - Comment: `<!-- directive: my-directive exp -->`
- *
- *
- * #### `templateNamespace`
- * String representing the document type used by the markup in the template.
- * AngularJS needs this information as those elements need to be created and cloned
- * in a special way when they are defined outside their usual containers like `<svg>` and `<math>`.
- *
- * * `html` - All root nodes in the template are HTML. Root nodes may also be
- *   top-level elements such as `<svg>` or `<math>`.
- * * `svg` - The root nodes in the template are SVG elements (excluding `<math>`).
- * * `math` - The root nodes in the template are MathML elements (excluding `<svg>`).
- *
- * If no `templateNamespace` is specified, then the namespace is considered to be `html`.
- *
- * #### `template`
- * HTML markup that may:
- * * Replace the contents of the directive's element (default).
- * * Replace the directive's element itself (if `replace` is true - DEPRECATED).
- * * Wrap the contents of the directive's element (if `transclude` is true).
- *
- * Value may be:
- *
- * * A string. For example `<div red-on-hover>{{delete_str}}</div>`.
- * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile`
- *   function api below) and returns a string value.
- *
- *
- * #### `templateUrl`
- * This is similar to `template` but the template is loaded from the specified URL, asynchronously.
- *
- * Because template loading is asynchronous the compiler will suspend compilation of directives on that element
- * for later when the template has been resolved.  In the meantime it will continue to compile and link
- * sibling and parent elements as though this element had not contained any directives.
- *
- * The compiler does not suspend the entire compilation to wait for templates to be loaded because this
- * would result in the whole app "stalling" until all templates are loaded asynchronously - even in the
- * case when only one deeply nested directive has `templateUrl`.
- *
- * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache}
- *
- * You can specify `templateUrl` as a string representing the URL or as a function which takes two
- * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns
- * a string value representing the url.  In either case, the template URL is passed through {@link
- * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}.
- *
- *
- * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0)
- * specify what the template should replace. Defaults to `false`.
- *
- * * `true` - the template will replace the directive's element.
- * * `false` - the template will replace the contents of the directive's element.
- *
- * The replacement process migrates all of the attributes / classes from the old element to the new
- * one. See the {@link guide/directive#template-expanding-directive
- * Directives Guide} for an example.
- *
- * There are very few scenarios where element replacement is required for the application function,
- * the main one being reusable custom components that are used within SVG contexts
- * (because SVG doesn't work with custom elements in the DOM tree).
- *
- * #### `transclude`
- * Extract the contents of the element where the directive appears and make it available to the directive.
- * The contents are compiled and provided to the directive as a **transclusion function**. See the
- * {@link $compile#transclusion Transclusion} section below.
- *
- * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the
- * directive's element or the entire element:
- *
- * * `true` - transclude the content (i.e. the child nodes) of the directive's element.
- * * `'element'` - transclude the whole of the directive's element including any directives on this
- *   element that defined at a lower priority than this directive. When used, the `template`
- *   property is ignored.
- *
- *
- * #### `compile`
- *
- * ```js
- *   function compile(tElement, tAttrs, transclude) { ... }
- * ```
- *
- * The compile function deals with transforming the template DOM. Since most directives do not do
- * template transformation, it is not used often. The compile function takes the following arguments:
- *
- *   * `tElement` - template element - The element where the directive has been declared. It is
- *     safe to do template transformation on the element and child elements only.
- *
- *   * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared
- *     between all directive compile functions.
- *
- *   * `transclude` -  [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)`
- *
- * <div class="alert alert-warning">
- * **Note:** The template instance and the link instance may be different objects if the template has
- * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that
- * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
- * should be done in a linking function rather than in a compile function.
- * </div>
-
- * <div class="alert alert-warning">
- * **Note:** The compile function cannot handle directives that recursively use themselves in their
- * own templates or compile functions. Compiling these directives results in an infinite loop and a
- * stack overflow errors.
- *
- * This can be avoided by manually using $compile in the postLink function to imperatively compile
- * a directive's template instead of relying on automatic template compilation via `template` or
- * `templateUrl` declaration or manual compilation inside the compile function.
- * </div>
- *
- * <div class="alert alert-error">
- * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
- *   e.g. does not know about the right outer scope. Please use the transclude function that is passed
- *   to the link function instead.
- * </div>
-
- * A compile function can have a return value which can be either a function or an object.
- *
- * * returning a (post-link) function - is equivalent to registering the linking function via the
- *   `link` property of the config object when the compile function is empty.
- *
- * * returning an object with function(s) registered via `pre` and `post` properties - allows you to
- *   control when a linking function should be called during the linking phase. See info about
- *   pre-linking and post-linking functions below.
- *
- *
- * #### `link`
- * This property is used only if the `compile` property is not defined.
- *
- * ```js
- *   function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
- * ```
- *
- * The link function is responsible for registering DOM listeners as well as updating the DOM. It is
- * executed after the template has been cloned. This is where most of the directive logic will be
- * put.
- *
- *   * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the
- *     directive for registering {@link ng.$rootScope.Scope#$watch watches}.
- *
- *   * `iElement` - instance element - The element where the directive is to be used. It is safe to
- *     manipulate the children of the element only in `postLink` function since the children have
- *     already been linked.
- *
- *   * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared
- *     between all directive linking functions.
- *
- *   * `controller` - a controller instance - A controller instance if at least one directive on the
- *     element defines a controller. The controller is shared among all the directives, which allows
- *     the directives to use the controllers as a communication channel.
- *
- *   * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope.
- *     This is the same as the `$transclude`
- *     parameter of directive controllers, see there for details.
- *     `function([scope], cloneLinkingFn, futureParentElement)`.
- *
- * #### Pre-linking function
- *
- * Executed before the child elements are linked. Not safe to do DOM transformation since the
- * compiler linking function will fail to locate the correct elements for linking.
- *
- * #### Post-linking function
- *
- * Executed after the child elements are linked.
- *
- * Note that child elements that contain `templateUrl` directives will not have been compiled
- * and linked since they are waiting for their template to load asynchronously and their own
- * compilation and linking has been suspended until that occurs.
- *
- * It is safe to do DOM transformation in the post-linking function on elements that are not waiting
- * for their async templates to be resolved.
- *
- *
- * ### Transclusion
- *
- * Transclusion is the process of extracting a collection of DOM element from one part of the DOM and
- * copying them to another part of the DOM, while maintaining their connection to the original AngularJS
- * scope from where they were taken.
- *
- * Transclusion is used (often with {@link ngTransclude}) to insert the
- * original contents of a directive's element into a specified place in the template of the directive.
- * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded
- * content has access to the properties on the scope from which it was taken, even if the directive
- * has isolated scope.
- * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}.
- *
- * This makes it possible for the widget to have private state for its template, while the transcluded
- * content has access to its originating scope.
- *
- * <div class="alert alert-warning">
- * **Note:** When testing an element transclude directive you must not place the directive at the root of the
- * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives
- * Testing Transclusion Directives}.
- * </div>
- *
- * #### Transclusion Functions
- *
- * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion
- * function** to the directive's `link` function and `controller`. This transclusion function is a special
- * **linking function** that will return the compiled contents linked to a new transclusion scope.
- *
- * <div class="alert alert-info">
- * If you are just using {@link ngTransclude} then you don't need to worry about this function, since
- * ngTransclude will deal with it for us.
- * </div>
- *
- * If you want to manually control the insertion and removal of the transcluded content in your directive
- * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery
- * object that contains the compiled DOM, which is linked to the correct transclusion scope.
- *
- * When you call a transclusion function you can pass in a **clone attach function**. This function accepts
- * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded
- * content and the `scope` is the newly created transclusion scope, to which the clone is bound.
- *
- * <div class="alert alert-info">
- * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function
- * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope.
- * </div>
- *
- * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone
- * attach function**:
- *
- * ```js
- * var transcludedContent, transclusionScope;
- *
- * $transclude(function(clone, scope) {
- *   element.append(clone);
- *   transcludedContent = clone;
- *   transclusionScope = scope;
- * });
- * ```
- *
- * Later, if you want to remove the transcluded content from your DOM then you should also destroy the
- * associated transclusion scope:
- *
- * ```js
- * transcludedContent.remove();
- * transclusionScope.$destroy();
- * ```
- *
- * <div class="alert alert-info">
- * **Best Practice**: if you intend to add and remove transcluded content manually in your directive
- * (by calling the transclude function to get the DOM and and calling `element.remove()` to remove it),
- * then you are also responsible for calling `$destroy` on the transclusion scope.
- * </div>
- *
- * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat}
- * automatically destroy their transluded clones as necessary so you do not need to worry about this if
- * you are simply using {@link ngTransclude} to inject the transclusion into your directive.
- *
- *
- * #### Transclusion Scopes
- *
- * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion
- * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed
- * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it
- * was taken.
- *
- * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look
- * like this:
- *
- * ```html
- * <div ng-app>
- *   <div isolate>
- *     <div transclusion>
- *     </div>
- *   </div>
- * </div>
- * ```
- *
- * The `$parent` scope hierarchy will look like this:
- *
- * ```
- * - $rootScope
- *   - isolate
- *     - transclusion
- * ```
- *
- * but the scopes will inherit prototypically from different scopes to their `$parent`.
- *
- * ```
- * - $rootScope
- *   - transclusion
- * - isolate
- * ```
- *
- *
- * ### Attributes
- *
- * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the
- * `link()` or `compile()` functions. It has a variety of uses.
- *
- * accessing *Normalized attribute names:*
- * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'.
- * the attributes object allows for normalized access to
- *   the attributes.
- *
- * * *Directive inter-communication:* All directives share the same instance of the attributes
- *   object which allows the directives to use the attributes object as inter directive
- *   communication.
- *
- * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object
- *   allowing other directives to read the interpolated value.
- *
- * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes
- *   that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also
- *   the only way to easily get the actual value because during the linking phase the interpolation
- *   hasn't been evaluated yet and so the value is at this time set to `undefined`.
- *
- * ```js
- * function linkingFn(scope, elm, attrs, ctrl) {
- *   // get the attribute value
- *   console.log(attrs.ngModel);
- *
- *   // change the attribute
- *   attrs.$set('ngModel', 'new value');
- *
- *   // observe changes to interpolated attribute
- *   attrs.$observe('ngModel', function(value) {
- *     console.log('ngModel has changed value to ' + value);
- *   });
- * }
- * ```
- *
- * ## Example
- *
- * <div class="alert alert-warning">
- * **Note**: Typically directives are registered with `module.directive`. The example below is
- * to illustrate how `$compile` works.
- * </div>
- *
- <example module="compileExample">
-   <file name="index.html">
-    <script>
-      angular.module('compileExample', [], function($compileProvider) {
-        // configure new 'compile' directive by passing a directive
-        // factory function. The factory function injects the '$compile'
-        $compileProvider.directive('compile', function($compile) {
-          // directive factory creates a link function
-          return function(scope, element, attrs) {
-            scope.$watch(
-              function(scope) {
-                 // watch the 'compile' expression for changes
-                return scope.$eval(attrs.compile);
-              },
-              function(value) {
-                // when the 'compile' expression changes
-                // assign it into the current DOM
-                element.html(value);
-
-                // compile the new DOM and link it to the current
-                // scope.
-                // NOTE: we only compile .childNodes so that
-                // we don't get into infinite loop compiling ourselves
-                $compile(element.contents())(scope);
-              }
-            );
-          };
-        });
-      })
-      .controller('GreeterController', ['$scope', function($scope) {
-        $scope.name = 'Angular';
-        $scope.html = 'Hello {{name}}';
-      }]);
-    </script>
-    <div ng-controller="GreeterController">
-      <input ng-model="name"> <br>
-      <textarea ng-model="html"></textarea> <br>
-      <div compile="html"></div>
-    </div>
-   </file>
-   <file name="protractor.js" type="protractor">
-     it('should auto compile', function() {
-       var textarea = $('textarea');
-       var output = $('div[compile]');
-       // The initial state reads 'Hello Angular'.
-       expect(output.getText()).toBe('Hello Angular');
-       textarea.clear();
-       textarea.sendKeys('{{name}}!');
-       expect(output.getText()).toBe('Angular!');
-     });
-   </file>
- </example>
-
- *
- *
- * @param {string|DOMElement} element Element or HTML string to compile into a template function.
- * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
- *
- * <div class="alert alert-error">
- * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
- *   e.g. will not use the right outer scope. Please pass the transclude function as a
- *   `parentBoundTranscludeFn` to the link function instead.
- * </div>
- *
- * @param {number} maxPriority only apply directives lower than given priority (Only effects the
- *                 root element(s), not their children)
- * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
- * (a DOM element/tree) to a scope. Where:
- *
- *  * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
- *  * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the
- *  `template` and call the `cloneAttachFn` function allowing the caller to attach the
- *  cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is
- *  called as: <br> `cloneAttachFn(clonedElement, scope)` where:
- *
- *      * `clonedElement` - is a clone of the original `element` passed into the compiler.
- *      * `scope` - is the current scope with which the linking function is working with.
- *
- *  * `options` - An optional object hash with linking options. If `options` is provided, then the following
- *  keys may be used to control linking behavior:
- *
- *      * `parentBoundTranscludeFn` - the transclude function made available to
- *        directives; if given, it will be passed through to the link functions of
- *        directives found in `element` during compilation.
- *      * `transcludeControllers` - an object hash with keys that map controller names
- *        to controller instances; if given, it will make the controllers
- *        available to directives.
- *      * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
- *        the cloned elements; only needed for transcludes that are allowed to contain non html
- *        elements (e.g. SVG elements). See also the directive.controller property.
- *
- * Calling the linking function returns the element of the template. It is either the original
- * element passed in, or the clone of the element if the `cloneAttachFn` is provided.
- *
- * After linking the view is not updated until after a call to $digest which typically is done by
- * Angular automatically.
- *
- * If you need access to the bound view, there are two ways to do it:
- *
- * - If you are not asking the linking function to clone the template, create the DOM element(s)
- *   before you send them to the compiler and keep this reference around.
- *   ```js
- *     var element = $compile('<p>{{total}}</p>')(scope);
- *   ```
- *
- * - if on the other hand, you need the element to be cloned, the view reference from the original
- *   example would not point to the clone, but rather to the original template that was cloned. In
- *   this case, you can access the clone via the cloneAttachFn:
- *   ```js
- *     var templateElement = angular.element('<p>{{total}}</p>'),
- *         scope = ....;
- *
- *     var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
- *       //attach the clone to DOM document at the right place
- *     });
- *
- *     //now we have reference to the cloned DOM via `clonedElement`
- *   ```
- *
- *
- * For information on how the compiler works, see the
- * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide.
- */
-
-var $compileMinErr = minErr('$compile');
-
-/**
- * @ngdoc provider
- * @name $compileProvider
- *
- * @description
- */
-$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider'];
-function $CompileProvider($provide, $$sanitizeUriProvider) {
-  var hasDirectives = {},
-      Suffix = 'Directive',
-      COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
-      CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?:\:([^;]+))?;?)/,
-      ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'),
-      REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/;
-
-  // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
-  // The assumption is that future DOM event attribute names will begin with
-  // 'on' and be composed of only English letters.
-  var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
-
-  function parseIsolateBindings(scope, directiveName) {
-    var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/;
-
-    var bindings = {};
-
-    forEach(scope, function(definition, scopeName) {
-      var match = definition.match(LOCAL_REGEXP);
-
-      if (!match) {
-        throw $compileMinErr('iscp',
-            "Invalid isolate scope definition for directive '{0}'." +
-            " Definition: {... {1}: '{2}' ...}",
-            directiveName, scopeName, definition);
-      }
-
-      bindings[scopeName] = {
-        mode: match[1][0],
-        collection: match[2] === '*',
-        optional: match[3] === '?',
-        attrName: match[4] || scopeName
-      };
-    });
-
-    return bindings;
-  }
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#directive
-   * @kind function
-   *
-   * @description
-   * Register a new directive with the compiler.
-   *
-   * @param {string|Object} name Name of the directive in camel-case (i.e. <code>ngBind</code> which
-   *    will match as <code>ng-bind</code>), or an object map of directives where the keys are the
-   *    names and the values are the factories.
-   * @param {Function|Array} directiveFactory An injectable directive factory function. See
-   *    {@link guide/directive} for more info.
-   * @returns {ng.$compileProvider} Self for chaining.
-   */
-   this.directive = function registerDirective(name, directiveFactory) {
-    assertNotHasOwnProperty(name, 'directive');
-    if (isString(name)) {
-      assertArg(directiveFactory, 'directiveFactory');
-      if (!hasDirectives.hasOwnProperty(name)) {
-        hasDirectives[name] = [];
-        $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',
-          function($injector, $exceptionHandler) {
-            var directives = [];
-            forEach(hasDirectives[name], function(directiveFactory, index) {
-              try {
-                var directive = $injector.invoke(directiveFactory);
-                if (isFunction(directive)) {
-                  directive = { compile: valueFn(directive) };
-                } else if (!directive.compile && directive.link) {
-                  directive.compile = valueFn(directive.link);
-                }
-                directive.priority = directive.priority || 0;
-                directive.index = index;
-                directive.name = directive.name || name;
-                directive.require = directive.require || (directive.controller && directive.name);
-                directive.restrict = directive.restrict || 'EA';
-                if (isObject(directive.scope)) {
-                  directive.$$isolateBindings = parseIsolateBindings(directive.scope, directive.name);
-                }
-                directives.push(directive);
-              } catch (e) {
-                $exceptionHandler(e);
-              }
-            });
-            return directives;
-          }]);
-      }
-      hasDirectives[name].push(directiveFactory);
-    } else {
-      forEach(name, reverseParams(registerDirective));
-    }
-    return this;
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#aHrefSanitizationWhitelist
-   * @kind function
-   *
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during a[href] sanitization.
-   *
-   * The sanitization is a security measure aimed at preventing XSS attacks via html links.
-   *
-   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.aHrefSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);
-      return this;
-    } else {
-      return $$sanitizeUriProvider.aHrefSanitizationWhitelist();
-    }
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name $compileProvider#imgSrcSanitizationWhitelist
-   * @kind function
-   *
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during img[src] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.imgSrcSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);
-      return this;
-    } else {
-      return $$sanitizeUriProvider.imgSrcSanitizationWhitelist();
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name  $compileProvider#debugInfoEnabled
-   *
-   * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the
-   * current debugInfoEnabled state
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   *
-   * @kind function
-   *
-   * @description
-   * Call this method to enable/disable various debug runtime information in the compiler such as adding
-   * binding information and a reference to the current scope on to DOM elements.
-   * If enabled, the compiler will add the following to DOM elements that have been bound to the scope
-   * * `ng-binding` CSS class
-   * * `$binding` data property containing an array of the binding expressions
-   *
-   * You may want to disable this in production for a significant performance boost. See
-   * {@link guide/production#disabling-debug-data Disabling Debug Data} for more.
-   *
-   * The default value is true.
-   */
-  var debugInfoEnabled = true;
-  this.debugInfoEnabled = function(enabled) {
-    if (isDefined(enabled)) {
-      debugInfoEnabled = enabled;
-      return this;
-    }
-    return debugInfoEnabled;
-  };
-
-  this.$get = [
-            '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse',
-            '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri',
-    function($injector,   $interpolate,   $exceptionHandler,   $templateRequest,   $parse,
-             $controller,   $rootScope,   $document,   $sce,   $animate,   $$sanitizeUri) {
-
-    var Attributes = function(element, attributesToCopy) {
-      if (attributesToCopy) {
-        var keys = Object.keys(attributesToCopy);
-        var i, l, key;
-
-        for (i = 0, l = keys.length; i < l; i++) {
-          key = keys[i];
-          this[key] = attributesToCopy[key];
-        }
-      } else {
-        this.$attr = {};
-      }
-
-      this.$$element = element;
-    };
-
-    Attributes.prototype = {
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$normalize
-       * @kind function
-       *
-       * @description
-       * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or
-       * `data-`) to its normalized, camelCase form.
-       *
-       * Also there is special case for Moz prefix starting with upper case letter.
-       *
-       * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives}
-       *
-       * @param {string} name Name to normalize
-       */
-      $normalize: directiveNormalize,
-
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$addClass
-       * @kind function
-       *
-       * @description
-       * Adds the CSS class value specified by the classVal parameter to the element. If animations
-       * are enabled then an animation will be triggered for the class addition.
-       *
-       * @param {string} classVal The className value that will be added to the element
-       */
-      $addClass: function(classVal) {
-        if (classVal && classVal.length > 0) {
-          $animate.addClass(this.$$element, classVal);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$removeClass
-       * @kind function
-       *
-       * @description
-       * Removes the CSS class value specified by the classVal parameter from the element. If
-       * animations are enabled then an animation will be triggered for the class removal.
-       *
-       * @param {string} classVal The className value that will be removed from the element
-       */
-      $removeClass: function(classVal) {
-        if (classVal && classVal.length > 0) {
-          $animate.removeClass(this.$$element, classVal);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$updateClass
-       * @kind function
-       *
-       * @description
-       * Adds and removes the appropriate CSS class values to the element based on the difference
-       * between the new and old CSS class values (specified as newClasses and oldClasses).
-       *
-       * @param {string} newClasses The current CSS className value
-       * @param {string} oldClasses The former CSS className value
-       */
-      $updateClass: function(newClasses, oldClasses) {
-        var toAdd = tokenDifference(newClasses, oldClasses);
-        if (toAdd && toAdd.length) {
-          $animate.addClass(this.$$element, toAdd);
-        }
-
-        var toRemove = tokenDifference(oldClasses, newClasses);
-        if (toRemove && toRemove.length) {
-          $animate.removeClass(this.$$element, toRemove);
-        }
-      },
-
-      /**
-       * Set a normalized attribute on the element in a way such that all directives
-       * can share the attribute. This function properly handles boolean attributes.
-       * @param {string} key Normalized key. (ie ngAttribute)
-       * @param {string|boolean} value The value to set. If `null` attribute will be deleted.
-       * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute.
-       *     Defaults to true.
-       * @param {string=} attrName Optional none normalized name. Defaults to key.
-       */
-      $set: function(key, value, writeAttr, attrName) {
-        // TODO: decide whether or not to throw an error if "class"
-        //is set through this function since it may cause $updateClass to
-        //become unstable.
-
-        var node = this.$$element[0],
-            booleanKey = getBooleanAttrName(node, key),
-            aliasedKey = getAliasedAttrName(node, key),
-            observer = key,
-            nodeName;
-
-        if (booleanKey) {
-          this.$$element.prop(key, value);
-          attrName = booleanKey;
-        } else if (aliasedKey) {
-          this[aliasedKey] = value;
-          observer = aliasedKey;
-        }
-
-        this[key] = value;
-
-        // translate normalized key to actual key
-        if (attrName) {
-          this.$attr[key] = attrName;
-        } else {
-          attrName = this.$attr[key];
-          if (!attrName) {
-            this.$attr[key] = attrName = snake_case(key, '-');
-          }
-        }
-
-        nodeName = nodeName_(this.$$element);
-
-        if ((nodeName === 'a' && key === 'href') ||
-            (nodeName === 'img' && key === 'src')) {
-          // sanitize a[href] and img[src] values
-          this[key] = value = $$sanitizeUri(value, key === 'src');
-        } else if (nodeName === 'img' && key === 'srcset') {
-          // sanitize img[srcset] values
-          var result = "";
-
-          // first check if there are spaces because it's not the same pattern
-          var trimmedSrcset = trim(value);
-          //                (   999x   ,|   999w   ,|   ,|,   )
-          var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;
-          var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/;
-
-          // split srcset into tuple of uri and descriptor except for the last item
-          var rawUris = trimmedSrcset.split(pattern);
-
-          // for each tuples
-          var nbrUrisWith2parts = Math.floor(rawUris.length / 2);
-          for (var i = 0; i < nbrUrisWith2parts; i++) {
-            var innerIdx = i * 2;
-            // sanitize the uri
-            result += $$sanitizeUri(trim(rawUris[innerIdx]), true);
-            // add the descriptor
-            result += (" " + trim(rawUris[innerIdx + 1]));
-          }
-
-          // split the last item into uri and descriptor
-          var lastTuple = trim(rawUris[i * 2]).split(/\s/);
-
-          // sanitize the last uri
-          result += $$sanitizeUri(trim(lastTuple[0]), true);
-
-          // and add the last descriptor if any
-          if (lastTuple.length === 2) {
-            result += (" " + trim(lastTuple[1]));
-          }
-          this[key] = value = result;
-        }
-
-        if (writeAttr !== false) {
-          if (value === null || value === undefined) {
-            this.$$element.removeAttr(attrName);
-          } else {
-            this.$$element.attr(attrName, value);
-          }
-        }
-
-        // fire observers
-        var $$observers = this.$$observers;
-        $$observers && forEach($$observers[observer], function(fn) {
-          try {
-            fn(value);
-          } catch (e) {
-            $exceptionHandler(e);
-          }
-        });
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $compile.directive.Attributes#$observe
-       * @kind function
-       *
-       * @description
-       * Observes an interpolated attribute.
-       *
-       * The observer function will be invoked once during the next `$digest` following
-       * compilation. The observer is then invoked whenever the interpolated value
-       * changes.
-       *
-       * @param {string} key Normalized key. (ie ngAttribute) .
-       * @param {function(interpolatedValue)} fn Function that will be called whenever
-                the interpolated value of the attribute changes.
-       *        See the {@link guide/directive#text-and-attribute-bindings Directives} guide for more info.
-       * @returns {function()} Returns a deregistration function for this observer.
-       */
-      $observe: function(key, fn) {
-        var attrs = this,
-            $$observers = (attrs.$$observers || (attrs.$$observers = createMap())),
-            listeners = ($$observers[key] || ($$observers[key] = []));
-
-        listeners.push(fn);
-        $rootScope.$evalAsync(function() {
-          if (!listeners.$$inter && attrs.hasOwnProperty(key)) {
-            // no one registered attribute interpolation function, so lets call it manually
-            fn(attrs[key]);
-          }
-        });
-
-        return function() {
-          arrayRemove(listeners, fn);
-        };
-      }
-    };
-
-
-    function safeAddClass($element, className) {
-      try {
-        $element.addClass(className);
-      } catch (e) {
-        // ignore, since it means that we are trying to set class on
-        // SVG element, where class name is read-only.
-      }
-    }
-
-
-    var startSymbol = $interpolate.startSymbol(),
-        endSymbol = $interpolate.endSymbol(),
-        denormalizeTemplate = (startSymbol == '{{' || endSymbol  == '}}')
-            ? identity
-            : function denormalizeTemplate(template) {
-              return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol);
-        },
-        NG_ATTR_BINDING = /^ngAttr[A-Z]/;
-
-    compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {
-      var bindings = $element.data('$binding') || [];
-
-      if (isArray(binding)) {
-        bindings = bindings.concat(binding);
-      } else {
-        bindings.push(binding);
-      }
-
-      $element.data('$binding', bindings);
-    } : noop;
-
-    compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {
-      safeAddClass($element, 'ng-binding');
-    } : noop;
-
-    compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
-      var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';
-      $element.data(dataName, scope);
-    } : noop;
-
-    compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {
-      safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope');
-    } : noop;
-
-    return compile;
-
-    //================================
-
-    function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective,
-                        previousCompileContext) {
-      if (!($compileNodes instanceof jqLite)) {
-        // jquery always rewraps, whereas we need to preserve the original selector so that we can
-        // modify it.
-        $compileNodes = jqLite($compileNodes);
-      }
-      // We can not compile top level text elements since text nodes can be merged and we will
-      // not be able to attach scope data to them, so we will wrap them in <span>
-      forEach($compileNodes, function(node, index) {
-        if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) {
-          $compileNodes[index] = jqLite(node).wrap('<span></span>').parent()[0];
-        }
-      });
-      var compositeLinkFn =
-              compileNodes($compileNodes, transcludeFn, $compileNodes,
-                           maxPriority, ignoreDirective, previousCompileContext);
-      compile.$$addScopeClass($compileNodes);
-      var namespace = null;
-      return function publicLinkFn(scope, cloneConnectFn, options) {
-        assertArg(scope, 'scope');
-
-        options = options || {};
-        var parentBoundTranscludeFn = options.parentBoundTranscludeFn,
-          transcludeControllers = options.transcludeControllers,
-          futureParentElement = options.futureParentElement;
-
-        // When `parentBoundTranscludeFn` is passed, it is a
-        // `controllersBoundTransclude` function (it was previously passed
-        // as `transclude` to directive.link) so we must unwrap it to get
-        // its `boundTranscludeFn`
-        if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
-          parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
-        }
-
-        if (!namespace) {
-          namespace = detectNamespaceForChildElements(futureParentElement);
-        }
-        var $linkNode;
-        if (namespace !== 'html') {
-          // When using a directive with replace:true and templateUrl the $compileNodes
-          // (or a child element inside of them)
-          // might change, so we need to recreate the namespace adapted compileNodes
-          // for call to the link function.
-          // Note: This will already clone the nodes...
-          $linkNode = jqLite(
-            wrapTemplate(namespace, jqLite('<div>').append($compileNodes).html())
-          );
-        } else if (cloneConnectFn) {
-          // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart
-          // and sometimes changes the structure of the DOM.
-          $linkNode = JQLitePrototype.clone.call($compileNodes);
-        } else {
-          $linkNode = $compileNodes;
-        }
-
-        if (transcludeControllers) {
-          for (var controllerName in transcludeControllers) {
-            $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance);
-          }
-        }
-
-        compile.$$addScopeInfo($linkNode, scope);
-
-        if (cloneConnectFn) cloneConnectFn($linkNode, scope);
-        if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);
-        return $linkNode;
-      };
-    }
-
-    function detectNamespaceForChildElements(parentElement) {
-      // TODO: Make this detect MathML as well...
-      var node = parentElement && parentElement[0];
-      if (!node) {
-        return 'html';
-      } else {
-        return nodeName_(node) !== 'foreignobject' && node.toString().match(/SVG/) ? 'svg' : 'html';
-      }
-    }
-
-    /**
-     * Compile function matches each node in nodeList against the directives. Once all directives
-     * for a particular node are collected their compile functions are executed. The compile
-     * functions return values - the linking functions - are combined into a composite linking
-     * function, which is the a linking function for the node.
-     *
-     * @param {NodeList} nodeList an array of nodes or NodeList to compile
-     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
-     *        scope argument is auto-generated to the new child of the transcluded parent scope.
-     * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then
-     *        the rootElement must be set the jqLite collection of the compile root. This is
-     *        needed so that the jqLite collection items can be replaced with widgets.
-     * @param {number=} maxPriority Max directive priority.
-     * @returns {Function} A composite linking function of all of the matched directives or null.
-     */
-    function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective,
-                            previousCompileContext) {
-      var linkFns = [],
-          attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;
-
-      for (var i = 0; i < nodeList.length; i++) {
-        attrs = new Attributes();
-
-        // we must always refer to nodeList[i] since the nodes can be replaced underneath us.
-        directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined,
-                                        ignoreDirective);
-
-        nodeLinkFn = (directives.length)
-            ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement,
-                                      null, [], [], previousCompileContext)
-            : null;
-
-        if (nodeLinkFn && nodeLinkFn.scope) {
-          compile.$$addScopeClass(attrs.$$element);
-        }
-
-        childLinkFn = (nodeLinkFn && nodeLinkFn.terminal ||
-                      !(childNodes = nodeList[i].childNodes) ||
-                      !childNodes.length)
-            ? null
-            : compileNodes(childNodes,
-                 nodeLinkFn ? (
-                  (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement)
-                     && nodeLinkFn.transclude) : transcludeFn);
-
-        if (nodeLinkFn || childLinkFn) {
-          linkFns.push(i, nodeLinkFn, childLinkFn);
-          linkFnFound = true;
-          nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;
-        }
-
-        //use the previous context only for the first element in the virtual group
-        previousCompileContext = null;
-      }
-
-      // return a linking function if we have found anything, null otherwise
-      return linkFnFound ? compositeLinkFn : null;
-
-      function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) {
-        var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn;
-        var stableNodeList;
-
-
-        if (nodeLinkFnFound) {
-          // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our
-          // offsets don't get screwed up
-          var nodeListLength = nodeList.length;
-          stableNodeList = new Array(nodeListLength);
-
-          // create a sparse array by only copying the elements which have a linkFn
-          for (i = 0; i < linkFns.length; i+=3) {
-            idx = linkFns[i];
-            stableNodeList[idx] = nodeList[idx];
-          }
-        } else {
-          stableNodeList = nodeList;
-        }
-
-        for (i = 0, ii = linkFns.length; i < ii;) {
-          node = stableNodeList[linkFns[i++]];
-          nodeLinkFn = linkFns[i++];
-          childLinkFn = linkFns[i++];
-
-          if (nodeLinkFn) {
-            if (nodeLinkFn.scope) {
-              childScope = scope.$new();
-              compile.$$addScopeInfo(jqLite(node), childScope);
-            } else {
-              childScope = scope;
-            }
-
-            if (nodeLinkFn.transcludeOnThisElement) {
-              childBoundTranscludeFn = createBoundTranscludeFn(
-                  scope, nodeLinkFn.transclude, parentBoundTranscludeFn,
-                  nodeLinkFn.elementTranscludeOnThisElement);
-
-            } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) {
-              childBoundTranscludeFn = parentBoundTranscludeFn;
-
-            } else if (!parentBoundTranscludeFn && transcludeFn) {
-              childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);
-
-            } else {
-              childBoundTranscludeFn = null;
-            }
-
-            nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn);
-
-          } else if (childLinkFn) {
-            childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn);
-          }
-        }
-      }
-    }
-
-    function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn, elementTransclusion) {
-
-      var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {
-
-        if (!transcludedScope) {
-          transcludedScope = scope.$new(false, containingScope);
-          transcludedScope.$$transcluded = true;
-        }
-
-        return transcludeFn(transcludedScope, cloneFn, {
-          parentBoundTranscludeFn: previousBoundTranscludeFn,
-          transcludeControllers: controllers,
-          futureParentElement: futureParentElement
-        });
-      };
-
-      return boundTranscludeFn;
-    }
-
-    /**
-     * Looks for directives on the given node and adds them to the directive collection which is
-     * sorted.
-     *
-     * @param node Node to search.
-     * @param directives An array to which the directives are added to. This array is sorted before
-     *        the function returns.
-     * @param attrs The shared attrs object which is used to populate the normalized attributes.
-     * @param {number=} maxPriority Max directive priority.
-     */
-    function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
-      var nodeType = node.nodeType,
-          attrsMap = attrs.$attr,
-          match,
-          className;
-
-      switch (nodeType) {
-        case NODE_TYPE_ELEMENT: /* Element */
-          // use the node name: <directive>
-          addDirective(directives,
-              directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective);
-
-          // iterate over the attributes
-          for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes,
-                   j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
-            var attrStartName = false;
-            var attrEndName = false;
-
-            attr = nAttrs[j];
-            name = attr.name;
-            value = trim(attr.value);
-
-            // support ngAttr attribute binding
-            ngAttrName = directiveNormalize(name);
-            if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) {
-              name = name.replace(PREFIX_REGEXP, '')
-                .substr(8).replace(/_(.)/g, function(match, letter) {
-                  return letter.toUpperCase();
-                });
-            }
-
-            var directiveNName = ngAttrName.replace(/(Start|End)$/, '');
-            if (directiveIsMultiElement(directiveNName)) {
-              if (ngAttrName === directiveNName + 'Start') {
-                attrStartName = name;
-                attrEndName = name.substr(0, name.length - 5) + 'end';
-                name = name.substr(0, name.length - 6);
-              }
-            }
-
-            nName = directiveNormalize(name.toLowerCase());
-            attrsMap[nName] = name;
-            if (isNgAttr || !attrs.hasOwnProperty(nName)) {
-                attrs[nName] = value;
-                if (getBooleanAttrName(node, nName)) {
-                  attrs[nName] = true; // presence means true
-                }
-            }
-            addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
-            addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName,
-                          attrEndName);
-          }
-
-          // use class as directive
-          className = node.className;
-          if (isObject(className)) {
-              // Maybe SVGAnimatedString
-              className = className.animVal;
-          }
-          if (isString(className) && className !== '') {
-            while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
-              nName = directiveNormalize(match[2]);
-              if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) {
-                attrs[nName] = trim(match[3]);
-              }
-              className = className.substr(match.index + match[0].length);
-            }
-          }
-          break;
-        case NODE_TYPE_TEXT: /* Text Node */
-          addTextInterpolateDirective(directives, node.nodeValue);
-          break;
-        case NODE_TYPE_COMMENT: /* Comment */
-          try {
-            match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
-            if (match) {
-              nName = directiveNormalize(match[1]);
-              if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) {
-                attrs[nName] = trim(match[2]);
-              }
-            }
-          } catch (e) {
-            // turns out that under some circumstances IE9 throws errors when one attempts to read
-            // comment's node value.
-            // Just ignore it and continue. (Can't seem to reproduce in test case.)
-          }
-          break;
-      }
-
-      directives.sort(byPriority);
-      return directives;
-    }
-
-    /**
-     * Given a node with an directive-start it collects all of the siblings until it finds
-     * directive-end.
-     * @param node
-     * @param attrStart
-     * @param attrEnd
-     * @returns {*}
-     */
-    function groupScan(node, attrStart, attrEnd) {
-      var nodes = [];
-      var depth = 0;
-      if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
-        do {
-          if (!node) {
-            throw $compileMinErr('uterdir',
-                      "Unterminated attribute, found '{0}' but no matching '{1}' found.",
-                      attrStart, attrEnd);
-          }
-          if (node.nodeType == NODE_TYPE_ELEMENT) {
-            if (node.hasAttribute(attrStart)) depth++;
-            if (node.hasAttribute(attrEnd)) depth--;
-          }
-          nodes.push(node);
-          node = node.nextSibling;
-        } while (depth > 0);
-      } else {
-        nodes.push(node);
-      }
-
-      return jqLite(nodes);
-    }
-
-    /**
-     * Wrapper for linking function which converts normal linking function into a grouped
-     * linking function.
-     * @param linkFn
-     * @param attrStart
-     * @param attrEnd
-     * @returns {Function}
-     */
-    function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {
-      return function(scope, element, attrs, controllers, transcludeFn) {
-        element = groupScan(element[0], attrStart, attrEnd);
-        return linkFn(scope, element, attrs, controllers, transcludeFn);
-      };
-    }
-
-    /**
-     * Once the directives have been collected, their compile functions are executed. This method
-     * is responsible for inlining directive templates as well as terminating the application
-     * of the directives if the terminal directive has been reached.
-     *
-     * @param {Array} directives Array of collected directives to execute their compile function.
-     *        this needs to be pre-sorted by priority order.
-     * @param {Node} compileNode The raw DOM node to apply the compile functions to
-     * @param {Object} templateAttrs The shared attribute function
-     * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the
-     *                                                  scope argument is auto-generated to the new
-     *                                                  child of the transcluded parent scope.
-     * @param {JQLite} jqCollection If we are working on the root of the compile tree then this
-     *                              argument has the root jqLite array so that we can replace nodes
-     *                              on it.
-     * @param {Object=} originalReplaceDirective An optional directive that will be ignored when
-     *                                           compiling the transclusion.
-     * @param {Array.<Function>} preLinkFns
-     * @param {Array.<Function>} postLinkFns
-     * @param {Object} previousCompileContext Context used for previous compilation of the current
-     *                                        node
-     * @returns {Function} linkFn
-     */
-    function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn,
-                                   jqCollection, originalReplaceDirective, preLinkFns, postLinkFns,
-                                   previousCompileContext) {
-      previousCompileContext = previousCompileContext || {};
-
-      var terminalPriority = -Number.MAX_VALUE,
-          newScopeDirective,
-          controllerDirectives = previousCompileContext.controllerDirectives,
-          controllers,
-          newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective,
-          templateDirective = previousCompileContext.templateDirective,
-          nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
-          hasTranscludeDirective = false,
-          hasTemplate = false,
-          hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
-          $compileNode = templateAttrs.$$element = jqLite(compileNode),
-          directive,
-          directiveName,
-          $template,
-          replaceDirective = originalReplaceDirective,
-          childTranscludeFn = transcludeFn,
-          linkFn,
-          directiveValue;
-
-      // executes all directives on the current element
-      for (var i = 0, ii = directives.length; i < ii; i++) {
-        directive = directives[i];
-        var attrStart = directive.$$start;
-        var attrEnd = directive.$$end;
-
-        // collect multiblock sections
-        if (attrStart) {
-          $compileNode = groupScan(compileNode, attrStart, attrEnd);
-        }
-        $template = undefined;
-
-        if (terminalPriority > directive.priority) {
-          break; // prevent further processing of directives
-        }
-
-        if (directiveValue = directive.scope) {
-
-          // skip the check for directives with async templates, we'll check the derived sync
-          // directive when the template arrives
-          if (!directive.templateUrl) {
-            if (isObject(directiveValue)) {
-              // This directive is trying to add an isolated scope.
-              // Check that there is no scope of any kind already
-              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective,
-                                directive, $compileNode);
-              newIsolateScopeDirective = directive;
-            } else {
-              // This directive is trying to add a child scope.
-              // Check that there is no isolated scope already
-              assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive,
-                                $compileNode);
-            }
-          }
-
-          newScopeDirective = newScopeDirective || directive;
-        }
-
-        directiveName = directive.name;
-
-        if (!directive.templateUrl && directive.controller) {
-          directiveValue = directive.controller;
-          controllerDirectives = controllerDirectives || {};
-          assertNoDuplicate("'" + directiveName + "' controller",
-              controllerDirectives[directiveName], directive, $compileNode);
-          controllerDirectives[directiveName] = directive;
-        }
-
-        if (directiveValue = directive.transclude) {
-          hasTranscludeDirective = true;
-
-          // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion.
-          // This option should only be used by directives that know how to safely handle element transclusion,
-          // where the transcluded nodes are added or replaced after linking.
-          if (!directive.$$tlb) {
-            assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode);
-            nonTlbTranscludeDirective = directive;
-          }
-
-          if (directiveValue == 'element') {
-            hasElementTranscludeDirective = true;
-            terminalPriority = directive.priority;
-            $template = $compileNode;
-            $compileNode = templateAttrs.$$element =
-                jqLite(document.createComment(' ' + directiveName + ': ' +
-                                              templateAttrs[directiveName] + ' '));
-            compileNode = $compileNode[0];
-            replaceWith(jqCollection, sliceArgs($template), compileNode);
-
-            childTranscludeFn = compile($template, transcludeFn, terminalPriority,
-                                        replaceDirective && replaceDirective.name, {
-                                          // Don't pass in:
-                                          // - controllerDirectives - otherwise we'll create duplicates controllers
-                                          // - newIsolateScopeDirective or templateDirective - combining templates with
-                                          //   element transclusion doesn't make sense.
-                                          //
-                                          // We need only nonTlbTranscludeDirective so that we prevent putting transclusion
-                                          // on the same element more than once.
-                                          nonTlbTranscludeDirective: nonTlbTranscludeDirective
-                                        });
-          } else {
-            $template = jqLite(jqLiteClone(compileNode)).contents();
-            $compileNode.empty(); // clear contents
-            childTranscludeFn = compile($template, transcludeFn);
-          }
-        }
-
-        if (directive.template) {
-          hasTemplate = true;
-          assertNoDuplicate('template', templateDirective, directive, $compileNode);
-          templateDirective = directive;
-
-          directiveValue = (isFunction(directive.template))
-              ? directive.template($compileNode, templateAttrs)
-              : directive.template;
-
-          directiveValue = denormalizeTemplate(directiveValue);
-
-          if (directive.replace) {
-            replaceDirective = directive;
-            if (jqLiteIsTextNode(directiveValue)) {
-              $template = [];
-            } else {
-              $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));
-            }
-            compileNode = $template[0];
-
-            if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
-              throw $compileMinErr('tplrt',
-                  "Template for directive '{0}' must have exactly one root element. {1}",
-                  directiveName, '');
-            }
-
-            replaceWith(jqCollection, $compileNode, compileNode);
-
-            var newTemplateAttrs = {$attr: {}};
-
-            // combine directives from the original node and from the template:
-            // - take the array of directives for this element
-            // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed)
-            // - collect directives from the template and sort them by priority
-            // - combine directives as: processed + template + unprocessed
-            var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);
-            var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));
-
-            if (newIsolateScopeDirective) {
-              markDirectivesAsIsolate(templateDirectives);
-            }
-            directives = directives.concat(templateDirectives).concat(unprocessedDirectives);
-            mergeTemplateAttributes(templateAttrs, newTemplateAttrs);
-
-            ii = directives.length;
-          } else {
-            $compileNode.html(directiveValue);
-          }
-        }
-
-        if (directive.templateUrl) {
-          hasTemplate = true;
-          assertNoDuplicate('template', templateDirective, directive, $compileNode);
-          templateDirective = directive;
-
-          if (directive.replace) {
-            replaceDirective = directive;
-          }
-
-          nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode,
-              templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, {
-                controllerDirectives: controllerDirectives,
-                newIsolateScopeDirective: newIsolateScopeDirective,
-                templateDirective: templateDirective,
-                nonTlbTranscludeDirective: nonTlbTranscludeDirective
-              });
-          ii = directives.length;
-        } else if (directive.compile) {
-          try {
-            linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);
-            if (isFunction(linkFn)) {
-              addLinkFns(null, linkFn, attrStart, attrEnd);
-            } else if (linkFn) {
-              addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd);
-            }
-          } catch (e) {
-            $exceptionHandler(e, startingTag($compileNode));
-          }
-        }
-
-        if (directive.terminal) {
-          nodeLinkFn.terminal = true;
-          terminalPriority = Math.max(terminalPriority, directive.priority);
-        }
-
-      }
-
-      nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
-      nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;
-      nodeLinkFn.elementTranscludeOnThisElement = hasElementTranscludeDirective;
-      nodeLinkFn.templateOnThisElement = hasTemplate;
-      nodeLinkFn.transclude = childTranscludeFn;
-
-      previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
-
-      // might be normal or delayed nodeLinkFn depending on if templateUrl is present
-      return nodeLinkFn;
-
-      ////////////////////
-
-      function addLinkFns(pre, post, attrStart, attrEnd) {
-        if (pre) {
-          if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd);
-          pre.require = directive.require;
-          pre.directiveName = directiveName;
-          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
-            pre = cloneAndAnnotateFn(pre, {isolateScope: true});
-          }
-          preLinkFns.push(pre);
-        }
-        if (post) {
-          if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd);
-          post.require = directive.require;
-          post.directiveName = directiveName;
-          if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
-            post = cloneAndAnnotateFn(post, {isolateScope: true});
-          }
-          postLinkFns.push(post);
-        }
-      }
-
-
-      function getControllers(directiveName, require, $element, elementControllers) {
-        var value, retrievalMethod = 'data', optional = false;
-        var $searchElement = $element;
-        var match;
-        if (isString(require)) {
-          match = require.match(REQUIRE_PREFIX_REGEXP);
-          require = require.substring(match[0].length);
-
-          if (match[3]) {
-            if (match[1]) match[3] = null;
-            else match[1] = match[3];
-          }
-          if (match[1] === '^') {
-            retrievalMethod = 'inheritedData';
-          } else if (match[1] === '^^') {
-            retrievalMethod = 'inheritedData';
-            $searchElement = $element.parent();
-          }
-          if (match[2] === '?') {
-            optional = true;
-          }
-
-          value = null;
-
-          if (elementControllers && retrievalMethod === 'data') {
-            if (value = elementControllers[require]) {
-              value = value.instance;
-            }
-          }
-          value = value || $searchElement[retrievalMethod]('$' + require + 'Controller');
-
-          if (!value && !optional) {
-            throw $compileMinErr('ctreq',
-                "Controller '{0}', required by directive '{1}', can't be found!",
-                require, directiveName);
-          }
-          return value || null;
-        } else if (isArray(require)) {
-          value = [];
-          forEach(require, function(require) {
-            value.push(getControllers(directiveName, require, $element, elementControllers));
-          });
-        }
-        return value;
-      }
-
-
-      function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {
-        var i, ii, linkFn, controller, isolateScope, elementControllers, transcludeFn, $element,
-            attrs;
-
-        if (compileNode === linkNode) {
-          attrs = templateAttrs;
-          $element = templateAttrs.$$element;
-        } else {
-          $element = jqLite(linkNode);
-          attrs = new Attributes($element, templateAttrs);
-        }
-
-        if (newIsolateScopeDirective) {
-          isolateScope = scope.$new(true);
-        }
-
-        if (boundTranscludeFn) {
-          // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`
-          // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`
-          transcludeFn = controllersBoundTransclude;
-          transcludeFn.$$boundTransclude = boundTranscludeFn;
-        }
-
-        if (controllerDirectives) {
-          // TODO: merge `controllers` and `elementControllers` into single object.
-          controllers = {};
-          elementControllers = {};
-          forEach(controllerDirectives, function(directive) {
-            var locals = {
-              $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
-              $element: $element,
-              $attrs: attrs,
-              $transclude: transcludeFn
-            }, controllerInstance;
-
-            controller = directive.controller;
-            if (controller == '@') {
-              controller = attrs[directive.name];
-            }
-
-            controllerInstance = $controller(controller, locals, true, directive.controllerAs);
-
-            // For directives with element transclusion the element is a comment,
-            // but jQuery .data doesn't support attaching data to comment nodes as it's hard to
-            // clean up (http://bugs.jquery.com/ticket/8335).
-            // Instead, we save the controllers for the element in a local hash and attach to .data
-            // later, once we have the actual element.
-            elementControllers[directive.name] = controllerInstance;
-            if (!hasElementTranscludeDirective) {
-              $element.data('$' + directive.name + 'Controller', controllerInstance.instance);
-            }
-
-            controllers[directive.name] = controllerInstance;
-          });
-        }
-
-        if (newIsolateScopeDirective) {
-          compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective ||
-              templateDirective === newIsolateScopeDirective.$$originalDirective)));
-          compile.$$addScopeClass($element, true);
-
-          var isolateScopeController = controllers && controllers[newIsolateScopeDirective.name];
-          var isolateBindingContext = isolateScope;
-          if (isolateScopeController && isolateScopeController.identifier &&
-              newIsolateScopeDirective.bindToController === true) {
-            isolateBindingContext = isolateScopeController.instance;
-          }
-
-          forEach(isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings, function(definition, scopeName) {
-            var attrName = definition.attrName,
-                optional = definition.optional,
-                mode = definition.mode, // @, =, or &
-                lastValue,
-                parentGet, parentSet, compare;
-
-            switch (mode) {
-
-              case '@':
-                attrs.$observe(attrName, function(value) {
-                  isolateBindingContext[scopeName] = value;
-                });
-                attrs.$$observers[attrName].$$scope = scope;
-                if (attrs[attrName]) {
-                  // If the attribute has been provided then we trigger an interpolation to ensure
-                  // the value is there for use in the link fn
-                  isolateBindingContext[scopeName] = $interpolate(attrs[attrName])(scope);
-                }
-                break;
-
-              case '=':
-                if (optional && !attrs[attrName]) {
-                  return;
-                }
-                parentGet = $parse(attrs[attrName]);
-                if (parentGet.literal) {
-                  compare = equals;
-                } else {
-                  compare = function(a, b) { return a === b || (a !== a && b !== b); };
-                }
-                parentSet = parentGet.assign || function() {
-                  // reset the change, or we will throw this exception on every $digest
-                  lastValue = isolateBindingContext[scopeName] = parentGet(scope);
-                  throw $compileMinErr('nonassign',
-                      "Expression '{0}' used with directive '{1}' is non-assignable!",
-                      attrs[attrName], newIsolateScopeDirective.name);
-                };
-                lastValue = isolateBindingContext[scopeName] = parentGet(scope);
-                var parentValueWatch = function parentValueWatch(parentValue) {
-                  if (!compare(parentValue, isolateBindingContext[scopeName])) {
-                    // we are out of sync and need to copy
-                    if (!compare(parentValue, lastValue)) {
-                      // parent changed and it has precedence
-                      isolateBindingContext[scopeName] = parentValue;
-                    } else {
-                      // if the parent can be assigned then do so
-                      parentSet(scope, parentValue = isolateBindingContext[scopeName]);
-                    }
-                  }
-                  return lastValue = parentValue;
-                };
-                parentValueWatch.$stateful = true;
-                var unwatch;
-                if (definition.collection) {
-                  unwatch = scope.$watchCollection(attrs[attrName], parentValueWatch);
-                } else {
-                  unwatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);
-                }
-                isolateScope.$on('$destroy', unwatch);
-                break;
-
-              case '&':
-                parentGet = $parse(attrs[attrName]);
-                isolateBindingContext[scopeName] = function(locals) {
-                  return parentGet(scope, locals);
-                };
-                break;
-            }
-          });
-        }
-        if (controllers) {
-          forEach(controllers, function(controller) {
-            controller();
-          });
-          controllers = null;
-        }
-
-        // PRELINKING
-        for (i = 0, ii = preLinkFns.length; i < ii; i++) {
-          linkFn = preLinkFns[i];
-          invokeLinkFn(linkFn,
-              linkFn.isolateScope ? isolateScope : scope,
-              $element,
-              attrs,
-              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
-              transcludeFn
-          );
-        }
-
-        // RECURSION
-        // We only pass the isolate scope, if the isolate directive has a template,
-        // otherwise the child elements do not belong to the isolate directive.
-        var scopeToChild = scope;
-        if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
-          scopeToChild = isolateScope;
-        }
-        childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);
-
-        // POSTLINKING
-        for (i = postLinkFns.length - 1; i >= 0; i--) {
-          linkFn = postLinkFns[i];
-          invokeLinkFn(linkFn,
-              linkFn.isolateScope ? isolateScope : scope,
-              $element,
-              attrs,
-              linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers),
-              transcludeFn
-          );
-        }
-
-        // This is the function that is injected as `$transclude`.
-        // Note: all arguments are optional!
-        function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement) {
-          var transcludeControllers;
-
-          // No scope passed in:
-          if (!isScope(scope)) {
-            futureParentElement = cloneAttachFn;
-            cloneAttachFn = scope;
-            scope = undefined;
-          }
-
-          if (hasElementTranscludeDirective) {
-            transcludeControllers = elementControllers;
-          }
-          if (!futureParentElement) {
-            futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;
-          }
-          return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
-        }
-      }
-    }
-
-    function markDirectivesAsIsolate(directives) {
-      // mark all directives as needing isolate scope.
-      for (var j = 0, jj = directives.length; j < jj; j++) {
-        directives[j] = inherit(directives[j], {$$isolateScope: true});
-      }
-    }
-
-    /**
-     * looks up the directive and decorates it with exception handling and proper parameters. We
-     * call this the boundDirective.
-     *
-     * @param {string} name name of the directive to look up.
-     * @param {string} location The directive must be found in specific format.
-     *   String containing any of theses characters:
-     *
-     *   * `E`: element name
-     *   * `A': attribute
-     *   * `C`: class
-     *   * `M`: comment
-     * @returns {boolean} true if directive was added.
-     */
-    function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,
-                          endAttrName) {
-      if (name === ignoreDirective) return null;
-      var match = null;
-      if (hasDirectives.hasOwnProperty(name)) {
-        for (var directive, directives = $injector.get(name + Suffix),
-            i = 0, ii = directives.length; i < ii; i++) {
-          try {
-            directive = directives[i];
-            if ((maxPriority === undefined || maxPriority > directive.priority) &&
-                 directive.restrict.indexOf(location) != -1) {
-              if (startAttrName) {
-                directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});
-              }
-              tDirectives.push(directive);
-              match = directive;
-            }
-          } catch (e) { $exceptionHandler(e); }
-        }
-      }
-      return match;
-    }
-
-
-    /**
-     * looks up the directive and returns true if it is a multi-element directive,
-     * and therefore requires DOM nodes between -start and -end markers to be grouped
-     * together.
-     *
-     * @param {string} name name of the directive to look up.
-     * @returns true if directive was registered as multi-element.
-     */
-    function directiveIsMultiElement(name) {
-      if (hasDirectives.hasOwnProperty(name)) {
-        for (var directive, directives = $injector.get(name + Suffix),
-            i = 0, ii = directives.length; i < ii; i++) {
-          directive = directives[i];
-          if (directive.multiElement) {
-            return true;
-          }
-        }
-      }
-      return false;
-    }
-
-    /**
-     * When the element is replaced with HTML template then the new attributes
-     * on the template need to be merged with the existing attributes in the DOM.
-     * The desired effect is to have both of the attributes present.
-     *
-     * @param {object} dst destination attributes (original DOM)
-     * @param {object} src source attributes (from the directive template)
-     */
-    function mergeTemplateAttributes(dst, src) {
-      var srcAttr = src.$attr,
-          dstAttr = dst.$attr,
-          $element = dst.$$element;
-
-      // reapply the old attributes to the new element
-      forEach(dst, function(value, key) {
-        if (key.charAt(0) != '$') {
-          if (src[key] && src[key] !== value) {
-            value += (key === 'style' ? ';' : ' ') + src[key];
-          }
-          dst.$set(key, value, true, srcAttr[key]);
-        }
-      });
-
-      // copy the new attributes on the old attrs object
-      forEach(src, function(value, key) {
-        if (key == 'class') {
-          safeAddClass($element, value);
-          dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value;
-        } else if (key == 'style') {
-          $element.attr('style', $element.attr('style') + ';' + value);
-          dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value;
-          // `dst` will never contain hasOwnProperty as DOM parser won't let it.
-          // You will get an "InvalidCharacterError: DOM Exception 5" error if you
-          // have an attribute like "has-own-property" or "data-has-own-property", etc.
-        } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) {
-          dst[key] = value;
-          dstAttr[key] = srcAttr[key];
-        }
-      });
-    }
-
-
-    function compileTemplateUrl(directives, $compileNode, tAttrs,
-        $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
-      var linkQueue = [],
-          afterTemplateNodeLinkFn,
-          afterTemplateChildLinkFn,
-          beforeTemplateCompileNode = $compileNode[0],
-          origAsyncDirective = directives.shift(),
-          // The fact that we have to copy and patch the directive seems wrong!
-          derivedSyncDirective = extend({}, origAsyncDirective, {
-            templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective
-          }),
-          templateUrl = (isFunction(origAsyncDirective.templateUrl))
-              ? origAsyncDirective.templateUrl($compileNode, tAttrs)
-              : origAsyncDirective.templateUrl,
-          templateNamespace = origAsyncDirective.templateNamespace;
-
-      $compileNode.empty();
-
-      $templateRequest($sce.getTrustedResourceUrl(templateUrl))
-        .then(function(content) {
-          var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
-
-          content = denormalizeTemplate(content);
-
-          if (origAsyncDirective.replace) {
-            if (jqLiteIsTextNode(content)) {
-              $template = [];
-            } else {
-              $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
-            }
-            compileNode = $template[0];
-
-            if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
-              throw $compileMinErr('tplrt',
-                  "Template for directive '{0}' must have exactly one root element. {1}",
-                  origAsyncDirective.name, templateUrl);
-            }
-
-            tempTemplateAttrs = {$attr: {}};
-            replaceWith($rootElement, $compileNode, compileNode);
-            var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
-
-            if (isObject(origAsyncDirective.scope)) {
-              markDirectivesAsIsolate(templateDirectives);
-            }
-            directives = templateDirectives.concat(directives);
-            mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
-          } else {
-            compileNode = beforeTemplateCompileNode;
-            $compileNode.html(content);
-          }
-
-          directives.unshift(derivedSyncDirective);
-
-          afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,
-              childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,
-              previousCompileContext);
-          forEach($rootElement, function(node, i) {
-            if (node == compileNode) {
-              $rootElement[i] = $compileNode[0];
-            }
-          });
-          afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);
-
-          while (linkQueue.length) {
-            var scope = linkQueue.shift(),
-                beforeTemplateLinkNode = linkQueue.shift(),
-                linkRootElement = linkQueue.shift(),
-                boundTranscludeFn = linkQueue.shift(),
-                linkNode = $compileNode[0];
-
-            if (scope.$$destroyed) continue;
-
-            if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
-              var oldClasses = beforeTemplateLinkNode.className;
-
-              if (!(previousCompileContext.hasElementTranscludeDirective &&
-                  origAsyncDirective.replace)) {
-                // it was cloned therefore we have to clone as well.
-                linkNode = jqLiteClone(compileNode);
-              }
-              replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
-
-              // Copy in CSS classes from original node
-              safeAddClass(jqLite(linkNode), oldClasses);
-            }
-            if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
-              childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
-            } else {
-              childBoundTranscludeFn = boundTranscludeFn;
-            }
-            afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement,
-              childBoundTranscludeFn);
-          }
-          linkQueue = null;
-        });
-
-      return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {
-        var childBoundTranscludeFn = boundTranscludeFn;
-        if (scope.$$destroyed) return;
-        if (linkQueue) {
-          linkQueue.push(scope,
-                         node,
-                         rootElement,
-                         childBoundTranscludeFn);
-        } else {
-          if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
-            childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
-          }
-          afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);
-        }
-      };
-    }
-
-
-    /**
-     * Sorting function for bound directives.
-     */
-    function byPriority(a, b) {
-      var diff = b.priority - a.priority;
-      if (diff !== 0) return diff;
-      if (a.name !== b.name) return (a.name < b.name) ? -1 : 1;
-      return a.index - b.index;
-    }
-
-
-    function assertNoDuplicate(what, previousDirective, directive, element) {
-      if (previousDirective) {
-        throw $compileMinErr('multidir', 'Multiple directives [{0}, {1}] asking for {2} on: {3}',
-            previousDirective.name, directive.name, what, startingTag(element));
-      }
-    }
-
-
-    function addTextInterpolateDirective(directives, text) {
-      var interpolateFn = $interpolate(text, true);
-      if (interpolateFn) {
-        directives.push({
-          priority: 0,
-          compile: function textInterpolateCompileFn(templateNode) {
-            var templateNodeParent = templateNode.parent(),
-                hasCompileParent = !!templateNodeParent.length;
-
-            // When transcluding a template that has bindings in the root
-            // we don't have a parent and thus need to add the class during linking fn.
-            if (hasCompileParent) compile.$$addBindingClass(templateNodeParent);
-
-            return function textInterpolateLinkFn(scope, node) {
-              var parent = node.parent();
-              if (!hasCompileParent) compile.$$addBindingClass(parent);
-              compile.$$addBindingInfo(parent, interpolateFn.expressions);
-              scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {
-                node[0].nodeValue = value;
-              });
-            };
-          }
-        });
-      }
-    }
-
-
-    function wrapTemplate(type, template) {
-      type = lowercase(type || 'html');
-      switch (type) {
-      case 'svg':
-      case 'math':
-        var wrapper = document.createElement('div');
-        wrapper.innerHTML = '<' + type + '>' + template + '</' + type + '>';
-        return wrapper.childNodes[0].childNodes;
-      default:
-        return template;
-      }
-    }
-
-
-    function getTrustedContext(node, attrNormalizedName) {
-      if (attrNormalizedName == "srcdoc") {
-        return $sce.HTML;
-      }
-      var tag = nodeName_(node);
-      // maction[xlink:href] can source SVG.  It's not limited to <maction>.
-      if (attrNormalizedName == "xlinkHref" ||
-          (tag == "form" && attrNormalizedName == "action") ||
-          (tag != "img" && (attrNormalizedName == "src" ||
-                            attrNormalizedName == "ngSrc"))) {
-        return $sce.RESOURCE_URL;
-      }
-    }
-
-
-    function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) {
-      var trustedContext = getTrustedContext(node, name);
-      allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing;
-
-      var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing);
-
-      // no interpolation found -> ignore
-      if (!interpolateFn) return;
-
-
-      if (name === "multiple" && nodeName_(node) === "select") {
-        throw $compileMinErr("selmulti",
-            "Binding to the 'multiple' attribute is not supported. Element: {0}",
-            startingTag(node));
-      }
-
-      directives.push({
-        priority: 100,
-        compile: function() {
-            return {
-              pre: function attrInterpolatePreLinkFn(scope, element, attr) {
-                var $$observers = (attr.$$observers || (attr.$$observers = {}));
-
-                if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {
-                  throw $compileMinErr('nodomevents',
-                      "Interpolations for HTML DOM event attributes are disallowed.  Please use the " +
-                          "ng- versions (such as ng-click instead of onclick) instead.");
-                }
-
-                // If the attribute has changed since last $interpolate()ed
-                var newValue = attr[name];
-                if (newValue !== value) {
-                  // we need to interpolate again since the attribute value has been updated
-                  // (e.g. by another directive's compile function)
-                  // ensure unset/empty values make interpolateFn falsy
-                  interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);
-                  value = newValue;
-                }
-
-                // if attribute was updated so that there is no interpolation going on we don't want to
-                // register any observers
-                if (!interpolateFn) return;
-
-                // initialize attr object so that it's ready in case we need the value for isolate
-                // scope initialization, otherwise the value would not be available from isolate
-                // directive's linking fn during linking phase
-                attr[name] = interpolateFn(scope);
-
-                ($$observers[name] || ($$observers[name] = [])).$$inter = true;
-                (attr.$$observers && attr.$$observers[name].$$scope || scope).
-                  $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {
-                    //special case for class attribute addition + removal
-                    //so that class changes can tap into the animation
-                    //hooks provided by the $animate service. Be sure to
-                    //skip animations when the first digest occurs (when
-                    //both the new and the old values are the same) since
-                    //the CSS classes are the non-interpolated values
-                    if (name === 'class' && newValue != oldValue) {
-                      attr.$updateClass(newValue, oldValue);
-                    } else {
-                      attr.$set(name, newValue);
-                    }
-                  });
-              }
-            };
-          }
-      });
-    }
-
-
-    /**
-     * This is a special jqLite.replaceWith, which can replace items which
-     * have no parents, provided that the containing jqLite collection is provided.
-     *
-     * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes
-     *                               in the root of the tree.
-     * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep
-     *                                  the shell, but replace its DOM node reference.
-     * @param {Node} newNode The new DOM node.
-     */
-    function replaceWith($rootElement, elementsToRemove, newNode) {
-      var firstElementToRemove = elementsToRemove[0],
-          removeCount = elementsToRemove.length,
-          parent = firstElementToRemove.parentNode,
-          i, ii;
-
-      if ($rootElement) {
-        for (i = 0, ii = $rootElement.length; i < ii; i++) {
-          if ($rootElement[i] == firstElementToRemove) {
-            $rootElement[i++] = newNode;
-            for (var j = i, j2 = j + removeCount - 1,
-                     jj = $rootElement.length;
-                 j < jj; j++, j2++) {
-              if (j2 < jj) {
-                $rootElement[j] = $rootElement[j2];
-              } else {
-                delete $rootElement[j];
-              }
-            }
-            $rootElement.length -= removeCount - 1;
-
-            // If the replaced element is also the jQuery .context then replace it
-            // .context is a deprecated jQuery api, so we should set it only when jQuery set it
-            // http://api.jquery.com/context/
-            if ($rootElement.context === firstElementToRemove) {
-              $rootElement.context = newNode;
-            }
-            break;
-          }
-        }
-      }
-
-      if (parent) {
-        parent.replaceChild(newNode, firstElementToRemove);
-      }
-
-      // TODO(perf): what's this document fragment for? is it needed? can we at least reuse it?
-      var fragment = document.createDocumentFragment();
-      fragment.appendChild(firstElementToRemove);
-
-      // Copy over user data (that includes Angular's $scope etc.). Don't copy private
-      // data here because there's no public interface in jQuery to do that and copying over
-      // event listeners (which is the main use of private data) wouldn't work anyway.
-      jqLite(newNode).data(jqLite(firstElementToRemove).data());
-
-      // Remove data of the replaced element. We cannot just call .remove()
-      // on the element it since that would deallocate scope that is needed
-      // for the new node. Instead, remove the data "manually".
-      if (!jQuery) {
-        delete jqLite.cache[firstElementToRemove[jqLite.expando]];
-      } else {
-        // jQuery 2.x doesn't expose the data storage. Use jQuery.cleanData to clean up after
-        // the replaced element. The cleanData version monkey-patched by Angular would cause
-        // the scope to be trashed and we do need the very same scope to work with the new
-        // element. However, we cannot just cache the non-patched version and use it here as
-        // that would break if another library patches the method after Angular does (one
-        // example is jQuery UI). Instead, set a flag indicating scope destroying should be
-        // skipped this one time.
-        skipDestroyOnNextJQueryCleanData = true;
-        jQuery.cleanData([firstElementToRemove]);
-      }
-
-      for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {
-        var element = elementsToRemove[k];
-        jqLite(element).remove(); // must do this way to clean up expando
-        fragment.appendChild(element);
-        delete elementsToRemove[k];
-      }
-
-      elementsToRemove[0] = newNode;
-      elementsToRemove.length = 1;
-    }
-
-
-    function cloneAndAnnotateFn(fn, annotation) {
-      return extend(function() { return fn.apply(null, arguments); }, fn, annotation);
-    }
-
-
-    function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {
-      try {
-        linkFn(scope, $element, attrs, controllers, transcludeFn);
-      } catch (e) {
-        $exceptionHandler(e, startingTag($element));
-      }
-    }
-  }];
-}
-
-var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i;
-/**
- * Converts all accepted directives format into proper directive name.
- * @param name Name to normalize
- */
-function directiveNormalize(name) {
-  return camelCase(name.replace(PREFIX_REGEXP, ''));
-}
-
-/**
- * @ngdoc type
- * @name $compile.directive.Attributes
- *
- * @description
- * A shared object between directive compile / linking functions which contains normalized DOM
- * element attributes. The values reflect current binding state `{{ }}`. The normalization is
- * needed since all of these are treated as equivalent in Angular:
- *
- * ```
- *    <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
- * ```
- */
-
-/**
- * @ngdoc property
- * @name $compile.directive.Attributes#$attr
- *
- * @description
- * A map of DOM element attribute names to the normalized name. This is
- * needed to do reverse lookup from normalized name back to actual name.
- */
-
-
-/**
- * @ngdoc method
- * @name $compile.directive.Attributes#$set
- * @kind function
- *
- * @description
- * Set DOM element attribute value.
- *
- *
- * @param {string} name Normalized element attribute name of the property to modify. The name is
- *          reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr}
- *          property to the original name.
- * @param {string} value Value to set the attribute to. The value can be an interpolated string.
- */
-
-
-
-/**
- * Closure compiler type information
- */
-
-function nodesetLinkingFn(
-  /* angular.Scope */ scope,
-  /* NodeList */ nodeList,
-  /* Element */ rootElement,
-  /* function(Function) */ boundTranscludeFn
-) {}
-
-function directiveLinkingFn(
-  /* nodesetLinkingFn */ nodesetLinkingFn,
-  /* angular.Scope */ scope,
-  /* Node */ node,
-  /* Element */ rootElement,
-  /* function(Function) */ boundTranscludeFn
-) {}
-
-function tokenDifference(str1, str2) {
-  var values = '',
-      tokens1 = str1.split(/\s+/),
-      tokens2 = str2.split(/\s+/);
-
-  outer:
-  for (var i = 0; i < tokens1.length; i++) {
-    var token = tokens1[i];
-    for (var j = 0; j < tokens2.length; j++) {
-      if (token == tokens2[j]) continue outer;
-    }
-    values += (values.length > 0 ? ' ' : '') + token;
-  }
-  return values;
-}
-
-function removeComments(jqNodes) {
-  jqNodes = jqLite(jqNodes);
-  var i = jqNodes.length;
-
-  if (i <= 1) {
-    return jqNodes;
-  }
-
-  while (i--) {
-    var node = jqNodes[i];
-    if (node.nodeType === NODE_TYPE_COMMENT) {
-      splice.call(jqNodes, i, 1);
-    }
-  }
-  return jqNodes;
-}
-
-/**
- * @ngdoc provider
- * @name $controllerProvider
- * @description
- * The {@link ng.$controller $controller service} is used by Angular to create new
- * controllers.
- *
- * This provider allows controller registration via the
- * {@link ng.$controllerProvider#register register} method.
- */
-function $ControllerProvider() {
-  var controllers = {},
-      globals = false,
-      CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/;
-
-
-  /**
-   * @ngdoc method
-   * @name $controllerProvider#register
-   * @param {string|Object} name Controller name, or an object map of controllers where the keys are
-   *    the names and the values are the constructors.
-   * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI
-   *    annotations in the array notation).
-   */
-  this.register = function(name, constructor) {
-    assertNotHasOwnProperty(name, 'controller');
-    if (isObject(name)) {
-      extend(controllers, name);
-    } else {
-      controllers[name] = constructor;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $controllerProvider#allowGlobals
-   * @description If called, allows `$controller` to find controller constructors on `window`
-   */
-  this.allowGlobals = function() {
-    globals = true;
-  };
-
-
-  this.$get = ['$injector', '$window', function($injector, $window) {
-
-    /**
-     * @ngdoc service
-     * @name $controller
-     * @requires $injector
-     *
-     * @param {Function|string} constructor If called with a function then it's considered to be the
-     *    controller constructor function. Otherwise it's considered to be a string which is used
-     *    to retrieve the controller constructor using the following steps:
-     *
-     *    * check if a controller with given name is registered via `$controllerProvider`
-     *    * check if evaluating the string on the current scope returns a constructor
-     *    * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
-     *      `window` object (not recommended)
-     *
-     *    The string can use the `controller as property` syntax, where the controller instance is published
-     *    as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
-     *    to work correctly.
-     *
-     * @param {Object} locals Injection locals for Controller.
-     * @return {Object} Instance of given controller.
-     *
-     * @description
-     * `$controller` service is responsible for instantiating controllers.
-     *
-     * It's just a simple call to {@link auto.$injector $injector}, but extracted into
-     * a service, so that one can override this service with [BC version](https://gist.github.com/1649788).
-     */
-    return function(expression, locals, later, ident) {
-      // PRIVATE API:
-      //   param `later` --- indicates that the controller's constructor is invoked at a later time.
-      //                     If true, $controller will allocate the object with the correct
-      //                     prototype chain, but will not invoke the controller until a returned
-      //                     callback is invoked.
-      //   param `ident` --- An optional label which overrides the label parsed from the controller
-      //                     expression, if any.
-      var instance, match, constructor, identifier;
-      later = later === true;
-      if (ident && isString(ident)) {
-        identifier = ident;
-      }
-
-      if (isString(expression)) {
-        match = expression.match(CNTRL_REG),
-        constructor = match[1],
-        identifier = identifier || match[3];
-        expression = controllers.hasOwnProperty(constructor)
-            ? controllers[constructor]
-            : getter(locals.$scope, constructor, true) ||
-                (globals ? getter($window, constructor, true) : undefined);
-
-        assertArgFn(expression, constructor, true);
-      }
-
-      if (later) {
-        // Instantiate controller later:
-        // This machinery is used to create an instance of the object before calling the
-        // controller's constructor itself.
-        //
-        // This allows properties to be added to the controller before the constructor is
-        // invoked. Primarily, this is used for isolate scope bindings in $compile.
-        //
-        // This feature is not intended for use by applications, and is thus not documented
-        // publicly.
-        // Object creation: http://jsperf.com/create-constructor/2
-        var controllerPrototype = (isArray(expression) ?
-          expression[expression.length - 1] : expression).prototype;
-        instance = Object.create(controllerPrototype || null);
-
-        if (identifier) {
-          addIdentifier(locals, identifier, instance, constructor || expression.name);
-        }
-
-        return extend(function() {
-          $injector.invoke(expression, instance, locals, constructor);
-          return instance;
-        }, {
-          instance: instance,
-          identifier: identifier
-        });
-      }
-
-      instance = $injector.instantiate(expression, locals, constructor);
-
-      if (identifier) {
-        addIdentifier(locals, identifier, instance, constructor || expression.name);
-      }
-
-      return instance;
-    };
-
-    function addIdentifier(locals, identifier, instance, name) {
-      if (!(locals && isObject(locals.$scope))) {
-        throw minErr('$controller')('noscp',
-          "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
-          name, identifier);
-      }
-
-      locals.$scope[identifier] = instance;
-    }
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $document
- * @requires $window
- *
- * @description
- * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object.
- *
- * @example
-   <example module="documentExample">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-         <p>$document title: <b ng-bind="title"></b></p>
-         <p>window.document title: <b ng-bind="windowTitle"></b></p>
-       </div>
-     </file>
-     <file name="script.js">
-       angular.module('documentExample', [])
-         .controller('ExampleController', ['$scope', '$document', function($scope, $document) {
-           $scope.title = $document[0].title;
-           $scope.windowTitle = angular.element(window.document)[0].title;
-         }]);
-     </file>
-   </example>
- */
-function $DocumentProvider() {
-  this.$get = ['$window', function(window) {
-    return jqLite(window.document);
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $exceptionHandler
- * @requires ng.$log
- *
- * @description
- * Any uncaught exception in angular expressions is delegated to this service.
- * The default implementation simply delegates to `$log.error` which logs it into
- * the browser console.
- *
- * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by
- * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing.
- *
- * ## Example:
- *
- * ```js
- *   angular.module('exceptionOverride', []).factory('$exceptionHandler', function() {
- *     return function(exception, cause) {
- *       exception.message += ' (caused by "' + cause + '")';
- *       throw exception;
- *     };
- *   });
- * ```
- *
- * This example will override the normal action of `$exceptionHandler`, to make angular
- * exceptions fail hard when they happen, instead of just logging to the console.
- *
- * <hr />
- * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind`
- * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler}
- * (unless executed during a digest).
- *
- * If you wish, you can manually delegate exceptions, e.g.
- * `try { ... } catch(e) { $exceptionHandler(e); }`
- *
- * @param {Error} exception Exception associated with the error.
- * @param {string=} cause optional information about the context in which
- *       the error was thrown.
- *
- */
-function $ExceptionHandlerProvider() {
-  this.$get = ['$log', function($log) {
-    return function(exception, cause) {
-      $log.error.apply($log, arguments);
-    };
-  }];
-}
-
-var APPLICATION_JSON = 'application/json';
-var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'};
-var JSON_START = /^\[|^\{(?!\{)/;
-var JSON_ENDS = {
-  '[': /]$/,
-  '{': /}$/
-};
-var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
-
-function defaultHttpResponseTransform(data, headers) {
-  if (isString(data)) {
-    // Strip json vulnerability protection prefix and trim whitespace
-    var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim();
-
-    if (tempData) {
-      var contentType = headers('Content-Type');
-      if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) {
-        data = fromJson(tempData);
-      }
-    }
-  }
-
-  return data;
-}
-
-function isJsonLike(str) {
-    var jsonStart = str.match(JSON_START);
-    return jsonStart && JSON_ENDS[jsonStart[0]].test(str);
-}
-
-/**
- * Parse headers into key value object
- *
- * @param {string} headers Raw headers as a string
- * @returns {Object} Parsed headers as key value object
- */
-function parseHeaders(headers) {
-  var parsed = createMap(), key, val, i;
-
-  if (!headers) return parsed;
-
-  forEach(headers.split('\n'), function(line) {
-    i = line.indexOf(':');
-    key = lowercase(trim(line.substr(0, i)));
-    val = trim(line.substr(i + 1));
-
-    if (key) {
-      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
-    }
-  });
-
-  return parsed;
-}
-
-
-/**
- * Returns a function that provides access to parsed headers.
- *
- * Headers are lazy parsed when first requested.
- * @see parseHeaders
- *
- * @param {(string|Object)} headers Headers to provide access to.
- * @returns {function(string=)} Returns a getter function which if called with:
- *
- *   - if called with single an argument returns a single header value or null
- *   - if called with no arguments returns an object containing all headers.
- */
-function headersGetter(headers) {
-  var headersObj = isObject(headers) ? headers : undefined;
-
-  return function(name) {
-    if (!headersObj) headersObj =  parseHeaders(headers);
-
-    if (name) {
-      var value = headersObj[lowercase(name)];
-      if (value === void 0) {
-        value = null;
-      }
-      return value;
-    }
-
-    return headersObj;
-  };
-}
-
-
-/**
- * Chain all given functions
- *
- * This function is used for both request and response transforming
- *
- * @param {*} data Data to transform.
- * @param {function(string=)} headers HTTP headers getter fn.
- * @param {number} status HTTP status code of the response.
- * @param {(Function|Array.<Function>)} fns Function or an array of functions.
- * @returns {*} Transformed data.
- */
-function transformData(data, headers, status, fns) {
-  if (isFunction(fns))
-    return fns(data, headers, status);
-
-  forEach(fns, function(fn) {
-    data = fn(data, headers, status);
-  });
-
-  return data;
-}
-
-
-function isSuccess(status) {
-  return 200 <= status && status < 300;
-}
-
-
-/**
- * @ngdoc provider
- * @name $httpProvider
- * @description
- * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service.
- * */
-function $HttpProvider() {
-  /**
-   * @ngdoc property
-   * @name $httpProvider#defaults
-   * @description
-   *
-   * Object containing default values for all {@link ng.$http $http} requests.
-   *
-   * - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`}
-   * that will provide the cache for all requests who set their `cache` property to `true`.
-   * If you set the `default.cache = false` then only requests that specify their own custom
-   * cache object will be cached. See {@link $http#caching $http Caching} for more information.
-   *
-   * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.
-   * Defaults value is `'XSRF-TOKEN'`.
-   *
-   * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the
-   * XSRF token. Defaults value is `'X-XSRF-TOKEN'`.
-   *
-   * - **`defaults.headers`** - {Object} - Default headers for all $http requests.
-   * Refer to {@link ng.$http#setting-http-headers $http} for documentation on
-   * setting default headers.
-   *     - **`defaults.headers.common`**
-   *     - **`defaults.headers.post`**
-   *     - **`defaults.headers.put`**
-   *     - **`defaults.headers.patch`**
-   *
-   **/
-  var defaults = this.defaults = {
-    // transform incoming response data
-    transformResponse: [defaultHttpResponseTransform],
-
-    // transform outgoing request data
-    transformRequest: [function(d) {
-      return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;
-    }],
-
-    // default headers
-    headers: {
-      common: {
-        'Accept': 'application/json, text/plain, */*'
-      },
-      post:   shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
-      put:    shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
-      patch:  shallowCopy(CONTENT_TYPE_APPLICATION_JSON)
-    },
-
-    xsrfCookieName: 'XSRF-TOKEN',
-    xsrfHeaderName: 'X-XSRF-TOKEN'
-  };
-
-  var useApplyAsync = false;
-  /**
-   * @ngdoc method
-   * @name $httpProvider#useApplyAsync
-   * @description
-   *
-   * Configure $http service to combine processing of multiple http responses received at around
-   * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in
-   * significant performance improvement for bigger applications that make many HTTP requests
-   * concurrently (common during application bootstrap).
-   *
-   * Defaults to false. If no value is specifed, returns the current configured value.
-   *
-   * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred
-   *    "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window
-   *    to load and share the same digest cycle.
-   *
-   * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining.
-   *    otherwise, returns the current configured value.
-   **/
-  this.useApplyAsync = function(value) {
-    if (isDefined(value)) {
-      useApplyAsync = !!value;
-      return this;
-    }
-    return useApplyAsync;
-  };
-
-  /**
-   * @ngdoc property
-   * @name $httpProvider#interceptors
-   * @description
-   *
-   * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http}
-   * pre-processing of request or postprocessing of responses.
-   *
-   * These service factories are ordered by request, i.e. they are applied in the same order as the
-   * array, on request, but reverse order, on response.
-   *
-   * {@link ng.$http#interceptors Interceptors detailed info}
-   **/
-  var interceptorFactories = this.interceptors = [];
-
-  this.$get = ['$httpBackend', '$browser', '$cacheFactory', '$rootScope', '$q', '$injector',
-      function($httpBackend, $browser, $cacheFactory, $rootScope, $q, $injector) {
-
-    var defaultCache = $cacheFactory('$http');
-
-    /**
-     * Interceptors stored in reverse order. Inner interceptors before outer interceptors.
-     * The reversal is needed so that we can build up the interception chain around the
-     * server request.
-     */
-    var reversedInterceptors = [];
-
-    forEach(interceptorFactories, function(interceptorFactory) {
-      reversedInterceptors.unshift(isString(interceptorFactory)
-          ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));
-    });
-
-    /**
-     * @ngdoc service
-     * @kind function
-     * @name $http
-     * @requires ng.$httpBackend
-     * @requires $cacheFactory
-     * @requires $rootScope
-     * @requires $q
-     * @requires $injector
-     *
-     * @description
-     * The `$http` service is a core Angular service that facilitates communication with the remote
-     * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest)
-     * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP).
-     *
-     * For unit testing applications that use `$http` service, see
-     * {@link ngMock.$httpBackend $httpBackend mock}.
-     *
-     * For a higher level of abstraction, please check out the {@link ngResource.$resource
-     * $resource} service.
-     *
-     * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
-     * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage
-     * it is important to familiarize yourself with these APIs and the guarantees they provide.
-     *
-     *
-     * ## General usage
-     * The `$http` service is a function which takes a single argument — a configuration object —
-     * that is used to generate an HTTP request and returns  a {@link ng.$q promise}
-     * with two $http specific methods: `success` and `error`.
-     *
-     * ```js
-     *   // Simple GET request example :
-     *   $http.get('/someUrl').
-     *     success(function(data, status, headers, config) {
-     *       // this callback will be called asynchronously
-     *       // when the response is available
-     *     }).
-     *     error(function(data, status, headers, config) {
-     *       // called asynchronously if an error occurs
-     *       // or server returns response with an error status.
-     *     });
-     * ```
-     *
-     * ```js
-     *   // Simple POST request example (passing data) :
-     *   $http.post('/someUrl', {msg:'hello word!'}).
-     *     success(function(data, status, headers, config) {
-     *       // this callback will be called asynchronously
-     *       // when the response is available
-     *     }).
-     *     error(function(data, status, headers, config) {
-     *       // called asynchronously if an error occurs
-     *       // or server returns response with an error status.
-     *     });
-     * ```
-     *
-     *
-     * Since the returned value of calling the $http function is a `promise`, you can also use
-     * the `then` method to register callbacks, and these callbacks will receive a single argument –
-     * an object representing the response. See the API signature and type info below for more
-     * details.
-     *
-     * A response status code between 200 and 299 is considered a success status and
-     * will result in the success callback being called. Note that if the response is a redirect,
-     * XMLHttpRequest will transparently follow it, meaning that the error callback will not be
-     * called for such responses.
-     *
-     * ## Writing Unit Tests that use $http
-     * When unit testing (using {@link ngMock ngMock}), it is necessary to call
-     * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending
-     * request using trained responses.
-     *
-     * ```
-     * $httpBackend.expectGET(...);
-     * $http.get(...);
-     * $httpBackend.flush();
-     * ```
-     *
-     * ## Shortcut methods
-     *
-     * Shortcut methods are also available. All shortcut methods require passing in the URL, and
-     * request data must be passed in for POST/PUT requests.
-     *
-     * ```js
-     *   $http.get('/someUrl').success(successCallback);
-     *   $http.post('/someUrl', data).success(successCallback);
-     * ```
-     *
-     * Complete list of shortcut methods:
-     *
-     * - {@link ng.$http#get $http.get}
-     * - {@link ng.$http#head $http.head}
-     * - {@link ng.$http#post $http.post}
-     * - {@link ng.$http#put $http.put}
-     * - {@link ng.$http#delete $http.delete}
-     * - {@link ng.$http#jsonp $http.jsonp}
-     * - {@link ng.$http#patch $http.patch}
-     *
-     *
-     * ## Setting HTTP Headers
-     *
-     * The $http service will automatically add certain HTTP headers to all requests. These defaults
-     * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration
-     * object, which currently contains this default configuration:
-     *
-     * - `$httpProvider.defaults.headers.common` (headers that are common for all requests):
-     *   - `Accept: application/json, text/plain, * / *`
-     * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)
-     *   - `Content-Type: application/json`
-     * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)
-     *   - `Content-Type: application/json`
-     *
-     * To add or overwrite these defaults, simply add or remove a property from these configuration
-     * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object
-     * with the lowercased HTTP method name as the key, e.g.
-     * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.
-     *
-     * The defaults can also be set at runtime via the `$http.defaults` object in the same
-     * fashion. For example:
-     *
-     * ```
-     * module.run(function($http) {
-     *   $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
-     * });
-     * ```
-     *
-     * In addition, you can supply a `headers` property in the config object passed when
-     * calling `$http(config)`, which overrides the defaults without changing them globally.
-     *
-     * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,
-     * Use the `headers` property, setting the desired header to `undefined`. For example:
-     *
-     * ```js
-     * var req = {
-     *  method: 'POST',
-     *  url: 'http://example.com',
-     *  headers: {
-     *    'Content-Type': undefined
-     *  },
-     *  data: { test: 'test' },
-     * }
-     *
-     * $http(req).success(function(){...}).error(function(){...});
-     * ```
-     *
-     * ## Transforming Requests and Responses
-     *
-     * Both requests and responses can be transformed using transformation functions: `transformRequest`
-     * and `transformResponse`. These properties can be a single function that returns
-     * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions,
-     * which allows you to `push` or `unshift` a new transformation function into the transformation chain.
-     *
-     * ### Default Transformations
-     *
-     * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and
-     * `defaults.transformResponse` properties. If a request does not provide its own transformations
-     * then these will be applied.
-     *
-     * You can augment or replace the default transformations by modifying these properties by adding to or
-     * replacing the array.
-     *
-     * Angular provides the following default transformations:
-     *
-     * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`):
-     *
-     * - If the `data` property of the request configuration object contains an object, serialize it
-     *   into JSON format.
-     *
-     * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`):
-     *
-     *  - If XSRF prefix is detected, strip it (see Security Considerations section below).
-     *  - If JSON response is detected, deserialize it using a JSON parser.
-     *
-     *
-     * ### Overriding the Default Transformations Per Request
-     *
-     * If you wish override the request/response transformations only for a single request then provide
-     * `transformRequest` and/or `transformResponse` properties on the configuration object passed
-     * into `$http`.
-     *
-     * Note that if you provide these properties on the config object the default transformations will be
-     * overwritten. If you wish to augment the default transformations then you must include them in your
-     * local transformation array.
-     *
-     * The following code demonstrates adding a new response transformation to be run after the default response
-     * transformations have been run.
-     *
-     * ```js
-     * function appendTransform(defaults, transform) {
-     *
-     *   // We can't guarantee that the default transformation is an array
-     *   defaults = angular.isArray(defaults) ? defaults : [defaults];
-     *
-     *   // Append the new transformation to the defaults
-     *   return defaults.concat(transform);
-     * }
-     *
-     * $http({
-     *   url: '...',
-     *   method: 'GET',
-     *   transformResponse: appendTransform($http.defaults.transformResponse, function(value) {
-     *     return doTransform(value);
-     *   })
-     * });
-     * ```
-     *
-     *
-     * ## Caching
-     *
-     * To enable caching, set the request configuration `cache` property to `true` (to use default
-     * cache) or to a custom cache object (built with {@link ng.$cacheFactory `$cacheFactory`}).
-     * When the cache is enabled, `$http` stores the response from the server in the specified
-     * cache. The next time the same request is made, the response is served from the cache without
-     * sending a request to the server.
-     *
-     * Note that even if the response is served from cache, delivery of the data is asynchronous in
-     * the same way that real requests are.
-     *
-     * If there are multiple GET requests for the same URL that should be cached using the same
-     * cache, but the cache is not populated yet, only one request to the server will be made and
-     * the remaining requests will be fulfilled using the response from the first request.
-     *
-     * You can change the default cache to a new object (built with
-     * {@link ng.$cacheFactory `$cacheFactory`}) by updating the
-     * {@link ng.$http#defaults `$http.defaults.cache`} property. All requests who set
-     * their `cache` property to `true` will now use this cache object.
-     *
-     * If you set the default cache to `false` then only requests that specify their own custom
-     * cache object will be cached.
-     *
-     * ## Interceptors
-     *
-     * Before you start creating interceptors, be sure to understand the
-     * {@link ng.$q $q and deferred/promise APIs}.
-     *
-     * For purposes of global error handling, authentication, or any kind of synchronous or
-     * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be
-     * able to intercept requests before they are handed to the server and
-     * responses before they are handed over to the application code that
-     * initiated these requests. The interceptors leverage the {@link ng.$q
-     * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing.
-     *
-     * The interceptors are service factories that are registered with the `$httpProvider` by
-     * adding them to the `$httpProvider.interceptors` array. The factory is called and
-     * injected with dependencies (if specified) and returns the interceptor.
-     *
-     * There are two kinds of interceptors (and two kinds of rejection interceptors):
-     *
-     *   * `request`: interceptors get called with a http `config` object. The function is free to
-     *     modify the `config` object or create a new one. The function needs to return the `config`
-     *     object directly, or a promise containing the `config` or a new `config` object.
-     *   * `requestError`: interceptor gets called when a previous interceptor threw an error or
-     *     resolved with a rejection.
-     *   * `response`: interceptors get called with http `response` object. The function is free to
-     *     modify the `response` object or create a new one. The function needs to return the `response`
-     *     object directly, or as a promise containing the `response` or a new `response` object.
-     *   * `responseError`: interceptor gets called when a previous interceptor threw an error or
-     *     resolved with a rejection.
-     *
-     *
-     * ```js
-     *   // register the interceptor as a service
-     *   $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
-     *     return {
-     *       // optional method
-     *       'request': function(config) {
-     *         // do something on success
-     *         return config;
-     *       },
-     *
-     *       // optional method
-     *      'requestError': function(rejection) {
-     *         // do something on error
-     *         if (canRecover(rejection)) {
-     *           return responseOrNewPromise
-     *         }
-     *         return $q.reject(rejection);
-     *       },
-     *
-     *
-     *
-     *       // optional method
-     *       'response': function(response) {
-     *         // do something on success
-     *         return response;
-     *       },
-     *
-     *       // optional method
-     *      'responseError': function(rejection) {
-     *         // do something on error
-     *         if (canRecover(rejection)) {
-     *           return responseOrNewPromise
-     *         }
-     *         return $q.reject(rejection);
-     *       }
-     *     };
-     *   });
-     *
-     *   $httpProvider.interceptors.push('myHttpInterceptor');
-     *
-     *
-     *   // alternatively, register the interceptor via an anonymous factory
-     *   $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
-     *     return {
-     *      'request': function(config) {
-     *          // same as above
-     *       },
-     *
-     *       'response': function(response) {
-     *          // same as above
-     *       }
-     *     };
-     *   });
-     * ```
-     *
-     * ## Security Considerations
-     *
-     * When designing web applications, consider security threats from:
-     *
-     * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
-     * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery)
-     *
-     * Both server and the client must cooperate in order to eliminate these threats. Angular comes
-     * pre-configured with strategies that address these issues, but for this to work backend server
-     * cooperation is required.
-     *
-     * ### JSON Vulnerability Protection
-     *
-     * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
-     * allows third party website to turn your JSON resource URL into
-     * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To
-     * counter this your server can prefix all JSON requests with following string `")]}',\n"`.
-     * Angular will automatically strip the prefix before processing it as JSON.
-     *
-     * For example if your server needs to return:
-     * ```js
-     * ['one','two']
-     * ```
-     *
-     * which is vulnerable to attack, your server can return:
-     * ```js
-     * )]}',
-     * ['one','two']
-     * ```
-     *
-     * Angular will strip the prefix, before processing the JSON.
-     *
-     *
-     * ### Cross Site Request Forgery (XSRF) Protection
-     *
-     * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which
-     * an unauthorized site can gain your user's private data. Angular provides a mechanism
-     * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie
-     * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only
-     * JavaScript that runs on your domain could read the cookie, your server can be assured that
-     * the XHR came from JavaScript running on your domain. The header will not be set for
-     * cross-domain requests.
-     *
-     * To take advantage of this, your server needs to set a token in a JavaScript readable session
-     * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the
-     * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure
-     * that only JavaScript running on your domain could have sent the request. The token must be
-     * unique for each user and must be verifiable by the server (to prevent the JavaScript from
-     * making up its own tokens). We recommend that the token is a digest of your site's
-     * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography&#41;)
-     * for added security.
-     *
-     * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
-     * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time,
-     * or the per-request config object.
-     *
-     *
-     * @param {object} config Object describing the request to be made and how it should be
-     *    processed. The object has following properties:
-     *
-     *    - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc)
-     *    - **url** – `{string}` – Absolute or relative URL of the resource that is being requested.
-     *    - **params** – `{Object.<string|Object>}` – Map of strings or objects which will be turned
-     *      to `?key1=value1&key2=value2` after the url. If the value is not a string, it will be
-     *      JSONified.
-     *    - **data** – `{string|Object}` – Data to be sent as the request message data.
-     *    - **headers** – `{Object}` – Map of strings or functions which return strings representing
-     *      HTTP headers to send to the server. If the return value of a function is null, the
-     *      header will not be sent.
-     *    - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token.
-     *    - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token.
-     *    - **transformRequest** –
-     *      `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
-     *      transform function or an array of such functions. The transform function takes the http
-     *      request body and headers and returns its transformed (typically serialized) version.
-     *      See {@link ng.$http#overriding-the-default-transformations-per-request
-     *      Overriding the Default Transformations}
-     *    - **transformResponse** –
-     *      `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` –
-     *      transform function or an array of such functions. The transform function takes the http
-     *      response body, headers and status and returns its transformed (typically deserialized) version.
-     *      See {@link ng.$http#overriding-the-default-transformations-per-request
-     *      Overriding the Default Transformations}
-     *    - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
-     *      GET request, otherwise if a cache instance built with
-     *      {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
-     *      caching.
-     *    - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
-     *      that should abort the request when resolved.
-     *    - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
-     *      XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
-     *      for more information.
-     *    - **responseType** - `{string}` - see
-     *      [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
-     *
-     * @returns {HttpPromise} Returns a {@link ng.$q promise} object with the
-     *   standard `then` method and two http specific methods: `success` and `error`. The `then`
-     *   method takes two arguments a success and an error callback which will be called with a
-     *   response object. The `success` and `error` methods take a single argument - a function that
-     *   will be called when the request succeeds or fails respectively. The arguments passed into
-     *   these functions are destructured representation of the response object passed into the
-     *   `then` method. The response object has these properties:
-     *
-     *   - **data** – `{string|Object}` – The response body transformed with the transform
-     *     functions.
-     *   - **status** – `{number}` – HTTP status code of the response.
-     *   - **headers** – `{function([headerName])}` – Header getter function.
-     *   - **config** – `{Object}` – The configuration object that was used to generate the request.
-     *   - **statusText** – `{string}` – HTTP status text of the response.
-     *
-     * @property {Array.<Object>} pendingRequests Array of config objects for currently pending
-     *   requests. This is primarily meant to be used for debugging purposes.
-     *
-     *
-     * @example
-<example module="httpExample">
-<file name="index.html">
-  <div ng-controller="FetchController">
-    <select ng-model="method">
-      <option>GET</option>
-      <option>JSONP</option>
-    </select>
-    <input type="text" ng-model="url" size="80"/>
-    <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
-    <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
-    <button id="samplejsonpbtn"
-      ng-click="updateModel('JSONP',
-                    'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
-      Sample JSONP
-    </button>
-    <button id="invalidjsonpbtn"
-      ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
-        Invalid JSONP
-      </button>
-    <pre>http status code: {{status}}</pre>
-    <pre>http response data: {{data}}</pre>
-  </div>
-</file>
-<file name="script.js">
-  angular.module('httpExample', [])
-    .controller('FetchController', ['$scope', '$http', '$templateCache',
-      function($scope, $http, $templateCache) {
-        $scope.method = 'GET';
-        $scope.url = 'http-hello.html';
-
-        $scope.fetch = function() {
-          $scope.code = null;
-          $scope.response = null;
-
-          $http({method: $scope.method, url: $scope.url, cache: $templateCache}).
-            success(function(data, status) {
-              $scope.status = status;
-              $scope.data = data;
-            }).
-            error(function(data, status) {
-              $scope.data = data || "Request failed";
-              $scope.status = status;
-          });
-        };
-
-        $scope.updateModel = function(method, url) {
-          $scope.method = method;
-          $scope.url = url;
-        };
-      }]);
-</file>
-<file name="http-hello.html">
-  Hello, $http!
-</file>
-<file name="protractor.js" type="protractor">
-  var status = element(by.binding('status'));
-  var data = element(by.binding('data'));
-  var fetchBtn = element(by.id('fetchbtn'));
-  var sampleGetBtn = element(by.id('samplegetbtn'));
-  var sampleJsonpBtn = element(by.id('samplejsonpbtn'));
-  var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));
-
-  it('should make an xhr GET request', function() {
-    sampleGetBtn.click();
-    fetchBtn.click();
-    expect(status.getText()).toMatch('200');
-    expect(data.getText()).toMatch(/Hello, \$http!/);
-  });
-
-// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185
-// it('should make a JSONP request to angularjs.org', function() {
-//   sampleJsonpBtn.click();
-//   fetchBtn.click();
-//   expect(status.getText()).toMatch('200');
-//   expect(data.getText()).toMatch(/Super Hero!/);
-// });
-
-  it('should make JSONP request to invalid URL and invoke the error handler',
-      function() {
-    invalidJsonpBtn.click();
-    fetchBtn.click();
-    expect(status.getText()).toMatch('0');
-    expect(data.getText()).toMatch('Request failed');
-  });
-</file>
-</example>
-     */
-    function $http(requestConfig) {
-
-      if (!angular.isObject(requestConfig)) {
-        throw minErr('$http')('badreq', 'Http request configuration must be an object.  Received: {0}', requestConfig);
-      }
-
-      var config = extend({
-        method: 'get',
-        transformRequest: defaults.transformRequest,
-        transformResponse: defaults.transformResponse
-      }, requestConfig);
-
-      config.headers = mergeHeaders(requestConfig);
-      config.method = uppercase(config.method);
-
-      var serverRequest = function(config) {
-        var headers = config.headers;
-        var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest);
-
-        // strip content-type if data is undefined
-        if (isUndefined(reqData)) {
-          forEach(headers, function(value, header) {
-            if (lowercase(header) === 'content-type') {
-                delete headers[header];
-            }
-          });
-        }
-
-        if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) {
-          config.withCredentials = defaults.withCredentials;
-        }
-
-        // send request
-        return sendReq(config, reqData).then(transformResponse, transformResponse);
-      };
-
-      var chain = [serverRequest, undefined];
-      var promise = $q.when(config);
-
-      // apply interceptors
-      forEach(reversedInterceptors, function(interceptor) {
-        if (interceptor.request || interceptor.requestError) {
-          chain.unshift(interceptor.request, interceptor.requestError);
-        }
-        if (interceptor.response || interceptor.responseError) {
-          chain.push(interceptor.response, interceptor.responseError);
-        }
-      });
-
-      while (chain.length) {
-        var thenFn = chain.shift();
-        var rejectFn = chain.shift();
-
-        promise = promise.then(thenFn, rejectFn);
-      }
-
-      promise.success = function(fn) {
-        promise.then(function(response) {
-          fn(response.data, response.status, response.headers, config);
-        });
-        return promise;
-      };
-
-      promise.error = function(fn) {
-        promise.then(null, function(response) {
-          fn(response.data, response.status, response.headers, config);
-        });
-        return promise;
-      };
-
-      return promise;
-
-      function transformResponse(response) {
-        // make a copy since the response must be cacheable
-        var resp = extend({}, response);
-        if (!response.data) {
-          resp.data = response.data;
-        } else {
-          resp.data = transformData(response.data, response.headers, response.status, config.transformResponse);
-        }
-        return (isSuccess(response.status))
-          ? resp
-          : $q.reject(resp);
-      }
-
-      function executeHeaderFns(headers) {
-        var headerContent, processedHeaders = {};
-
-        forEach(headers, function(headerFn, header) {
-          if (isFunction(headerFn)) {
-            headerContent = headerFn();
-            if (headerContent != null) {
-              processedHeaders[header] = headerContent;
-            }
-          } else {
-            processedHeaders[header] = headerFn;
-          }
-        });
-
-        return processedHeaders;
-      }
-
-      function mergeHeaders(config) {
-        var defHeaders = defaults.headers,
-            reqHeaders = extend({}, config.headers),
-            defHeaderName, lowercaseDefHeaderName, reqHeaderName;
-
-        defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]);
-
-        // using for-in instead of forEach to avoid unecessary iteration after header has been found
-        defaultHeadersIteration:
-        for (defHeaderName in defHeaders) {
-          lowercaseDefHeaderName = lowercase(defHeaderName);
-
-          for (reqHeaderName in reqHeaders) {
-            if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {
-              continue defaultHeadersIteration;
-            }
-          }
-
-          reqHeaders[defHeaderName] = defHeaders[defHeaderName];
-        }
-
-        // execute if header value is a function for merged headers
-        return executeHeaderFns(reqHeaders);
-      }
-    }
-
-    $http.pendingRequests = [];
-
-    /**
-     * @ngdoc method
-     * @name $http#get
-     *
-     * @description
-     * Shortcut method to perform `GET` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#delete
-     *
-     * @description
-     * Shortcut method to perform `DELETE` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#head
-     *
-     * @description
-     * Shortcut method to perform `HEAD` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#jsonp
-     *
-     * @description
-     * Shortcut method to perform `JSONP` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request.
-     *                     The name of the callback should be the string `JSON_CALLBACK`.
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-    createShortMethods('get', 'delete', 'head', 'jsonp');
-
-    /**
-     * @ngdoc method
-     * @name $http#post
-     *
-     * @description
-     * Shortcut method to perform `POST` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {*} data Request content
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-    /**
-     * @ngdoc method
-     * @name $http#put
-     *
-     * @description
-     * Shortcut method to perform `PUT` request.
-     *
-     * @param {string} url Relative or absolute URL specifying the destination of the request
-     * @param {*} data Request content
-     * @param {Object=} config Optional configuration object
-     * @returns {HttpPromise} Future object
-     */
-
-     /**
-      * @ngdoc method
-      * @name $http#patch
-      *
-      * @description
-      * Shortcut method to perform `PATCH` request.
-      *
-      * @param {string} url Relative or absolute URL specifying the destination of the request
-      * @param {*} data Request content
-      * @param {Object=} config Optional configuration object
-      * @returns {HttpPromise} Future object
-      */
-    createShortMethodsWithData('post', 'put', 'patch');
-
-        /**
-         * @ngdoc property
-         * @name $http#defaults
-         *
-         * @description
-         * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of
-         * default headers, withCredentials as well as request and response transformations.
-         *
-         * See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above.
-         */
-    $http.defaults = defaults;
-
-
-    return $http;
-
-
-    function createShortMethods(names) {
-      forEach(arguments, function(name) {
-        $http[name] = function(url, config) {
-          return $http(extend(config || {}, {
-            method: name,
-            url: url
-          }));
-        };
-      });
-    }
-
-
-    function createShortMethodsWithData(name) {
-      forEach(arguments, function(name) {
-        $http[name] = function(url, data, config) {
-          return $http(extend(config || {}, {
-            method: name,
-            url: url,
-            data: data
-          }));
-        };
-      });
-    }
-
-
-    /**
-     * Makes the request.
-     *
-     * !!! ACCESSES CLOSURE VARS:
-     * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests
-     */
-    function sendReq(config, reqData) {
-      var deferred = $q.defer(),
-          promise = deferred.promise,
-          cache,
-          cachedResp,
-          reqHeaders = config.headers,
-          url = buildUrl(config.url, config.params);
-
-      $http.pendingRequests.push(config);
-      promise.then(removePendingReq, removePendingReq);
-
-
-      if ((config.cache || defaults.cache) && config.cache !== false &&
-          (config.method === 'GET' || config.method === 'JSONP')) {
-        cache = isObject(config.cache) ? config.cache
-              : isObject(defaults.cache) ? defaults.cache
-              : defaultCache;
-      }
-
-      if (cache) {
-        cachedResp = cache.get(url);
-        if (isDefined(cachedResp)) {
-          if (isPromiseLike(cachedResp)) {
-            // cached request has already been sent, but there is no response yet
-            cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);
-          } else {
-            // serving from cache
-            if (isArray(cachedResp)) {
-              resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);
-            } else {
-              resolvePromise(cachedResp, 200, {}, 'OK');
-            }
-          }
-        } else {
-          // put the promise for the non-transformed response into cache as a placeholder
-          cache.put(url, promise);
-        }
-      }
-
-
-      // if we won't have the response in cache, set the xsrf headers and
-      // send the request to the backend
-      if (isUndefined(cachedResp)) {
-        var xsrfValue = urlIsSameOrigin(config.url)
-            ? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]
-            : undefined;
-        if (xsrfValue) {
-          reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
-        }
-
-        $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,
-            config.withCredentials, config.responseType);
-      }
-
-      return promise;
-
-
-      /**
-       * Callback registered to $httpBackend():
-       *  - caches the response if desired
-       *  - resolves the raw $http promise
-       *  - calls $apply
-       */
-      function done(status, response, headersString, statusText) {
-        if (cache) {
-          if (isSuccess(status)) {
-            cache.put(url, [status, response, parseHeaders(headersString), statusText]);
-          } else {
-            // remove promise from the cache
-            cache.remove(url);
-          }
-        }
-
-        function resolveHttpPromise() {
-          resolvePromise(response, status, headersString, statusText);
-        }
-
-        if (useApplyAsync) {
-          $rootScope.$applyAsync(resolveHttpPromise);
-        } else {
-          resolveHttpPromise();
-          if (!$rootScope.$$phase) $rootScope.$apply();
-        }
-      }
-
-
-      /**
-       * Resolves the raw $http promise.
-       */
-      function resolvePromise(response, status, headers, statusText) {
-        // normalize internal statuses to 0
-        status = Math.max(status, 0);
-
-        (isSuccess(status) ? deferred.resolve : deferred.reject)({
-          data: response,
-          status: status,
-          headers: headersGetter(headers),
-          config: config,
-          statusText: statusText
-        });
-      }
-
-      function resolvePromiseWithResult(result) {
-        resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText);
-      }
-
-      function removePendingReq() {
-        var idx = $http.pendingRequests.indexOf(config);
-        if (idx !== -1) $http.pendingRequests.splice(idx, 1);
-      }
-    }
-
-
-    function buildUrl(url, params) {
-      if (!params) return url;
-      var parts = [];
-      forEachSorted(params, function(value, key) {
-        if (value === null || isUndefined(value)) return;
-        if (!isArray(value)) value = [value];
-
-        forEach(value, function(v) {
-          if (isObject(v)) {
-            if (isDate(v)) {
-              v = v.toISOString();
-            } else {
-              v = toJson(v);
-            }
-          }
-          parts.push(encodeUriQuery(key) + '=' +
-                     encodeUriQuery(v));
-        });
-      });
-      if (parts.length > 0) {
-        url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&');
-      }
-      return url;
-    }
-  }];
-}
-
-function createXhr() {
-    return new window.XMLHttpRequest();
-}
-
-/**
- * @ngdoc service
- * @name $httpBackend
- * @requires $window
- * @requires $document
- *
- * @description
- * HTTP backend used by the {@link ng.$http service} that delegates to
- * XMLHttpRequest object or JSONP and deals with browser incompatibilities.
- *
- * You should never need to use this service directly, instead use the higher-level abstractions:
- * {@link ng.$http $http} or {@link ngResource.$resource $resource}.
- *
- * During testing this implementation is swapped with {@link ngMock.$httpBackend mock
- * $httpBackend} which can be trained with responses.
- */
-function $HttpBackendProvider() {
-  this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
-    return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
-  }];
-}
-
-function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
-  // TODO(vojta): fix the signature
-  return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
-    $browser.$$incOutstandingRequestCount();
-    url = url || $browser.url();
-
-    if (lowercase(method) == 'jsonp') {
-      var callbackId = '_' + (callbacks.counter++).toString(36);
-      callbacks[callbackId] = function(data) {
-        callbacks[callbackId].data = data;
-        callbacks[callbackId].called = true;
-      };
-
-      var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),
-          callbackId, function(status, text) {
-        completeRequest(callback, status, callbacks[callbackId].data, "", text);
-        callbacks[callbackId] = noop;
-      });
-    } else {
-
-      var xhr = createXhr();
-
-      xhr.open(method, url, true);
-      forEach(headers, function(value, key) {
-        if (isDefined(value)) {
-            xhr.setRequestHeader(key, value);
-        }
-      });
-
-      xhr.onload = function requestLoaded() {
-        var statusText = xhr.statusText || '';
-
-        // responseText is the old-school way of retrieving response (supported by IE8 & 9)
-        // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
-        var response = ('response' in xhr) ? xhr.response : xhr.responseText;
-
-        // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
-        var status = xhr.status === 1223 ? 204 : xhr.status;
-
-        // fix status code when it is 0 (0 status is undocumented).
-        // Occurs when accessing file resources or on Android 4.1 stock browser
-        // while retrieving files from application cache.
-        if (status === 0) {
-          status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0;
-        }
-
-        completeRequest(callback,
-            status,
-            response,
-            xhr.getAllResponseHeaders(),
-            statusText);
-      };
-
-      var requestError = function() {
-        // The response is always empty
-        // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
-        completeRequest(callback, -1, null, null, '');
-      };
-
-      xhr.onerror = requestError;
-      xhr.onabort = requestError;
-
-      if (withCredentials) {
-        xhr.withCredentials = true;
-      }
-
-      if (responseType) {
-        try {
-          xhr.responseType = responseType;
-        } catch (e) {
-          // WebKit added support for the json responseType value on 09/03/2013
-          // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
-          // known to throw when setting the value "json" as the response type. Other older
-          // browsers implementing the responseType
-          //
-          // The json response type can be ignored if not supported, because JSON payloads are
-          // parsed on the client-side regardless.
-          if (responseType !== 'json') {
-            throw e;
-          }
-        }
-      }
-
-      xhr.send(post || null);
-    }
-
-    if (timeout > 0) {
-      var timeoutId = $browserDefer(timeoutRequest, timeout);
-    } else if (isPromiseLike(timeout)) {
-      timeout.then(timeoutRequest);
-    }
-
-
-    function timeoutRequest() {
-      jsonpDone && jsonpDone();
-      xhr && xhr.abort();
-    }
-
-    function completeRequest(callback, status, response, headersString, statusText) {
-      // cancel timeout and subsequent timeout promise resolution
-      if (timeoutId !== undefined) {
-        $browserDefer.cancel(timeoutId);
-      }
-      jsonpDone = xhr = null;
-
-      callback(status, response, headersString, statusText);
-      $browser.$$completeOutstandingRequest(noop);
-    }
-  };
-
-  function jsonpReq(url, callbackId, done) {
-    // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.:
-    // - fetches local scripts via XHR and evals them
-    // - adds and immediately removes script elements from the document
-    var script = rawDocument.createElement('script'), callback = null;
-    script.type = "text/javascript";
-    script.src = url;
-    script.async = true;
-
-    callback = function(event) {
-      removeEventListenerFn(script, "load", callback);
-      removeEventListenerFn(script, "error", callback);
-      rawDocument.body.removeChild(script);
-      script = null;
-      var status = -1;
-      var text = "unknown";
-
-      if (event) {
-        if (event.type === "load" && !callbacks[callbackId].called) {
-          event = { type: "error" };
-        }
-        text = event.type;
-        status = event.type === "error" ? 404 : 200;
-      }
-
-      if (done) {
-        done(status, text);
-      }
-    };
-
-    addEventListenerFn(script, "load", callback);
-    addEventListenerFn(script, "error", callback);
-    rawDocument.body.appendChild(script);
-    return callback;
-  }
-}
-
-var $interpolateMinErr = minErr('$interpolate');
-
-/**
- * @ngdoc provider
- * @name $interpolateProvider
- *
- * @description
- *
- * Used for configuring the interpolation markup. Defaults to `{{` and `}}`.
- *
- * @example
-<example module="customInterpolationApp">
-<file name="index.html">
-<script>
-  var customInterpolationApp = angular.module('customInterpolationApp', []);
-
-  customInterpolationApp.config(function($interpolateProvider) {
-    $interpolateProvider.startSymbol('//');
-    $interpolateProvider.endSymbol('//');
-  });
-
-
-  customInterpolationApp.controller('DemoController', function() {
-      this.label = "This binding is brought you by // interpolation symbols.";
-  });
-</script>
-<div ng-app="App" ng-controller="DemoController as demo">
-    //demo.label//
-</div>
-</file>
-<file name="protractor.js" type="protractor">
-  it('should interpolate binding with custom symbols', function() {
-    expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');
-  });
-</file>
-</example>
- */
-function $InterpolateProvider() {
-  var startSymbol = '{{';
-  var endSymbol = '}}';
-
-  /**
-   * @ngdoc method
-   * @name $interpolateProvider#startSymbol
-   * @description
-   * Symbol to denote start of expression in the interpolated string. Defaults to `{{`.
-   *
-   * @param {string=} value new value to set the starting symbol to.
-   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
-   */
-  this.startSymbol = function(value) {
-    if (value) {
-      startSymbol = value;
-      return this;
-    } else {
-      return startSymbol;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $interpolateProvider#endSymbol
-   * @description
-   * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
-   *
-   * @param {string=} value new value to set the ending symbol to.
-   * @returns {string|self} Returns the symbol when used as getter and self if used as setter.
-   */
-  this.endSymbol = function(value) {
-    if (value) {
-      endSymbol = value;
-      return this;
-    } else {
-      return endSymbol;
-    }
-  };
-
-
-  this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) {
-    var startSymbolLength = startSymbol.length,
-        endSymbolLength = endSymbol.length,
-        escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'),
-        escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g');
-
-    function escape(ch) {
-      return '\\\\\\' + ch;
-    }
-
-    /**
-     * @ngdoc service
-     * @name $interpolate
-     * @kind function
-     *
-     * @requires $parse
-     * @requires $sce
-     *
-     * @description
-     *
-     * Compiles a string with markup into an interpolation function. This service is used by the
-     * HTML {@link ng.$compile $compile} service for data binding. See
-     * {@link ng.$interpolateProvider $interpolateProvider} for configuring the
-     * interpolation markup.
-     *
-     *
-     * ```js
-     *   var $interpolate = ...; // injected
-     *   var exp = $interpolate('Hello {{name | uppercase}}!');
-     *   expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');
-     * ```
-     *
-     * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is
-     * `true`, the interpolation function will return `undefined` unless all embedded expressions
-     * evaluate to a value other than `undefined`.
-     *
-     * ```js
-     *   var $interpolate = ...; // injected
-     *   var context = {greeting: 'Hello', name: undefined };
-     *
-     *   // default "forgiving" mode
-     *   var exp = $interpolate('{{greeting}} {{name}}!');
-     *   expect(exp(context)).toEqual('Hello !');
-     *
-     *   // "allOrNothing" mode
-     *   exp = $interpolate('{{greeting}} {{name}}!', false, null, true);
-     *   expect(exp(context)).toBeUndefined();
-     *   context.name = 'Angular';
-     *   expect(exp(context)).toEqual('Hello Angular!');
-     * ```
-     *
-     * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior.
-     *
-     * ####Escaped Interpolation
-     * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers
-     * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash).
-     * It will be rendered as a regular start/end marker, and will not be interpreted as an expression
-     * or binding.
-     *
-     * This enables web-servers to prevent script injection attacks and defacing attacks, to some
-     * degree, while also enabling code examples to work without relying on the
-     * {@link ng.directive:ngNonBindable ngNonBindable} directive.
-     *
-     * **For security purposes, it is strongly encouraged that web servers escape user-supplied data,
-     * replacing angle brackets (&lt;, &gt;) with &amp;lt; and &amp;gt; respectively, and replacing all
-     * interpolation start/end markers with their escaped counterparts.**
-     *
-     * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered
-     * output when the $interpolate service processes the text. So, for HTML elements interpolated
-     * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter
-     * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such,
-     * this is typically useful only when user-data is used in rendering a template from the server, or
-     * when otherwise untrusted data is used by a directive.
-     *
-     * <example>
-     *  <file name="index.html">
-     *    <div ng-init="username='A user'">
-     *      <p ng-init="apptitle='Escaping demo'">{{apptitle}}: \{\{ username = "defaced value"; \}\}
-     *        </p>
-     *      <p><strong>{{username}}</strong> attempts to inject code which will deface the
-     *        application, but fails to accomplish their task, because the server has correctly
-     *        escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash)
-     *        characters.</p>
-     *      <p>Instead, the result of the attempted script injection is visible, and can be removed
-     *        from the database by an administrator.</p>
-     *    </div>
-     *  </file>
-     * </example>
-     *
-     * @param {string} text The text with markup to interpolate.
-     * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have
-     *    embedded expression in order to return an interpolation function. Strings with no
-     *    embedded expression will return null for the interpolation function.
-     * @param {string=} trustedContext when provided, the returned function passes the interpolated
-     *    result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult,
-     *    trustedContext)} before returning it.  Refer to the {@link ng.$sce $sce} service that
-     *    provides Strict Contextual Escaping for details.
-     * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined
-     *    unless all embedded expressions evaluate to a value other than `undefined`.
-     * @returns {function(context)} an interpolation function which is used to compute the
-     *    interpolated string. The function has these parameters:
-     *
-     * - `context`: evaluation context for all expressions embedded in the interpolated text
-     */
-    function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
-      allOrNothing = !!allOrNothing;
-      var startIndex,
-          endIndex,
-          index = 0,
-          expressions = [],
-          parseFns = [],
-          textLength = text.length,
-          exp,
-          concat = [],
-          expressionPositions = [];
-
-      while (index < textLength) {
-        if (((startIndex = text.indexOf(startSymbol, index)) != -1) &&
-             ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1)) {
-          if (index !== startIndex) {
-            concat.push(unescapeText(text.substring(index, startIndex)));
-          }
-          exp = text.substring(startIndex + startSymbolLength, endIndex);
-          expressions.push(exp);
-          parseFns.push($parse(exp, parseStringifyInterceptor));
-          index = endIndex + endSymbolLength;
-          expressionPositions.push(concat.length);
-          concat.push('');
-        } else {
-          // we did not find an interpolation, so we have to add the remainder to the separators array
-          if (index !== textLength) {
-            concat.push(unescapeText(text.substring(index)));
-          }
-          break;
-        }
-      }
-
-      // Concatenating expressions makes it hard to reason about whether some combination of
-      // concatenated values are unsafe to use and could easily lead to XSS.  By requiring that a
-      // single expression be used for iframe[src], object[src], etc., we ensure that the value
-      // that's used is assigned or constructed by some JS code somewhere that is more testable or
-      // make it obvious that you bound the value to some user controlled value.  This helps reduce
-      // the load when auditing for XSS issues.
-      if (trustedContext && concat.length > 1) {
-          throw $interpolateMinErr('noconcat',
-              "Error while interpolating: {0}\nStrict Contextual Escaping disallows " +
-              "interpolations that concatenate multiple expressions when a trusted value is " +
-              "required.  See http://docs.angularjs.org/api/ng.$sce", text);
-      }
-
-      if (!mustHaveExpression || expressions.length) {
-        var compute = function(values) {
-          for (var i = 0, ii = expressions.length; i < ii; i++) {
-            if (allOrNothing && isUndefined(values[i])) return;
-            concat[expressionPositions[i]] = values[i];
-          }
-          return concat.join('');
-        };
-
-        var getValue = function(value) {
-          return trustedContext ?
-            $sce.getTrusted(trustedContext, value) :
-            $sce.valueOf(value);
-        };
-
-        var stringify = function(value) {
-          if (value == null) { // null || undefined
-            return '';
-          }
-          switch (typeof value) {
-            case 'string':
-              break;
-            case 'number':
-              value = '' + value;
-              break;
-            default:
-              value = toJson(value);
-          }
-
-          return value;
-        };
-
-        return extend(function interpolationFn(context) {
-            var i = 0;
-            var ii = expressions.length;
-            var values = new Array(ii);
-
-            try {
-              for (; i < ii; i++) {
-                values[i] = parseFns[i](context);
-              }
-
-              return compute(values);
-            } catch (err) {
-              var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text,
-                  err.toString());
-              $exceptionHandler(newErr);
-            }
-
-          }, {
-          // all of these properties are undocumented for now
-          exp: text, //just for compatibility with regular watchers created via $watch
-          expressions: expressions,
-          $$watchDelegate: function(scope, listener, objectEquality) {
-            var lastValue;
-            return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) {
-              var currValue = compute(values);
-              if (isFunction(listener)) {
-                listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);
-              }
-              lastValue = currValue;
-            }, objectEquality);
-          }
-        });
-      }
-
-      function unescapeText(text) {
-        return text.replace(escapedStartRegexp, startSymbol).
-          replace(escapedEndRegexp, endSymbol);
-      }
-
-      function parseStringifyInterceptor(value) {
-        try {
-          value = getValue(value);
-          return allOrNothing && !isDefined(value) ? value : stringify(value);
-        } catch (err) {
-          var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text,
-            err.toString());
-          $exceptionHandler(newErr);
-        }
-      }
-    }
-
-
-    /**
-     * @ngdoc method
-     * @name $interpolate#startSymbol
-     * @description
-     * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`.
-     *
-     * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change
-     * the symbol.
-     *
-     * @returns {string} start symbol.
-     */
-    $interpolate.startSymbol = function() {
-      return startSymbol;
-    };
-
-
-    /**
-     * @ngdoc method
-     * @name $interpolate#endSymbol
-     * @description
-     * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
-     *
-     * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change
-     * the symbol.
-     *
-     * @returns {string} end symbol.
-     */
-    $interpolate.endSymbol = function() {
-      return endSymbol;
-    };
-
-    return $interpolate;
-  }];
-}
-
-function $IntervalProvider() {
-  this.$get = ['$rootScope', '$window', '$q', '$$q',
-       function($rootScope,   $window,   $q,   $$q) {
-    var intervals = {};
-
-
-     /**
-      * @ngdoc service
-      * @name $interval
-      *
-      * @description
-      * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay`
-      * milliseconds.
-      *
-      * The return value of registering an interval function is a promise. This promise will be
-      * notified upon each tick of the interval, and will be resolved after `count` iterations, or
-      * run indefinitely if `count` is not defined. The value of the notification will be the
-      * number of iterations that have run.
-      * To cancel an interval, call `$interval.cancel(promise)`.
-      *
-      * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
-      * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
-      * time.
-      *
-      * <div class="alert alert-warning">
-      * **Note**: Intervals created by this service must be explicitly destroyed when you are finished
-      * with them.  In particular they are not automatically destroyed when a controller's scope or a
-      * directive's element are destroyed.
-      * You should take this into consideration and make sure to always cancel the interval at the
-      * appropriate moment.  See the example below for more details on how and when to do this.
-      * </div>
-      *
-      * @param {function()} fn A function that should be called repeatedly.
-      * @param {number} delay Number of milliseconds between each function call.
-      * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
-      *   indefinitely.
-      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
-      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
-      * @returns {promise} A promise which will be notified on each iteration.
-      *
-      * @example
-      * <example module="intervalExample">
-      * <file name="index.html">
-      *   <script>
-      *     angular.module('intervalExample', [])
-      *       .controller('ExampleController', ['$scope', '$interval',
-      *         function($scope, $interval) {
-      *           $scope.format = 'M/d/yy h:mm:ss a';
-      *           $scope.blood_1 = 100;
-      *           $scope.blood_2 = 120;
-      *
-      *           var stop;
-      *           $scope.fight = function() {
-      *             // Don't start a new fight if we are already fighting
-      *             if ( angular.isDefined(stop) ) return;
-      *
-      *             stop = $interval(function() {
-      *               if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {
-      *                 $scope.blood_1 = $scope.blood_1 - 3;
-      *                 $scope.blood_2 = $scope.blood_2 - 4;
-      *               } else {
-      *                 $scope.stopFight();
-      *               }
-      *             }, 100);
-      *           };
-      *
-      *           $scope.stopFight = function() {
-      *             if (angular.isDefined(stop)) {
-      *               $interval.cancel(stop);
-      *               stop = undefined;
-      *             }
-      *           };
-      *
-      *           $scope.resetFight = function() {
-      *             $scope.blood_1 = 100;
-      *             $scope.blood_2 = 120;
-      *           };
-      *
-      *           $scope.$on('$destroy', function() {
-      *             // Make sure that the interval is destroyed too
-      *             $scope.stopFight();
-      *           });
-      *         }])
-      *       // Register the 'myCurrentTime' directive factory method.
-      *       // We inject $interval and dateFilter service since the factory method is DI.
-      *       .directive('myCurrentTime', ['$interval', 'dateFilter',
-      *         function($interval, dateFilter) {
-      *           // return the directive link function. (compile function not needed)
-      *           return function(scope, element, attrs) {
-      *             var format,  // date format
-      *                 stopTime; // so that we can cancel the time updates
-      *
-      *             // used to update the UI
-      *             function updateTime() {
-      *               element.text(dateFilter(new Date(), format));
-      *             }
-      *
-      *             // watch the expression, and update the UI on change.
-      *             scope.$watch(attrs.myCurrentTime, function(value) {
-      *               format = value;
-      *               updateTime();
-      *             });
-      *
-      *             stopTime = $interval(updateTime, 1000);
-      *
-      *             // listen on DOM destroy (removal) event, and cancel the next UI update
-      *             // to prevent updating time after the DOM element was removed.
-      *             element.on('$destroy', function() {
-      *               $interval.cancel(stopTime);
-      *             });
-      *           }
-      *         }]);
-      *   </script>
-      *
-      *   <div>
-      *     <div ng-controller="ExampleController">
-      *       Date format: <input ng-model="format"> <hr/>
-      *       Current time is: <span my-current-time="format"></span>
-      *       <hr/>
-      *       Blood 1 : <font color='red'>{{blood_1}}</font>
-      *       Blood 2 : <font color='red'>{{blood_2}}</font>
-      *       <button type="button" data-ng-click="fight()">Fight</button>
-      *       <button type="button" data-ng-click="stopFight()">StopFight</button>
-      *       <button type="button" data-ng-click="resetFight()">resetFight</button>
-      *     </div>
-      *   </div>
-      *
-      * </file>
-      * </example>
-      */
-    function interval(fn, delay, count, invokeApply) {
-      var setInterval = $window.setInterval,
-          clearInterval = $window.clearInterval,
-          iteration = 0,
-          skipApply = (isDefined(invokeApply) && !invokeApply),
-          deferred = (skipApply ? $$q : $q).defer(),
-          promise = deferred.promise;
-
-      count = isDefined(count) ? count : 0;
-
-      promise.then(null, null, fn);
-
-      promise.$$intervalId = setInterval(function tick() {
-        deferred.notify(iteration++);
-
-        if (count > 0 && iteration >= count) {
-          deferred.resolve(iteration);
-          clearInterval(promise.$$intervalId);
-          delete intervals[promise.$$intervalId];
-        }
-
-        if (!skipApply) $rootScope.$apply();
-
-      }, delay);
-
-      intervals[promise.$$intervalId] = deferred;
-
-      return promise;
-    }
-
-
-     /**
-      * @ngdoc method
-      * @name $interval#cancel
-      *
-      * @description
-      * Cancels a task associated with the `promise`.
-      *
-      * @param {promise} promise returned by the `$interval` function.
-      * @returns {boolean} Returns `true` if the task was successfully canceled.
-      */
-    interval.cancel = function(promise) {
-      if (promise && promise.$$intervalId in intervals) {
-        intervals[promise.$$intervalId].reject('canceled');
-        $window.clearInterval(promise.$$intervalId);
-        delete intervals[promise.$$intervalId];
-        return true;
-      }
-      return false;
-    };
-
-    return interval;
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $locale
- *
- * @description
- * $locale service provides localization rules for various Angular components. As of right now the
- * only public api is:
- *
- * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)
- */
-function $LocaleProvider() {
-  this.$get = function() {
-    return {
-      id: 'en-us',
-
-      NUMBER_FORMATS: {
-        DECIMAL_SEP: '.',
-        GROUP_SEP: ',',
-        PATTERNS: [
-          { // Decimal Pattern
-            minInt: 1,
-            minFrac: 0,
-            maxFrac: 3,
-            posPre: '',
-            posSuf: '',
-            negPre: '-',
-            negSuf: '',
-            gSize: 3,
-            lgSize: 3
-          },{ //Currency Pattern
-            minInt: 1,
-            minFrac: 2,
-            maxFrac: 2,
-            posPre: '\u00A4',
-            posSuf: '',
-            negPre: '(\u00A4',
-            negSuf: ')',
-            gSize: 3,
-            lgSize: 3
-          }
-        ],
-        CURRENCY_SYM: '$'
-      },
-
-      DATETIME_FORMATS: {
-        MONTH:
-            'January,February,March,April,May,June,July,August,September,October,November,December'
-            .split(','),
-        SHORTMONTH:  'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),
-        DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),
-        SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),
-        AMPMS: ['AM','PM'],
-        medium: 'MMM d, y h:mm:ss a',
-        'short': 'M/d/yy h:mm a',
-        fullDate: 'EEEE, MMMM d, y',
-        longDate: 'MMMM d, y',
-        mediumDate: 'MMM d, y',
-        shortDate: 'M/d/yy',
-        mediumTime: 'h:mm:ss a',
-        shortTime: 'h:mm a'
-      },
-
-      pluralCat: function(num) {
-        if (num === 1) {
-          return 'one';
-        }
-        return 'other';
-      }
-    };
-  };
-}
-
-var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
-    DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
-var $locationMinErr = minErr('$location');
-
-
-/**
- * Encode path using encodeUriSegment, ignoring forward slashes
- *
- * @param {string} path Path to encode
- * @returns {string}
- */
-function encodePath(path) {
-  var segments = path.split('/'),
-      i = segments.length;
-
-  while (i--) {
-    segments[i] = encodeUriSegment(segments[i]);
-  }
-
-  return segments.join('/');
-}
-
-function parseAbsoluteUrl(absoluteUrl, locationObj) {
-  var parsedUrl = urlResolve(absoluteUrl);
-
-  locationObj.$$protocol = parsedUrl.protocol;
-  locationObj.$$host = parsedUrl.hostname;
-  locationObj.$$port = int(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;
-}
-
-
-function parseAppUrl(relativeUrl, locationObj) {
-  var prefixed = (relativeUrl.charAt(0) !== '/');
-  if (prefixed) {
-    relativeUrl = '/' + relativeUrl;
-  }
-  var match = urlResolve(relativeUrl);
-  locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ?
-      match.pathname.substring(1) : match.pathname);
-  locationObj.$$search = parseKeyValue(match.search);
-  locationObj.$$hash = decodeURIComponent(match.hash);
-
-  // make sure path starts with '/';
-  if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') {
-    locationObj.$$path = '/' + locationObj.$$path;
-  }
-}
-
-
-/**
- *
- * @param {string} begin
- * @param {string} whole
- * @returns {string} returns text from whole after begin or undefined if it does not begin with
- *                   expected string.
- */
-function beginsWith(begin, whole) {
-  if (whole.indexOf(begin) === 0) {
-    return whole.substr(begin.length);
-  }
-}
-
-
-function stripHash(url) {
-  var index = url.indexOf('#');
-  return index == -1 ? url : url.substr(0, index);
-}
-
-function trimEmptyHash(url) {
-  return url.replace(/(#.+)|#$/, '$1');
-}
-
-
-function stripFile(url) {
-  return url.substr(0, stripHash(url).lastIndexOf('/') + 1);
-}
-
-/* return the server only (scheme://host:port) */
-function serverBase(url) {
-  return url.substring(0, url.indexOf('/', url.indexOf('//') + 2));
-}
-
-
-/**
- * LocationHtml5Url represents an url
- * This object is exposed as $location service when HTML5 mode is enabled and supported
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} basePrefix url path prefix
- */
-function LocationHtml5Url(appBase, basePrefix) {
-  this.$$html5 = true;
-  basePrefix = basePrefix || '';
-  var appBaseNoFile = stripFile(appBase);
-  parseAbsoluteUrl(appBase, this);
-
-
-  /**
-   * Parse given html5 (regular) url string into properties
-   * @param {string} url HTML5 url
-   * @private
-   */
-  this.$$parse = function(url) {
-    var pathUrl = beginsWith(appBaseNoFile, url);
-    if (!isString(pathUrl)) {
-      throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
-          appBaseNoFile);
-    }
-
-    parseAppUrl(pathUrl, this);
-
-    if (!this.$$path) {
-      this.$$path = '/';
-    }
-
-    this.$$compose();
-  };
-
-  /**
-   * Compose url and update `absUrl` property
-   * @private
-   */
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/'
-  };
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (relHref && relHref[0] === '#') {
-      // special case for links to hash fragments:
-      // keep the old url and only replace the hash fragment
-      this.hash(relHref.slice(1));
-      return true;
-    }
-    var appUrl, prevAppUrl;
-    var rewrittenUrl;
-
-    if ((appUrl = beginsWith(appBase, url)) !== undefined) {
-      prevAppUrl = appUrl;
-      if ((appUrl = beginsWith(basePrefix, appUrl)) !== undefined) {
-        rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl);
-      } else {
-        rewrittenUrl = appBase + prevAppUrl;
-      }
-    } else if ((appUrl = beginsWith(appBaseNoFile, url)) !== undefined) {
-      rewrittenUrl = appBaseNoFile + appUrl;
-    } else if (appBaseNoFile == url + '/') {
-      rewrittenUrl = appBaseNoFile;
-    }
-    if (rewrittenUrl) {
-      this.$$parse(rewrittenUrl);
-    }
-    return !!rewrittenUrl;
-  };
-}
-
-
-/**
- * LocationHashbangUrl represents url
- * This object is exposed as $location service when developer doesn't opt into html5 mode.
- * It also serves as the base class for html5 mode fallback on legacy browsers.
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} hashPrefix hashbang prefix
- */
-function LocationHashbangUrl(appBase, hashPrefix) {
-  var appBaseNoFile = stripFile(appBase);
-
-  parseAbsoluteUrl(appBase, this);
-
-
-  /**
-   * Parse given hashbang url into properties
-   * @param {string} url Hashbang url
-   * @private
-   */
-  this.$$parse = function(url) {
-    var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url);
-    var withoutHashUrl;
-
-    if (withoutBaseUrl.charAt(0) === '#') {
-
-      // The rest of the url starts with a hash so we have
-      // got either a hashbang path or a plain hash fragment
-      withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl);
-      if (isUndefined(withoutHashUrl)) {
-        // There was no hashbang prefix so we just have a hash fragment
-        withoutHashUrl = withoutBaseUrl;
-      }
-
-    } else {
-      // There was no hashbang path nor hash fragment:
-      // If we are in HTML5 mode we use what is left as the path;
-      // Otherwise we ignore what is left
-      withoutHashUrl = this.$$html5 ? withoutBaseUrl : '';
-    }
-
-    parseAppUrl(withoutHashUrl, this);
-
-    this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);
-
-    this.$$compose();
-
-    /*
-     * In Windows, on an anchor node on documents loaded from
-     * the filesystem, the browser will return a pathname
-     * prefixed with the drive name ('/C:/path') when a
-     * pathname without a drive is set:
-     *  * a.setAttribute('href', '/foo')
-     *   * a.pathname === '/C:/foo' //true
-     *
-     * Inside of Angular, we're always using pathnames that
-     * do not include drive names for routing.
-     */
-    function removeWindowsDriveName(path, url, base) {
-      /*
-      Matches paths for file protocol on windows,
-      such as /C:/foo/bar, and captures only /foo/bar.
-      */
-      var windowsFilePathExp = /^\/[A-Z]:(\/.*)/;
-
-      var firstPathSegmentMatch;
-
-      //Get the relative path from the input URL.
-      if (url.indexOf(base) === 0) {
-        url = url.replace(base, '');
-      }
-
-      // The input URL intentionally contains a first path segment that ends with a colon.
-      if (windowsFilePathExp.exec(url)) {
-        return path;
-      }
-
-      firstPathSegmentMatch = windowsFilePathExp.exec(path);
-      return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;
-    }
-  };
-
-  /**
-   * Compose hashbang url and update `absUrl` property
-   * @private
-   */
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : '');
-  };
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (stripHash(appBase) == stripHash(url)) {
-      this.$$parse(url);
-      return true;
-    }
-    return false;
-  };
-}
-
-
-/**
- * LocationHashbangUrl represents url
- * This object is exposed as $location service when html5 history api is enabled but the browser
- * does not support it.
- *
- * @constructor
- * @param {string} appBase application base URL
- * @param {string} hashPrefix hashbang prefix
- */
-function LocationHashbangInHtml5Url(appBase, hashPrefix) {
-  this.$$html5 = true;
-  LocationHashbangUrl.apply(this, arguments);
-
-  var appBaseNoFile = stripFile(appBase);
-
-  this.$$parseLinkUrl = function(url, relHref) {
-    if (relHref && relHref[0] === '#') {
-      // special case for links to hash fragments:
-      // keep the old url and only replace the hash fragment
-      this.hash(relHref.slice(1));
-      return true;
-    }
-
-    var rewrittenUrl;
-    var appUrl;
-
-    if (appBase == stripHash(url)) {
-      rewrittenUrl = url;
-    } else if ((appUrl = beginsWith(appBaseNoFile, url))) {
-      rewrittenUrl = appBase + hashPrefix + appUrl;
-    } else if (appBaseNoFile === url + '/') {
-      rewrittenUrl = appBaseNoFile;
-    }
-    if (rewrittenUrl) {
-      this.$$parse(rewrittenUrl);
-    }
-    return !!rewrittenUrl;
-  };
-
-  this.$$compose = function() {
-    var search = toKeyValue(this.$$search),
-        hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : '';
-
-    this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash;
-    // include hashPrefix in $$absUrl when $$url is empty so IE8 & 9 do not reload page because of removal of '#'
-    this.$$absUrl = appBase + hashPrefix + this.$$url;
-  };
-
-}
-
-
-var locationPrototype = {
-
-  /**
-   * Are we in html5 mode?
-   * @private
-   */
-  $$html5: false,
-
-  /**
-   * Has any change been replacing?
-   * @private
-   */
-  $$replace: false,
-
-  /**
-   * @ngdoc method
-   * @name $location#absUrl
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return full url representation with all segments encoded according to rules specified in
-   * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var absUrl = $location.absUrl();
-   * // => "http://example.com/#/some/path?foo=bar&baz=xoxo"
-   * ```
-   *
-   * @return {string} full url
-   */
-  absUrl: locationGetter('$$absUrl'),
-
-  /**
-   * @ngdoc method
-   * @name $location#url
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return url (e.g. `/path?a=b#hash`) when called without any parameter.
-   *
-   * Change path, search and hash, when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var url = $location.url();
-   * // => "/some/path?foo=bar&baz=xoxo"
-   * ```
-   *
-   * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
-   * @return {string} url
-   */
-  url: function(url) {
-    if (isUndefined(url))
-      return this.$$url;
-
-    var match = PATH_MATCH.exec(url);
-    if (match[1] || url === '') this.path(decodeURIComponent(match[1]));
-    if (match[2] || match[1] || url === '') this.search(match[3] || '');
-    this.hash(match[5] || '');
-
-    return this;
-  },
-
-  /**
-   * @ngdoc method
-   * @name $location#protocol
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return protocol of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var protocol = $location.protocol();
-   * // => "http"
-   * ```
-   *
-   * @return {string} protocol of current url
-   */
-  protocol: locationGetter('$$protocol'),
-
-  /**
-   * @ngdoc method
-   * @name $location#host
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return host of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var host = $location.host();
-   * // => "example.com"
-   * ```
-   *
-   * @return {string} host of current url.
-   */
-  host: locationGetter('$$host'),
-
-  /**
-   * @ngdoc method
-   * @name $location#port
-   *
-   * @description
-   * This method is getter only.
-   *
-   * Return port of current url.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var port = $location.port();
-   * // => 80
-   * ```
-   *
-   * @return {Number} port
-   */
-  port: locationGetter('$$port'),
-
-  /**
-   * @ngdoc method
-   * @name $location#path
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return path of current url when called without any parameter.
-   *
-   * Change path when called with parameter and return `$location`.
-   *
-   * Note: Path should always begin with forward slash (/), this method will add the forward slash
-   * if it is missing.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var path = $location.path();
-   * // => "/some/path"
-   * ```
-   *
-   * @param {(string|number)=} path New path
-   * @return {string} path
-   */
-  path: locationGetterSetter('$$path', function(path) {
-    path = path !== null ? path.toString() : '';
-    return path.charAt(0) == '/' ? path : '/' + path;
-  }),
-
-  /**
-   * @ngdoc method
-   * @name $location#search
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return search part (as object) of current url when called without any parameter.
-   *
-   * Change search part when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo
-   * var searchObject = $location.search();
-   * // => {foo: 'bar', baz: 'xoxo'}
-   *
-   * // set foo to 'yipee'
-   * $location.search('foo', 'yipee');
-   * // $location.search() => {foo: 'yipee', baz: 'xoxo'}
-   * ```
-   *
-   * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or
-   * hash object.
-   *
-   * When called with a single argument the method acts as a setter, setting the `search` component
-   * of `$location` to the specified value.
-   *
-   * If the argument is a hash object containing an array of values, these values will be encoded
-   * as duplicate search parameters in the url.
-   *
-   * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number, then `paramValue`
-   * will override only a single search property.
-   *
-   * If `paramValue` is an array, it will override the property of the `search` component of
-   * `$location` specified via the first argument.
-   *
-   * If `paramValue` is `null`, the property specified via the first argument will be deleted.
-   *
-   * If `paramValue` is `true`, the property specified via the first argument will be added with no
-   * value nor trailing equal sign.
-   *
-   * @return {Object} If called with no arguments returns the parsed `search` object. If called with
-   * one or more arguments returns `$location` object itself.
-   */
-  search: function(search, paramValue) {
-    switch (arguments.length) {
-      case 0:
-        return this.$$search;
-      case 1:
-        if (isString(search) || isNumber(search)) {
-          search = search.toString();
-          this.$$search = parseKeyValue(search);
-        } else if (isObject(search)) {
-          search = copy(search, {});
-          // remove object undefined or null properties
-          forEach(search, function(value, key) {
-            if (value == null) delete search[key];
-          });
-
-          this.$$search = search;
-        } else {
-          throw $locationMinErr('isrcharg',
-              'The first argument of the `$location#search()` call must be a string or an object.');
-        }
-        break;
-      default:
-        if (isUndefined(paramValue) || paramValue === null) {
-          delete this.$$search[search];
-        } else {
-          this.$$search[search] = paramValue;
-        }
-    }
-
-    this.$$compose();
-    return this;
-  },
-
-  /**
-   * @ngdoc method
-   * @name $location#hash
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return hash fragment when called without any parameter.
-   *
-   * Change hash fragment when called with parameter and return `$location`.
-   *
-   *
-   * ```js
-   * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue
-   * var hash = $location.hash();
-   * // => "hashValue"
-   * ```
-   *
-   * @param {(string|number)=} hash New hash fragment
-   * @return {string} hash
-   */
-  hash: locationGetterSetter('$$hash', function(hash) {
-    return hash !== null ? hash.toString() : '';
-  }),
-
-  /**
-   * @ngdoc method
-   * @name $location#replace
-   *
-   * @description
-   * If called, all changes to $location during current `$digest` will be replacing current history
-   * record, instead of adding new one.
-   */
-  replace: function() {
-    this.$$replace = true;
-    return this;
-  }
-};
-
-forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {
-  Location.prototype = Object.create(locationPrototype);
-
-  /**
-   * @ngdoc method
-   * @name $location#state
-   *
-   * @description
-   * This method is getter / setter.
-   *
-   * Return the history state object when called without any parameter.
-   *
-   * Change the history state object when called with one parameter and return `$location`.
-   * The state object is later passed to `pushState` or `replaceState`.
-   *
-   * NOTE: This method is supported only in HTML5 mode and only in browsers supporting
-   * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support
-   * older browsers (like IE9 or Android < 4.0), don't use this method.
-   *
-   * @param {object=} state State object for pushState or replaceState
-   * @return {object} state
-   */
-  Location.prototype.state = function(state) {
-    if (!arguments.length)
-      return this.$$state;
-
-    if (Location !== LocationHtml5Url || !this.$$html5) {
-      throw $locationMinErr('nostate', 'History API state support is available only ' +
-        'in HTML5 mode and only in browsers supporting HTML5 History API');
-    }
-    // The user might modify `stateObject` after invoking `$location.state(stateObject)`
-    // but we're changing the $$state reference to $browser.state() during the $digest
-    // so the modification window is narrow.
-    this.$$state = isUndefined(state) ? null : state;
-
-    return this;
-  };
-});
-
-
-function locationGetter(property) {
-  return function() {
-    return this[property];
-  };
-}
-
-
-function locationGetterSetter(property, preprocess) {
-  return function(value) {
-    if (isUndefined(value))
-      return this[property];
-
-    this[property] = preprocess(value);
-    this.$$compose();
-
-    return this;
-  };
-}
-
-
-/**
- * @ngdoc service
- * @name $location
- *
- * @requires $rootElement
- *
- * @description
- * The $location service parses the URL in the browser address bar (based on the
- * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL
- * available to your application. Changes to the URL in the address bar are reflected into
- * $location service and changes to $location are reflected into the browser address bar.
- *
- * **The $location service:**
- *
- * - Exposes the current URL in the browser address bar, so you can
- *   - Watch and observe the URL.
- *   - Change the URL.
- * - Synchronizes the URL with the browser when the user
- *   - Changes the address bar.
- *   - Clicks the back or forward button (or clicks a History link).
- *   - Clicks on a link.
- * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
- *
- * For more information see {@link guide/$location Developer Guide: Using $location}
- */
-
-/**
- * @ngdoc provider
- * @name $locationProvider
- * @description
- * Use the `$locationProvider` to configure how the application deep linking paths are stored.
- */
-function $LocationProvider() {
-  var hashPrefix = '',
-      html5Mode = {
-        enabled: false,
-        requireBase: true,
-        rewriteLinks: true
-      };
-
-  /**
-   * @ngdoc method
-   * @name $locationProvider#hashPrefix
-   * @description
-   * @param {string=} prefix Prefix for hash part (containing path and search)
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   */
-  this.hashPrefix = function(prefix) {
-    if (isDefined(prefix)) {
-      hashPrefix = prefix;
-      return this;
-    } else {
-      return hashPrefix;
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $locationProvider#html5Mode
-   * @description
-   * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value.
-   *   If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported
-   *   properties:
-   *   - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to
-   *     change urls where supported. Will fall back to hash-prefixed paths in browsers that do not
-   *     support `pushState`.
-   *   - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies
-   *     whether or not a <base> tag is required to be present. If `enabled` and `requireBase` are
-   *     true, and a base tag is not present, an error will be thrown when `$location` is injected.
-   *     See the {@link guide/$location $location guide for more information}
-   *   - **rewriteLinks** - `{boolean}` - (default: `true`) When html5Mode is enabled,
-   *     enables/disables url rewriting for relative links.
-   *
-   * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter
-   */
-  this.html5Mode = function(mode) {
-    if (isBoolean(mode)) {
-      html5Mode.enabled = mode;
-      return this;
-    } else if (isObject(mode)) {
-
-      if (isBoolean(mode.enabled)) {
-        html5Mode.enabled = mode.enabled;
-      }
-
-      if (isBoolean(mode.requireBase)) {
-        html5Mode.requireBase = mode.requireBase;
-      }
-
-      if (isBoolean(mode.rewriteLinks)) {
-        html5Mode.rewriteLinks = mode.rewriteLinks;
-      }
-
-      return this;
-    } else {
-      return html5Mode;
-    }
-  };
-
-  /**
-   * @ngdoc event
-   * @name $location#$locationChangeStart
-   * @eventType broadcast on root scope
-   * @description
-   * Broadcasted before a URL will change.
-   *
-   * This change can be prevented by calling
-   * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more
-   * details about event object. Upon successful change
-   * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired.
-   *
-   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
-   * the browser supports the HTML5 History API.
-   *
-   * @param {Object} angularEvent Synthetic event object.
-   * @param {string} newUrl New URL
-   * @param {string=} oldUrl URL that was before it was changed.
-   * @param {string=} newState New history state object
-   * @param {string=} oldState History state object that was before it was changed.
-   */
-
-  /**
-   * @ngdoc event
-   * @name $location#$locationChangeSuccess
-   * @eventType broadcast on root scope
-   * @description
-   * Broadcasted after a URL was changed.
-   *
-   * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when
-   * the browser supports the HTML5 History API.
-   *
-   * @param {Object} angularEvent Synthetic event object.
-   * @param {string} newUrl New URL
-   * @param {string=} oldUrl URL that was before it was changed.
-   * @param {string=} newState New history state object
-   * @param {string=} oldState History state object that was before it was changed.
-   */
-
-  this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window',
-      function($rootScope, $browser, $sniffer, $rootElement, $window) {
-    var $location,
-        LocationMode,
-        baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to ''
-        initialUrl = $browser.url(),
-        appBase;
-
-    if (html5Mode.enabled) {
-      if (!baseHref && html5Mode.requireBase) {
-        throw $locationMinErr('nobase',
-          "$location in HTML5 mode requires a <base> tag to be present!");
-      }
-      appBase = serverBase(initialUrl) + (baseHref || '/');
-      LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;
-    } else {
-      appBase = stripHash(initialUrl);
-      LocationMode = LocationHashbangUrl;
-    }
-    $location = new LocationMode(appBase, '#' + hashPrefix);
-    $location.$$parseLinkUrl(initialUrl, initialUrl);
-
-    $location.$$state = $browser.state();
-
-    var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
-
-    function setBrowserUrlWithFallback(url, replace, state) {
-      var oldUrl = $location.url();
-      var oldState = $location.$$state;
-      try {
-        $browser.url(url, replace, state);
-
-        // Make sure $location.state() returns referentially identical (not just deeply equal)
-        // state object; this makes possible quick checking if the state changed in the digest
-        // loop. Checking deep equality would be too expensive.
-        $location.$$state = $browser.state();
-      } catch (e) {
-        // Restore old values if pushState fails
-        $location.url(oldUrl);
-        $location.$$state = oldState;
-
-        throw e;
-      }
-    }
-
-    $rootElement.on('click', function(event) {
-      // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
-      // currently we open nice url link and redirect then
-
-      if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return;
-
-      var elm = jqLite(event.target);
-
-      // traverse the DOM up to find first A tag
-      while (nodeName_(elm[0]) !== 'a') {
-        // ignore rewriting if no A tag (reached root element, or no parent - removed from document)
-        if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return;
-      }
-
-      var absHref = elm.prop('href');
-      // get the actual href attribute - see
-      // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
-      var relHref = elm.attr('href') || elm.attr('xlink:href');
-
-      if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') {
-        // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during
-        // an animation.
-        absHref = urlResolve(absHref.animVal).href;
-      }
-
-      // Ignore when url is started with javascript: or mailto:
-      if (IGNORE_URI_REGEXP.test(absHref)) return;
-
-      if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) {
-        if ($location.$$parseLinkUrl(absHref, relHref)) {
-          // We do a preventDefault for all urls that are part of the angular application,
-          // in html5mode and also without, so that we are able to abort navigation without
-          // getting double entries in the location history.
-          event.preventDefault();
-          // update location manually
-          if ($location.absUrl() != $browser.url()) {
-            $rootScope.$apply();
-            // hack to work around FF6 bug 684208 when scenario runner clicks on links
-            $window.angular['ff-684208-preventDefault'] = true;
-          }
-        }
-      }
-    });
-
-
-    // rewrite hashbang url <> html5 url
-    if ($location.absUrl() != initialUrl) {
-      $browser.url($location.absUrl(), true);
-    }
-
-    var initializing = true;
-
-    // update $location when $browser url changes
-    $browser.onUrlChange(function(newUrl, newState) {
-      $rootScope.$evalAsync(function() {
-        var oldUrl = $location.absUrl();
-        var oldState = $location.$$state;
-        var defaultPrevented;
-
-        $location.$$parse(newUrl);
-        $location.$$state = newState;
-
-        defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
-            newState, oldState).defaultPrevented;
-
-        // if the location was changed by a `$locationChangeStart` handler then stop
-        // processing this location change
-        if ($location.absUrl() !== newUrl) return;
-
-        if (defaultPrevented) {
-          $location.$$parse(oldUrl);
-          $location.$$state = oldState;
-          setBrowserUrlWithFallback(oldUrl, false, oldState);
-        } else {
-          initializing = false;
-          afterLocationChange(oldUrl, oldState);
-        }
-      });
-      if (!$rootScope.$$phase) $rootScope.$digest();
-    });
-
-    // update browser
-    $rootScope.$watch(function $locationWatch() {
-      var oldUrl = trimEmptyHash($browser.url());
-      var newUrl = trimEmptyHash($location.absUrl());
-      var oldState = $browser.state();
-      var currentReplace = $location.$$replace;
-      var urlOrStateChanged = oldUrl !== newUrl ||
-        ($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
-
-      if (initializing || urlOrStateChanged) {
-        initializing = false;
-
-        $rootScope.$evalAsync(function() {
-          var newUrl = $location.absUrl();
-          var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
-              $location.$$state, oldState).defaultPrevented;
-
-          // if the location was changed by a `$locationChangeStart` handler then stop
-          // processing this location change
-          if ($location.absUrl() !== newUrl) return;
-
-          if (defaultPrevented) {
-            $location.$$parse(oldUrl);
-            $location.$$state = oldState;
-          } else {
-            if (urlOrStateChanged) {
-              setBrowserUrlWithFallback(newUrl, currentReplace,
-                                        oldState === $location.$$state ? null : $location.$$state);
-            }
-            afterLocationChange(oldUrl, oldState);
-          }
-        });
-      }
-
-      $location.$$replace = false;
-
-      // we don't need to return anything because $evalAsync will make the digest loop dirty when
-      // there is a change
-    });
-
-    return $location;
-
-    function afterLocationChange(oldUrl, oldState) {
-      $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl,
-        $location.$$state, oldState);
-    }
-}];
-}
-
-/**
- * @ngdoc service
- * @name $log
- * @requires $window
- *
- * @description
- * Simple service for logging. Default implementation safely writes the message
- * into the browser's console (if present).
- *
- * The main purpose of this service is to simplify debugging and troubleshooting.
- *
- * The default is to log `debug` messages. You can use
- * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.
- *
- * @example
-   <example module="logExample">
-     <file name="script.js">
-       angular.module('logExample', [])
-         .controller('LogController', ['$scope', '$log', function($scope, $log) {
-           $scope.$log = $log;
-           $scope.message = 'Hello World!';
-         }]);
-     </file>
-     <file name="index.html">
-       <div ng-controller="LogController">
-         <p>Reload this page with open console, enter text and hit the log button...</p>
-         Message:
-         <input type="text" ng-model="message"/>
-         <button ng-click="$log.log(message)">log</button>
-         <button ng-click="$log.warn(message)">warn</button>
-         <button ng-click="$log.info(message)">info</button>
-         <button ng-click="$log.error(message)">error</button>
-       </div>
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc provider
- * @name $logProvider
- * @description
- * Use the `$logProvider` to configure how the application logs messages
- */
-function $LogProvider() {
-  var debug = true,
-      self = this;
-
-  /**
-   * @ngdoc method
-   * @name $logProvider#debugEnabled
-   * @description
-   * @param {boolean=} flag enable or disable debug level messages
-   * @returns {*} current value if used as getter or itself (chaining) if used as setter
-   */
-  this.debugEnabled = function(flag) {
-    if (isDefined(flag)) {
-      debug = flag;
-    return this;
-    } else {
-      return debug;
-    }
-  };
-
-  this.$get = ['$window', function($window) {
-    return {
-      /**
-       * @ngdoc method
-       * @name $log#log
-       *
-       * @description
-       * Write a log message
-       */
-      log: consoleLog('log'),
-
-      /**
-       * @ngdoc method
-       * @name $log#info
-       *
-       * @description
-       * Write an information message
-       */
-      info: consoleLog('info'),
-
-      /**
-       * @ngdoc method
-       * @name $log#warn
-       *
-       * @description
-       * Write a warning message
-       */
-      warn: consoleLog('warn'),
-
-      /**
-       * @ngdoc method
-       * @name $log#error
-       *
-       * @description
-       * Write an error message
-       */
-      error: consoleLog('error'),
-
-      /**
-       * @ngdoc method
-       * @name $log#debug
-       *
-       * @description
-       * Write a debug message
-       */
-      debug: (function() {
-        var fn = consoleLog('debug');
-
-        return function() {
-          if (debug) {
-            fn.apply(self, arguments);
-          }
-        };
-      }())
-    };
-
-    function formatError(arg) {
-      if (arg instanceof Error) {
-        if (arg.stack) {
-          arg = (arg.message && arg.stack.indexOf(arg.message) === -1)
-              ? 'Error: ' + arg.message + '\n' + arg.stack
-              : arg.stack;
-        } else if (arg.sourceURL) {
-          arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line;
-        }
-      }
-      return arg;
-    }
-
-    function consoleLog(type) {
-      var console = $window.console || {},
-          logFn = console[type] || console.log || noop,
-          hasApply = false;
-
-      // Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
-      // The reason behind this is that console.log has type "object" in IE8...
-      try {
-        hasApply = !!logFn.apply;
-      } catch (e) {}
-
-      if (hasApply) {
-        return function() {
-          var args = [];
-          forEach(arguments, function(arg) {
-            args.push(formatError(arg));
-          });
-          return logFn.apply(console, args);
-        };
-      }
-
-      // we are IE which either doesn't have window.console => this is noop and we do nothing,
-      // or we are IE where console.log doesn't have apply so we log at least first 2 args
-      return function(arg1, arg2) {
-        logFn(arg1, arg2 == null ? '' : arg2);
-      };
-    }
-  }];
-}
-
-var $parseMinErr = minErr('$parse');
-
-// Sandboxing Angular Expressions
-// ------------------------------
-// Angular expressions are generally considered safe because these expressions only have direct
-// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by
-// obtaining a reference to native JS functions such as the Function constructor.
-//
-// As an example, consider the following Angular expression:
-//
-//   {}.toString.constructor('alert("evil JS code")')
-//
-// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits
-// against the expression language, but not to prevent exploits that were enabled by exposing
-// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good
-// practice and therefore we are not even trying to protect against interaction with an object
-// explicitly exposed in this way.
-//
-// In general, it is not possible to access a Window object from an angular expression unless a
-// window or some DOM object that has a reference to window is published onto a Scope.
-// Similarly we prevent invocations of function known to be dangerous, as well as assignments to
-// native objects.
-//
-// See https://docs.angularjs.org/guide/security
-
-
-function ensureSafeMemberName(name, fullExpression) {
-  if (name === "__defineGetter__" || name === "__defineSetter__"
-      || name === "__lookupGetter__" || name === "__lookupSetter__"
-      || name === "__proto__") {
-    throw $parseMinErr('isecfld',
-        'Attempting to access a disallowed field in Angular expressions! '
-        + 'Expression: {0}', fullExpression);
-  }
-  return name;
-}
-
-function ensureSafeObject(obj, fullExpression) {
-  // nifty check if obj is Function that is fast and works across iframes and other contexts
-  if (obj) {
-    if (obj.constructor === obj) {
-      throw $parseMinErr('isecfn',
-          'Referencing Function in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// isWindow(obj)
-        obj.window === obj) {
-      throw $parseMinErr('isecwindow',
-          'Referencing the Window in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// isElement(obj)
-        obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) {
-      throw $parseMinErr('isecdom',
-          'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    } else if (// block Object so that we can't get hold of dangerous Object.* methods
-        obj === Object) {
-      throw $parseMinErr('isecobj',
-          'Referencing Object in Angular expressions is disallowed! Expression: {0}',
-          fullExpression);
-    }
-  }
-  return obj;
-}
-
-var CALL = Function.prototype.call;
-var APPLY = Function.prototype.apply;
-var BIND = Function.prototype.bind;
-
-function ensureSafeFunction(obj, fullExpression) {
-  if (obj) {
-    if (obj.constructor === obj) {
-      throw $parseMinErr('isecfn',
-        'Referencing Function in Angular expressions is disallowed! Expression: {0}',
-        fullExpression);
-    } else if (obj === CALL || obj === APPLY || obj === BIND) {
-      throw $parseMinErr('isecff',
-        'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}',
-        fullExpression);
-    }
-  }
-}
-
-//Keyword constants
-var CONSTANTS = createMap();
-forEach({
-  'null': function() { return null; },
-  'true': function() { return true; },
-  'false': function() { return false; },
-  'undefined': function() {}
-}, function(constantGetter, name) {
-  constantGetter.constant = constantGetter.literal = constantGetter.sharedGetter = true;
-  CONSTANTS[name] = constantGetter;
-});
-
-//Not quite a constant, but can be lex/parsed the same
-CONSTANTS['this'] = function(self) { return self; };
-CONSTANTS['this'].sharedGetter = true;
-
-
-//Operators - will be wrapped by binaryFn/unaryFn/assignment/filter
-var OPERATORS = extend(createMap(), {
-    '+':function(self, locals, a, b) {
-      a=a(self, locals); b=b(self, locals);
-      if (isDefined(a)) {
-        if (isDefined(b)) {
-          return a + b;
-        }
-        return a;
-      }
-      return isDefined(b) ? b : undefined;},
-    '-':function(self, locals, a, b) {
-          a=a(self, locals); b=b(self, locals);
-          return (isDefined(a) ? a : 0) - (isDefined(b) ? b : 0);
-        },
-    '*':function(self, locals, a, b) {return a(self, locals) * b(self, locals);},
-    '/':function(self, locals, a, b) {return a(self, locals) / b(self, locals);},
-    '%':function(self, locals, a, b) {return a(self, locals) % b(self, locals);},
-    '===':function(self, locals, a, b) {return a(self, locals) === b(self, locals);},
-    '!==':function(self, locals, a, b) {return a(self, locals) !== b(self, locals);},
-    '==':function(self, locals, a, b) {return a(self, locals) == b(self, locals);},
-    '!=':function(self, locals, a, b) {return a(self, locals) != b(self, locals);},
-    '<':function(self, locals, a, b) {return a(self, locals) < b(self, locals);},
-    '>':function(self, locals, a, b) {return a(self, locals) > b(self, locals);},
-    '<=':function(self, locals, a, b) {return a(self, locals) <= b(self, locals);},
-    '>=':function(self, locals, a, b) {return a(self, locals) >= b(self, locals);},
-    '&&':function(self, locals, a, b) {return a(self, locals) && b(self, locals);},
-    '||':function(self, locals, a, b) {return a(self, locals) || b(self, locals);},
-    '!':function(self, locals, a) {return !a(self, locals);},
-
-    //Tokenized as operators but parsed as assignment/filters
-    '=':true,
-    '|':true
-});
-var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'};
-
-
-/////////////////////////////////////////
-
-
-/**
- * @constructor
- */
-var Lexer = function(options) {
-  this.options = options;
-};
-
-Lexer.prototype = {
-  constructor: Lexer,
-
-  lex: function(text) {
-    this.text = text;
-    this.index = 0;
-    this.tokens = [];
-
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      if (ch === '"' || ch === "'") {
-        this.readString(ch);
-      } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) {
-        this.readNumber();
-      } else if (this.isIdent(ch)) {
-        this.readIdent();
-      } else if (this.is(ch, '(){}[].,;:?')) {
-        this.tokens.push({index: this.index, text: ch});
-        this.index++;
-      } else if (this.isWhitespace(ch)) {
-        this.index++;
-      } else {
-        var ch2 = ch + this.peek();
-        var ch3 = ch2 + this.peek(2);
-        var op1 = OPERATORS[ch];
-        var op2 = OPERATORS[ch2];
-        var op3 = OPERATORS[ch3];
-        if (op1 || op2 || op3) {
-          var token = op3 ? ch3 : (op2 ? ch2 : ch);
-          this.tokens.push({index: this.index, text: token, operator: true});
-          this.index += token.length;
-        } else {
-          this.throwError('Unexpected next character ', this.index, this.index + 1);
-        }
-      }
-    }
-    return this.tokens;
-  },
-
-  is: function(ch, chars) {
-    return chars.indexOf(ch) !== -1;
-  },
-
-  peek: function(i) {
-    var num = i || 1;
-    return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false;
-  },
-
-  isNumber: function(ch) {
-    return ('0' <= ch && ch <= '9') && typeof ch === "string";
-  },
-
-  isWhitespace: function(ch) {
-    // IE treats non-breaking space as \u00A0
-    return (ch === ' ' || ch === '\r' || ch === '\t' ||
-            ch === '\n' || ch === '\v' || ch === '\u00A0');
-  },
-
-  isIdent: function(ch) {
-    return ('a' <= ch && ch <= 'z' ||
-            'A' <= ch && ch <= 'Z' ||
-            '_' === ch || ch === '$');
-  },
-
-  isExpOperator: function(ch) {
-    return (ch === '-' || ch === '+' || this.isNumber(ch));
-  },
-
-  throwError: function(error, start, end) {
-    end = end || this.index;
-    var colStr = (isDefined(start)
-            ? 's ' + start +  '-' + this.index + ' [' + this.text.substring(start, end) + ']'
-            : ' ' + end);
-    throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].',
-        error, colStr, this.text);
-  },
-
-  readNumber: function() {
-    var number = '';
-    var start = this.index;
-    while (this.index < this.text.length) {
-      var ch = lowercase(this.text.charAt(this.index));
-      if (ch == '.' || this.isNumber(ch)) {
-        number += ch;
-      } else {
-        var peekCh = this.peek();
-        if (ch == 'e' && this.isExpOperator(peekCh)) {
-          number += ch;
-        } else if (this.isExpOperator(ch) &&
-            peekCh && this.isNumber(peekCh) &&
-            number.charAt(number.length - 1) == 'e') {
-          number += ch;
-        } else if (this.isExpOperator(ch) &&
-            (!peekCh || !this.isNumber(peekCh)) &&
-            number.charAt(number.length - 1) == 'e') {
-          this.throwError('Invalid exponent');
-        } else {
-          break;
-        }
-      }
-      this.index++;
-    }
-    this.tokens.push({
-      index: start,
-      text: number,
-      constant: true,
-      value: Number(number)
-    });
-  },
-
-  readIdent: function() {
-    var start = this.index;
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      if (!(this.isIdent(ch) || this.isNumber(ch))) {
-        break;
-      }
-      this.index++;
-    }
-    this.tokens.push({
-      index: start,
-      text: this.text.slice(start, this.index),
-      identifier: true
-    });
-  },
-
-  readString: function(quote) {
-    var start = this.index;
-    this.index++;
-    var string = '';
-    var rawString = quote;
-    var escape = false;
-    while (this.index < this.text.length) {
-      var ch = this.text.charAt(this.index);
-      rawString += ch;
-      if (escape) {
-        if (ch === 'u') {
-          var hex = this.text.substring(this.index + 1, this.index + 5);
-          if (!hex.match(/[\da-f]{4}/i))
-            this.throwError('Invalid unicode escape [\\u' + hex + ']');
-          this.index += 4;
-          string += String.fromCharCode(parseInt(hex, 16));
-        } else {
-          var rep = ESCAPE[ch];
-          string = string + (rep || ch);
-        }
-        escape = false;
-      } else if (ch === '\\') {
-        escape = true;
-      } else if (ch === quote) {
-        this.index++;
-        this.tokens.push({
-          index: start,
-          text: rawString,
-          constant: true,
-          value: string
-        });
-        return;
-      } else {
-        string += ch;
-      }
-      this.index++;
-    }
-    this.throwError('Unterminated quote', start);
-  }
-};
-
-
-function isConstant(exp) {
-  return exp.constant;
-}
-
-/**
- * @constructor
- */
-var Parser = function(lexer, $filter, options) {
-  this.lexer = lexer;
-  this.$filter = $filter;
-  this.options = options;
-};
-
-Parser.ZERO = extend(function() {
-  return 0;
-}, {
-  sharedGetter: true,
-  constant: true
-});
-
-Parser.prototype = {
-  constructor: Parser,
-
-  parse: function(text) {
-    this.text = text;
-    this.tokens = this.lexer.lex(text);
-
-    var value = this.statements();
-
-    if (this.tokens.length !== 0) {
-      this.throwError('is an unexpected token', this.tokens[0]);
-    }
-
-    value.literal = !!value.literal;
-    value.constant = !!value.constant;
-
-    return value;
-  },
-
-  primary: function() {
-    var primary;
-    if (this.expect('(')) {
-      primary = this.filterChain();
-      this.consume(')');
-    } else if (this.expect('[')) {
-      primary = this.arrayDeclaration();
-    } else if (this.expect('{')) {
-      primary = this.object();
-    } else if (this.peek().identifier && this.peek().text in CONSTANTS) {
-      primary = CONSTANTS[this.consume().text];
-    } else if (this.peek().identifier) {
-      primary = this.identifier();
-    } else if (this.peek().constant) {
-      primary = this.constant();
-    } else {
-      this.throwError('not a primary expression', this.peek());
-    }
-
-    var next, context;
-    while ((next = this.expect('(', '[', '.'))) {
-      if (next.text === '(') {
-        primary = this.functionCall(primary, context);
-        context = null;
-      } else if (next.text === '[') {
-        context = primary;
-        primary = this.objectIndex(primary);
-      } else if (next.text === '.') {
-        context = primary;
-        primary = this.fieldAccess(primary);
-      } else {
-        this.throwError('IMPOSSIBLE');
-      }
-    }
-    return primary;
-  },
-
-  throwError: function(msg, token) {
-    throw $parseMinErr('syntax',
-        'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].',
-          token.text, msg, (token.index + 1), this.text, this.text.substring(token.index));
-  },
-
-  peekToken: function() {
-    if (this.tokens.length === 0)
-      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
-    return this.tokens[0];
-  },
-
-  peek: function(e1, e2, e3, e4) {
-    return this.peekAhead(0, e1, e2, e3, e4);
-  },
-  peekAhead: function(i, e1, e2, e3, e4) {
-    if (this.tokens.length > i) {
-      var token = this.tokens[i];
-      var t = token.text;
-      if (t === e1 || t === e2 || t === e3 || t === e4 ||
-          (!e1 && !e2 && !e3 && !e4)) {
-        return token;
-      }
-    }
-    return false;
-  },
-
-  expect: function(e1, e2, e3, e4) {
-    var token = this.peek(e1, e2, e3, e4);
-    if (token) {
-      this.tokens.shift();
-      return token;
-    }
-    return false;
-  },
-
-  consume: function(e1) {
-    if (this.tokens.length === 0) {
-      throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text);
-    }
-
-    var token = this.expect(e1);
-    if (!token) {
-      this.throwError('is unexpected, expecting [' + e1 + ']', this.peek());
-    }
-    return token;
-  },
-
-  unaryFn: function(op, right) {
-    var fn = OPERATORS[op];
-    return extend(function $parseUnaryFn(self, locals) {
-      return fn(self, locals, right);
-    }, {
-      constant:right.constant,
-      inputs: [right]
-    });
-  },
-
-  binaryFn: function(left, op, right, isBranching) {
-    var fn = OPERATORS[op];
-    return extend(function $parseBinaryFn(self, locals) {
-      return fn(self, locals, left, right);
-    }, {
-      constant: left.constant && right.constant,
-      inputs: !isBranching && [left, right]
-    });
-  },
-
-  identifier: function() {
-    var id = this.consume().text;
-
-    //Continue reading each `.identifier` unless it is a method invocation
-    while (this.peek('.') && this.peekAhead(1).identifier && !this.peekAhead(2, '(')) {
-      id += this.consume().text + this.consume().text;
-    }
-
-    return getterFn(id, this.options, this.text);
-  },
-
-  constant: function() {
-    var value = this.consume().value;
-
-    return extend(function $parseConstant() {
-      return value;
-    }, {
-      constant: true,
-      literal: true
-    });
-  },
-
-  statements: function() {
-    var statements = [];
-    while (true) {
-      if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']'))
-        statements.push(this.filterChain());
-      if (!this.expect(';')) {
-        // optimize for the common case where there is only one statement.
-        // TODO(size): maybe we should not support multiple statements?
-        return (statements.length === 1)
-            ? statements[0]
-            : function $parseStatements(self, locals) {
-                var value;
-                for (var i = 0, ii = statements.length; i < ii; i++) {
-                  value = statements[i](self, locals);
-                }
-                return value;
-              };
-      }
-    }
-  },
-
-  filterChain: function() {
-    var left = this.expression();
-    var token;
-    while ((token = this.expect('|'))) {
-      left = this.filter(left);
-    }
-    return left;
-  },
-
-  filter: function(inputFn) {
-    var fn = this.$filter(this.consume().text);
-    var argsFn;
-    var args;
-
-    if (this.peek(':')) {
-      argsFn = [];
-      args = []; // we can safely reuse the array
-      while (this.expect(':')) {
-        argsFn.push(this.expression());
-      }
-    }
-
-    var inputs = [inputFn].concat(argsFn || []);
-
-    return extend(function $parseFilter(self, locals) {
-      var input = inputFn(self, locals);
-      if (args) {
-        args[0] = input;
-
-        var i = argsFn.length;
-        while (i--) {
-          args[i + 1] = argsFn[i](self, locals);
-        }
-
-        return fn.apply(undefined, args);
-      }
-
-      return fn(input);
-    }, {
-      constant: !fn.$stateful && inputs.every(isConstant),
-      inputs: !fn.$stateful && inputs
-    });
-  },
-
-  expression: function() {
-    return this.assignment();
-  },
-
-  assignment: function() {
-    var left = this.ternary();
-    var right;
-    var token;
-    if ((token = this.expect('='))) {
-      if (!left.assign) {
-        this.throwError('implies assignment but [' +
-            this.text.substring(0, token.index) + '] can not be assigned to', token);
-      }
-      right = this.ternary();
-      return extend(function $parseAssignment(scope, locals) {
-        return left.assign(scope, right(scope, locals), locals);
-      }, {
-        inputs: [left, right]
-      });
-    }
-    return left;
-  },
-
-  ternary: function() {
-    var left = this.logicalOR();
-    var middle;
-    var token;
-    if ((token = this.expect('?'))) {
-      middle = this.assignment();
-      if (this.consume(':')) {
-        var right = this.assignment();
-
-        return extend(function $parseTernary(self, locals) {
-          return left(self, locals) ? middle(self, locals) : right(self, locals);
-        }, {
-          constant: left.constant && middle.constant && right.constant
-        });
-      }
-    }
-
-    return left;
-  },
-
-  logicalOR: function() {
-    var left = this.logicalAND();
-    var token;
-    while ((token = this.expect('||'))) {
-      left = this.binaryFn(left, token.text, this.logicalAND(), true);
-    }
-    return left;
-  },
-
-  logicalAND: function() {
-    var left = this.equality();
-    var token;
-    while ((token = this.expect('&&'))) {
-      left = this.binaryFn(left, token.text, this.equality(), true);
-    }
-    return left;
-  },
-
-  equality: function() {
-    var left = this.relational();
-    var token;
-    while ((token = this.expect('==','!=','===','!=='))) {
-      left = this.binaryFn(left, token.text, this.relational());
-    }
-    return left;
-  },
-
-  relational: function() {
-    var left = this.additive();
-    var token;
-    while ((token = this.expect('<', '>', '<=', '>='))) {
-      left = this.binaryFn(left, token.text, this.additive());
-    }
-    return left;
-  },
-
-  additive: function() {
-    var left = this.multiplicative();
-    var token;
-    while ((token = this.expect('+','-'))) {
-      left = this.binaryFn(left, token.text, this.multiplicative());
-    }
-    return left;
-  },
-
-  multiplicative: function() {
-    var left = this.unary();
-    var token;
-    while ((token = this.expect('*','/','%'))) {
-      left = this.binaryFn(left, token.text, this.unary());
-    }
-    return left;
-  },
-
-  unary: function() {
-    var token;
-    if (this.expect('+')) {
-      return this.primary();
-    } else if ((token = this.expect('-'))) {
-      return this.binaryFn(Parser.ZERO, token.text, this.unary());
-    } else if ((token = this.expect('!'))) {
-      return this.unaryFn(token.text, this.unary());
-    } else {
-      return this.primary();
-    }
-  },
-
-  fieldAccess: function(object) {
-    var getter = this.identifier();
-
-    return extend(function $parseFieldAccess(scope, locals, self) {
-      var o = self || object(scope, locals);
-      return (o == null) ? undefined : getter(o);
-    }, {
-      assign: function(scope, value, locals) {
-        var o = object(scope, locals);
-        if (!o) object.assign(scope, o = {}, locals);
-        return getter.assign(o, value);
-      }
-    });
-  },
-
-  objectIndex: function(obj) {
-    var expression = this.text;
-
-    var indexFn = this.expression();
-    this.consume(']');
-
-    return extend(function $parseObjectIndex(self, locals) {
-      var o = obj(self, locals),
-          i = indexFn(self, locals),
-          v;
-
-      ensureSafeMemberName(i, expression);
-      if (!o) return undefined;
-      v = ensureSafeObject(o[i], expression);
-      return v;
-    }, {
-      assign: function(self, value, locals) {
-        var key = ensureSafeMemberName(indexFn(self, locals), expression);
-        // prevent overwriting of Function.constructor which would break ensureSafeObject check
-        var o = ensureSafeObject(obj(self, locals), expression);
-        if (!o) obj.assign(self, o = {}, locals);
-        return o[key] = value;
-      }
-    });
-  },
-
-  functionCall: function(fnGetter, contextGetter) {
-    var argsFn = [];
-    if (this.peekToken().text !== ')') {
-      do {
-        argsFn.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume(')');
-
-    var expressionText = this.text;
-    // we can safely reuse the array across invocations
-    var args = argsFn.length ? [] : null;
-
-    return function $parseFunctionCall(scope, locals) {
-      var context = contextGetter ? contextGetter(scope, locals) : isDefined(contextGetter) ? undefined : scope;
-      var fn = fnGetter(scope, locals, context) || noop;
-
-      if (args) {
-        var i = argsFn.length;
-        while (i--) {
-          args[i] = ensureSafeObject(argsFn[i](scope, locals), expressionText);
-        }
-      }
-
-      ensureSafeObject(context, expressionText);
-      ensureSafeFunction(fn, expressionText);
-
-      // IE doesn't have apply for some native functions
-      var v = fn.apply
-            ? fn.apply(context, args)
-            : fn(args[0], args[1], args[2], args[3], args[4]);
-
-      return ensureSafeObject(v, expressionText);
-      };
-  },
-
-  // This is used with json array declaration
-  arrayDeclaration: function() {
-    var elementFns = [];
-    if (this.peekToken().text !== ']') {
-      do {
-        if (this.peek(']')) {
-          // Support trailing commas per ES5.1.
-          break;
-        }
-        elementFns.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume(']');
-
-    return extend(function $parseArrayLiteral(self, locals) {
-      var array = [];
-      for (var i = 0, ii = elementFns.length; i < ii; i++) {
-        array.push(elementFns[i](self, locals));
-      }
-      return array;
-    }, {
-      literal: true,
-      constant: elementFns.every(isConstant),
-      inputs: elementFns
-    });
-  },
-
-  object: function() {
-    var keys = [], valueFns = [];
-    if (this.peekToken().text !== '}') {
-      do {
-        if (this.peek('}')) {
-          // Support trailing commas per ES5.1.
-          break;
-        }
-        var token = this.consume();
-        if (token.constant) {
-          keys.push(token.value);
-        } else if (token.identifier) {
-          keys.push(token.text);
-        } else {
-          this.throwError("invalid key", token);
-        }
-        this.consume(':');
-        valueFns.push(this.expression());
-      } while (this.expect(','));
-    }
-    this.consume('}');
-
-    return extend(function $parseObjectLiteral(self, locals) {
-      var object = {};
-      for (var i = 0, ii = valueFns.length; i < ii; i++) {
-        object[keys[i]] = valueFns[i](self, locals);
-      }
-      return object;
-    }, {
-      literal: true,
-      constant: valueFns.every(isConstant),
-      inputs: valueFns
-    });
-  }
-};
-
-
-//////////////////////////////////////////////////
-// Parser helper functions
-//////////////////////////////////////////////////
-
-function setter(obj, locals, path, setValue, fullExp) {
-  ensureSafeObject(obj, fullExp);
-  ensureSafeObject(locals, fullExp);
-
-  var element = path.split('.'), key;
-  for (var i = 0; element.length > 1; i++) {
-    key = ensureSafeMemberName(element.shift(), fullExp);
-    var propertyObj = (i === 0 && locals && locals[key]) || obj[key];
-    if (!propertyObj) {
-      propertyObj = {};
-      obj[key] = propertyObj;
-    }
-    obj = ensureSafeObject(propertyObj, fullExp);
-  }
-  key = ensureSafeMemberName(element.shift(), fullExp);
-  ensureSafeObject(obj[key], fullExp);
-  obj[key] = setValue;
-  return setValue;
-}
-
-var getterFnCacheDefault = createMap();
-var getterFnCacheExpensive = createMap();
-
-function isPossiblyDangerousMemberName(name) {
-  return name == 'constructor';
-}
-
-/**
- * Implementation of the "Black Hole" variant from:
- * - http://jsperf.com/angularjs-parse-getter/4
- * - http://jsperf.com/path-evaluation-simplified/7
- */
-function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiveChecks) {
-  ensureSafeMemberName(key0, fullExp);
-  ensureSafeMemberName(key1, fullExp);
-  ensureSafeMemberName(key2, fullExp);
-  ensureSafeMemberName(key3, fullExp);
-  ensureSafeMemberName(key4, fullExp);
-  var eso = function(o) {
-    return ensureSafeObject(o, fullExp);
-  };
-  var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;
-  var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;
-  var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;
-  var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;
-  var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;
-
-  return function cspSafeGetter(scope, locals) {
-    var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;
-
-    if (pathVal == null) return pathVal;
-    pathVal = eso0(pathVal[key0]);
-
-    if (!key1) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso1(pathVal[key1]);
-
-    if (!key2) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso2(pathVal[key2]);
-
-    if (!key3) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso3(pathVal[key3]);
-
-    if (!key4) return pathVal;
-    if (pathVal == null) return undefined;
-    pathVal = eso4(pathVal[key4]);
-
-    return pathVal;
-  };
-}
-
-function getterFnWithEnsureSafeObject(fn, fullExpression) {
-  return function(s, l) {
-    return fn(s, l, ensureSafeObject, fullExpression);
-  };
-}
-
-function getterFn(path, options, fullExp) {
-  var expensiveChecks = options.expensiveChecks;
-  var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);
-  var fn = getterFnCache[path];
-  if (fn) return fn;
-
-
-  var pathKeys = path.split('.'),
-      pathKeysLength = pathKeys.length;
-
-  // http://jsperf.com/angularjs-parse-getter/6
-  if (options.csp) {
-    if (pathKeysLength < 6) {
-      fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp, expensiveChecks);
-    } else {
-      fn = function cspSafeGetter(scope, locals) {
-        var i = 0, val;
-        do {
-          val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],
-                                pathKeys[i++], fullExp, expensiveChecks)(scope, locals);
-
-          locals = undefined; // clear after first iteration
-          scope = val;
-        } while (i < pathKeysLength);
-        return val;
-      };
-    }
-  } else {
-    var code = '';
-    if (expensiveChecks) {
-      code += 's = eso(s, fe);\nl = eso(l, fe);\n';
-    }
-    var needsEnsureSafeObject = expensiveChecks;
-    forEach(pathKeys, function(key, index) {
-      ensureSafeMemberName(key, fullExp);
-      var lookupJs = (index
-                      // we simply dereference 's' on any .dot notation
-                      ? 's'
-                      // but if we are first then we check locals first, and if so read it first
-                      : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key;
-      if (expensiveChecks || isPossiblyDangerousMemberName(key)) {
-        lookupJs = 'eso(' + lookupJs + ', fe)';
-        needsEnsureSafeObject = true;
-      }
-      code += 'if(s == null) return undefined;\n' +
-              's=' + lookupJs + ';\n';
-    });
-    code += 'return s;';
-
-    /* jshint -W054 */
-    var evaledFnGetter = new Function('s', 'l', 'eso', 'fe', code); // s=scope, l=locals, eso=ensureSafeObject
-    /* jshint +W054 */
-    evaledFnGetter.toString = valueFn(code);
-    if (needsEnsureSafeObject) {
-      evaledFnGetter = getterFnWithEnsureSafeObject(evaledFnGetter, fullExp);
-    }
-    fn = evaledFnGetter;
-  }
-
-  fn.sharedGetter = true;
-  fn.assign = function(self, value, locals) {
-    return setter(self, locals, path, value, path);
-  };
-  getterFnCache[path] = fn;
-  return fn;
-}
-
-var objectValueOf = Object.prototype.valueOf;
-
-function getValueOf(value) {
-  return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);
-}
-
-///////////////////////////////////
-
-/**
- * @ngdoc service
- * @name $parse
- * @kind function
- *
- * @description
- *
- * Converts Angular {@link guide/expression expression} into a function.
- *
- * ```js
- *   var getter = $parse('user.name');
- *   var setter = getter.assign;
- *   var context = {user:{name:'angular'}};
- *   var locals = {user:{name:'local'}};
- *
- *   expect(getter(context)).toEqual('angular');
- *   setter(context, 'newValue');
- *   expect(context.user.name).toEqual('newValue');
- *   expect(getter(context, locals)).toEqual('local');
- * ```
- *
- *
- * @param {string} expression String expression to compile.
- * @returns {function(context, locals)} a function which represents the compiled expression:
- *
- *    * `context` – `{object}` – an object against which any expressions embedded in the strings
- *      are evaluated against (typically a scope object).
- *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
- *      `context`.
- *
- *    The returned function also has the following properties:
- *      * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript
- *        literal.
- *      * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript
- *        constant literals.
- *      * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be
- *        set to a function to change its value on the given context.
- *
- */
-
-
-/**
- * @ngdoc provider
- * @name $parseProvider
- *
- * @description
- * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}
- *  service.
- */
-function $ParseProvider() {
-  var cacheDefault = createMap();
-  var cacheExpensive = createMap();
-
-
-
-  this.$get = ['$filter', '$sniffer', function($filter, $sniffer) {
-    var $parseOptions = {
-          csp: $sniffer.csp,
-          expensiveChecks: false
-        },
-        $parseOptionsExpensive = {
-          csp: $sniffer.csp,
-          expensiveChecks: true
-        };
-
-    function wrapSharedExpression(exp) {
-      var wrapped = exp;
-
-      if (exp.sharedGetter) {
-        wrapped = function $parseWrapper(self, locals) {
-          return exp(self, locals);
-        };
-        wrapped.literal = exp.literal;
-        wrapped.constant = exp.constant;
-        wrapped.assign = exp.assign;
-      }
-
-      return wrapped;
-    }
-
-    return function $parse(exp, interceptorFn, expensiveChecks) {
-      var parsedExpression, oneTime, cacheKey;
-
-      switch (typeof exp) {
-        case 'string':
-          cacheKey = exp = exp.trim();
-
-          var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
-          parsedExpression = cache[cacheKey];
-
-          if (!parsedExpression) {
-            if (exp.charAt(0) === ':' && exp.charAt(1) === ':') {
-              oneTime = true;
-              exp = exp.substring(2);
-            }
-
-            var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
-            var lexer = new Lexer(parseOptions);
-            var parser = new Parser(lexer, $filter, parseOptions);
-            parsedExpression = parser.parse(exp);
-
-            if (parsedExpression.constant) {
-              parsedExpression.$$watchDelegate = constantWatchDelegate;
-            } else if (oneTime) {
-              //oneTime is not part of the exp passed to the Parser so we may have to
-              //wrap the parsedExpression before adding a $$watchDelegate
-              parsedExpression = wrapSharedExpression(parsedExpression);
-              parsedExpression.$$watchDelegate = parsedExpression.literal ?
-                oneTimeLiteralWatchDelegate : oneTimeWatchDelegate;
-            } else if (parsedExpression.inputs) {
-              parsedExpression.$$watchDelegate = inputsWatchDelegate;
-            }
-
-            cache[cacheKey] = parsedExpression;
-          }
-          return addInterceptor(parsedExpression, interceptorFn);
-
-        case 'function':
-          return addInterceptor(exp, interceptorFn);
-
-        default:
-          return addInterceptor(noop, interceptorFn);
-      }
-    };
-
-    function collectExpressionInputs(inputs, list) {
-      for (var i = 0, ii = inputs.length; i < ii; i++) {
-        var input = inputs[i];
-        if (!input.constant) {
-          if (input.inputs) {
-            collectExpressionInputs(input.inputs, list);
-          } else if (list.indexOf(input) === -1) { // TODO(perf) can we do better?
-            list.push(input);
-          }
-        }
-      }
-
-      return list;
-    }
-
-    function expressionInputDirtyCheck(newValue, oldValueOfValue) {
-
-      if (newValue == null || oldValueOfValue == null) { // null/undefined
-        return newValue === oldValueOfValue;
-      }
-
-      if (typeof newValue === 'object') {
-
-        // attempt to convert the value to a primitive type
-        // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can
-        //             be cheaply dirty-checked
-        newValue = getValueOf(newValue);
-
-        if (typeof newValue === 'object') {
-          // objects/arrays are not supported - deep-watching them would be too expensive
-          return false;
-        }
-
-        // fall-through to the primitive equality check
-      }
-
-      //Primitive or NaN
-      return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue);
-    }
-
-    function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var inputExpressions = parsedExpression.$$inputs ||
-                    (parsedExpression.$$inputs = collectExpressionInputs(parsedExpression.inputs, []));
-
-      var lastResult;
-
-      if (inputExpressions.length === 1) {
-        var oldInputValue = expressionInputDirtyCheck; // init to something unique so that equals check fails
-        inputExpressions = inputExpressions[0];
-        return scope.$watch(function expressionInputWatch(scope) {
-          var newInputValue = inputExpressions(scope);
-          if (!expressionInputDirtyCheck(newInputValue, oldInputValue)) {
-            lastResult = parsedExpression(scope);
-            oldInputValue = newInputValue && getValueOf(newInputValue);
-          }
-          return lastResult;
-        }, listener, objectEquality);
-      }
-
-      var oldInputValueOfValues = [];
-      for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
-        oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails
-      }
-
-      return scope.$watch(function expressionInputsWatch(scope) {
-        var changed = false;
-
-        for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
-          var newInputValue = inputExpressions[i](scope);
-          if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) {
-            oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue);
-          }
-        }
-
-        if (changed) {
-          lastResult = parsedExpression(scope);
-        }
-
-        return lastResult;
-      }, listener, objectEquality);
-    }
-
-    function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch, lastValue;
-      return unwatch = scope.$watch(function oneTimeWatch(scope) {
-        return parsedExpression(scope);
-      }, function oneTimeListener(value, old, scope) {
-        lastValue = value;
-        if (isFunction(listener)) {
-          listener.apply(this, arguments);
-        }
-        if (isDefined(value)) {
-          scope.$$postDigest(function() {
-            if (isDefined(lastValue)) {
-              unwatch();
-            }
-          });
-        }
-      }, objectEquality);
-    }
-
-    function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch, lastValue;
-      return unwatch = scope.$watch(function oneTimeWatch(scope) {
-        return parsedExpression(scope);
-      }, function oneTimeListener(value, old, scope) {
-        lastValue = value;
-        if (isFunction(listener)) {
-          listener.call(this, value, old, scope);
-        }
-        if (isAllDefined(value)) {
-          scope.$$postDigest(function() {
-            if (isAllDefined(lastValue)) unwatch();
-          });
-        }
-      }, objectEquality);
-
-      function isAllDefined(value) {
-        var allDefined = true;
-        forEach(value, function(val) {
-          if (!isDefined(val)) allDefined = false;
-        });
-        return allDefined;
-      }
-    }
-
-    function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {
-      var unwatch;
-      return unwatch = scope.$watch(function constantWatch(scope) {
-        return parsedExpression(scope);
-      }, function constantListener(value, old, scope) {
-        if (isFunction(listener)) {
-          listener.apply(this, arguments);
-        }
-        unwatch();
-      }, objectEquality);
-    }
-
-    function addInterceptor(parsedExpression, interceptorFn) {
-      if (!interceptorFn) return parsedExpression;
-      var watchDelegate = parsedExpression.$$watchDelegate;
-
-      var regularWatch =
-          watchDelegate !== oneTimeLiteralWatchDelegate &&
-          watchDelegate !== oneTimeWatchDelegate;
-
-      var fn = regularWatch ? function regularInterceptedExpression(scope, locals) {
-        var value = parsedExpression(scope, locals);
-        return interceptorFn(value, scope, locals);
-      } : function oneTimeInterceptedExpression(scope, locals) {
-        var value = parsedExpression(scope, locals);
-        var result = interceptorFn(value, scope, locals);
-        // we only return the interceptor's result if the
-        // initial value is defined (for bind-once)
-        return isDefined(value) ? result : value;
-      };
-
-      // Propagate $$watchDelegates other then inputsWatchDelegate
-      if (parsedExpression.$$watchDelegate &&
-          parsedExpression.$$watchDelegate !== inputsWatchDelegate) {
-        fn.$$watchDelegate = parsedExpression.$$watchDelegate;
-      } else if (!interceptorFn.$stateful) {
-        // If there is an interceptor, but no watchDelegate then treat the interceptor like
-        // we treat filters - it is assumed to be a pure function unless flagged with $stateful
-        fn.$$watchDelegate = inputsWatchDelegate;
-        fn.inputs = [parsedExpression];
-      }
-
-      return fn;
-    }
-  }];
-}
-
-/**
- * @ngdoc service
- * @name $q
- * @requires $rootScope
- *
- * @description
- * A service that helps you run functions asynchronously, and use their return values (or exceptions)
- * when they are done processing.
- *
- * This is an implementation of promises/deferred objects inspired by
- * [Kris Kowal's Q](https://github.com/kriskowal/q).
- *
- * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred
- * implementations, and the other which resembles ES6 promises to some degree.
- *
- * # $q constructor
- *
- * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver`
- * function as the first argument. This is similar to the native Promise implementation from ES6 Harmony,
- * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
- *
- * While the constructor-style use is supported, not all of the supporting methods from ES6 Harmony promises are
- * available yet.
- *
- * It can be used like so:
- *
- * ```js
- *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`
- *   // are available in the current lexical scope (they could have been injected or passed in).
- *
- *   function asyncGreet(name) {
- *     // perform some asynchronous operation, resolve or reject the promise when appropriate.
- *     return $q(function(resolve, reject) {
- *       setTimeout(function() {
- *         if (okToGreet(name)) {
- *           resolve('Hello, ' + name + '!');
- *         } else {
- *           reject('Greeting ' + name + ' is not allowed.');
- *         }
- *       }, 1000);
- *     });
- *   }
- *
- *   var promise = asyncGreet('Robin Hood');
- *   promise.then(function(greeting) {
- *     alert('Success: ' + greeting);
- *   }, function(reason) {
- *     alert('Failed: ' + reason);
- *   });
- * ```
- *
- * Note: progress/notify callbacks are not currently supported via the ES6-style interface.
- *
- * However, the more traditional CommonJS-style usage is still available, and documented below.
- *
- * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an
- * interface for interacting with an object that represents the result of an action that is
- * performed asynchronously, and may or may not be finished at any given point in time.
- *
- * From the perspective of dealing with error handling, deferred and promise APIs are to
- * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming.
- *
- * ```js
- *   // for the purpose of this example let's assume that variables `$q` and `okToGreet`
- *   // are available in the current lexical scope (they could have been injected or passed in).
- *
- *   function asyncGreet(name) {
- *     var deferred = $q.defer();
- *
- *     setTimeout(function() {
- *       deferred.notify('About to greet ' + name + '.');
- *
- *       if (okToGreet(name)) {
- *         deferred.resolve('Hello, ' + name + '!');
- *       } else {
- *         deferred.reject('Greeting ' + name + ' is not allowed.');
- *       }
- *     }, 1000);
- *
- *     return deferred.promise;
- *   }
- *
- *   var promise = asyncGreet('Robin Hood');
- *   promise.then(function(greeting) {
- *     alert('Success: ' + greeting);
- *   }, function(reason) {
- *     alert('Failed: ' + reason);
- *   }, function(update) {
- *     alert('Got notification: ' + update);
- *   });
- * ```
- *
- * At first it might not be obvious why this extra complexity is worth the trouble. The payoff
- * comes in the way of guarantees that promise and deferred APIs make, see
- * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.
- *
- * Additionally the promise api allows for composition that is very hard to do with the
- * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach.
- * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the
- * section on serial or parallel joining of promises.
- *
- * # The Deferred API
- *
- * A new instance of deferred is constructed by calling `$q.defer()`.
- *
- * The purpose of the deferred object is to expose the associated Promise instance as well as APIs
- * that can be used for signaling the successful or unsuccessful completion, as well as the status
- * of the task.
- *
- * **Methods**
- *
- * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection
- *   constructed via `$q.reject`, the promise will be rejected instead.
- * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to
- *   resolving it with a rejection constructed via `$q.reject`.
- * - `notify(value)` - provides updates on the status of the promise's execution. This may be called
- *   multiple times before the promise is either resolved or rejected.
- *
- * **Properties**
- *
- * - promise – `{Promise}` – promise object associated with this deferred.
- *
- *
- * # The Promise API
- *
- * A new promise instance is created when a deferred instance is created and can be retrieved by
- * calling `deferred.promise`.
- *
- * The purpose of the promise object is to allow for interested parties to get access to the result
- * of the deferred task when it completes.
- *
- * **Methods**
- *
- * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or
- *   will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously
- *   as soon as the result is available. The callbacks are called with a single argument: the result
- *   or rejection reason. Additionally, the notify callback may be called zero or more times to
- *   provide a progress indication, before the promise is resolved or rejected.
- *
- *   This method *returns a new promise* which is resolved or rejected via the return value of the
- *   `successCallback`, `errorCallback`. It also notifies via the return value of the
- *   `notifyCallback` method. The promise cannot be resolved or rejected from the notifyCallback
- *   method.
- *
- * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)`
- *
- * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise,
- *   but to do so without modifying the final value. This is useful to release resources or do some
- *   clean-up that needs to be done whether the promise was rejected or resolved. See the [full
- *   specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for
- *   more information.
- *
- * # Chaining promises
- *
- * Because calling the `then` method of a promise returns a new derived promise, it is easily
- * possible to create a chain of promises:
- *
- * ```js
- *   promiseB = promiseA.then(function(result) {
- *     return result + 1;
- *   });
- *
- *   // promiseB will be resolved immediately after promiseA is resolved and its value
- *   // will be the result of promiseA incremented by 1
- * ```
- *
- * It is possible to create chains of any length and since a promise can be resolved with another
- * promise (which will defer its resolution further), it is possible to pause/defer resolution of
- * the promises at any point in the chain. This makes it possible to implement powerful APIs like
- * $http's response interceptors.
- *
- *
- * # Differences between Kris Kowal's Q and $q
- *
- *  There are two main differences:
- *
- * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
- *   mechanism in angular, which means faster propagation of resolution or rejection into your
- *   models and avoiding unnecessary browser repaints, which would result in flickering UI.
- * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains
- *   all the important functionality needed for common async tasks.
- *
- *  # Testing
- *
- *  ```js
- *    it('should simulate promise', inject(function($q, $rootScope) {
- *      var deferred = $q.defer();
- *      var promise = deferred.promise;
- *      var resolvedValue;
- *
- *      promise.then(function(value) { resolvedValue = value; });
- *      expect(resolvedValue).toBeUndefined();
- *
- *      // Simulate resolving of promise
- *      deferred.resolve(123);
- *      // Note that the 'then' function does not get called synchronously.
- *      // This is because we want the promise API to always be async, whether or not
- *      // it got called synchronously or asynchronously.
- *      expect(resolvedValue).toBeUndefined();
- *
- *      // Propagate promise resolution to 'then' functions using $apply().
- *      $rootScope.$apply();
- *      expect(resolvedValue).toEqual(123);
- *    }));
- *  ```
- *
- * @param {function(function, function)} resolver Function which is responsible for resolving or
- *   rejecting the newly created promise. The first parameter is a function which resolves the
- *   promise, the second parameter is a function which rejects the promise.
- *
- * @returns {Promise} The newly created promise.
- */
-function $QProvider() {
-
-  this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
-    return qFactory(function(callback) {
-      $rootScope.$evalAsync(callback);
-    }, $exceptionHandler);
-  }];
-}
-
-function $$QProvider() {
-  this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) {
-    return qFactory(function(callback) {
-      $browser.defer(callback);
-    }, $exceptionHandler);
-  }];
-}
-
-/**
- * Constructs a promise manager.
- *
- * @param {function(function)} nextTick Function for executing functions in the next turn.
- * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for
- *     debugging purposes.
- * @returns {object} Promise manager.
- */
-function qFactory(nextTick, exceptionHandler) {
-  var $qMinErr = minErr('$q', TypeError);
-  function callOnce(self, resolveFn, rejectFn) {
-    var called = false;
-    function wrap(fn) {
-      return function(value) {
-        if (called) return;
-        called = true;
-        fn.call(self, value);
-      };
-    }
-
-    return [wrap(resolveFn), wrap(rejectFn)];
-  }
-
-  /**
-   * @ngdoc method
-   * @name ng.$q#defer
-   * @kind function
-   *
-   * @description
-   * Creates a `Deferred` object which represents a task which will finish in the future.
-   *
-   * @returns {Deferred} Returns a new instance of deferred.
-   */
-  var defer = function() {
-    return new Deferred();
-  };
-
-  function Promise() {
-    this.$$state = { status: 0 };
-  }
-
-  Promise.prototype = {
-    then: function(onFulfilled, onRejected, progressBack) {
-      var result = new Deferred();
-
-      this.$$state.pending = this.$$state.pending || [];
-      this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);
-      if (this.$$state.status > 0) scheduleProcessQueue(this.$$state);
-
-      return result.promise;
-    },
-
-    "catch": function(callback) {
-      return this.then(null, callback);
-    },
-
-    "finally": function(callback, progressBack) {
-      return this.then(function(value) {
-        return handleCallback(value, true, callback);
-      }, function(error) {
-        return handleCallback(error, false, callback);
-      }, progressBack);
-    }
-  };
-
-  //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native
-  function simpleBind(context, fn) {
-    return function(value) {
-      fn.call(context, value);
-    };
-  }
-
-  function processQueue(state) {
-    var fn, promise, pending;
-
-    pending = state.pending;
-    state.processScheduled = false;
-    state.pending = undefined;
-    for (var i = 0, ii = pending.length; i < ii; ++i) {
-      promise = pending[i][0];
-      fn = pending[i][state.status];
-      try {
-        if (isFunction(fn)) {
-          promise.resolve(fn(state.value));
-        } else if (state.status === 1) {
-          promise.resolve(state.value);
-        } else {
-          promise.reject(state.value);
-        }
-      } catch (e) {
-        promise.reject(e);
-        exceptionHandler(e);
-      }
-    }
-  }
-
-  function scheduleProcessQueue(state) {
-    if (state.processScheduled || !state.pending) return;
-    state.processScheduled = true;
-    nextTick(function() { processQueue(state); });
-  }
-
-  function Deferred() {
-    this.promise = new Promise();
-    //Necessary to support unbound execution :/
-    this.resolve = simpleBind(this, this.resolve);
-    this.reject = simpleBind(this, this.reject);
-    this.notify = simpleBind(this, this.notify);
-  }
-
-  Deferred.prototype = {
-    resolve: function(val) {
-      if (this.promise.$$state.status) return;
-      if (val === this.promise) {
-        this.$$reject($qMinErr(
-          'qcycle',
-          "Expected promise to be resolved with value other than itself '{0}'",
-          val));
-      }
-      else {
-        this.$$resolve(val);
-      }
-
-    },
-
-    $$resolve: function(val) {
-      var then, fns;
-
-      fns = callOnce(this, this.$$resolve, this.$$reject);
-      try {
-        if ((isObject(val) || isFunction(val))) then = val && val.then;
-        if (isFunction(then)) {
-          this.promise.$$state.status = -1;
-          then.call(val, fns[0], fns[1], this.notify);
-        } else {
-          this.promise.$$state.value = val;
-          this.promise.$$state.status = 1;
-          scheduleProcessQueue(this.promise.$$state);
-        }
-      } catch (e) {
-        fns[1](e);
-        exceptionHandler(e);
-      }
-    },
-
-    reject: function(reason) {
-      if (this.promise.$$state.status) return;
-      this.$$reject(reason);
-    },
-
-    $$reject: function(reason) {
-      this.promise.$$state.value = reason;
-      this.promise.$$state.status = 2;
-      scheduleProcessQueue(this.promise.$$state);
-    },
-
-    notify: function(progress) {
-      var callbacks = this.promise.$$state.pending;
-
-      if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) {
-        nextTick(function() {
-          var callback, result;
-          for (var i = 0, ii = callbacks.length; i < ii; i++) {
-            result = callbacks[i][0];
-            callback = callbacks[i][3];
-            try {
-              result.notify(isFunction(callback) ? callback(progress) : progress);
-            } catch (e) {
-              exceptionHandler(e);
-            }
-          }
-        });
-      }
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#reject
-   * @kind function
-   *
-   * @description
-   * Creates a promise that is resolved as rejected with the specified `reason`. This api should be
-   * used to forward rejection in a chain of promises. If you are dealing with the last promise in
-   * a promise chain, you don't need to worry about it.
-   *
-   * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of
-   * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via
-   * a promise error callback and you want to forward the error to the promise derived from the
-   * current promise, you have to "rethrow" the error by returning a rejection constructed via
-   * `reject`.
-   *
-   * ```js
-   *   promiseB = promiseA.then(function(result) {
-   *     // success: do something and resolve promiseB
-   *     //          with the old or a new result
-   *     return result;
-   *   }, function(reason) {
-   *     // error: handle the error if possible and
-   *     //        resolve promiseB with newPromiseOrValue,
-   *     //        otherwise forward the rejection to promiseB
-   *     if (canHandle(reason)) {
-   *      // handle the error and recover
-   *      return newPromiseOrValue;
-   *     }
-   *     return $q.reject(reason);
-   *   });
-   * ```
-   *
-   * @param {*} reason Constant, message, exception or an object representing the rejection reason.
-   * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`.
-   */
-  var reject = function(reason) {
-    var result = new Deferred();
-    result.reject(reason);
-    return result.promise;
-  };
-
-  var makePromise = function makePromise(value, resolved) {
-    var result = new Deferred();
-    if (resolved) {
-      result.resolve(value);
-    } else {
-      result.reject(value);
-    }
-    return result.promise;
-  };
-
-  var handleCallback = function handleCallback(value, isResolved, callback) {
-    var callbackOutput = null;
-    try {
-      if (isFunction(callback)) callbackOutput = callback();
-    } catch (e) {
-      return makePromise(e, false);
-    }
-    if (isPromiseLike(callbackOutput)) {
-      return callbackOutput.then(function() {
-        return makePromise(value, isResolved);
-      }, function(error) {
-        return makePromise(error, false);
-      });
-    } else {
-      return makePromise(value, isResolved);
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#when
-   * @kind function
-   *
-   * @description
-   * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise.
-   * This is useful when you are dealing with an object that might or might not be a promise, or if
-   * the promise comes from a source that can't be trusted.
-   *
-   * @param {*} value Value or a promise
-   * @returns {Promise} Returns a promise of the passed value or promise
-   */
-
-
-  var when = function(value, callback, errback, progressBack) {
-    var result = new Deferred();
-    result.resolve(value);
-    return result.promise.then(callback, errback, progressBack);
-  };
-
-  /**
-   * @ngdoc method
-   * @name $q#all
-   * @kind function
-   *
-   * @description
-   * Combines multiple promises into a single promise that is resolved when all of the input
-   * promises are resolved.
-   *
-   * @param {Array.<Promise>|Object.<Promise>} promises An array or hash of promises.
-   * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values,
-   *   each value corresponding to the promise at the same index/key in the `promises` array/hash.
-   *   If any of the promises is resolved with a rejection, this resulting promise will be rejected
-   *   with the same rejection value.
-   */
-
-  function all(promises) {
-    var deferred = new Deferred(),
-        counter = 0,
-        results = isArray(promises) ? [] : {};
-
-    forEach(promises, function(promise, key) {
-      counter++;
-      when(promise).then(function(value) {
-        if (results.hasOwnProperty(key)) return;
-        results[key] = value;
-        if (!(--counter)) deferred.resolve(results);
-      }, function(reason) {
-        if (results.hasOwnProperty(key)) return;
-        deferred.reject(reason);
-      });
-    });
-
-    if (counter === 0) {
-      deferred.resolve(results);
-    }
-
-    return deferred.promise;
-  }
-
-  var $Q = function Q(resolver) {
-    if (!isFunction(resolver)) {
-      throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver);
-    }
-
-    if (!(this instanceof Q)) {
-      // More useful when $Q is the Promise itself.
-      return new Q(resolver);
-    }
-
-    var deferred = new Deferred();
-
-    function resolveFn(value) {
-      deferred.resolve(value);
-    }
-
-    function rejectFn(reason) {
-      deferred.reject(reason);
-    }
-
-    resolver(resolveFn, rejectFn);
-
-    return deferred.promise;
-  };
-
-  $Q.defer = defer;
-  $Q.reject = reject;
-  $Q.when = when;
-  $Q.all = all;
-
-  return $Q;
-}
-
-function $$RAFProvider() { //rAF
-  this.$get = ['$window', '$timeout', function($window, $timeout) {
-    var requestAnimationFrame = $window.requestAnimationFrame ||
-                                $window.webkitRequestAnimationFrame;
-
-    var cancelAnimationFrame = $window.cancelAnimationFrame ||
-                               $window.webkitCancelAnimationFrame ||
-                               $window.webkitCancelRequestAnimationFrame;
-
-    var rafSupported = !!requestAnimationFrame;
-    var raf = rafSupported
-      ? function(fn) {
-          var id = requestAnimationFrame(fn);
-          return function() {
-            cancelAnimationFrame(id);
-          };
-        }
-      : function(fn) {
-          var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666
-          return function() {
-            $timeout.cancel(timer);
-          };
-        };
-
-    raf.supported = rafSupported;
-
-    return raf;
-  }];
-}
-
-/**
- * DESIGN NOTES
- *
- * The design decisions behind the scope are heavily favored for speed and memory consumption.
- *
- * The typical use of scope is to watch the expressions, which most of the time return the same
- * value as last time so we optimize the operation.
- *
- * Closures construction is expensive in terms of speed as well as memory:
- *   - No closures, instead use prototypical inheritance for API
- *   - Internal state needs to be stored on scope directly, which means that private state is
- *     exposed as $$____ properties
- *
- * Loop operations are optimized by using while(count--) { ... }
- *   - this means that in order to keep the same order of execution as addition we have to add
- *     items to the array at the beginning (unshift) instead of at the end (push)
- *
- * Child scopes are created and removed often
- *   - Using an array would be slow since inserts in middle are expensive so we use linked list
- *
- * There are few watches then a lot of observers. This is why you don't want the observer to be
- * implemented in the same way as watch. Watch requires return of initialization function which
- * are expensive to construct.
- */
-
-
-/**
- * @ngdoc provider
- * @name $rootScopeProvider
- * @description
- *
- * Provider for the $rootScope service.
- */
-
-/**
- * @ngdoc method
- * @name $rootScopeProvider#digestTtl
- * @description
- *
- * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and
- * assuming that the model is unstable.
- *
- * The current default is 10 iterations.
- *
- * In complex applications it's possible that the dependencies between `$watch`s will result in
- * several digest iterations. However if an application needs more than the default 10 digest
- * iterations for its model to stabilize then you should investigate what is causing the model to
- * continuously change during the digest.
- *
- * Increasing the TTL could have performance implications, so you should not change it without
- * proper justification.
- *
- * @param {number} limit The number of digest iterations.
- */
-
-
-/**
- * @ngdoc service
- * @name $rootScope
- * @description
- *
- * Every application has a single root {@link ng.$rootScope.Scope scope}.
- * All other scopes are descendant scopes of the root scope. Scopes provide separation
- * between the model and the view, via a mechanism for watching the model for changes.
- * They also provide an event emission/broadcast and subscription facility. See the
- * {@link guide/scope developer guide on scopes}.
- */
-function $RootScopeProvider() {
-  var TTL = 10;
-  var $rootScopeMinErr = minErr('$rootScope');
-  var lastDirtyWatch = null;
-  var applyAsyncId = null;
-
-  this.digestTtl = function(value) {
-    if (arguments.length) {
-      TTL = value;
-    }
-    return TTL;
-  };
-
-  this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
-      function($injector, $exceptionHandler, $parse, $browser) {
-
-    /**
-     * @ngdoc type
-     * @name $rootScope.Scope
-     *
-     * @description
-     * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the
-     * {@link auto.$injector $injector}. Child scopes are created using the
-     * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when
-     * compiled HTML template is executed.)
-     *
-     * Here is a simple scope snippet to show how you can interact with the scope.
-     * ```html
-     * <file src="./test/ng/rootScopeSpec.js" tag="docs1" />
-     * ```
-     *
-     * # Inheritance
-     * A scope can inherit from a parent scope, as in this example:
-     * ```js
-         var parent = $rootScope;
-         var child = parent.$new();
-
-         parent.salutation = "Hello";
-         expect(child.salutation).toEqual('Hello');
-
-         child.salutation = "Welcome";
-         expect(child.salutation).toEqual('Welcome');
-         expect(parent.salutation).toEqual('Hello');
-     * ```
-     *
-     * When interacting with `Scope` in tests, additional helper methods are available on the
-     * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional
-     * details.
-     *
-     *
-     * @param {Object.<string, function()>=} providers Map of service factory which need to be
-     *                                       provided for the current scope. Defaults to {@link ng}.
-     * @param {Object.<string, *>=} instanceCache Provides pre-instantiated services which should
-     *                              append/override services provided by `providers`. This is handy
-     *                              when unit-testing and having the need to override a default
-     *                              service.
-     * @returns {Object} Newly created scope.
-     *
-     */
-    function Scope() {
-      this.$id = nextUid();
-      this.$$phase = this.$parent = this.$$watchers =
-                     this.$$nextSibling = this.$$prevSibling =
-                     this.$$childHead = this.$$childTail = null;
-      this.$root = this;
-      this.$$destroyed = false;
-      this.$$listeners = {};
-      this.$$listenerCount = {};
-      this.$$isolateBindings = null;
-    }
-
-    /**
-     * @ngdoc property
-     * @name $rootScope.Scope#$id
-     *
-     * @description
-     * Unique scope ID (monotonically increasing) useful for debugging.
-     */
-
-     /**
-      * @ngdoc property
-      * @name $rootScope.Scope#$parent
-      *
-      * @description
-      * Reference to the parent scope.
-      */
-
-      /**
-       * @ngdoc property
-       * @name $rootScope.Scope#$root
-       *
-       * @description
-       * Reference to the root scope.
-       */
-
-    Scope.prototype = {
-      constructor: Scope,
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$new
-       * @kind function
-       *
-       * @description
-       * Creates a new child {@link ng.$rootScope.Scope scope}.
-       *
-       * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event.
-       * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}.
-       *
-       * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is
-       * desired for the scope and its child scopes to be permanently detached from the parent and
-       * thus stop participating in model change detection and listener notification by invoking.
-       *
-       * @param {boolean} isolate If true, then the scope does not prototypically inherit from the
-       *         parent scope. The scope is isolated, as it can not see parent scope properties.
-       *         When creating widgets, it is useful for the widget to not accidentally read parent
-       *         state.
-       *
-       * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent`
-       *                              of the newly created scope. Defaults to `this` scope if not provided.
-       *                              This is used when creating a transclude scope to correctly place it
-       *                              in the scope hierarchy while maintaining the correct prototypical
-       *                              inheritance.
-       *
-       * @returns {Object} The newly created child scope.
-       *
-       */
-      $new: function(isolate, parent) {
-        var child;
-
-        parent = parent || this;
-
-        if (isolate) {
-          child = new Scope();
-          child.$root = this.$root;
-        } else {
-          // Only create a child scope class if somebody asks for one,
-          // but cache it to allow the VM to optimize lookups.
-          if (!this.$$ChildScope) {
-            this.$$ChildScope = function ChildScope() {
-              this.$$watchers = this.$$nextSibling =
-                  this.$$childHead = this.$$childTail = null;
-              this.$$listeners = {};
-              this.$$listenerCount = {};
-              this.$id = nextUid();
-              this.$$ChildScope = null;
-            };
-            this.$$ChildScope.prototype = this;
-          }
-          child = new this.$$ChildScope();
-        }
-        child.$parent = parent;
-        child.$$prevSibling = parent.$$childTail;
-        if (parent.$$childHead) {
-          parent.$$childTail.$$nextSibling = child;
-          parent.$$childTail = child;
-        } else {
-          parent.$$childHead = parent.$$childTail = child;
-        }
-
-        // When the new scope is not isolated or we inherit from `this`, and
-        // the parent scope is destroyed, the property `$$destroyed` is inherited
-        // prototypically. In all other cases, this property needs to be set
-        // when the parent scope is destroyed.
-        // The listener needs to be added after the parent is set
-        if (isolate || parent != this) child.$on('$destroy', destroyChild);
-
-        return child;
-
-        function destroyChild() {
-          child.$$destroyed = true;
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watch
-       * @kind function
-       *
-       * @description
-       * Registers a `listener` callback to be executed whenever the `watchExpression` changes.
-       *
-       * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest
-       *   $digest()} and should return the value that will be watched. (Since
-       *   {@link ng.$rootScope.Scope#$digest $digest()} reruns when it detects changes the
-       *   `watchExpression` can execute multiple times per
-       *   {@link ng.$rootScope.Scope#$digest $digest()} and should be idempotent.)
-       * - The `listener` is called only when the value from the current `watchExpression` and the
-       *   previous call to `watchExpression` are not equal (with the exception of the initial run,
-       *   see below). Inequality is determined according to reference inequality,
-       *   [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
-       *    via the `!==` Javascript operator, unless `objectEquality == true`
-       *   (see next point)
-       * - When `objectEquality == true`, inequality of the `watchExpression` is determined
-       *   according to the {@link angular.equals} function. To save the value of the object for
-       *   later comparison, the {@link angular.copy} function is used. This therefore means that
-       *   watching complex objects will have adverse memory and performance implications.
-       * - The watch `listener` may change the model, which may trigger other `listener`s to fire.
-       *   This is achieved by rerunning the watchers until no changes are detected. The rerun
-       *   iteration limit is 10 to prevent an infinite loop deadlock.
-       *
-       *
-       * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called,
-       * you can register a `watchExpression` function with no `listener`. (Since `watchExpression`
-       * can execute multiple times per {@link ng.$rootScope.Scope#$digest $digest} cycle when a
-       * change is detected, be prepared for multiple calls to your listener.)
-       *
-       * After a watcher is registered with the scope, the `listener` fn is called asynchronously
-       * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the
-       * watcher. In rare cases, this is undesirable because the listener is called when the result
-       * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
-       * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
-       * listener was called due to initialization.
-       *
-       *
-       *
-       * # Example
-       * ```js
-           // let's assume that scope was dependency injected as the $rootScope
-           var scope = $rootScope;
-           scope.name = 'misko';
-           scope.counter = 0;
-
-           expect(scope.counter).toEqual(0);
-           scope.$watch('name', function(newValue, oldValue) {
-             scope.counter = scope.counter + 1;
-           });
-           expect(scope.counter).toEqual(0);
-
-           scope.$digest();
-           // the listener is always called during the first $digest loop after it was registered
-           expect(scope.counter).toEqual(1);
-
-           scope.$digest();
-           // but now it will not be called unless the value changes
-           expect(scope.counter).toEqual(1);
-
-           scope.name = 'adam';
-           scope.$digest();
-           expect(scope.counter).toEqual(2);
-
-
-
-           // Using a function as a watchExpression
-           var food;
-           scope.foodCounter = 0;
-           expect(scope.foodCounter).toEqual(0);
-           scope.$watch(
-             // This function returns the value being watched. It is called for each turn of the $digest loop
-             function() { return food; },
-             // This is the change listener, called when the value returned from the above function changes
-             function(newValue, oldValue) {
-               if ( newValue !== oldValue ) {
-                 // Only increment the counter if the value changed
-                 scope.foodCounter = scope.foodCounter + 1;
-               }
-             }
-           );
-           // No digest has been run so the counter will be zero
-           expect(scope.foodCounter).toEqual(0);
-
-           // Run the digest but since food has not changed count will still be zero
-           scope.$digest();
-           expect(scope.foodCounter).toEqual(0);
-
-           // Update food and run digest.  Now the counter will increment
-           food = 'cheeseburger';
-           scope.$digest();
-           expect(scope.foodCounter).toEqual(1);
-
-       * ```
-       *
-       *
-       *
-       * @param {(function()|string)} watchExpression Expression that is evaluated on each
-       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers
-       *    a call to the `listener`.
-       *
-       *    - `string`: Evaluated as {@link guide/expression expression}
-       *    - `function(scope)`: called with current `scope` as a parameter.
-       * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value
-       *    of `watchExpression` changes.
-       *
-       *    - `newVal` contains the current value of the `watchExpression`
-       *    - `oldVal` contains the previous value of the `watchExpression`
-       *    - `scope` refers to the current scope
-       * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
-       *     comparing for reference equality.
-       * @returns {function()} Returns a deregistration function for this listener.
-       */
-      $watch: function(watchExp, listener, objectEquality) {
-        var get = $parse(watchExp);
-
-        if (get.$$watchDelegate) {
-          return get.$$watchDelegate(this, listener, objectEquality, get);
-        }
-        var scope = this,
-            array = scope.$$watchers,
-            watcher = {
-              fn: listener,
-              last: initWatchVal,
-              get: get,
-              exp: watchExp,
-              eq: !!objectEquality
-            };
-
-        lastDirtyWatch = null;
-
-        if (!isFunction(listener)) {
-          watcher.fn = noop;
-        }
-
-        if (!array) {
-          array = scope.$$watchers = [];
-        }
-        // we use unshift since we use a while loop in $digest for speed.
-        // the while loop reads in reverse order.
-        array.unshift(watcher);
-
-        return function deregisterWatch() {
-          arrayRemove(array, watcher);
-          lastDirtyWatch = null;
-        };
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watchGroup
-       * @kind function
-       *
-       * @description
-       * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`.
-       * If any one expression in the collection changes the `listener` is executed.
-       *
-       * - The items in the `watchExpressions` array are observed via standard $watch operation and are examined on every
-       *   call to $digest() to see if any items changes.
-       * - The `listener` is called whenever any expression in the `watchExpressions` array changes.
-       *
-       * @param {Array.<string|Function(scope)>} watchExpressions Array of expressions that will be individually
-       * watched using {@link ng.$rootScope.Scope#$watch $watch()}
-       *
-       * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any
-       *    expression in `watchExpressions` changes
-       *    The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching
-       *    those of `watchExpression`
-       *    and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching
-       *    those of `watchExpression`
-       *    The `scope` refers to the current scope.
-       * @returns {function()} Returns a de-registration function for all listeners.
-       */
-      $watchGroup: function(watchExpressions, listener) {
-        var oldValues = new Array(watchExpressions.length);
-        var newValues = new Array(watchExpressions.length);
-        var deregisterFns = [];
-        var self = this;
-        var changeReactionScheduled = false;
-        var firstRun = true;
-
-        if (!watchExpressions.length) {
-          // No expressions means we call the listener ASAP
-          var shouldCall = true;
-          self.$evalAsync(function() {
-            if (shouldCall) listener(newValues, newValues, self);
-          });
-          return function deregisterWatchGroup() {
-            shouldCall = false;
-          };
-        }
-
-        if (watchExpressions.length === 1) {
-          // Special case size of one
-          return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) {
-            newValues[0] = value;
-            oldValues[0] = oldValue;
-            listener(newValues, (value === oldValue) ? newValues : oldValues, scope);
-          });
-        }
-
-        forEach(watchExpressions, function(expr, i) {
-          var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) {
-            newValues[i] = value;
-            oldValues[i] = oldValue;
-            if (!changeReactionScheduled) {
-              changeReactionScheduled = true;
-              self.$evalAsync(watchGroupAction);
-            }
-          });
-          deregisterFns.push(unwatchFn);
-        });
-
-        function watchGroupAction() {
-          changeReactionScheduled = false;
-
-          if (firstRun) {
-            firstRun = false;
-            listener(newValues, newValues, self);
-          } else {
-            listener(newValues, oldValues, self);
-          }
-        }
-
-        return function deregisterWatchGroup() {
-          while (deregisterFns.length) {
-            deregisterFns.shift()();
-          }
-        };
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$watchCollection
-       * @kind function
-       *
-       * @description
-       * Shallow watches the properties of an object and fires whenever any of the properties change
-       * (for arrays, this implies watching the array items; for object maps, this implies watching
-       * the properties). If a change is detected, the `listener` callback is fired.
-       *
-       * - The `obj` collection is observed via standard $watch operation and is examined on every
-       *   call to $digest() to see if any items have been added, removed, or moved.
-       * - The `listener` is called whenever anything within the `obj` has changed. Examples include
-       *   adding, removing, and moving items belonging to an object or array.
-       *
-       *
-       * # Example
-       * ```js
-          $scope.names = ['igor', 'matias', 'misko', 'james'];
-          $scope.dataCount = 4;
-
-          $scope.$watchCollection('names', function(newNames, oldNames) {
-            $scope.dataCount = newNames.length;
-          });
-
-          expect($scope.dataCount).toEqual(4);
-          $scope.$digest();
-
-          //still at 4 ... no changes
-          expect($scope.dataCount).toEqual(4);
-
-          $scope.names.pop();
-          $scope.$digest();
-
-          //now there's been a change
-          expect($scope.dataCount).toEqual(3);
-       * ```
-       *
-       *
-       * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The
-       *    expression value should evaluate to an object or an array which is observed on each
-       *    {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the
-       *    collection will trigger a call to the `listener`.
-       *
-       * @param {function(newCollection, oldCollection, scope)} listener a callback function called
-       *    when a change is detected.
-       *    - The `newCollection` object is the newly modified data obtained from the `obj` expression
-       *    - The `oldCollection` object is a copy of the former collection data.
-       *      Due to performance considerations, the`oldCollection` value is computed only if the
-       *      `listener` function declares two or more arguments.
-       *    - The `scope` argument refers to the current scope.
-       *
-       * @returns {function()} Returns a de-registration function for this listener. When the
-       *    de-registration function is executed, the internal watch operation is terminated.
-       */
-      $watchCollection: function(obj, listener) {
-        $watchCollectionInterceptor.$stateful = true;
-
-        var self = this;
-        // the current value, updated on each dirty-check run
-        var newValue;
-        // a shallow copy of the newValue from the last dirty-check run,
-        // updated to match newValue during dirty-check run
-        var oldValue;
-        // a shallow copy of the newValue from when the last change happened
-        var veryOldValue;
-        // only track veryOldValue if the listener is asking for it
-        var trackVeryOldValue = (listener.length > 1);
-        var changeDetected = 0;
-        var changeDetector = $parse(obj, $watchCollectionInterceptor);
-        var internalArray = [];
-        var internalObject = {};
-        var initRun = true;
-        var oldLength = 0;
-
-        function $watchCollectionInterceptor(_value) {
-          newValue = _value;
-          var newLength, key, bothNaN, newItem, oldItem;
-
-          // If the new value is undefined, then return undefined as the watch may be a one-time watch
-          if (isUndefined(newValue)) return;
-
-          if (!isObject(newValue)) { // if primitive
-            if (oldValue !== newValue) {
-              oldValue = newValue;
-              changeDetected++;
-            }
-          } else if (isArrayLike(newValue)) {
-            if (oldValue !== internalArray) {
-              // we are transitioning from something which was not an array into array.
-              oldValue = internalArray;
-              oldLength = oldValue.length = 0;
-              changeDetected++;
-            }
-
-            newLength = newValue.length;
-
-            if (oldLength !== newLength) {
-              // if lengths do not match we need to trigger change notification
-              changeDetected++;
-              oldValue.length = oldLength = newLength;
-            }
-            // copy the items to oldValue and look for changes.
-            for (var i = 0; i < newLength; i++) {
-              oldItem = oldValue[i];
-              newItem = newValue[i];
-
-              bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
-              if (!bothNaN && (oldItem !== newItem)) {
-                changeDetected++;
-                oldValue[i] = newItem;
-              }
-            }
-          } else {
-            if (oldValue !== internalObject) {
-              // we are transitioning from something which was not an object into object.
-              oldValue = internalObject = {};
-              oldLength = 0;
-              changeDetected++;
-            }
-            // copy the items to oldValue and look for changes.
-            newLength = 0;
-            for (key in newValue) {
-              if (newValue.hasOwnProperty(key)) {
-                newLength++;
-                newItem = newValue[key];
-                oldItem = oldValue[key];
-
-                if (key in oldValue) {
-                  bothNaN = (oldItem !== oldItem) && (newItem !== newItem);
-                  if (!bothNaN && (oldItem !== newItem)) {
-                    changeDetected++;
-                    oldValue[key] = newItem;
-                  }
-                } else {
-                  oldLength++;
-                  oldValue[key] = newItem;
-                  changeDetected++;
-                }
-              }
-            }
-            if (oldLength > newLength) {
-              // we used to have more keys, need to find them and destroy them.
-              changeDetected++;
-              for (key in oldValue) {
-                if (!newValue.hasOwnProperty(key)) {
-                  oldLength--;
-                  delete oldValue[key];
-                }
-              }
-            }
-          }
-          return changeDetected;
-        }
-
-        function $watchCollectionAction() {
-          if (initRun) {
-            initRun = false;
-            listener(newValue, newValue, self);
-          } else {
-            listener(newValue, veryOldValue, self);
-          }
-
-          // make a copy for the next time a collection is changed
-          if (trackVeryOldValue) {
-            if (!isObject(newValue)) {
-              //primitive
-              veryOldValue = newValue;
-            } else if (isArrayLike(newValue)) {
-              veryOldValue = new Array(newValue.length);
-              for (var i = 0; i < newValue.length; i++) {
-                veryOldValue[i] = newValue[i];
-              }
-            } else { // if object
-              veryOldValue = {};
-              for (var key in newValue) {
-                if (hasOwnProperty.call(newValue, key)) {
-                  veryOldValue[key] = newValue[key];
-                }
-              }
-            }
-          }
-        }
-
-        return this.$watch(changeDetector, $watchCollectionAction);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$digest
-       * @kind function
-       *
-       * @description
-       * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and
-       * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change
-       * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers}
-       * until no more listeners are firing. This means that it is possible to get into an infinite
-       * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
-       * iterations exceeds 10.
-       *
-       * Usually, you don't call `$digest()` directly in
-       * {@link ng.directive:ngController controllers} or in
-       * {@link ng.$compileProvider#directive directives}.
-       * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within
-       * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`.
-       *
-       * If you want to be notified whenever `$digest()` is called,
-       * you can register a `watchExpression` function with
-       * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`.
-       *
-       * In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
-       *
-       * # Example
-       * ```js
-           var scope = ...;
-           scope.name = 'misko';
-           scope.counter = 0;
-
-           expect(scope.counter).toEqual(0);
-           scope.$watch('name', function(newValue, oldValue) {
-             scope.counter = scope.counter + 1;
-           });
-           expect(scope.counter).toEqual(0);
-
-           scope.$digest();
-           // the listener is always called during the first $digest loop after it was registered
-           expect(scope.counter).toEqual(1);
-
-           scope.$digest();
-           // but now it will not be called unless the value changes
-           expect(scope.counter).toEqual(1);
-
-           scope.name = 'adam';
-           scope.$digest();
-           expect(scope.counter).toEqual(2);
-       * ```
-       *
-       */
-      $digest: function() {
-        var watch, value, last,
-            watchers,
-            length,
-            dirty, ttl = TTL,
-            next, current, target = this,
-            watchLog = [],
-            logIdx, logMsg, asyncTask;
-
-        beginPhase('$digest');
-        // Check for changes to browser url that happened in sync before the call to $digest
-        $browser.$$checkUrlChange();
-
-        if (this === $rootScope && applyAsyncId !== null) {
-          // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then
-          // cancel the scheduled $apply and flush the queue of expressions to be evaluated.
-          $browser.defer.cancel(applyAsyncId);
-          flushApplyAsync();
-        }
-
-        lastDirtyWatch = null;
-
-        do { // "while dirty" loop
-          dirty = false;
-          current = target;
-
-          while (asyncQueue.length) {
-            try {
-              asyncTask = asyncQueue.shift();
-              asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-            lastDirtyWatch = null;
-          }
-
-          traverseScopesLoop:
-          do { // "traverse the scopes" loop
-            if ((watchers = current.$$watchers)) {
-              // process our watches
-              length = watchers.length;
-              while (length--) {
-                try {
-                  watch = watchers[length];
-                  // Most common watches are on primitives, in which case we can short
-                  // circuit it with === operator, only when === fails do we use .equals
-                  if (watch) {
-                    if ((value = watch.get(current)) !== (last = watch.last) &&
-                        !(watch.eq
-                            ? equals(value, last)
-                            : (typeof value === 'number' && typeof last === 'number'
-                               && isNaN(value) && isNaN(last)))) {
-                      dirty = true;
-                      lastDirtyWatch = watch;
-                      watch.last = watch.eq ? copy(value, null) : value;
-                      watch.fn(value, ((last === initWatchVal) ? value : last), current);
-                      if (ttl < 5) {
-                        logIdx = 4 - ttl;
-                        if (!watchLog[logIdx]) watchLog[logIdx] = [];
-                        watchLog[logIdx].push({
-                          msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp,
-                          newVal: value,
-                          oldVal: last
-                        });
-                      }
-                    } else if (watch === lastDirtyWatch) {
-                      // If the most recently dirty watcher is now clean, short circuit since the remaining watchers
-                      // have already been tested.
-                      dirty = false;
-                      break traverseScopesLoop;
-                    }
-                  }
-                } catch (e) {
-                  $exceptionHandler(e);
-                }
-              }
-            }
-
-            // Insanity Warning: scope depth-first traversal
-            // yes, this code is a bit crazy, but it works and we have tests to prove it!
-            // this piece should be kept in sync with the traversal in $broadcast
-            if (!(next = (current.$$childHead ||
-                (current !== target && current.$$nextSibling)))) {
-              while (current !== target && !(next = current.$$nextSibling)) {
-                current = current.$parent;
-              }
-            }
-          } while ((current = next));
-
-          // `break traverseScopesLoop;` takes us to here
-
-          if ((dirty || asyncQueue.length) && !(ttl--)) {
-            clearPhase();
-            throw $rootScopeMinErr('infdig',
-                '{0} $digest() iterations reached. Aborting!\n' +
-                'Watchers fired in the last 5 iterations: {1}',
-                TTL, watchLog);
-          }
-
-        } while (dirty || asyncQueue.length);
-
-        clearPhase();
-
-        while (postDigestQueue.length) {
-          try {
-            postDigestQueue.shift()();
-          } catch (e) {
-            $exceptionHandler(e);
-          }
-        }
-      },
-
-
-      /**
-       * @ngdoc event
-       * @name $rootScope.Scope#$destroy
-       * @eventType broadcast on scope being destroyed
-       *
-       * @description
-       * Broadcasted when a scope and its children are being destroyed.
-       *
-       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
-       * clean up DOM bindings before an element is removed from the DOM.
-       */
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$destroy
-       * @kind function
-       *
-       * @description
-       * Removes the current scope (and all of its children) from the parent scope. Removal implies
-       * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer
-       * propagate to the current scope and its children. Removal also implies that the current
-       * scope is eligible for garbage collection.
-       *
-       * The `$destroy()` is usually used by directives such as
-       * {@link ng.directive:ngRepeat ngRepeat} for managing the
-       * unrolling of the loop.
-       *
-       * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope.
-       * Application code can register a `$destroy` event handler that will give it a chance to
-       * perform any necessary cleanup.
-       *
-       * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
-       * clean up DOM bindings before an element is removed from the DOM.
-       */
-      $destroy: function() {
-        // we can't destroy the root scope or a scope that has been already destroyed
-        if (this.$$destroyed) return;
-        var parent = this.$parent;
-
-        this.$broadcast('$destroy');
-        this.$$destroyed = true;
-        if (this === $rootScope) return;
-
-        for (var eventName in this.$$listenerCount) {
-          decrementListenerCount(this, this.$$listenerCount[eventName], eventName);
-        }
-
-        // sever all the references to parent scopes (after this cleanup, the current scope should
-        // not be retained by any of our references and should be eligible for garbage collection)
-        if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
-        if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
-        if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
-        if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;
-
-        // Disable listeners, watchers and apply/digest methods
-        this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;
-        this.$on = this.$watch = this.$watchGroup = function() { return noop; };
-        this.$$listeners = {};
-
-        // All of the code below is bogus code that works around V8's memory leak via optimized code
-        // and inline caches.
-        //
-        // see:
-        // - https://code.google.com/p/v8/issues/detail?id=2073#c26
-        // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909
-        // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451
-
-        this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =
-            this.$$childTail = this.$root = this.$$watchers = null;
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$eval
-       * @kind function
-       *
-       * @description
-       * Executes the `expression` on the current scope and returns the result. Any exceptions in
-       * the expression are propagated (uncaught). This is useful when evaluating Angular
-       * expressions.
-       *
-       * # Example
-       * ```js
-           var scope = ng.$rootScope.Scope();
-           scope.a = 1;
-           scope.b = 2;
-
-           expect(scope.$eval('a+b')).toEqual(3);
-           expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
-       * ```
-       *
-       * @param {(string|function())=} expression An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in  {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with the current `scope` parameter.
-       *
-       * @param {(object)=} locals Local variables object, useful for overriding values in scope.
-       * @returns {*} The result of evaluating the expression.
-       */
-      $eval: function(expr, locals) {
-        return $parse(expr)(this, locals);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$evalAsync
-       * @kind function
-       *
-       * @description
-       * Executes the expression on the current scope at a later point in time.
-       *
-       * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only
-       * that:
-       *
-       *   - it will execute after the function that scheduled the evaluation (preferably before DOM
-       *     rendering).
-       *   - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after
-       *     `expression` execution.
-       *
-       * Any exceptions from the execution of the expression are forwarded to the
-       * {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle
-       * will be scheduled. However, it is encouraged to always call code that changes the model
-       * from within an `$apply` call. That includes code evaluated via `$evalAsync`.
-       *
-       * @param {(string|function())=} expression An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with the current `scope` parameter.
-       *
-       * @param {(object)=} locals Local variables object, useful for overriding values in scope.
-       */
-      $evalAsync: function(expr, locals) {
-        // if we are outside of an $digest loop and this is the first time we are scheduling async
-        // task also schedule async auto-flush
-        if (!$rootScope.$$phase && !asyncQueue.length) {
-          $browser.defer(function() {
-            if (asyncQueue.length) {
-              $rootScope.$digest();
-            }
-          });
-        }
-
-        asyncQueue.push({scope: this, expression: expr, locals: locals});
-      },
-
-      $$postDigest: function(fn) {
-        postDigestQueue.push(fn);
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$apply
-       * @kind function
-       *
-       * @description
-       * `$apply()` is used to execute an expression in angular from outside of the angular
-       * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
-       * Because we are calling into the angular framework we need to perform proper scope life
-       * cycle of {@link ng.$exceptionHandler exception handling},
-       * {@link ng.$rootScope.Scope#$digest executing watches}.
-       *
-       * ## Life cycle
-       *
-       * # Pseudo-Code of `$apply()`
-       * ```js
-           function $apply(expr) {
-             try {
-               return $eval(expr);
-             } catch (e) {
-               $exceptionHandler(e);
-             } finally {
-               $root.$digest();
-             }
-           }
-       * ```
-       *
-       *
-       * Scope's `$apply()` method transitions through the following stages:
-       *
-       * 1. The {@link guide/expression expression} is executed using the
-       *    {@link ng.$rootScope.Scope#$eval $eval()} method.
-       * 2. Any exceptions from the execution of the expression are forwarded to the
-       *    {@link ng.$exceptionHandler $exceptionHandler} service.
-       * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the
-       *    expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method.
-       *
-       *
-       * @param {(string|function())=} exp An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with current `scope` parameter.
-       *
-       * @returns {*} The result of evaluating the expression.
-       */
-      $apply: function(expr) {
-        try {
-          beginPhase('$apply');
-          return this.$eval(expr);
-        } catch (e) {
-          $exceptionHandler(e);
-        } finally {
-          clearPhase();
-          try {
-            $rootScope.$digest();
-          } catch (e) {
-            $exceptionHandler(e);
-            throw e;
-          }
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$applyAsync
-       * @kind function
-       *
-       * @description
-       * Schedule the invocation of $apply to occur at a later time. The actual time difference
-       * varies across browsers, but is typically around ~10 milliseconds.
-       *
-       * This can be used to queue up multiple expressions which need to be evaluated in the same
-       * digest.
-       *
-       * @param {(string|function())=} exp An angular expression to be executed.
-       *
-       *    - `string`: execute using the rules as defined in {@link guide/expression expression}.
-       *    - `function(scope)`: execute the function with current `scope` parameter.
-       */
-      $applyAsync: function(expr) {
-        var scope = this;
-        expr && applyAsyncQueue.push($applyAsyncExpression);
-        scheduleApplyAsync();
-
-        function $applyAsyncExpression() {
-          scope.$eval(expr);
-        }
-      },
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$on
-       * @kind function
-       *
-       * @description
-       * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for
-       * discussion of event life cycle.
-       *
-       * The event listener function format is: `function(event, args...)`. The `event` object
-       * passed into the listener has the following attributes:
-       *
-       *   - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or
-       *     `$broadcast`-ed.
-       *   - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the
-       *     event propagates through the scope hierarchy, this property is set to null.
-       *   - `name` - `{string}`: name of the event.
-       *   - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel
-       *     further event propagation (available only for events that were `$emit`-ed).
-       *   - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag
-       *     to true.
-       *   - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called.
-       *
-       * @param {string} name Event name to listen on.
-       * @param {function(event, ...args)} listener Function to call when the event is emitted.
-       * @returns {function()} Returns a deregistration function for this listener.
-       */
-      $on: function(name, listener) {
-        var namedListeners = this.$$listeners[name];
-        if (!namedListeners) {
-          this.$$listeners[name] = namedListeners = [];
-        }
-        namedListeners.push(listener);
-
-        var current = this;
-        do {
-          if (!current.$$listenerCount[name]) {
-            current.$$listenerCount[name] = 0;
-          }
-          current.$$listenerCount[name]++;
-        } while ((current = current.$parent));
-
-        var self = this;
-        return function() {
-          var indexOfListener = namedListeners.indexOf(listener);
-          if (indexOfListener !== -1) {
-            namedListeners[indexOfListener] = null;
-            decrementListenerCount(self, 1, name);
-          }
-        };
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$emit
-       * @kind function
-       *
-       * @description
-       * Dispatches an event `name` upwards through the scope hierarchy notifying the
-       * registered {@link ng.$rootScope.Scope#$on} listeners.
-       *
-       * The event life cycle starts at the scope on which `$emit` was called. All
-       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
-       * notified. Afterwards, the event traverses upwards toward the root scope and calls all
-       * registered listeners along the way. The event will stop propagating if one of the listeners
-       * cancels it.
-       *
-       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
-       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * @param {string} name Event name to emit.
-       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
-       * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}).
-       */
-      $emit: function(name, args) {
-        var empty = [],
-            namedListeners,
-            scope = this,
-            stopPropagation = false,
-            event = {
-              name: name,
-              targetScope: scope,
-              stopPropagation: function() {stopPropagation = true;},
-              preventDefault: function() {
-                event.defaultPrevented = true;
-              },
-              defaultPrevented: false
-            },
-            listenerArgs = concat([event], arguments, 1),
-            i, length;
-
-        do {
-          namedListeners = scope.$$listeners[name] || empty;
-          event.currentScope = scope;
-          for (i = 0, length = namedListeners.length; i < length; i++) {
-
-            // if listeners were deregistered, defragment the array
-            if (!namedListeners[i]) {
-              namedListeners.splice(i, 1);
-              i--;
-              length--;
-              continue;
-            }
-            try {
-              //allow all listeners attached to the current scope to run
-              namedListeners[i].apply(null, listenerArgs);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-          }
-          //if any listener on the current scope stops propagation, prevent bubbling
-          if (stopPropagation) {
-            event.currentScope = null;
-            return event;
-          }
-          //traverse upwards
-          scope = scope.$parent;
-        } while (scope);
-
-        event.currentScope = null;
-
-        return event;
-      },
-
-
-      /**
-       * @ngdoc method
-       * @name $rootScope.Scope#$broadcast
-       * @kind function
-       *
-       * @description
-       * Dispatches an event `name` downwards to all child scopes (and their children) notifying the
-       * registered {@link ng.$rootScope.Scope#$on} listeners.
-       *
-       * The event life cycle starts at the scope on which `$broadcast` was called. All
-       * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get
-       * notified. Afterwards, the event propagates to all direct and indirect scopes of the current
-       * scope and calls all registered listeners along the way. The event cannot be canceled.
-       *
-       * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
-       * onto the {@link ng.$exceptionHandler $exceptionHandler} service.
-       *
-       * @param {string} name Event name to broadcast.
-       * @param {...*} args Optional one or more arguments which will be passed onto the event listeners.
-       * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}
-       */
-      $broadcast: function(name, args) {
-        var target = this,
-            current = target,
-            next = target,
-            event = {
-              name: name,
-              targetScope: target,
-              preventDefault: function() {
-                event.defaultPrevented = true;
-              },
-              defaultPrevented: false
-            };
-
-        if (!target.$$listenerCount[name]) return event;
-
-        var listenerArgs = concat([event], arguments, 1),
-            listeners, i, length;
-
-        //down while you can, then up and next sibling or up and next sibling until back at root
-        while ((current = next)) {
-          event.currentScope = current;
-          listeners = current.$$listeners[name] || [];
-          for (i = 0, length = listeners.length; i < length; i++) {
-            // if listeners were deregistered, defragment the array
-            if (!listeners[i]) {
-              listeners.splice(i, 1);
-              i--;
-              length--;
-              continue;
-            }
-
-            try {
-              listeners[i].apply(null, listenerArgs);
-            } catch (e) {
-              $exceptionHandler(e);
-            }
-          }
-
-          // Insanity Warning: scope depth-first traversal
-          // yes, this code is a bit crazy, but it works and we have tests to prove it!
-          // this piece should be kept in sync with the traversal in $digest
-          // (though it differs due to having the extra check for $$listenerCount)
-          if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
-              (current !== target && current.$$nextSibling)))) {
-            while (current !== target && !(next = current.$$nextSibling)) {
-              current = current.$parent;
-            }
-          }
-        }
-
-        event.currentScope = null;
-        return event;
-      }
-    };
-
-    var $rootScope = new Scope();
-
-    //The internal queues. Expose them on the $rootScope for debugging/testing purposes.
-    var asyncQueue = $rootScope.$$asyncQueue = [];
-    var postDigestQueue = $rootScope.$$postDigestQueue = [];
-    var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];
-
-    return $rootScope;
-
-
-    function beginPhase(phase) {
-      if ($rootScope.$$phase) {
-        throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);
-      }
-
-      $rootScope.$$phase = phase;
-    }
-
-    function clearPhase() {
-      $rootScope.$$phase = null;
-    }
-
-
-    function decrementListenerCount(current, count, name) {
-      do {
-        current.$$listenerCount[name] -= count;
-
-        if (current.$$listenerCount[name] === 0) {
-          delete current.$$listenerCount[name];
-        }
-      } while ((current = current.$parent));
-    }
-
-    /**
-     * function used as an initial value for watchers.
-     * because it's unique we can easily tell it apart from other values
-     */
-    function initWatchVal() {}
-
-    function flushApplyAsync() {
-      while (applyAsyncQueue.length) {
-        try {
-          applyAsyncQueue.shift()();
-        } catch (e) {
-          $exceptionHandler(e);
-        }
-      }
-      applyAsyncId = null;
-    }
-
-    function scheduleApplyAsync() {
-      if (applyAsyncId === null) {
-        applyAsyncId = $browser.defer(function() {
-          $rootScope.$apply(flushApplyAsync);
-        });
-      }
-    }
-  }];
-}
-
-/**
- * @description
- * Private service to sanitize uris for links and images. Used by $compile and $sanitize.
- */
-function $$SanitizeUriProvider() {
-  var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
-    imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/;
-
-  /**
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during a[href] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to a[href] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.aHrefSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      aHrefSanitizationWhitelist = regexp;
-      return this;
-    }
-    return aHrefSanitizationWhitelist;
-  };
-
-
-  /**
-   * @description
-   * Retrieves or overrides the default regular expression that is used for whitelisting of safe
-   * urls during img[src] sanitization.
-   *
-   * The sanitization is a security measure aimed at prevent XSS attacks via html links.
-   *
-   * Any url about to be assigned to img[src] via data-binding is first normalized and turned into
-   * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist`
-   * regular expression. If a match is found, the original url is written into the dom. Otherwise,
-   * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM.
-   *
-   * @param {RegExp=} regexp New regexp to whitelist urls with.
-   * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for
-   *    chaining otherwise.
-   */
-  this.imgSrcSanitizationWhitelist = function(regexp) {
-    if (isDefined(regexp)) {
-      imgSrcSanitizationWhitelist = regexp;
-      return this;
-    }
-    return imgSrcSanitizationWhitelist;
-  };
-
-  this.$get = function() {
-    return function sanitizeUri(uri, isImage) {
-      var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist;
-      var normalizedVal;
-      normalizedVal = urlResolve(uri).href;
-      if (normalizedVal !== '' && !normalizedVal.match(regex)) {
-        return 'unsafe:' + normalizedVal;
-      }
-      return uri;
-    };
-  };
-}
-
-var $sceMinErr = minErr('$sce');
-
-var SCE_CONTEXTS = {
-  HTML: 'html',
-  CSS: 'css',
-  URL: 'url',
-  // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a
-  // url.  (e.g. ng-include, script src, templateUrl)
-  RESOURCE_URL: 'resourceUrl',
-  JS: 'js'
-};
-
-// Helper functions follow.
-
-function adjustMatcher(matcher) {
-  if (matcher === 'self') {
-    return matcher;
-  } else if (isString(matcher)) {
-    // Strings match exactly except for 2 wildcards - '*' and '**'.
-    // '*' matches any character except those from the set ':/.?&'.
-    // '**' matches any character (like .* in a RegExp).
-    // More than 2 *'s raises an error as it's ill defined.
-    if (matcher.indexOf('***') > -1) {
-      throw $sceMinErr('iwcard',
-          'Illegal sequence *** in string matcher.  String: {0}', matcher);
-    }
-    matcher = escapeForRegexp(matcher).
-                  replace('\\*\\*', '.*').
-                  replace('\\*', '[^:/.?&;]*');
-    return new RegExp('^' + matcher + '$');
-  } else if (isRegExp(matcher)) {
-    // The only other type of matcher allowed is a Regexp.
-    // Match entire URL / disallow partial matches.
-    // Flags are reset (i.e. no global, ignoreCase or multiline)
-    return new RegExp('^' + matcher.source + '$');
-  } else {
-    throw $sceMinErr('imatcher',
-        'Matchers may only be "self", string patterns or RegExp objects');
-  }
-}
-
-
-function adjustMatchers(matchers) {
-  var adjustedMatchers = [];
-  if (isDefined(matchers)) {
-    forEach(matchers, function(matcher) {
-      adjustedMatchers.push(adjustMatcher(matcher));
-    });
-  }
-  return adjustedMatchers;
-}
-
-
-/**
- * @ngdoc service
- * @name $sceDelegate
- * @kind function
- *
- * @description
- *
- * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict
- * Contextual Escaping (SCE)} services to AngularJS.
- *
- * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of
- * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS.  This is
- * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to
- * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things
- * work because `$sce` delegates to `$sceDelegate` for these operations.
- *
- * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service.
- *
- * The default instance of `$sceDelegate` should work out of the box with little pain.  While you
- * can override it completely to change the behavior of `$sce`, the common case would
- * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting
- * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as
- * templates.  Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist
- * $sceDelegateProvider.resourceUrlWhitelist} and {@link
- * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
- */
-
-/**
- * @ngdoc provider
- * @name $sceDelegateProvider
- * @description
- *
- * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate
- * $sceDelegate} service.  This allows one to get/set the whitelists and blacklists used to ensure
- * that the URLs used for sourcing Angular templates are safe.  Refer {@link
- * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and
- * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist}
- *
- * For the general details about this service in Angular, read the main page for {@link ng.$sce
- * Strict Contextual Escaping (SCE)}.
- *
- * **Example**:  Consider the following case. <a name="example"></a>
- *
- * - your app is hosted at url `http://myapp.example.com/`
- * - but some of your templates are hosted on other domains you control such as
- *   `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc.
- * - and you have an open redirect at `http://myapp.example.com/clickThru?...`.
- *
- * Here is what a secure configuration for this scenario might look like:
- *
- * ```
- *  angular.module('myApp', []).config(function($sceDelegateProvider) {
- *    $sceDelegateProvider.resourceUrlWhitelist([
- *      // Allow same origin resource loads.
- *      'self',
- *      // Allow loading from our assets domain.  Notice the difference between * and **.
- *      'http://srv*.assets.example.com/**'
- *    ]);
- *
- *    // The blacklist overrides the whitelist so the open redirect here is blocked.
- *    $sceDelegateProvider.resourceUrlBlacklist([
- *      'http://myapp.example.com/clickThru**'
- *    ]);
- *  });
- * ```
- */
-
-function $SceDelegateProvider() {
-  this.SCE_CONTEXTS = SCE_CONTEXTS;
-
-  // Resource URLs can also be trusted by policy.
-  var resourceUrlWhitelist = ['self'],
-      resourceUrlBlacklist = [];
-
-  /**
-   * @ngdoc method
-   * @name $sceDelegateProvider#resourceUrlWhitelist
-   * @kind function
-   *
-   * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value
-   *     provided.  This must be an array or null.  A snapshot of this array is used so further
-   *     changes to the array are ignored.
-   *
-   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
-   *     allowed in this array.
-   *
-   *     Note: **an empty whitelist array will block all URLs**!
-   *
-   * @return {Array} the currently set whitelist array.
-   *
-   * The **default value** when no whitelist has been explicitly set is `['self']` allowing only
-   * same origin resource requests.
-   *
-   * @description
-   * Sets/Gets the whitelist of trusted resource URLs.
-   */
-  this.resourceUrlWhitelist = function(value) {
-    if (arguments.length) {
-      resourceUrlWhitelist = adjustMatchers(value);
-    }
-    return resourceUrlWhitelist;
-  };
-
-  /**
-   * @ngdoc method
-   * @name $sceDelegateProvider#resourceUrlBlacklist
-   * @kind function
-   *
-   * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value
-   *     provided.  This must be an array or null.  A snapshot of this array is used so further
-   *     changes to the array are ignored.
-   *
-   *     Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items
-   *     allowed in this array.
-   *
-   *     The typical usage for the blacklist is to **block
-   *     [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as
-   *     these would otherwise be trusted but actually return content from the redirected domain.
-   *
-   *     Finally, **the blacklist overrides the whitelist** and has the final say.
-   *
-   * @return {Array} the currently set blacklist array.
-   *
-   * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there
-   * is no blacklist.)
-   *
-   * @description
-   * Sets/Gets the blacklist of trusted resource URLs.
-   */
-
-  this.resourceUrlBlacklist = function(value) {
-    if (arguments.length) {
-      resourceUrlBlacklist = adjustMatchers(value);
-    }
-    return resourceUrlBlacklist;
-  };
-
-  this.$get = ['$injector', function($injector) {
-
-    var htmlSanitizer = function htmlSanitizer(html) {
-      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
-    };
-
-    if ($injector.has('$sanitize')) {
-      htmlSanitizer = $injector.get('$sanitize');
-    }
-
-
-    function matchUrl(matcher, parsedUrl) {
-      if (matcher === 'self') {
-        return urlIsSameOrigin(parsedUrl);
-      } else {
-        // definitely a regex.  See adjustMatchers()
-        return !!matcher.exec(parsedUrl.href);
-      }
-    }
-
-    function isResourceUrlAllowedByPolicy(url) {
-      var parsedUrl = urlResolve(url.toString());
-      var i, n, allowed = false;
-      // Ensure that at least one item from the whitelist allows this url.
-      for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) {
-        if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) {
-          allowed = true;
-          break;
-        }
-      }
-      if (allowed) {
-        // Ensure that no item from the blacklist blocked this url.
-        for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) {
-          if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) {
-            allowed = false;
-            break;
-          }
-        }
-      }
-      return allowed;
-    }
-
-    function generateHolderType(Base) {
-      var holderType = function TrustedValueHolderType(trustedValue) {
-        this.$$unwrapTrustedValue = function() {
-          return trustedValue;
-        };
-      };
-      if (Base) {
-        holderType.prototype = new Base();
-      }
-      holderType.prototype.valueOf = function sceValueOf() {
-        return this.$$unwrapTrustedValue();
-      };
-      holderType.prototype.toString = function sceToString() {
-        return this.$$unwrapTrustedValue().toString();
-      };
-      return holderType;
-    }
-
-    var trustedValueHolderBase = generateHolderType(),
-        byType = {};
-
-    byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);
-    byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#trustAs
-     *
-     * @description
-     * Returns an object that is trusted by angular for use in specified strict
-     * contextual escaping contexts (such as ng-bind-html, ng-include, any src
-     * attribute interpolation, any dom event binding attribute interpolation
-     * such as for onclick,  etc.) that uses the provided value.
-     * See {@link ng.$sce $sce} for enabling strict contextual escaping.
-     *
-     * @param {string} type The kind of context in which this value is safe for use.  e.g. url,
-     *   resourceUrl, html, js and css.
-     * @param {*} value The value that that should be considered trusted/safe.
-     * @returns {*} A value that can be used to stand in for the provided `value` in places
-     * where Angular expects a $sce.trustAs() return value.
-     */
-    function trustAs(type, trustedValue) {
-      var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
-      if (!Constructor) {
-        throw $sceMinErr('icontext',
-            'Attempted to trust a value in invalid context. Context: {0}; Value: {1}',
-            type, trustedValue);
-      }
-      if (trustedValue === null || trustedValue === undefined || trustedValue === '') {
-        return trustedValue;
-      }
-      // All the current contexts in SCE_CONTEXTS happen to be strings.  In order to avoid trusting
-      // mutable objects, we ensure here that the value passed in is actually a string.
-      if (typeof trustedValue !== 'string') {
-        throw $sceMinErr('itype',
-            'Attempted to trust a non-string value in a content requiring a string: Context: {0}',
-            type);
-      }
-      return new Constructor(trustedValue);
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#valueOf
-     *
-     * @description
-     * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs
-     * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link
-     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.
-     *
-     * If the passed parameter is not a value that had been returned by {@link
-     * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is.
-     *
-     * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}
-     *      call or anything else.
-     * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} if `value` is the result of such a call.  Otherwise, returns
-     *     `value` unchanged.
-     */
-    function valueOf(maybeTrusted) {
-      if (maybeTrusted instanceof trustedValueHolderBase) {
-        return maybeTrusted.$$unwrapTrustedValue();
-      } else {
-        return maybeTrusted;
-      }
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sceDelegate#getTrusted
-     *
-     * @description
-     * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and
-     * returns the originally supplied value if the queried context type is a supertype of the
-     * created type.  If this condition isn't satisfied, throws an exception.
-     *
-     * @param {string} type The kind of context in which this value is to be used.
-     * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} call.
-     * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs
-     *     `$sceDelegate.trustAs`} if valid in this context.  Otherwise, throws an exception.
-     */
-    function getTrusted(type, maybeTrusted) {
-      if (maybeTrusted === null || maybeTrusted === undefined || maybeTrusted === '') {
-        return maybeTrusted;
-      }
-      var constructor = (byType.hasOwnProperty(type) ? byType[type] : null);
-      if (constructor && maybeTrusted instanceof constructor) {
-        return maybeTrusted.$$unwrapTrustedValue();
-      }
-      // If we get here, then we may only take one of two actions.
-      // 1. sanitize the value for the requested type, or
-      // 2. throw an exception.
-      if (type === SCE_CONTEXTS.RESOURCE_URL) {
-        if (isResourceUrlAllowedByPolicy(maybeTrusted)) {
-          return maybeTrusted;
-        } else {
-          throw $sceMinErr('insecurl',
-              'Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}',
-              maybeTrusted.toString());
-        }
-      } else if (type === SCE_CONTEXTS.HTML) {
-        return htmlSanitizer(maybeTrusted);
-      }
-      throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
-    }
-
-    return { trustAs: trustAs,
-             getTrusted: getTrusted,
-             valueOf: valueOf };
-  }];
-}
-
-
-/**
- * @ngdoc provider
- * @name $sceProvider
- * @description
- *
- * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service.
- * -   enable/disable Strict Contextual Escaping (SCE) in a module
- * -   override the default implementation with a custom delegate
- *
- * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}.
- */
-
-/* jshint maxlen: false*/
-
-/**
- * @ngdoc service
- * @name $sce
- * @kind function
- *
- * @description
- *
- * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS.
- *
- * # Strict Contextual Escaping
- *
- * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain
- * contexts to result in a value that is marked as safe to use for that context.  One example of
- * such a context is binding arbitrary html controlled by the user via `ng-bind-html`.  We refer
- * to these contexts as privileged or SCE contexts.
- *
- * As of version 1.2, Angular ships with SCE enabled by default.
- *
- * Note:  When enabled (the default), IE<11 in quirks mode is not supported.  In this mode, IE<11 allow
- * one to execute arbitrary javascript by the use of the expression() syntax.  Refer
- * <http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx> to learn more about them.
- * You can ensure your document is in standards mode and not quirks mode by adding `<!doctype html>`
- * to the top of your HTML document.
- *
- * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for
- * security vulnerabilities such as XSS, clickjacking, etc. a lot easier.
- *
- * Here's an example of a binding in a privileged context:
- *
- * ```
- * <input ng-model="userHtml">
- * <div ng-bind-html="userHtml"></div>
- * ```
- *
- * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user.  With SCE
- * disabled, this application allows the user to render arbitrary HTML into the DIV.
- * In a more realistic example, one may be rendering user comments, blog articles, etc. via
- * bindings.  (HTML is just one example of a context where rendering user controlled input creates
- * security vulnerabilities.)
- *
- * For the case of HTML, you might use a library, either on the client side, or on the server side,
- * to sanitize unsafe HTML before binding to the value and rendering it in the document.
- *
- * How would you ensure that every place that used these types of bindings was bound to a value that
- * was sanitized by your library (or returned as safe for rendering by your server?)  How can you
- * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some
- * properties/fields and forgot to update the binding to the sanitized value?
- *
- * To be secure by default, you want to ensure that any such bindings are disallowed unless you can
- * determine that something explicitly says it's safe to use a value for binding in that
- * context.  You can then audit your code (a simple grep would do) to ensure that this is only done
- * for those values that you can easily tell are safe - because they were received from your server,
- * sanitized by your library, etc.  You can organize your codebase to help with this - perhaps
- * allowing only the files in a specific directory to do this.  Ensuring that the internal API
- * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.
- *
- * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs}
- * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to
- * obtain values that will be accepted by SCE / privileged contexts.
- *
- *
- * ## How does it work?
- *
- * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted
- * $sce.getTrusted(context, value)} rather than to the value directly.  Directives use {@link
- * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the
- * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals.
- *
- * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link
- * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}.  Here's the actual code (slightly
- * simplified):
- *
- * ```
- * var ngBindHtmlDirective = ['$sce', function($sce) {
- *   return function(scope, element, attr) {
- *     scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {
- *       element.html(value || '');
- *     });
- *   };
- * }];
- * ```
- *
- * ## Impact on loading templates
- *
- * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as
- * `templateUrl`'s specified by {@link guide/directive directives}.
- *
- * By default, Angular only loads templates from the same domain and protocol as the application
- * document.  This is done by calling {@link ng.$sce#getTrustedResourceUrl
- * $sce.getTrustedResourceUrl} on the template URL.  To load templates from other domains and/or
- * protocols, you may either either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist
- * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value.
- *
- * *Please note*:
- * The browser's
- * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
- * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
- * policy apply in addition to this and may further restrict whether the template is successfully
- * loaded.  This means that without the right CORS policy, loading templates from a different domain
- * won't work on all browsers.  Also, loading templates from `file://` URL does not work on some
- * browsers.
- *
- * ## This feels like too much overhead
- *
- * It's important to remember that SCE only applies to interpolation expressions.
- *
- * If your expressions are constant literals, they're automatically trusted and you don't need to
- * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g.
- * `<div ng-bind-html="'<b>implicitly trusted</b>'"></div>`) just works.
- *
- * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them
- * through {@link ng.$sce#getTrusted $sce.getTrusted}.  SCE doesn't play a role here.
- *
- * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load
- * templates in `ng-include` from your application's domain without having to even know about SCE.
- * It blocks loading templates from other domains or loading templates over http from an https
- * served document.  You can change these by setting your own custom {@link
- * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link
- * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs.
- *
- * This significantly reduces the overhead.  It is far easier to pay the small overhead and have an
- * application that's secure and can be audited to verify that with much more ease than bolting
- * security onto an application later.
- *
- * <a name="contexts"></a>
- * ## What trusted context types are supported?
- *
- * | Context             | Notes          |
- * |---------------------|----------------|
- * | `$sce.HTML`         | For HTML that's safe to source into the application.  The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. |
- * | `$sce.CSS`          | For CSS that's safe to source into the application.  Currently unused.  Feel free to use it in your own directives. |
- * | `$sce.URL`          | For URLs that are safe to follow as links.  Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
- * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application.  Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.)  <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
- * | `$sce.JS`           | For JavaScript that is safe to execute in your application's context.  Currently unused.  Feel free to use it in your own directives. |
- *
- * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
- *
- *  Each element in these arrays must be one of the following:
- *
- *  - **'self'**
- *    - The special **string**, `'self'`, can be used to match against all URLs of the **same
- *      domain** as the application document using the **same protocol**.
- *  - **String** (except the special value `'self'`)
- *    - The string is matched against the full *normalized / absolute URL* of the resource
- *      being tested (substring matches are not good enough.)
- *    - There are exactly **two wildcard sequences** - `*` and `**`.  All other characters
- *      match themselves.
- *    - `*`: matches zero or more occurrences of any character other than one of the following 6
- *      characters: '`:`', '`/`', '`.`', '`?`', '`&`' and ';'.  It's a useful wildcard for use
- *      in a whitelist.
- *    - `**`: matches zero or more occurrences of *any* character.  As such, it's not
- *      not appropriate to use in for a scheme, domain, etc. as it would match too much.  (e.g.
- *      http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might
- *      not have been the intention.)  Its usage at the very end of the path is ok.  (e.g.
- *      http://foo.example.com/templates/**).
- *  - **RegExp** (*see caveat below*)
- *    - *Caveat*:  While regular expressions are powerful and offer great flexibility,  their syntax
- *      (and all the inevitable escaping) makes them *harder to maintain*.  It's easy to
- *      accidentally introduce a bug when one updates a complex expression (imho, all regexes should
- *      have good test coverage.).  For instance, the use of `.` in the regex is correct only in a
- *      small number of cases.  A `.` character in the regex used when matching the scheme or a
- *      subdomain could be matched against a `:` or literal `.` that was likely not intended.   It
- *      is highly recommended to use the string patterns and only fall back to regular expressions
- *      if they as a last resort.
- *    - The regular expression must be an instance of RegExp (i.e. not a string.)  It is
- *      matched against the **entire** *normalized / absolute URL* of the resource being tested
- *      (even when the RegExp did not have the `^` and `$` codes.)  In addition, any flags
- *      present on the RegExp (such as multiline, global, ignoreCase) are ignored.
- *    - If you are generating your JavaScript from some other templating engine (not
- *      recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)),
- *      remember to escape your regular expression (and be aware that you might need more than
- *      one level of escaping depending on your templating engine and the way you interpolated
- *      the value.)  Do make use of your platform's escaping mechanism as it might be good
- *      enough before coding your own.  e.g. Ruby has
- *      [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape)
- *      and Python has [re.escape](http://docs.python.org/library/re.html#re.escape).
- *      Javascript lacks a similar built in function for escaping.  Take a look at Google
- *      Closure library's [goog.string.regExpEscape(s)](
- *      http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962).
- *
- * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example.
- *
- * ## Show me an example using SCE.
- *
- * <example module="mySceApp" deps="angular-sanitize.js">
- * <file name="index.html">
- *   <div ng-controller="AppController as myCtrl">
- *     <i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
- *     <b>User comments</b><br>
- *     By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when
- *     $sanitize is available.  If $sanitize isn't available, this results in an error instead of an
- *     exploit.
- *     <div class="well">
- *       <div ng-repeat="userComment in myCtrl.userComments">
- *         <b>{{userComment.name}}</b>:
- *         <span ng-bind-html="userComment.htmlComment" class="htmlComment"></span>
- *         <br>
- *       </div>
- *     </div>
- *   </div>
- * </file>
- *
- * <file name="script.js">
- *   angular.module('mySceApp', ['ngSanitize'])
- *     .controller('AppController', ['$http', '$templateCache', '$sce',
- *       function($http, $templateCache, $sce) {
- *         var self = this;
- *         $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) {
- *           self.userComments = userComments;
- *         });
- *         self.explicitlyTrustedHtml = $sce.trustAsHtml(
- *             '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
- *             'sanitization.&quot;">Hover over this text.</span>');
- *       }]);
- * </file>
- *
- * <file name="test_data.json">
- * [
- *   { "name": "Alice",
- *     "htmlComment":
- *         "<span onmouseover='this.textContent=\"PWN3D!\"'>Is <i>anyone</i> reading this?</span>"
- *   },
- *   { "name": "Bob",
- *     "htmlComment": "<i>Yes!</i>  Am I the only other one?"
- *   }
- * ]
- * </file>
- *
- * <file name="protractor.js" type="protractor">
- *   describe('SCE doc demo', function() {
- *     it('should sanitize untrusted values', function() {
- *       expect(element.all(by.css('.htmlComment')).first().getInnerHtml())
- *           .toBe('<span>Is <i>anyone</i> reading this?</span>');
- *     });
- *
- *     it('should NOT sanitize explicitly trusted values', function() {
- *       expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(
- *           '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
- *           'sanitization.&quot;">Hover over this text.</span>');
- *     });
- *   });
- * </file>
- * </example>
- *
- *
- *
- * ## Can I disable SCE completely?
- *
- * Yes, you can.  However, this is strongly discouraged.  SCE gives you a lot of security benefits
- * for little coding overhead.  It will be much harder to take an SCE disabled application and
- * either secure it on your own or enable SCE at a later stage.  It might make sense to disable SCE
- * for cases where you have a lot of existing code that was written before SCE was introduced and
- * you're migrating them a module at a time.
- *
- * That said, here's how you can completely disable SCE:
- *
- * ```
- * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
- *   // Completely disable SCE.  For demonstration purposes only!
- *   // Do not use in new projects.
- *   $sceProvider.enabled(false);
- * });
- * ```
- *
- */
-/* jshint maxlen: 100 */
-
-function $SceProvider() {
-  var enabled = true;
-
-  /**
-   * @ngdoc method
-   * @name $sceProvider#enabled
-   * @kind function
-   *
-   * @param {boolean=} value If provided, then enables/disables SCE.
-   * @return {boolean} true if SCE is enabled, false otherwise.
-   *
-   * @description
-   * Enables/disables SCE and returns the current value.
-   */
-  this.enabled = function(value) {
-    if (arguments.length) {
-      enabled = !!value;
-    }
-    return enabled;
-  };
-
-
-  /* Design notes on the default implementation for SCE.
-   *
-   * The API contract for the SCE delegate
-   * -------------------------------------
-   * The SCE delegate object must provide the following 3 methods:
-   *
-   * - trustAs(contextEnum, value)
-   *     This method is used to tell the SCE service that the provided value is OK to use in the
-   *     contexts specified by contextEnum.  It must return an object that will be accepted by
-   *     getTrusted() for a compatible contextEnum and return this value.
-   *
-   * - valueOf(value)
-   *     For values that were not produced by trustAs(), return them as is.  For values that were
-   *     produced by trustAs(), return the corresponding input value to trustAs.  Basically, if
-   *     trustAs is wrapping the given values into some type, this operation unwraps it when given
-   *     such a value.
-   *
-   * - getTrusted(contextEnum, value)
-   *     This function should return the a value that is safe to use in the context specified by
-   *     contextEnum or throw and exception otherwise.
-   *
-   * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be
-   * opaque or wrapped in some holder object.  That happens to be an implementation detail.  For
-   * instance, an implementation could maintain a registry of all trusted objects by context.  In
-   * such a case, trustAs() would return the same object that was passed in.  getTrusted() would
-   * return the same object passed in if it was found in the registry under a compatible context or
-   * throw an exception otherwise.  An implementation might only wrap values some of the time based
-   * on some criteria.  getTrusted() might return a value and not throw an exception for special
-   * constants or objects even if not wrapped.  All such implementations fulfill this contract.
-   *
-   *
-   * A note on the inheritance model for SCE contexts
-   * ------------------------------------------------
-   * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types.  This
-   * is purely an implementation details.
-   *
-   * The contract is simply this:
-   *
-   *     getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value)
-   *     will also succeed.
-   *
-   * Inheritance happens to capture this in a natural way.  In some future, we
-   * may not use inheritance anymore.  That is OK because no code outside of
-   * sce.js and sceSpecs.js would need to be aware of this detail.
-   */
-
-  this.$get = ['$parse', '$sceDelegate', function(
-                $parse,   $sceDelegate) {
-    // Prereq: Ensure that we're not running in IE<11 quirks mode.  In that mode, IE < 11 allow
-    // the "expression(javascript expression)" syntax which is insecure.
-    if (enabled && msie < 8) {
-      throw $sceMinErr('iequirks',
-        'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' +
-        'mode.  You can fix this by adding the text <!doctype html> to the top of your HTML ' +
-        'document.  See http://docs.angularjs.org/api/ng.$sce for more information.');
-    }
-
-    var sce = shallowCopy(SCE_CONTEXTS);
-
-    /**
-     * @ngdoc method
-     * @name $sce#isEnabled
-     * @kind function
-     *
-     * @return {Boolean} true if SCE is enabled, false otherwise.  If you want to set the value, you
-     * have to do it at module config time on {@link ng.$sceProvider $sceProvider}.
-     *
-     * @description
-     * Returns a boolean indicating if SCE is enabled.
-     */
-    sce.isEnabled = function() {
-      return enabled;
-    };
-    sce.trustAs = $sceDelegate.trustAs;
-    sce.getTrusted = $sceDelegate.getTrusted;
-    sce.valueOf = $sceDelegate.valueOf;
-
-    if (!enabled) {
-      sce.trustAs = sce.getTrusted = function(type, value) { return value; };
-      sce.valueOf = identity;
-    }
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAs
-     *
-     * @description
-     * Converts Angular {@link guide/expression expression} into a function.  This is like {@link
-     * ng.$parse $parse} and is identical when the expression is a literal constant.  Otherwise, it
-     * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*,
-     * *result*)}
-     *
-     * @param {string} type The kind of SCE context in which this result will be used.
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-    sce.parseAs = function sceParseAs(type, expr) {
-      var parsed = $parse(expr);
-      if (parsed.literal && parsed.constant) {
-        return parsed;
-      } else {
-        return $parse(expr, function(value) {
-          return sce.getTrusted(type, value);
-        });
-      }
-    };
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAs
-     *
-     * @description
-     * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}.  As such,
-     * returns an object that is trusted by angular for use in specified strict contextual
-     * escaping contexts (such as ng-bind-html, ng-include, any src attribute
-     * interpolation, any dom event binding attribute interpolation such as for onclick,  etc.)
-     * that uses the provided value.  See * {@link ng.$sce $sce} for enabling strict contextual
-     * escaping.
-     *
-     * @param {string} type The kind of context in which this value is safe for use.  e.g. url,
-     *   resource_url, html, js and css.
-     * @param {*} value The value that that should be considered trusted/safe.
-     * @returns {*} A value that can be used to stand in for the provided `value` in places
-     * where Angular expects a $sce.trustAs() return value.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsHtml(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml
-     *     $sce.getTrustedHtml(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsUrl(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl
-     *     $sce.getTrustedUrl(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsResourceUrl(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl
-     *     $sce.getTrustedResourceUrl(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the return
-     *     value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#trustAsJs
-     *
-     * @description
-     * Shorthand method.  `$sce.trustAsJs(value)` →
-     *     {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`}
-     *
-     * @param {*} value The value to trustAs.
-     * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs
-     *     $sce.getTrustedJs(value)} to obtain the original value.  (privileged directives
-     *     only accept expressions that are either literal constants or are the
-     *     return value of {@link ng.$sce#trustAs $sce.trustAs}.)
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrusted
-     *
-     * @description
-     * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}.  As such,
-     * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the
-     * originally supplied value if the queried context type is a supertype of the created type.
-     * If this condition isn't satisfied, throws an exception.
-     *
-     * @param {string} type The kind of context in which this value is to be used.
-     * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`}
-     *                         call.
-     * @returns {*} The value the was originally provided to
-     *              {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context.
-     *              Otherwise, throws an exception.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedHtml(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedCss
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedCss(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedUrl(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedResourceUrl(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`}
-     *
-     * @param {*} value The value to pass to `$sceDelegate.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#getTrustedJs
-     *
-     * @description
-     * Shorthand method.  `$sce.getTrustedJs(value)` →
-     *     {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`}
-     *
-     * @param {*} value The value to pass to `$sce.getTrusted`.
-     * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)`
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsHtml
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsHtml(expression string)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsCss
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsCss(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsUrl(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsResourceUrl
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsResourceUrl(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    /**
-     * @ngdoc method
-     * @name $sce#parseAsJs
-     *
-     * @description
-     * Shorthand method.  `$sce.parseAsJs(value)` →
-     *     {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`}
-     *
-     * @param {string} expression String expression to compile.
-     * @returns {function(context, locals)} a function which represents the compiled expression:
-     *
-     *    * `context` – `{object}` – an object against which any expressions embedded in the strings
-     *      are evaluated against (typically a scope object).
-     *    * `locals` – `{object=}` – local variables context object, useful for overriding values in
-     *      `context`.
-     */
-
-    // Shorthand delegations.
-    var parse = sce.parseAs,
-        getTrusted = sce.getTrusted,
-        trustAs = sce.trustAs;
-
-    forEach(SCE_CONTEXTS, function(enumValue, name) {
-      var lName = lowercase(name);
-      sce[camelCase("parse_as_" + lName)] = function(expr) {
-        return parse(enumValue, expr);
-      };
-      sce[camelCase("get_trusted_" + lName)] = function(value) {
-        return getTrusted(enumValue, value);
-      };
-      sce[camelCase("trust_as_" + lName)] = function(value) {
-        return trustAs(enumValue, value);
-      };
-    });
-
-    return sce;
-  }];
-}
-
-/**
- * !!! This is an undocumented "private" service !!!
- *
- * @name $sniffer
- * @requires $window
- * @requires $document
- *
- * @property {boolean} history Does the browser support html5 history api ?
- * @property {boolean} transitions Does the browser support CSS transition events ?
- * @property {boolean} animations Does the browser support CSS animation events ?
- *
- * @description
- * This is very simple implementation of testing browser's features.
- */
-function $SnifferProvider() {
-  this.$get = ['$window', '$document', function($window, $document) {
-    var eventSupport = {},
-        android =
-          int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
-        boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
-        document = $document[0] || {},
-        vendorPrefix,
-        vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/,
-        bodyStyle = document.body && document.body.style,
-        transitions = false,
-        animations = false,
-        match;
-
-    if (bodyStyle) {
-      for (var prop in bodyStyle) {
-        if (match = vendorRegex.exec(prop)) {
-          vendorPrefix = match[0];
-          vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);
-          break;
-        }
-      }
-
-      if (!vendorPrefix) {
-        vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit';
-      }
-
-      transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle));
-      animations  = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle));
-
-      if (android && (!transitions ||  !animations)) {
-        transitions = isString(document.body.style.webkitTransition);
-        animations = isString(document.body.style.webkitAnimation);
-      }
-    }
-
-
-    return {
-      // Android has history.pushState, but it does not update location correctly
-      // so let's not use the history API at all.
-      // http://code.google.com/p/android/issues/detail?id=17471
-      // https://github.com/angular/angular.js/issues/904
-
-      // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
-      // so let's not use the history API also
-      // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
-      // jshint -W018
-      history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee),
-      // jshint +W018
-      hasEvent: function(event) {
-        // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have
-        // it. In particular the event is not fired when backspace or delete key are pressed or
-        // when cut operation is performed.
-        // IE10+ implements 'input' event but it erroneously fires under various situations,
-        // e.g. when placeholder changes, or a form is focused.
-        if (event === 'input' && msie <= 11) return false;
-
-        if (isUndefined(eventSupport[event])) {
-          var divElm = document.createElement('div');
-          eventSupport[event] = 'on' + event in divElm;
-        }
-
-        return eventSupport[event];
-      },
-      csp: csp(),
-      vendorPrefix: vendorPrefix,
-      transitions: transitions,
-      animations: animations,
-      android: android
-    };
-  }];
-}
-
-var $compileMinErr = minErr('$compile');
-
-/**
- * @ngdoc service
- * @name $templateRequest
- *
- * @description
- * The `$templateRequest` service downloads the provided template using `$http` and, upon success,
- * stores the contents inside of `$templateCache`. If the HTTP request fails or the response data
- * of the HTTP request is empty, a `$compile` error will be thrown (the exception can be thwarted
- * by setting the 2nd parameter of the function to true).
- *
- * @param {string} tpl The HTTP request template URL
- * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty
- *
- * @return {Promise} the HTTP Promise for the given.
- *
- * @property {number} totalPendingRequests total amount of pending template requests being downloaded.
- */
-function $TemplateRequestProvider() {
-  this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
-    function handleRequestFn(tpl, ignoreRequestError) {
-      handleRequestFn.totalPendingRequests++;
-
-      var transformResponse = $http.defaults && $http.defaults.transformResponse;
-
-      if (isArray(transformResponse)) {
-        transformResponse = transformResponse.filter(function(transformer) {
-          return transformer !== defaultHttpResponseTransform;
-        });
-      } else if (transformResponse === defaultHttpResponseTransform) {
-        transformResponse = null;
-      }
-
-      var httpOptions = {
-        cache: $templateCache,
-        transformResponse: transformResponse
-      };
-
-      return $http.get(tpl, httpOptions)
-        .finally(function() {
-          handleRequestFn.totalPendingRequests--;
-        })
-        .then(function(response) {
-          return response.data;
-        }, handleError);
-
-      function handleError(resp) {
-        if (!ignoreRequestError) {
-          throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
-        }
-        return $q.reject(resp);
-      }
-    }
-
-    handleRequestFn.totalPendingRequests = 0;
-
-    return handleRequestFn;
-  }];
-}
-
-function $$TestabilityProvider() {
-  this.$get = ['$rootScope', '$browser', '$location',
-       function($rootScope,   $browser,   $location) {
-
-    /**
-     * @name $testability
-     *
-     * @description
-     * The private $$testability service provides a collection of methods for use when debugging
-     * or by automated test and debugging tools.
-     */
-    var testability = {};
-
-    /**
-     * @name $$testability#findBindings
-     *
-     * @description
-     * Returns an array of elements that are bound (via ng-bind or {{}})
-     * to expressions matching the input.
-     *
-     * @param {Element} element The element root to search from.
-     * @param {string} expression The binding expression to match.
-     * @param {boolean} opt_exactMatch If true, only returns exact matches
-     *     for the expression. Filters and whitespace are ignored.
-     */
-    testability.findBindings = function(element, expression, opt_exactMatch) {
-      var bindings = element.getElementsByClassName('ng-binding');
-      var matches = [];
-      forEach(bindings, function(binding) {
-        var dataBinding = angular.element(binding).data('$binding');
-        if (dataBinding) {
-          forEach(dataBinding, function(bindingName) {
-            if (opt_exactMatch) {
-              var matcher = new RegExp('(^|\\s)' + escapeForRegexp(expression) + '(\\s|\\||$)');
-              if (matcher.test(bindingName)) {
-                matches.push(binding);
-              }
-            } else {
-              if (bindingName.indexOf(expression) != -1) {
-                matches.push(binding);
-              }
-            }
-          });
-        }
-      });
-      return matches;
-    };
-
-    /**
-     * @name $$testability#findModels
-     *
-     * @description
-     * Returns an array of elements that are two-way found via ng-model to
-     * expressions matching the input.
-     *
-     * @param {Element} element The element root to search from.
-     * @param {string} expression The model expression to match.
-     * @param {boolean} opt_exactMatch If true, only returns exact matches
-     *     for the expression.
-     */
-    testability.findModels = function(element, expression, opt_exactMatch) {
-      var prefixes = ['ng-', 'data-ng-', 'ng\\:'];
-      for (var p = 0; p < prefixes.length; ++p) {
-        var attributeEquals = opt_exactMatch ? '=' : '*=';
-        var selector = '[' + prefixes[p] + 'model' + attributeEquals + '"' + expression + '"]';
-        var elements = element.querySelectorAll(selector);
-        if (elements.length) {
-          return elements;
-        }
-      }
-    };
-
-    /**
-     * @name $$testability#getLocation
-     *
-     * @description
-     * Shortcut for getting the location in a browser agnostic way. Returns
-     *     the path, search, and hash. (e.g. /path?a=b#hash)
-     */
-    testability.getLocation = function() {
-      return $location.url();
-    };
-
-    /**
-     * @name $$testability#setLocation
-     *
-     * @description
-     * Shortcut for navigating to a location without doing a full page reload.
-     *
-     * @param {string} url The location url (path, search and hash,
-     *     e.g. /path?a=b#hash) to go to.
-     */
-    testability.setLocation = function(url) {
-      if (url !== $location.url()) {
-        $location.url(url);
-        $rootScope.$digest();
-      }
-    };
-
-    /**
-     * @name $$testability#whenStable
-     *
-     * @description
-     * Calls the callback when $timeout and $http requests are completed.
-     *
-     * @param {function} callback
-     */
-    testability.whenStable = function(callback) {
-      $browser.notifyWhenNoOutstandingRequests(callback);
-    };
-
-    return testability;
-  }];
-}
-
-function $TimeoutProvider() {
-  this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler',
-       function($rootScope,   $browser,   $q,   $$q,   $exceptionHandler) {
-    var deferreds = {};
-
-
-     /**
-      * @ngdoc service
-      * @name $timeout
-      *
-      * @description
-      * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch
-      * block and delegates any exceptions to
-      * {@link ng.$exceptionHandler $exceptionHandler} service.
-      *
-      * The return value of registering a timeout function is a promise, which will be resolved when
-      * the timeout is reached and the timeout function is executed.
-      *
-      * To cancel a timeout request, call `$timeout.cancel(promise)`.
-      *
-      * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to
-      * synchronously flush the queue of deferred functions.
-      *
-      * @param {function()} fn A function, whose execution should be delayed.
-      * @param {number=} [delay=0] Delay in milliseconds.
-      * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
-      *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
-      * @returns {Promise} Promise that will be resolved when the timeout is reached. The value this
-      *   promise will be resolved with is the return value of the `fn` function.
-      *
-      */
-    function timeout(fn, delay, invokeApply) {
-      var skipApply = (isDefined(invokeApply) && !invokeApply),
-          deferred = (skipApply ? $$q : $q).defer(),
-          promise = deferred.promise,
-          timeoutId;
-
-      timeoutId = $browser.defer(function() {
-        try {
-          deferred.resolve(fn());
-        } catch (e) {
-          deferred.reject(e);
-          $exceptionHandler(e);
-        }
-        finally {
-          delete deferreds[promise.$$timeoutId];
-        }
-
-        if (!skipApply) $rootScope.$apply();
-      }, delay);
-
-      promise.$$timeoutId = timeoutId;
-      deferreds[timeoutId] = deferred;
-
-      return promise;
-    }
-
-
-     /**
-      * @ngdoc method
-      * @name $timeout#cancel
-      *
-      * @description
-      * Cancels a task associated with the `promise`. As a result of this, the promise will be
-      * resolved with a rejection.
-      *
-      * @param {Promise=} promise Promise returned by the `$timeout` function.
-      * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully
-      *   canceled.
-      */
-    timeout.cancel = function(promise) {
-      if (promise && promise.$$timeoutId in deferreds) {
-        deferreds[promise.$$timeoutId].reject('canceled');
-        delete deferreds[promise.$$timeoutId];
-        return $browser.defer.cancel(promise.$$timeoutId);
-      }
-      return false;
-    };
-
-    return timeout;
-  }];
-}
-
-// NOTE:  The usage of window and document instead of $window and $document here is
-// deliberate.  This service depends on the specific behavior of anchor nodes created by the
-// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and
-// cause us to break tests.  In addition, when the browser resolves a URL for XHR, it
-// doesn't know about mocked locations and resolves URLs to the real document - which is
-// exactly the behavior needed here.  There is little value is mocking these out for this
-// service.
-var urlParsingNode = document.createElement("a");
-var originUrl = urlResolve(window.location.href);
-
-
-/**
- *
- * Implementation Notes for non-IE browsers
- * ----------------------------------------
- * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM,
- * results both in the normalizing and parsing of the URL.  Normalizing means that a relative
- * URL will be resolved into an absolute URL in the context of the application document.
- * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related
- * properties are all populated to reflect the normalized URL.  This approach has wide
- * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc.  See
- * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
- *
- * Implementation Notes for IE
- * ---------------------------
- * IE >= 8 and <= 10 normalizes the URL when assigned to the anchor node similar to the other
- * browsers.  However, the parsed components will not be set if the URL assigned did not specify
- * them.  (e.g. if you assign a.href = "foo", then a.protocol, a.host, etc. will be empty.)  We
- * work around that by performing the parsing in a 2nd step by taking a previously normalized
- * URL (e.g. by assigning to a.href) and assigning it a.href again.  This correctly populates the
- * properties such as protocol, hostname, port, etc.
- *
- * IE7 does not normalize the URL when assigned to an anchor node.  (Apparently, it does, if one
- * uses the inner HTML approach to assign the URL as part of an HTML snippet -
- * http://stackoverflow.com/a/472729)  However, setting img[src] does normalize the URL.
- * Unfortunately, setting img[src] to something like "javascript:foo" on IE throws an exception.
- * Since the primary usage for normalizing URLs is to sanitize such URLs, we can't use that
- * method and IE < 8 is unsupported.
- *
- * References:
- *   http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement
- *   http://www.aptana.com/reference/html/api/HTMLAnchorElement.html
- *   http://url.spec.whatwg.org/#urlutils
- *   https://github.com/angular/angular.js/pull/2902
- *   http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
- *
- * @kind function
- * @param {string} url The URL to be parsed.
- * @description Normalizes and parses a URL.
- * @returns {object} Returns the normalized URL as a dictionary.
- *
- *   | member name   | Description    |
- *   |---------------|----------------|
- *   | href          | A normalized version of the provided URL if it was not an absolute URL |
- *   | protocol      | The protocol including the trailing colon                              |
- *   | host          | The host and port (if the port is non-default) of the normalizedUrl    |
- *   | search        | The search params, minus the question mark                             |
- *   | hash          | The hash string, minus the hash symbol
- *   | hostname      | The hostname
- *   | port          | The port, without ":"
- *   | pathname      | The pathname, beginning with "/"
- *
- */
-function urlResolve(url) {
-  var href = url;
-
-  if (msie) {
-    // Normalize before parse.  Refer Implementation Notes on why this is
-    // done in two steps on IE.
-    urlParsingNode.setAttribute("href", href);
-    href = urlParsingNode.href;
-  }
-
-  urlParsingNode.setAttribute('href', href);
-
-  // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
-  return {
-    href: urlParsingNode.href,
-    protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
-    host: urlParsingNode.host,
-    search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
-    hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
-    hostname: urlParsingNode.hostname,
-    port: urlParsingNode.port,
-    pathname: (urlParsingNode.pathname.charAt(0) === '/')
-      ? urlParsingNode.pathname
-      : '/' + urlParsingNode.pathname
-  };
-}
-
-/**
- * Parse a request URL and determine whether this is a same-origin request as the application document.
- *
- * @param {string|object} requestUrl The url of the request as a string that will be resolved
- * or a parsed URL object.
- * @returns {boolean} Whether the request is for the same origin as the application document.
- */
-function urlIsSameOrigin(requestUrl) {
-  var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
-  return (parsed.protocol === originUrl.protocol &&
-          parsed.host === originUrl.host);
-}
-
-/**
- * @ngdoc service
- * @name $window
- *
- * @description
- * A reference to the browser's `window` object. While `window`
- * is globally available in JavaScript, it causes testability problems, because
- * it is a global variable. In angular we always refer to it through the
- * `$window` service, so it may be overridden, removed or mocked for testing.
- *
- * Expressions, like the one defined for the `ngClick` directive in the example
- * below, are evaluated with respect to the current scope.  Therefore, there is
- * no risk of inadvertently coding in a dependency on a global value in such an
- * expression.
- *
- * @example
-   <example module="windowExample">
-     <file name="index.html">
-       <script>
-         angular.module('windowExample', [])
-           .controller('ExampleController', ['$scope', '$window', function($scope, $window) {
-             $scope.greeting = 'Hello, World!';
-             $scope.doGreeting = function(greeting) {
-               $window.alert(greeting);
-             };
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input type="text" ng-model="greeting" />
-         <button ng-click="doGreeting(greeting)">ALERT</button>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-      it('should display the greeting in the input box', function() {
-       element(by.model('greeting')).sendKeys('Hello, E2E Tests');
-       // If we click the button it will block the test runner
-       // element(':button').click();
-      });
-     </file>
-   </example>
- */
-function $WindowProvider() {
-  this.$get = valueFn(window);
-}
-
-/* global currencyFilter: true,
- dateFilter: true,
- filterFilter: true,
- jsonFilter: true,
- limitToFilter: true,
- lowercaseFilter: true,
- numberFilter: true,
- orderByFilter: true,
- uppercaseFilter: true,
- */
-
-/**
- * @ngdoc provider
- * @name $filterProvider
- * @description
- *
- * Filters are just functions which transform input to an output. However filters need to be
- * Dependency Injected. To achieve this a filter definition consists of a factory function which is
- * annotated with dependencies and is responsible for creating a filter function.
- *
- * ```js
- *   // Filter registration
- *   function MyModule($provide, $filterProvider) {
- *     // create a service to demonstrate injection (not always needed)
- *     $provide.value('greet', function(name){
- *       return 'Hello ' + name + '!';
- *     });
- *
- *     // register a filter factory which uses the
- *     // greet service to demonstrate DI.
- *     $filterProvider.register('greet', function(greet){
- *       // return the filter function which uses the greet service
- *       // to generate salutation
- *       return function(text) {
- *         // filters need to be forgiving so check input validity
- *         return text && greet(text) || text;
- *       };
- *     });
- *   }
- * ```
- *
- * The filter function is registered with the `$injector` under the filter name suffix with
- * `Filter`.
- *
- * ```js
- *   it('should be the same instance', inject(
- *     function($filterProvider) {
- *       $filterProvider.register('reverse', function(){
- *         return ...;
- *       });
- *     },
- *     function($filter, reverseFilter) {
- *       expect($filter('reverse')).toBe(reverseFilter);
- *     });
- * ```
- *
- *
- * For more information about how angular filters work, and how to create your own filters, see
- * {@link guide/filter Filters} in the Angular Developer Guide.
- */
-
-/**
- * @ngdoc service
- * @name $filter
- * @kind function
- * @description
- * Filters are used for formatting data displayed to the user.
- *
- * The general syntax in templates is as follows:
- *
- *         {{ expression [| filter_name[:parameter_value] ... ] }}
- *
- * @param {String} name Name of the filter function to retrieve
- * @return {Function} the filter function
- * @example
-   <example name="$filter" module="filterExample">
-     <file name="index.html">
-       <div ng-controller="MainCtrl">
-        <h3>{{ originalText }}</h3>
-        <h3>{{ filteredText }}</h3>
-       </div>
-     </file>
-
-     <file name="script.js">
-      angular.module('filterExample', [])
-      .controller('MainCtrl', function($scope, $filter) {
-        $scope.originalText = 'hello';
-        $scope.filteredText = $filter('uppercase')($scope.originalText);
-      });
-     </file>
-   </example>
-  */
-$FilterProvider.$inject = ['$provide'];
-function $FilterProvider($provide) {
-  var suffix = 'Filter';
-
-  /**
-   * @ngdoc method
-   * @name $filterProvider#register
-   * @param {string|Object} name Name of the filter function, or an object map of filters where
-   *    the keys are the filter names and the values are the filter factories.
-   * @returns {Object} Registered filter instance, or if a map of filters was provided then a map
-   *    of the registered filter instances.
-   */
-  function register(name, factory) {
-    if (isObject(name)) {
-      var filters = {};
-      forEach(name, function(filter, key) {
-        filters[key] = register(key, filter);
-      });
-      return filters;
-    } else {
-      return $provide.factory(name + suffix, factory);
-    }
-  }
-  this.register = register;
-
-  this.$get = ['$injector', function($injector) {
-    return function(name) {
-      return $injector.get(name + suffix);
-    };
-  }];
-
-  ////////////////////////////////////////
-
-  /* global
-    currencyFilter: false,
-    dateFilter: false,
-    filterFilter: false,
-    jsonFilter: false,
-    limitToFilter: false,
-    lowercaseFilter: false,
-    numberFilter: false,
-    orderByFilter: false,
-    uppercaseFilter: false,
-  */
-
-  register('currency', currencyFilter);
-  register('date', dateFilter);
-  register('filter', filterFilter);
-  register('json', jsonFilter);
-  register('limitTo', limitToFilter);
-  register('lowercase', lowercaseFilter);
-  register('number', numberFilter);
-  register('orderBy', orderByFilter);
-  register('uppercase', uppercaseFilter);
-}
-
-/**
- * @ngdoc filter
- * @name filter
- * @kind function
- *
- * @description
- * Selects a subset of items from `array` and returns it as a new array.
- *
- * @param {Array} array The source array.
- * @param {string|Object|function()} expression The predicate to be used for selecting items from
- *   `array`.
- *
- *   Can be one of:
- *
- *   - `string`: The string is used for matching against the contents of the `array`. All strings or
- *     objects with string properties in `array` that match this string will be returned. This also
- *     applies to nested object properties.
- *     The predicate can be negated by prefixing the string with `!`.
- *
- *   - `Object`: A pattern object can be used to filter specific properties on objects contained
- *     by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items
- *     which have property `name` containing "M" and property `phone` containing "1". A special
- *     property name `$` can be used (as in `{$:"text"}`) to accept a match against any
- *     property of the object or its nested object properties. That's equivalent to the simple
- *     substring match with a `string` as described above. The predicate can be negated by prefixing
- *     the string with `!`.
- *     For example `{name: "!M"}` predicate will return an array of items which have property `name`
- *     not containing "M".
- *
- *     Note that a named property will match properties on the same level only, while the special
- *     `$` property will match properties on the same level or deeper. E.g. an array item like
- *     `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but
- *     **will** be matched by `{$: 'John'}`.
- *
- *   - `function(value, index)`: A predicate function can be used to write arbitrary filters. The
- *     function is called for each element of `array`. The final result is an array of those
- *     elements that the predicate returned true for.
- *
- * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
- *     determining if the expected value (from the filter expression) and actual value (from
- *     the object in the array) should be considered a match.
- *
- *   Can be one of:
- *
- *   - `function(actual, expected)`:
- *     The function will be given the object value and the predicate value to compare and
- *     should return true if both values should be considered equal.
- *
- *   - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`.
- *     This is essentially strict comparison of expected and actual.
- *
- *   - `false|undefined`: A short hand for a function which will look for a substring match in case
- *     insensitive way.
- *
- * @example
-   <example>
-     <file name="index.html">
-       <div ng-init="friends = [{name:'John', phone:'555-1276'},
-                                {name:'Mary', phone:'800-BIG-MARY'},
-                                {name:'Mike', phone:'555-4321'},
-                                {name:'Adam', phone:'555-5678'},
-                                {name:'Julie', phone:'555-8765'},
-                                {name:'Juliette', phone:'555-5678'}]"></div>
-
-       Search: <input ng-model="searchText">
-       <table id="searchTextResults">
-         <tr><th>Name</th><th>Phone</th></tr>
-         <tr ng-repeat="friend in friends | filter:searchText">
-           <td>{{friend.name}}</td>
-           <td>{{friend.phone}}</td>
-         </tr>
-       </table>
-       <hr>
-       Any: <input ng-model="search.$"> <br>
-       Name only <input ng-model="search.name"><br>
-       Phone only <input ng-model="search.phone"><br>
-       Equality <input type="checkbox" ng-model="strict"><br>
-       <table id="searchObjResults">
-         <tr><th>Name</th><th>Phone</th></tr>
-         <tr ng-repeat="friendObj in friends | filter:search:strict">
-           <td>{{friendObj.name}}</td>
-           <td>{{friendObj.phone}}</td>
-         </tr>
-       </table>
-     </file>
-     <file name="protractor.js" type="protractor">
-       var expectFriendNames = function(expectedNames, key) {
-         element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {
-           arr.forEach(function(wd, i) {
-             expect(wd.getText()).toMatch(expectedNames[i]);
-           });
-         });
-       };
-
-       it('should search across all fields when filtering with a string', function() {
-         var searchText = element(by.model('searchText'));
-         searchText.clear();
-         searchText.sendKeys('m');
-         expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');
-
-         searchText.clear();
-         searchText.sendKeys('76');
-         expectFriendNames(['John', 'Julie'], 'friend');
-       });
-
-       it('should search in specific fields when filtering with a predicate object', function() {
-         var searchAny = element(by.model('search.$'));
-         searchAny.clear();
-         searchAny.sendKeys('i');
-         expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');
-       });
-       it('should use a equal comparison when comparator is true', function() {
-         var searchName = element(by.model('search.name'));
-         var strict = element(by.model('strict'));
-         searchName.clear();
-         searchName.sendKeys('Julie');
-         strict.click();
-         expectFriendNames(['Julie'], 'friendObj');
-       });
-     </file>
-   </example>
- */
-function filterFilter() {
-  return function(array, expression, comparator) {
-    if (!isArray(array)) return array;
-
-    var predicateFn;
-    var matchAgainstAnyProp;
-
-    switch (typeof expression) {
-      case 'function':
-        predicateFn = expression;
-        break;
-      case 'boolean':
-      case 'number':
-      case 'string':
-        matchAgainstAnyProp = true;
-        //jshint -W086
-      case 'object':
-        //jshint +W086
-        predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp);
-        break;
-      default:
-        return array;
-    }
-
-    return array.filter(predicateFn);
-  };
-}
-
-// Helper functions for `filterFilter`
-function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
-  var shouldMatchPrimitives = isObject(expression) && ('$' in expression);
-  var predicateFn;
-
-  if (comparator === true) {
-    comparator = equals;
-  } else if (!isFunction(comparator)) {
-    comparator = function(actual, expected) {
-      if (isObject(actual) || isObject(expected)) {
-        // Prevent an object to be considered equal to a string like `'[object'`
-        return false;
-      }
-
-      actual = lowercase('' + actual);
-      expected = lowercase('' + expected);
-      return actual.indexOf(expected) !== -1;
-    };
-  }
-
-  predicateFn = function(item) {
-    if (shouldMatchPrimitives && !isObject(item)) {
-      return deepCompare(item, expression.$, comparator, false);
-    }
-    return deepCompare(item, expression, comparator, matchAgainstAnyProp);
-  };
-
-  return predicateFn;
-}
-
-function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) {
-  var actualType = typeof actual;
-  var expectedType = typeof expected;
-
-  if ((expectedType === 'string') && (expected.charAt(0) === '!')) {
-    return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp);
-  } else if (isArray(actual)) {
-    // In case `actual` is an array, consider it a match
-    // if ANY of it's items matches `expected`
-    return actual.some(function(item) {
-      return deepCompare(item, expected, comparator, matchAgainstAnyProp);
-    });
-  }
-
-  switch (actualType) {
-    case 'object':
-      var key;
-      if (matchAgainstAnyProp) {
-        for (key in actual) {
-          if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) {
-            return true;
-          }
-        }
-        return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false);
-      } else if (expectedType === 'object') {
-        for (key in expected) {
-          var expectedVal = expected[key];
-          if (isFunction(expectedVal)) {
-            continue;
-          }
-
-          var matchAnyProperty = key === '$';
-          var actualVal = matchAnyProperty ? actual : actual[key];
-          if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) {
-            return false;
-          }
-        }
-        return true;
-      } else {
-        return comparator(actual, expected);
-      }
-      break;
-    case 'function':
-      return false;
-    default:
-      return comparator(actual, expected);
-  }
-}
-
-/**
- * @ngdoc filter
- * @name currency
- * @kind function
- *
- * @description
- * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default
- * symbol for current locale is used.
- *
- * @param {number} amount Input to filter.
- * @param {string=} symbol Currency symbol or identifier to be displayed.
- * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale
- * @returns {string} Formatted number.
- *
- *
- * @example
-   <example module="currencyExample">
-     <file name="index.html">
-       <script>
-         angular.module('currencyExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.amount = 1234.56;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input type="number" ng-model="amount"> <br>
-         default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br>
-         custom currency identifier (USD$): <span id="currency-custom">{{amount | currency:"USD$"}}</span>
-         no fractions (0): <span id="currency-no-fractions">{{amount | currency:"USD$":0}}</span>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should init with 1234.56', function() {
-         expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');
-         expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56');
-         expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235');
-       });
-       it('should update', function() {
-         if (browser.params.browser == 'safari') {
-           // Safari does not understand the minus key. See
-           // https://github.com/angular/protractor/issues/481
-           return;
-         }
-         element(by.model('amount')).clear();
-         element(by.model('amount')).sendKeys('-1234');
-         expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');
-         expect(element(by.id('currency-custom')).getText()).toBe('(USD$1,234.00)');
-         expect(element(by.id('currency-no-fractions')).getText()).toBe('(USD$1,234)');
-       });
-     </file>
-   </example>
- */
-currencyFilter.$inject = ['$locale'];
-function currencyFilter($locale) {
-  var formats = $locale.NUMBER_FORMATS;
-  return function(amount, currencySymbol, fractionSize) {
-    if (isUndefined(currencySymbol)) {
-      currencySymbol = formats.CURRENCY_SYM;
-    }
-
-    if (isUndefined(fractionSize)) {
-      fractionSize = formats.PATTERNS[1].maxFrac;
-    }
-
-    // if null or undefined pass it through
-    return (amount == null)
-        ? amount
-        : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).
-            replace(/\u00A4/g, currencySymbol);
-  };
-}
-
-/**
- * @ngdoc filter
- * @name number
- * @kind function
- *
- * @description
- * Formats a number as text.
- *
- * If the input is not a number an empty string is returned.
- *
- * @param {number|string} number Number to format.
- * @param {(number|string)=} fractionSize Number of decimal places to round the number to.
- * If this is not provided then the fraction size is computed from the current locale's number
- * formatting pattern. In the case of the default locale, it will be 3.
- * @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.
- *
- * @example
-   <example module="numberFilterExample">
-     <file name="index.html">
-       <script>
-         angular.module('numberFilterExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.val = 1234.56789;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Enter number: <input ng-model='val'><br>
-         Default formatting: <span id='number-default'>{{val | number}}</span><br>
-         No fractions: <span>{{val | number:0}}</span><br>
-         Negative number: <span>{{-val | number:4}}</span>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should format numbers', function() {
-         expect(element(by.id('number-default')).getText()).toBe('1,234.568');
-         expect(element(by.binding('val | number:0')).getText()).toBe('1,235');
-         expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');
-       });
-
-       it('should update', function() {
-         element(by.model('val')).clear();
-         element(by.model('val')).sendKeys('3374.333');
-         expect(element(by.id('number-default')).getText()).toBe('3,374.333');
-         expect(element(by.binding('val | number:0')).getText()).toBe('3,374');
-         expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');
-      });
-     </file>
-   </example>
- */
-
-
-numberFilter.$inject = ['$locale'];
-function numberFilter($locale) {
-  var formats = $locale.NUMBER_FORMATS;
-  return function(number, fractionSize) {
-
-    // if null or undefined pass it through
-    return (number == null)
-        ? number
-        : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,
-                       fractionSize);
-  };
-}
-
-var DECIMAL_SEP = '.';
-function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
-  if (!isFinite(number) || isObject(number)) return '';
-
-  var isNegative = number < 0;
-  number = Math.abs(number);
-  var numStr = number + '',
-      formatedText = '',
-      parts = [];
-
-  var hasExponent = false;
-  if (numStr.indexOf('e') !== -1) {
-    var match = numStr.match(/([\d\.]+)e(-?)(\d+)/);
-    if (match && match[2] == '-' && match[3] > fractionSize + 1) {
-      number = 0;
-    } else {
-      formatedText = numStr;
-      hasExponent = true;
-    }
-  }
-
-  if (!hasExponent) {
-    var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;
-
-    // determine fractionSize if it is not specified
-    if (isUndefined(fractionSize)) {
-      fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
-    }
-
-    // safely round numbers in JS without hitting imprecisions of floating-point arithmetics
-    // inspired by:
-    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
-    number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
-
-    var fraction = ('' + number).split(DECIMAL_SEP);
-    var whole = fraction[0];
-    fraction = fraction[1] || '';
-
-    var i, pos = 0,
-        lgroup = pattern.lgSize,
-        group = pattern.gSize;
-
-    if (whole.length >= (lgroup + group)) {
-      pos = whole.length - lgroup;
-      for (i = 0; i < pos; i++) {
-        if ((pos - i) % group === 0 && i !== 0) {
-          formatedText += groupSep;
-        }
-        formatedText += whole.charAt(i);
-      }
-    }
-
-    for (i = pos; i < whole.length; i++) {
-      if ((whole.length - i) % lgroup === 0 && i !== 0) {
-        formatedText += groupSep;
-      }
-      formatedText += whole.charAt(i);
-    }
-
-    // format fraction part.
-    while (fraction.length < fractionSize) {
-      fraction += '0';
-    }
-
-    if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize);
-  } else {
-    if (fractionSize > 0 && number < 1) {
-      formatedText = number.toFixed(fractionSize);
-      number = parseFloat(formatedText);
-    }
-  }
-
-  if (number === 0) {
-    isNegative = false;
-  }
-
-  parts.push(isNegative ? pattern.negPre : pattern.posPre,
-             formatedText,
-             isNegative ? pattern.negSuf : pattern.posSuf);
-  return parts.join('');
-}
-
-function padNumber(num, digits, trim) {
-  var neg = '';
-  if (num < 0) {
-    neg =  '-';
-    num = -num;
-  }
-  num = '' + num;
-  while (num.length < digits) num = '0' + num;
-  if (trim)
-    num = num.substr(num.length - digits);
-  return neg + num;
-}
-
-
-function dateGetter(name, size, offset, trim) {
-  offset = offset || 0;
-  return function(date) {
-    var value = date['get' + name]();
-    if (offset > 0 || value > -offset)
-      value += offset;
-    if (value === 0 && offset == -12) value = 12;
-    return padNumber(value, size, trim);
-  };
-}
-
-function dateStrGetter(name, shortForm) {
-  return function(date, formats) {
-    var value = date['get' + name]();
-    var get = uppercase(shortForm ? ('SHORT' + name) : name);
-
-    return formats[get][value];
-  };
-}
-
-function timeZoneGetter(date) {
-  var zone = -1 * date.getTimezoneOffset();
-  var paddedZone = (zone >= 0) ? "+" : "";
-
-  paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) +
-                padNumber(Math.abs(zone % 60), 2);
-
-  return paddedZone;
-}
-
-function getFirstThursdayOfYear(year) {
-    // 0 = index of January
-    var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay();
-    // 4 = index of Thursday (+1 to account for 1st = 5)
-    // 11 = index of *next* Thursday (+1 account for 1st = 12)
-    return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst);
-}
-
-function getThursdayThisWeek(datetime) {
-    return new Date(datetime.getFullYear(), datetime.getMonth(),
-      // 4 = index of Thursday
-      datetime.getDate() + (4 - datetime.getDay()));
-}
-
-function weekGetter(size) {
-   return function(date) {
-      var firstThurs = getFirstThursdayOfYear(date.getFullYear()),
-         thisThurs = getThursdayThisWeek(date);
-
-      var diff = +thisThurs - +firstThurs,
-         result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week
-
-      return padNumber(result, size);
-   };
-}
-
-function ampmGetter(date, formats) {
-  return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
-}
-
-var DATE_FORMATS = {
-  yyyy: dateGetter('FullYear', 4),
-    yy: dateGetter('FullYear', 2, 0, true),
-     y: dateGetter('FullYear', 1),
-  MMMM: dateStrGetter('Month'),
-   MMM: dateStrGetter('Month', true),
-    MM: dateGetter('Month', 2, 1),
-     M: dateGetter('Month', 1, 1),
-    dd: dateGetter('Date', 2),
-     d: dateGetter('Date', 1),
-    HH: dateGetter('Hours', 2),
-     H: dateGetter('Hours', 1),
-    hh: dateGetter('Hours', 2, -12),
-     h: dateGetter('Hours', 1, -12),
-    mm: dateGetter('Minutes', 2),
-     m: dateGetter('Minutes', 1),
-    ss: dateGetter('Seconds', 2),
-     s: dateGetter('Seconds', 1),
-     // while ISO 8601 requires fractions to be prefixed with `.` or `,`
-     // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions
-   sss: dateGetter('Milliseconds', 3),
-  EEEE: dateStrGetter('Day'),
-   EEE: dateStrGetter('Day', true),
-     a: ampmGetter,
-     Z: timeZoneGetter,
-    ww: weekGetter(2),
-     w: weekGetter(1)
-};
-
-var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
-    NUMBER_STRING = /^\-?\d+$/;
-
-/**
- * @ngdoc filter
- * @name date
- * @kind function
- *
- * @description
- *   Formats `date` to a string based on the requested `format`.
- *
- *   `format` string can be composed of the following elements:
- *
- *   * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
- *   * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
- *   * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
- *   * `'MMMM'`: Month in year (January-December)
- *   * `'MMM'`: Month in year (Jan-Dec)
- *   * `'MM'`: Month in year, padded (01-12)
- *   * `'M'`: Month in year (1-12)
- *   * `'dd'`: Day in month, padded (01-31)
- *   * `'d'`: Day in month (1-31)
- *   * `'EEEE'`: Day in Week,(Sunday-Saturday)
- *   * `'EEE'`: Day in Week, (Sun-Sat)
- *   * `'HH'`: Hour in day, padded (00-23)
- *   * `'H'`: Hour in day (0-23)
- *   * `'hh'`: Hour in AM/PM, padded (01-12)
- *   * `'h'`: Hour in AM/PM, (1-12)
- *   * `'mm'`: Minute in hour, padded (00-59)
- *   * `'m'`: Minute in hour (0-59)
- *   * `'ss'`: Second in minute, padded (00-59)
- *   * `'s'`: Second in minute (0-59)
- *   * `'sss'`: Millisecond in second, padded (000-999)
- *   * `'a'`: AM/PM marker
- *   * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
- *   * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
- *   * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year
- *
- *   `format` string can also be one of the following predefined
- *   {@link guide/i18n localizable formats}:
- *
- *   * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale
- *     (e.g. Sep 3, 2010 12:05:08 PM)
- *   * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US  locale (e.g. 9/3/10 12:05 PM)
- *   * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US  locale
- *     (e.g. Friday, September 3, 2010)
- *   * `'longDate'`: equivalent to `'MMMM d, y'` for en_US  locale (e.g. September 3, 2010)
- *   * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US  locale (e.g. Sep 3, 2010)
- *   * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)
- *   * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM)
- *   * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM)
- *
- *   `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g.
- *   `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence
- *   (e.g. `"h 'o''clock'"`).
- *
- * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
- *    number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
- *    shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
- *    specified in the string input, the time is considered to be in the local timezone.
- * @param {string=} format Formatting rules (see Description). If not specified,
- *    `mediumDate` is used.
- * @param {string=} timezone Timezone to be used for formatting. Right now, only `'UTC'` is supported.
- *    If not specified, the timezone of the browser will be used.
- * @returns {string} Formatted string or the input if input is not recognized as date/millis.
- *
- * @example
-   <example>
-     <file name="index.html">
-       <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
-           <span>{{1288323623006 | date:'medium'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
-          <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
-          <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
-       <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
-          <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should format date', function() {
-         expect(element(by.binding("1288323623006 | date:'medium'")).getText()).
-            toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/);
-         expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()).
-            toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
-         expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
-            toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
-         expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
-            toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
-       });
-     </file>
-   </example>
- */
-dateFilter.$inject = ['$locale'];
-function dateFilter($locale) {
-
-
-  var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
-                     // 1        2       3         4          5          6          7          8  9     10      11
-  function jsonStringToDate(string) {
-    var match;
-    if (match = string.match(R_ISO8601_STR)) {
-      var date = new Date(0),
-          tzHour = 0,
-          tzMin  = 0,
-          dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,
-          timeSetter = match[8] ? date.setUTCHours : date.setHours;
-
-      if (match[9]) {
-        tzHour = int(match[9] + match[10]);
-        tzMin = int(match[9] + match[11]);
-      }
-      dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));
-      var h = int(match[4] || 0) - tzHour;
-      var m = int(match[5] || 0) - tzMin;
-      var s = int(match[6] || 0);
-      var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
-      timeSetter.call(date, h, m, s, ms);
-      return date;
-    }
-    return string;
-  }
-
-
-  return function(date, format, timezone) {
-    var text = '',
-        parts = [],
-        fn, match;
-
-    format = format || 'mediumDate';
-    format = $locale.DATETIME_FORMATS[format] || format;
-    if (isString(date)) {
-      date = NUMBER_STRING.test(date) ? int(date) : jsonStringToDate(date);
-    }
-
-    if (isNumber(date)) {
-      date = new Date(date);
-    }
-
-    if (!isDate(date)) {
-      return date;
-    }
-
-    while (format) {
-      match = DATE_FORMATS_SPLIT.exec(format);
-      if (match) {
-        parts = concat(parts, match, 1);
-        format = parts.pop();
-      } else {
-        parts.push(format);
-        format = null;
-      }
-    }
-
-    if (timezone && timezone === 'UTC') {
-      date = new Date(date.getTime());
-      date.setMinutes(date.getMinutes() + date.getTimezoneOffset());
-    }
-    forEach(parts, function(value) {
-      fn = DATE_FORMATS[value];
-      text += fn ? fn(date, $locale.DATETIME_FORMATS)
-                 : value.replace(/(^'|'$)/g, '').replace(/''/g, "'");
-    });
-
-    return text;
-  };
-}
-
-
-/**
- * @ngdoc filter
- * @name json
- * @kind function
- *
- * @description
- *   Allows you to convert a JavaScript object into JSON string.
- *
- *   This filter is mostly useful for debugging. When using the double curly {{value}} notation
- *   the binding is automatically converted to JSON.
- *
- * @param {*} object Any JavaScript object (including arrays and primitive types) to filter.
- * @param {number=} spacing The number of spaces to use per indentation, defaults to 2.
- * @returns {string} JSON string.
- *
- *
- * @example
-   <example>
-     <file name="index.html">
-       <pre id="default-spacing">{{ {'name':'value'} | json }}</pre>
-       <pre id="custom-spacing">{{ {'name':'value'} | json:4 }}</pre>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should jsonify filtered objects', function() {
-         expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n  "name": ?"value"\n}/);
-         expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n    "name": ?"value"\n}/);
-       });
-     </file>
-   </example>
- *
- */
-function jsonFilter() {
-  return function(object, spacing) {
-    if (isUndefined(spacing)) {
-        spacing = 2;
-    }
-    return toJson(object, spacing);
-  };
-}
-
-
-/**
- * @ngdoc filter
- * @name lowercase
- * @kind function
- * @description
- * Converts string to lowercase.
- * @see angular.lowercase
- */
-var lowercaseFilter = valueFn(lowercase);
-
-
-/**
- * @ngdoc filter
- * @name uppercase
- * @kind function
- * @description
- * Converts string to uppercase.
- * @see angular.uppercase
- */
-var uppercaseFilter = valueFn(uppercase);
-
-/**
- * @ngdoc filter
- * @name limitTo
- * @kind function
- *
- * @description
- * Creates a new array or string containing only a specified number of elements. The elements
- * are taken from either the beginning or the end of the source array, string or number, as specified by
- * the value and sign (positive or negative) of `limit`. If a number is used as input, it is
- * converted to a string.
- *
- * @param {Array|string|number} input Source array, string or number to be limited.
- * @param {string|number} limit The length of the returned array or string. If the `limit` number
- *     is positive, `limit` number of items from the beginning of the source array/string are copied.
- *     If the number is negative, `limit` number  of items from the end of the source array/string
- *     are copied. The `limit` will be trimmed if it exceeds `array.length`
- * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array
- *     had less than `limit` elements.
- *
- * @example
-   <example module="limitToExample">
-     <file name="index.html">
-       <script>
-         angular.module('limitToExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.numbers = [1,2,3,4,5,6,7,8,9];
-             $scope.letters = "abcdefghi";
-             $scope.longNumber = 2345432342;
-             $scope.numLimit = 3;
-             $scope.letterLimit = 3;
-             $scope.longNumberLimit = 3;
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Limit {{numbers}} to: <input type="number" step="1" ng-model="numLimit">
-         <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>
-         Limit {{letters}} to: <input type="number" step="1" ng-model="letterLimit">
-         <p>Output letters: {{ letters | limitTo:letterLimit }}</p>
-         Limit {{longNumber}} to: <input type="number" step="1" ng-model="longNumberLimit">
-         <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       var numLimitInput = element(by.model('numLimit'));
-       var letterLimitInput = element(by.model('letterLimit'));
-       var longNumberLimitInput = element(by.model('longNumberLimit'));
-       var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));
-       var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));
-       var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit'));
-
-       it('should limit the number array to first three items', function() {
-         expect(numLimitInput.getAttribute('value')).toBe('3');
-         expect(letterLimitInput.getAttribute('value')).toBe('3');
-         expect(longNumberLimitInput.getAttribute('value')).toBe('3');
-         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');
-         expect(limitedLetters.getText()).toEqual('Output letters: abc');
-         expect(limitedLongNumber.getText()).toEqual('Output long number: 234');
-       });
-
-       // There is a bug in safari and protractor that doesn't like the minus key
-       // it('should update the output when -3 is entered', function() {
-       //   numLimitInput.clear();
-       //   numLimitInput.sendKeys('-3');
-       //   letterLimitInput.clear();
-       //   letterLimitInput.sendKeys('-3');
-       //   longNumberLimitInput.clear();
-       //   longNumberLimitInput.sendKeys('-3');
-       //   expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');
-       //   expect(limitedLetters.getText()).toEqual('Output letters: ghi');
-       //   expect(limitedLongNumber.getText()).toEqual('Output long number: 342');
-       // });
-
-       it('should not exceed the maximum size of input array', function() {
-         numLimitInput.clear();
-         numLimitInput.sendKeys('100');
-         letterLimitInput.clear();
-         letterLimitInput.sendKeys('100');
-         longNumberLimitInput.clear();
-         longNumberLimitInput.sendKeys('100');
-         expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');
-         expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');
-         expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342');
-       });
-     </file>
-   </example>
-*/
-function limitToFilter() {
-  return function(input, limit) {
-    if (isNumber(input)) input = input.toString();
-    if (!isArray(input) && !isString(input)) return input;
-
-    if (Math.abs(Number(limit)) === Infinity) {
-      limit = Number(limit);
-    } else {
-      limit = int(limit);
-    }
-
-    //NaN check on limit
-    if (limit) {
-      return limit > 0 ? input.slice(0, limit) : input.slice(limit);
-    } else {
-      return isString(input) ? "" : [];
-    }
-  };
-}
-
-/**
- * @ngdoc filter
- * @name orderBy
- * @kind function
- *
- * @description
- * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically
- * for strings and numerically for numbers. Note: if you notice numbers are not being sorted
- * correctly, make sure they are actually being saved as numbers and not strings.
- *
- * @param {Array} array The array to sort.
- * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be
- *    used by the comparator to determine the order of elements.
- *
- *    Can be one of:
- *
- *    - `function`: Getter function. The result of this function will be sorted using the
- *      `<`, `=`, `>` operator.
- *    - `string`: An Angular expression. The result of this expression is used to compare elements
- *      (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
- *      3 first characters of a property called `name`). The result of a constant expression
- *      is interpreted as a property name to be used in comparisons (for example `"special name"`
- *      to sort object by the value of their `special name` property). An expression can be
- *      optionally prefixed with `+` or `-` to control ascending or descending sort order
- *      (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array
- *      element itself is used to compare where sorting.
- *    - `Array`: An array of function or string predicates. The first predicate in the array
- *      is used for sorting, but when two items are equivalent, the next predicate is used.
- *
- *    If the predicate is missing or empty then it defaults to `'+'`.
- *
- * @param {boolean=} reverse Reverse the order of the array.
- * @returns {Array} Sorted copy of the source array.
- *
- * @example
-   <example module="orderByExample">
-     <file name="index.html">
-       <script>
-         angular.module('orderByExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.friends =
-                 [{name:'John', phone:'555-1212', age:10},
-                  {name:'Mary', phone:'555-9876', age:19},
-                  {name:'Mike', phone:'555-4321', age:21},
-                  {name:'Adam', phone:'555-5678', age:35},
-                  {name:'Julie', phone:'555-8765', age:29}];
-             $scope.predicate = '-age';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
-         <hr/>
-         [ <a href="" ng-click="predicate=''">unsorted</a> ]
-         <table class="friend">
-           <tr>
-             <th><a href="" ng-click="predicate = 'name'; reverse=false">Name</a>
-                 (<a href="" ng-click="predicate = '-name'; reverse=false">^</a>)</th>
-             <th><a href="" ng-click="predicate = 'phone'; reverse=!reverse">Phone Number</a></th>
-             <th><a href="" ng-click="predicate = 'age'; reverse=!reverse">Age</a></th>
-           </tr>
-           <tr ng-repeat="friend in friends | orderBy:predicate:reverse">
-             <td>{{friend.name}}</td>
-             <td>{{friend.phone}}</td>
-             <td>{{friend.age}}</td>
-           </tr>
-         </table>
-       </div>
-     </file>
-   </example>
- *
- * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the
- * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the
- * desired parameters.
- *
- * Example:
- *
- * @example
-  <example module="orderByExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <table class="friend">
-          <tr>
-            <th><a href="" ng-click="reverse=false;order('name', false)">Name</a>
-              (<a href="" ng-click="order('-name',false)">^</a>)</th>
-            <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th>
-            <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th>
-          </tr>
-          <tr ng-repeat="friend in friends">
-            <td>{{friend.name}}</td>
-            <td>{{friend.phone}}</td>
-            <td>{{friend.age}}</td>
-          </tr>
-        </table>
-      </div>
-    </file>
-
-    <file name="script.js">
-      angular.module('orderByExample', [])
-        .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {
-          var orderBy = $filter('orderBy');
-          $scope.friends = [
-            { name: 'John',    phone: '555-1212',    age: 10 },
-            { name: 'Mary',    phone: '555-9876',    age: 19 },
-            { name: 'Mike',    phone: '555-4321',    age: 21 },
-            { name: 'Adam',    phone: '555-5678',    age: 35 },
-            { name: 'Julie',   phone: '555-8765',    age: 29 }
-          ];
-          $scope.order = function(predicate, reverse) {
-            $scope.friends = orderBy($scope.friends, predicate, reverse);
-          };
-          $scope.order('-age',false);
-        }]);
-    </file>
-</example>
- */
-orderByFilter.$inject = ['$parse'];
-function orderByFilter($parse) {
-  return function(array, sortPredicate, reverseOrder) {
-    if (!(isArrayLike(array))) return array;
-    sortPredicate = isArray(sortPredicate) ? sortPredicate : [sortPredicate];
-    if (sortPredicate.length === 0) { sortPredicate = ['+']; }
-    sortPredicate = sortPredicate.map(function(predicate) {
-      var descending = false, get = predicate || identity;
-      if (isString(predicate)) {
-        if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) {
-          descending = predicate.charAt(0) == '-';
-          predicate = predicate.substring(1);
-        }
-        if (predicate === '') {
-          // Effectively no predicate was passed so we compare identity
-          return reverseComparator(compare, descending);
-        }
-        get = $parse(predicate);
-        if (get.constant) {
-          var key = get();
-          return reverseComparator(function(a, b) {
-            return compare(a[key], b[key]);
-          }, descending);
-        }
-      }
-      return reverseComparator(function(a, b) {
-        return compare(get(a),get(b));
-      }, descending);
-    });
-    return slice.call(array).sort(reverseComparator(comparator, reverseOrder));
-
-    function comparator(o1, o2) {
-      for (var i = 0; i < sortPredicate.length; i++) {
-        var comp = sortPredicate[i](o1, o2);
-        if (comp !== 0) return comp;
-      }
-      return 0;
-    }
-    function reverseComparator(comp, descending) {
-      return descending
-          ? function(a, b) {return comp(b,a);}
-          : comp;
-    }
-
-    function isPrimitive(value) {
-      switch (typeof value) {
-        case 'number': /* falls through */
-        case 'boolean': /* falls through */
-        case 'string':
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    function objectToString(value) {
-      if (value === null) return 'null';
-      if (typeof value.valueOf === 'function') {
-        value = value.valueOf();
-        if (isPrimitive(value)) return value;
-      }
-      if (typeof value.toString === 'function') {
-        value = value.toString();
-        if (isPrimitive(value)) return value;
-      }
-      return '';
-    }
-
-    function compare(v1, v2) {
-      var t1 = typeof v1;
-      var t2 = typeof v2;
-      if (t1 === t2 && t1 === "object") {
-        v1 = objectToString(v1);
-        v2 = objectToString(v2);
-      }
-      if (t1 === t2) {
-        if (t1 === "string") {
-           v1 = v1.toLowerCase();
-           v2 = v2.toLowerCase();
-        }
-        if (v1 === v2) return 0;
-        return v1 < v2 ? -1 : 1;
-      } else {
-        return t1 < t2 ? -1 : 1;
-      }
-    }
-  };
-}
-
-function ngDirective(directive) {
-  if (isFunction(directive)) {
-    directive = {
-      link: directive
-    };
-  }
-  directive.restrict = directive.restrict || 'AC';
-  return valueFn(directive);
-}
-
-/**
- * @ngdoc directive
- * @name a
- * @restrict E
- *
- * @description
- * Modifies the default behavior of the html A tag so that the default action is prevented when
- * the href attribute is empty.
- *
- * This change permits the easy creation of action links with the `ngClick` directive
- * without changing the location or causing page reloads, e.g.:
- * `<a href="" ng-click="list.addItem()">Add Item</a>`
- */
-var htmlAnchorDirective = valueFn({
-  restrict: 'E',
-  compile: function(element, attr) {
-    if (!attr.href && !attr.xlinkHref && !attr.name) {
-      return function(scope, element) {
-        // If the linked element is not an anchor tag anymore, do nothing
-        if (element[0].nodeName.toLowerCase() !== 'a') return;
-
-        // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
-        var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ?
-                   'xlink:href' : 'href';
-        element.on('click', function(event) {
-          // if we have no href url, then don't navigate anywhere.
-          if (!element.attr(href)) {
-            event.preventDefault();
-          }
-        });
-      };
-    }
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngHref
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in an href attribute will
- * make the link go to the wrong URL if the user clicks it before
- * Angular has a chance to replace the `{{hash}}` markup with its
- * value. Until Angular replaces the markup the link will be broken
- * and will most likely return a 404 error. The `ngHref` directive
- * solves this problem.
- *
- * The wrong way to write it:
- * ```html
- * <a href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <a ng-href="http://www.gravatar.com/avatar/{{hash}}">link1</a>
- * ```
- *
- * @element A
- * @param {template} ngHref any string which can contain `{{}}` markup.
- *
- * @example
- * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes
- * in links and their different behaviors:
-    <example>
-      <file name="index.html">
-        <input ng-model="value" /><br />
-        <a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)<br />
-        <a id="link-2" href="" ng-click="value = 2">link 2</a> (link, don't reload)<br />
-        <a id="link-3" ng-href="/{{'123'}}">link 3</a> (link, reload!)<br />
-        <a id="link-4" href="" name="xx" ng-click="value = 4">anchor</a> (link, don't reload)<br />
-        <a id="link-5" name="xxx" ng-click="value = 5">anchor</a> (no link)<br />
-        <a id="link-6" ng-href="{{value}}">link</a> (link, change location)
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should execute ng-click but not reload when href without value', function() {
-          element(by.id('link-1')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('1');
-          expect(element(by.id('link-1')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click but not reload when href empty string', function() {
-          element(by.id('link-2')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('2');
-          expect(element(by.id('link-2')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click and change url when ng-href specified', function() {
-          expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/);
-
-          element(by.id('link-3')).click();
-
-          // At this point, we navigate away from an Angular page, so we need
-          // to use browser.driver to get the base webdriver.
-
-          browser.wait(function() {
-            return browser.driver.getCurrentUrl().then(function(url) {
-              return url.match(/\/123$/);
-            });
-          }, 5000, 'page should navigate to /123');
-        });
-
-        xit('should execute ng-click but not reload when href empty string and name specified', function() {
-          element(by.id('link-4')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('4');
-          expect(element(by.id('link-4')).getAttribute('href')).toBe('');
-        });
-
-        it('should execute ng-click but not reload when no href but name specified', function() {
-          element(by.id('link-5')).click();
-          expect(element(by.model('value')).getAttribute('value')).toEqual('5');
-          expect(element(by.id('link-5')).getAttribute('href')).toBe(null);
-        });
-
-        it('should only change url when only ng-href', function() {
-          element(by.model('value')).clear();
-          element(by.model('value')).sendKeys('6');
-          expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/);
-
-          element(by.id('link-6')).click();
-
-          // At this point, we navigate away from an Angular page, so we need
-          // to use browser.driver to get the base webdriver.
-          browser.wait(function() {
-            return browser.driver.getCurrentUrl().then(function(url) {
-              return url.match(/\/6$/);
-            });
-          }, 5000, 'page should navigate to /6');
-        });
-      </file>
-    </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngSrc
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in a `src` attribute doesn't
- * work right: The browser will fetch from the URL with the literal
- * text `{{hash}}` until Angular replaces the expression inside
- * `{{hash}}`. The `ngSrc` directive solves this problem.
- *
- * The buggy way to write it:
- * ```html
- * <img src="http://www.gravatar.com/avatar/{{hash}}"/>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <img ng-src="http://www.gravatar.com/avatar/{{hash}}"/>
- * ```
- *
- * @element IMG
- * @param {template} ngSrc any string which can contain `{{}}` markup.
- */
-
-/**
- * @ngdoc directive
- * @name ngSrcset
- * @restrict A
- * @priority 99
- *
- * @description
- * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't
- * work right: The browser will fetch from the URL with the literal
- * text `{{hash}}` until Angular replaces the expression inside
- * `{{hash}}`. The `ngSrcset` directive solves this problem.
- *
- * The buggy way to write it:
- * ```html
- * <img srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
- * ```
- *
- * The correct way to write it:
- * ```html
- * <img ng-srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
- * ```
- *
- * @element IMG
- * @param {template} ngSrcset any string which can contain `{{}}` markup.
- */
-
-/**
- * @ngdoc directive
- * @name ngDisabled
- * @restrict A
- * @priority 100
- *
- * @description
- *
- * We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:
- * ```html
- * <div ng-init="scope = { isDisabled: false }">
- *  <button disabled="{{scope.isDisabled}}">Disabled</button>
- * </div>
- * ```
- *
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as disabled. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngDisabled` directive solves this problem for the `disabled` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- *
- * @example
-    <example>
-      <file name="index.html">
-        Click me to toggle: <input type="checkbox" ng-model="checked"><br/>
-        <button ng-model="button" ng-disabled="checked">Button</button>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should toggle button', function() {
-          expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();
-          element(by.model('checked')).click();
-          expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
- *     then special attribute "disabled" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngChecked
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as checked. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngChecked` directive solves this problem for the `checked` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-    <example>
-      <file name="index.html">
-        Check me to check both: <input type="checkbox" ng-model="master"><br/>
-        <input id="checkSlave" type="checkbox" ng-checked="master">
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should check both checkBoxes', function() {
-          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();
-          element(by.model('master')).click();
-          expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngChecked If the {@link guide/expression expression} is truthy,
- *     then special attribute "checked" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngReadonly
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as readonly. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngReadonly` directive solves this problem for the `readonly` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-    <example>
-      <file name="index.html">
-        Check me to make text readonly: <input type="checkbox" ng-model="checked"><br/>
-        <input type="text" ng-readonly="checked" value="I'm Angular"/>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should toggle readonly attr', function() {
-          expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
-          element(by.model('checked')).click();
-          expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element INPUT
- * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy,
- *     then special attribute "readonly" will be set on the element
- */
-
-
-/**
- * @ngdoc directive
- * @name ngSelected
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as selected. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngSelected` directive solves this problem for the `selected` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- *
- * @example
-    <example>
-      <file name="index.html">
-        Check me to select: <input type="checkbox" ng-model="selected"><br/>
-        <select>
-          <option>Hello!</option>
-          <option id="greet" ng-selected="selected">Greetings!</option>
-        </select>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should select Greetings!', function() {
-          expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();
-          element(by.model('selected')).click();
-          expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();
-        });
-      </file>
-    </example>
- *
- * @element OPTION
- * @param {expression} ngSelected If the {@link guide/expression expression} is truthy,
- *     then special attribute "selected" will be set on the element
- */
-
-/**
- * @ngdoc directive
- * @name ngOpen
- * @restrict A
- * @priority 100
- *
- * @description
- * The HTML specification does not require browsers to preserve the values of boolean attributes
- * such as open. (Their presence means true and their absence means false.)
- * If we put an Angular interpolation expression into such an attribute then the
- * binding information would be lost when the browser removes the attribute.
- * The `ngOpen` directive solves this problem for the `open` attribute.
- * This complementary directive is not removed by the browser and so provides
- * a permanent reliable place to store the binding information.
- * @example
-     <example>
-       <file name="index.html">
-         Check me check multiple: <input type="checkbox" ng-model="open"><br/>
-         <details id="details" ng-open="open">
-            <summary>Show/Hide me</summary>
-         </details>
-       </file>
-       <file name="protractor.js" type="protractor">
-         it('should toggle open', function() {
-           expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
-           element(by.model('open')).click();
-           expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
-         });
-       </file>
-     </example>
- *
- * @element DETAILS
- * @param {expression} ngOpen If the {@link guide/expression expression} is truthy,
- *     then special attribute "open" will be set on the element
- */
-
-var ngAttributeAliasDirectives = {};
-
-
-// boolean attrs are evaluated
-forEach(BOOLEAN_ATTR, function(propName, attrName) {
-  // binding to multiple is not supported
-  if (propName == "multiple") return;
-
-  var normalized = directiveNormalize('ng-' + attrName);
-  ngAttributeAliasDirectives[normalized] = function() {
-    return {
-      restrict: 'A',
-      priority: 100,
-      link: function(scope, element, attr) {
-        scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
-          attr.$set(attrName, !!value);
-        });
-      }
-    };
-  };
-});
-
-// aliased input attrs are evaluated
-forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {
-  ngAttributeAliasDirectives[ngAttr] = function() {
-    return {
-      priority: 100,
-      link: function(scope, element, attr) {
-        //special case ngPattern when a literal regular expression value
-        //is used as the expression (this way we don't have to watch anything).
-        if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) == "/") {
-          var match = attr.ngPattern.match(REGEX_STRING_REGEXP);
-          if (match) {
-            attr.$set("ngPattern", new RegExp(match[1], match[2]));
-            return;
-          }
-        }
-
-        scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {
-          attr.$set(ngAttr, value);
-        });
-      }
-    };
-  };
-});
-
-// ng-src, ng-srcset, ng-href are interpolated
-forEach(['src', 'srcset', 'href'], function(attrName) {
-  var normalized = directiveNormalize('ng-' + attrName);
-  ngAttributeAliasDirectives[normalized] = function() {
-    return {
-      priority: 99, // it needs to run after the attributes are interpolated
-      link: function(scope, element, attr) {
-        var propName = attrName,
-            name = attrName;
-
-        if (attrName === 'href' &&
-            toString.call(element.prop('href')) === '[object SVGAnimatedString]') {
-          name = 'xlinkHref';
-          attr.$attr[name] = 'xlink:href';
-          propName = null;
-        }
-
-        attr.$observe(normalized, function(value) {
-          if (!value) {
-            if (attrName === 'href') {
-              attr.$set(name, null);
-            }
-            return;
-          }
-
-          attr.$set(name, value);
-
-          // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist
-          // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need
-          // to set the property as well to achieve the desired effect.
-          // we use attr[attrName] value since $set can sanitize the url.
-          if (msie && propName) element.prop(propName, attr[name]);
-        });
-      }
-    };
-  };
-});
-
-/* global -nullFormCtrl, -SUBMITTED_CLASS, addSetValidityMethod: true
- */
-var nullFormCtrl = {
-  $addControl: noop,
-  $$renameControl: nullFormRenameControl,
-  $removeControl: noop,
-  $setValidity: noop,
-  $setDirty: noop,
-  $setPristine: noop,
-  $setSubmitted: noop
-},
-SUBMITTED_CLASS = 'ng-submitted';
-
-function nullFormRenameControl(control, name) {
-  control.$name = name;
-}
-
-/**
- * @ngdoc type
- * @name form.FormController
- *
- * @property {boolean} $pristine True if user has not interacted with the form yet.
- * @property {boolean} $dirty True if user has already interacted with the form.
- * @property {boolean} $valid True if all of the containing forms and controls are valid.
- * @property {boolean} $invalid True if at least one containing control or form is invalid.
- * @property {boolean} $submitted True if user has submitted the form even if its invalid.
- *
- * @property {Object} $error Is an object hash, containing references to controls or
- *  forms with failing validators, where:
- *
- *  - keys are validation tokens (error names),
- *  - values are arrays of controls or forms that have a failing validator for given error name.
- *
- *  Built-in validation tokens:
- *
- *  - `email`
- *  - `max`
- *  - `maxlength`
- *  - `min`
- *  - `minlength`
- *  - `number`
- *  - `pattern`
- *  - `required`
- *  - `url`
- *  - `date`
- *  - `datetimelocal`
- *  - `time`
- *  - `week`
- *  - `month`
- *
- * @description
- * `FormController` keeps track of all its controls and nested forms as well as the state of them,
- * such as being valid/invalid or dirty/pristine.
- *
- * Each {@link ng.directive:form form} directive creates an instance
- * of `FormController`.
- *
- */
-//asks for $scope to fool the BC controller module
-FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate'];
-function FormController(element, attrs, $scope, $animate, $interpolate) {
-  var form = this,
-      controls = [];
-
-  var parentForm = form.$$parentForm = element.parent().controller('form') || nullFormCtrl;
-
-  // init state
-  form.$error = {};
-  form.$$success = {};
-  form.$pending = undefined;
-  form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope);
-  form.$dirty = false;
-  form.$pristine = true;
-  form.$valid = true;
-  form.$invalid = false;
-  form.$submitted = false;
-
-  parentForm.$addControl(form);
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$rollbackViewValue
-   *
-   * @description
-   * Rollback all form controls pending updates to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. This method is typically needed by the reset button of
-   * a form that uses `ng-model-options` to pend updates.
-   */
-  form.$rollbackViewValue = function() {
-    forEach(controls, function(control) {
-      control.$rollbackViewValue();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$commitViewValue
-   *
-   * @description
-   * Commit all form controls pending updates to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. This method is rarely needed as `NgModelController`
-   * usually handles calling this in response to input events.
-   */
-  form.$commitViewValue = function() {
-    forEach(controls, function(control) {
-      control.$commitViewValue();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$addControl
-   *
-   * @description
-   * Register a control with the form.
-   *
-   * Input elements using ngModelController do this automatically when they are linked.
-   */
-  form.$addControl = function(control) {
-    // Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
-    // and not added to the scope.  Now we throw an error.
-    assertNotHasOwnProperty(control.$name, 'input');
-    controls.push(control);
-
-    if (control.$name) {
-      form[control.$name] = control;
-    }
-  };
-
-  // Private API: rename a form control
-  form.$$renameControl = function(control, newName) {
-    var oldName = control.$name;
-
-    if (form[oldName] === control) {
-      delete form[oldName];
-    }
-    form[newName] = control;
-    control.$name = newName;
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$removeControl
-   *
-   * @description
-   * Deregister a control from the form.
-   *
-   * Input elements using ngModelController do this automatically when they are destroyed.
-   */
-  form.$removeControl = function(control) {
-    if (control.$name && form[control.$name] === control) {
-      delete form[control.$name];
-    }
-    forEach(form.$pending, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-    forEach(form.$error, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-    forEach(form.$$success, function(value, name) {
-      form.$setValidity(name, null, control);
-    });
-
-    arrayRemove(controls, control);
-  };
-
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setValidity
-   *
-   * @description
-   * Sets the validity of a form control.
-   *
-   * This method will also propagate to parent forms.
-   */
-  addSetValidityMethod({
-    ctrl: this,
-    $element: element,
-    set: function(object, property, controller) {
-      var list = object[property];
-      if (!list) {
-        object[property] = [controller];
-      } else {
-        var index = list.indexOf(controller);
-        if (index === -1) {
-          list.push(controller);
-        }
-      }
-    },
-    unset: function(object, property, controller) {
-      var list = object[property];
-      if (!list) {
-        return;
-      }
-      arrayRemove(list, controller);
-      if (list.length === 0) {
-        delete object[property];
-      }
-    },
-    parentForm: parentForm,
-    $animate: $animate
-  });
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setDirty
-   *
-   * @description
-   * Sets the form to a dirty state.
-   *
-   * This method can be called to add the 'ng-dirty' class and set the form to a dirty
-   * state (ng-dirty class). This method will also propagate to parent forms.
-   */
-  form.$setDirty = function() {
-    $animate.removeClass(element, PRISTINE_CLASS);
-    $animate.addClass(element, DIRTY_CLASS);
-    form.$dirty = true;
-    form.$pristine = false;
-    parentForm.$setDirty();
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setPristine
-   *
-   * @description
-   * Sets the form to its pristine state.
-   *
-   * This method can be called to remove the 'ng-dirty' class and set the form to its pristine
-   * state (ng-pristine class). This method will also propagate to all the controls contained
-   * in this form.
-   *
-   * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after
-   * saving or resetting it.
-   */
-  form.$setPristine = function() {
-    $animate.setClass(element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS);
-    form.$dirty = false;
-    form.$pristine = true;
-    form.$submitted = false;
-    forEach(controls, function(control) {
-      control.$setPristine();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setUntouched
-   *
-   * @description
-   * Sets the form to its untouched state.
-   *
-   * This method can be called to remove the 'ng-touched' class and set the form controls to their
-   * untouched state (ng-untouched class).
-   *
-   * Setting a form controls back to their untouched state is often useful when setting the form
-   * back to its pristine state.
-   */
-  form.$setUntouched = function() {
-    forEach(controls, function(control) {
-      control.$setUntouched();
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name form.FormController#$setSubmitted
-   *
-   * @description
-   * Sets the form to its submitted state.
-   */
-  form.$setSubmitted = function() {
-    $animate.addClass(element, SUBMITTED_CLASS);
-    form.$submitted = true;
-    parentForm.$setSubmitted();
-  };
-}
-
-/**
- * @ngdoc directive
- * @name ngForm
- * @restrict EAC
- *
- * @description
- * Nestable alias of {@link ng.directive:form `form`} directive. HTML
- * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a
- * sub-group of controls needs to be determined.
- *
- * Note: the purpose of `ngForm` is to group controls,
- * but not to be a replacement for the `<form>` tag with all of its capabilities
- * (e.g. posting to the server, ...).
- *
- * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into
- *                       related scope, under this name.
- *
- */
-
- /**
- * @ngdoc directive
- * @name form
- * @restrict E
- *
- * @description
- * Directive that instantiates
- * {@link form.FormController FormController}.
- *
- * If the `name` attribute is specified, the form controller is published onto the current scope under
- * this name.
- *
- * # Alias: {@link ng.directive:ngForm `ngForm`}
- *
- * In Angular forms can be nested. This means that the outer form is valid when all of the child
- * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so
- * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to
- * `<form>` but can be nested.  This allows you to have nested forms, which is very useful when
- * using Angular validation directives in forms that are dynamically generated using the
- * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name`
- * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an
- * `ngForm` directive and nest these in an outer `form` element.
- *
- *
- * # CSS classes
- *  - `ng-valid` is set if the form is valid.
- *  - `ng-invalid` is set if the form is invalid.
- *  - `ng-pristine` is set if the form is pristine.
- *  - `ng-dirty` is set if the form is dirty.
- *  - `ng-submitted` is set if the form was submitted.
- *
- * Keep in mind that ngAnimate can detect each of these classes when added and removed.
- *
- *
- * # Submitting a form and preventing the default action
- *
- * Since the role of forms in client-side Angular applications is different than in classical
- * roundtrip apps, it is desirable for the browser not to translate the form submission into a full
- * page reload that sends the data to the server. Instead some javascript logic should be triggered
- * to handle the form submission in an application-specific way.
- *
- * For this reason, Angular prevents the default action (form submission to the server) unless the
- * `<form>` element has an `action` attribute specified.
- *
- * You can use one of the following two ways to specify what javascript method should be called when
- * a form is submitted:
- *
- * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element
- * - {@link ng.directive:ngClick ngClick} directive on the first
-  *  button or input field of type submit (input[type=submit])
- *
- * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit}
- * or {@link ng.directive:ngClick ngClick} directives.
- * This is because of the following form submission rules in the HTML specification:
- *
- * - If a form has only one input field then hitting enter in this field triggers form submit
- * (`ngSubmit`)
- * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter
- * doesn't trigger submit
- * - if a form has one or more input fields and one or more buttons or input[type=submit] then
- * hitting enter in any of the input fields will trigger the click handler on the *first* button or
- * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`)
- *
- * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is
- * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
- * to have access to the updated model.
- *
- * ## Animation Hooks
- *
- * Animations in ngForm are triggered when any of the associated CSS classes are added and removed.
- * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any
- * other validations that are performed within the form. Animations in ngForm are similar to how
- * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well
- * as JS animations.
- *
- * The following example shows a simple way to utilize CSS transitions to style a form element
- * that has been rendered as invalid after it has been validated:
- *
- * <pre>
- * //be sure to include ngAnimate as a module to hook into more
- * //advanced animations
- * .my-form {
- *   transition:0.5s linear all;
- *   background: white;
- * }
- * .my-form.ng-invalid {
- *   background: red;
- *   color:white;
- * }
- * </pre>
- *
- * @example
-    <example deps="angular-animate.js" animations="true" fixBase="true" module="formExample">
-      <file name="index.html">
-       <script>
-         angular.module('formExample', [])
-           .controller('FormController', ['$scope', function($scope) {
-             $scope.userType = 'guest';
-           }]);
-       </script>
-       <style>
-        .my-form {
-          -webkit-transition:all linear 0.5s;
-          transition:all linear 0.5s;
-          background: transparent;
-        }
-        .my-form.ng-invalid {
-          background: red;
-        }
-       </style>
-       <form name="myForm" ng-controller="FormController" class="my-form">
-         userType: <input name="input" ng-model="userType" required>
-         <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
-         <tt>userType = {{userType}}</tt><br>
-         <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br>
-         <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br>
-         <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
-         <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
-        </form>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should initialize to model', function() {
-          var userType = element(by.binding('userType'));
-          var valid = element(by.binding('myForm.input.$valid'));
-
-          expect(userType.getText()).toContain('guest');
-          expect(valid.getText()).toContain('true');
-        });
-
-        it('should be invalid if empty', function() {
-          var userType = element(by.binding('userType'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var userInput = element(by.model('userType'));
-
-          userInput.clear();
-          userInput.sendKeys('');
-
-          expect(userType.getText()).toEqual('userType =');
-          expect(valid.getText()).toContain('false');
-        });
-      </file>
-    </example>
- *
- * @param {string=} name Name of the form. If specified, the form controller will be published into
- *                       related scope, under this name.
- */
-var formDirectiveFactory = function(isNgForm) {
-  return ['$timeout', function($timeout) {
-    var formDirective = {
-      name: 'form',
-      restrict: isNgForm ? 'EAC' : 'E',
-      controller: FormController,
-      compile: function ngFormCompile(formElement) {
-        // Setup initial state of the control
-        formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
-
-        return {
-          pre: function ngFormPreLink(scope, formElement, attr, controller) {
-            // if `action` attr is not present on the form, prevent the default action (submission)
-            if (!('action' in attr)) {
-              // we can't use jq events because if a form is destroyed during submission the default
-              // action is not prevented. see #1238
-              //
-              // IE 9 is not affected because it doesn't fire a submit event and try to do a full
-              // page reload if the form was destroyed by submission of the form via a click handler
-              // on a button in the form. Looks like an IE9 specific bug.
-              var handleFormSubmission = function(event) {
-                scope.$apply(function() {
-                  controller.$commitViewValue();
-                  controller.$setSubmitted();
-                });
-
-                event.preventDefault();
-              };
-
-              addEventListenerFn(formElement[0], 'submit', handleFormSubmission);
-
-              // unregister the preventDefault listener so that we don't not leak memory but in a
-              // way that will achieve the prevention of the default action.
-              formElement.on('$destroy', function() {
-                $timeout(function() {
-                  removeEventListenerFn(formElement[0], 'submit', handleFormSubmission);
-                }, 0, false);
-              });
-            }
-
-            var parentFormCtrl = controller.$$parentForm,
-                alias = controller.$name;
-
-            if (alias) {
-              setter(scope, null, alias, controller, alias);
-              attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) {
-                if (alias === newValue) return;
-                setter(scope, null, alias, undefined, alias);
-                alias = newValue;
-                setter(scope, null, alias, controller, alias);
-                parentFormCtrl.$$renameControl(controller, alias);
-              });
-            }
-            formElement.on('$destroy', function() {
-              parentFormCtrl.$removeControl(controller);
-              if (alias) {
-                setter(scope, null, alias, undefined, alias);
-              }
-              extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards
-            });
-          }
-        };
-      }
-    };
-
-    return formDirective;
-  }];
-};
-
-var formDirective = formDirectiveFactory();
-var ngFormDirective = formDirectiveFactory(true);
-
-/* global VALID_CLASS: false,
-  INVALID_CLASS: false,
-  PRISTINE_CLASS: false,
-  DIRTY_CLASS: false,
-  UNTOUCHED_CLASS: false,
-  TOUCHED_CLASS: false,
-  $ngModelMinErr: false,
-*/
-
-// Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231
-var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
-var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
-var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
-var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;
-var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/;
-var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
-var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/;
-var MONTH_REGEXP = /^(\d{4})-(\d\d)$/;
-var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
-
-var inputType = {
-
-  /**
-   * @ngdoc input
-   * @name input[text]
-   *
-   * @description
-   * Standard HTML text input with angular data binding, inherited by most of the `input` elements.
-   *
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Adds `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
-   *    This parameter is ignored for input[type=password] controls, which will never trim the
-   *    input.
-   *
-   * @example
-      <example name="text-input-directive" module="textInputExample">
-        <file name="index.html">
-         <script>
-           angular.module('textInputExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.example = {
-                 text: 'guest',
-                 word: /^\s*\w*\s*$/
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Single word: <input type="text" name="input" ng-model="example.text"
-                               ng-pattern="example.word" required ng-trim="false">
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.pattern">
-             Single word only!</span>
-
-           <tt>text = {{example.text}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('example.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('example.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('guest');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if multi word', function() {
-            input.clear();
-            input.sendKeys('hello world');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'text': textInputType,
-
-    /**
-     * @ngdoc input
-     * @name input[date]
-     *
-     * @description
-     * Input with date validation and transformation. In browsers that do not yet support
-     * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601
-     * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many
-     * modern browsers do not yet support this input type, it is important to provide cues to users on the
-     * expected input format via a placeholder or label.
-     *
-     * The model must always be a Date object, otherwise Angular will throw an error.
-     * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-     *
-     * The timezone to be used to read/write the `Date` instance in the model can be defined using
-     * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-     *
-     * @param {string} ngModel Assignable angular expression to data-bind to.
-     * @param {string=} name Property name of the form under which the control is published.
-     * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-     * valid ISO date string (yyyy-MM-dd).
-     * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-     * a valid ISO date string (yyyy-MM-dd).
-     * @param {string=} required Sets `required` validation error key if the value is not entered.
-     * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-     *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-     *    `required` when you want to data-bind to the `required` attribute.
-     * @param {string=} ngChange Angular expression to be executed when input changes due to user
-     *    interaction with the input element.
-     *
-     * @example
-     <example name="date-input-directive" module="dateInputExample">
-     <file name="index.html">
-       <script>
-          angular.module('dateInputExample', [])
-            .controller('DateController', ['$scope', function($scope) {
-              $scope.example = {
-                value: new Date(2013, 9, 22)
-              };
-            }]);
-       </script>
-       <form name="myForm" ng-controller="DateController as dateCtrl">
-          Pick a date in 2013:
-          <input type="date" id="exampleInput" name="input" ng-model="example.value"
-              placeholder="yyyy-MM-dd" min="2013-01-01" max="2013-12-31" required />
-          <span class="error" ng-show="myForm.input.$error.required">
-              Required!</span>
-          <span class="error" ng-show="myForm.input.$error.date">
-              Not a valid date!</span>
-           <tt>value = {{example.value | date: "yyyy-MM-dd"}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-       </form>
-     </file>
-     <file name="protractor.js" type="protractor">
-        var value = element(by.binding('example.value | date: "yyyy-MM-dd"'));
-        var valid = element(by.binding('myForm.input.$valid'));
-        var input = element(by.model('example.value'));
-
-        // currently protractor/webdriver does not support
-        // sending keys to all known HTML5 input controls
-        // for various browsers (see https://github.com/angular/protractor/issues/562).
-        function setInput(val) {
-          // set the value of the element and force validation.
-          var scr = "var ipt = document.getElementById('exampleInput'); " +
-          "ipt.value = '" + val + "';" +
-          "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-          browser.executeScript(scr);
-        }
-
-        it('should initialize to model', function() {
-          expect(value.getText()).toContain('2013-10-22');
-          expect(valid.getText()).toContain('myForm.input.$valid = true');
-        });
-
-        it('should be invalid if empty', function() {
-          setInput('');
-          expect(value.getText()).toEqual('value =');
-          expect(valid.getText()).toContain('myForm.input.$valid = false');
-        });
-
-        it('should be invalid if over max', function() {
-          setInput('2015-01-01');
-          expect(value.getText()).toContain('');
-          expect(valid.getText()).toContain('myForm.input.$valid = false');
-        });
-     </file>
-     </example>
-     */
-  'date': createDateInputType('date', DATE_REGEXP,
-         createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']),
-         'yyyy-MM-dd'),
-
-   /**
-    * @ngdoc input
-    * @name input[datetime-local]
-    *
-    * @description
-    * Input with datetime validation and transformation. In browsers that do not yet support
-    * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-    * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`.
-    *
-    * The model must always be a Date object, otherwise Angular will throw an error.
-    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-    *
-    * The timezone to be used to read/write the `Date` instance in the model can be defined using
-    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-    *
-    * @param {string} ngModel Assignable angular expression to data-bind to.
-    * @param {string=} name Property name of the form under which the control is published.
-    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-    * valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
-    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-    * a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss).
-    * @param {string=} required Sets `required` validation error key if the value is not entered.
-    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-    *    `required` when you want to data-bind to the `required` attribute.
-    * @param {string=} ngChange Angular expression to be executed when input changes due to user
-    *    interaction with the input element.
-    *
-    * @example
-    <example name="datetimelocal-input-directive" module="dateExample">
-    <file name="index.html">
-      <script>
-        angular.module('dateExample', [])
-          .controller('DateController', ['$scope', function($scope) {
-            $scope.example = {
-              value: new Date(2010, 11, 28, 14, 57)
-            };
-          }]);
-      </script>
-      <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a date between in 2013:
-        <input type="datetime-local" id="exampleInput" name="input" ng-model="example.value"
-            placeholder="yyyy-MM-ddTHH:mm:ss" min="2001-01-01T00:00:00" max="2013-12-31T00:00:00" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.datetimelocal">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2010-12-28T14:57:00');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-01-01T23:59:00');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-    </file>
-    </example>
-    */
-  'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP,
-      createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']),
-      'yyyy-MM-ddTHH:mm:ss.sss'),
-
-  /**
-   * @ngdoc input
-   * @name input[time]
-   *
-   * @description
-   * Input with time validation and transformation. In browsers that do not yet support
-   * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-   * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a
-   * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`.
-   *
-   * The model must always be a Date object, otherwise Angular will throw an error.
-   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-   *
-   * The timezone to be used to read/write the `Date` instance in the model can be defined using
-   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-   * valid ISO time format (HH:mm:ss).
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be a
-   * valid ISO time format (HH:mm:ss).
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-   <example name="time-input-directive" module="timeExample">
-   <file name="index.html">
-     <script>
-      angular.module('timeExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(1970, 0, 1, 14, 57, 0)
-          };
-        }]);
-     </script>
-     <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a between 8am and 5pm:
-        <input type="time" id="exampleInput" name="input" ng-model="example.value"
-            placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.time">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "HH:mm:ss"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-     </form>
-   </file>
-   <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "HH:mm:ss"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('14:57:00');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('23:59:00');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-   </file>
-   </example>
-   */
-  'time': createDateInputType('time', TIME_REGEXP,
-      createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']),
-     'HH:mm:ss.sss'),
-
-   /**
-    * @ngdoc input
-    * @name input[week]
-    *
-    * @description
-    * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support
-    * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-    * week format (yyyy-W##), for example: `2013-W02`.
-    *
-    * The model must always be a Date object, otherwise Angular will throw an error.
-    * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-    *
-    * The timezone to be used to read/write the `Date` instance in the model can be defined using
-    * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-    *
-    * @param {string} ngModel Assignable angular expression to data-bind to.
-    * @param {string=} name Property name of the form under which the control is published.
-    * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a
-    * valid ISO week format (yyyy-W##).
-    * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be
-    * a valid ISO week format (yyyy-W##).
-    * @param {string=} required Sets `required` validation error key if the value is not entered.
-    * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-    *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-    *    `required` when you want to data-bind to the `required` attribute.
-    * @param {string=} ngChange Angular expression to be executed when input changes due to user
-    *    interaction with the input element.
-    *
-    * @example
-    <example name="week-input-directive" module="weekExample">
-    <file name="index.html">
-      <script>
-      angular.module('weekExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(2013, 0, 3)
-          };
-        }]);
-      </script>
-      <form name="myForm" ng-controller="DateController as dateCtrl">
-        Pick a date between in 2013:
-        <input id="exampleInput" type="week" name="input" ng-model="example.value"
-            placeholder="YYYY-W##" min="2012-W32" max="2013-W52" required />
-        <span class="error" ng-show="myForm.input.$error.required">
-            Required!</span>
-        <span class="error" ng-show="myForm.input.$error.week">
-            Not a valid date!</span>
-        <tt>value = {{example.value | date: "yyyy-Www"}}</tt><br/>
-        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-Www"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2013-W01');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-W01');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-    </file>
-    </example>
-    */
-  'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'),
-
-  /**
-   * @ngdoc input
-   * @name input[month]
-   *
-   * @description
-   * Input with month validation and transformation. In browsers that do not yet support
-   * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601
-   * month format (yyyy-MM), for example: `2009-01`.
-   *
-   * The model must always be a Date object, otherwise Angular will throw an error.
-   * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string.
-   * If the model is not set to the first of the month, the next view to model update will set it
-   * to the first of the month.
-   *
-   * The timezone to be used to read/write the `Date` instance in the model can be defined using
-   * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be
-   * a valid ISO month format (yyyy-MM).
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must
-   * be a valid ISO month format (yyyy-MM).
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-   <example name="month-input-directive" module="monthExample">
-   <file name="index.html">
-     <script>
-      angular.module('monthExample', [])
-        .controller('DateController', ['$scope', function($scope) {
-          $scope.example = {
-            value: new Date(2013, 9, 1)
-          };
-        }]);
-     </script>
-     <form name="myForm" ng-controller="DateController as dateCtrl">
-       Pick a month in 2013:
-       <input id="exampleInput" type="month" name="input" ng-model="example.value"
-          placeholder="yyyy-MM" min="2013-01" max="2013-12" required />
-       <span class="error" ng-show="myForm.input.$error.required">
-          Required!</span>
-       <span class="error" ng-show="myForm.input.$error.month">
-          Not a valid month!</span>
-       <tt>value = {{example.value | date: "yyyy-MM"}}</tt><br/>
-       <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-       <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-       <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-       <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-     </form>
-   </file>
-   <file name="protractor.js" type="protractor">
-      var value = element(by.binding('example.value | date: "yyyy-MM"'));
-      var valid = element(by.binding('myForm.input.$valid'));
-      var input = element(by.model('example.value'));
-
-      // currently protractor/webdriver does not support
-      // sending keys to all known HTML5 input controls
-      // for various browsers (https://github.com/angular/protractor/issues/562).
-      function setInput(val) {
-        // set the value of the element and force validation.
-        var scr = "var ipt = document.getElementById('exampleInput'); " +
-        "ipt.value = '" + val + "';" +
-        "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });";
-        browser.executeScript(scr);
-      }
-
-      it('should initialize to model', function() {
-        expect(value.getText()).toContain('2013-10');
-        expect(valid.getText()).toContain('myForm.input.$valid = true');
-      });
-
-      it('should be invalid if empty', function() {
-        setInput('');
-        expect(value.getText()).toEqual('value =');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-
-      it('should be invalid if over max', function() {
-        setInput('2015-01');
-        expect(value.getText()).toContain('');
-        expect(valid.getText()).toContain('myForm.input.$valid = false');
-      });
-   </file>
-   </example>
-   */
-  'month': createDateInputType('month', MONTH_REGEXP,
-     createDateParser(MONTH_REGEXP, ['yyyy', 'MM']),
-     'yyyy-MM'),
-
-  /**
-   * @ngdoc input
-   * @name input[number]
-   *
-   * @description
-   * Text input with number validation and transformation. Sets the `number` validation
-   * error if not a valid number.
-   *
-   * The model must always be a number, otherwise Angular will throw an error.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.
-   * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="number-input-directive" module="numberExample">
-        <file name="index.html">
-         <script>
-           angular.module('numberExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.example = {
-                 value: 12
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Number: <input type="number" name="input" ng-model="example.value"
-                          min="0" max="99" required>
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.number">
-             Not valid number!</span>
-           <tt>value = {{example.value}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var value = element(by.binding('example.value'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('example.value'));
-
-          it('should initialize to model', function() {
-            expect(value.getText()).toContain('12');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-            expect(value.getText()).toEqual('value =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if over max', function() {
-            input.clear();
-            input.sendKeys('123');
-            expect(value.getText()).toEqual('value =');
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'number': numberInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[url]
-   *
-   * @description
-   * Text input with URL validation. Sets the `url` validation error key if the content is not a
-   * valid URL.
-   *
-   * <div class="alert alert-warning">
-   * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex
-   * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify
-   * the built-in validators (see the {@link guide/forms Forms guide})
-   * </div>
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="url-input-directive" module="urlExample">
-        <file name="index.html">
-         <script>
-           angular.module('urlExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.url = {
-                 text: 'http://google.com'
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           URL: <input type="url" name="input" ng-model="url.text" required>
-           <span class="error" ng-show="myForm.input.$error.required">
-             Required!</span>
-           <span class="error" ng-show="myForm.input.$error.url">
-             Not valid url!</span>
-           <tt>text = {{url.text}}</tt><br/>
-           <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-           <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-           <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-           <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-           <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('url.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('url.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('http://google.com');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if not url', function() {
-            input.clear();
-            input.sendKeys('box');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'url': urlInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[email]
-   *
-   * @description
-   * Text input with email validation. Sets the `email` validation error key if not a valid email
-   * address.
-   *
-   * <div class="alert alert-warning">
-   * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex
-   * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can
-   * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide})
-   * </div>
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} required Sets `required` validation error key if the value is not entered.
-   * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
-   *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
-   *    `required` when you want to data-bind to the `required` attribute.
-   * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
-   *    minlength.
-   * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
-   *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
-   *    any length.
-   * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
-   *    that contains the regular expression body that will be converted to a regular expression
-   *    as in the ngPattern directive.
-   * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel value does not match
-   *    a RegExp found by evaluating the Angular expression given in the attribute value.
-   *    If the expression evaluates to a RegExp object then this is used directly.
-   *    If the expression is a string then it will be converted to a RegExp after wrapping it in `^` and `$`
-   *    characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="email-input-directive" module="emailExample">
-        <file name="index.html">
-         <script>
-           angular.module('emailExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.email = {
-                 text: 'me@example.com'
-               };
-             }]);
-         </script>
-           <form name="myForm" ng-controller="ExampleController">
-             Email: <input type="email" name="input" ng-model="email.text" required>
-             <span class="error" ng-show="myForm.input.$error.required">
-               Required!</span>
-             <span class="error" ng-show="myForm.input.$error.email">
-               Not valid email!</span>
-             <tt>text = {{email.text}}</tt><br/>
-             <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
-             <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
-             <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
-             <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
-             <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
-           </form>
-         </file>
-        <file name="protractor.js" type="protractor">
-          var text = element(by.binding('email.text'));
-          var valid = element(by.binding('myForm.input.$valid'));
-          var input = element(by.model('email.text'));
-
-          it('should initialize to model', function() {
-            expect(text.getText()).toContain('me@example.com');
-            expect(valid.getText()).toContain('true');
-          });
-
-          it('should be invalid if empty', function() {
-            input.clear();
-            input.sendKeys('');
-            expect(text.getText()).toEqual('text =');
-            expect(valid.getText()).toContain('false');
-          });
-
-          it('should be invalid if not email', function() {
-            input.clear();
-            input.sendKeys('xxx');
-
-            expect(valid.getText()).toContain('false');
-          });
-        </file>
-      </example>
-   */
-  'email': emailInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[radio]
-   *
-   * @description
-   * HTML radio button.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string} value The value to which the expression should be set when selected.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   * @param {string} ngValue Angular expression which sets the value to which the expression should
-   *    be set when selected.
-   *
-   * @example
-      <example name="radio-input-directive" module="radioExample">
-        <file name="index.html">
-         <script>
-           angular.module('radioExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.color = {
-                 name: 'blue'
-               };
-               $scope.specialValue = {
-                 "id": "12345",
-                 "value": "green"
-               };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           <input type="radio" ng-model="color.name" value="red">  Red <br/>
-           <input type="radio" ng-model="color.name" ng-value="specialValue"> Green <br/>
-           <input type="radio" ng-model="color.name" value="blue"> Blue <br/>
-           <tt>color = {{color.name | json}}</tt><br/>
-          </form>
-          Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
-        </file>
-        <file name="protractor.js" type="protractor">
-          it('should change state', function() {
-            var color = element(by.binding('color.name'));
-
-            expect(color.getText()).toContain('blue');
-
-            element.all(by.model('color.name')).get(0).click();
-
-            expect(color.getText()).toContain('red');
-          });
-        </file>
-      </example>
-   */
-  'radio': radioInputType,
-
-
-  /**
-   * @ngdoc input
-   * @name input[checkbox]
-   *
-   * @description
-   * HTML checkbox.
-   *
-   * @param {string} ngModel Assignable angular expression to data-bind to.
-   * @param {string=} name Property name of the form under which the control is published.
-   * @param {expression=} ngTrueValue The value to which the expression should be set when selected.
-   * @param {expression=} ngFalseValue The value to which the expression should be set when not selected.
-   * @param {string=} ngChange Angular expression to be executed when input changes due to user
-   *    interaction with the input element.
-   *
-   * @example
-      <example name="checkbox-input-directive" module="checkboxExample">
-        <file name="index.html">
-         <script>
-           angular.module('checkboxExample', [])
-             .controller('ExampleController', ['$scope', function($scope) {
-               $scope.checkboxModel = {
-                value1 : true,
-                value2 : 'YES'
-              };
-             }]);
-         </script>
-         <form name="myForm" ng-controller="ExampleController">
-           Value1: <input type="checkbox" ng-model="checkboxModel.value1"> <br/>
-           Value2: <input type="checkbox" ng-model="checkboxModel.value2"
-                          ng-true-value="'YES'" ng-false-value="'NO'"> <br/>
-           <tt>value1 = {{checkboxModel.value1}}</tt><br/>
-           <tt>value2 = {{checkboxModel.value2}}</tt><br/>
-          </form>
-        </file>
-        <file name="protractor.js" type="protractor">
-          it('should change state', function() {
-            var value1 = element(by.binding('checkboxModel.value1'));
-            var value2 = element(by.binding('checkboxModel.value2'));
-
-            expect(value1.getText()).toContain('true');
-            expect(value2.getText()).toContain('YES');
-
-            element(by.model('checkboxModel.value1')).click();
-            element(by.model('checkboxModel.value2')).click();
-
-            expect(value1.getText()).toContain('false');
-            expect(value2.getText()).toContain('NO');
-          });
-        </file>
-      </example>
-   */
-  'checkbox': checkboxInputType,
-
-  'hidden': noop,
-  'button': noop,
-  'submit': noop,
-  'reset': noop,
-  'file': noop
-};
-
-function stringBasedInputType(ctrl) {
-  ctrl.$formatters.push(function(value) {
-    return ctrl.$isEmpty(value) ? value : value.toString();
-  });
-}
-
-function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-}
-
-function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  var type = lowercase(element[0].type);
-
-  // In composition mode, users are still inputing intermediate text buffer,
-  // hold the listener until composition is done.
-  // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
-  if (!$sniffer.android) {
-    var composing = false;
-
-    element.on('compositionstart', function(data) {
-      composing = true;
-    });
-
-    element.on('compositionend', function() {
-      composing = false;
-      listener();
-    });
-  }
-
-  var listener = function(ev) {
-    if (timeout) {
-      $browser.defer.cancel(timeout);
-      timeout = null;
-    }
-    if (composing) return;
-    var value = element.val(),
-        event = ev && ev.type;
-
-    // By default we will trim the value
-    // If the attribute ng-trim exists we will avoid trimming
-    // If input type is 'password', the value is never trimmed
-    if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) {
-      value = trim(value);
-    }
-
-    // If a control is suffering from bad input (due to native validators), browsers discard its
-    // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the
-    // control's value is the same empty value twice in a row.
-    if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) {
-      ctrl.$setViewValue(value, event);
-    }
-  };
-
-  // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the
-  // input event on backspace, delete or cut
-  if ($sniffer.hasEvent('input')) {
-    element.on('input', listener);
-  } else {
-    var timeout;
-
-    var deferListener = function(ev, input, origValue) {
-      if (!timeout) {
-        timeout = $browser.defer(function() {
-          timeout = null;
-          if (!input || input.value !== origValue) {
-            listener(ev);
-          }
-        });
-      }
-    };
-
-    element.on('keydown', function(event) {
-      var key = event.keyCode;
-
-      // ignore
-      //    command            modifiers                   arrows
-      if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;
-
-      deferListener(event, this, this.value);
-    });
-
-    // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it
-    if ($sniffer.hasEvent('paste')) {
-      element.on('paste cut', deferListener);
-    }
-  }
-
-  // if user paste into input using mouse on older browser
-  // or form autocomplete on newer browser, we need "change" event to catch it
-  element.on('change', listener);
-
-  ctrl.$render = function() {
-    element.val(ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue);
-  };
-}
-
-function weekParser(isoWeek, existingDate) {
-  if (isDate(isoWeek)) {
-    return isoWeek;
-  }
-
-  if (isString(isoWeek)) {
-    WEEK_REGEXP.lastIndex = 0;
-    var parts = WEEK_REGEXP.exec(isoWeek);
-    if (parts) {
-      var year = +parts[1],
-          week = +parts[2],
-          hours = 0,
-          minutes = 0,
-          seconds = 0,
-          milliseconds = 0,
-          firstThurs = getFirstThursdayOfYear(year),
-          addDays = (week - 1) * 7;
-
-      if (existingDate) {
-        hours = existingDate.getHours();
-        minutes = existingDate.getMinutes();
-        seconds = existingDate.getSeconds();
-        milliseconds = existingDate.getMilliseconds();
-      }
-
-      return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);
-    }
-  }
-
-  return NaN;
-}
-
-function createDateParser(regexp, mapping) {
-  return function(iso, date) {
-    var parts, map;
-
-    if (isDate(iso)) {
-      return iso;
-    }
-
-    if (isString(iso)) {
-      // When a date is JSON'ified to wraps itself inside of an extra
-      // set of double quotes. This makes the date parsing code unable
-      // to match the date string and parse it as a date.
-      if (iso.charAt(0) == '"' && iso.charAt(iso.length - 1) == '"') {
-        iso = iso.substring(1, iso.length - 1);
-      }
-      if (ISO_DATE_REGEXP.test(iso)) {
-        return new Date(iso);
-      }
-      regexp.lastIndex = 0;
-      parts = regexp.exec(iso);
-
-      if (parts) {
-        parts.shift();
-        if (date) {
-          map = {
-            yyyy: date.getFullYear(),
-            MM: date.getMonth() + 1,
-            dd: date.getDate(),
-            HH: date.getHours(),
-            mm: date.getMinutes(),
-            ss: date.getSeconds(),
-            sss: date.getMilliseconds() / 1000
-          };
-        } else {
-          map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };
-        }
-
-        forEach(parts, function(part, index) {
-          if (index < mapping.length) {
-            map[mapping[index]] = +part;
-          }
-        });
-        return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0);
-      }
-    }
-
-    return NaN;
-  };
-}
-
-function createDateInputType(type, regexp, parseDate, format) {
-  return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) {
-    badInputChecker(scope, element, attr, ctrl);
-    baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-    var timezone = ctrl && ctrl.$options && ctrl.$options.timezone;
-    var previousDate;
-
-    ctrl.$$parserName = type;
-    ctrl.$parsers.push(function(value) {
-      if (ctrl.$isEmpty(value)) return null;
-      if (regexp.test(value)) {
-        // Note: We cannot read ctrl.$modelValue, as there might be a different
-        // parser/formatter in the processing chain so that the model
-        // contains some different data format!
-        var parsedDate = parseDate(value, previousDate);
-        if (timezone === 'UTC') {
-          parsedDate.setMinutes(parsedDate.getMinutes() - parsedDate.getTimezoneOffset());
-        }
-        return parsedDate;
-      }
-      return undefined;
-    });
-
-    ctrl.$formatters.push(function(value) {
-      if (value && !isDate(value)) {
-        throw $ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);
-      }
-      if (isValidDate(value)) {
-        previousDate = value;
-        if (previousDate && timezone === 'UTC') {
-          var timezoneOffset = 60000 * previousDate.getTimezoneOffset();
-          previousDate = new Date(previousDate.getTime() + timezoneOffset);
-        }
-        return $filter('date')(value, format, timezone);
-      } else {
-        previousDate = null;
-        return '';
-      }
-    });
-
-    if (isDefined(attr.min) || attr.ngMin) {
-      var minVal;
-      ctrl.$validators.min = function(value) {
-        return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;
-      };
-      attr.$observe('min', function(val) {
-        minVal = parseObservedDateValue(val);
-        ctrl.$validate();
-      });
-    }
-
-    if (isDefined(attr.max) || attr.ngMax) {
-      var maxVal;
-      ctrl.$validators.max = function(value) {
-        return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;
-      };
-      attr.$observe('max', function(val) {
-        maxVal = parseObservedDateValue(val);
-        ctrl.$validate();
-      });
-    }
-
-    function isValidDate(value) {
-      // Invalid Date: getTime() returns NaN
-      return value && !(value.getTime && value.getTime() !== value.getTime());
-    }
-
-    function parseObservedDateValue(val) {
-      return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined;
-    }
-  };
-}
-
-function badInputChecker(scope, element, attr, ctrl) {
-  var node = element[0];
-  var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);
-  if (nativeValidation) {
-    ctrl.$parsers.push(function(value) {
-      var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};
-      // Detect bug in FF35 for input[email] (https://bugzilla.mozilla.org/show_bug.cgi?id=1064430):
-      // - also sets validity.badInput (should only be validity.typeMismatch).
-      // - see http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#e-mail-state-(type=email)
-      // - can ignore this case as we can still read out the erroneous email...
-      return validity.badInput && !validity.typeMismatch ? undefined : value;
-    });
-  }
-}
-
-function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  badInputChecker(scope, element, attr, ctrl);
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-
-  ctrl.$$parserName = 'number';
-  ctrl.$parsers.push(function(value) {
-    if (ctrl.$isEmpty(value))      return null;
-    if (NUMBER_REGEXP.test(value)) return parseFloat(value);
-    return undefined;
-  });
-
-  ctrl.$formatters.push(function(value) {
-    if (!ctrl.$isEmpty(value)) {
-      if (!isNumber(value)) {
-        throw $ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value);
-      }
-      value = value.toString();
-    }
-    return value;
-  });
-
-  if (attr.min || attr.ngMin) {
-    var minVal;
-    ctrl.$validators.min = function(value) {
-      return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
-    };
-
-    attr.$observe('min', function(val) {
-      if (isDefined(val) && !isNumber(val)) {
-        val = parseFloat(val, 10);
-      }
-      minVal = isNumber(val) && !isNaN(val) ? val : undefined;
-      // TODO(matsko): implement validateLater to reduce number of validations
-      ctrl.$validate();
-    });
-  }
-
-  if (attr.max || attr.ngMax) {
-    var maxVal;
-    ctrl.$validators.max = function(value) {
-      return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
-    };
-
-    attr.$observe('max', function(val) {
-      if (isDefined(val) && !isNumber(val)) {
-        val = parseFloat(val, 10);
-      }
-      maxVal = isNumber(val) && !isNaN(val) ? val : undefined;
-      // TODO(matsko): implement validateLater to reduce number of validations
-      ctrl.$validate();
-    });
-  }
-}
-
-function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  // Note: no badInputChecker here by purpose as `url` is only a validation
-  // in browsers, i.e. we can always read out input.value even if it is not valid!
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-
-  ctrl.$$parserName = 'url';
-  ctrl.$validators.url = function(modelValue, viewValue) {
-    var value = modelValue || viewValue;
-    return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
-  };
-}
-
-function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
-  // Note: no badInputChecker here by purpose as `url` is only a validation
-  // in browsers, i.e. we can always read out input.value even if it is not valid!
-  baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
-  stringBasedInputType(ctrl);
-
-  ctrl.$$parserName = 'email';
-  ctrl.$validators.email = function(modelValue, viewValue) {
-    var value = modelValue || viewValue;
-    return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
-  };
-}
-
-function radioInputType(scope, element, attr, ctrl) {
-  // make the name unique, if not defined
-  if (isUndefined(attr.name)) {
-    element.attr('name', nextUid());
-  }
-
-  var listener = function(ev) {
-    if (element[0].checked) {
-      ctrl.$setViewValue(attr.value, ev && ev.type);
-    }
-  };
-
-  element.on('click', listener);
-
-  ctrl.$render = function() {
-    var value = attr.value;
-    element[0].checked = (value == ctrl.$viewValue);
-  };
-
-  attr.$observe('value', ctrl.$render);
-}
-
-function parseConstantExpr($parse, context, name, expression, fallback) {
-  var parseFn;
-  if (isDefined(expression)) {
-    parseFn = $parse(expression);
-    if (!parseFn.constant) {
-      throw minErr('ngModel')('constexpr', 'Expected constant expression for `{0}`, but saw ' +
-                                   '`{1}`.', name, expression);
-    }
-    return parseFn(context);
-  }
-  return fallback;
-}
-
-function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
-  var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true);
-  var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false);
-
-  var listener = function(ev) {
-    ctrl.$setViewValue(element[0].checked, ev && ev.type);
-  };
-
-  element.on('click', listener);
-
-  ctrl.$render = function() {
-    element[0].checked = ctrl.$viewValue;
-  };
-
-  // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`
-  // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert
-  // it to a boolean.
-  ctrl.$isEmpty = function(value) {
-    return value === false;
-  };
-
-  ctrl.$formatters.push(function(value) {
-    return equals(value, trueValue);
-  });
-
-  ctrl.$parsers.push(function(value) {
-    return value ? trueValue : falseValue;
-  });
-}
-
-
-/**
- * @ngdoc directive
- * @name textarea
- * @restrict E
- *
- * @description
- * HTML textarea element control with angular data-binding. The data-binding and validation
- * properties of this element are exactly the same as those of the
- * {@link ng.directive:input input element}.
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required Sets `required` validation error key if the value is not entered.
- * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
- *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
- *    `required` when you want to data-bind to the `required` attribute.
- * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
- *    minlength.
- * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
- *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
- *    length.
- * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
- *    RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
- *    patterns defined as scope expressions.
- * @param {string=} ngChange Angular expression to be executed when input changes due to user
- *    interaction with the input element.
- * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
- */
-
-
-/**
- * @ngdoc directive
- * @name input
- * @restrict E
- *
- * @description
- * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding,
- * input state control, and validation.
- * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers.
- *
- * <div class="alert alert-warning">
- * **Note:** Not every feature offered is available for all input types.
- * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`.
- * </div>
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required Sets `required` validation error key if the value is not entered.
- * @param {boolean=} ngRequired Sets `required` attribute if set to true
- * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
- *    minlength.
- * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
- *    maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
- *    length.
- * @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
- *    RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
- *    patterns defined as scope expressions.
- * @param {string=} ngChange Angular expression to be executed when input changes due to user
- *    interaction with the input element.
- * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
- *    This parameter is ignored for input[type=password] controls, which will never trim the
- *    input.
- *
- * @example
-    <example name="input-directive" module="inputExample">
-      <file name="index.html">
-       <script>
-          angular.module('inputExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.user = {name: 'guest', last: 'visitor'};
-            }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <form name="myForm">
-           User name: <input type="text" name="userName" ng-model="user.name" required>
-           <span class="error" ng-show="myForm.userName.$error.required">
-             Required!</span><br>
-           Last name: <input type="text" name="lastName" ng-model="user.last"
-             ng-minlength="3" ng-maxlength="10">
-           <span class="error" ng-show="myForm.lastName.$error.minlength">
-             Too short!</span>
-           <span class="error" ng-show="myForm.lastName.$error.maxlength">
-             Too long!</span><br>
-         </form>
-         <hr>
-         <tt>user = {{user}}</tt><br/>
-         <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br>
-         <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br>
-         <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br>
-         <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br>
-         <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
-         <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
-         <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br>
-         <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br>
-       </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-        var user = element(by.exactBinding('user'));
-        var userNameValid = element(by.binding('myForm.userName.$valid'));
-        var lastNameValid = element(by.binding('myForm.lastName.$valid'));
-        var lastNameError = element(by.binding('myForm.lastName.$error'));
-        var formValid = element(by.binding('myForm.$valid'));
-        var userNameInput = element(by.model('user.name'));
-        var userLastInput = element(by.model('user.last'));
-
-        it('should initialize to model', function() {
-          expect(user.getText()).toContain('{"name":"guest","last":"visitor"}');
-          expect(userNameValid.getText()).toContain('true');
-          expect(formValid.getText()).toContain('true');
-        });
-
-        it('should be invalid if empty when required', function() {
-          userNameInput.clear();
-          userNameInput.sendKeys('');
-
-          expect(user.getText()).toContain('{"last":"visitor"}');
-          expect(userNameValid.getText()).toContain('false');
-          expect(formValid.getText()).toContain('false');
-        });
-
-        it('should be valid if empty when min length is set', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('');
-
-          expect(user.getText()).toContain('{"name":"guest","last":""}');
-          expect(lastNameValid.getText()).toContain('true');
-          expect(formValid.getText()).toContain('true');
-        });
-
-        it('should be invalid if less than required min length', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('xx');
-
-          expect(user.getText()).toContain('{"name":"guest"}');
-          expect(lastNameValid.getText()).toContain('false');
-          expect(lastNameError.getText()).toContain('minlength');
-          expect(formValid.getText()).toContain('false');
-        });
-
-        it('should be invalid if longer than max length', function() {
-          userLastInput.clear();
-          userLastInput.sendKeys('some ridiculously long name');
-
-          expect(user.getText()).toContain('{"name":"guest"}');
-          expect(lastNameValid.getText()).toContain('false');
-          expect(lastNameError.getText()).toContain('maxlength');
-          expect(formValid.getText()).toContain('false');
-        });
-      </file>
-    </example>
- */
-var inputDirective = ['$browser', '$sniffer', '$filter', '$parse',
-    function($browser, $sniffer, $filter, $parse) {
-  return {
-    restrict: 'E',
-    require: ['?ngModel'],
-    link: {
-      pre: function(scope, element, attr, ctrls) {
-        if (ctrls[0]) {
-          (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer,
-                                                              $browser, $filter, $parse);
-        }
-      }
-    }
-  };
-}];
-
-
-
-var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
-/**
- * @ngdoc directive
- * @name ngValue
- *
- * @description
- * Binds the given expression to the value of `<option>` or {@link input[radio] `input[radio]`},
- * so that when the element is selected, the {@link ngModel `ngModel`} of that element is set to
- * the bound value.
- *
- * `ngValue` is useful when dynamically generating lists of radio buttons using
- * {@link ngRepeat `ngRepeat`}, as shown below.
- *
- * Likewise, `ngValue` can be used to generate `<option>` elements for
- * the {@link select `select`} element. In that case however, only strings are supported
- * for the `value `attribute, so the resulting `ngModel` will always be a string.
- * Support for `select` models with non-string values is available via `ngOptions`.
- *
- * @element input
- * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute
- *   of the `input` element
- *
- * @example
-    <example name="ngValue-directive" module="valueExample">
-      <file name="index.html">
-       <script>
-          angular.module('valueExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.names = ['pizza', 'unicorns', 'robots'];
-              $scope.my = { favorite: 'unicorns' };
-            }]);
-       </script>
-        <form ng-controller="ExampleController">
-          <h2>Which is your favorite?</h2>
-            <label ng-repeat="name in names" for="{{name}}">
-              {{name}}
-              <input type="radio"
-                     ng-model="my.favorite"
-                     ng-value="name"
-                     id="{{name}}"
-                     name="favorite">
-            </label>
-          <div>You chose {{my.favorite}}</div>
-        </form>
-      </file>
-      <file name="protractor.js" type="protractor">
-        var favorite = element(by.binding('my.favorite'));
-
-        it('should initialize to model', function() {
-          expect(favorite.getText()).toContain('unicorns');
-        });
-        it('should bind the values to the inputs', function() {
-          element.all(by.model('my.favorite')).get(0).click();
-          expect(favorite.getText()).toContain('pizza');
-        });
-      </file>
-    </example>
- */
-var ngValueDirective = function() {
-  return {
-    restrict: 'A',
-    priority: 100,
-    compile: function(tpl, tplAttr) {
-      if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
-        return function ngValueConstantLink(scope, elm, attr) {
-          attr.$set('value', scope.$eval(attr.ngValue));
-        };
-      } else {
-        return function ngValueLink(scope, elm, attr) {
-          scope.$watch(attr.ngValue, function valueWatchAction(value) {
-            attr.$set('value', value);
-          });
-        };
-      }
-    }
-  };
-};
-
-/**
- * @ngdoc directive
- * @name ngBind
- * @restrict AC
- *
- * @description
- * The `ngBind` attribute tells Angular to replace the text content of the specified HTML element
- * with the value of a given expression, and to update the text content when the value of that
- * expression changes.
- *
- * Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
- * `{{ expression }}` which is similar but less verbose.
- *
- * It is preferable to use `ngBind` instead of `{{ expression }}` if a template is momentarily
- * displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an
- * element attribute, it makes the bindings invisible to the user while the page is loading.
- *
- * An alternative solution to this problem would be using the
- * {@link ng.directive:ngCloak ngCloak} directive.
- *
- *
- * @element ANY
- * @param {expression} ngBind {@link guide/expression Expression} to evaluate.
- *
- * @example
- * Enter a name in the Live Preview text box; the greeting below the text box changes instantly.
-   <example module="bindExample">
-     <file name="index.html">
-       <script>
-         angular.module('bindExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.name = 'Whirled';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-         Enter name: <input type="text" ng-model="name"><br>
-         Hello <span ng-bind="name"></span>!
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind', function() {
-         var nameInput = element(by.model('name'));
-
-         expect(element(by.binding('name')).getText()).toBe('Whirled');
-         nameInput.clear();
-         nameInput.sendKeys('world');
-         expect(element(by.binding('name')).getText()).toBe('world');
-       });
-     </file>
-   </example>
- */
-var ngBindDirective = ['$compile', function($compile) {
-  return {
-    restrict: 'AC',
-    compile: function ngBindCompile(templateElement) {
-      $compile.$$addBindingClass(templateElement);
-      return function ngBindLink(scope, element, attr) {
-        $compile.$$addBindingInfo(element, attr.ngBind);
-        element = element[0];
-        scope.$watch(attr.ngBind, function ngBindWatchAction(value) {
-          element.textContent = value === undefined ? '' : value;
-        });
-      };
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngBindTemplate
- *
- * @description
- * The `ngBindTemplate` directive specifies that the element
- * text content should be replaced with the interpolation of the template
- * in the `ngBindTemplate` attribute.
- * Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`
- * expressions. This directive is needed since some HTML elements
- * (such as TITLE and OPTION) cannot contain SPAN elements.
- *
- * @element ANY
- * @param {string} ngBindTemplate template of form
- *   <tt>{{</tt> <tt>expression</tt> <tt>}}</tt> to eval.
- *
- * @example
- * Try it here: enter text in text box and watch the greeting change.
-   <example module="bindExample">
-     <file name="index.html">
-       <script>
-         angular.module('bindExample', [])
-           .controller('ExampleController', ['$scope', function($scope) {
-             $scope.salutation = 'Hello';
-             $scope.name = 'World';
-           }]);
-       </script>
-       <div ng-controller="ExampleController">
-        Salutation: <input type="text" ng-model="salutation"><br>
-        Name: <input type="text" ng-model="name"><br>
-        <pre ng-bind-template="{{salutation}} {{name}}!"></pre>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind', function() {
-         var salutationElem = element(by.binding('salutation'));
-         var salutationInput = element(by.model('salutation'));
-         var nameInput = element(by.model('name'));
-
-         expect(salutationElem.getText()).toBe('Hello World!');
-
-         salutationInput.clear();
-         salutationInput.sendKeys('Greetings');
-         nameInput.clear();
-         nameInput.sendKeys('user');
-
-         expect(salutationElem.getText()).toBe('Greetings user!');
-       });
-     </file>
-   </example>
- */
-var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate, $compile) {
-  return {
-    compile: function ngBindTemplateCompile(templateElement) {
-      $compile.$$addBindingClass(templateElement);
-      return function ngBindTemplateLink(scope, element, attr) {
-        var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));
-        $compile.$$addBindingInfo(element, interpolateFn.expressions);
-        element = element[0];
-        attr.$observe('ngBindTemplate', function(value) {
-          element.textContent = value === undefined ? '' : value;
-        });
-      };
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngBindHtml
- *
- * @description
- * Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,
- * the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.
- * To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link
- * ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}
- * in your module's dependencies, you need to include "angular-sanitize.js" in your application.
- *
- * You may also bypass sanitization for values you know are safe. To do so, bind to
- * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}.  See the example
- * under {@link ng.$sce#show-me-an-example-using-sce- Strict Contextual Escaping (SCE)}.
- *
- * Note: If a `$sanitize` service is unavailable and the bound value isn't explicitly trusted, you
- * will have an exception (instead of an exploit.)
- *
- * @element ANY
- * @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
- *
- * @example
-
-   <example module="bindHtmlExample" deps="angular-sanitize.js">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-        <p ng-bind-html="myHTML"></p>
-       </div>
-     </file>
-
-     <file name="script.js">
-       angular.module('bindHtmlExample', ['ngSanitize'])
-         .controller('ExampleController', ['$scope', function($scope) {
-           $scope.myHTML =
-              'I am an <code>HTML</code>string with ' +
-              '<a href="#">links!</a> and other <em>stuff</em>';
-         }]);
-     </file>
-
-     <file name="protractor.js" type="protractor">
-       it('should check ng-bind-html', function() {
-         expect(element(by.binding('myHTML')).getText()).toBe(
-             'I am an HTMLstring with links! and other stuff');
-       });
-     </file>
-   </example>
- */
-var ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse, $compile) {
-  return {
-    restrict: 'A',
-    compile: function ngBindHtmlCompile(tElement, tAttrs) {
-      var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
-      var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function getStringValue(value) {
-        return (value || '').toString();
-      });
-      $compile.$$addBindingClass(tElement);
-
-      return function ngBindHtmlLink(scope, element, attr) {
-        $compile.$$addBindingInfo(element, attr.ngBindHtml);
-
-        scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
-          // we re-evaluate the expr because we want a TrustedValueHolderType
-          // for $sce, not a string
-          element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope)) || '');
-        });
-      };
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngChange
- *
- * @description
- * Evaluate the given expression when the user changes the input.
- * The expression is evaluated immediately, unlike the JavaScript onchange event
- * which only triggers at the end of a change (usually, when the user leaves the
- * form element or presses the return key).
- *
- * The `ngChange` expression is only evaluated when a change in the input value causes
- * a new value to be committed to the model.
- *
- * It will not be evaluated:
- * * if the value returned from the `$parsers` transformation pipeline has not changed
- * * if the input has continued to be invalid since the model will stay `null`
- * * if the model is changed programmatically and not by a change to the input value
- *
- *
- * Note, this directive requires `ngModel` to be present.
- *
- * @element input
- * @param {expression} ngChange {@link guide/expression Expression} to evaluate upon change
- * in input value.
- *
- * @example
- * <example name="ngChange-directive" module="changeExample">
- *   <file name="index.html">
- *     <script>
- *       angular.module('changeExample', [])
- *         .controller('ExampleController', ['$scope', function($scope) {
- *           $scope.counter = 0;
- *           $scope.change = function() {
- *             $scope.counter++;
- *           };
- *         }]);
- *     </script>
- *     <div ng-controller="ExampleController">
- *       <input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
- *       <input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
- *       <label for="ng-change-example2">Confirmed</label><br />
- *       <tt>debug = {{confirmed}}</tt><br/>
- *       <tt>counter = {{counter}}</tt><br/>
- *     </div>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     var counter = element(by.binding('counter'));
- *     var debug = element(by.binding('confirmed'));
- *
- *     it('should evaluate the expression if changing from view', function() {
- *       expect(counter.getText()).toContain('0');
- *
- *       element(by.id('ng-change-example1')).click();
- *
- *       expect(counter.getText()).toContain('1');
- *       expect(debug.getText()).toContain('true');
- *     });
- *
- *     it('should not evaluate the expression if changing from model', function() {
- *       element(by.id('ng-change-example2')).click();
-
- *       expect(counter.getText()).toContain('0');
- *       expect(debug.getText()).toContain('true');
- *     });
- *   </file>
- * </example>
- */
-var ngChangeDirective = valueFn({
-  restrict: 'A',
-  require: 'ngModel',
-  link: function(scope, element, attr, ctrl) {
-    ctrl.$viewChangeListeners.push(function() {
-      scope.$eval(attr.ngChange);
-    });
-  }
-});
-
-function classDirective(name, selector) {
-  name = 'ngClass' + name;
-  return ['$animate', function($animate) {
-    return {
-      restrict: 'AC',
-      link: function(scope, element, attr) {
-        var oldVal;
-
-        scope.$watch(attr[name], ngClassWatchAction, true);
-
-        attr.$observe('class', function(value) {
-          ngClassWatchAction(scope.$eval(attr[name]));
-        });
-
-
-        if (name !== 'ngClass') {
-          scope.$watch('$index', function($index, old$index) {
-            // jshint bitwise: false
-            var mod = $index & 1;
-            if (mod !== (old$index & 1)) {
-              var classes = arrayClasses(scope.$eval(attr[name]));
-              mod === selector ?
-                addClasses(classes) :
-                removeClasses(classes);
-            }
-          });
-        }
-
-        function addClasses(classes) {
-          var newClasses = digestClassCounts(classes, 1);
-          attr.$addClass(newClasses);
-        }
-
-        function removeClasses(classes) {
-          var newClasses = digestClassCounts(classes, -1);
-          attr.$removeClass(newClasses);
-        }
-
-        function digestClassCounts(classes, count) {
-          var classCounts = element.data('$classCounts') || {};
-          var classesToUpdate = [];
-          forEach(classes, function(className) {
-            if (count > 0 || classCounts[className]) {
-              classCounts[className] = (classCounts[className] || 0) + count;
-              if (classCounts[className] === +(count > 0)) {
-                classesToUpdate.push(className);
-              }
-            }
-          });
-          element.data('$classCounts', classCounts);
-          return classesToUpdate.join(' ');
-        }
-
-        function updateClasses(oldClasses, newClasses) {
-          var toAdd = arrayDifference(newClasses, oldClasses);
-          var toRemove = arrayDifference(oldClasses, newClasses);
-          toAdd = digestClassCounts(toAdd, 1);
-          toRemove = digestClassCounts(toRemove, -1);
-          if (toAdd && toAdd.length) {
-            $animate.addClass(element, toAdd);
-          }
-          if (toRemove && toRemove.length) {
-            $animate.removeClass(element, toRemove);
-          }
-        }
-
-        function ngClassWatchAction(newVal) {
-          if (selector === true || scope.$index % 2 === selector) {
-            var newClasses = arrayClasses(newVal || []);
-            if (!oldVal) {
-              addClasses(newClasses);
-            } else if (!equals(newVal,oldVal)) {
-              var oldClasses = arrayClasses(oldVal);
-              updateClasses(oldClasses, newClasses);
-            }
-          }
-          oldVal = shallowCopy(newVal);
-        }
-      }
-    };
-
-    function arrayDifference(tokens1, tokens2) {
-      var values = [];
-
-      outer:
-      for (var i = 0; i < tokens1.length; i++) {
-        var token = tokens1[i];
-        for (var j = 0; j < tokens2.length; j++) {
-          if (token == tokens2[j]) continue outer;
-        }
-        values.push(token);
-      }
-      return values;
-    }
-
-    function arrayClasses(classVal) {
-      if (isArray(classVal)) {
-        return classVal;
-      } else if (isString(classVal)) {
-        return classVal.split(' ');
-      } else if (isObject(classVal)) {
-        var classes = [];
-        forEach(classVal, function(v, k) {
-          if (v) {
-            classes = classes.concat(k.split(' '));
-          }
-        });
-        return classes;
-      }
-      return classVal;
-    }
-  }];
-}
-
-/**
- * @ngdoc directive
- * @name ngClass
- * @restrict AC
- *
- * @description
- * The `ngClass` directive allows you to dynamically set CSS classes on an HTML element by databinding
- * an expression that represents all classes to be added.
- *
- * The directive operates in three different ways, depending on which of three types the expression
- * evaluates to:
- *
- * 1. If the expression evaluates to a string, the string should be one or more space-delimited class
- * names.
- *
- * 2. If the expression evaluates to an array, each element of the array should be a string that is
- * one or more space-delimited class names.
- *
- * 3. If the expression evaluates to an object, then for each key-value pair of the
- * object with a truthy value the corresponding key is used as a class name.
- *
- * The directive won't add duplicate classes if a particular class was already set.
- *
- * When the expression changes, the previously added classes are removed and only then the
- * new classes are added.
- *
- * @animations
- * **add** - happens just before the class is applied to the elements
- *
- * **remove** - happens just before the class is removed from the element
- *
- * @element ANY
- * @param {expression} ngClass {@link guide/expression Expression} to eval. The result
- *   of the evaluation can be a string representing space delimited class
- *   names, an array, or a map of class names to boolean values. In the case of a map, the
- *   names of the properties whose values are truthy will be added as css classes to the
- *   element.
- *
- * @example Example that demonstrates basic bindings via ngClass directive.
-   <example>
-     <file name="index.html">
-       <p ng-class="{strike: deleted, bold: important, red: error}">Map Syntax Example</p>
-       <input type="checkbox" ng-model="deleted"> deleted (apply "strike" class)<br>
-       <input type="checkbox" ng-model="important"> important (apply "bold" class)<br>
-       <input type="checkbox" ng-model="error"> error (apply "red" class)
-       <hr>
-       <p ng-class="style">Using String Syntax</p>
-       <input type="text" ng-model="style" placeholder="Type: bold strike red">
-       <hr>
-       <p ng-class="[style1, style2, style3]">Using Array Syntax</p>
-       <input ng-model="style1" placeholder="Type: bold, strike or red"><br>
-       <input ng-model="style2" placeholder="Type: bold, strike or red"><br>
-       <input ng-model="style3" placeholder="Type: bold, strike or red"><br>
-     </file>
-     <file name="style.css">
-       .strike {
-         text-decoration: line-through;
-       }
-       .bold {
-           font-weight: bold;
-       }
-       .red {
-           color: red;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       var ps = element.all(by.css('p'));
-
-       it('should let you toggle the class', function() {
-
-         expect(ps.first().getAttribute('class')).not.toMatch(/bold/);
-         expect(ps.first().getAttribute('class')).not.toMatch(/red/);
-
-         element(by.model('important')).click();
-         expect(ps.first().getAttribute('class')).toMatch(/bold/);
-
-         element(by.model('error')).click();
-         expect(ps.first().getAttribute('class')).toMatch(/red/);
-       });
-
-       it('should let you toggle string example', function() {
-         expect(ps.get(1).getAttribute('class')).toBe('');
-         element(by.model('style')).clear();
-         element(by.model('style')).sendKeys('red');
-         expect(ps.get(1).getAttribute('class')).toBe('red');
-       });
-
-       it('array example should have 3 classes', function() {
-         expect(ps.last().getAttribute('class')).toBe('');
-         element(by.model('style1')).sendKeys('bold');
-         element(by.model('style2')).sendKeys('strike');
-         element(by.model('style3')).sendKeys('red');
-         expect(ps.last().getAttribute('class')).toBe('bold strike red');
-       });
-     </file>
-   </example>
-
-   ## Animations
-
-   The example below demonstrates how to perform animations using ngClass.
-
-   <example module="ngAnimate" deps="angular-animate.js" animations="true">
-     <file name="index.html">
-      <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'">
-      <input id="clearbtn" type="button" value="clear" ng-click="myVar=''">
-      <br>
-      <span class="base-class" ng-class="myVar">Sample Text</span>
-     </file>
-     <file name="style.css">
-       .base-class {
-         -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-         transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-       }
-
-       .base-class.my-class {
-         color: red;
-         font-size:3em;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class', function() {
-         expect(element(by.css('.base-class')).getAttribute('class')).not.
-           toMatch(/my-class/);
-
-         element(by.id('setbtn')).click();
-
-         expect(element(by.css('.base-class')).getAttribute('class')).
-           toMatch(/my-class/);
-
-         element(by.id('clearbtn')).click();
-
-         expect(element(by.css('.base-class')).getAttribute('class')).not.
-           toMatch(/my-class/);
-       });
-     </file>
-   </example>
-
-
-   ## ngClass and pre-existing CSS3 Transitions/Animations
-   The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure.
-   Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder
-   any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure
-   to view the step by step details of {@link ng.$animate#addClass $animate.addClass} and
-   {@link ng.$animate#removeClass $animate.removeClass}.
- */
-var ngClassDirective = classDirective('', true);
-
-/**
- * @ngdoc directive
- * @name ngClassOdd
- * @restrict AC
- *
- * @description
- * The `ngClassOdd` and `ngClassEven` directives work exactly as
- * {@link ng.directive:ngClass ngClass}, except they work in
- * conjunction with `ngRepeat` and take effect only on odd (even) rows.
- *
- * This directive can be applied only within the scope of an
- * {@link ng.directive:ngRepeat ngRepeat}.
- *
- * @element ANY
- * @param {expression} ngClassOdd {@link guide/expression Expression} to eval. The result
- *   of the evaluation can be a string representing space delimited class names or an array.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
-          <li ng-repeat="name in names">
-           <span ng-class-odd="'odd'" ng-class-even="'even'">
-             {{name}}
-           </span>
-          </li>
-        </ol>
-     </file>
-     <file name="style.css">
-       .odd {
-         color: red;
-       }
-       .even {
-         color: blue;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class-odd and ng-class-even', function() {
-         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
-           toMatch(/odd/);
-         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
-           toMatch(/even/);
-       });
-     </file>
-   </example>
- */
-var ngClassOddDirective = classDirective('Odd', 0);
-
-/**
- * @ngdoc directive
- * @name ngClassEven
- * @restrict AC
- *
- * @description
- * The `ngClassOdd` and `ngClassEven` directives work exactly as
- * {@link ng.directive:ngClass ngClass}, except they work in
- * conjunction with `ngRepeat` and take effect only on odd (even) rows.
- *
- * This directive can be applied only within the scope of an
- * {@link ng.directive:ngRepeat ngRepeat}.
- *
- * @element ANY
- * @param {expression} ngClassEven {@link guide/expression Expression} to eval. The
- *   result of the evaluation can be a string representing space delimited class names or an array.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
-          <li ng-repeat="name in names">
-           <span ng-class-odd="'odd'" ng-class-even="'even'">
-             {{name}} &nbsp; &nbsp; &nbsp;
-           </span>
-          </li>
-        </ol>
-     </file>
-     <file name="style.css">
-       .odd {
-         color: red;
-       }
-       .even {
-         color: blue;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-class-odd and ng-class-even', function() {
-         expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
-           toMatch(/odd/);
-         expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
-           toMatch(/even/);
-       });
-     </file>
-   </example>
- */
-var ngClassEvenDirective = classDirective('Even', 1);
-
-/**
- * @ngdoc directive
- * @name ngCloak
- * @restrict AC
- *
- * @description
- * The `ngCloak` directive is used to prevent the Angular html template from being briefly
- * displayed by the browser in its raw (uncompiled) form while your application is loading. Use this
- * directive to avoid the undesirable flicker effect caused by the html template display.
- *
- * The directive can be applied to the `<body>` element, but the preferred usage is to apply
- * multiple `ngCloak` directives to small portions of the page to permit progressive rendering
- * of the browser view.
- *
- * `ngCloak` works in cooperation with the following css rule embedded within `angular.js` and
- * `angular.min.js`.
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```css
- * [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
- *   display: none !important;
- * }
- * ```
- *
- * When this css rule is loaded by the browser, all html elements (including their children) that
- * are tagged with the `ngCloak` directive are hidden. When Angular encounters this directive
- * during the compilation of the template it deletes the `ngCloak` element attribute, making
- * the compiled element visible.
- *
- * For the best result, the `angular.js` script must be loaded in the head section of the html
- * document; alternatively, the css rule above must be included in the external stylesheet of the
- * application.
- *
- * Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they
- * cannot match the `[ng\:cloak]` selector. To work around this limitation, you must add the css
- * class `ng-cloak` in addition to the `ngCloak` directive as shown in the example below.
- *
- * @element ANY
- *
- * @example
-   <example>
-     <file name="index.html">
-        <div id="template1" ng-cloak>{{ 'hello' }}</div>
-        <div id="template2" ng-cloak class="ng-cloak">{{ 'hello IE7' }}</div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should remove the template directive and css class', function() {
-         expect($('#template1').getAttribute('ng-cloak')).
-           toBeNull();
-         expect($('#template2').getAttribute('ng-cloak')).
-           toBeNull();
-       });
-     </file>
-   </example>
- *
- */
-var ngCloakDirective = ngDirective({
-  compile: function(element, attr) {
-    attr.$set('ngCloak', undefined);
-    element.removeClass('ng-cloak');
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngController
- *
- * @description
- * The `ngController` directive attaches a controller class to the view. This is a key aspect of how angular
- * supports the principles behind the Model-View-Controller design pattern.
- *
- * MVC components in angular:
- *
- * * Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties
- *   are accessed through bindings.
- * * View — The template (HTML with data bindings) that is rendered into the View.
- * * Controller — The `ngController` directive specifies a Controller class; the class contains business
- *   logic behind the application to decorate the scope with functions and values
- *
- * Note that you can also attach controllers to the DOM by declaring it in a route definition
- * via the {@link ngRoute.$route $route} service. A common mistake is to declare the controller
- * again using `ng-controller` in the template itself.  This will cause the controller to be attached
- * and executed twice.
- *
- * @element ANY
- * @scope
- * @priority 500
- * @param {expression} ngController Name of a constructor function registered with the current
- * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression}
- * that on the current scope evaluates to a constructor function.
- *
- * The controller instance can be published into a scope property by specifying
- * `ng-controller="as propertyName"`.
- *
- * If the current `$controllerProvider` is configured to use globals (via
- * {@link ng.$controllerProvider#allowGlobals `$controllerProvider.allowGlobals()` }), this may
- * also be the name of a globally accessible constructor function (not recommended).
- *
- * @example
- * Here is a simple form for editing user contact information. Adding, removing, clearing, and
- * greeting are methods declared on the controller (see source tab). These methods can
- * easily be called from the angular markup. Any changes to the data are automatically reflected
- * in the View without the need for a manual update.
- *
- * Two different declaration styles are included below:
- *
- * * one binds methods and properties directly onto the controller using `this`:
- * `ng-controller="SettingsController1 as settings"`
- * * one injects `$scope` into the controller:
- * `ng-controller="SettingsController2"`
- *
- * The second option is more common in the Angular community, and is generally used in boilerplates
- * and in this guide. However, there are advantages to binding properties directly to the controller
- * and avoiding scope.
- *
- * * Using `controller as` makes it obvious which controller you are accessing in the template when
- * multiple controllers apply to an element.
- * * If you are writing your controllers as classes you have easier access to the properties and
- * methods, which will appear on the scope, from inside the controller code.
- * * Since there is always a `.` in the bindings, you don't have to worry about prototypal
- * inheritance masking primitives.
- *
- * This example demonstrates the `controller as` syntax.
- *
- * <example name="ngControllerAs" module="controllerAsExample">
- *   <file name="index.html">
- *    <div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
- *      Name: <input type="text" ng-model="settings.name"/>
- *      [ <a href="" ng-click="settings.greet()">greet</a> ]<br/>
- *      Contact:
- *      <ul>
- *        <li ng-repeat="contact in settings.contacts">
- *          <select ng-model="contact.type">
- *             <option>phone</option>
- *             <option>email</option>
- *          </select>
- *          <input type="text" ng-model="contact.value"/>
- *          [ <a href="" ng-click="settings.clearContact(contact)">clear</a>
- *          | <a href="" ng-click="settings.removeContact(contact)">X</a> ]
- *        </li>
- *        <li>[ <a href="" ng-click="settings.addContact()">add</a> ]</li>
- *     </ul>
- *    </div>
- *   </file>
- *   <file name="app.js">
- *    angular.module('controllerAsExample', [])
- *      .controller('SettingsController1', SettingsController1);
- *
- *    function SettingsController1() {
- *      this.name = "John Smith";
- *      this.contacts = [
- *        {type: 'phone', value: '408 555 1212'},
- *        {type: 'email', value: 'john.smith@example.org'} ];
- *    }
- *
- *    SettingsController1.prototype.greet = function() {
- *      alert(this.name);
- *    };
- *
- *    SettingsController1.prototype.addContact = function() {
- *      this.contacts.push({type: 'email', value: 'yourname@example.org'});
- *    };
- *
- *    SettingsController1.prototype.removeContact = function(contactToRemove) {
- *     var index = this.contacts.indexOf(contactToRemove);
- *      this.contacts.splice(index, 1);
- *    };
- *
- *    SettingsController1.prototype.clearContact = function(contact) {
- *      contact.type = 'phone';
- *      contact.value = '';
- *    };
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     it('should check controller as', function() {
- *       var container = element(by.id('ctrl-as-exmpl'));
- *         expect(container.element(by.model('settings.name'))
- *           .getAttribute('value')).toBe('John Smith');
- *
- *       var firstRepeat =
- *           container.element(by.repeater('contact in settings.contacts').row(0));
- *       var secondRepeat =
- *           container.element(by.repeater('contact in settings.contacts').row(1));
- *
- *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('408 555 1212');
- *
- *       expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('john.smith@example.org');
- *
- *       firstRepeat.element(by.linkText('clear')).click();
- *
- *       expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *           .toBe('');
- *
- *       container.element(by.linkText('add')).click();
- *
- *       expect(container.element(by.repeater('contact in settings.contacts').row(2))
- *           .element(by.model('contact.value'))
- *           .getAttribute('value'))
- *           .toBe('yourname@example.org');
- *     });
- *   </file>
- * </example>
- *
- * This example demonstrates the "attach to `$scope`" style of controller.
- *
- * <example name="ngController" module="controllerExample">
- *  <file name="index.html">
- *   <div id="ctrl-exmpl" ng-controller="SettingsController2">
- *     Name: <input type="text" ng-model="name"/>
- *     [ <a href="" ng-click="greet()">greet</a> ]<br/>
- *     Contact:
- *     <ul>
- *       <li ng-repeat="contact in contacts">
- *         <select ng-model="contact.type">
- *            <option>phone</option>
- *            <option>email</option>
- *         </select>
- *         <input type="text" ng-model="contact.value"/>
- *         [ <a href="" ng-click="clearContact(contact)">clear</a>
- *         | <a href="" ng-click="removeContact(contact)">X</a> ]
- *       </li>
- *       <li>[ <a href="" ng-click="addContact()">add</a> ]</li>
- *    </ul>
- *   </div>
- *  </file>
- *  <file name="app.js">
- *   angular.module('controllerExample', [])
- *     .controller('SettingsController2', ['$scope', SettingsController2]);
- *
- *   function SettingsController2($scope) {
- *     $scope.name = "John Smith";
- *     $scope.contacts = [
- *       {type:'phone', value:'408 555 1212'},
- *       {type:'email', value:'john.smith@example.org'} ];
- *
- *     $scope.greet = function() {
- *       alert($scope.name);
- *     };
- *
- *     $scope.addContact = function() {
- *       $scope.contacts.push({type:'email', value:'yourname@example.org'});
- *     };
- *
- *     $scope.removeContact = function(contactToRemove) {
- *       var index = $scope.contacts.indexOf(contactToRemove);
- *       $scope.contacts.splice(index, 1);
- *     };
- *
- *     $scope.clearContact = function(contact) {
- *       contact.type = 'phone';
- *       contact.value = '';
- *     };
- *   }
- *  </file>
- *  <file name="protractor.js" type="protractor">
- *    it('should check controller', function() {
- *      var container = element(by.id('ctrl-exmpl'));
- *
- *      expect(container.element(by.model('name'))
- *          .getAttribute('value')).toBe('John Smith');
- *
- *      var firstRepeat =
- *          container.element(by.repeater('contact in contacts').row(0));
- *      var secondRepeat =
- *          container.element(by.repeater('contact in contacts').row(1));
- *
- *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('408 555 1212');
- *      expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('john.smith@example.org');
- *
- *      firstRepeat.element(by.linkText('clear')).click();
- *
- *      expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
- *          .toBe('');
- *
- *      container.element(by.linkText('add')).click();
- *
- *      expect(container.element(by.repeater('contact in contacts').row(2))
- *          .element(by.model('contact.value'))
- *          .getAttribute('value'))
- *          .toBe('yourname@example.org');
- *    });
- *  </file>
- *</example>
-
- */
-var ngControllerDirective = [function() {
-  return {
-    restrict: 'A',
-    scope: true,
-    controller: '@',
-    priority: 500
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngCsp
- *
- * @element html
- * @description
- * Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.
- *
- * This is necessary when developing things like Google Chrome Extensions or Universal Windows Apps.
- *
- * CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).
- * For Angular to be CSP compatible there are only two things that we need to do differently:
- *
- * - don't use `Function` constructor to generate optimized value getters
- * - don't inject custom stylesheet into the document
- *
- * AngularJS uses `Function(string)` generated functions as a speed optimization. Applying the `ngCsp`
- * directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will
- * evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will
- * be raised.
- *
- * CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically
- * includes some CSS rules (e.g. {@link ng.directive:ngCloak ngCloak}).
- * To make those directives work in CSP mode, include the `angular-csp.css` manually.
- *
- * Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This
- * autodetection however triggers a CSP error to be logged in the console:
- *
- * ```
- * Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
- * script in the following Content Security Policy directive: "default-src 'self'". Note that
- * 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
- * ```
- *
- * This error is harmless but annoying. To prevent the error from showing up, put the `ngCsp`
- * directive on the root element of the application or on the `angular.js` script tag, whichever
- * appears first in the html document.
- *
- * *Note: This directive is only available in the `ng-csp` and `data-ng-csp` attribute form.*
- *
- * @example
- * This example shows how to apply the `ngCsp` directive to the `html` tag.
-   ```html
-     <!doctype html>
-     <html ng-app ng-csp>
-     ...
-     ...
-     </html>
-   ```
-  * @example
-      // Note: the suffix `.csp` in the example name triggers
-      // csp mode in our http server!
-      <example name="example.csp" module="cspExample" ng-csp="true">
-        <file name="index.html">
-          <div ng-controller="MainController as ctrl">
-            <div>
-              <button ng-click="ctrl.inc()" id="inc">Increment</button>
-              <span id="counter">
-                {{ctrl.counter}}
-              </span>
-            </div>
-
-            <div>
-              <button ng-click="ctrl.evil()" id="evil">Evil</button>
-              <span id="evilError">
-                {{ctrl.evilError}}
-              </span>
-            </div>
-          </div>
-        </file>
-        <file name="script.js">
-           angular.module('cspExample', [])
-             .controller('MainController', function() {
-                this.counter = 0;
-                this.inc = function() {
-                  this.counter++;
-                };
-                this.evil = function() {
-                  // jshint evil:true
-                  try {
-                    eval('1+2');
-                  } catch (e) {
-                    this.evilError = e.message;
-                  }
-                };
-              });
-        </file>
-        <file name="protractor.js" type="protractor">
-          var util, webdriver;
-
-          var incBtn = element(by.id('inc'));
-          var counter = element(by.id('counter'));
-          var evilBtn = element(by.id('evil'));
-          var evilError = element(by.id('evilError'));
-
-          function getAndClearSevereErrors() {
-            return browser.manage().logs().get('browser').then(function(browserLog) {
-              return browserLog.filter(function(logEntry) {
-                return logEntry.level.value > webdriver.logging.Level.WARNING.value;
-              });
-            });
-          }
-
-          function clearErrors() {
-            getAndClearSevereErrors();
-          }
-
-          function expectNoErrors() {
-            getAndClearSevereErrors().then(function(filteredLog) {
-              expect(filteredLog.length).toEqual(0);
-              if (filteredLog.length) {
-                console.log('browser console errors: ' + util.inspect(filteredLog));
-              }
-            });
-          }
-
-          function expectError(regex) {
-            getAndClearSevereErrors().then(function(filteredLog) {
-              var found = false;
-              filteredLog.forEach(function(log) {
-                if (log.message.match(regex)) {
-                  found = true;
-                }
-              });
-              if (!found) {
-                throw new Error('expected an error that matches ' + regex);
-              }
-            });
-          }
-
-          beforeEach(function() {
-            util = require('util');
-            webdriver = require('protractor/node_modules/selenium-webdriver');
-          });
-
-          // For now, we only test on Chrome,
-          // as Safari does not load the page with Protractor's injected scripts,
-          // and Firefox webdriver always disables content security policy (#6358)
-          if (browser.params.browser !== 'chrome') {
-            return;
-          }
-
-          it('should not report errors when the page is loaded', function() {
-            // clear errors so we are not dependent on previous tests
-            clearErrors();
-            // Need to reload the page as the page is already loaded when
-            // we come here
-            browser.driver.getCurrentUrl().then(function(url) {
-              browser.get(url);
-            });
-            expectNoErrors();
-          });
-
-          it('should evaluate expressions', function() {
-            expect(counter.getText()).toEqual('0');
-            incBtn.click();
-            expect(counter.getText()).toEqual('1');
-            expectNoErrors();
-          });
-
-          it('should throw and report an error when using "eval"', function() {
-            evilBtn.click();
-            expect(evilError.getText()).toMatch(/Content Security Policy/);
-            expectError(/Content Security Policy/);
-          });
-        </file>
-      </example>
-  */
-
-// ngCsp is not implemented as a proper directive any more, because we need it be processed while we
-// bootstrap the system (before $parse is instantiated), for this reason we just have
-// the csp.isActive() fn that looks for ng-csp attribute anywhere in the current doc
-
-/**
- * @ngdoc directive
- * @name ngClick
- *
- * @description
- * The ngClick directive allows you to specify custom behavior when
- * an element is clicked.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
- * click. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-click="count = count + 1" ng-init="count=0">
-        Increment
-      </button>
-      <span>
-        count: {{count}}
-      </span>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-click', function() {
-         expect(element(by.binding('count')).getText()).toMatch('0');
-         element(by.css('button')).click();
-         expect(element(by.binding('count')).getText()).toMatch('1');
-       });
-     </file>
-   </example>
- */
-/*
- * A collection of directives that allows creation of custom event handlers that are defined as
- * angular expressions and are compiled and executed within the current scope.
- */
-var ngEventDirectives = {};
-
-// For events that might fire synchronously during DOM manipulation
-// we need to execute their event handlers asynchronously using $evalAsync,
-// so that they are not executed in an inconsistent state.
-var forceAsyncEvents = {
-  'blur': true,
-  'focus': true
-};
-forEach(
-  'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
-  function(eventName) {
-    var directiveName = directiveNormalize('ng-' + eventName);
-    ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) {
-      return {
-        restrict: 'A',
-        compile: function($element, attr) {
-          // We expose the powerful $event object on the scope that provides access to the Window,
-          // etc. that isn't protected by the fast paths in $parse.  We explicitly request better
-          // checks at the cost of speed since event handler expressions are not executed as
-          // frequently as regular change detection.
-          var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true);
-          return function ngEventHandler(scope, element) {
-            element.on(eventName, function(event) {
-              var callback = function() {
-                fn(scope, {$event:event});
-              };
-              if (forceAsyncEvents[eventName] && $rootScope.$$phase) {
-                scope.$evalAsync(callback);
-              } else {
-                scope.$apply(callback);
-              }
-            });
-          };
-        }
-      };
-    }];
-  }
-);
-
-/**
- * @ngdoc directive
- * @name ngDblclick
- *
- * @description
- * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon
- * a dblclick. (The Event object is available as `$event`)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-dblclick="count = count + 1" ng-init="count=0">
-        Increment (on double click)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMousedown
- *
- * @description
- * The ngMousedown directive allows you to specify custom behavior on mousedown event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
- * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mousedown="count = count + 1" ng-init="count=0">
-        Increment (on mouse down)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseup
- *
- * @description
- * Specify custom behavior on mouseup event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
- * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseup="count = count + 1" ng-init="count=0">
-        Increment (on mouse up)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngMouseover
- *
- * @description
- * Specify custom behavior on mouseover event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
- * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseover="count = count + 1" ng-init="count=0">
-        Increment (when mouse is over)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseenter
- *
- * @description
- * Specify custom behavior on mouseenter event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
- * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseenter="count = count + 1" ng-init="count=0">
-        Increment (when mouse enters)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMouseleave
- *
- * @description
- * Specify custom behavior on mouseleave event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
- * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mouseleave="count = count + 1" ng-init="count=0">
-        Increment (when mouse leaves)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngMousemove
- *
- * @description
- * Specify custom behavior on mousemove event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
- * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <button ng-mousemove="count = count + 1" ng-init="count=0">
-        Increment (when mouse moves)
-      </button>
-      count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeydown
- *
- * @description
- * Specify custom behavior on keydown event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
- * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-keydown="count = count + 1" ng-init="count=0">
-      key down count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeyup
- *
- * @description
- * Specify custom behavior on keyup event.
- *
- * @element ANY
- * @priority 0
- * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
- * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-       <p>Typing in the input box below updates the key count</p>
-       <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
-
-       <p>Typing in the input box below updates the keycode</p>
-       <input ng-keyup="event=$event">
-       <p>event keyCode: {{ event.keyCode }}</p>
-       <p>event altKey: {{ event.altKey }}</p>
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngKeypress
- *
- * @description
- * Specify custom behavior on keypress event.
- *
- * @element ANY
- * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
- * keypress. ({@link guide/expression#-event- Event object is available as `$event`}
- * and can be interrogated for keyCode, altKey, etc.)
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-keypress="count = count + 1" ng-init="count=0">
-      key press count: {{count}}
-     </file>
-   </example>
- */
-
-
-/**
- * @ngdoc directive
- * @name ngSubmit
- *
- * @description
- * Enables binding angular expressions to onsubmit events.
- *
- * Additionally it prevents the default action (which for form means sending the request to the
- * server and reloading the current page), but only if the form does not contain `action`,
- * `data-action`, or `x-action` attributes.
- *
- * <div class="alert alert-warning">
- * **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
- * `ngSubmit` handlers together. See the
- * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
- * for a detailed discussion of when `ngSubmit` may be triggered.
- * </div>
- *
- * @element form
- * @priority 0
- * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
- * ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example module="submitExample">
-     <file name="index.html">
-      <script>
-        angular.module('submitExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.list = [];
-            $scope.text = 'hello';
-            $scope.submit = function() {
-              if ($scope.text) {
-                $scope.list.push(this.text);
-                $scope.text = '';
-              }
-            };
-          }]);
-      </script>
-      <form ng-submit="submit()" ng-controller="ExampleController">
-        Enter text and hit enter:
-        <input type="text" ng-model="text" name="text" />
-        <input type="submit" id="submit" value="Submit" />
-        <pre>list={{list}}</pre>
-      </form>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should check ng-submit', function() {
-         expect(element(by.binding('list')).getText()).toBe('list=[]');
-         element(by.css('#submit')).click();
-         expect(element(by.binding('list')).getText()).toContain('hello');
-         expect(element(by.model('text')).getAttribute('value')).toBe('');
-       });
-       it('should ignore empty strings', function() {
-         expect(element(by.binding('list')).getText()).toBe('list=[]');
-         element(by.css('#submit')).click();
-         element(by.css('#submit')).click();
-         expect(element(by.binding('list')).getText()).toContain('hello');
-        });
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngFocus
- *
- * @description
- * Specify custom behavior on focus event.
- *
- * Note: As the `focus` event is executed synchronously when calling `input.focus()`
- * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
- * during an `$apply` to ensure a consistent state.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
- * focus. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
- * See {@link ng.directive:ngClick ngClick}
- */
-
-/**
- * @ngdoc directive
- * @name ngBlur
- *
- * @description
- * Specify custom behavior on blur event.
- *
- * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when
- * an element has lost focus.
- *
- * Note: As the `blur` event is executed synchronously also during DOM manipulations
- * (e.g. removing a focussed input),
- * AngularJS executes the expression using `scope.$evalAsync` if the event is fired
- * during an `$apply` to ensure a consistent state.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
- * blur. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
- * See {@link ng.directive:ngClick ngClick}
- */
-
-/**
- * @ngdoc directive
- * @name ngCopy
- *
- * @description
- * Specify custom behavior on copy event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
- * copy. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value">
-      copied: {{copied}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngCut
- *
- * @description
- * Specify custom behavior on cut event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
- * cut. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value">
-      cut: {{cut}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngPaste
- *
- * @description
- * Specify custom behavior on paste event.
- *
- * @element window, input, select, textarea, a
- * @priority 0
- * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
- * paste. ({@link guide/expression#-event- Event object is available as `$event`})
- *
- * @example
-   <example>
-     <file name="index.html">
-      <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
-      pasted: {{paste}}
-     </file>
-   </example>
- */
-
-/**
- * @ngdoc directive
- * @name ngIf
- * @restrict A
- *
- * @description
- * The `ngIf` directive removes or recreates a portion of the DOM tree based on an
- * {expression}. If the expression assigned to `ngIf` evaluates to a false
- * value then the element is removed from the DOM, otherwise a clone of the
- * element is reinserted into the DOM.
- *
- * `ngIf` differs from `ngShow` and `ngHide` in that `ngIf` completely removes and recreates the
- * element in the DOM rather than changing its visibility via the `display` css property.  A common
- * case when this difference is significant is when using css selectors that rely on an element's
- * position within the DOM, such as the `:first-child` or `:last-child` pseudo-classes.
- *
- * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope
- * is created when the element is restored.  The scope created within `ngIf` inherits from
- * its parent scope using
- * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance).
- * An important implication of this is if `ngModel` is used within `ngIf` to bind to
- * a javascript primitive defined in the parent scope. In this case any modifications made to the
- * variable within the child scope will override (hide) the value in the parent scope.
- *
- * Also, `ngIf` recreates elements using their compiled state. An example of this behavior
- * is if an element's class attribute is directly modified after it's compiled, using something like
- * jQuery's `.addClass()` method, and the element is later removed. When `ngIf` recreates the element
- * the added class will be lost because the original compiled state is used to regenerate the element.
- *
- * Additionally, you can provide animations via the `ngAnimate` module to animate the `enter`
- * and `leave` effects.
- *
- * @animations
- * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container
- * leave - happens just before the `ngIf` contents are removed from the DOM
- *
- * @element ANY
- * @scope
- * @priority 600
- * @param {expression} ngIf If the {@link guide/expression expression} is falsy then
- *     the element is removed from the DOM tree. If it is truthy a copy of the compiled
- *     element is added to the DOM tree.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/>
-      Show when checked:
-      <span ng-if="checked" class="animate-if">
-        This is removed when the checkbox is unchecked.
-      </span>
-    </file>
-    <file name="animations.css">
-      .animate-if {
-        background:white;
-        border:1px solid black;
-        padding:10px;
-      }
-
-      .animate-if.ng-enter, .animate-if.ng-leave {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-      }
-
-      .animate-if.ng-enter,
-      .animate-if.ng-leave.ng-leave-active {
-        opacity:0;
-      }
-
-      .animate-if.ng-leave,
-      .animate-if.ng-enter.ng-enter-active {
-        opacity:1;
-      }
-    </file>
-  </example>
- */
-var ngIfDirective = ['$animate', function($animate) {
-  return {
-    multiElement: true,
-    transclude: 'element',
-    priority: 600,
-    terminal: true,
-    restrict: 'A',
-    $$tlb: true,
-    link: function($scope, $element, $attr, ctrl, $transclude) {
-        var block, childScope, previousElements;
-        $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {
-
-          if (value) {
-            if (!childScope) {
-              $transclude(function(clone, newScope) {
-                childScope = newScope;
-                clone[clone.length++] = document.createComment(' end ngIf: ' + $attr.ngIf + ' ');
-                // Note: We only need the first/last node of the cloned nodes.
-                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
-                // by a directive with templateUrl when its template arrives.
-                block = {
-                  clone: clone
-                };
-                $animate.enter(clone, $element.parent(), $element);
-              });
-            }
-          } else {
-            if (previousElements) {
-              previousElements.remove();
-              previousElements = null;
-            }
-            if (childScope) {
-              childScope.$destroy();
-              childScope = null;
-            }
-            if (block) {
-              previousElements = getBlockNodes(block.clone);
-              $animate.leave(previousElements).then(function() {
-                previousElements = null;
-              });
-              block = null;
-            }
-          }
-        });
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngInclude
- * @restrict ECA
- *
- * @description
- * Fetches, compiles and includes an external HTML fragment.
- *
- * By default, the template URL is restricted to the same domain and protocol as the
- * application document. This is done by calling {@link $sce#getTrustedResourceUrl
- * $sce.getTrustedResourceUrl} on it. To load templates from other domains or protocols
- * you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist them} or
- * {@link $sce#trustAsResourceUrl wrap them} as trusted values. Refer to Angular's {@link
- * ng.$sce Strict Contextual Escaping}.
- *
- * In addition, the browser's
- * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest)
- * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/)
- * policy may further restrict whether the template is successfully loaded.
- * For example, `ngInclude` won't work for cross-domain requests on all browsers and for `file://`
- * access on some browsers.
- *
- * @animations
- * enter - animation is used to bring new content into the browser.
- * leave - animation is used to animate existing content away.
- *
- * The enter and leave animation occur concurrently.
- *
- * @scope
- * @priority 400
- *
- * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant,
- *                 make sure you wrap it in **single** quotes, e.g. `src="'myPartialTemplate.html'"`.
- * @param {string=} onload Expression to evaluate when a new partial is loaded.
- *
- * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll
- *                  $anchorScroll} to scroll the viewport after the content is loaded.
- *
- *                  - If the attribute is not set, disable scrolling.
- *                  - If the attribute is set without value, enable scrolling.
- *                  - Otherwise enable scrolling only if the expression evaluates to truthy value.
- *
- * @example
-  <example module="includeExample" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-     <div ng-controller="ExampleController">
-       <select ng-model="template" ng-options="t.name for t in templates">
-        <option value="">(blank)</option>
-       </select>
-       url of the template: <code>{{template.url}}</code>
-       <hr/>
-       <div class="slide-animate-container">
-         <div class="slide-animate" ng-include="template.url"></div>
-       </div>
-     </div>
-    </file>
-    <file name="script.js">
-      angular.module('includeExample', ['ngAnimate'])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.templates =
-            [ { name: 'template1.html', url: 'template1.html'},
-              { name: 'template2.html', url: 'template2.html'} ];
-          $scope.template = $scope.templates[0];
-        }]);
-     </file>
-    <file name="template1.html">
-      Content of template1.html
-    </file>
-    <file name="template2.html">
-      Content of template2.html
-    </file>
-    <file name="animations.css">
-      .slide-animate-container {
-        position:relative;
-        background:white;
-        border:1px solid black;
-        height:40px;
-        overflow:hidden;
-      }
-
-      .slide-animate {
-        padding:10px;
-      }
-
-      .slide-animate.ng-enter, .slide-animate.ng-leave {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-
-        position:absolute;
-        top:0;
-        left:0;
-        right:0;
-        bottom:0;
-        display:block;
-        padding:10px;
-      }
-
-      .slide-animate.ng-enter {
-        top:-50px;
-      }
-      .slide-animate.ng-enter.ng-enter-active {
-        top:0;
-      }
-
-      .slide-animate.ng-leave {
-        top:0;
-      }
-      .slide-animate.ng-leave.ng-leave-active {
-        top:50px;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var templateSelect = element(by.model('template'));
-      var includeElem = element(by.css('[ng-include]'));
-
-      it('should load template1.html', function() {
-        expect(includeElem.getText()).toMatch(/Content of template1.html/);
-      });
-
-      it('should load template2.html', function() {
-        if (browser.params.browser == 'firefox') {
-          // Firefox can't handle using selects
-          // See https://github.com/angular/protractor/issues/480
-          return;
-        }
-        templateSelect.click();
-        templateSelect.all(by.css('option')).get(2).click();
-        expect(includeElem.getText()).toMatch(/Content of template2.html/);
-      });
-
-      it('should change to blank', function() {
-        if (browser.params.browser == 'firefox') {
-          // Firefox can't handle using selects
-          return;
-        }
-        templateSelect.click();
-        templateSelect.all(by.css('option')).get(0).click();
-        expect(includeElem.isPresent()).toBe(false);
-      });
-    </file>
-  </example>
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentRequested
- * @eventType emit on the scope ngInclude was declared in
- * @description
- * Emitted every time the ngInclude content is requested.
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentLoaded
- * @eventType emit on the current ngInclude scope
- * @description
- * Emitted every time the ngInclude content is reloaded.
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-
-
-/**
- * @ngdoc event
- * @name ngInclude#$includeContentError
- * @eventType emit on the scope ngInclude was declared in
- * @description
- * Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
- *
- * @param {Object} angularEvent Synthetic event object.
- * @param {String} src URL of content to load.
- */
-var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', '$sce',
-                  function($templateRequest,   $anchorScroll,   $animate,   $sce) {
-  return {
-    restrict: 'ECA',
-    priority: 400,
-    terminal: true,
-    transclude: 'element',
-    controller: angular.noop,
-    compile: function(element, attr) {
-      var srcExp = attr.ngInclude || attr.src,
-          onloadExp = attr.onload || '',
-          autoScrollExp = attr.autoscroll;
-
-      return function(scope, $element, $attr, ctrl, $transclude) {
-        var changeCounter = 0,
-            currentScope,
-            previousElement,
-            currentElement;
-
-        var cleanupLastIncludeContent = function() {
-          if (previousElement) {
-            previousElement.remove();
-            previousElement = null;
-          }
-          if (currentScope) {
-            currentScope.$destroy();
-            currentScope = null;
-          }
-          if (currentElement) {
-            $animate.leave(currentElement).then(function() {
-              previousElement = null;
-            });
-            previousElement = currentElement;
-            currentElement = null;
-          }
-        };
-
-        scope.$watch($sce.parseAsResourceUrl(srcExp), function ngIncludeWatchAction(src) {
-          var afterAnimation = function() {
-            if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
-              $anchorScroll();
-            }
-          };
-          var thisChangeId = ++changeCounter;
-
-          if (src) {
-            //set the 2nd param to true to ignore the template request error so that the inner
-            //contents and scope can be cleaned up.
-            $templateRequest(src, true).then(function(response) {
-              if (thisChangeId !== changeCounter) return;
-              var newScope = scope.$new();
-              ctrl.template = response;
-
-              // Note: This will also link all children of ng-include that were contained in the original
-              // html. If that content contains controllers, ... they could pollute/change the scope.
-              // However, using ng-include on an element with additional content does not make sense...
-              // Note: We can't remove them in the cloneAttchFn of $transclude as that
-              // function is called before linking the content, which would apply child
-              // directives to non existing elements.
-              var clone = $transclude(newScope, function(clone) {
-                cleanupLastIncludeContent();
-                $animate.enter(clone, null, $element).then(afterAnimation);
-              });
-
-              currentScope = newScope;
-              currentElement = clone;
-
-              currentScope.$emit('$includeContentLoaded', src);
-              scope.$eval(onloadExp);
-            }, function() {
-              if (thisChangeId === changeCounter) {
-                cleanupLastIncludeContent();
-                scope.$emit('$includeContentError', src);
-              }
-            });
-            scope.$emit('$includeContentRequested', src);
-          } else {
-            cleanupLastIncludeContent();
-            ctrl.template = null;
-          }
-        });
-      };
-    }
-  };
-}];
-
-// This directive is called during the $transclude call of the first `ngInclude` directive.
-// It will replace and compile the content of the element with the loaded template.
-// We need this directive so that the element content is already filled when
-// the link function of another directive on the same element as ngInclude
-// is called.
-var ngIncludeFillContentDirective = ['$compile',
-  function($compile) {
-    return {
-      restrict: 'ECA',
-      priority: -400,
-      require: 'ngInclude',
-      link: function(scope, $element, $attr, ctrl) {
-        if (/SVG/.test($element[0].toString())) {
-          // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not
-          // support innerHTML, so detect this here and try to generate the contents
-          // specially.
-          $element.empty();
-          $compile(jqLiteBuildFragment(ctrl.template, document).childNodes)(scope,
-              function namespaceAdaptedClone(clone) {
-            $element.append(clone);
-          }, {futureParentElement: $element});
-          return;
-        }
-
-        $element.html(ctrl.template);
-        $compile($element.contents())(scope);
-      }
-    };
-  }];
-
-/**
- * @ngdoc directive
- * @name ngInit
- * @restrict AC
- *
- * @description
- * The `ngInit` directive allows you to evaluate an expression in the
- * current scope.
- *
- * <div class="alert alert-error">
- * The only appropriate use of `ngInit` is for aliasing special properties of
- * {@link ng.directive:ngRepeat `ngRepeat`}, as seen in the demo below. Besides this case, you
- * should use {@link guide/controller controllers} rather than `ngInit`
- * to initialize values on a scope.
- * </div>
- * <div class="alert alert-warning">
- * **Note**: If you have assignment in `ngInit` along with {@link ng.$filter `$filter`}, make
- * sure you have parenthesis for correct precedence:
- * <pre class="prettyprint">
- * `<div ng-init="test1 = (data | orderBy:'name')"></div>`
- * </pre>
- * </div>
- *
- * @priority 450
- *
- * @element ANY
- * @param {expression} ngInit {@link guide/expression Expression} to eval.
- *
- * @example
-   <example module="initExample">
-     <file name="index.html">
-   <script>
-     angular.module('initExample', [])
-       .controller('ExampleController', ['$scope', function($scope) {
-         $scope.list = [['a', 'b'], ['c', 'd']];
-       }]);
-   </script>
-   <div ng-controller="ExampleController">
-     <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
-       <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
-          <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
-       </div>
-     </div>
-   </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-       it('should alias index positions', function() {
-         var elements = element.all(by.css('.example-init'));
-         expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
-         expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
-         expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
-         expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
-       });
-     </file>
-   </example>
- */
-var ngInitDirective = ngDirective({
-  priority: 450,
-  compile: function() {
-    return {
-      pre: function(scope, element, attrs) {
-        scope.$eval(attrs.ngInit);
-      }
-    };
-  }
-});
-
-/**
- * @ngdoc directive
- * @name ngList
- *
- * @description
- * Text input that converts between a delimited string and an array of strings. The default
- * delimiter is a comma followed by a space - equivalent to `ng-list=", "`. You can specify a custom
- * delimiter as the value of the `ngList` attribute - for example, `ng-list=" | "`.
- *
- * The behaviour of the directive is affected by the use of the `ngTrim` attribute.
- * * If `ngTrim` is set to `"false"` then whitespace around both the separator and each
- *   list item is respected. This implies that the user of the directive is responsible for
- *   dealing with whitespace but also allows you to use whitespace as a delimiter, such as a
- *   tab or newline character.
- * * Otherwise whitespace around the delimiter is ignored when splitting (although it is respected
- *   when joining the list items back together) and whitespace around each list item is stripped
- *   before it is added to the model.
- *
- * ### Example with Validation
- *
- * <example name="ngList-directive" module="listExample">
- *   <file name="app.js">
- *      angular.module('listExample', [])
- *        .controller('ExampleController', ['$scope', function($scope) {
- *          $scope.names = ['morpheus', 'neo', 'trinity'];
- *        }]);
- *   </file>
- *   <file name="index.html">
- *    <form name="myForm" ng-controller="ExampleController">
- *      List: <input name="namesInput" ng-model="names" ng-list required>
- *      <span class="error" ng-show="myForm.namesInput.$error.required">
- *        Required!</span>
- *      <br>
- *      <tt>names = {{names}}</tt><br/>
- *      <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
- *      <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
- *      <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
- *      <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
- *     </form>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     var listInput = element(by.model('names'));
- *     var names = element(by.exactBinding('names'));
- *     var valid = element(by.binding('myForm.namesInput.$valid'));
- *     var error = element(by.css('span.error'));
- *
- *     it('should initialize to model', function() {
- *       expect(names.getText()).toContain('["morpheus","neo","trinity"]');
- *       expect(valid.getText()).toContain('true');
- *       expect(error.getCssValue('display')).toBe('none');
- *     });
- *
- *     it('should be invalid if empty', function() {
- *       listInput.clear();
- *       listInput.sendKeys('');
- *
- *       expect(names.getText()).toContain('');
- *       expect(valid.getText()).toContain('false');
- *       expect(error.getCssValue('display')).not.toBe('none');
- *     });
- *   </file>
- * </example>
- *
- * ### Example - splitting on whitespace
- * <example name="ngList-directive-newlines">
- *   <file name="index.html">
- *    <textarea ng-model="list" ng-list="&#10;" ng-trim="false"></textarea>
- *    <pre>{{ list | json }}</pre>
- *   </file>
- *   <file name="protractor.js" type="protractor">
- *     it("should split the text by newlines", function() {
- *       var listInput = element(by.model('list'));
- *       var output = element(by.binding('list | json'));
- *       listInput.sendKeys('abc\ndef\nghi');
- *       expect(output.getText()).toContain('[\n  "abc",\n  "def",\n  "ghi"\n]');
- *     });
- *   </file>
- * </example>
- *
- * @element input
- * @param {string=} ngList optional delimiter that should be used to split the value.
- */
-var ngListDirective = function() {
-  return {
-    restrict: 'A',
-    priority: 100,
-    require: 'ngModel',
-    link: function(scope, element, attr, ctrl) {
-      // We want to control whitespace trimming so we use this convoluted approach
-      // to access the ngList attribute, which doesn't pre-trim the attribute
-      var ngList = element.attr(attr.$attr.ngList) || ', ';
-      var trimValues = attr.ngTrim !== 'false';
-      var separator = trimValues ? trim(ngList) : ngList;
-
-      var parse = function(viewValue) {
-        // If the viewValue is invalid (say required but empty) it will be `undefined`
-        if (isUndefined(viewValue)) return;
-
-        var list = [];
-
-        if (viewValue) {
-          forEach(viewValue.split(separator), function(value) {
-            if (value) list.push(trimValues ? trim(value) : value);
-          });
-        }
-
-        return list;
-      };
-
-      ctrl.$parsers.push(parse);
-      ctrl.$formatters.push(function(value) {
-        if (isArray(value)) {
-          return value.join(ngList);
-        }
-
-        return undefined;
-      });
-
-      // Override the standard $isEmpty because an empty array means the input is empty.
-      ctrl.$isEmpty = function(value) {
-        return !value || !value.length;
-      };
-    }
-  };
-};
-
-/* global VALID_CLASS: true,
-  INVALID_CLASS: true,
-  PRISTINE_CLASS: true,
-  DIRTY_CLASS: true,
-  UNTOUCHED_CLASS: true,
-  TOUCHED_CLASS: true,
-*/
-
-var VALID_CLASS = 'ng-valid',
-    INVALID_CLASS = 'ng-invalid',
-    PRISTINE_CLASS = 'ng-pristine',
-    DIRTY_CLASS = 'ng-dirty',
-    UNTOUCHED_CLASS = 'ng-untouched',
-    TOUCHED_CLASS = 'ng-touched',
-    PENDING_CLASS = 'ng-pending';
-
-
-var $ngModelMinErr = new minErr('ngModel');
-
-/**
- * @ngdoc type
- * @name ngModel.NgModelController
- *
- * @property {string} $viewValue Actual string value in the view.
- * @property {*} $modelValue The value in the model that the control is bound to.
- * @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever
-       the control reads value from the DOM. The functions are called in array order, each passing
-       its return value through to the next. The last return value is forwarded to the
-       {@link ngModel.NgModelController#$validators `$validators`} collection.
-
-Parsers are used to sanitize / convert the {@link ngModel.NgModelController#$viewValue
-`$viewValue`}.
-
-Returning `undefined` from a parser means a parse error occurred. In that case,
-no {@link ngModel.NgModelController#$validators `$validators`} will run and the `ngModel`
-will be set to `undefined` unless {@link ngModelOptions `ngModelOptions.allowInvalid`}
-is set to `true`. The parse error is stored in `ngModel.$error.parse`.
-
- *
- * @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever
-       the model value changes. The functions are called in reverse array order, each passing the value through to the
-       next. The last return value is used as the actual DOM value.
-       Used to format / convert values for display in the control.
- * ```js
- * function formatter(value) {
- *   if (value) {
- *     return value.toUpperCase();
- *   }
- * }
- * ngModel.$formatters.push(formatter);
- * ```
- *
- * @property {Object.<string, function>} $validators A collection of validators that are applied
- *      whenever the model value changes. The key value within the object refers to the name of the
- *      validator while the function refers to the validation operation. The validation operation is
- *      provided with the model value as an argument and must return a true or false value depending
- *      on the response of that validation.
- *
- * ```js
- * ngModel.$validators.validCharacters = function(modelValue, viewValue) {
- *   var value = modelValue || viewValue;
- *   return /[0-9]+/.test(value) &&
- *          /[a-z]+/.test(value) &&
- *          /[A-Z]+/.test(value) &&
- *          /\W+/.test(value);
- * };
- * ```
- *
- * @property {Object.<string, function>} $asyncValidators A collection of validations that are expected to
- *      perform an asynchronous validation (e.g. a HTTP request). The validation function that is provided
- *      is expected to return a promise when it is run during the model validation process. Once the promise
- *      is delivered then the validation status will be set to true when fulfilled and false when rejected.
- *      When the asynchronous validators are triggered, each of the validators will run in parallel and the model
- *      value will only be updated once all validators have been fulfilled. As long as an asynchronous validator
- *      is unfulfilled, its key will be added to the controllers `$pending` property. Also, all asynchronous validators
- *      will only run once all synchronous validators have passed.
- *
- * Please note that if $http is used then it is important that the server returns a success HTTP response code
- * in order to fulfill the validation and a status level of `4xx` in order to reject the validation.
- *
- * ```js
- * ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
- *   var value = modelValue || viewValue;
- *
- *   // Lookup user by username
- *   return $http.get('/api/users/' + value).
- *      then(function resolved() {
- *        //username exists, this means validation fails
- *        return $q.reject('exists');
- *      }, function rejected() {
- *        //username does not exist, therefore this validation passes
- *        return true;
- *      });
- * };
- * ```
- *
- * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the
- *     view value has changed. It is called with no arguments, and its return value is ignored.
- *     This can be used in place of additional $watches against the model value.
- *
- * @property {Object} $error An object hash with all failing validator ids as keys.
- * @property {Object} $pending An object hash with all pending validator ids as keys.
- *
- * @property {boolean} $untouched True if control has not lost focus yet.
- * @property {boolean} $touched True if control has lost focus.
- * @property {boolean} $pristine True if user has not interacted with the control yet.
- * @property {boolean} $dirty True if user has already interacted with the control.
- * @property {boolean} $valid True if there is no error.
- * @property {boolean} $invalid True if at least one error on the control.
- * @property {string} $name The name attribute of the control.
- *
- * @description
- *
- * `NgModelController` provides API for the {@link ngModel `ngModel`} directive.
- * The controller contains services for data-binding, validation, CSS updates, and value formatting
- * and parsing. It purposefully does not contain any logic which deals with DOM rendering or
- * listening to DOM events.
- * Such DOM related logic should be provided by other directives which make use of
- * `NgModelController` for data-binding to control elements.
- * Angular provides this DOM logic for most {@link input `input`} elements.
- * At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example
- * custom control example} that uses `ngModelController` to bind to `contenteditable` elements.
- *
- * @example
- * ### Custom Control Example
- * This example shows how to use `NgModelController` with a custom control to achieve
- * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
- * collaborate together to achieve the desired result.
- *
- * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element
- * contents be edited in place by the user.  This will not work on older browsers.
- *
- * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}
- * module to automatically remove "bad" content like inline event listener (e.g. `<span onclick="...">`).
- * However, as we are using `$sce` the model can still decide to provide unsafe content if it marks
- * that content using the `$sce` service.
- *
- * <example name="NgModelController" module="customControl" deps="angular-sanitize.js">
-    <file name="style.css">
-      [contenteditable] {
-        border: 1px solid black;
-        background-color: white;
-        min-height: 20px;
-      }
-
-      .ng-invalid {
-        border: 1px solid red;
-      }
-
-    </file>
-    <file name="script.js">
-      angular.module('customControl', ['ngSanitize']).
-        directive('contenteditable', ['$sce', function($sce) {
-          return {
-            restrict: 'A', // only activate on element attribute
-            require: '?ngModel', // get a hold of NgModelController
-            link: function(scope, element, attrs, ngModel) {
-              if (!ngModel) return; // do nothing if no ng-model
-
-              // Specify how UI should be updated
-              ngModel.$render = function() {
-                element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
-              };
-
-              // Listen for change events to enable binding
-              element.on('blur keyup change', function() {
-                scope.$evalAsync(read);
-              });
-              read(); // initialize
-
-              // Write data to the model
-              function read() {
-                var html = element.html();
-                // When we clear the content editable the browser leaves a <br> behind
-                // If strip-br attribute is provided then we strip this out
-                if ( attrs.stripBr && html == '<br>' ) {
-                  html = '';
-                }
-                ngModel.$setViewValue(html);
-              }
-            }
-          };
-        }]);
-    </file>
-    <file name="index.html">
-      <form name="myForm">
-       <div contenteditable
-            name="myWidget" ng-model="userContent"
-            strip-br="true"
-            required>Change me!</div>
-        <span ng-show="myForm.myWidget.$error.required">Required!</span>
-       <hr>
-       <textarea ng-model="userContent"></textarea>
-      </form>
-    </file>
-    <file name="protractor.js" type="protractor">
-    it('should data-bind and become invalid', function() {
-      if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {
-        // SafariDriver can't handle contenteditable
-        // and Firefox driver can't clear contenteditables very well
-        return;
-      }
-      var contentEditable = element(by.css('[contenteditable]'));
-      var content = 'Change me!';
-
-      expect(contentEditable.getText()).toEqual(content);
-
-      contentEditable.clear();
-      contentEditable.sendKeys(protractor.Key.BACK_SPACE);
-      expect(contentEditable.getText()).toEqual('');
-      expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);
-    });
-    </file>
- * </example>
- *
- *
- */
-var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', '$interpolate',
-    function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) {
-  this.$viewValue = Number.NaN;
-  this.$modelValue = Number.NaN;
-  this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.
-  this.$validators = {};
-  this.$asyncValidators = {};
-  this.$parsers = [];
-  this.$formatters = [];
-  this.$viewChangeListeners = [];
-  this.$untouched = true;
-  this.$touched = false;
-  this.$pristine = true;
-  this.$dirty = false;
-  this.$valid = true;
-  this.$invalid = false;
-  this.$error = {}; // keep invalid keys here
-  this.$$success = {}; // keep valid keys here
-  this.$pending = undefined; // keep pending keys here
-  this.$name = $interpolate($attr.name || '', false)($scope);
-
-
-  var parsedNgModel = $parse($attr.ngModel),
-      parsedNgModelAssign = parsedNgModel.assign,
-      ngModelGet = parsedNgModel,
-      ngModelSet = parsedNgModelAssign,
-      pendingDebounce = null,
-      ctrl = this;
-
-  this.$$setOptions = function(options) {
-    ctrl.$options = options;
-    if (options && options.getterSetter) {
-      var invokeModelGetter = $parse($attr.ngModel + '()'),
-          invokeModelSetter = $parse($attr.ngModel + '($$$p)');
-
-      ngModelGet = function($scope) {
-        var modelValue = parsedNgModel($scope);
-        if (isFunction(modelValue)) {
-          modelValue = invokeModelGetter($scope);
-        }
-        return modelValue;
-      };
-      ngModelSet = function($scope, newValue) {
-        if (isFunction(parsedNgModel($scope))) {
-          invokeModelSetter($scope, {$$$p: ctrl.$modelValue});
-        } else {
-          parsedNgModelAssign($scope, ctrl.$modelValue);
-        }
-      };
-    } else if (!parsedNgModel.assign) {
-      throw $ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}",
-          $attr.ngModel, startingTag($element));
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$render
-   *
-   * @description
-   * Called when the view needs to be updated. It is expected that the user of the ng-model
-   * directive will implement this method.
-   *
-   * The `$render()` method is invoked in the following situations:
-   *
-   * * `$rollbackViewValue()` is called.  If we are rolling back the view value to the last
-   *   committed value then `$render()` is called to update the input control.
-   * * The value referenced by `ng-model` is changed programmatically and both the `$modelValue` and
-   *   the `$viewValue` are different to last time.
-   *
-   * Since `ng-model` does not do a deep watch, `$render()` is only invoked if the values of
-   * `$modelValue` and `$viewValue` are actually different to their previous value. If `$modelValue`
-   * or `$viewValue` are objects (rather than a string or number) then `$render()` will not be
-   * invoked if you only change a property on the objects.
-   */
-  this.$render = noop;
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$isEmpty
-   *
-   * @description
-   * This is called when we need to determine if the value of an input is empty.
-   *
-   * For instance, the required directive does this to work out if the input has data or not.
-   *
-   * The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.
-   *
-   * You can override this for input directives whose concept of being empty is different to the
-   * default. The `checkboxInputType` directive does this because in its case a value of `false`
-   * implies empty.
-   *
-   * @param {*} value The value of the input to check for emptiness.
-   * @returns {boolean} True if `value` is "empty".
-   */
-  this.$isEmpty = function(value) {
-    return isUndefined(value) || value === '' || value === null || value !== value;
-  };
-
-  var parentForm = $element.inheritedData('$formController') || nullFormCtrl,
-      currentValidationRunId = 0;
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setValidity
-   *
-   * @description
-   * Change the validity state, and notify the form.
-   *
-   * This method can be called within $parsers/$formatters or a custom validation implementation.
-   * However, in most cases it should be sufficient to use the `ngModel.$validators` and
-   * `ngModel.$asyncValidators` collections which will call `$setValidity` automatically.
-   *
-   * @param {string} validationErrorKey Name of the validator. The `validationErrorKey` will be assigned
-   *        to either `$error[validationErrorKey]` or `$pending[validationErrorKey]`
-   *        (for unfulfilled `$asyncValidators`), so that it is available for data-binding.
-   *        The `validationErrorKey` should be in camelCase and will get converted into dash-case
-   *        for class name. Example: `myError` will result in `ng-valid-my-error` and `ng-invalid-my-error`
-   *        class and can be bound to as  `{{someForm.someControl.$error.myError}}` .
-   * @param {boolean} isValid Whether the current state is valid (true), invalid (false), pending (undefined),
-   *                          or skipped (null). Pending is used for unfulfilled `$asyncValidators`.
-   *                          Skipped is used by Angular when validators do not run because of parse errors and
-   *                          when `$asyncValidators` do not run because any of the `$validators` failed.
-   */
-  addSetValidityMethod({
-    ctrl: this,
-    $element: $element,
-    set: function(object, property) {
-      object[property] = true;
-    },
-    unset: function(object, property) {
-      delete object[property];
-    },
-    parentForm: parentForm,
-    $animate: $animate
-  });
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setPristine
-   *
-   * @description
-   * Sets the control to its pristine state.
-   *
-   * This method can be called to remove the `ng-dirty` class and set the control to its pristine
-   * state (`ng-pristine` class). A model is considered to be pristine when the control
-   * has not been changed from when first compiled.
-   */
-  this.$setPristine = function() {
-    ctrl.$dirty = false;
-    ctrl.$pristine = true;
-    $animate.removeClass($element, DIRTY_CLASS);
-    $animate.addClass($element, PRISTINE_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setDirty
-   *
-   * @description
-   * Sets the control to its dirty state.
-   *
-   * This method can be called to remove the `ng-pristine` class and set the control to its dirty
-   * state (`ng-dirty` class). A model is considered to be dirty when the control has been changed
-   * from when first compiled.
-   */
-  this.$setDirty = function() {
-    ctrl.$dirty = true;
-    ctrl.$pristine = false;
-    $animate.removeClass($element, PRISTINE_CLASS);
-    $animate.addClass($element, DIRTY_CLASS);
-    parentForm.$setDirty();
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setUntouched
-   *
-   * @description
-   * Sets the control to its untouched state.
-   *
-   * This method can be called to remove the `ng-touched` class and set the control to its
-   * untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched
-   * by default, however this function can be used to restore that state if the model has
-   * already been touched by the user.
-   */
-  this.$setUntouched = function() {
-    ctrl.$touched = false;
-    ctrl.$untouched = true;
-    $animate.setClass($element, UNTOUCHED_CLASS, TOUCHED_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setTouched
-   *
-   * @description
-   * Sets the control to its touched state.
-   *
-   * This method can be called to remove the `ng-untouched` class and set the control to its
-   * touched state (`ng-touched` class). A model is considered to be touched when the user has
-   * first focused the control element and then shifted focus away from the control (blur event).
-   */
-  this.$setTouched = function() {
-    ctrl.$touched = true;
-    ctrl.$untouched = false;
-    $animate.setClass($element, TOUCHED_CLASS, UNTOUCHED_CLASS);
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$rollbackViewValue
-   *
-   * @description
-   * Cancel an update and reset the input element's value to prevent an update to the `$modelValue`,
-   * which may be caused by a pending debounced event or because the input is waiting for a some
-   * future event.
-   *
-   * If you have an input that uses `ng-model-options` to set up debounced events or events such
-   * as blur you can have a situation where there is a period when the `$viewValue`
-   * is out of synch with the ngModel's `$modelValue`.
-   *
-   * In this case, you can run into difficulties if you try to update the ngModel's `$modelValue`
-   * programmatically before these debounced/future events have resolved/occurred, because Angular's
-   * dirty checking mechanism is not able to tell whether the model has actually changed or not.
-   *
-   * The `$rollbackViewValue()` method should be called before programmatically changing the model of an
-   * input which may have such events pending. This is important in order to make sure that the
-   * input field will be updated with the new model value and any pending operations are cancelled.
-   *
-   * <example name="ng-model-cancel-update" module="cancel-update-example">
-   *   <file name="app.js">
-   *     angular.module('cancel-update-example', [])
-   *
-   *     .controller('CancelUpdateController', ['$scope', function($scope) {
-   *       $scope.resetWithCancel = function(e) {
-   *         if (e.keyCode == 27) {
-   *           $scope.myForm.myInput1.$rollbackViewValue();
-   *           $scope.myValue = '';
-   *         }
-   *       };
-   *       $scope.resetWithoutCancel = function(e) {
-   *         if (e.keyCode == 27) {
-   *           $scope.myValue = '';
-   *         }
-   *       };
-   *     }]);
-   *   </file>
-   *   <file name="index.html">
-   *     <div ng-controller="CancelUpdateController">
-   *       <p>Try typing something in each input.  See that the model only updates when you
-   *          blur off the input.
-   *        </p>
-   *        <p>Now see what happens if you start typing then press the Escape key</p>
-   *
-   *       <form name="myForm" ng-model-options="{ updateOn: 'blur' }">
-   *         <p>With $rollbackViewValue()</p>
-   *         <input name="myInput1" ng-model="myValue" ng-keydown="resetWithCancel($event)"><br/>
-   *         myValue: "{{ myValue }}"
-   *
-   *         <p>Without $rollbackViewValue()</p>
-   *         <input name="myInput2" ng-model="myValue" ng-keydown="resetWithoutCancel($event)"><br/>
-   *         myValue: "{{ myValue }}"
-   *       </form>
-   *     </div>
-   *   </file>
-   * </example>
-   */
-  this.$rollbackViewValue = function() {
-    $timeout.cancel(pendingDebounce);
-    ctrl.$viewValue = ctrl.$$lastCommittedViewValue;
-    ctrl.$render();
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$validate
-   *
-   * @description
-   * Runs each of the registered validators (first synchronous validators and then
-   * asynchronous validators).
-   * If the validity changes to invalid, the model will be set to `undefined`,
-   * unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
-   * If the validity changes to valid, it will set the model to the last available valid
-   * modelValue, i.e. either the last parsed value or the last value set from the scope.
-   */
-  this.$validate = function() {
-    // ignore $validate before model is initialized
-    if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
-      return;
-    }
-
-    var viewValue = ctrl.$$lastCommittedViewValue;
-    // Note: we use the $$rawModelValue as $modelValue might have been
-    // set to undefined during a view -> model update that found validation
-    // errors. We can't parse the view here, since that could change
-    // the model although neither viewValue nor the model on the scope changed
-    var modelValue = ctrl.$$rawModelValue;
-
-    // Check if the there's a parse error, so we don't unset it accidentially
-    var parserName = ctrl.$$parserName || 'parse';
-    var parserValid = ctrl.$error[parserName] ? false : undefined;
-
-    var prevValid = ctrl.$valid;
-    var prevModelValue = ctrl.$modelValue;
-
-    var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
-
-    ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) {
-      // If there was no change in validity, don't update the model
-      // This prevents changing an invalid modelValue to undefined
-      if (!allowInvalid && prevValid !== allValid) {
-        // Note: Don't check ctrl.$valid here, as we could have
-        // external validators (e.g. calculated on the server),
-        // that just call $setValidity and need the model value
-        // to calculate their validity.
-        ctrl.$modelValue = allValid ? modelValue : undefined;
-
-        if (ctrl.$modelValue !== prevModelValue) {
-          ctrl.$$writeModelToScope();
-        }
-      }
-    });
-
-  };
-
-  this.$$runValidators = function(parseValid, modelValue, viewValue, doneCallback) {
-    currentValidationRunId++;
-    var localValidationRunId = currentValidationRunId;
-
-    // check parser error
-    if (!processParseErrors(parseValid)) {
-      validationDone(false);
-      return;
-    }
-    if (!processSyncValidators()) {
-      validationDone(false);
-      return;
-    }
-    processAsyncValidators();
-
-    function processParseErrors(parseValid) {
-      var errorKey = ctrl.$$parserName || 'parse';
-      if (parseValid === undefined) {
-        setValidity(errorKey, null);
-      } else {
-        setValidity(errorKey, parseValid);
-        if (!parseValid) {
-          forEach(ctrl.$validators, function(v, name) {
-            setValidity(name, null);
-          });
-          forEach(ctrl.$asyncValidators, function(v, name) {
-            setValidity(name, null);
-          });
-          return false;
-        }
-      }
-      return true;
-    }
-
-    function processSyncValidators() {
-      var syncValidatorsValid = true;
-      forEach(ctrl.$validators, function(validator, name) {
-        var result = validator(modelValue, viewValue);
-        syncValidatorsValid = syncValidatorsValid && result;
-        setValidity(name, result);
-      });
-      if (!syncValidatorsValid) {
-        forEach(ctrl.$asyncValidators, function(v, name) {
-          setValidity(name, null);
-        });
-        return false;
-      }
-      return true;
-    }
-
-    function processAsyncValidators() {
-      var validatorPromises = [];
-      var allValid = true;
-      forEach(ctrl.$asyncValidators, function(validator, name) {
-        var promise = validator(modelValue, viewValue);
-        if (!isPromiseLike(promise)) {
-          throw $ngModelMinErr("$asyncValidators",
-            "Expected asynchronous validator to return a promise but got '{0}' instead.", promise);
-        }
-        setValidity(name, undefined);
-        validatorPromises.push(promise.then(function() {
-          setValidity(name, true);
-        }, function(error) {
-          allValid = false;
-          setValidity(name, false);
-        }));
-      });
-      if (!validatorPromises.length) {
-        validationDone(true);
-      } else {
-        $q.all(validatorPromises).then(function() {
-          validationDone(allValid);
-        }, noop);
-      }
-    }
-
-    function setValidity(name, isValid) {
-      if (localValidationRunId === currentValidationRunId) {
-        ctrl.$setValidity(name, isValid);
-      }
-    }
-
-    function validationDone(allValid) {
-      if (localValidationRunId === currentValidationRunId) {
-
-        doneCallback(allValid);
-      }
-    }
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$commitViewValue
-   *
-   * @description
-   * Commit a pending update to the `$modelValue`.
-   *
-   * Updates may be pending by a debounced event or because the input is waiting for a some future
-   * event defined in `ng-model-options`. this method is rarely needed as `NgModelController`
-   * usually handles calling this in response to input events.
-   */
-  this.$commitViewValue = function() {
-    var viewValue = ctrl.$viewValue;
-
-    $timeout.cancel(pendingDebounce);
-
-    // If the view value has not changed then we should just exit, except in the case where there is
-    // a native validator on the element. In this case the validation state may have changed even though
-    // the viewValue has stayed empty.
-    if (ctrl.$$lastCommittedViewValue === viewValue && (viewValue !== '' || !ctrl.$$hasNativeValidators)) {
-      return;
-    }
-    ctrl.$$lastCommittedViewValue = viewValue;
-
-    // change to dirty
-    if (ctrl.$pristine) {
-      this.$setDirty();
-    }
-    this.$$parseAndValidate();
-  };
-
-  this.$$parseAndValidate = function() {
-    var viewValue = ctrl.$$lastCommittedViewValue;
-    var modelValue = viewValue;
-    var parserValid = isUndefined(modelValue) ? undefined : true;
-
-    if (parserValid) {
-      for (var i = 0; i < ctrl.$parsers.length; i++) {
-        modelValue = ctrl.$parsers[i](modelValue);
-        if (isUndefined(modelValue)) {
-          parserValid = false;
-          break;
-        }
-      }
-    }
-    if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
-      // ctrl.$modelValue has not been touched yet...
-      ctrl.$modelValue = ngModelGet($scope);
-    }
-    var prevModelValue = ctrl.$modelValue;
-    var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
-    ctrl.$$rawModelValue = modelValue;
-
-    if (allowInvalid) {
-      ctrl.$modelValue = modelValue;
-      writeToModelIfNeeded();
-    }
-
-    // Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
-    // This can happen if e.g. $setViewValue is called from inside a parser
-    ctrl.$$runValidators(parserValid, modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
-      if (!allowInvalid) {
-        // Note: Don't check ctrl.$valid here, as we could have
-        // external validators (e.g. calculated on the server),
-        // that just call $setValidity and need the model value
-        // to calculate their validity.
-        ctrl.$modelValue = allValid ? modelValue : undefined;
-        writeToModelIfNeeded();
-      }
-    });
-
-    function writeToModelIfNeeded() {
-      if (ctrl.$modelValue !== prevModelValue) {
-        ctrl.$$writeModelToScope();
-      }
-    }
-  };
-
-  this.$$writeModelToScope = function() {
-    ngModelSet($scope, ctrl.$modelValue);
-    forEach(ctrl.$viewChangeListeners, function(listener) {
-      try {
-        listener();
-      } catch (e) {
-        $exceptionHandler(e);
-      }
-    });
-  };
-
-  /**
-   * @ngdoc method
-   * @name ngModel.NgModelController#$setViewValue
-   *
-   * @description
-   * Update the view value.
-   *
-   * This method should be called when an input directive want to change the view value; typically,
-   * this is done from within a DOM event handler.
-   *
-   * For example {@link ng.directive:input input} calls it when the value of the input changes and
-   * {@link ng.directive:select select} calls it when an option is selected.
-   *
-   * If the new `value` is an object (rather than a string or a number), we should make a copy of the
-   * object before passing it to `$setViewValue`.  This is because `ngModel` does not perform a deep
-   * watch of objects, it only looks for a change of identity. If you only change the property of
-   * the object then ngModel will not realise that the object has changed and will not invoke the
-   * `$parsers` and `$validators` pipelines.
-   *
-   * For this reason, you should not change properties of the copy once it has been passed to
-   * `$setViewValue`. Otherwise you may cause the model value on the scope to change incorrectly.
-   *
-   * When this method is called, the new `value` will be staged for committing through the `$parsers`
-   * and `$validators` pipelines. If there are no special {@link ngModelOptions} specified then the staged
-   * value sent directly for processing, finally to be applied to `$modelValue` and then the
-   * **expression** specified in the `ng-model` attribute.
-   *
-   * Lastly, all the registered change listeners, in the `$viewChangeListeners` list, are called.
-   *
-   * In case the {@link ng.directive:ngModelOptions ngModelOptions} directive is used with `updateOn`
-   * and the `default` trigger is not listed, all those actions will remain pending until one of the
-   * `updateOn` events is triggered on the DOM element.
-   * All these actions will be debounced if the {@link ng.directive:ngModelOptions ngModelOptions}
-   * directive is used with a custom debounce for this particular event.
-   *
-   * Note that calling this function does not trigger a `$digest`.
-   *
-   * @param {string} value Value from the view.
-   * @param {string} trigger Event that triggered the update.
-   */
-  this.$setViewValue = function(value, trigger) {
-    ctrl.$viewValue = value;
-    if (!ctrl.$options || ctrl.$options.updateOnDefault) {
-      ctrl.$$debounceViewValueCommit(trigger);
-    }
-  };
-
-  this.$$debounceViewValueCommit = function(trigger) {
-    var debounceDelay = 0,
-        options = ctrl.$options,
-        debounce;
-
-    if (options && isDefined(options.debounce)) {
-      debounce = options.debounce;
-      if (isNumber(debounce)) {
-        debounceDelay = debounce;
-      } else if (isNumber(debounce[trigger])) {
-        debounceDelay = debounce[trigger];
-      } else if (isNumber(debounce['default'])) {
-        debounceDelay = debounce['default'];
-      }
-    }
-
-    $timeout.cancel(pendingDebounce);
-    if (debounceDelay) {
-      pendingDebounce = $timeout(function() {
-        ctrl.$commitViewValue();
-      }, debounceDelay);
-    } else if ($rootScope.$$phase) {
-      ctrl.$commitViewValue();
-    } else {
-      $scope.$apply(function() {
-        ctrl.$commitViewValue();
-      });
-    }
-  };
-
-  // model -> value
-  // Note: we cannot use a normal scope.$watch as we want to detect the following:
-  // 1. scope value is 'a'
-  // 2. user enters 'b'
-  // 3. ng-change kicks in and reverts scope value to 'a'
-  //    -> scope value did not change since the last digest as
-  //       ng-change executes in apply phase
-  // 4. view should be changed back to 'a'
-  $scope.$watch(function ngModelWatch() {
-    var modelValue = ngModelGet($scope);
-
-    // if scope model value and ngModel value are out of sync
-    // TODO(perf): why not move this to the action fn?
-    if (modelValue !== ctrl.$modelValue) {
-      ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
-
-      var formatters = ctrl.$formatters,
-          idx = formatters.length;
-
-      var viewValue = modelValue;
-      while (idx--) {
-        viewValue = formatters[idx](viewValue);
-      }
-      if (ctrl.$viewValue !== viewValue) {
-        ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
-        ctrl.$render();
-
-        ctrl.$$runValidators(undefined, modelValue, viewValue, noop);
-      }
-    }
-
-    return modelValue;
-  });
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngModel
- *
- * @element input
- * @priority 1
- *
- * @description
- * The `ngModel` directive binds an `input`,`select`, `textarea` (or custom form control) to a
- * property on the scope using {@link ngModel.NgModelController NgModelController},
- * which is created and exposed by this directive.
- *
- * `ngModel` is responsible for:
- *
- * - Binding the view into the model, which other directives such as `input`, `textarea` or `select`
- *   require.
- * - Providing validation behavior (i.e. required, number, email, url).
- * - Keeping the state of the control (valid/invalid, dirty/pristine, touched/untouched, validation errors).
- * - Setting related css classes on the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`, `ng-touched`, `ng-untouched`) including animations.
- * - Registering the control with its parent {@link ng.directive:form form}.
- *
- * Note: `ngModel` will try to bind to the property given by evaluating the expression on the
- * current scope. If the property doesn't already exist on this scope, it will be created
- * implicitly and added to the scope.
- *
- * For best practices on using `ngModel`, see:
- *
- *  - [Understanding Scopes](https://github.com/angular/angular.js/wiki/Understanding-Scopes)
- *
- * For basic examples, how to use `ngModel`, see:
- *
- *  - {@link ng.directive:input input}
- *    - {@link input[text] text}
- *    - {@link input[checkbox] checkbox}
- *    - {@link input[radio] radio}
- *    - {@link input[number] number}
- *    - {@link input[email] email}
- *    - {@link input[url] url}
- *    - {@link input[date] date}
- *    - {@link input[datetime-local] datetime-local}
- *    - {@link input[time] time}
- *    - {@link input[month] month}
- *    - {@link input[week] week}
- *  - {@link ng.directive:select select}
- *  - {@link ng.directive:textarea textarea}
- *
- * # CSS classes
- * The following CSS classes are added and removed on the associated input/select/textarea element
- * depending on the validity of the model.
- *
- *  - `ng-valid`: the model is valid
- *  - `ng-invalid`: the model is invalid
- *  - `ng-valid-[key]`: for each valid key added by `$setValidity`
- *  - `ng-invalid-[key]`: for each invalid key added by `$setValidity`
- *  - `ng-pristine`: the control hasn't been interacted with yet
- *  - `ng-dirty`: the control has been interacted with
- *  - `ng-touched`: the control has been blurred
- *  - `ng-untouched`: the control hasn't been blurred
- *  - `ng-pending`: any `$asyncValidators` are unfulfilled
- *
- * Keep in mind that ngAnimate can detect each of these classes when added and removed.
- *
- * ## Animation Hooks
- *
- * Animations within models are triggered when any of the associated CSS classes are added and removed
- * on the input element which is attached to the model. These classes are: `.ng-pristine`, `.ng-dirty`,
- * `.ng-invalid` and `.ng-valid` as well as any other validations that are performed on the model itself.
- * The animations that are triggered within ngModel are similar to how they work in ngClass and
- * animations can be hooked into using CSS transitions, keyframes as well as JS animations.
- *
- * The following example shows a simple way to utilize CSS transitions to style an input element
- * that has been rendered as invalid after it has been validated:
- *
- * <pre>
- * //be sure to include ngAnimate as a module to hook into more
- * //advanced animations
- * .my-input {
- *   transition:0.5s linear all;
- *   background: white;
- * }
- * .my-input.ng-invalid {
- *   background: red;
- *   color:white;
- * }
- * </pre>
- *
- * @example
- * <example deps="angular-animate.js" animations="true" fixBase="true" module="inputExample">
-     <file name="index.html">
-       <script>
-        angular.module('inputExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.val = '1';
-          }]);
-       </script>
-       <style>
-         .my-input {
-           -webkit-transition:all linear 0.5s;
-           transition:all linear 0.5s;
-           background: transparent;
-         }
-         .my-input.ng-invalid {
-           color:white;
-           background: red;
-         }
-       </style>
-       Update input to see transitions when valid/invalid.
-       Integer is a valid value.
-       <form name="testForm" ng-controller="ExampleController">
-         <input ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input" />
-       </form>
-     </file>
- * </example>
- *
- * ## Binding to a getter/setter
- *
- * Sometimes it's helpful to bind `ngModel` to a getter/setter function.  A getter/setter is a
- * function that returns a representation of the model when called with zero arguments, and sets
- * the internal state of a model when called with an argument. It's sometimes useful to use this
- * for models that have an internal representation that's different than what the model exposes
- * to the view.
- *
- * <div class="alert alert-success">
- * **Best Practice:** It's best to keep getters fast because Angular is likely to call them more
- * frequently than other parts of your code.
- * </div>
- *
- * You use this behavior by adding `ng-model-options="{ getterSetter: true }"` to an element that
- * has `ng-model` attached to it. You can also add `ng-model-options="{ getterSetter: true }"` to
- * a `<form>`, which will enable this behavior for all `<input>`s within it. See
- * {@link ng.directive:ngModelOptions `ngModelOptions`} for more.
- *
- * The following example shows how to use `ngModel` with a getter/setter:
- *
- * @example
- * <example name="ngModel-getter-setter" module="getterSetterExample">
-     <file name="index.html">
-       <div ng-controller="ExampleController">
-         <form name="userForm">
-           Name:
-           <input type="text" name="userName"
-                  ng-model="user.name"
-                  ng-model-options="{ getterSetter: true }" />
-         </form>
-         <pre>user.name = <span ng-bind="user.name()"></span></pre>
-       </div>
-     </file>
-     <file name="app.js">
-       angular.module('getterSetterExample', [])
-         .controller('ExampleController', ['$scope', function($scope) {
-           var _name = 'Brian';
-           $scope.user = {
-             name: function(newName) {
-               if (angular.isDefined(newName)) {
-                 _name = newName;
-               }
-               return _name;
-             }
-           };
-         }]);
-     </file>
- * </example>
- */
-var ngModelDirective = ['$rootScope', function($rootScope) {
-  return {
-    restrict: 'A',
-    require: ['ngModel', '^?form', '^?ngModelOptions'],
-    controller: NgModelController,
-    // Prelink needs to run before any input directive
-    // so that we can set the NgModelOptions in NgModelController
-    // before anyone else uses it.
-    priority: 1,
-    compile: function ngModelCompile(element) {
-      // Setup initial state of the control
-      element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);
-
-      return {
-        pre: function ngModelPreLink(scope, element, attr, ctrls) {
-          var modelCtrl = ctrls[0],
-              formCtrl = ctrls[1] || nullFormCtrl;
-
-          modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options);
-
-          // notify others, especially parent forms
-          formCtrl.$addControl(modelCtrl);
-
-          attr.$observe('name', function(newValue) {
-            if (modelCtrl.$name !== newValue) {
-              formCtrl.$$renameControl(modelCtrl, newValue);
-            }
-          });
-
-          scope.$on('$destroy', function() {
-            formCtrl.$removeControl(modelCtrl);
-          });
-        },
-        post: function ngModelPostLink(scope, element, attr, ctrls) {
-          var modelCtrl = ctrls[0];
-          if (modelCtrl.$options && modelCtrl.$options.updateOn) {
-            element.on(modelCtrl.$options.updateOn, function(ev) {
-              modelCtrl.$$debounceViewValueCommit(ev && ev.type);
-            });
-          }
-
-          element.on('blur', function(ev) {
-            if (modelCtrl.$touched) return;
-
-            if ($rootScope.$$phase) {
-              scope.$evalAsync(modelCtrl.$setTouched);
-            } else {
-              scope.$apply(modelCtrl.$setTouched);
-            }
-          });
-        }
-      };
-    }
-  };
-}];
-
-var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/;
-
-/**
- * @ngdoc directive
- * @name ngModelOptions
- *
- * @description
- * Allows tuning how model updates are done. Using `ngModelOptions` you can specify a custom list of
- * events that will trigger a model update and/or a debouncing delay so that the actual update only
- * takes place when a timer expires; this timer will be reset after another change takes place.
- *
- * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might
- * be different than the value in the actual model. This means that if you update the model you
- * should also invoke {@link ngModel.NgModelController `$rollbackViewValue`} on the relevant input field in
- * order to make sure it is synchronized with the model and that any debounced action is canceled.
- *
- * The easiest way to reference the control's {@link ngModel.NgModelController `$rollbackViewValue`}
- * method is by making sure the input is placed inside a form that has a `name` attribute. This is
- * important because `form` controllers are published to the related scope under the name in their
- * `name` attribute.
- *
- * Any pending changes will take place immediately when an enclosing form is submitted via the
- * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
- * to have access to the updated model.
- *
- * `ngModelOptions` has an effect on the element it's declared on and its descendants.
- *
- * @param {Object} ngModelOptions options to apply to the current model. Valid keys are:
- *   - `updateOn`: string specifying which event should the input be bound to. You can set several
- *     events using an space delimited list. There is a special event called `default` that
- *     matches the default events belonging of the control.
- *   - `debounce`: integer value which contains the debounce model update value in milliseconds. A
- *     value of 0 triggers an immediate update. If an object is supplied instead, you can specify a
- *     custom value for each event. For example:
- *     `ng-model-options="{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }"`
- *   - `allowInvalid`: boolean value which indicates that the model can be set with values that did
- *     not validate correctly instead of the default behavior of setting the model to undefined.
- *   - `getterSetter`: boolean value which determines whether or not to treat functions bound to
-       `ngModel` as getters/setters.
- *   - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for
- *     `<input type="date">`, `<input type="time">`, ... . Right now, the only supported value is `'UTC'`,
- *     otherwise the default timezone of the browser will be used.
- *
- * @example
-
-  The following example shows how to override immediate updates. Changes on the inputs within the
-  form will update the model only when the control loses focus (blur event). If `escape` key is
-  pressed while the input field is focused, the value is reset to the value in the current model.
-
-  <example name="ngModelOptions-directive-blur" module="optionsExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ updateOn: 'blur' }"
-                 ng-keyup="cancel($event)" /><br />
-
-          Other data:
-          <input type="text" ng-model="user.data" /><br />
-        </form>
-        <pre>user.name = <span ng-bind="user.name"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('optionsExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.user = { name: 'say', data: '' };
-
-          $scope.cancel = function(e) {
-            if (e.keyCode == 27) {
-              $scope.userForm.userName.$rollbackViewValue();
-            }
-          };
-        }]);
-    </file>
-    <file name="protractor.js" type="protractor">
-      var model = element(by.binding('user.name'));
-      var input = element(by.model('user.name'));
-      var other = element(by.model('user.data'));
-
-      it('should allow custom events', function() {
-        input.sendKeys(' hello');
-        input.click();
-        expect(model.getText()).toEqual('say');
-        other.click();
-        expect(model.getText()).toEqual('say hello');
-      });
-
-      it('should $rollbackViewValue when model changes', function() {
-        input.sendKeys(' hello');
-        expect(input.getAttribute('value')).toEqual('say hello');
-        input.sendKeys(protractor.Key.ESCAPE);
-        expect(input.getAttribute('value')).toEqual('say');
-        other.click();
-        expect(model.getText()).toEqual('say');
-      });
-    </file>
-  </example>
-
-  This one shows how to debounce model changes. Model will be updated only 1 sec after last change.
-  If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.
-
-  <example name="ngModelOptions-directive-debounce" module="optionsExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ debounce: 1000 }" />
-          <button ng-click="userForm.userName.$rollbackViewValue(); user.name=''">Clear</button><br />
-        </form>
-        <pre>user.name = <span ng-bind="user.name"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('optionsExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.user = { name: 'say' };
-        }]);
-    </file>
-  </example>
-
-  This one shows how to bind to getter/setters:
-
-  <example name="ngModelOptions-directive-getter-setter" module="getterSetterExample">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <form name="userForm">
-          Name:
-          <input type="text" name="userName"
-                 ng-model="user.name"
-                 ng-model-options="{ getterSetter: true }" />
-        </form>
-        <pre>user.name = <span ng-bind="user.name()"></span></pre>
-      </div>
-    </file>
-    <file name="app.js">
-      angular.module('getterSetterExample', [])
-        .controller('ExampleController', ['$scope', function($scope) {
-          var _name = 'Brian';
-          $scope.user = {
-            name: function(newName) {
-              return angular.isDefined(newName) ? (_name = newName) : _name;
-            }
-          };
-        }]);
-    </file>
-  </example>
- */
-var ngModelOptionsDirective = function() {
-  return {
-    restrict: 'A',
-    controller: ['$scope', '$attrs', function($scope, $attrs) {
-      var that = this;
-      this.$options = $scope.$eval($attrs.ngModelOptions);
-      // Allow adding/overriding bound events
-      if (this.$options.updateOn !== undefined) {
-        this.$options.updateOnDefault = false;
-        // extract "default" pseudo-event from list of events that can trigger a model update
-        this.$options.updateOn = trim(this.$options.updateOn.replace(DEFAULT_REGEXP, function() {
-          that.$options.updateOnDefault = true;
-          return ' ';
-        }));
-      } else {
-        this.$options.updateOnDefault = true;
-      }
-    }]
-  };
-};
-
-
-
-// helper methods
-function addSetValidityMethod(context) {
-  var ctrl = context.ctrl,
-      $element = context.$element,
-      classCache = {},
-      set = context.set,
-      unset = context.unset,
-      parentForm = context.parentForm,
-      $animate = context.$animate;
-
-  classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS));
-
-  ctrl.$setValidity = setValidity;
-
-  function setValidity(validationErrorKey, state, controller) {
-    if (state === undefined) {
-      createAndSet('$pending', validationErrorKey, controller);
-    } else {
-      unsetAndCleanup('$pending', validationErrorKey, controller);
-    }
-    if (!isBoolean(state)) {
-      unset(ctrl.$error, validationErrorKey, controller);
-      unset(ctrl.$$success, validationErrorKey, controller);
-    } else {
-      if (state) {
-        unset(ctrl.$error, validationErrorKey, controller);
-        set(ctrl.$$success, validationErrorKey, controller);
-      } else {
-        set(ctrl.$error, validationErrorKey, controller);
-        unset(ctrl.$$success, validationErrorKey, controller);
-      }
-    }
-    if (ctrl.$pending) {
-      cachedToggleClass(PENDING_CLASS, true);
-      ctrl.$valid = ctrl.$invalid = undefined;
-      toggleValidationCss('', null);
-    } else {
-      cachedToggleClass(PENDING_CLASS, false);
-      ctrl.$valid = isObjectEmpty(ctrl.$error);
-      ctrl.$invalid = !ctrl.$valid;
-      toggleValidationCss('', ctrl.$valid);
-    }
-
-    // re-read the state as the set/unset methods could have
-    // combined state in ctrl.$error[validationError] (used for forms),
-    // where setting/unsetting only increments/decrements the value,
-    // and does not replace it.
-    var combinedState;
-    if (ctrl.$pending && ctrl.$pending[validationErrorKey]) {
-      combinedState = undefined;
-    } else if (ctrl.$error[validationErrorKey]) {
-      combinedState = false;
-    } else if (ctrl.$$success[validationErrorKey]) {
-      combinedState = true;
-    } else {
-      combinedState = null;
-    }
-
-    toggleValidationCss(validationErrorKey, combinedState);
-    parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
-  }
-
-  function createAndSet(name, value, controller) {
-    if (!ctrl[name]) {
-      ctrl[name] = {};
-    }
-    set(ctrl[name], value, controller);
-  }
-
-  function unsetAndCleanup(name, value, controller) {
-    if (ctrl[name]) {
-      unset(ctrl[name], value, controller);
-    }
-    if (isObjectEmpty(ctrl[name])) {
-      ctrl[name] = undefined;
-    }
-  }
-
-  function cachedToggleClass(className, switchValue) {
-    if (switchValue && !classCache[className]) {
-      $animate.addClass($element, className);
-      classCache[className] = true;
-    } else if (!switchValue && classCache[className]) {
-      $animate.removeClass($element, className);
-      classCache[className] = false;
-    }
-  }
-
-  function toggleValidationCss(validationErrorKey, isValid) {
-    validationErrorKey = validationErrorKey ? '-' + snake_case(validationErrorKey, '-') : '';
-
-    cachedToggleClass(VALID_CLASS + validationErrorKey, isValid === true);
-    cachedToggleClass(INVALID_CLASS + validationErrorKey, isValid === false);
-  }
-}
-
-function isObjectEmpty(obj) {
-  if (obj) {
-    for (var prop in obj) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/**
- * @ngdoc directive
- * @name ngNonBindable
- * @restrict AC
- * @priority 1000
- *
- * @description
- * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current
- * DOM element. This is useful if the element contains what appears to be Angular directives and
- * bindings but which should be ignored by Angular. This could be the case if you have a site that
- * displays snippets of code, for instance.
- *
- * @element ANY
- *
- * @example
- * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,
- * but the one wrapped in `ngNonBindable` is left alone.
- *
- * @example
-    <example>
-      <file name="index.html">
-        <div>Normal: {{1 + 2}}</div>
-        <div ng-non-bindable>Ignored: {{1 + 2}}</div>
-      </file>
-      <file name="protractor.js" type="protractor">
-       it('should check ng-non-bindable', function() {
-         expect(element(by.binding('1 + 2')).getText()).toContain('3');
-         expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
-       });
-      </file>
-    </example>
- */
-var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
-
-/**
- * @ngdoc directive
- * @name ngPluralize
- * @restrict EA
- *
- * @description
- * `ngPluralize` is a directive that displays messages according to en-US localization rules.
- * These rules are bundled with angular.js, but can be overridden
- * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
- * by specifying the mappings between
- * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
- * and the strings to be displayed.
- *
- * # Plural categories and explicit number rules
- * There are two
- * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
- * in Angular's default en-US locale: "one" and "other".
- *
- * While a plural category may match many numbers (for example, in en-US locale, "other" can match
- * any number that is not 1), an explicit number rule can only match one number. For example, the
- * explicit number rule for "3" matches the number 3. There are examples of plural categories
- * and explicit number rules throughout the rest of this documentation.
- *
- * # Configuring ngPluralize
- * You configure ngPluralize by providing 2 attributes: `count` and `when`.
- * You can also provide an optional attribute, `offset`.
- *
- * The value of the `count` attribute can be either a string or an {@link guide/expression
- * Angular expression}; these are evaluated on the current scope for its bound value.
- *
- * The `when` attribute specifies the mappings between plural categories and the actual
- * string to be displayed. The value of the attribute should be a JSON object.
- *
- * The following example shows how to configure ngPluralize:
- *
- * ```html
- * <ng-pluralize count="personCount"
-                 when="{'0': 'Nobody is viewing.',
- *                      'one': '1 person is viewing.',
- *                      'other': '{} people are viewing.'}">
- * </ng-pluralize>
- *```
- *
- * In the example, `"0: Nobody is viewing."` is an explicit number rule. If you did not
- * specify this rule, 0 would be matched to the "other" category and "0 people are viewing"
- * would be shown instead of "Nobody is viewing". You can specify an explicit number rule for
- * other numbers, for example 12, so that instead of showing "12 people are viewing", you can
- * show "a dozen people are viewing".
- *
- * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
- * into pluralized strings. In the previous example, Angular will replace `{}` with
- * <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder
- * for <span ng-non-bindable>{{numberExpression}}</span>.
- *
- * # Configuring ngPluralize with offset
- * The `offset` attribute allows further customization of pluralized text, which can result in
- * a better user experience. For example, instead of the message "4 people are viewing this document",
- * you might display "John, Kate and 2 others are viewing this document".
- * The offset attribute allows you to offset a number by any desired value.
- * Let's take a look at an example:
- *
- * ```html
- * <ng-pluralize count="personCount" offset=2
- *               when="{'0': 'Nobody is viewing.',
- *                      '1': '{{person1}} is viewing.',
- *                      '2': '{{person1}} and {{person2}} are viewing.',
- *                      'one': '{{person1}}, {{person2}} and one other person are viewing.',
- *                      'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
- * </ng-pluralize>
- * ```
- *
- * Notice that we are still using two plural categories(one, other), but we added
- * three explicit number rules 0, 1 and 2.
- * When one person, perhaps John, views the document, "John is viewing" will be shown.
- * When three people view the document, no explicit number rule is found, so
- * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.
- * In this case, plural category 'one' is matched and "John, Mary and one other person are viewing"
- * is shown.
- *
- * Note that when you specify offsets, you must provide explicit number rules for
- * numbers from 0 up to and including the offset. If you use an offset of 3, for example,
- * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for
- * plural categories "one" and "other".
- *
- * @param {string|expression} count The variable to be bound to.
- * @param {string} when The mapping between plural category to its corresponding strings.
- * @param {number=} offset Offset to deduct from the total number.
- *
- * @example
-    <example module="pluralizeExample">
-      <file name="index.html">
-        <script>
-          angular.module('pluralizeExample', [])
-            .controller('ExampleController', ['$scope', function($scope) {
-              $scope.person1 = 'Igor';
-              $scope.person2 = 'Misko';
-              $scope.personCount = 1;
-            }]);
-        </script>
-        <div ng-controller="ExampleController">
-          Person 1:<input type="text" ng-model="person1" value="Igor" /><br/>
-          Person 2:<input type="text" ng-model="person2" value="Misko" /><br/>
-          Number of People:<input type="text" ng-model="personCount" value="1" /><br/>
-
-          <!--- Example with simple pluralization rules for en locale --->
-          Without Offset:
-          <ng-pluralize count="personCount"
-                        when="{'0': 'Nobody is viewing.',
-                               'one': '1 person is viewing.',
-                               'other': '{} people are viewing.'}">
-          </ng-pluralize><br>
-
-          <!--- Example with offset --->
-          With Offset(2):
-          <ng-pluralize count="personCount" offset=2
-                        when="{'0': 'Nobody is viewing.',
-                               '1': '{{person1}} is viewing.',
-                               '2': '{{person1}} and {{person2}} are viewing.',
-                               'one': '{{person1}}, {{person2}} and one other person are viewing.',
-                               'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
-          </ng-pluralize>
-        </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-        it('should show correct pluralized string', function() {
-          var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
-          var withOffset = element.all(by.css('ng-pluralize')).get(1);
-          var countInput = element(by.model('personCount'));
-
-          expect(withoutOffset.getText()).toEqual('1 person is viewing.');
-          expect(withOffset.getText()).toEqual('Igor is viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('0');
-
-          expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
-          expect(withOffset.getText()).toEqual('Nobody is viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('2');
-
-          expect(withoutOffset.getText()).toEqual('2 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('3');
-
-          expect(withoutOffset.getText()).toEqual('3 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
-
-          countInput.clear();
-          countInput.sendKeys('4');
-
-          expect(withoutOffset.getText()).toEqual('4 people are viewing.');
-          expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
-        });
-        it('should show data-bound names', function() {
-          var withOffset = element.all(by.css('ng-pluralize')).get(1);
-          var personCount = element(by.model('personCount'));
-          var person1 = element(by.model('person1'));
-          var person2 = element(by.model('person2'));
-          personCount.clear();
-          personCount.sendKeys('4');
-          person1.clear();
-          person1.sendKeys('Di');
-          person2.clear();
-          person2.sendKeys('Vojta');
-          expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
-        });
-      </file>
-    </example>
- */
-var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {
-  var BRACE = /{}/g,
-      IS_WHEN = /^when(Minus)?(.+)$/;
-
-  return {
-    restrict: 'EA',
-    link: function(scope, element, attr) {
-      var numberExp = attr.count,
-          whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs
-          offset = attr.offset || 0,
-          whens = scope.$eval(whenExp) || {},
-          whensExpFns = {},
-          startSymbol = $interpolate.startSymbol(),
-          endSymbol = $interpolate.endSymbol(),
-          braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
-          watchRemover = angular.noop,
-          lastCount;
-
-      forEach(attr, function(expression, attributeName) {
-        var tmpMatch = IS_WHEN.exec(attributeName);
-        if (tmpMatch) {
-          var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
-          whens[whenKey] = element.attr(attr.$attr[attributeName]);
-        }
-      });
-      forEach(whens, function(expression, key) {
-        whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
-
-      });
-
-      scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
-        var count = parseFloat(newVal);
-        var countIsNaN = isNaN(count);
-
-        if (!countIsNaN && !(count in whens)) {
-          // If an explicit number rule such as 1, 2, 3... is defined, just use it.
-          // Otherwise, check it against pluralization rules in $locale service.
-          count = $locale.pluralCat(count - offset);
-        }
-
-        // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
-        // In JS `NaN !== NaN`, so we have to exlicitly check.
-        if ((count !== lastCount) && !(countIsNaN && isNaN(lastCount))) {
-          watchRemover();
-          watchRemover = scope.$watch(whensExpFns[count], updateElementText);
-          lastCount = count;
-        }
-      });
-
-      function updateElementText(newText) {
-        element.text(newText || '');
-      }
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngRepeat
- *
- * @description
- * The `ngRepeat` directive instantiates a template once per item from a collection. Each template
- * instance gets its own scope, where the given loop variable is set to the current collection item,
- * and `$index` is set to the item index or key.
- *
- * Special properties are exposed on the local scope of each template instance, including:
- *
- * | Variable  | Type            | Details                                                                     |
- * |-----------|-----------------|-----------------------------------------------------------------------------|
- * | `$index`  | {@type number}  | iterator offset of the repeated element (0..length-1)                       |
- * | `$first`  | {@type boolean} | true if the repeated element is first in the iterator.                      |
- * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |
- * | `$last`   | {@type boolean} | true if the repeated element is last in the iterator.                       |
- * | `$even`   | {@type boolean} | true if the iterator position `$index` is even (otherwise false).           |
- * | `$odd`    | {@type boolean} | true if the iterator position `$index` is odd (otherwise false).            |
- *
- * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
- * This may be useful when, for instance, nesting ngRepeats.
- *
- * # Iterating over object properties
- *
- * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
- * syntax:
- *
- * ```js
- * <div ng-repeat="(key, value) in myObj"> ... </div>
- * ```
- *
- * You need to be aware that the JavaScript specification does not define what order
- * it will return the keys for an object. In order to have a guaranteed deterministic order
- * for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
- *
- * If this is not desired, the recommended workaround is to convert your object into an array
- * that is sorted into the order that you prefer before providing it to `ngRepeat`.  You could
- * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
- * or implement a `$watch` on the object yourself.
- *
- * In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
- * strategy of providing keys in the order in which they were defined, although there are exceptions
- * when keys are deleted and reinstated.
- *
- *
- * # Special repeat start and end points
- * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
- * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
- * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)
- * up to and including the ending HTML tag where **ng-repeat-end** is placed.
- *
- * The example below makes use of this feature:
- * ```html
- *   <header ng-repeat-start="item in items">
- *     Header {{ item }}
- *   </header>
- *   <div class="body">
- *     Body {{ item }}
- *   </div>
- *   <footer ng-repeat-end>
- *     Footer {{ item }}
- *   </footer>
- * ```
- *
- * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:
- * ```html
- *   <header>
- *     Header A
- *   </header>
- *   <div class="body">
- *     Body A
- *   </div>
- *   <footer>
- *     Footer A
- *   </footer>
- *   <header>
- *     Header B
- *   </header>
- *   <div class="body">
- *     Body B
- *   </div>
- *   <footer>
- *     Footer B
- *   </footer>
- * ```
- *
- * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such
- * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).
- *
- * @animations
- * **.enter** - when a new item is added to the list or when an item is revealed after a filter
- *
- * **.leave** - when an item is removed from the list or when an item is filtered out
- *
- * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered
- *
- * @element ANY
- * @scope
- * @priority 1000
- * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These
- *   formats are currently supported:
- *
- *   * `variable in expression` – where variable is the user defined loop variable and `expression`
- *     is a scope expression giving the collection to enumerate.
- *
- *     For example: `album in artist.albums`.
- *
- *   * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,
- *     and `expression` is the scope expression giving the collection to enumerate.
- *
- *     For example: `(name, age) in {'adam':10, 'amalie':12}`.
- *
- *   * `variable in expression track by tracking_expression` – You can also provide an optional tracking function
- *     which can be used to associate the objects in the collection with the DOM elements. If no tracking function
- *     is specified the ng-repeat associates elements by identity in the collection. It is an error to have
- *     more than one tracking function to resolve to the same key. (This would mean that two distinct objects are
- *     mapped to the same DOM element, which is not possible.)  Filters should be applied to the expression,
- *     before specifying a tracking expression.
- *
- *     For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
- *     will be associated by item identity in the array.
- *
- *     For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
- *     `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
- *     with the corresponding item in the array by identity. Moving the same object in array would move the DOM
- *     element in the same way in the DOM.
- *
- *     For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
- *     case the object identity does not matter. Two objects are considered equivalent as long as their `id`
- *     property is same.
- *
- *     For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter
- *     to items in conjunction with a tracking expression.
- *
- *   * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the
- *     intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message
- *     when a filter is active on the repeater, but the filtered result set is empty.
- *
- *     For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after
- *     the items have been processed through the filter.
- *
- * @example
- * This example initializes the scope to a list of names and
- * then uses `ngRepeat` to display every person:
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      <div ng-init="friends = [
-        {name:'John', age:25, gender:'boy'},
-        {name:'Jessie', age:30, gender:'girl'},
-        {name:'Johanna', age:28, gender:'girl'},
-        {name:'Joy', age:15, gender:'girl'},
-        {name:'Mary', age:28, gender:'girl'},
-        {name:'Peter', age:95, gender:'boy'},
-        {name:'Sebastian', age:50, gender:'boy'},
-        {name:'Erika', age:27, gender:'girl'},
-        {name:'Patrick', age:40, gender:'boy'},
-        {name:'Samantha', age:60, gender:'girl'}
-      ]">
-        I have {{friends.length}} friends. They are:
-        <input type="search" ng-model="q" placeholder="filter friends..." />
-        <ul class="example-animate-container">
-          <li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
-            [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
-          </li>
-          <li class="animate-repeat" ng-if="results.length == 0">
-            <strong>No results found...</strong>
-          </li>
-        </ul>
-      </div>
-    </file>
-    <file name="animations.css">
-      .example-animate-container {
-        background:white;
-        border:1px solid black;
-        list-style:none;
-        margin:0;
-        padding:0 10px;
-      }
-
-      .animate-repeat {
-        line-height:40px;
-        list-style:none;
-        box-sizing:border-box;
-      }
-
-      .animate-repeat.ng-move,
-      .animate-repeat.ng-enter,
-      .animate-repeat.ng-leave {
-        -webkit-transition:all linear 0.5s;
-        transition:all linear 0.5s;
-      }
-
-      .animate-repeat.ng-leave.ng-leave-active,
-      .animate-repeat.ng-move,
-      .animate-repeat.ng-enter {
-        opacity:0;
-        max-height:0;
-      }
-
-      .animate-repeat.ng-leave,
-      .animate-repeat.ng-move.ng-move-active,
-      .animate-repeat.ng-enter.ng-enter-active {
-        opacity:1;
-        max-height:40px;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var friends = element.all(by.repeater('friend in friends'));
-
-      it('should render initial data set', function() {
-        expect(friends.count()).toBe(10);
-        expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
-        expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
-        expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
-        expect(element(by.binding('friends.length')).getText())
-            .toMatch("I have 10 friends. They are:");
-      });
-
-       it('should update repeater when filter predicate changes', function() {
-         expect(friends.count()).toBe(10);
-
-         element(by.model('q')).sendKeys('ma');
-
-         expect(friends.count()).toBe(2);
-         expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
-         expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
-       });
-      </file>
-    </example>
- */
-var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
-  var NG_REMOVED = '$$NG_REMOVED';
-  var ngRepeatMinErr = minErr('ngRepeat');
-
-  var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {
-    // TODO(perf): generate setters to shave off ~40ms or 1-1.5%
-    scope[valueIdentifier] = value;
-    if (keyIdentifier) scope[keyIdentifier] = key;
-    scope.$index = index;
-    scope.$first = (index === 0);
-    scope.$last = (index === (arrayLength - 1));
-    scope.$middle = !(scope.$first || scope.$last);
-    // jshint bitwise: false
-    scope.$odd = !(scope.$even = (index&1) === 0);
-    // jshint bitwise: true
-  };
-
-  var getBlockStart = function(block) {
-    return block.clone[0];
-  };
-
-  var getBlockEnd = function(block) {
-    return block.clone[block.clone.length - 1];
-  };
-
-
-  return {
-    restrict: 'A',
-    multiElement: true,
-    transclude: 'element',
-    priority: 1000,
-    terminal: true,
-    $$tlb: true,
-    compile: function ngRepeatCompile($element, $attr) {
-      var expression = $attr.ngRepeat;
-      var ngRepeatEndComment = document.createComment(' end ngRepeat: ' + expression + ' ');
-
-      var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
-
-      if (!match) {
-        throw ngRepeatMinErr('iexp', "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
-            expression);
-      }
-
-      var lhs = match[1];
-      var rhs = match[2];
-      var aliasAs = match[3];
-      var trackByExp = match[4];
-
-      match = lhs.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);
-
-      if (!match) {
-        throw ngRepeatMinErr('iidexp', "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
-            lhs);
-      }
-      var valueIdentifier = match[3] || match[1];
-      var keyIdentifier = match[2];
-
-      if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
-          /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
-        throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
-          aliasAs);
-      }
-
-      var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;
-      var hashFnLocals = {$id: hashKey};
-
-      if (trackByExp) {
-        trackByExpGetter = $parse(trackByExp);
-      } else {
-        trackByIdArrayFn = function(key, value) {
-          return hashKey(value);
-        };
-        trackByIdObjFn = function(key) {
-          return key;
-        };
-      }
-
-      return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
-
-        if (trackByExpGetter) {
-          trackByIdExpFn = function(key, value, index) {
-            // assign key, value, and $index to the locals so that they can be used in hash functions
-            if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
-            hashFnLocals[valueIdentifier] = value;
-            hashFnLocals.$index = index;
-            return trackByExpGetter($scope, hashFnLocals);
-          };
-        }
-
-        // Store a list of elements from previous run. This is a hash where key is the item from the
-        // iterator, and the value is objects with following properties.
-        //   - scope: bound scope
-        //   - element: previous element.
-        //   - index: position
-        //
-        // We are using no-proto object so that we don't need to guard against inherited props via
-        // hasOwnProperty.
-        var lastBlockMap = createMap();
-
-        //watch props
-        $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
-          var index, length,
-              previousNode = $element[0],     // node that cloned nodes should be inserted after
-                                              // initialized to the comment node anchor
-              nextNode,
-              // Same as lastBlockMap but it has the current state. It will become the
-              // lastBlockMap on the next iteration.
-              nextBlockMap = createMap(),
-              collectionLength,
-              key, value, // key/value of iteration
-              trackById,
-              trackByIdFn,
-              collectionKeys,
-              block,       // last object information {scope, element, id}
-              nextBlockOrder,
-              elementsToRemove;
-
-          if (aliasAs) {
-            $scope[aliasAs] = collection;
-          }
-
-          if (isArrayLike(collection)) {
-            collectionKeys = collection;
-            trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
-          } else {
-            trackByIdFn = trackByIdExpFn || trackByIdObjFn;
-            // if object, extract keys, sort them and use to determine order of iteration over obj props
-            collectionKeys = [];
-            for (var itemKey in collection) {
-              if (collection.hasOwnProperty(itemKey) && itemKey.charAt(0) != '$') {
-                collectionKeys.push(itemKey);
-              }
-            }
-            collectionKeys.sort();
-          }
-
-          collectionLength = collectionKeys.length;
-          nextBlockOrder = new Array(collectionLength);
-
-          // locate existing items
-          for (index = 0; index < collectionLength; index++) {
-            key = (collection === collectionKeys) ? index : collectionKeys[index];
-            value = collection[key];
-            trackById = trackByIdFn(key, value, index);
-            if (lastBlockMap[trackById]) {
-              // found previously seen block
-              block = lastBlockMap[trackById];
-              delete lastBlockMap[trackById];
-              nextBlockMap[trackById] = block;
-              nextBlockOrder[index] = block;
-            } else if (nextBlockMap[trackById]) {
-              // if collision detected. restore lastBlockMap and throw an error
-              forEach(nextBlockOrder, function(block) {
-                if (block && block.scope) lastBlockMap[block.id] = block;
-              });
-              throw ngRepeatMinErr('dupes',
-                  "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
-                  expression, trackById, value);
-            } else {
-              // new never before seen block
-              nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};
-              nextBlockMap[trackById] = true;
-            }
-          }
-
-          // remove leftover items
-          for (var blockKey in lastBlockMap) {
-            block = lastBlockMap[blockKey];
-            elementsToRemove = getBlockNodes(block.clone);
-            $animate.leave(elementsToRemove);
-            if (elementsToRemove[0].parentNode) {
-              // if the element was not removed yet because of pending animation, mark it as deleted
-              // so that we can ignore it later
-              for (index = 0, length = elementsToRemove.length; index < length; index++) {
-                elementsToRemove[index][NG_REMOVED] = true;
-              }
-            }
-            block.scope.$destroy();
-          }
-
-          // we are not using forEach for perf reasons (trying to avoid #call)
-          for (index = 0; index < collectionLength; index++) {
-            key = (collection === collectionKeys) ? index : collectionKeys[index];
-            value = collection[key];
-            block = nextBlockOrder[index];
-
-            if (block.scope) {
-              // if we have already seen this object, then we need to reuse the
-              // associated scope/element
-
-              nextNode = previousNode;
-
-              // skip nodes that are already pending removal via leave animation
-              do {
-                nextNode = nextNode.nextSibling;
-              } while (nextNode && nextNode[NG_REMOVED]);
-
-              if (getBlockStart(block) != nextNode) {
-                // existing item which got moved
-                $animate.move(getBlockNodes(block.clone), null, jqLite(previousNode));
-              }
-              previousNode = getBlockEnd(block);
-              updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
-            } else {
-              // new item which we don't know about
-              $transclude(function ngRepeatTransclude(clone, scope) {
-                block.scope = scope;
-                // http://jsperf.com/clone-vs-createcomment
-                var endNode = ngRepeatEndComment.cloneNode(false);
-                clone[clone.length++] = endNode;
-
-                // TODO(perf): support naked previousNode in `enter` to avoid creation of jqLite wrapper?
-                $animate.enter(clone, null, jqLite(previousNode));
-                previousNode = endNode;
-                // Note: We only need the first/last node of the cloned nodes.
-                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
-                // by a directive with templateUrl when its template arrives.
-                block.clone = clone;
-                nextBlockMap[block.id] = block;
-                updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
-              });
-            }
-          }
-          lastBlockMap = nextBlockMap;
-        });
-      };
-    }
-  };
-}];
-
-var NG_HIDE_CLASS = 'ng-hide';
-var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
-/**
- * @ngdoc directive
- * @name ngShow
- *
- * @description
- * The `ngShow` directive shows or hides the given HTML element based on the expression
- * provided to the `ngShow` attribute. The element is shown or hidden by removing or adding
- * the `.ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
- * in AngularJS and sets the display style to none (using an !important flag).
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```html
- * <!-- when $scope.myValue is truthy (element is visible) -->
- * <div ng-show="myValue"></div>
- *
- * <!-- when $scope.myValue is falsy (element is hidden) -->
- * <div ng-show="myValue" class="ng-hide"></div>
- * ```
- *
- * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added to the class
- * attribute on the element causing it to become hidden. When truthy, the `.ng-hide` CSS class is removed
- * from the element causing the element not to appear hidden.
- *
- * ## Why is !important used?
- *
- * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
- * can be easily overridden by heavier selectors. For example, something as simple
- * as changing the display style on a HTML list item would make hidden elements appear visible.
- * This also becomes a bigger issue when dealing with CSS frameworks.
- *
- * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
- * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
- * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
- *
- * ### Overriding `.ng-hide`
- *
- * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
- * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
- * class in CSS:
- *
- * ```css
- * .ng-hide {
- *   /&#42; this is just another form of hiding an element &#42;/
- *   display: block!important;
- *   position: absolute;
- *   top: -9999px;
- *   left: -9999px;
- * }
- * ```
- *
- * By default you don't need to override in CSS anything and the animations will work around the display style.
- *
- * ## A note about animations with `ngShow`
- *
- * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
- * is true and false. This system works like the animation system present with ngClass except that
- * you must also include the !important flag to override the display property
- * so that you can perform an animation when the element is hidden during the time of the animation.
- *
- * ```css
- * //
- * //a working example can be found at the bottom of this page
- * //
- * .my-element.ng-hide-add, .my-element.ng-hide-remove {
- *   /&#42; this is required as of 1.3x to properly
- *      apply all styling in a show/hide animation &#42;/
- *   transition: 0s linear all;
- * }
- *
- * .my-element.ng-hide-add-active,
- * .my-element.ng-hide-remove-active {
- *   /&#42; the transition is defined in the active class &#42;/
- *   transition: 1s linear all;
- * }
- *
- * .my-element.ng-hide-add { ... }
- * .my-element.ng-hide-add.ng-hide-add-active { ... }
- * .my-element.ng-hide-remove { ... }
- * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
- * ```
- *
- * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
- * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
- *
- * @animations
- * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible
- * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden
- *
- * @element ANY
- * @param {expression} ngShow If the {@link guide/expression expression} is truthy
- *     then the element is shown or hidden respectively.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked"><br/>
-      <div>
-        Show:
-        <div class="check-element animate-show" ng-show="checked">
-          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
-        </div>
-      </div>
-      <div>
-        Hide:
-        <div class="check-element animate-show" ng-hide="checked">
-          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
-        </div>
-      </div>
-    </file>
-    <file name="glyphicons.css">
-      @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
-    </file>
-    <file name="animations.css">
-      .animate-show {
-        line-height: 20px;
-        opacity: 1;
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-
-      .animate-show.ng-hide-add.ng-hide-add-active,
-      .animate-show.ng-hide-remove.ng-hide-remove-active {
-        -webkit-transition: all linear 0.5s;
-        transition: all linear 0.5s;
-      }
-
-      .animate-show.ng-hide {
-        line-height: 0;
-        opacity: 0;
-        padding: 0 10px;
-      }
-
-      .check-element {
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
-      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
-
-      it('should check ng-show / ng-hide', function() {
-        expect(thumbsUp.isDisplayed()).toBeFalsy();
-        expect(thumbsDown.isDisplayed()).toBeTruthy();
-
-        element(by.model('checked')).click();
-
-        expect(thumbsUp.isDisplayed()).toBeTruthy();
-        expect(thumbsDown.isDisplayed()).toBeFalsy();
-      });
-    </file>
-  </example>
- */
-var ngShowDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'A',
-    multiElement: true,
-    link: function(scope, element, attr) {
-      scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
-        // we're adding a temporary, animation-specific class for ng-hide since this way
-        // we can control when the element is actually displayed on screen without having
-        // to have a global/greedy CSS selector that breaks when other animations are run.
-        // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845
-        $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
-          tempClasses: NG_HIDE_IN_PROGRESS_CLASS
-        });
-      });
-    }
-  };
-}];
-
-
-/**
- * @ngdoc directive
- * @name ngHide
- *
- * @description
- * The `ngHide` directive shows or hides the given HTML element based on the expression
- * provided to the `ngHide` attribute. The element is shown or hidden by removing or adding
- * the `ng-hide` CSS class onto the element. The `.ng-hide` CSS class is predefined
- * in AngularJS and sets the display style to none (using an !important flag).
- * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
- *
- * ```html
- * <!-- when $scope.myValue is truthy (element is hidden) -->
- * <div ng-hide="myValue" class="ng-hide"></div>
- *
- * <!-- when $scope.myValue is falsy (element is visible) -->
- * <div ng-hide="myValue"></div>
- * ```
- *
- * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added to the class
- * attribute on the element causing it to become hidden. When falsy, the `.ng-hide` CSS class is removed
- * from the element causing the element not to appear hidden.
- *
- * ## Why is !important used?
- *
- * You may be wondering why !important is used for the `.ng-hide` CSS class. This is because the `.ng-hide` selector
- * can be easily overridden by heavier selectors. For example, something as simple
- * as changing the display style on a HTML list item would make hidden elements appear visible.
- * This also becomes a bigger issue when dealing with CSS frameworks.
- *
- * By using !important, the show and hide behavior will work as expected despite any clash between CSS selector
- * specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the
- * styling to change how to hide an element then it is just a matter of using !important in their own CSS code.
- *
- * ### Overriding `.ng-hide`
- *
- * By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
- * the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
- * class in CSS:
- *
- * ```css
- * .ng-hide {
- *   /&#42; this is just another form of hiding an element &#42;/
- *   display: block!important;
- *   position: absolute;
- *   top: -9999px;
- *   left: -9999px;
- * }
- * ```
- *
- * By default you don't need to override in CSS anything and the animations will work around the display style.
- *
- * ## A note about animations with `ngHide`
- *
- * Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression
- * is true and false. This system works like the animation system present with ngClass, except that the `.ng-hide`
- * CSS class is added and removed for you instead of your own CSS class.
- *
- * ```css
- * //
- * //a working example can be found at the bottom of this page
- * //
- * .my-element.ng-hide-add, .my-element.ng-hide-remove {
- *   transition: 0.5s linear all;
- * }
- *
- * .my-element.ng-hide-add { ... }
- * .my-element.ng-hide-add.ng-hide-add-active { ... }
- * .my-element.ng-hide-remove { ... }
- * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
- * ```
- *
- * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display
- * property to block during animation states--ngAnimate will handle the style toggling automatically for you.
- *
- * @animations
- * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden
- * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible
- *
- * @element ANY
- * @param {expression} ngHide If the {@link guide/expression expression} is truthy then
- *     the element is shown or hidden respectively.
- *
- * @example
-  <example module="ngAnimate" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      Click me: <input type="checkbox" ng-model="checked"><br/>
-      <div>
-        Show:
-        <div class="check-element animate-hide" ng-show="checked">
-          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
-        </div>
-      </div>
-      <div>
-        Hide:
-        <div class="check-element animate-hide" ng-hide="checked">
-          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
-        </div>
-      </div>
-    </file>
-    <file name="glyphicons.css">
-      @import url(../../components/bootstrap-3.1.1/css/bootstrap.css);
-    </file>
-    <file name="animations.css">
-      .animate-hide {
-        -webkit-transition: all linear 0.5s;
-        transition: all linear 0.5s;
-        line-height: 20px;
-        opacity: 1;
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-
-      .animate-hide.ng-hide {
-        line-height: 0;
-        opacity: 0;
-        padding: 0 10px;
-      }
-
-      .check-element {
-        padding: 10px;
-        border: 1px solid black;
-        background: white;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
-      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
-
-      it('should check ng-show / ng-hide', function() {
-        expect(thumbsUp.isDisplayed()).toBeFalsy();
-        expect(thumbsDown.isDisplayed()).toBeTruthy();
-
-        element(by.model('checked')).click();
-
-        expect(thumbsUp.isDisplayed()).toBeTruthy();
-        expect(thumbsDown.isDisplayed()).toBeFalsy();
-      });
-    </file>
-  </example>
- */
-var ngHideDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'A',
-    multiElement: true,
-    link: function(scope, element, attr) {
-      scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
-        // The comment inside of the ngShowDirective explains why we add and
-        // remove a temporary class for the show/hide animation
-        $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {
-          tempClasses: NG_HIDE_IN_PROGRESS_CLASS
-        });
-      });
-    }
-  };
-}];
-
-/**
- * @ngdoc directive
- * @name ngStyle
- * @restrict AC
- *
- * @description
- * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
- *
- * @element ANY
- * @param {expression} ngStyle
- *
- * {@link guide/expression Expression} which evals to an
- * object whose keys are CSS style names and values are corresponding values for those CSS
- * keys.
- *
- * Since some CSS style names are not valid keys for an object, they must be quoted.
- * See the 'background-color' style in the example below.
- *
- * @example
-   <example>
-     <file name="index.html">
-        <input type="button" value="set color" ng-click="myStyle={color:'red'}">
-        <input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
-        <input type="button" value="clear" ng-click="myStyle={}">
-        <br/>
-        <span ng-style="myStyle">Sample Text</span>
-        <pre>myStyle={{myStyle}}</pre>
-     </file>
-     <file name="style.css">
-       span {
-         color: black;
-       }
-     </file>
-     <file name="protractor.js" type="protractor">
-       var colorSpan = element(by.css('span'));
-
-       it('should check ng-style', function() {
-         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
-         element(by.css('input[value=\'set color\']')).click();
-         expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
-         element(by.css('input[value=clear]')).click();
-         expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
-       });
-     </file>
-   </example>
- */
-var ngStyleDirective = ngDirective(function(scope, element, attr) {
-  scope.$watchCollection(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
-    if (oldStyles && (newStyles !== oldStyles)) {
-      forEach(oldStyles, function(val, style) { element.css(style, '');});
-    }
-    if (newStyles) element.css(newStyles);
-  });
-});
-
-/**
- * @ngdoc directive
- * @name ngSwitch
- * @restrict EA
- *
- * @description
- * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
- * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
- * as specified in the template.
- *
- * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
- * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element
- * matches the value obtained from the evaluated expression. In other words, you define a container element
- * (where you place the directive), place an expression on the **`on="..."` attribute**
- * (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
- * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
- * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
- * attribute is displayed.
- *
- * <div class="alert alert-info">
- * Be aware that the attribute values to match against cannot be expressions. They are interpreted
- * as literal string values to match against.
- * For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
- * value of the expression `$scope.someVal`.
- * </div>
-
- * @animations
- * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
- * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
- *
- * @usage
- *
- * ```
- * <ANY ng-switch="expression">
- *   <ANY ng-switch-when="matchValue1">...</ANY>
- *   <ANY ng-switch-when="matchValue2">...</ANY>
- *   <ANY ng-switch-default>...</ANY>
- * </ANY>
- * ```
- *
- *
- * @scope
- * @priority 1200
- * @param {*} ngSwitch|on expression to match against <tt>ng-switch-when</tt>.
- * On child elements add:
- *
- * * `ngSwitchWhen`: the case statement to match against. If match then this
- *   case will be displayed. If the same match appears multiple times, all the
- *   elements will be displayed.
- * * `ngSwitchDefault`: the default case when no other case match. If there
- *   are multiple default cases, all of them will be displayed when no other
- *   case match.
- *
- *
- * @example
-  <example module="switchExample" deps="angular-animate.js" animations="true">
-    <file name="index.html">
-      <div ng-controller="ExampleController">
-        <select ng-model="selection" ng-options="item for item in items">
-        </select>
-        <tt>selection={{selection}}</tt>
-        <hr/>
-        <div class="animate-switch-container"
-          ng-switch on="selection">
-            <div class="animate-switch" ng-switch-when="settings">Settings Div</div>
-            <div class="animate-switch" ng-switch-when="home">Home Span</div>
-            <div class="animate-switch" ng-switch-default>default</div>
-        </div>
-      </div>
-    </file>
-    <file name="script.js">
-      angular.module('switchExample', ['ngAnimate'])
-        .controller('ExampleController', ['$scope', function($scope) {
-          $scope.items = ['settings', 'home', 'other'];
-          $scope.selection = $scope.items[0];
-        }]);
-    </file>
-    <file name="animations.css">
-      .animate-switch-container {
-        position:relative;
-        background:white;
-        border:1px solid black;
-        height:40px;
-        overflow:hidden;
-      }
-
-      .animate-switch {
-        padding:10px;
-      }
-
-      .animate-switch.ng-animate {
-        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
-
-        position:absolute;
-        top:0;
-        left:0;
-        right:0;
-        bottom:0;
-      }
-
-      .animate-switch.ng-leave.ng-leave-active,
-      .animate-switch.ng-enter {
-        top:-50px;
-      }
-      .animate-switch.ng-leave,
-      .animate-switch.ng-enter.ng-enter-active {
-        top:0;
-      }
-    </file>
-    <file name="protractor.js" type="protractor">
-      var switchElem = element(by.css('[ng-switch]'));
-      var select = element(by.model('selection'));
-
-      it('should start in settings', function() {
-        expect(switchElem.getText()).toMatch(/Settings Div/);
-      });
-      it('should change to home', function() {
-        select.all(by.css('option')).get(1).click();
-        expect(switchElem.getText()).toMatch(/Home Span/);
-      });
-      it('should select default', function() {
-        select.all(by.css('option')).get(2).click();
-        expect(switchElem.getText()).toMatch(/default/);
-      });
-    </file>
-  </example>
- */
-var ngSwitchDirective = ['$animate', function($animate) {
-  return {
-    restrict: 'EA',
-    require: 'ngSwitch',
-
-    // asks for $scope to fool the BC controller module
-    controller: ['$scope', function ngSwitchController() {
-     this.cases = {};
-    }],
-    link: function(scope, element, attr, ngSwitchController) {
-      var watchExpr = attr.ngSwitch || attr.on,
-          selectedTranscludes = [],
-          selectedElements = [],
-          previousLeaveAnimations = [],
-          selectedScopes = [];
-
-      var spliceFactory = function(array, index) {
-          return function() { array.splice(index, 1); };
-      };
-
-      scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
-        var i, ii;
-        for (i = 0, ii = previousLeaveAnimations.length; i < ii; ++i) {
-          $animate.cancel(previousLeaveAnimations[i]);
-        }
-        previousLeaveAnimations.length = 0;
-
-        for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
-          var selected = getBlockNodes(selectedElements[i].clone);
-          selectedScopes[i].$destroy();
-          var promise = previousLeaveAnimations[i] = $animate.leave(selected);
-          promise.then(spliceFactory(previousLeaveAnimations, i));
-        }
-
-        selectedElements.length = 0;
-        selectedScopes.length = 0;
-
-        if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {
-          forEach(selectedTranscludes, function(selectedTransclude) {
-            selectedTransclude.transclude(function(caseElement, selectedScope) {
-              selectedScopes.push(selectedScope);
-              var anchor = selectedTransclude.element;
-              caseElement[caseElement.length++] = document.createComment(' end ngSwitchWhen: ');
-              var block = { clone: caseElement };
-
-              selectedElements.push(block);
-              $animate.enter(caseElement, anchor.parent(), anchor);
-            });
-          });
-        }
-      });
-    }
-  };
-}];
-
-var ngSwitchWhenDirective = ngDirective({
-  transclude: 'element',
-  priority: 1200,
-  require: '^ngSwitch',
-  multiElement: true,
-  link: function(scope, element, attrs, ctrl, $transclude) {
-    ctrl.cases['!' + attrs.ngSwitchWhen] = (ctrl.cases['!' + attrs.ngSwitchWhen] || []);
-    ctrl.cases['!' + attrs.ngSwitchWhen].push({ transclude: $transclude, element: element });
-  }
-});
-
-var ngSwitchDefaultDirective = ngDirective({
-  transclude: 'element',
-  priority: 1200,
-  require: '^ngSwitch',
-  multiElement: true,
-  link: function(scope, element, attr, ctrl, $transclude) {
-    ctrl.cases['?'] = (ctrl.cases['?'] || []);
-    ctrl.cases['?'].push({ transclude: $transclude, element: element });
-   }
-});
-
-/**
- * @ngdoc directive
- * @name ngTransclude
- * @restrict EAC
- *
- * @description
- * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
- *
- * Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
- *
- * @element ANY
- *
- * @example
-   <example module="transcludeExample">
-     <file name="index.html">
-       <script>
-         angular.module('transcludeExample', [])
-          .directive('pane', function(){
-             return {
-               restrict: 'E',
-               transclude: true,
-               scope: { title:'@' },
-               template: '<div style="border: 1px solid black;">' +
-                           '<div style="background-color: gray">{{title}}</div>' +
-                           '<ng-transclude></ng-transclude>' +
-                         '</div>'
-             };
-         })
-         .controller('ExampleController', ['$scope', function($scope) {
-           $scope.title = 'Lorem Ipsum';
-           $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
-         }]);
-       </script>
-       <div ng-controller="ExampleController">
-         <input ng-model="title"> <br/>
-         <textarea ng-model="text"></textarea> <br/>
-         <pane title="{{title}}">{{text}}</pane>
-       </div>
-     </file>
-     <file name="protractor.js" type="protractor">
-        it('should have transcluded', function() {
-          var titleElement = element(by.model('title'));
-          titleElement.clear();
-          titleElement.sendKeys('TITLE');
-          var textElement = element(by.model('text'));
-          textElement.clear();
-          textElement.sendKeys('TEXT');
-          expect(element(by.binding('title')).getText()).toEqual('TITLE');
-          expect(element(by.binding('text')).getText()).toEqual('TEXT');
-        });
-     </file>
-   </example>
- *
- */
-var ngTranscludeDirective = ngDirective({
-  restrict: 'EAC',
-  link: function($scope, $element, $attrs, controller, $transclude) {
-    if (!$transclude) {
-      throw minErr('ngTransclude')('orphan',
-       'Illegal use of ngTransclude directive in the template! ' +
-       'No parent directive that requires a transclusion found. ' +
-       'Element: {0}',
-       startingTag($element));
-    }
-
-    $transclude(function(clone) {
-      $element.empty();
-      $element.append(clone);
-    });
-  }
-});
-
-/**
- * @ngdoc directive
- * @name script
- * @restrict E
- *
- * @description
- * Load the content of a `<script>` element into {@link ng.$templateCache `$templateCache`}, so that the
- * template can be used by {@link ng.directive:ngInclude `ngInclude`},
- * {@link ngRoute.directive:ngView `ngView`}, or {@link guide/directive directives}. The type of the
- * `<script>` element must be specified as `text/ng-template`, and a cache name for the template must be
- * assigned through the element's `id`, which can then be used as a directive's `templateUrl`.
- *
- * @param {string} type Must be set to `'text/ng-template'`.
- * @param {string} id Cache name of the template.
- *
- * @example
-  <example>
-    <file name="index.html">
-      <script type="text/ng-template" id="/tpl.html">
-        Content of the template.
-      </script>
-
-      <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a>
-      <div id="tpl-content" ng-include src="currentTpl"></div>
-    </file>
-    <file name="protractor.js" type="protractor">
-      it('should load template defined inside script tag', function() {
-        element(by.css('#tpl-link')).click();
-        expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
-      });
-    </file>
-  </example>
- */
-var scriptDirective = ['$templateCache', function($templateCache) {
-  return {
-    restrict: 'E',
-    terminal: true,
-    compile: function(element, attr) {
-      if (attr.type == 'text/ng-template') {
-        var templateUrl = attr.id,
-            text = element[0].text;
-
-        $templateCache.put(templateUrl, text);
-      }
-    }
-  };
-}];
-
-var ngOptionsMinErr = minErr('ngOptions');
-/**
- * @ngdoc directive
- * @name select
- * @restrict E
- *
- * @description
- * HTML `SELECT` element with angular data-binding.
- *
- * # `ngOptions`
- *
- * The `ngOptions` attribute can be used to dynamically generate a list of `<option>`
- * elements for the `<select>` element using the array or object obtained by evaluating the
- * `ngOptions` comprehension expression.
- *
- * In many cases, `ngRepeat` can be used on `<option>` elements instead of `ngOptions` to achieve a
- * similar result. However, `ngOptions` provides some benefits such as reducing memory and
- * increasing speed by not creating a new scope for each repeated instance, as well as providing
- * more flexibility in how the `<select>`'s model is assigned via the `select` **`as`** part of the
- * comprehension expression. `ngOptions` should be used when the `<select>` model needs to be bound
- *  to a non-string value. This is because an option element can only be bound to string values at
- * present.
- *
- * When an item in the `<select>` menu is selected, the array element or object property
- * represented by the selected option will be bound to the model identified by the `ngModel`
- * directive.
- *
- * Optionally, a single hard-coded `<option>` element, with the value set to an empty string, can
- * be nested into the `<select>` element. This element will then represent the `null` or "not selected"
- * option. See example below for demonstration.
- *
- * <div class="alert alert-warning">
- * **Note:** `ngModel` compares by reference, not value. This is important when binding to an
- * array of objects. See an example [in this jsfiddle](http://jsfiddle.net/qWzTb/).
- * </div>
- *
- * ## `select` **`as`**
- *
- * Using `select` **`as`** will bind the result of the `select` expression to the model, but
- * the value of the `<select>` and `<option>` html elements will be either the index (for array data sources)
- * or property name (for object data sources) of the value within the collection. If a **`track by`** expression
- * is used, the result of that expression will be set as the value of the `option` and `select` elements.
- *
- *
- * ### `select` **`as`** and **`track by`**
- *
- * <div class="alert alert-warning">
- * Do not use `select` **`as`** and **`track by`** in the same expression. They are not designed to work together.
- * </div>
- *
- * Consider the following example:
- *
- * ```html
- * <select ng-options="item.subItem as item.label for item in values track by item.id" ng-model="selected">
- * ```
- *
- * ```js
- * $scope.values = [{
- *   id: 1,
- *   label: 'aLabel',
- *   subItem: { name: 'aSubItem' }
- * }, {
- *   id: 2,
- *   label: 'bLabel',
- *   subItem: { name: 'bSubItem' }
- * }];
- *
- * $scope.selected = { name: 'aSubItem' };
- * ```
- *
- * With the purpose of preserving the selection, the **`track by`** expression is always applied to the element
- * of the data source (to `item` in this example). To calculate whether an element is selected, we do the
- * following:
- *
- * 1. Apply **`track by`** to the elements in the array. In the example: `[1, 2]`
- * 2. Apply **`track by`** to the already selected value in `ngModel`.
- *    In the example: this is not possible as **`track by`** refers to `item.id`, but the selected
- *    value from `ngModel` is `{name: 'aSubItem'}`, so the **`track by`** expression is applied to
- *    a wrong object, the selected element can't be found, `<select>` is always reset to the "not
- *    selected" option.
- *
- *
- * @param {string} ngModel Assignable angular expression to data-bind to.
- * @param {string=} name Property name of the form under which the control is published.
- * @param {string=} required The control is considered valid only if value is entered.
- * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
- *    the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
- *    `required` when you want to data-bind to the `required` attribute.
- * @param {comprehension_expression=} ngOptions in one of the following forms:
- *
- *   * for array data sources:
- *     * `label` **`for`** `value` **`in`** `array`
- *     * `select` **`as`** `label` **`for`** `value` **`in`** `array`
- *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array`
- *     * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
- *     * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`
- *        (for including a filter with `track by`)
- *   * for object data sources:
- *     * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
- *     * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
- *     * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`
- *     * `select` **`as`** `label` **`group by`** `group`
- *         **`for` `(`**`key`**`,`** `value`**`) in`** `object`
- *
- * Where:
- *
- *   * `array` / `object`: an expression which evaluates to an array / object to iterate over.
- *   * `value`: local variable which will refer to each item in the `array` or each property value
- *      of `object` during iteration.
- *   * `key`: local variable which will refer to a property name in `object` during iteration.
- *   * `label`: The result of this expression will be the label for `<option>` element. The
- *     `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).
- *   * `select`: The result of this expression will be bound to the model of the parent `<select>`
- *      element. If not specified, `select` expression will default to `value`.
- *   * `group`: The result of this expression will be used to group options using the `<optgroup>`
- *      DOM element.
- *   * `trackexpr`: Used when working with an array of objects. The result of this expression will be
- *      used to identify the objects in the array. The `trackexpr` will most likely refer to the
- *     `value` variable (e.g. `value.propertyName`). With this the selection is preserved
- *      even when the options are recreated (e.g. reloaded from the server).
- *
- * @example
-    <example module="selectExample">
-      <file name="index.html">
-        <script>
-        angular.module('selectExample', [])
-          .controller('ExampleController', ['$scope', function($scope) {
-            $scope.colors = [
-              {name:'black', shade:'dark'},
-              {name:'white', shade:'light'},
-              {name:'red', shade:'dark'},
-              {name:'blue', shade:'dark'},
-              {name:'yellow', shade:'light'}
-            ];
-            $scope.myColor = $scope.colors[2]; // red
-          }]);
-        </script>
-        <div ng-controller="ExampleController">
-          <ul>
-            <li ng-repeat="color in colors">
-              Name: <input ng-model="color.name">
-              [<a href ng-click="colors.splice($index, 1)">X</a>]
-            </li>
-            <li>
-              [<a href ng-click="colors.push({})">add</a>]
-            </li>
-          </ul>
-          <hr/>
-          Color (null not allowed):
-          <select ng-model="myColor" ng-options="color.name for color in colors"></select><br>
-
-          Color (null allowed):
-          <span  class="nullable">
-            <select ng-model="myColor" ng-options="color.name for color in colors">
-              <option value="">-- choose color --</option>
-            </select>
-          </span><br/>
-
-          Color grouped by shade:
-          <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
-          </select><br/>
-
-
-          Select <a href ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</a>.<br>
-          <hr/>
-          Currently selected: {{ {selected_color:myColor} }}
-          <div style="border:solid 1px black; height:20px"
-               ng-style="{'background-color':myColor.name}">
-          </div>
-        </div>
-      </file>
-      <file name="protractor.js" type="protractor">
-         it('should check ng-options', function() {
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
-           element.all(by.model('myColor')).first().click();
-           element.all(by.css('select[ng-model="myColor"] option')).first().click();
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
-           element(by.css('.nullable select[ng-model="myColor"]')).click();
-           element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
-           expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
-         });
-      </file>
-    </example>
- */
-
-var ngOptionsDirective = valueFn({
-  restrict: 'A',
-  terminal: true
-});
-
-// jshint maxlen: false
-var selectDirective = ['$compile', '$parse', function($compile,   $parse) {
-                         //000011111111110000000000022222222220000000000000000000003333333333000000000000004444444444444440000000005555555555555550000000666666666666666000000000000000777777777700000000000000000008888888888
-  var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
-      nullModelCtrl = {$setViewValue: noop};
-// jshint maxlen: 100
-
-  return {
-    restrict: 'E',
-    require: ['select', '?ngModel'],
-    controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {
-      var self = this,
-          optionsMap = {},
-          ngModelCtrl = nullModelCtrl,
-          nullOption,
-          unknownOption;
-
-
-      self.databound = $attrs.ngModel;
-
-
-      self.init = function(ngModelCtrl_, nullOption_, unknownOption_) {
-        ngModelCtrl = ngModelCtrl_;
-        nullOption = nullOption_;
-        unknownOption = unknownOption_;
-      };
-
-
-      self.addOption = function(value, element) {
-        assertNotHasOwnProperty(value, '"option value"');
-        optionsMap[value] = true;
-
-        if (ngModelCtrl.$viewValue == value) {
-          $element.val(value);
-          if (unknownOption.parent()) unknownOption.remove();
-        }
-        // Workaround for https://code.google.com/p/chromium/issues/detail?id=381459
-        // Adding an <option selected="selected"> element to a <select required="required"> should
-        // automatically select the new element
-        if (element && element[0].hasAttribute('selected')) {
-          element[0].selected = true;
-        }
-      };
-
-
-      self.removeOption = function(value) {
-        if (this.hasOption(value)) {
-          delete optionsMap[value];
-          if (ngModelCtrl.$viewValue === value) {
-            this.renderUnknownOption(value);
-          }
-        }
-      };
-
-
-      self.renderUnknownOption = function(val) {
-        var unknownVal = '? ' + hashKey(val) + ' ?';
-        unknownOption.val(unknownVal);
-        $element.prepend(unknownOption);
-        $element.val(unknownVal);
-        unknownOption.prop('selected', true); // needed for IE
-      };
-
-
-      self.hasOption = function(value) {
-        return optionsMap.hasOwnProperty(value);
-      };
-
-      $scope.$on('$destroy', function() {
-        // disable unknown option so that we don't do work when the whole select is being destroyed
-        self.renderUnknownOption = noop;
-      });
-    }],
-
-    link: function(scope, element, attr, ctrls) {
-      // if ngModel is not defined, we don't need to do anything
-      if (!ctrls[1]) return;
-
-      var selectCtrl = ctrls[0],
-          ngModelCtrl = ctrls[1],
-          multiple = attr.multiple,
-          optionsExp = attr.ngOptions,
-          nullOption = false, // if false, user will not be able to select it (used by ngOptions)
-          emptyOption,
-          renderScheduled = false,
-          // we can't just jqLite('<option>') since jqLite is not smart enough
-          // to create it in <select> and IE barfs otherwise.
-          optionTemplate = jqLite(document.createElement('option')),
-          optGroupTemplate =jqLite(document.createElement('optgroup')),
-          unknownOption = optionTemplate.clone();
-
-      // find "null" option
-      for (var i = 0, children = element.children(), ii = children.length; i < ii; i++) {
-        if (children[i].value === '') {
-          emptyOption = nullOption = children.eq(i);
-          break;
-        }
-      }
-
-      selectCtrl.init(ngModelCtrl, nullOption, unknownOption);
-
-      // required validator
-      if (multiple) {
-        ngModelCtrl.$isEmpty = function(value) {
-          return !value || value.length === 0;
-        };
-      }
-
-      if (optionsExp) setupAsOptions(scope, element, ngModelCtrl);
-      else if (multiple) setupAsMultiple(scope, element, ngModelCtrl);
-      else setupAsSingle(scope, element, ngModelCtrl, selectCtrl);
-
-
-      ////////////////////////////
-
-
-
-      function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
-        ngModelCtrl.$render = function() {
-          var viewValue = ngModelCtrl.$viewValue;
-
-          if (selectCtrl.hasOption(viewValue)) {
-            if (unknownOption.parent()) unknownOption.remove();
-            selectElement.val(viewValue);
-            if (viewValue === '') emptyOption.prop('selected', true); // to make IE9 happy
-          } else {
-            if (isUndefined(viewValue) && emptyOption) {
-              selectElement.val('');
-            } else {
-              selectCtrl.renderUnknownOption(viewValue);
-            }
-          }
-        };
-
-        selectElement.on('change', function() {
-          scope.$apply(function() {
-            if (unknownOption.parent()) unknownOption.remove();
-            ngModelCtrl.$setViewValue(selectElement.val());
-          });
-        });
-      }
-
-      function setupAsMultiple(scope, selectElement, ctrl) {
-        var lastView;
-        ctrl.$render = function() {
-          var items = new HashMap(ctrl.$viewValue);
-          forEach(selectElement.find('option'), function(option) {
-            option.selected = isDefined(items.get(option.value));
-          });
-        };
-
-        // we have to do it on each watch since ngModel watches reference, but
-        // we need to work of an array, so we need to see if anything was inserted/removed
-        scope.$watch(function selectMultipleWatch() {
-          if (!equals(lastView, ctrl.$viewValue)) {
-            lastView = shallowCopy(ctrl.$viewValue);
-            ctrl.$render();
-          }
-        });
-
-        selectElement.on('change', function() {
-          scope.$apply(function() {
-            var array = [];
-            forEach(selectElement.find('option'), function(option) {
-              if (option.selected) {
-                array.push(option.value);
-              }
-            });
-            ctrl.$setViewValue(array);
-          });
-        });
-      }
-
-      function setupAsOptions(scope, selectElement, ctrl) {
-        var match;
-
-        if (!(match = optionsExp.match(NG_OPTIONS_REGEXP))) {
-          throw ngOptionsMinErr('iexp',
-            "Expected expression in form of " +
-            "'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'" +
-            " but got '{0}'. Element: {1}",
-            optionsExp, startingTag(selectElement));
-        }
-
-        var displayFn = $parse(match[2] || match[1]),
-            valueName = match[4] || match[6],
-            selectAs = / as /.test(match[0]) && match[1],
-            selectAsFn = selectAs ? $parse(selectAs) : null,
-            keyName = match[5],
-            groupByFn = $parse(match[3] || ''),
-            valueFn = $parse(match[2] ? match[1] : valueName),
-            valuesFn = $parse(match[7]),
-            track = match[8],
-            trackFn = track ? $parse(match[8]) : null,
-            trackKeysCache = {},
-            // This is an array of array of existing option groups in DOM.
-            // We try to reuse these if possible
-            // - optionGroupsCache[0] is the options with no option group
-            // - optionGroupsCache[?][0] is the parent: either the SELECT or OPTGROUP element
-            optionGroupsCache = [[{element: selectElement, label:''}]],
-            //re-usable object to represent option's locals
-            locals = {};
-
-        if (nullOption) {
-          // compile the element since there might be bindings in it
-          $compile(nullOption)(scope);
-
-          // remove the class, which is added automatically because we recompile the element and it
-          // becomes the compilation root
-          nullOption.removeClass('ng-scope');
-
-          // we need to remove it before calling selectElement.empty() because otherwise IE will
-          // remove the label from the element. wtf?
-          nullOption.remove();
-        }
-
-        // clear contents, we'll add what's needed based on the model
-        selectElement.empty();
-
-        selectElement.on('change', selectionChanged);
-
-        ctrl.$render = render;
-
-        scope.$watchCollection(valuesFn, scheduleRendering);
-        scope.$watchCollection(getLabels, scheduleRendering);
-
-        if (multiple) {
-          scope.$watchCollection(function() { return ctrl.$modelValue; }, scheduleRendering);
-        }
-
-        // ------------------------------------------------------------------ //
-
-        function callExpression(exprFn, key, value) {
-          locals[valueName] = value;
-          if (keyName) locals[keyName] = key;
-          return exprFn(scope, locals);
-        }
-
-        function selectionChanged() {
-          scope.$apply(function() {
-            var collection = valuesFn(scope) || [];
-            var viewValue;
-            if (multiple) {
-              viewValue = [];
-              forEach(selectElement.val(), function(selectedKey) {
-                  selectedKey = trackFn ? trackKeysCache[selectedKey] : selectedKey;
-                viewValue.push(getViewValue(selectedKey, collection[selectedKey]));
-              });
-            } else {
-              var selectedKey = trackFn ? trackKeysCache[selectElement.val()] : selectElement.val();
-              viewValue = getViewValue(selectedKey, collection[selectedKey]);
-            }
-            ctrl.$setViewValue(viewValue);
-            render();
-          });
-        }
-
-        function getViewValue(key, value) {
-          if (key === '?') {
-            return undefined;
-          } else if (key === '') {
-            return null;
-          } else {
-            var viewValueFn = selectAsFn ? selectAsFn : valueFn;
-            return callExpression(viewValueFn, key, value);
-          }
-        }
-
-        function getLabels() {
-          var values = valuesFn(scope);
-          var toDisplay;
-          if (values && isArray(values)) {
-            toDisplay = new Array(values.length);
-            for (var i = 0, ii = values.length; i < ii; i++) {
-              toDisplay[i] = callExpression(displayFn, i, values[i]);
-            }
-            return toDisplay;
-          } else if (values) {
-            // TODO: Add a test for this case
-            toDisplay = {};
-            for (var prop in values) {
-              if (values.hasOwnProperty(prop)) {
-                toDisplay[prop] = callExpression(displayFn, prop, values[prop]);
-              }
-            }
-          }
-          return toDisplay;
-        }
-
-        function createIsSelectedFn(viewValue) {
-          var selectedSet;
-          if (multiple) {
-            if (trackFn && isArray(viewValue)) {
-
-              selectedSet = new HashMap([]);
-              for (var trackIndex = 0; trackIndex < viewValue.length; trackIndex++) {
-                // tracking by key
-                selectedSet.put(callExpression(trackFn, null, viewValue[trackIndex]), true);
-              }
-            } else {
-              selectedSet = new HashMap(viewValue);
-            }
-          } else if (trackFn) {
-            viewValue = callExpression(trackFn, null, viewValue);
-          }
-
-          return function isSelected(key, value) {
-            var compareValueFn;
-            if (trackFn) {
-              compareValueFn = trackFn;
-            } else if (selectAsFn) {
-              compareValueFn = selectAsFn;
-            } else {
-              compareValueFn = valueFn;
-            }
-
-            if (multiple) {
-              return isDefined(selectedSet.remove(callExpression(compareValueFn, key, value)));
-            } else {
-              return viewValue === callExpression(compareValueFn, key, value);
-            }
-          };
-        }
-
-        function scheduleRendering() {
-          if (!renderScheduled) {
-            scope.$$postDigest(render);
-            renderScheduled = true;
-          }
-        }
-
-        /**
-         * A new labelMap is created with each render.
-         * This function is called for each existing option with added=false,
-         * and each new option with added=true.
-         * - Labels that are passed to this method twice,
-         * (once with added=true and once with added=false) will end up with a value of 0, and
-         * will cause no change to happen to the corresponding option.
-         * - Labels that are passed to this method only once with added=false will end up with a
-         * value of -1 and will eventually be passed to selectCtrl.removeOption()
-         * - Labels that are passed to this method only once with added=true will end up with a
-         * value of 1 and will eventually be passed to selectCtrl.addOption()
-        */
-        function updateLabelMap(labelMap, label, added) {
-          labelMap[label] = labelMap[label] || 0;
-          labelMap[label] += (added ? 1 : -1);
-        }
-
-        function render() {
-          renderScheduled = false;
-
-          // Temporary location for the option groups before we render them
-          var optionGroups = {'':[]},
-              optionGroupNames = [''],
-              optionGroupName,
-              optionGroup,
-              option,
-              existingParent, existingOptions, existingOption,
-              viewValue = ctrl.$viewValue,
-              values = valuesFn(scope) || [],
-              keys = keyName ? sortedKeys(values) : values,
-              key,
-              value,
-              groupLength, length,
-              groupIndex, index,
-              labelMap = {},
-              selected,
-              isSelected = createIsSelectedFn(viewValue),
-              anySelected = false,
-              lastElement,
-              element,
-              label,
-              optionId;
-
-          trackKeysCache = {};
-
-          // We now build up the list of options we need (we merge later)
-          for (index = 0; length = keys.length, index < length; index++) {
-            key = index;
-            if (keyName) {
-              key = keys[index];
-              if (key.charAt(0) === '$') continue;
-            }
-            value = values[key];
-
-            optionGroupName = callExpression(groupByFn, key, value) || '';
-            if (!(optionGroup = optionGroups[optionGroupName])) {
-              optionGroup = optionGroups[optionGroupName] = [];
-              optionGroupNames.push(optionGroupName);
-            }
-
-            selected = isSelected(key, value);
-            anySelected = anySelected || selected;
-
-            label = callExpression(displayFn, key, value); // what will be seen by the user
-
-            // doing displayFn(scope, locals) || '' overwrites zero values
-            label = isDefined(label) ? label : '';
-            optionId = trackFn ? trackFn(scope, locals) : (keyName ? keys[index] : index);
-            if (trackFn) {
-              trackKeysCache[optionId] = key;
-            }
-
-            optionGroup.push({
-              // either the index into array or key from object
-              id: optionId,
-              label: label,
-              selected: selected                   // determine if we should be selected
-            });
-          }
-          if (!multiple) {
-            if (nullOption || viewValue === null) {
-              // insert null option if we have a placeholder, or the model is null
-              optionGroups[''].unshift({id:'', label:'', selected:!anySelected});
-            } else if (!anySelected) {
-              // option could not be found, we have to insert the undefined item
-              optionGroups[''].unshift({id:'?', label:'', selected:true});
-            }
-          }
-
-          // Now we need to update the list of DOM nodes to match the optionGroups we computed above
-          for (groupIndex = 0, groupLength = optionGroupNames.length;
-               groupIndex < groupLength;
-               groupIndex++) {
-            // current option group name or '' if no group
-            optionGroupName = optionGroupNames[groupIndex];
-
-            // list of options for that group. (first item has the parent)
-            optionGroup = optionGroups[optionGroupName];
-
-            if (optionGroupsCache.length <= groupIndex) {
-              // we need to grow the optionGroups
-              existingParent = {
-                element: optGroupTemplate.clone().attr('label', optionGroupName),
-                label: optionGroup.label
-              };
-              existingOptions = [existingParent];
-              optionGroupsCache.push(existingOptions);
-              selectElement.append(existingParent.element);
-            } else {
-              existingOptions = optionGroupsCache[groupIndex];
-              existingParent = existingOptions[0];  // either SELECT (no group) or OPTGROUP element
-
-              // update the OPTGROUP label if not the same.
-              if (existingParent.label != optionGroupName) {
-                existingParent.element.attr('label', existingParent.label = optionGroupName);
-              }
-            }
-
-            lastElement = null;  // start at the beginning
-            for (index = 0, length = optionGroup.length; index < length; index++) {
-              option = optionGroup[index];
-              if ((existingOption = existingOptions[index + 1])) {
-                // reuse elements
-                lastElement = existingOption.element;
-                if (existingOption.label !== option.label) {
-                  updateLabelMap(labelMap, existingOption.label, false);
-                  updateLabelMap(labelMap, option.label, true);
-                  lastElement.text(existingOption.label = option.label);
-                  lastElement.prop('label', existingOption.label);
-                }
-                if (existingOption.id !== option.id) {
-                  lastElement.val(existingOption.id = option.id);
-                }
-                // lastElement.prop('selected') provided by jQuery has side-effects
-                if (lastElement[0].selected !== option.selected) {
-                  lastElement.prop('selected', (existingOption.selected = option.selected));
-                  if (msie) {
-                    // See #7692
-                    // The selected item wouldn't visually update on IE without this.
-                    // Tested on Win7: IE9, IE10 and IE11. Future IEs should be tested as well
-                    lastElement.prop('selected', existingOption.selected);
-                  }
-                }
-              } else {
-                // grow elements
-
-                // if it's a null option
-                if (option.id === '' && nullOption) {
-                  // put back the pre-compiled element
-                  element = nullOption;
-                } else {
-                  // jQuery(v1.4.2) Bug: We should be able to chain the method calls, but
-                  // in this version of jQuery on some browser the .text() returns a string
-                  // rather then the element.
-                  (element = optionTemplate.clone())
-                      .val(option.id)
-                      .prop('selected', option.selected)
-                      .attr('selected', option.selected)
-                      .prop('label', option.label)
-                      .text(option.label);
-                }
-
-                existingOptions.push(existingOption = {
-                    element: element,
-                    label: option.label,
-                    id: option.id,
-                    selected: option.selected
-                });
-                updateLabelMap(labelMap, option.label, true);
-                if (lastElement) {
-                  lastElement.after(element);
-                } else {
-                  existingParent.element.append(element);
-                }
-                lastElement = element;
-              }
-            }
-            // remove any excessive OPTIONs in a group
-            index++; // increment since the existingOptions[0] is parent element not OPTION
-            while (existingOptions.length > index) {
-              option = existingOptions.pop();
-              updateLabelMap(labelMap, option.label, false);
-              option.element.remove();
-            }
-          }
-          // remove any excessive OPTGROUPs from select
-          while (optionGroupsCache.length > groupIndex) {
-            // remove all the labels in the option group
-            optionGroup = optionGroupsCache.pop();
-            for (index = 1; index < optionGroup.length; ++index) {
-              updateLabelMap(labelMap, optionGroup[index].label, false);
-            }
-            optionGroup[0].element.remove();
-          }
-          forEach(labelMap, function(count, label) {
-            if (count > 0) {
-              selectCtrl.addOption(label);
-            } else if (count < 0) {
-              selectCtrl.removeOption(label);
-            }
-          });
-        }
-      }
-    }
-  };
-}];
-
-var optionDirective = ['$interpolate', function($interpolate) {
-  var nullSelectCtrl = {
-    addOption: noop,
-    removeOption: noop
-  };
-
-  return {
-    restrict: 'E',
-    priority: 100,
-    compile: function(element, attr) {
-      if (isUndefined(attr.value)) {
-        var interpolateFn = $interpolate(element.text(), true);
-        if (!interpolateFn) {
-          attr.$set('value', element.text());
-        }
-      }
-
-      return function(scope, element, attr) {
-        var selectCtrlName = '$selectController',
-            parent = element.parent(),
-            selectCtrl = parent.data(selectCtrlName) ||
-              parent.parent().data(selectCtrlName); // in case we are in optgroup
-
-        if (!selectCtrl || !selectCtrl.databound) {
-          selectCtrl = nullSelectCtrl;
-        }
-
-        if (interpolateFn) {
-          scope.$watch(interpolateFn, function interpolateWatchAction(newVal, oldVal) {
-            attr.$set('value', newVal);
-            if (oldVal !== newVal) {
-              selectCtrl.removeOption(oldVal);
-            }
-            selectCtrl.addOption(newVal, element);
-          });
-        } else {
-          selectCtrl.addOption(attr.value, element);
-        }
-
-        element.on('$destroy', function() {
-          selectCtrl.removeOption(attr.value);
-        });
-      };
-    }
-  };
-}];
-
-var styleDirective = valueFn({
-  restrict: 'E',
-  terminal: false
-});
-
-var requiredDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-      attr.required = true; // force truthy in case we are on non input element
-
-      ctrl.$validators.required = function(modelValue, viewValue) {
-        return !attr.required || !ctrl.$isEmpty(viewValue);
-      };
-
-      attr.$observe('required', function() {
-        ctrl.$validate();
-      });
-    }
-  };
-};
-
-
-var patternDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var regexp, patternExp = attr.ngPattern || attr.pattern;
-      attr.$observe('pattern', function(regex) {
-        if (isString(regex) && regex.length > 0) {
-          regex = new RegExp('^' + regex + '$');
-        }
-
-        if (regex && !regex.test) {
-          throw minErr('ngPattern')('noregexp',
-            'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,
-            regex, startingTag(elm));
-        }
-
-        regexp = regex || undefined;
-        ctrl.$validate();
-      });
-
-      ctrl.$validators.pattern = function(value) {
-        return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
-      };
-    }
-  };
-};
-
-
-var maxlengthDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var maxlength = -1;
-      attr.$observe('maxlength', function(value) {
-        var intVal = int(value);
-        maxlength = isNaN(intVal) ? -1 : intVal;
-        ctrl.$validate();
-      });
-      ctrl.$validators.maxlength = function(modelValue, viewValue) {
-        return (maxlength < 0) || ctrl.$isEmpty(modelValue) || (viewValue.length <= maxlength);
-      };
-    }
-  };
-};
-
-var minlengthDirective = function() {
-  return {
-    restrict: 'A',
-    require: '?ngModel',
-    link: function(scope, elm, attr, ctrl) {
-      if (!ctrl) return;
-
-      var minlength = 0;
-      attr.$observe('minlength', function(value) {
-        minlength = int(value) || 0;
-        ctrl.$validate();
-      });
-      ctrl.$validators.minlength = function(modelValue, viewValue) {
-        return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
-      };
-    }
-  };
-};
-
-  if (window.angular.bootstrap) {
-    //AngularJS is already loaded, so we can return here...
-    console.log('WARNING: Tried to load angular more than once.');
-    return;
-  }
-
-  //try to bind to jquery now so that one can write jqLite(document).ready()
-  //but we will rebind on bootstrap again.
-  bindJQuery();
-
-  publishExternalAPI(angular);
-
-  jqLite(document).ready(function() {
-    angularInit(document, bootstrap);
-  });
-
-})(window, document);
-
-!window.angular.$$csp() && window.angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>');
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/angular/angular.min.js b/src/main/webapp/bower_components/angular/angular.min.js
deleted file mode 100644
index 2b79daab..00000000
--- a/src/main/webapp/bower_components/angular/angular.min.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- AngularJS v1.3.11
- (c) 2010-2014 Google, Inc. http://angularjs.org
- License: MIT
-*/
-(function(M,Y,t){'use strict';function T(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.11/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ta(b){if(null==b||Ua(b))return!1;var a=b.length;return b.nodeType===
-oa&&a?!0:F(b)||D(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function s(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(D(b)||Ta(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==s)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ed(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d.length;e++)a.call(c,
-b[d[e]],d[e]);return d}function kc(b){return function(a,c){b(c,a)}}function Fd(){return++nb}function lc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function z(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}lc(b,a);return b}function ba(b){return parseInt(b,10)}function H(){}function pa(b){return b}function da(b){return function(){return b}}function A(b){return"undefined"===typeof b}function y(b){return"undefined"!==
-typeof b}function I(b){return null!==b&&"object"===typeof b}function F(b){return"string"===typeof b}function V(b){return"number"===typeof b}function qa(b){return"[object Date]"===Da.call(b)}function G(b){return"function"===typeof b}function ob(b){return"[object RegExp]"===Da.call(b)}function Ua(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function mc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Gd(b){var a={};
-b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ua(b){return Q(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ea(b,a,c,d){if(Ua(b)||Va(b))throw Ka("cpws");if(a){if(b===a)throw Ka("cpi");c=c||[];d=d||[];if(I(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(D(b))for(var f=a.length=0;f<b.length;f++)e=Ea(b[f],null,c,d),I(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var g=a.$$hashKey;D(a)?a.length=
-0:s(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ea(b[f],null,c,d),I(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);lc(a,g)}}else if(a=b)D(b)?a=Ea(b,[],c,d):qa(b)?a=new Date(b.getTime()):ob(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):I(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Ea(b,e,c,d));return a}function ra(b,a){if(D(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(I(b))for(c in a=a||{},b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=
-b[c];return a||b}function fa(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(D(b)){if(!D(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!fa(b[d],a[d]))return!1;return!0}}else{if(qa(b))return qa(a)?fa(b.getTime(),a.getTime()):!1;if(ob(b)&&ob(a))return b.toString()==a.toString();if(Va(b)||Va(a)||Ua(b)||Ua(a)||D(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!G(b[d])){if(!fa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&
-"$"!==d.charAt(0)&&a[d]!==t&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function nc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Hd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?c=t:Ua(a)?c="$WINDOW":a&&Y===a?c="$DOCUMENT":Va(a)&&
-(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return t;V(a)||(a=a?2:null);return JSON.stringify(b,Hd,a)}function oc(b){return F(b)?JSON.parse(b):b}function va(b){b=B(b).clone();try{b.empty()}catch(a){}var c=B("<div>").append(b).html();try{return b[0].nodeType===pb?Q(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+Q(b)})}catch(d){return Q(c)}}function pc(b){try{return decodeURIComponent(b)}catch(a){}}function qc(b){var a={},c,d;s((b||"").split("&"),function(b){b&&
-(c=b.replace(/\+/g,"%20").split("="),d=pc(c[0]),y(d)&&(b=y(c[1])?pc(c[1]):!0,rc.call(a,d)?D(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Nb(b){var a=[];s(b,function(b,d){D(b)?s(b,function(b){a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))}):a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))});return a.length?a.join("&"):""}function qb(b){return Fa(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fa(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,
-":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=rb.length;b=B(b);for(d=0;d<e;++d)if(c=rb[d]+a,F(c=b.attr(c)))return c;return null}function Jd(b,a){var c,d,e={};s(rb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});s(rb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Id(c,"strict-di"),a(c,d?[d]:[],e))}function sc(b,
-a,c){I(c)||(c={});c=z({strictDi:!1},c);var d=function(){b=B(b);if(b.injector()){var d=b[0]===Y?"document":va(b);throw Ka("btstrpd",d.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=Ob(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return d},
-e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;M&&e.test(M.name)&&(c.debugInfoEnabled=!0,M.name=M.name.replace(e,""));if(M&&!f.test(M.name))return d();M.name=M.name.replace(f,"");ga.resumeBootstrap=function(b){s(b,function(b){a.push(b)});d()}}function Kd(){M.name="NG_ENABLE_DEBUG_INFO!"+M.name;M.location.reload()}function Ld(b){b=ga.element(b).injector();if(!b)throw Ka("test");return b.get("$$testability")}function tc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}
-function Nd(){var b;uc||((sa=M.jQuery)&&sa.fn.on?(B=sa,z(sa.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),b=sa.cleanData,sa.cleanData=function(a){var c;if(Pb)Pb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=sa._data(e,"events"))&&c.$destroy&&sa(e).triggerHandler("$destroy");b(a)}):B=R,ga.element=B,uc=!0)}function Qb(b,a,c){if(!b)throw Ka("areq",a||"?",c||"required");return b}function sb(b,a,c){c&&D(b)&&(b=b[b.length-1]);
-Qb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Ka("badname",a);}function vc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&G(b)?nc(e,b):b}function tb(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return B(c)}function ha(){return Object.create(null)}function Od(b){function a(a,b,c){return a[b]||
-(a[b]=c())}var c=T("$injector"),d=T("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||T;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return u}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],q=a("$injector","invoke","push",d),u={_invokeQueue:b,_configBlocks:d,_runBlocks:e,requires:g,name:f,provider:a("$provide",
-"provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:q,run:function(a){e.push(a);return this}};h&&q(h);return u})}})}function Pd(b){z(b,{bootstrap:sc,copy:Ea,extend:z,equals:fa,element:B,forEach:s,injector:Ob,noop:H,bind:nc,toJson:$a,
-fromJson:oc,identity:pa,isUndefined:A,isDefined:y,isString:F,isFunction:G,isObject:I,isNumber:V,isElement:mc,isArray:D,version:Qd,isDate:qa,lowercase:Q,uppercase:ub,callbacks:{counter:0},getTestability:Ld,$$minErr:T,$$csp:ab,reloadWithDebugInfo:Kd});bb=Od(M);try{bb("ngLocale")}catch(a){bb("ngLocale",[]).provider("$locale",Rd)}bb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Sd});a.provider("$compile",wc).directive({a:Td,input:xc,textarea:xc,form:Ud,script:Vd,select:Wd,style:Xd,
-option:Yd,ngBind:Zd,ngBindHtml:$d,ngBindTemplate:ae,ngClass:be,ngClassEven:ce,ngClassOdd:de,ngCloak:ee,ngController:fe,ngForm:ge,ngHide:he,ngIf:ie,ngInclude:je,ngInit:ke,ngNonBindable:le,ngPluralize:me,ngRepeat:ne,ngShow:oe,ngStyle:pe,ngSwitch:qe,ngSwitchWhen:re,ngSwitchDefault:se,ngOptions:te,ngTransclude:ue,ngModel:ve,ngList:we,ngChange:xe,pattern:yc,ngPattern:yc,required:zc,ngRequired:zc,minlength:Ac,ngMinlength:Ac,maxlength:Bc,ngMaxlength:Bc,ngValue:ye,ngModelOptions:ze}).directive({ngInclude:Ae}).directive(vb).directive(Cc);
-a.provider({$anchorScroll:Be,$animate:Ce,$browser:De,$cacheFactory:Ee,$controller:Fe,$document:Ge,$exceptionHandler:He,$filter:Dc,$interpolate:Ie,$interval:Je,$http:Ke,$httpBackend:Le,$location:Me,$log:Ne,$parse:Oe,$rootScope:Pe,$q:Qe,$$q:Re,$sce:Se,$sceDelegate:Te,$sniffer:Ue,$templateCache:Ve,$templateRequest:We,$$testability:Xe,$timeout:Ye,$window:Ze,$$rAF:$e,$$asyncCallback:af,$$jqLite:bf})}])}function cb(b){return b.replace(cf,function(a,b,d,e){return e?d.toUpperCase():d}).replace(df,"Moz$1")}
-function Ec(b){b=b.nodeType;return b===oa||!b||9===b}function Fc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Rb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ef.exec(b)||["",""])[1].toLowerCase();d=ia[d]||ia._default;c.innerHTML=d[1]+b.replace(ff,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";s(f,function(a){e.appendChild(a)});return e}function R(b){if(b instanceof
-R)return b;var a;F(b)&&(b=U(b),a=!0);if(!(this instanceof R)){if(a&&"<"!=b.charAt(0))throw Sb("nosel");return new R(b)}if(a){a=Y;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Fc(b,a))?c.childNodes:[]}Gc(this,b)}function Tb(b){return b.cloneNode(!0)}function wb(b,a){a||xb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)xb(c[d])}function Hc(b,a,c,d){if(y(d))throw Sb("offargs");var e=(d=yb(b))&&d.events,f=d&&d.handle;if(f)if(a)s(a.split(" "),function(a){if(y(c)){var d=
-e[a];Xa(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,f,!1),delete e[a]}function xb(b,a){var c=b.ng339,d=c&&zb[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Hc(b)),delete zb[c],b.ng339=t))}function yb(b,a){var c=b.ng339,c=c&&zb[c];a&&!c&&(b.ng339=c=++hf,c=zb[c]={events:{},data:{},handle:t});return c}function Ub(b,a,c){if(Ec(b)){var d=y(c),e=!d&&a&&!I(a),f=!a;b=(b=yb(b,!e))&&b.data;
-if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];z(b,a)}}}function Ab(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Bb(b,a){a&&b.setAttribute&&s(a.split(" "),function(a){b.setAttribute("class",U((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+U(a)+" "," ")))})}function Cb(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");s(a.split(" "),function(a){a=
-U(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",U(c))}}function Gc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Ic(b,a){return Db(b,"$"+(a||"ngController")+"Controller")}function Db(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=D(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=B.data(b,a[d]))!==t)return c;b=b.parentNode||11===b.nodeType&&b.host}}
-function Jc(b){for(wb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Kc(b,a){a||wb(b);var c=b.parentNode;c&&c.removeChild(b)}function jf(b,a){a=a||M;if("complete"===a.document.readyState)a.setTimeout(b);else B(a).on("load",b)}function Lc(b,a){var c=Eb[a.toLowerCase()];return c&&Mc[ua(b)]&&c}function kf(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Nc[a]}function lf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=a[e||c.type],g=f?f.length:
-0;if(g){if(A(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=ra(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function bf(){this.$get=function(){return z(R,{hasClass:function(b,a){b.attr&&(b=b[0]);return Ab(b,a)},addClass:function(b,
-a){b.attr&&(b=b[0]);return Cb(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return Bb(b,a)}})}}function Na(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Fd)():c+":"+b}function db(b,a){if(a){var c=0;this.nextUid=function(){return++c}}s(b,this.put,this)}function mf(b){return(b=b.toString().replace(Oc,"").match(Pc))?"function("+(b[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Vb(b,
-a,c){var d;if("function"===typeof b){if(!(d=b.$inject)){d=[];if(b.length){if(a)throw F(c)&&c||(c=b.name||mf(b)),Ga("strictdi",c);a=b.toString().replace(Oc,"");a=a.match(Pc);s(a[1].split(nf),function(a){a.replace(of,function(a,b,c){d.push(c)})})}b.$inject=d}}else D(b)?(a=b.length-1,sb(b[a],"fn"),d=b.slice(0,a)):sb(b,"fn",!0);return d}function Ob(b,a){function c(a){return function(b,c){if(I(b))s(b,kc(a));else return a(b,c)}}function d(a,b){Ma(a,"service");if(G(b)||D(b))b=q.instantiate(b);if(!b.$get)throw Ga("pget",
-a);return n[a+"Provider"]=b}function e(a,b){return function(){var c=r.invoke(b,this);if(A(c))throw Ga("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;s(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=q.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.put(a,!0);try{F(a)?(c=bb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):G(a)?b.push(q.invoke(a)):D(a)?b.push(q.invoke(a)):sb(a,"module")}catch(e){throw D(a)&&
-(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Ga("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var h=[],k=Vb(b,a,g),l,q,n;q=0;for(l=k.length;q<l;q++){n=k[q];if("string"!==
-typeof n)throw Ga("itkn",n);h.push(f&&f.hasOwnProperty(n)?f[n]:d(n,g))}D(b)&&(b=b[l]);return b.apply(c,h)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((D(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return I(a)||G(a)?a:d},get:d,annotate:Vb,has:function(a){return n.hasOwnProperty(a+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],m=new db([],!0),n={$provide:{provider:c(d),factory:c(f),service:c(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),
-value:c(function(a,b){return f(a,da(b),!1)}),constant:c(function(a,b){Ma(a,"constant");n[a]=b;u[a]=b}),decorator:function(a,b){var c=q.get(a+"Provider"),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},q=n.$injector=h(n,function(a,b){ga.isString(b)&&k.push(b);throw Ga("unpr",k.join(" <- "));}),u={},r=u.$injector=h(u,function(a,b){var c=q.get(a+"Provider",b);return r.invoke(c.$get,c,t,a)});s(g(b),function(a){r.invoke(a||H)});return r}function Be(){var b=!0;this.disableAutoScrolling=
-function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ua(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;G(c)?c=c():mc(c)?(c=c[0],c="fixed"!==a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):V(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,0)}function g(){var a=c.hash(),b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?
-f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||jf(function(){d.$evalAsync(g)})});return g}]}function af(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function pf(b,a,c,d){function e(a){try{a.apply(null,Za.call(arguments,1))}finally{if(v--,0===v)for(;w.length;)try{w.pop()()}catch(b){c.error(b)}}}function f(a,b){(function N(){s(L,function(a){a()});C=b(N,
-a)})()}function g(){h();l()}function h(){x=b.history.state;x=A(x)?null:x;fa(x,J)&&(x=J);J=x}function l(){if(E!==m.url()||P!==x)E=m.url(),P=x,s(W,function(a){a(m.url(),x)})}function k(a){try{return decodeURIComponent(a)}catch(b){return a}}var m=this,n=a[0],q=b.location,u=b.history,r=b.setTimeout,O=b.clearTimeout,p={};m.isMock=!1;var v=0,w=[];m.$$completeOutstandingRequest=e;m.$$incOutstandingRequestCount=function(){v++};m.notifyWhenNoOutstandingRequests=function(a){s(L,function(a){a()});0===v?a():
-w.push(a)};var L=[],C;m.addPollFn=function(a){A(C)&&f(100,r);L.push(a);return a};var x,P,E=q.href,S=a.find("base"),X=null;h();P=x;m.url=function(a,c,e){A(e)&&(e=null);q!==b.location&&(q=b.location);u!==b.history&&(u=b.history);if(a){var f=P===e;if(E===a&&(!d.history||f))return m;var g=E&&Ha(E)===Ha(a);E=a;P=e;!d.history||g&&f?(g||(X=a),c?q.replace(a):g?(c=q,e=a.indexOf("#"),a=-1===e?"":a.substr(e+1),c.hash=a):q.href=a):(u[c?"replaceState":"pushState"](e,"",a),h(),P=x);return m}return X||q.href.replace(/%27/g,
-"'")};m.state=function(){return x};var W=[],wa=!1,J=null;m.onUrlChange=function(a){if(!wa){if(d.history)B(b).on("popstate",g);B(b).on("hashchange",g);wa=!0}W.push(a);return a};m.$$checkUrlChange=l;m.baseHref=function(){var a=S.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var ea={},y="",ca=m.baseHref();m.cookies=function(a,b){var d,e,f,g;if(a)b===t?n.cookie=encodeURIComponent(a)+"=;path="+ca+";expires=Thu, 01 Jan 1970 00:00:00 GMT":F(b)&&(d=(n.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+
-";path="+ca).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(n.cookie!==y)for(y=n.cookie,d=y.split("; "),ea={},f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),0<g&&(a=k(e.substring(0,g)),ea[a]===t&&(ea[a]=k(e.substring(g+1))));return ea}};m.defer=function(a,b){var c;v++;c=r(function(){delete p[c];e(a)},b||0);p[c]=!0;return c};m.defer.cancel=function(a){return p[a]?(delete p[a],O(a),e(H),!0):!1}}function De(){this.$get=["$window",
-"$log","$sniffer","$document",function(b,a,c,d){return new pf(b,d,a,c)}]}function Ee(){this.$get=function(){function b(b,d){function e(a){a!=n&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw T("$cacheFactory")("iid",b);var g=0,h=z({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},n=null,q=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!A(b))return a in l||g++,l[a]=b,g>k&&this.remove(q.key),
-b},get:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p);b==q&&(q=b.n);f(b.n,b.p);delete m[a]}delete l[a];g--},removeAll:function(){l={};g=0;m={};n=q=null},destroy:function(){m=h=l=null;delete a[b]},info:function(){return z({},h,{size:g})}}}var a={};b.info=function(){var b={};s(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Ve(){this.$get=["$cacheFactory",
-function(b){return b("templates")}]}function wc(b,a){function c(a,b){var c=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,d={};s(a,function(a,e){var f=a.match(c);if(!f)throw ja("iscp",b,e,a);d[e]={mode:f[1][0],collection:"*"===f[2],optional:"?"===f[3],attrName:f[4]||e}});return d}var d={},e=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,f=/(([\w\-]+)(?:\:([^;]+))?;?)/,g=Gd("ngSrc,ngSrcset,src,srcset"),h=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function n(a,e){Ma(a,"directive");F(a)?(Qb(e,
-"directiveFactory"),d.hasOwnProperty(a)||(d[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,e){var f=[];s(d[a],function(d,g){try{var h=b.invoke(d);G(h)?h={compile:da(h)}:!h.compile&&h.link&&(h.compile=da(h.link));h.priority=h.priority||0;h.index=g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";I(h.scope)&&(h.$$isolateBindings=c(h.scope,h.name));f.push(h)}catch(l){e(l)}});return f}])),d[a].push(e)):s(a,kc(n));return this};this.aHrefSanitizationWhitelist=
-function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};var k=!0;this.debugInfoEnabled=function(a){return y(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,r,O,p,v,w,L,C,x){function P(a,b){try{a.addClass(b)}catch(c){}}
-function E(a,b,c,d,e){a instanceof B||(a=B(a));s(a,function(b,c){b.nodeType==pb&&b.nodeValue.match(/\S+/)&&(a[c]=B(b).wrap("<span></span>").parent()[0])});var f=S(a,b,a,c,d,e);E.$$addScopeClass(a);var g=null;return function(b,c,d){Qb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ua(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?B(Wb(g,B("<div>").append(a).html())):
-c?La.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);E.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a,c,d,e){var f,l,k,q,n,p,w;if(r)for(w=Array(c.length),q=0;q<h.length;q+=3)f=h[q],w[f]=c[f];else w=c;q=0;for(n=h.length;q<n;)l=w[h[q++]],c=h[q++],f=h[q++],c?(c.scope?(k=a.$new(),E.$$addScopeInfo(B(l),k)):k=a,p=c.transcludeOnThisElement?X(a,c.transclude,e,c.elementTranscludeOnThisElement):!c.templateOnThisElement&&e?e:!e&&b?X(a,
-b):null,c(f,k,l,d,p)):f&&f(a,l.childNodes,t,e)}for(var h=[],l,k,q,n,r,p=0;p<a.length;p++){l=new Xb;k=W(a[p],[],l,0===p?d:t,e);(f=k.length?ea(k,a[p],l,b,c,null,[],[],f):null)&&f.scope&&E.$$addScopeClass(l.$$element);l=f&&f.terminal||!(q=a[p].childNodes)||!q.length?null:S(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||l)h.push(p,f,l),n=!0,r=r||f;f=null}return n?g:null}function X(a,b,c,d){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,
-{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function W(a,b,c,d,g){var h=c.$attr,l;switch(a.nodeType){case oa:ca(b,ya(ua(a)),"E",d,g);for(var k,q,n,r=a.attributes,p=0,w=r&&r.length;p<w;p++){var O=!1,L=!1;k=r[p];l=k.name;q=U(k.value);k=ya(l);if(n=fb.test(k))l=l.replace(Rc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var u=k.replace(/(Start|End)$/,"");A(u)&&k===u+"Start"&&(O=l,L=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6));k=ya(l.toLowerCase());
-h[k]=l;if(n||!c.hasOwnProperty(k))c[k]=q,Lc(a,k)&&(c[k]=!0);Pa(a,b,q,k,n);ca(b,k,"A",d,g,O,L)}a=a.className;I(a)&&(a=a.animVal);if(F(a)&&""!==a)for(;l=f.exec(a);)k=ya(l[2]),ca(b,k,"C",d,g)&&(c[k]=U(l[3])),a=a.substr(l.index+l[0].length);break;case pb:M(b,a.nodeValue);break;case 8:try{if(l=e.exec(a.nodeValue))k=ya(l[1]),ca(b,k,"M",d,g)&&(c[k]=U(l[2]))}catch(v){}}b.sort(N);return b}function wa(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ja("uterdir",b,c);a.nodeType==
-oa&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return B(d)}function J(a,b,c){return function(d,e,f,g,h){e=wa(e[0],b,c);return a(d,e,f,g,h)}}function ea(a,d,e,f,g,l,k,n,r){function w(a,b,c,d){if(a){c&&(a=J(a,c,d));a.require=K.require;a.directiveName=z;if(S===K||K.$$isolateScope)a=Z(a,{isolateScope:!0});k.push(a)}if(b){c&&(b=J(b,c,d));b.require=K.require;b.directiveName=z;if(S===K||K.$$isolateScope)b=Z(b,{isolateScope:!0});n.push(b)}}function L(a,
-b,c,d){var e,f="data",g=!1,l=c,k;if(F(b)){k=b.match(h);b=b.substring(k[0].length);k[3]&&(k[1]?k[3]=null:k[1]=k[3]);"^"===k[1]?f="inheritedData":"^^"===k[1]&&(f="inheritedData",l=c.parent());"?"===k[2]&&(g=!0);e=null;d&&"data"===f&&(e=d[b])&&(e=e.instance);e=e||l[f]("$"+b+"Controller");if(!e&&!g)throw ja("ctreq",b,a);return e||null}D(b)&&(e=[],s(b,function(b){e.push(L(a,b,c,d))}));return e}function v(a,c,f,g,h){function l(a,b,c){var d;Va(a)||(c=b,b=a,a=t);H&&(d=P);c||(c=H?W.parent():W);return h(a,
-b,d,c,wa)}var r,w,u,x,P,eb,W,J;d===f?(J=e,W=e.$$element):(W=B(f),J=new Xb(W,e));S&&(x=c.$new(!0));h&&(eb=l,eb.$$boundTransclude=h);C&&(X={},P={},s(C,function(a){var b={$scope:a===S||a.$$isolateScope?x:c,$element:W,$attrs:J,$transclude:eb};u=a.controller;"@"==u&&(u=J[a.name]);b=p(u,b,!0,a.controllerAs);P[a.name]=b;H||W.data("$"+a.name+"Controller",b.instance);X[a.name]=b}));if(S){E.$$addScopeInfo(W,x,!0,!(ka&&(ka===S||ka===S.$$originalDirective)));E.$$addScopeClass(W,!0);g=X&&X[S.name];var xa=x;g&&
-g.identifier&&!0===S.bindToController&&(xa=g.instance);s(x.$$isolateBindings=S.$$isolateBindings,function(a,d){var e=a.attrName,f=a.optional,g,h,l,k;switch(a.mode){case "@":J.$observe(e,function(a){xa[d]=a});J.$$observers[e].$$scope=c;J[e]&&(xa[d]=b(J[e])(c));break;case "=":if(f&&!J[e])break;h=O(J[e]);k=h.literal?fa:function(a,b){return a===b||a!==a&&b!==b};l=h.assign||function(){g=xa[d]=h(c);throw ja("nonassign",J[e],S.name);};g=xa[d]=h(c);f=function(a){k(a,xa[d])||(k(a,g)?l(c,a=xa[d]):xa[d]=a);
-return g=a};f.$stateful=!0;f=a.collection?c.$watchCollection(J[e],f):c.$watch(O(J[e],f),null,h.literal);x.$on("$destroy",f);break;case "&":h=O(J[e]),xa[d]=function(a){return h(c,a)}}})}X&&(s(X,function(a){a()}),X=null);g=0;for(r=k.length;g<r;g++)w=k[g],$(w,w.isolateScope?x:c,W,J,w.require&&L(w.directiveName,w.require,W,P),eb);var wa=c;S&&(S.template||null===S.templateUrl)&&(wa=x);a&&a(wa,f.childNodes,t,h);for(g=n.length-1;0<=g;g--)w=n[g],$(w,w.isolateScope?x:c,W,J,w.require&&L(w.directiveName,w.require,
-W,P),eb)}r=r||{};for(var x=-Number.MAX_VALUE,P,C=r.controllerDirectives,X,S=r.newIsolateScopeDirective,ka=r.templateDirective,ea=r.nonTlbTranscludeDirective,ca=!1,A=!1,H=r.hasElementTranscludeDirective,aa=e.$$element=B(d),K,z,N,Aa=f,Q,M=0,R=a.length;M<R;M++){K=a[M];var Pa=K.$$start,fb=K.$$end;Pa&&(aa=wa(d,Pa,fb));N=t;if(x>K.priority)break;if(N=K.scope)K.templateUrl||(I(N)?(Oa("new/isolated scope",S||P,K,aa),S=K):Oa("new/isolated scope",S,K,aa)),P=P||K;z=K.name;!K.templateUrl&&K.controller&&(N=K.controller,
-C=C||{},Oa("'"+z+"' controller",C[z],K,aa),C[z]=K);if(N=K.transclude)ca=!0,K.$$tlb||(Oa("transclusion",ea,K,aa),ea=K),"element"==N?(H=!0,x=K.priority,N=aa,aa=e.$$element=B(Y.createComment(" "+z+": "+e[z]+" ")),d=aa[0],V(g,Za.call(N,0),d),Aa=E(N,f,x,l&&l.name,{nonTlbTranscludeDirective:ea})):(N=B(Tb(d)).contents(),aa.empty(),Aa=E(N,f));if(K.template)if(A=!0,Oa("template",ka,K,aa),ka=K,N=G(K.template)?K.template(aa,e):K.template,N=Sc(N),K.replace){l=K;N=Rb.test(N)?Tc(Wb(K.templateNamespace,U(N))):[];
-d=N[0];if(1!=N.length||d.nodeType!==oa)throw ja("tplrt",z,"");V(g,aa,d);R={$attr:{}};N=W(d,[],R);var ba=a.splice(M+1,a.length-(M+1));S&&y(N);a=a.concat(N).concat(ba);Qc(e,R);R=a.length}else aa.html(N);if(K.templateUrl)A=!0,Oa("template",ka,K,aa),ka=K,K.replace&&(l=K),v=T(a.splice(M,a.length-M),aa,e,g,ca&&Aa,k,n,{controllerDirectives:C,newIsolateScopeDirective:S,templateDirective:ka,nonTlbTranscludeDirective:ea}),R=a.length;else if(K.compile)try{Q=K.compile(aa,e,Aa),G(Q)?w(null,Q,Pa,fb):Q&&w(Q.pre,
-Q.post,Pa,fb)}catch(qf){c(qf,va(aa))}K.terminal&&(v.terminal=!0,x=Math.max(x,K.priority))}v.scope=P&&!0===P.scope;v.transcludeOnThisElement=ca;v.elementTranscludeOnThisElement=H;v.templateOnThisElement=A;v.transclude=Aa;r.hasElementTranscludeDirective=H;return v}function y(a){for(var b=0,c=a.length;b<c;b++){var d=b,e;e=z(Object.create(a[b]),{$$isolateScope:!0});a[d]=e}}function ca(b,e,f,g,h,l,k){if(e===h)return null;h=null;if(d.hasOwnProperty(e)){var q;e=a.get(e+"Directive");for(var r=0,p=e.length;r<
-p;r++)try{if(q=e[r],(g===t||g>q.priority)&&-1!=q.restrict.indexOf(f)){if(l){var w={$$start:l,$$end:k};q=z(Object.create(q),w)}b.push(q);h=q}}catch(O){c(O)}}return h}function A(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e<f;e++)if(b=c[e],b.multiElement)return!0;return!1}function Qc(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;s(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});s(b,function(b,f){"class"==f?(P(e,b),a["class"]=
-(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function T(a,b,c,d,e,f,g,h){var l=[],k,q,n=b[0],p=a.shift(),w=z({},p,{templateUrl:null,transclude:null,replace:null,$$originalDirective:p}),O=G(p.templateUrl)?p.templateUrl(b,c):p.templateUrl,u=p.templateNamespace;b.empty();r(L.getTrustedResourceUrl(O)).then(function(r){var L,v;r=Sc(r);if(p.replace){r=Rb.test(r)?Tc(Wb(u,
-U(r))):[];L=r[0];if(1!=r.length||L.nodeType!==oa)throw ja("tplrt",p.name,O);r={$attr:{}};V(d,b,L);var x=W(L,[],r);I(p.scope)&&y(x);a=x.concat(a);Qc(c,r)}else L=n,b.html(r);a.unshift(w);k=ea(a,L,c,e,b,p,f,g,h);s(d,function(a,c){a==L&&(d[c]=b[0])});for(q=S(b[0].childNodes,e);l.length;){r=l.shift();v=l.shift();var C=l.shift(),E=l.shift(),x=b[0];if(!r.$$destroyed){if(v!==n){var J=v.className;h.hasElementTranscludeDirective&&p.replace||(x=Tb(L));V(C,B(v),x);P(B(x),J)}v=k.transcludeOnThisElement?X(r,k.transclude,
-E):E;k(q,r,x,d,v)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(k.transcludeOnThisElement&&(a=X(b,k.transclude,e)),k(q,b,c,d,a)))}}function N(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function Oa(a,b,c,d){if(b)throw ja("multidir",b.name,c.name,a,va(d));}function M(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&E.$$addBindingClass(a);return function(a,c){var e=c.parent();
-b||E.$$addBindingClass(e);E.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Wb(a,b){a=Q(a||"html");switch(a){case "svg":case "math":var c=Y.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if("srcdoc"==b)return L.HTML;var c=ua(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return L.RESOURCE_URL}function Pa(a,c,d,e,f){var h=R(a,e);f=g[e]||f;var k=b(d,!0,
-h,f);if(k){if("multiple"===e&&"select"===ua(a))throw ja("selmulti",va(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ja("nodomevents");var n=g[e];n!==d&&(k=n&&b(n,!0,h,f),d=n);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function V(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<
-h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var l=a.length;g<l;g++,h++)h<l?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=Y.createDocumentFragment();a.appendChild(d);B(c).data(B(d).data());sa?(Pb=!0,sa.cleanData([d])):delete B.cache[d[B.expando]];d=1;for(e=b.length;d<e;d++)f=b[d],B(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function Z(a,b){return z(function(){return a.apply(null,arguments)},a,b)}function $(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,
-va(d))}}var Xb=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};Xb.prototype={$normalize:ya,$addClass:function(a){a&&0<a.length&&C.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&C.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=Uc(a,b);c&&c.length&&C.addClass(this.$$element,c);(c=Uc(b,a))&&c.length&&C.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=
-Lc(f,a),h=kf(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=tc(a,"-"));g=ua(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=x(b,"src"===a);else if("img"===g&&"srcset"===a){for(var g="",h=U(b),l=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,l=/\s/.test(h)?l:/(,)/,h=h.split(l),l=Math.floor(h.length/2),k=0;k<l;k++)var q=2*k,g=g+x(U(h[q]),!0),g=g+(" "+U(h[q+1]));h=U(h[2*k]).split(/\s/);g+=x(U(h[0]),!0);2===h.length&&
-(g+=" "+U(h[1]));this[a]=b=g}!1!==d&&(null===b||b===t?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&s(a[f],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=ha()),e=d[a]||(d[a]=[]);e.push(b);v.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});return function(){Xa(e,b)}}};var Aa=b.startSymbol(),ka=b.endSymbol(),Sc="{{"==Aa||"}}"==ka?pa:function(a){return a.replace(/\{\{/g,Aa).replace(/}}/g,ka)},fb=
-/^ngAttr[A-Z]/;E.$$addBindingInfo=k?function(a,b){var c=a.data("$binding")||[];D(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:H;E.$$addBindingClass=k?function(a){P(a,"ng-binding")}:H;E.$$addScopeInfo=k?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:H;E.$$addScopeClass=k?function(a,b){P(a,b?"ng-isolate-scope":"ng-scope")}:H;return E}]}function ya(b){return cb(b.replace(Rc,""))}function Uc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=
-d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Tc(b){b=B(b);var a=b.length;if(1>=a)return b;for(;a--;)8===b[a].nodeType&&rf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ma(a,"controller");I(a)?z(b,a):b[a]=c};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!I(a.$scope))throw T("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,
-l,k){var m,n,q;l=!0===l;k&&F(k)&&(q=k);F(g)&&(k=g.match(c),n=k[1],q=q||k[3],g=b.hasOwnProperty(n)?b[n]:vc(h.$scope,n,!0)||(a?vc(e,n,!0):t),sb(g,n,!0));if(l)return l=(D(g)?g[g.length-1]:g).prototype,m=Object.create(l||null),q&&f(h,q,m,n||g.name),z(function(){d.invoke(g,m,h,n);return m},{instance:m,identifier:q});m=d.instantiate(g,h,n);q&&f(h,q,m,n||g.name);return m}}]}function Ge(){this.$get=["$window",function(b){return B(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,
-c){b.error.apply(b,arguments)}}]}function Yb(b,a){if(F(b)){var c=b.replace(sf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Vc))||(d=(d=c.match(tf))&&uf[d[0]].test(c));d&&(b=oc(c))}}return b}function Wc(b){var a=ha(),c,d,e;if(!b)return a;s(b.split("\n"),function(b){e=b.indexOf(":");c=Q(U(b.substr(0,e)));d=U(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Xc(b){var a=I(b)?b:t;return function(c){a||(a=Wc(b));return c?(c=a[Q(c)],void 0===c&&(c=null),c):a}}function Yc(b,
-a,c,d){if(G(d))return d(b,a,c);s(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Yb],transformRequest:[function(a){return I(a)&&"[object File]"!==Da.call(a)&&"[object Blob]"!==Da.call(a)&&"[object FormData]"!==Da.call(a)?$a(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ra(Zb),put:ra(Zb),patch:ra(Zb)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=
-[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=z({},a);b.data=a.data?Yc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a){var b,c={};s(a,function(a,d){G(a)?(b=a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!ga.isObject(a))throw T("$http")("badreq",a);var e=z({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},
-a);e.headers=function(a){var c=b.headers,e=z({},a.headers),f,g,c=z({},c.common,c[Q(a.method)]);a:for(f in c){a=Q(f);for(g in e)if(Q(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=ub(e.method);var f=[function(a){var d=a.headers,e=Yc(a.data,Xc(d),t,a.transformRequest);A(e)&&s(d,function(a,b){"content-type"===Q(b)&&delete d[b]});A(a.withCredentials)&&!A(b.withCredentials)&&(a.withCredentials=b.withCredentials);return m(a,e).then(c,c)},t],g=h.when(e);for(s(u,function(a){(a.request||a.requestError)&&
-f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var l=f.shift(),g=g.then(a,l)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});return g};return g}function m(c,f){function l(b,c,d,e){function f(){m(c,b,d,e)}P&&(200<=b&&300>b?P.put(X,[b,c,Wc(d),e]):P.remove(X));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function m(a,
-b,d,e){b=Math.max(b,0);(200<=b&&300>b?C.resolve:C.reject)({data:a,status:b,headers:Xc(d),config:c,statusText:e})}function w(a){m(a.data,a.status,ra(a.headers()),a.statusText)}function u(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var C=h.defer(),x=C.promise,P,E,s=c.headers,X=n(c.url,c.params);k.pendingRequests.push(c);x.then(u,u);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(P=I(c.cache)?c.cache:I(b.cache)?b.cache:q);P&&(E=P.get(X),y(E)?E&&
-G(E.then)?E.then(w,w):D(E)?m(E[1],E[0],ra(E[2]),E[3]):m(E,200,{},"OK"):P.put(X,x));A(E)&&((E=Zc(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:t)&&(s[c.xsrfHeaderName||b.xsrfHeaderName]=E),d(c.method,X,f,l,s,c.timeout,c.withCredentials,c.responseType));return x}function n(a,b){if(!b)return a;var c=[];Ed(b,function(a,b){null===a||A(a)||(D(a)||(a=[a]),s(a,function(a){I(a)&&(a=qa(a)?a.toISOString():$a(a));c.push(Fa(b)+"="+Fa(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));
-return a}var q=f("$http"),u=[];s(c,function(a){u.unshift(F(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){s(arguments,function(a){k[a]=function(b,c){return k(z(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){s(arguments,function(a){k[a]=function(b,c,d){return k(z(d||{},{method:a,url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function vf(){return new M.XMLHttpRequest}function Le(){this.$get=["$browser","$window","$document",function(b,a,c){return wf(b,
-vf,b.defer,a.angular.callbacks,c[0])}]}function wf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",m,!1);e.body.removeChild(f);f=null;var g=-1,u="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),u=a.type,g="error"===a.type?404:200);c&&c(g,u)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}return function(e,
-h,l,k,m,n,q,u){function r(){v&&v();w&&w.abort()}function O(a,d,e,f,g){C!==t&&c.cancel(C);v=w=null;a(d,e,f,g);b.$$completeOutstandingRequest(H)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==Q(e)){var p="_"+(d.counter++).toString(36);d[p]=function(a){d[p].data=a;d[p].called=!0};var v=f(h.replace("JSON_CALLBACK","angular.callbacks."+p),p,function(a,b){O(k,a,d[p].data,"",b);d[p]=H})}else{var w=a();w.open(e,h,!0);s(m,function(a,b){y(a)&&w.setRequestHeader(b,a)});w.onload=function(){var a=w.statusText||
-"",b="response"in w?w.response:w.responseText,c=1223===w.status?204:w.status;0===c&&(c=b?200:"file"==Ba(h).protocol?404:0);O(k,c,b,w.getAllResponseHeaders(),a)};e=function(){O(k,-1,null,null,"")};w.onerror=e;w.onabort=e;q&&(w.withCredentials=!0);if(u)try{w.responseType=u}catch(L){if("json"!==u)throw L;}w.send(l||null)}if(0<n)var C=c(r,n);else n&&G(n.then)&&n.then(r)}}function Ie(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):
-a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(f,g,u,r){function O(c){return c.replace(k,b).replace(m,a)}function p(a){try{var b=a;a=u?e.getTrusted(u,b):e.valueOf(b);var c;if(r&&!y(a))c=a;else if(null==a)c="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=$a(a)}c=a}return c}catch(g){c=$b("interr",f,g.toString()),d(c)}}r=!!r;for(var v,w,L=0,C=[],x=[],P=f.length,E=[],s=[];L<P;)if(-1!=(v=f.indexOf(b,L))&&-1!=
-(w=f.indexOf(a,v+h)))L!==v&&E.push(O(f.substring(L,v))),L=f.substring(v+h,w),C.push(L),x.push(c(L,p)),L=w+l,s.push(E.length),E.push("");else{L!==P&&E.push(O(f.substring(L)));break}if(u&&1<E.length)throw $b("noconcat",f);if(!g||C.length){var X=function(a){for(var b=0,c=C.length;b<c;b++){if(r&&A(a[b]))return;E[s[b]]=a[b]}return E.join("")};return z(function(a){var b=0,c=C.length,e=Array(c);try{for(;b<c;b++)e[b]=x[b](a);return X(e)}catch(g){a=$b("interr",f,g.toString()),d(a)}},{exp:f,expressions:C,$$watchDelegate:function(a,
-b,c){var d;return a.$watchGroup(x,function(c,e){var f=X(c);G(b)&&b.call(this,f,c!==e?d:f,a);d=f},c)}})}}var h=b.length,l=a.length,k=new RegExp(b.replace(/./g,f),"g"),m=new RegExp(a.replace(/./g,f),"g");g.startSymbol=function(){return b};g.endSymbol=function(){return a};return g}]}function Je(){this.$get=["$rootScope","$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var m=a.setInterval,n=a.clearInterval,q=0,u=y(k)&&!k,r=(u?d:c).defer(),O=r.promise;l=y(l)?l:0;O.then(null,null,e);O.$$intervalId=
-m(function(){r.notify(q++);0<l&&q>=l&&(r.resolve(q),n(O.$$intervalId),delete f[O.$$intervalId]);u||b.$apply()},h);f[O.$$intervalId]=r;return O}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,
-lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",
-fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function ac(b){b=b.split("/");for(var a=b.length;a--;)b[a]=qb(b[a]);return b.join("/")}function $c(b,a){var c=Ba(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=ba(c.port)||xf[c.protocol]||null}function ad(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?
-d.pathname.substring(1):d.pathname);a.$$search=qc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function za(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ha(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function bd(b){return b.replace(/(#.+)|#$/,"$1")}function bc(b){return b.substr(0,Ha(b).lastIndexOf("/")+1)}function cc(b,a){this.$$html5=!0;a=a||"";var c=bc(b);$c(b,this);this.$$parse=function(a){var b=za(c,a);if(!F(b))throw Fb("ipthprfx",
-a,c);ad(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Nb(this.$$search),b=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ac(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=za(b,d))!==t?(g=f,g=(f=za(a,f))!==t?c+(za("/",f)||f):b+g):(f=za(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function dc(b,a){var c=bc(b);$c(b,this);this.$$parse=
-function(d){d=za(b,d)||za(c,d);var e;"#"===d.charAt(0)?(e=za(a,d),A(e)&&(e=d)):e=this.$$html5?d:"";ad(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Nb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ac(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ha(b)==Ha(a)?(this.$$parse(a),!0):
-!1}}function cd(b,a){this.$$html5=!0;dc.apply(this,arguments);var c=bc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ha(d)?f=d:(g=za(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Nb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ac(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Gb(b){return function(){return this[b]}}function dd(b,a){return function(c){if(A(c))return this[b];
-this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):I(b)?(Wa(b.enabled)&&(a.enabled=b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),
-f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,m;m=d.baseHref();var n=d.url(),q;if(a.enabled){if(!m&&a.requireBase)throw Fb("nobase");q=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(m||"/");m=e.history?cc:cd}else q=Ha(n),m=dc;k=new m(q,"#"+b);k.$$parseLinkUrl(n,n);k.$$state=d.state();var u=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&
-!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=B(b.target);"a"!==ua(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");I(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);u.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});k.absUrl()!=n&&d.url(k.absUrl(),!0);var r=!0;d.onUrlChange(function(a,
-b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(r=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a=bd(d.url()),b=bd(k.absUrl()),f=d.state(),g=k.$$replace,q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(r||q)r=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===
-b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||H;a=!1;try{a=!!e.apply}catch(l){}return a?
-function(){var a=[];s(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function ta(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw la("isecfld",a);return b}function ma(b,a){if(b){if(b.constructor===b)throw la("isecfn",a);if(b.window===
-b)throw la("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw la("isecdom",a);if(b===Object)throw la("isecobj",a);}return b}function ec(b){return b.constant}function gb(b,a,c,d,e){ma(b,e);ma(a,e);c=c.split(".");for(var f,g=0;1<c.length;g++){f=ta(c.shift(),e);var h=0===g&&a&&a[f]||b[f];h||(h={},b[f]=h);b=ma(h,e)}f=ta(c.shift(),e);ma(b[f],e);return b[f]=d}function Qa(b){return"constructor"==b}function ed(b,a,c,d,e,f,g){ta(b,f);ta(a,f);ta(c,f);ta(d,f);ta(e,f);var h=function(a){return ma(a,
-f)},l=g||Qa(b)?h:pa,k=g||Qa(a)?h:pa,m=g||Qa(c)?h:pa,n=g||Qa(d)?h:pa,q=g||Qa(e)?h:pa;return function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return t;h=k(h[a]);if(!c)return h;if(null==h)return t;h=m(h[c]);if(!d)return h;if(null==h)return t;h=n(h[d]);return e?null==h?t:h=q(h[e]):h}}function yf(b,a){return function(c,d){return b(c,d,ma,a)}}function zf(b,a,c){var d=a.expensiveChecks,e=d?Af:Bf,f=e[b];if(f)return f;var g=b.split("."),h=g.length;if(a.csp)f=
-6>h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=t,a=f;while(e<h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;s(g,function(a,b){ta(a,c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+"."+a;if(d||Qa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=da(l);k&&(a=yf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,
-c,d){return gb(a,d,b,c,b)};return e[b]=f}function fc(b){return G(b.valueOf)?b.valueOf():Cf.call(b)}function Oe(){var b=ha(),a=ha();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b=function(b,c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];e.constant||(e.inputs?f(e.inputs,b):-1===b.indexOf(e)&&b.push(e))}return b}function g(a,b){return null==a||null==b?a===b:"object"===
-typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function h(a,b,c,d){var e=d.$$inputs||(d.$$inputs=f(d.inputs,[])),h;if(1===e.length){var l=g,e=e[0];return a.$watch(function(a){var b=e(a);g(b,l)||(h=d(a),l=b&&fc(b));return h},b,c)}for(var k=[],q=0,n=e.length;q<n;q++)k[q]=g;return a.$watch(function(a){for(var b=!1,c=0,f=e.length;c<f;c++){var l=e[c](a);if(b||(b=!g(l,k[c])))k[c]=l&&fc(l)}b&&(h=d(a));return h},b,c)}function l(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,
-c,d){f=a;G(b)&&b.apply(this,arguments);y(a)&&d.$$postDigest(function(){y(f)&&e()})},c)}function k(a,b,c,d){function e(a){var b=!0;s(a,function(a){y(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;G(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function m(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){G(b)&&b.apply(this,arguments);e()},c)}function n(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==k&&
-c!==l?function(c,d){var e=a(c,d);return b(e,c,d)}:function(c,d){var e=a(c,d),f=b(e,c,d);return y(e)?f:e};a.$$watchDelegate&&a.$$watchDelegate!==h?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=h,c.inputs=[a]);return c}var q={csp:d.csp,expensiveChecks:!1},u={csp:d.csp,expensiveChecks:!0};return function(d,f,g){var v,w,L;switch(typeof d){case "string":L=d=d.trim();var C=g?a:b;v=C[L];v||(":"===d.charAt(0)&&":"===d.charAt(1)&&(w=!0,d=d.substring(2)),g=g?u:q,v=new gc(g),v=(new hb(v,
-c,g)).parse(d),v.constant?v.$$watchDelegate=m:w?(v=e(v),v.$$watchDelegate=v.literal?k:l):v.inputs&&(v.$$watchDelegate=h),C[L]=v);return n(v,f);case "function":return n(d,f);default:return n(H,f)}}}]}function Qe(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return fd(function(a){b.$evalAsync(a)},a)}]}function Re(){this.$get=["$browser","$exceptionHandler",function(b,a){return fd(function(a){b.defer(a)},a)}]}function fd(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,
-b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,b(function(){var b,d,e;e=c.pending;c.processScheduled=!1;c.pending=t;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];try{G(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);
-this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=T("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?
-this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(I(b)||G(b))d=b&&b.then;G(d)?(this.promise.$$state.status=-1,d.call(b,e[0],e[1],this.notify)):(this.promise.$$state.value=b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=
-this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(G(b)?b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{G(c)&&(d=c())}catch(e){return l(e,!1)}return d&&G(d.then)?d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},m=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},
-n=function u(a){if(!G(a))throw h("norslvr",a);if(!(this instanceof u))return new u(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};n.defer=function(){return new g};n.reject=function(a){var b=new g;b.reject(a);return b.promise};n.when=m;n.all=function(a){var b=new g,c=0,d=D(a)?[]:{};s(a,function(a,e){c++;m(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};
-return n}function $e(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Pe(){var b=10,a=T("$rootScope"),c=null,d=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector",
-"$exceptionHandler","$parse","$browser",function(e,f,g,h){function l(){this.$id=++nb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}function k(b){if(r.$$phase)throw a("inprog",r.$$phase);r.$$phase=b}function m(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function n(){}
-function q(){for(;v.length;)try{v.shift()()}catch(a){f(a)}d=null}function u(){null===d&&(d=h.defer(function(){r.$apply(q)}))}l.prototype={constructor:l,$new:function(a,b){function c(){d.$$destroyed=!0}var d;b=b||this;a?(d=new l,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$id=++nb;this.$$ChildScope=null},this.$$ChildScope.prototype=this),d=new this.$$ChildScope);
-d.$parent=b;d.$$prevSibling=b.$$childTail;b.$$childHead?(b.$$childTail.$$nextSibling=d,b.$$childTail=d):b.$$childHead=b.$$childTail=d;(a||b!=this)&&d.$on("$destroy",c);return d},$watch:function(a,b,d){var e=g(a);if(e.$$watchDelegate)return e.$$watchDelegate(this,b,d,e);var f=this.$$watchers,h={fn:b,last:n,get:e,exp:a,eq:!!d};c=null;G(b)||(h.fn=H);f||(f=this.$$watchers=[]);f.unshift(h);return function(){Xa(f,h);c=null}},$watchGroup:function(a,b){function c(){h=!1;l?(l=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),
-e=Array(a.length),f=[],g=this,h=!1,l=!0;if(!a.length){var k=!0;g.$evalAsync(function(){k&&b(e,e,g)});return function(){k=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});s(a,function(a,b){var l=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(l)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!A(e)){if(I(e))if(Ta(e))for(f!==q&&(f=q,u=f.length=0,k++),a=e.length,u!==
-a&&(k++,f.length=u=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(k++,f[b]=g);else{f!==m&&(f=m={},u=0,k++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(k++,f[b]=g)):(u++,f[b]=g,k++));if(u>a)for(b in k++,f)e.hasOwnProperty(b)||(u--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,h,l=1<b.length,k=0,n=g(a,c),q=[],m={},p=!0,u=0;return this.$watch(n,function(){p?(p=!1,b(e,e,d)):b(e,h,d);if(l)if(I(e))if(Ta(e)){h=Array(e.length);
-for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)rc.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var e,g,l,m,u,v,s=b,t,W=[],y,J;k("$digest");h.$$checkUrlChange();this===r&&null!==d&&(h.defer.cancel(d),q());c=null;do{v=!1;for(t=this;O.length;){try{J=O.shift(),J.scope.$eval(J.expression,J.locals)}catch(B){f(B)}c=null}a:do{if(m=t.$$watchers)for(u=m.length;u--;)try{if(e=m[u])if((g=e.get(t))!==(l=e.last)&&!(e.eq?fa(g,l):"number"===typeof g&&"number"===typeof l&&isNaN(g)&&isNaN(l)))v=
-!0,c=e,e.last=e.eq?Ea(g,null):g,e.fn(g,l===n?g:l,t),5>s&&(y=4-s,W[y]||(W[y]=[]),W[y].push({msg:G(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:g,oldVal:l}));else if(e===c){v=!1;break a}}catch(A){f(A)}if(!(m=t.$$childHead||t!==this&&t.$$nextSibling))for(;t!==this&&!(m=t.$$nextSibling);)t=t.$parent}while(t=m);if((v||O.length)&&!s--)throw r.$$phase=null,a("infdig",b,W);}while(v||O.length);for(r.$$phase=null;p.length;)try{p.shift()()}catch(ca){f(ca)}},$destroy:function(){if(!this.$$destroyed){var a=
-this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==r){for(var b in this.$$listenerCount)m(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=H;this.$on=this.$watch=this.$watchGroup=
-function(){return H};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){r.$$phase||O.length||h.defer(function(){O.length&&r.$digest()});O.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){p.push(a)},$apply:function(a){try{return k("$apply"),this.$eval(a)}catch(b){f(b)}finally{r.$$phase=null;try{r.$digest()}catch(c){throw f(c),c;
-}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&v.push(b);u()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,m(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},
-l=Ya([h],arguments,1),k,m;do{d=e.$$listeners[a]||c;h.currentScope=e;k=0;for(m=d.length;k<m;k++)if(d[k])try{d[k].apply(null,l)}catch(n){f(n)}else d.splice(k,1),k--,m--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=Ya([e],arguments,1),h,l;c=d;){e.currentScope=c;d=c.$$listeners[a]||
-[];h=0;for(l=d.length;h<l;h++)if(d[h])try{d[h].apply(null,g)}catch(k){f(k)}else d.splice(h,1),h--,l--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var r=new l,O=r.$$asyncQueue=[],p=r.$$postDigestQueue=[],v=r.$$applyAsyncQueue=[];return r}]}function Sd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(a){return y(a)?
-(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Ba(c).href;return""===f||f.match(e)?c:"unsafe:"+f}}}function Df(b){if("self"===b)return b;if(F(b)){if(-1<b.indexOf("***"))throw Ca("iwcard",b);b=gd(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(ob(b))return new RegExp("^"+b.source+"$");throw Ca("imatcher");}function hd(b){var a=[];y(b)&&s(b,function(b){a.push(Df(b))});
-return a}function Te(){this.SCE_CONTEXTS=na;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=hd(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=hd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?Zc(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};
-return b}var f=function(a){throw Ca("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[na.HTML]=e(g);h[na.CSS]=e(g);h[na.URL]=e(g);h[na.JS]=e(g);h[na.RESOURCE_URL]=e(h[na.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ca("icontext",a,b);if(null===b||b===t||""===b)return b;if("string"!==typeof b)throw Ca("itype",a);return new c(b)},getTrusted:function(c,e){if(null===e||e===t||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof
-g)return e.$$unwrapTrustedValue();if(c===na.RESOURCE_URL){var g=Ba(e.toString()),n,q,u=!1;n=0;for(q=b.length;n<q;n++)if(d(b[n],g)){u=!0;break}if(u)for(n=0,q=a.length;n<q;n++)if(d(a[n],g)){u=!1;break}if(u)return e;throw Ca("insecurl",e.toString());}if(c===na.HTML)return f(e);throw Ca("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function Se(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&
-8>Ra)throw Ca("iequirks");var d=ra(na);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=pa);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;s(na,function(a,b){var c=Q(b);d[cb("parse_as_"+c)]=function(b){return e(a,b)};d[cb("get_trusted_"+c)]=function(b){return f(a,b)};d[cb("trust_as_"+
-c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=ba((/android (\d+)/.exec(Q((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,m=!1;if(l){for(var n in l)if(k=h.exec(n)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);m=!!("animation"in l||g+"Animation"in
-l);!d||k&&m||(k=F(f.body.style.webkitTransition),m=F(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Ra)return!1;if(A(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:ab(),vendorPrefix:g,transitions:k,animations:m,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;var g=a.defaults&&a.defaults.transformResponse;D(g)?g=g.filter(function(a){return a!==
-Yb}):g===Yb&&(g=null);return a.get(e,{cache:b,transformResponse:g}).finally(function(){d.totalPendingRequests--}).then(function(a){return a.data},function(a){if(!f)throw ja("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];s(a,function(a){var d=ga.element(a).data("$binding");d&&s(d,function(d){c?(new RegExp("(^|\\s)"+
-gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function Ye(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",
-function(b,a,c,d,e){function f(f,l,k){var m=y(k)&&!k,n=(m?d:c).defer(),q=n.promise;l=a.defer(function(){try{n.resolve(f())}catch(a){n.reject(a),e(a)}finally{delete g[q.$$timeoutId]}m||b.$apply()},l);q.$$timeoutId=l;g[l]=n;return q}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Ba(b){Ra&&(Z.setAttribute("href",b),b=Z.href);Z.setAttribute("href",b);return{href:Z.href,protocol:Z.protocol?
-Z.protocol.replace(/:$/,""):"",host:Z.host,search:Z.search?Z.search.replace(/^\?/,""):"",hash:Z.hash?Z.hash.replace(/^#/,""):"",hostname:Z.hostname,port:Z.port,pathname:"/"===Z.pathname.charAt(0)?Z.pathname:"/"+Z.pathname}}function Zc(b){b=F(b)?Ba(b):b;return b.protocol===id.protocol&&b.host===id.host}function Ze(){this.$get=da(M)}function Dc(b){function a(c,d){if(I(c)){var e={};s(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+
-"Filter")}}];a("currency",jd);a("date",kd);a("filter",Ef);a("json",Ff);a("limitTo",Gf);a("lowercase",Hf);a("number",ld);a("orderBy",md);a("uppercase",If)}function Ef(){return function(b,a,c){if(!D(b))return b;var d;switch(typeof a){case "function":break;case "boolean":case "number":case "string":d=!0;case "object":a=Jf(a,c,d);break;default:return b}return b.filter(a)}}function Jf(b,a,c){var d=I(b)&&"$"in b;!0===a?a=fa:G(a)||(a=function(a,b){if(I(a)||I(b))return!1;a=Q(""+a);b=Q(""+b);return-1!==a.indexOf(b)});
-return function(e){return d&&!I(e)?Ia(e,b.$,a,!1):Ia(e,b,a,c)}}function Ia(b,a,c,d,e){var f=typeof b,g=typeof a;if("string"===g&&"!"===a.charAt(0))return!Ia(b,a.substring(1),c,d);if(D(b))return b.some(function(b){return Ia(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&Ia(b[h],a,c,!0))return!0;return e?!1:Ia(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!G(e)&&(f="$"===h,!Ia(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,
-a)}}function jd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){A(d)&&(d=a.CURRENCY_SYM);A(e)&&(e=a.PATTERNS[1].maxFrac);return null==b?b:nd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function ld(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:nd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function nd(b,a,c,d,e){if(!isFinite(b)||I(b))return"";var f=0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&
-"-"==m[2]&&m[3]>e+1?b=0:(h=g,k=!0)}if(k)0<e&&1>b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]||"").length;A(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",n=0,q=a.lgSize,u=a.gSize;if(k.length>=q+u)for(n=k.length-q,m=0;m<n;m++)0===(n-m)%u&&0!==m&&(h+=c),h+=k.charAt(m);for(m=n;m<k.length;m++)0===(k.length-m)%q&&0!==m&&(h+=c),h+=k.charAt(m);for(;g.length<e;)g+="0";e&&"0"!==e&&(h+=d+g.substr(0,
-e))}0===b&&(f=!1);l.push(f?a.negPre:a.posPre,h,f?a.negSuf:a.posSuf);return l.join("")}function Hb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function $(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Hb(e,a,d)}}function Ib(b,a){return function(c,d){var e=c["get"+b](),f=ub(a?"SHORT"+b:b);return d[f][e]}}function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=
-pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Hb(a,b)}}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=ba(b[9]+b[10]),g=ba(b[9]+b[11]));h.call(a,ba(b[1]),ba(b[2])-1,ba(b[3]));f=ba(b[4]||0)-f;g=ba(b[5]||0)-g;h=ba(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
-return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;F(c)&&(c=Kf.test(c)?ba(c):a(c));V(c)&&(c=new Date(c));if(!qa(c))return c;for(;e;)(k=Lf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));s(h,function(a){l=Mf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ff(){return function(b,a){A(a)&&(a=2);return $a(b,a)}}function Gf(){return function(b,
-a){V(b)&&(b=b.toString());return D(b)||F(b)?(a=Infinity===Math.abs(Number(a))?Number(a):ba(a))?0<a?b.slice(0,a):b.slice(a):F(b)?"":[]:b}}function md(b){return function(a,c,d){function e(a,b){return b?function(b,c){return a(c,b)}:a}function f(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function g(a){return null===a?"null":"function"===typeof a.valueOf&&(a=a.valueOf(),f(a))||"function"===typeof a.toString&&(a=a.toString(),f(a))?a:""}function h(a,b){var c=
-typeof a,d=typeof b;c===d&&"object"===c&&(a=g(a),b=g(b));return c===d?("string"===c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Ta(a))return a;c=D(c)?c:[c];0===c.length&&(c=["+"]);c=c.map(function(a){var c=!1,d=a||pa;if(F(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);if(""===a)return e(h,c);d=b(a);if(d.constant){var f=d();return e(function(a,b){return h(a[f],b[f])},c)}}return e(function(a,b){return h(d(a),d(b))},c)});return Za.call(a).sort(e(function(a,
-b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function Ja(b){G(b)&&(b={link:b});b.restrict=b.restrict||"AC";return da(b)}function rd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Jb;f.$error={};f.$$success={};f.$pending=t;f.$name=e(a.name||a.ngForm||"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){s(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){s(g,
-function(a){a.$commitViewValue()})};f.$addControl=function(a){Ma(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];s(f.$pending,function(b,c){f.$setValidity(c,null,a)});s(f.$error,function(b,c){f.$setValidity(c,null,a)});s(f.$$success,function(b,c){f.$setValidity(c,null,a)});Xa(g,a)};sd({ctrl:this,$element:b,set:function(a,b,c){var d=a[b];
-d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Xa(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Sa);d.addClass(b,Kb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Sa,Kb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;s(g,function(a){a.$setPristine()})};f.$setUntouched=function(){s(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,"ng-submitted");
-f.$submitted=!0;h.$setSubmitted()}}function hc(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function ib(b,a,c,d,e,f){var g=Q(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=U(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};if(e.hasEvent("input"))a.on("input",
-l);else{var k,m=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Lb(b,a){return function(c,d){var e,f;if(qa(c))return c;if(F(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Nf.test(c))return new Date(c);b.lastIndex=
-0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},s(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function jb(b,a,c,d){return function(e,f,g,h,l,k,m){function n(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function q(a){return y(a)?qa(a)?a:c(a):t}td(e,f,g,h);
-ib(e,f,g,h,l,k);var u=h&&h.$options&&h.$options.timezone,r;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,r),"UTC"===u&&b.setMinutes(b.getMinutes()-b.getTimezoneOffset()),b):t});h.$formatters.push(function(a){if(a&&!qa(a))throw Mb("datefmt",a);if(n(a)){if((r=a)&&"UTC"===u){var b=6E4*r.getTimezoneOffset();r=new Date(r.getTime()+b)}return m("date")(a,d,u)}r=null;return""});if(y(g.min)||g.ngMin){var s;h.$validators.min=function(a){return!n(a)||A(s)||c(a)>=s};
-g.$observe("min",function(a){s=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!n(a)||A(p)||c(a)<=p};g.$observe("max",function(a){p=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=I(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw T("ngModel")("constexpr",c,d);return b(a)}return e}function ic(b,a){b="ngClass"+b;return["$animate",
-function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!D(a)){if(F(a))return a.split(" ");if(I(a)){var b=[];s(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];s(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===
-a||f.$index%2===a){var k=e(b||[]);if(!m){var u=l(k,1);h.$addClass(u)}else if(!fa(b,m)){var r=e(m),u=d(k,r),k=d(r,k),u=l(u,1),k=l(k,-1);u&&u.length&&c.addClass(g,u);k&&k.length&&c.removeClass(g,k)}}m=ra(b)}var m;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function sd(b){function a(a,b){b&&!f[a]?(k.addClass(e,a),
-f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+tc(b,"-"):"";a(kb+b,!0===c);a(vd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[vd]=!(f[kb]=e.hasClass(kb));d.$setValidity=function(b,e,f){e===t?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&h(d.$pending,b,f),wd(d.$pending)&&(d.$pending=t));Wa(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(xd,
-!0),d.$valid=d.$invalid=t,c("",null)):(a(xd,!1),d.$valid=wd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?t:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function wd(b){if(b)for(var a in b)return!1;return!0}var Of=/^\/(.+)\/([a-z]*)$/,Q=function(b){return F(b)?b.toLowerCase():b},rc=Object.prototype.hasOwnProperty,ub=function(b){return F(b)?b.toUpperCase():b},Ra,B,sa,Za=[].slice,rf=[].splice,Pf=[].push,Da=Object.prototype.toString,Ka=T("ng"),ga=M.angular||
-(M.angular={}),bb,nb=0;Ra=Y.documentMode;H.$inject=[];pa.$inject=[];var D=Array.isArray,U=function(b){return F(b)?b.trim():b},gd=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},ab=function(){if(y(ab.isActive_))return ab.isActive_;var b=!(!Y.querySelector("[ng-csp]")&&!Y.querySelector("[data-ng-csp]"));if(!b)try{new Function("")}catch(a){b=!0}return ab.isActive_=b},rb=["ng-","data-ng-","ng:","x-ng-"],Md=/[A-Z]/g,uc=!1,Pb,oa=1,pb=3,Qd={full:"1.3.11",major:1,
-minor:3,dot:11,codeName:"spiffy-manatee"};R.expando="ng339";var zb=R.cache={},hf=1;R._data=function(b){return this.cache[b[this.expando]]||{}};var cf=/([\:\-\_]+(.))/g,df=/^moz([A-Z])/,Qf={mouseleave:"mouseout",mouseenter:"mouseover"},Sb=T("jqLite"),gf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Rb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ia={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>",
-"</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var La=R.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===Y.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),R(M).on("load",a))},toString:function(){var b=[];s(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=
-b?B(this[b]):B(this[this.length+b])},length:0,push:Pf,sort:[].sort,splice:[].splice},Eb={};s("multiple selected checked disabled readOnly required open".split(" "),function(b){Eb[Q(b)]=b});var Mc={};s("input select option textarea button form details".split(" "),function(b){Mc[b]=!0});var Nc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};s({data:Ub,removeData:xb},function(b,a){R[a]=b});s({data:Ub,inheritedData:Db,scope:function(b){return B.data(b,"$scope")||
-Db(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return B.data(b,"$isolateScope")||B.data(b,"$isolateScopeNoTemplate")},controller:Ic,injector:function(b){return Db(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ab,css:function(b,a,c){a=cb(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=Q(a);if(Eb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||H).specified?
-d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(A(b)){var d=a.nodeType;return d===oa||d===pb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(A(a)){if(b.multiple&&"select"===ua(b)){var c=[];s(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(A(a))return b.innerHTML;
-wb(b,!0);b.innerHTML=a},empty:Jc},function(b,a){R.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Jc&&(2==b.length&&b!==Ab&&b!==Ic?a:d)===t){if(I(a)){for(e=0;e<g;e++)if(b===Ub)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===t?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});s({removeData:xb,on:function a(c,d,e,f){if(y(f))throw Sb("onargs");if(Ec(c)){var g=yb(c,!0);f=g.events;var h=g.handle;h||(h=
-g.handle=lf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===d?a(c,Qf[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Hc,one:function(a,c,d){a=B(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;wb(a);s(new R(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,
-a);d=c})},children:function(a){var c=[];s(a.childNodes,function(a){a.nodeType===oa&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===oa||11===d){c=new R(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===oa){var d=a.firstChild;s(new R(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=B(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},
-remove:Kc,detach:function(a){Kc(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new R(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,d.nextSibling);d=h}},addClass:Cb,removeClass:Bb,toggleClass:function(a,c,d){c&&s(c.split(" "),function(c){var f=d;A(f)&&(f=!Ab(a,c));(f?Cb:Bb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Tb,
-triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=yb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:H,type:g,target:a},c.type&&(e=z(e,c)),c=ra(h),f=d?[e].concat(d):[e],s(c,function(c){e.isImmediatePropagationStopped()||c.apply(a,
-f)})}},function(a,c){R.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)A(g)?(g=a(this[h],c,e,f),y(g)&&(g=B(g))):Gc(g,a(this[h],c,e,f));return y(g)?g:this};R.prototype.bind=R.prototype.on;R.prototype.unbind=R.prototype.off});db.prototype={put:function(a,c){this[Na(a,this.nextUid)]=c},get:function(a){return this[Na(a,this.nextUid)]},remove:function(a){var c=this[a=Na(a,this.nextUid)];delete this[a];return c}};var Pc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,nf=/,/,of=/^\s*(_?)(\S+?)\1\s*$/,
-Oc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=T("$injector");Ob.$$annotate=Vb;var Rf=T("$animate"),Ce=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Rf("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function(a,d,e){function f(d){var f,
-g=a.defer();g.promise.$$cancelFn=function(){f&&f()};e.$$postDigest(function(){f=d(function(){g.resolve()})});return g.promise}function g(a,c){var d=[],e=[],f=ha();s((a.attr("class")||"").split(/\s+/),function(a){f[a]=!0});s(c,function(a,c){var g=f[c];!1===a&&g?e.push(c):!0!==a||g||d.push(c)});return 0<d.length+e.length&&[d.length?d:null,e.length?e:null]}function h(a,c,d){for(var e=0,f=c.length;e<f;++e)a[c[e]]=d}function l(){m||(m=a.defer(),d(function(){m.resolve();m=null}));return m.promise}function k(a,
-c){if(ga.isObject(c)){var d=z(c.from||{},c.to||{});a.css(d)}}var m;return{animate:function(a,c,d){k(a,{from:c,to:d});return l()},enter:function(a,c,d,e){k(a,e);d?d.after(a):c.prepend(a);return l()},leave:function(a,c){a.remove();return l()},move:function(a,c,d,e){return this.enter(a,c,d,e)},addClass:function(a,c,d){return this.setClass(a,c,[],d)},$$addClassImmediately:function(a,c,d){a=B(a);c=F(c)?c:D(c)?c.join(" "):"";s(a,function(a){Cb(a,c)});k(a,d);return l()},removeClass:function(a,c,d){return this.setClass(a,
-[],c,d)},$$removeClassImmediately:function(a,c,d){a=B(a);c=F(c)?c:D(c)?c.join(" "):"";s(a,function(a){Bb(a,c)});k(a,d);return l()},setClass:function(a,c,d,e){var k=this,l=!1;a=B(a);var m=a.data("$$animateClasses");m?e&&m.options&&(m.options=ga.extend(m.options||{},e)):(m={classes:{},options:e},l=!0);e=m.classes;c=D(c)?c:c.split(" ");d=D(d)?d:d.split(" ");h(e,c,!0);h(e,d,!1);l&&(m.promise=f(function(c){var d=a.data("$$animateClasses");a.removeData("$$animateClasses");if(d){var e=g(a,d.classes);e&&
-k.$$setClassImmediately(a,e[0],e[1],d.options)}c()}),a.data("$$animateClasses",m));return m.promise},$$setClassImmediately:function(a,c,d,e){c&&this.$$addClassImmediately(a,c);d&&this.$$removeClassImmediately(a,d);k(a,e);return l()},enabled:H,cancel:H}}]}],ja=T("$compile");wc.$inject=["$provide","$$sanitizeUriProvider"];var Rc=/^((?:x|data)[\:\-_])/i,Vc="application/json",Zb={"Content-Type":Vc+";charset=utf-8"},tf=/^\[|^\{(?!\{)/,uf={"[":/]$/,"{":/}$/},sf=/^\)\]\}',?\n/,$b=T("$interpolate"),Sf=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
-xf={http:80,https:443,ftp:21},Fb=T("$location"),Tf={$$html5:!1,$$replace:!1,absUrl:Gb("$$absUrl"),url:function(a){if(A(a))return this.$$url;var c=Sf.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Gb("$$protocol"),host:Gb("$$host"),port:Gb("$$port"),path:dd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;
-case 1:if(F(a)||V(a))a=a.toString(),this.$$search=qc(a);else if(I(a))a=Ea(a,{}),s(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Fb("isrcharg");break;default:A(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:dd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};s([cd,dc,cc],function(a){a.prototype=Object.create(Tf);a.prototype.state=function(c){if(!arguments.length)return this.$$state;
-if(a!==cc||!this.$$html5)throw Fb("nostate");this.$$state=A(c)?null:c;return this}});var la=T("$parse"),Uf=Function.prototype.call,Vf=Function.prototype.apply,Wf=Function.prototype.bind,lb=ha();s({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(a,c){a.constant=a.literal=a.sharedGetter=!0;lb[c]=a});lb["this"]=function(a){return a};lb["this"].sharedGetter=!0;var mb=z(ha(),{"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?
-d+e:d:y(e)?e:t},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,
-c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Xf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||
-"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var c=a+this.peek(),d=c+this.peek(2),e=mb[c],f=mb[d];mb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==
-c.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,
-d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=Q(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,
-text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=this.index;this.index<this.text.length;){var c=this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||
-this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d+=Xf[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var hb=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};hb.ZERO=z(function(){return 0},{sharedGetter:!0,constant:!0});hb.prototype={constructor:hb,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);
-a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.peek().identifier&&this.peek().text in lb?a=lb[this.consume().text]:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",
-this.peek());for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw la("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw la("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,
-c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw la("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=mb[a];return z(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,
-c,d,e){var f=mb[c];return z(function(c,e){return f(c,e,a,d)},{constant:a.constant&&d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return zf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return z(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",
-";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,f=0,g=a.length;f<g;f++)e=a[f](c,d);return e}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},filter:function(a){var c=this.$filter(this.consume().text),d,e;if(this.peek(":"))for(d=[],e=[];this.expect(":");)d.push(this.expression());var f=[a].concat(d||[]);return z(function(f,h){var l=a(f,h);if(e){e[0]=l;for(l=d.length;l--;)e[l+1]=d[l](f,h);return c.apply(t,
-e)}return c(l)},{constant:!c.$stateful&&f.every(ec),inputs:!c.$stateful&&f})},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),z(function(d,f){return a.assign(d,c(d,f),f)},{inputs:[a,c]})):a},ternary:function(){var a=this.logicalOR(),c;if(this.expect("?")&&(c=this.assignment(),this.consume(":"))){var d=
-this.assignment();return z(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})}return a},logicalOR:function(){for(var a=this.logicalAND(),c;c=this.expect("||");)a=this.binaryFn(a,c.text,this.logicalAND(),!0);return a},logicalAND:function(){for(var a=this.equality(),c;c=this.expect("&&");)a=this.binaryFn(a,c.text,this.equality(),!0);return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a=this.binaryFn(a,c.text,this.relational());
-return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a=this.binaryFn(a,c.text,this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(hb.ZERO,
-a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=this.identifier();return z(function(d,e,f){d=f||a(d,e);return null==d?t:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return z(function(e,f){var g=a(e,f),h=d(e,f);ta(h,c);return g?ma(g[h],c):t},{assign:function(e,f,g){var h=ta(d(e,g),c),l=ma(a(e,g),c);l||a.assign(e,
-l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?t:g,k=a(g,h,l)||H;if(f)for(var m=d.length;m--;)f[m]=ma(d[m](g,h),e);ma(l,e);if(k){if(k.constructor===k)throw la("isecfn",e);if(k===Uf||k===Vf||k===Wf)throw la("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);return ma(l,e)}},arrayDeclaration:function(){var a=
-[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return z(function(c,d){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f](c,d));return e},{literal:!0,constant:a.every(ec),inputs:a})},object:function(){var a=[],c=[];if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.consume();d.constant?a.push(d.value):d.identifier?a.push(d.text):this.throwError("invalid key",d);this.consume(":");c.push(this.expression())}while(this.expect(","))
-}this.consume("}");return z(function(d,f){for(var g={},h=0,l=c.length;h<l;h++)g[a[h]]=c[h](d,f);return g},{literal:!0,constant:c.every(ec),inputs:c})}};var Bf=ha(),Af=ha(),Cf=Object.prototype.valueOf,Ca=T("$sce"),na={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ja=T("$compile"),Z=Y.createElement("a"),id=Ba(M.location.href);Dc.$inject=["$provide"];jd.$inject=["$locale"];ld.$inject=["$locale"];var od=".",Mf={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:Ib("Month"),
-MMM:Ib("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds",1),sss:$("Milliseconds",3),EEEE:Ib("Day"),EEE:Ib("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Hb(Math[0<a?"floor":"ceil"](a/60),2)+Hb(Math.abs(a%60),2))},ww:qd(2),w:qd(1)},Lf=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
-Kf=/^\-?\d+$/;kd.$inject=["$locale"];var Hf=da(Q),If=da(ub);md.$inject=["$parse"];var Td=da({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Da.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),vb={};s(Eb,function(a,c){if("multiple"!=a){var d=ya("ng-"+c);vb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d],
-function(a){g.$set(c,!!a)})}}}}});s(Nc,function(a,c){vb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Of))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});s(["src","srcset","href"],function(a){var c=ya("ng-"+a);vb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Da.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",
-g=null);f.$observe(c,function(c){c?(f.$set(h,c),Ra&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Jb={$addControl:H,$$renameControl:function(a,c){a.$name=c},$removeControl:H,$setValidity:H,$setDirty:H,$setPristine:H,$setSubmitted:H};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(a){a.addClass(Sa).addClass(kb);return{pre:function(a,d,g,h){if(!("action"in
-g)){var l=function(c){a.$apply(function(){h.$commitViewValue();h.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",l,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",l,!1)},0,!1)})}var k=h.$$parentForm,m=h.$name;m&&(gb(a,null,m,h,m),g.$observe(g.name?"name":"ngForm",function(c){m!==c&&(gb(a,null,m,t,m),m=c,gb(a,null,m,h,m),k.$$renameControl(h,m))}));d.on("$destroy",function(){k.$removeControl(h);m&&gb(a,null,m,t,m);z(h,Jb)})}}}}}]},Ud=yd(),ge=yd(!0),
-Nf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Yf=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Zf=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,$f=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,jc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/,Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd=
-{text:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);hc(e)},date:jb("date",zd,Lb(zd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":jb("datetimelocal",Ad,Lb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:jb("time",Cd,Lb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:jb("week",jc,function(a,c){if(qa(a))return a;if(F(a)){jc.lastIndex=0;var d=jc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());
-return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:jb("month",Bd,Lb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);ib(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:$f.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Mb("numfmt",a);a=a.toString()}return a});if(d.min||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||A(h)||a>=h};d.$observe("min",function(a){y(a)&&
-!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:t;e.$validate()})}if(d.max||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||A(l)||a<=l};d.$observe("max",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);hc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||Yf.test(d)}},email:function(a,c,d,e,f,g){ib(a,c,d,e,f,g);hc(e);e.$$parserName="email";e.$validators.email=function(a,
-c){var d=a||c;return e.$isEmpty(d)||Zf.test(d)}},radio:function(a,c,d,e){A(d.name)&&c.attr("name",++nb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),m=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};
-e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return fa(a,k)});e.$parsers.push(function(a){return a?k:m})},hidden:H,button:H,submit:H,reset:H,file:H},xc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[Q(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],ag=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a,c){return ag.test(c.ngValue)?function(a,c,f){f.$set("value",
-a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];
-g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],$d=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=da({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),
-be=ic("",!0),de=ic("Odd",0),ce=ic("Even",1),ee=Ja({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Cc={},bg={blur:!0,focus:!0};s("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Cc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=
-d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};bg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=Y.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=
-tb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ga.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,s,r){var t=0,p,v,w,L=function(){v&&(v.remove(),v=null);p&&(p.$destroy(),p=null);w&&(d.leave(w).then(function(){v=null}),v=w,w=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=
-function(){!y(k)||k&&!f.$eval(k)||c()},q=++t;e?(a(e,!0).then(function(a){if(q===t){var c=f.$new();s.template=a;a=r(c,function(a){L();d.enter(a,null,g).then(h)});p=c;w=a;p.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){q===t&&(L(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(L(),s.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Fc(f.template,
-Y).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ke=Ja({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?U(f):f;e.$parsers.push(function(a){if(!A(a)){var c=[];a&&s(a.split(h),function(a){a&&c.push(g?U(a):a)});return c}});e.$formatters.push(function(a){return D(a)?
-a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},kb="ng-valid",vd="ng-invalid",Sa="ng-pristine",Kb="ng-dirty",xd="ng-pending",Mb=new T("ngModel"),cg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;
-this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=m(d.name||"",!1)(a);var n=f(d.ngModel),q=n.assign,u=n,r=q,O=null,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");u=function(a){var d=n(a);G(d)&&(d=c(a));return d};r=function(a,c){G(n(a))?g(a,{$$$p:p.$modelValue}):q(a,p.$modelValue)}}else if(!n.assign)throw Mb("nonassign",d.ngModel,va(e));
-};this.$render=H;this.$isEmpty=function(a){return A(a)||""===a||null===a||a!==a};var v=e.inheritedData("$formController")||Jb,w=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:v,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Kb);g.addClass(e,Sa)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Kb);v.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,
-"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(O);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!V(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(p.$error[p.$$parserName||"parse"]?!1:t,a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=
-f?a:t,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d,e){function f(){var a=!0;s(p.$validators,function(e,f){var g=e(c,d);a=a&&g;h(f,g)});return a?!0:(s(p.$asyncValidators,function(a,c){h(c,null)}),!1)}function g(){var a=[],e=!0;s(p.$asyncValidators,function(f,g){var l=f(c,d);if(!l||!G(l.then))throw Mb("$asyncValidators",l);h(g,t);a.push(l.then(function(){h(g,!0)},function(a){e=!1;h(g,!1)}))});a.length?k.all(a).then(function(){l(e)},H):l(!0)}function h(a,c){m===
-w&&p.$setValidity(a,c)}function l(a){m===w&&e(a)}w++;var m=w;(function(a){var c=p.$$parserName||"parse";if(a===t)h(c,null);else if(h(c,a),!a)return s(p.$validators,function(a,c){h(c,null)}),s(p.$asyncValidators,function(a,c){h(c,null)}),!1;return!0})(a)?f()?g():l(!1):l(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(O);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=
-function(){var c=p.$$lastCommittedViewValue,d=A(c)?t:!0;if(d)for(var e=0;e<p.$parsers.length;e++)if(c=p.$parsers[e](c),A(c)){d=!1;break}V(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=u(a));var f=p.$modelValue,g=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=c;g&&(p.$modelValue=c,p.$modelValue!==f&&p.$$writeModelToScope());p.$$runValidators(d,c,p.$$lastCommittedViewValue,function(a){g||(p.$modelValue=a?c:t,p.$modelValue!==f&&p.$$writeModelToScope())})};this.$$writeModelToScope=function(){r(a,
-p.$modelValue);s(p.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};this.$setViewValue=function(a,c){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=p.$options;e&&y(e.debounce)&&(e=e.debounce,V(e)?d=e:V(e[c])?d=e[c]:V(e["default"])&&(d=e["default"]));h.cancel(O);d?O=h(function(){p.$commitViewValue()},d):l.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var c=
-u(a);if(c!==p.$modelValue){p.$modelValue=p.$$rawModelValue=c;for(var d=p.$formatters,e=d.length,f=c;e--;)f=d[e](f);p.$viewValue!==f&&(p.$viewValue=p.$$lastCommittedViewValue=f,p.$render(),p.$$runValidators(t,c,f,H))}return c})}],ve=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:cg,priority:1,compile:function(c){c.addClass(Sa).addClass("ng-untouched").addClass(kb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Jb;h.$$setOptions(g[2]&&g[2].$options);
-l.$addControl(h);f.$observe("name",function(a){h.$name!==a&&l.$$renameControl(h,a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],dg=/(\s+|^)default(\s+|$)/,ze=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=
-this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==t?(this.$options.updateOnDefault=!1,this.$options.updateOn=U(this.$options.updateOn.replace(dg,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},le=Ja({terminal:!0,priority:1E3}),me=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function l(a){g.text(a||"")}var k=h.count,m=h.$attr.when&&g.attr(h.$attr.when),n=h.offset||
-0,q=f.$eval(m)||{},u={},m=c.startSymbol(),r=c.endSymbol(),t=m+k+"-"+n+r,p=ga.noop,v;s(h,function(a,c){var d=e.exec(c);d&&(d=(d[1]?"-":"")+Q(d[2]),q[d]=g.attr(h.$attr[c]))});s(q,function(a,e){u[e]=c(a.replace(d,t))});f.$watch(k,function(c){c=parseFloat(c);var d=isNaN(c);d||c in q||(c=a.pluralCat(c-n));c===v||d&&isNaN(v)||(p(),p=f.$watch(u[c],l),v=c)})}}}],ne=["$parse","$animate",function(a,c){var d=T("ngRepeat"),e=function(a,c,d,e,k,m,n){a[d]=e;k&&(a[k]=m);a.$index=c;a.$first=0===c;a.$last=c===n-1;
-a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=Y.createComment(" end ngRepeat: "+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var m=k[1],n=k[2],q=k[3],u=k[4],k=m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",m);var r=k[3]||k[1],
-y=k[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(q)))throw d("badident",q);var p,v,w,A,z={$id:Na};u?p=a(u):(w=function(a,c){return Na(c)},A=function(a){return a});return function(a,f,g,k,m){p&&(v=function(c,d,e){y&&(z[y]=c);z[r]=d;z.$index=e;return p(a,z)});var u=ha();a.$watchCollection(n,function(g){var k,p,n=f[0],E,z=ha(),H,S,N,D,G,C,I;q&&(a[q]=g);if(Ta(g))G=g,p=v||w;else{p=v||A;G=[];for(I in g)g.hasOwnProperty(I)&&
-"$"!=I.charAt(0)&&G.push(I);G.sort()}H=G.length;I=Array(H);for(k=0;k<H;k++)if(S=g===G?k:G[k],N=g[S],D=p(S,N,k),u[D])C=u[D],delete u[D],z[D]=C,I[k]=C;else{if(z[D])throw s(I,function(a){a&&a.scope&&(u[a.id]=a)}),d("dupes",h,D,N);I[k]={id:D,scope:t,clone:t};z[D]=!0}for(E in u){C=u[E];D=tb(C.clone);c.leave(D);if(D[0].parentNode)for(k=0,p=D.length;k<p;k++)D[k].$$NG_REMOVED=!0;C.scope.$destroy()}for(k=0;k<H;k++)if(S=g===G?k:G[k],N=g[S],C=I[k],C.scope){E=n;do E=E.nextSibling;while(E&&E.$$NG_REMOVED);C.clone[0]!=
-E&&c.move(tb(C.clone),null,B(n));n=C.clone[C.clone.length-1];e(C.scope,k,r,N,y,S,H)}else m(function(a,d){C.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c.enter(a,null,B(n));n=f;C.clone=a;z[C.id]=C;e(C.scope,k,r,N,y,S,H)});u=z})}}}}],oe=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],he=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,
-d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],pe=Ja(function(a,c,d){a.$watchCollection(d.ngStyle,function(a,d){d&&a!==d&&s(d,function(a,d){c.css(d,"")});a&&c.css(a)})}),qe=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],m=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;
-for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var r=tb(h[d].clone);k[d].$destroy();(l[d]=a.leave(r)).then(m(l,d))}h.length=0;k.length=0;(g=f.cases["!"+c]||f.cases["?"])&&s(g,function(c){c.transclude(function(d,e){k.push(e);var f=c.element;d[d.length++]=Y.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],re=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=
-e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),se=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,element:c})}}),ue=Ja({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw T("ngTransclude")("orphan",va(c));f(function(a){c.empty();c.append(a)})}}),Vd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==
-d.type&&a.put(d.id,c[0].text)}}}],eg=T("ngOptions"),te=da({restrict:"A",terminal:!0}),Wd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,e={$setViewValue:H};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},m=e,n;l.databound=d.ngModel;
-l.init=function(a,c,d){m=a;n=d};l.addOption=function(c,d){Ma(c,'"option value"');k[c]=!0;m.$viewValue==c&&(a.val(c),n.parent()&&n.remove());d&&d[0].hasAttribute("selected")&&(d[0].selected=!0)};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],m.$viewValue===a&&this.renderUnknownOption(a))};l.renderUnknownOption=function(c){c="? "+Na(c)+" ?";n.val(c);a.prepend(n);a.val(c);n.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=
-H})}],link:function(e,g,h,l){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(C.parent()&&C.remove(),c.val(a),""===a&&p.prop("selected",!0)):A(a)&&p?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){C.parent()&&C.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;d.$render=function(){var a=new db(d.$viewValue);s(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){fa(e,d.$viewValue)||(e=ra(d.$viewValue),
-d.$render())});c.on("change",function(){a.$apply(function(){var a=[];s(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function n(e,f,g){function h(a,c,d){T[x]=d;G&&(T[G]=c);return a(e,T)}function k(a){var c;if(u)if(M&&D(a)){c=new db([]);for(var d=0;d<a.length;d++)c.put(h(M,null,a[d]),!0)}else c=new db(a);else M&&(a=h(M,null,a));return function(d,e){var f;f=M?M:B?B:F;return u?y(c.remove(h(f,d,e))):a===h(f,d,e)}}function l(){v||(e.$$postDigest(p),v=!0)}function m(a,
-c,d){a[c]=a[c]||0;a[c]+=d?1:-1}function p(){v=!1;var a={"":[]},c=[""],d,l,n,r,t;n=g.$viewValue;r=P(e)||[];var B=G?Object.keys(r).sort():r,x,A,D,F,N={};t=k(n);var J=!1,U,V;Q={};for(F=0;D=B.length,F<D;F++){x=F;if(G&&(x=B[F],"$"===x.charAt(0)))continue;A=r[x];d=h(I,x,A)||"";(l=a[d])||(l=a[d]=[],c.push(d));d=t(x,A);J=J||d;A=h(C,x,A);A=y(A)?A:"";V=M?M(e,T):G?B[F]:F;M&&(Q[V]=x);l.push({id:V,label:A,selected:d})}u||(z||null===n?a[""].unshift({id:"",label:"",selected:!J}):J||a[""].unshift({id:"?",label:"",
-selected:!0}));x=0;for(B=c.length;x<B;x++){d=c[x];l=a[d];R.length<=x?(n={element:H.clone().attr("label",d),label:l.label},r=[n],R.push(r),f.append(n.element)):(r=R[x],n=r[0],n.label!=d&&n.element.attr("label",n.label=d));J=null;F=0;for(D=l.length;F<D;F++)d=l[F],(t=r[F+1])?(J=t.element,t.label!==d.label&&(m(N,t.label,!1),m(N,d.label,!0),J.text(t.label=d.label),J.prop("label",t.label)),t.id!==d.id&&J.val(t.id=d.id),J[0].selected!==d.selected&&(J.prop("selected",t.selected=d.selected),Ra&&J.prop("selected",
-t.selected))):(""===d.id&&z?U=z:(U=w.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),r.push(t={element:U,label:d.label,id:d.id,selected:d.selected}),m(N,d.label,!0),J?J.after(U):n.element.append(U),J=U);for(F++;r.length>F;)d=r.pop(),m(N,d.label,!1),d.element.remove()}for(;R.length>x;){l=R.pop();for(F=1;F<l.length;++F)m(N,l[F].label,!1);l[0].element.remove()}s(N,function(a,c){0<a?q.addOption(c):0>a&&q.removeOption(c)})}var n;if(!(n=r.match(d)))throw eg("iexp",
-r,va(f));var C=c(n[2]||n[1]),x=n[4]||n[6],A=/ as /.test(n[0])&&n[1],B=A?c(A):null,G=n[5],I=c(n[3]||""),F=c(n[2]?n[1]:x),P=c(n[7]),M=n[8]?c(n[8]):null,Q={},R=[[{element:f,label:""}]],T={};z&&(a(z)(e),z.removeClass("ng-scope"),z.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=P(e)||[],c;if(u)c=[],s(f.val(),function(d){d=M?Q[d]:d;c.push("?"===d?t:""===d?null:h(B?B:F,d,a[d]))});else{var d=M?Q[f.val()]:f.val();c="?"===d?t:""===d?null:h(B?B:F,d,a[d])}g.$setViewValue(c);p()})});g.$render=
-p;e.$watchCollection(P,l);e.$watchCollection(function(){var a=P(e),c;if(a&&D(a)){c=Array(a.length);for(var d=0,f=a.length;d<f;d++)c[d]=h(C,d,a[d])}else if(a)for(d in c={},a)a.hasOwnProperty(d)&&(c[d]=h(C,d,a[d]));return c},l);u&&e.$watchCollection(function(){return g.$modelValue},l)}if(l[1]){var q=l[0];l=l[1];var u=h.multiple,r=h.ngOptions,z=!1,p,v=!1,w=B(Y.createElement("option")),H=B(Y.createElement("optgroup")),C=w.clone();h=0;for(var x=g.children(),G=x.length;h<G;h++)if(""===x[h].value){p=z=x.eq(h);
-break}q.init(l,z,C);u&&(l.$isEmpty=function(a){return!a||0===a.length});r?n(e,g,l):u?m(e,g,l):k(e,g,l,q)}}}}],Yd=["$interpolate",function(a){var c={addOption:H,removeOption:H};return{restrict:"E",priority:100,compile:function(d,e){if(A(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var k=d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.databound||(m=c);f?a.$watch(f,function(a,c){e.$set("value",a);c!==a&&m.removeOption(c);m.addOption(a,
-d)}):m.addOption(e.value,d);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],Xd=da({restrict:"E",terminal:!1}),zc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required",function(){e.$validate()}))}}},yc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){F(a)&&0<a.length&&
-(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw T("ngPattern")("noregexp",g,a,va(c));f=a||t;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||A(f)||f.test(a)}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=ba(a);f=isNaN(a)?-1:a;e.$validate()});e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(a)||c.length<=f}}}}},Ac=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,
-d,e){if(e){var f=0;d.$observe("minlength",function(a){f=ba(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};M.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(ga),B(Y).ready(function(){Jd(Y,sc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>');
-//# sourceMappingURL=angular.min.js.map
diff --git a/src/main/webapp/bower_components/angular/angular.min.js.gzip b/src/main/webapp/bower_components/angular/angular.min.js.gzip
deleted file mode 100644
index 573d85539bc5ee10e3c0008d2419c0a4f6b89627..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 45987
zcmV(rK<>XEiwFS!io#R?1EgDdbK5ww|6iX%VtKvf2$tn!-!Y&$TAvx`u$|aRCaY*t
zAP5}}O)3;+$FcR@->(54pzKW5zOAXT01#+2`tAm@{Y$I8mrRzi$X;HwZ+3eB==Hb4
z<t&bR&;PgoKi$Pt^up)j*D!kCYP-^FKkM)GxA5n`+Aq>{5-Zj|No21*&GR|m-WCSb
z)uNYXlUDonOsZs|c>B%CW$TyimOEZ1GM}Z1d(J+w8}I(_%Y|w$@@yvazx(CK_JtdI
z_nFF<S<<dnc=tCVYl}c+ljXHa^2M+}V$zp^GjzIcI0(BA$A6C36<udkBBZh`%@(}|
zUfX|l%Iy-^b^**Er<p5)9bfELTlZp>O!BEOx?S&H2D0n!1c4Yh1FYG^B4-XLVrvJj
z!0`$1C{T$^BlZ5>$w7KOPZNM)%2(EL#0XudJg*Z3`Q2Ql<F*>8UY=fnNXf+YdYPKX
zLMnH={rP_QdGYyT^vlLJ1FGCvCXpJ?5*68ttx@hQG!&;(e|~v!cG@$;v+<p)Jg$7%
z4I;Ew1q+UdhT#2bRdMJ{5Q}DGH(ADU5QGm8=QQG(6`dX5@G2|`)ha-Ry#z$K#O6T|
zBw}+@3_5-O7E2!<Ug^Jmd=L*0PO`iXRfdC<sA6(|msV`;v}b@+Ba^uy6HFQbi9l80
z6?*t{LMRdYBE7<M=2@Dj1P^c{Y+|r0I*GV0#>3uJEY5C|^DLdKEWg{_?5q#D5pWef
zDdO0bEF4B77O~LtRSbc~*5)vpOa`xU;H2S|k~xT99x3#rps(di)uf7cl^;Q_-0{Oh
zfj18QXs1=VQ`iH5BO#}on^hBAWM0*CL7WOViySARff};t$u0bnX*H?uqLS7G#|ZYB
zK34Cmx?AA1y+xYkuE!KkrgmFVc`St^*;@?N2)p2KwM|rSGnG$S0KIRB<-!)lACX&5
z?RKXYt}{uvdiP=w_BJ-azUeD<7YH7ySmmm14O+lx-|}cAzttQjgB=zHk4%8vji4`G
z!(>~X<%r}^c_p-QgHXz2lc3M0!MFr8*~R}Qpg0&0CnG-`#-l*t&uUei<_VriVG(OC
zvV}THa!lUod-bFjAX44CvX@w(lz7_mRx|6VNA=8x-Kk`I)vBfD$+?yuScb(yfNTpU
zg`1nD>I6?Md22y0?Aw#`F0FZwtcx`-wTR#h&CcyZk*g8S-!FtXw1|6REwJqO6R>CD
z6R_W@$<g=uPobYTm_=HCJ4>SU7SnAiJeswkZbZDdxJ#t&-HKdJ>-q2OQ-*08EAbPY
zuPkNkxE<K~j%)1rDJ&*gOPJL;?IH3!+uUry@Bl&2I>KH=AdF7kulx{-wV21V+;y1a
zX<s3=8I&*@a<?*tq*r1XLX}2Ar(cS`sNpW`L+>}SLU;h2@V6SY5V{b?Ht4N^4e(Xp
z&&DnktiKy*f)Rpnvy$z2Pwf0%7()otNp4W{=;1*#!ON#vdfPq`t|RBS3mkApfN5Gt
z&aLr%hR+Bf9v+4xID<(4V&YllH&h@i>_QD{YX?f9ywYmIg!-~KUoNKfJu)p=$ifL(
z_D2+SC7)9hc?=?}fX*`<j~MBkJ{3FD18@v(37xvE*g$z66J=9-7LDyBXo=cp`mcb<
zpx%}vkYbft3CWxn##n&ID^JV7*f^(04tGqb{67)J04V0eh6*-;^C*2MEWAfV8VC)S
z4M!Rz*CqgiiMrLA56POS{Bm}!T+icLi3hIvY?K!h7U?pRiiLKpc1=3xZV&(byiHM>
z2Wcd-#bS}45KqbLmu-&|)Abn(M<Fvsdlx+*a9)NlS{4AwV68OLPf6)VBju$i+zSe=
zAYr9UK;Pig!gXIp+z3eRDngx=k|c>c8qEEQ=^)G5AWPnoJvkNGUhejx2WG4q+VN_T
z6_!xZ8qu$!!qn(UVQ%_<6=PD6S+qnQXVL=WBSfdM&K$3_W-Owa(heqTpCY}AKxlMG
zXd4^2vLcZeR9a->1Pb7yU8y5BT1*F__(|Z81*JsGh#qZ|TJbWu94HE{t>p}IV#%Dr
zL`&Z0CVnau+qS?Fc6E<dysZqA@QNT^{|Fs$+Xt0onXTxsVr^7&7J=}IK3_qq^0ckB
z<4Sa4u~!v1p@}0O2hrfe<4p(}#%}a>Kci$hVmWwG2B#HiWSU5kyYCCPN*^sR@KxGg
z;Mt@6Zcwc&Kd@&WAC@vq$Wa!611@rrND?e#4hDkD62{{&>d`i$C+71QQ4+%u5Z+e1
z^}+f2BQh}lZ$Ya*5tK5nsE@xN*~b_D6Va1q59yxGp0%MJZ_tv#4cAgNKt8_l@#OUI
z?4!e>WuHi0_2A*z!TUEyr<V@b!bs*CqZbEf=SNOuyJU^shuS1O9blFUaN}QUKENQ0
z!81-aqJp=U-G*#GqU@pCB(@U`3M5TFtfOf3xMiYp9czTaF(o-NMg|WJ%d@-tu&1u)
z5N2;BwYdk*D?`#_*V&C`H@`U^u|y>l1@)%+bzH10#k34kioEzL9PA_Ah6ok@<4<>Y
z_~&n<?r$Dk$j+!P0sOh^4nN<1-Wqki?b@*lR!4TbPIsTUULqG+;Zh@`zt)tnu!_`r
zy@KG>N3547vX1Ura0~E8e&)Kc*A7lz1bUl}XSse5QVT#>pXGCRd%~Q*J?qzN0<4Jw
zU?#QWH1+}x;tm5lBX6L;puszRRwlCou5j?mSd9VwEkh$tonT0RSvWF1Sm4!De)DBm
zpNP~Qf@6g(prH;Ln#1s}W~&3?My%8Kx^9Px8R5WjIF8aiAc4j>?aBX*xfOo3f?uVx
zM3a;|j%CiQ<f2_ds0sYHXaBuDnK4>s4L(2AgF$2P*}fj^I+m&&6#7`ee_YNY;jTga
zqfa1O&Oe*G?P<Wgx!XU8^Bc{v13i&7R~xka=1gqF#6U|9Uqjh8a4cdfh^tt~D6(Js
zaOHQqk*A}Cn4DTyu(w)5DXW35R1Q~`3?WNXZ+7@-Gx*cYjV&3WVnjD^U<(|-qmvBy
z!##kXh09#6_e&!g>JSaFfc-_w#ZQ6j#6fSND@)&&D!aQtq%CtCm+GaWA|PnSoX?**
zRV_!3XSP(>Qa!b$hS)O&+rwE<Wayx?WR4l#ijdMEAizj802$#fnX;X3DoZbY2CBkr
zQ{X{K&=2>%1dMP8X2dHhr<TtvxTecqv*gMgsK}H+C720l(WikErBZu7hikL#*C|(+
zW0QI0AU~*NXm=Z05$6rL`i;gWH0JrMGHw>VWwMyg#<@FmHjwq+%p&D9S<pk$y#!e|
zvNX+)Vx_U5dff<T>_sYEPEL|>dX$JTRuPrmv>^aI2}PR4>fC_M*5R%%g~iZ7Yn&YT
zZe)PLtB?Ynic6Ff&XSw-tD;>9tqY0x3v6%VSYbfTlDJO8t(bfl8J>wSY{v8=0aDuw
zTM<qS;!`rJF|F!+(2easPhWgFI^ElUee~t<X#f3-FDIwRXB~Jk^Xc&D_~_l2{j;;n
zi_3R==bdf;d~;Lva<$0a^B$FIO~SWM6-1rPd=Jb|#Zg5yaxFT5)EPHGRmn6Q^V6%x
zwAvS>Hw#GCJ_rZ;ig{o=fS))7a=$)6+to8FS{6GwPg26^n$N%|PT_U23VX+?AV3wI
z<H!UhKuj4vk`=BsgO1w?t%?Jkx(>IrSpm~FXjp_Zc-=eOfX>SjsxHZYaq4v?U0y_M
zp3%&3qd`mP`x8n}UZ=MzI}iw|ND?aOzemNTPUwG=Fa+*gfb3Uq$y$NCbI}_oy)+rP
z$H82%AFdu?_Y0C<{!;XGgUuFcj5PV89JTul@qeDBajY`>RQFg(BE6z$V{odnS*{}F
z{K9;(238&mfe2zhB@!B7b|<j4)l{@V``4lOIt-AuRJC_wsrpR$#(2U&>sZCq{3UJh
zMXM6zRozhVu8p$nZA9QvmfjIzT;=tk-IIyReiuoE1A&RfcW^h<D#wq516B)0aLm5R
zpko(>--M+pUKbOQsc#M=rVktj-Z<zlXBh(Urz+6b6&(17)+<xS2w{#(Z@Yyc&Btz3
zD8)o4N%OX-3e2oML7(p3o~-l^bQ*`VEs055DS(iviom{?*}zkXy|QwMX6mUk80)~H
zi1hsrmDsJDC212#R4KO)g(!p6p5s;Z6!Q8o0acBFYW)6WcdQHh5g0u|?5Sx(e%aG}
zFLFsxj;J$0PO4Zl^GK{{lw6#@M%tp*K^KToO1j!h)c5>i7RE?>e1mzIDe<+e6GA#}
zr!e#`)lBMpo@2@gs$JjLDQ2@Cr4uZx_^nM))kSW{TA`JMi(xpT<P1N7gs(1gqYK+t
zP?&#F_%9eU5Zx(mY#nAc$9QjJ<9e1HWm!-+A095M@R(Lzr_nODU2<VybS$=Ztuba3
zHvO4wj0@R_EYT>Td;X+|)gIL+sq`2$GEhQmY~y25N{5MTj4=>sY;nS#J|t-;wmBnr
zNGqzWzILhkipss6NrAKkDN`T|I+z$LL>2=QQz%A%z6DKB?U?WY4ZRN)RrBEfiy4JE
zUMe24FHpkqY_bn;^mV}__9a^;MMts1JS_NxwTM`J%!=?R<Fr>5D>>ybrGtXDzgwG7
zjN<!3Wj8aa*1i{`_^u<ZwXb>%-?YULNxt^E97eN<nlM)+vuo{O^<>kt!Z6sr$!w7u
zlxJ~X9LY4Fo@Tinnp$_Co*sd8;P;IxX0OG8PW9b@1{e4@2J&;;=crP*E1{Uq7ORy%
z-Q4`<PAySE9Ac^OORc^?Af@+V8PxDpVxRdP|1KCTiAo~=gMq^$UhuCNG7g0wv*Lo8
zXRK8@)K?)((sa&WuyBTjUnR@amkSX0gJ9z<z1HnmGMp{R5pVD-0U!Rptnlz7^bU*m
z9onXv$={-RTp-O)&@py_pP_lGZ}a#inng6rudu;lFU!Oof5mQ8wxDINB7zO(@>H;x
zf)a_KgzvNEd|tFum@W~=p&+@wm+3Mge)m_5YO!^Y#E&CZ+8};`rd-VVN5M>l_HmX^
z56i%mA4LfN{ty8S<+-W*{2|EJy+&9^)}*efG{)I*<n>Bzfmp=F@axE1nTeQEPam<L
zrz91W`;CnS<U61JQ17!De?yoFdy^^ySV*r|iJf~d_$g?Y%$GUO!B7YVA_PJ07G&U>
zpG8=a&E`2jM@wg#{4HAfU99-Kh^2GQw~L4+lYJ74%d+)*ejW4oW$#j5&nbH2A86zt
z7K;V{ST&Cj5Ai>$?pYM^Po|fOul!%SS!><~^^XZVq0ssrN8};3PR3m7-$ces3`V9i
z%ekV~X_^o!luqz54V=fzOvIoWpHTOmn!^wBDYY-A=`Ek>mOkp0Zr;woQ2w=Uf1CpG
zxb8!~#WK$MH4U9<+AMfNoy$xl3xifl{Woc(Vm_zlYnTiEjamm&ct^!Eg$Oi<d?tJ;
z3D3GyhHLyrYK-e1WYz=@{FXkwvAfsed(ru>zcsrbw7FeWSe1C^YSoaHny|~}mw9OS
z?vUTN8nP)8IZd+*N&MqCij}6A-=ZDDvBC87?`TWd9CciHk2@Nux&8y)GW+Ly=&0{f
zX-tbqneSt;u;V`@gBwI^u5$){po%`+2tPzezal#-8v8H`WDAecFLN^fLU$(ocl_$I
zF+V}8%Ch-O^uF;|_=}&{_*uZCy)nOsP?QPndrJLeHXZ|~Gqm$U4G!p_{M;HLR>BPN
zw*=72+W0$~G`m(QRP+LE^G1MQ(!6Z%n7^lnpw|Egg?-~6Xz1$OYa}@QqtZEg?H4{Z
z-V;>$-XE%25I_J^mjnk9lD+q2OHH!JVPC41pODbJNq=nYz~a?UL-wReVC#orRT!^d
zh&?>egM(k2ZyomKdZ|qm!RcYa`QuDXbT$l^9hfWi)6k^+bj_!4+*MJOKR_rPxg~_c
zfw*wGH&ic(0{364r@kwxug-=J{IN6AW%x#7i-}`O<Q^Wzl))JV_v!9FL6Ua)=5-KZ
zO}D1x2I#T7vGd#R_Qtc{kSIsPXQQGV8BvfQZEg7;5Y;!t8b^N|TndD(bgzo;DG0Wp
z!kOxgXIVK%_Q*Pu8Kj)gam*F&xCjo4LtbJEEhl35YHbAuYNXN4+%ang8V$Nx6>4Rb
zUW@mEp>;XdI;ayUoz3`f%T)1$P7EnK)%l7`v5S4Jc3>_X>DqSJ>Dbp%MaX*=Qp^j_
zQzxi&J5Ok=%<~Hod@5d=Ap4Sm7?(`-2E%pc>sy5p$FxG!yn#)0J{+wMq(+i8Uh0Gm
zoza&>n#_%?`&(EPRURI)u&QP@YP5SuAnH5%#~)qi7o9Wp89fhKdpHQ7bpLAYcqki>
zRp=hYB3n8hBc)gr4{=lg0bCGX;7rsrB?u@{M7^mtp@i_*(^SpeDi3bk7d)caNLIDk
zmZJRhLb&>k3l(=UA)+^(<rBd|I98-0*XfNSZ=aLXQxHaaIKnzRP&4yjgrKdgCyjIo
z+g4s(1)<jfl%@RzEM~*1bN;aTG$@%ofBq|IjRZZ{4;X;7D+a~dNY_09fV(Am@VTU$
zRkSI;y7wz))oR$G7Qqq~y#p&Y4Q}kZ`Qk~uWQ`Y&t1JHHY8iC9A*@B9KL_^)C64_G
zW%@N3@tf6C_pfj5;*d7eB`b-o5WEgmud(MDxD5g62vV$2%MR-(5+73(_FKehF9eYS
z>6h;x#<eZb&m^svYa}Q?^kG+4$#fYu?w^`BB7?1+T@t~ryLMCJNQx94Pv1p$Nl5Dw
z|L}A2IUmv86AhP-tO$zGGr9e^;HK1C{Wi?nVsrB^l%P4a#D;xv|3hS}+Z#anfQ@Lf
z{^B(%thZrR|9XUXDM|ksCjMU>UIZ<|&EMJy0_zo9O<=0vcLUR2QHAFx#G*$VmTQsq
zp|lmMLI<xdi*>uBK-BNjWL1(QX?y(qQ_@9@37PaWA_6Wwt6p0@@>$yghSqr4wQ;-F
zFB^jUop|DG&_58MN9R_?LX@_9)@#E`7k>?`P{~wTdu6y=crUN`7YpX`9VcxHefz<7
zUk6NUUc<a|IyTohVex*69^us2p8rSM)i$?nW9#q!6%Mb*C2K^M+r9fj8s$2P6UVWW
ztmCvD%gPR4B~>&fi&7lN)_=d}IRHpdQnI(RGo6?sK>!2}&g*kdF&3$~Gz5g&<Kw}B
zY|kd{3@6omX{mQF69cGbsR#KU+uDj}7_?F*>}S^JUo;Z)mL;a)fz50XnM~S!Ssf&~
z6~}nbBmhenEEhx&)k{b{MCtv9Iq3pk1aiDoDz$6i^Dk*pJ4D_N?0lys{a>}vMEAtT
z+8SaFeWR(KBt6Ei_G#8l4{5%_;x%wpzvw!z-@gBNi5bHse|h}-<<Z6Q5&x#M^g3zD
zv8>fueJ&Fy>~t6_ZG*m_v0TVnVOBHIPP)=)8E7aeypp79(zf@-K<1%=vHM#L*&FZ)
zI(BKGo0}{hDTmrL8nDsyVLl-ZGSvcQC=siiOkZzk8GQSZJ>TyR1L&~o#(D;7S-C|z
z{BU=7sB;vE<6xCGjcoc|TQJ6Oe0MI(;NWmT$2OP0kpyf42L*AM;&2cYbQ1r=ur4v>
zyjS#1?gnN`-v_6hj5o;f--z@cpsIFuh{bQ%<*)8@@i2@k<!!N|c`UyarkkTV-Nxap
zh4E5EX}b2_)^}dKGcW3+`X|QJ5*Xe~OSNqSxf$tR!;hJXe;b#dXb4jMf=h}RGRo@o
z9J89Ov@D#x20OaDYtj^2X(kD>(U`@5O+B)N)o;s&{c4G3GyQJB`-JGt$I%A*+S^N(
zO9Yv@*>o}I3yTHid1HXEXxNZ9cA6lRt)XRaNVJCa$GK1h$n;UbElc26*R$)gzqijK
zf6wvgTk_IE9({;;+v^-G=CGSGAygpE1)xR8ABYL0+Cr~EwrWw7h4L>Kye(mzNUVc@
zxq?3*N3I5)q$39wMfANd=9pdm)zDjD!z<NgkgsSi^}EA-1pq<QRkm~jP0L%>A0ktY
zD}STW;Z1~2AV5mYSzy&XhVxXMT+oGS>2vrLk61pgXG6Wwq|%5pw^1kBaC!sP29XTW
zOp7fm7}Y}kr3x(g22r~vvJ&XrIhB*=#qzeJZ1MSs!SEVZzzjui6ZT?CKOLO@+5+#9
zZdb=K`nC%vvr&qxNuG(U3}QvmIuCdZJ+K*#F`<r?5|vorm7C3~fgO=}z;sEc2QocW
z<NL9#Ef35|<ZxLMw6YcK^-t@D0$Nd5=dRQ`RZO~KY~_UY;yxKjw+yz(n5E^tjHs`#
zk-E9adOwlD&Oy8zZbm!zaDyXGa{yH!Z168AbTrQIz|RUCZw+rAxKMpm1kUr!-K5im
z=!od>+luJvJ9bcyND+u;;$uwUw`LDOqi??T;09o$Ix?zb85txFHtG$7*tP)8?L`(C
zKxCbptg50x22>A`Rx;k*g`J>()W$;HPGv^aKlhyL(%I9k6)RA4n9YbLgnj@gpMHTZ
zy@2e=O)!C>Iy|jYktz4pYLqupjwm)}r7SFZOww#hLz6Lc_>?T1u?A`KFAJOi9nC`7
zj%)N5wiLY<>QBOR(Ce9-^)%z|?wTw{u$4Sm=A)9-f%}JXNA+eOa-5<><bss4b%=LP
z>q-h7(WeSqD~*ikzmOl4)iLnISlo&-xYd+CmW848+rx2i3ra6#(Ys|X-sBj|Ej>nQ
zEz@W|CPr71uBC{H#?Mz5x%9%kSN8qXEopRbX(39+eG9y#PER6+CRO=C5vHFBi(mPx
z47`=LszD8|vX*Qj^&^hIsf-(ydjcT>&XICQW+Lwxe*RjSTPcSM{ZvF{Ie{JFe;`&I
zRjpX9;g4(7WwA?dJrCJsj|kkPFj@koI6f@J82fd@=}4qj&^2)kQOXAs5A+}EV0_}H
zP2fEt!m6X}iEFP@!<y+=Z!;dSfq1Nl2Luv4v8Cek-|3grP2q`KS^@jj_DVL@fqO3~
zaR%aG&VQD0oh6f5gwS*QMI}iT*KI8<oOvv}f@Do6Rw$cV{G`@4TQZ50&mMMC6TgX|
zlP;IyR+gQ5spOEzw>_l@@HDNTfTYKD-kvSjrnJhd>|@E0jHRgLyfwmH{Qo}MO6RV>
zLw!B5hR;HI@m<WSwZU~;Qe<CQp8m>mjAb>*=80Bd(@}-!>Cu9eF^=ZZ_sT76l>v!c
z28~fd1g4xXfS#JrngOV4w5s);?8vrN2{QrgOTbb8=Hzy&$xUW*16CZ=P6SR^MRq!s
zguvY>CUO(gV80%J*z0mW`E``txh9J>k%P|tyF9Omx?YpQ5+(pW`F|w1CfS{E)e5pF
zMqgA4G-r7ML%$&NnuEyHvNN4jBa9h#{R9o3O-S7tA<{h}JN$xnpY+>!GM`UwJpa<*
zsJjZF9V@u_#&^hu6p^0%vwKoN<EQYhv65)+Ury+Lx1|`FgTWbGLzhHV5QQ|*5Cdty
z)3f{6P>hIoBin)=lJ;ypuAbe)mw^^uxW#Q8nhpD3NCqfanXmsYl^ALqGeHa&x=LcU
zamTf%Ld|Qrdf=qWA9qw$i6pn*O|2AZcfjhr+4aHF@}&IQwxEev5m5zs>VT_bV_<C;
zb+wpICo|gEa0Az5l%{3-Htdvo=`vfiXYohg1aaE54|T#MeKBWRPg^@cBtfePM8S)v
zPX%Pif?b@!7bDI+boGU(Z|Zt=K2r?;3fEEL^syBs+k2>&bbAqDN8G!%Ed|hTa3o`Q
z5y3cEdhQBo(Y^(ReUolHoDdPyl0!~Gmz!t7i9B{sybxdLp9JH`JrNgB3r^&P7hK2_
zE33=pbNYgg*G*?JE8sFYqaP>U3v)x9$rCYiuU4jNo}RSa=wq|W-%gE+tktUXiI|FS
zB*zI$(tx{w-o-VZn>c#?jl|ev%ik#8Lc1@rXl8Cq0b#r$@o`S7y3`d`7P2e8z<R#v
z?Ccni=DWolq7p}6qXlHf4Mt_M{_Hs*PPPPG?CoJ7QeH;+J%B53C+lxjEx7aMEoTA?
z>Du4=QsYi}+IP@bj%bi5P2Us4d0Do)J9dveaD;<ySCHv<w+d{FR4*suOuQgbH=Jdp
z+rqj>*#Y1+D*)wAl{5fx(Ow6<v$7>bG7O~+3#HxN!jDt$4?VEAi-a^k);mT|t^G4e
z{>nXiMxV}M(ie)mxldBl@bNLPWz9{Xa^_#`?!JuN7alc!30V}pAnopqdaz#`(2|7i
zfEfL$BwHZ~Z)+z-<oN>#ms@u1*KwBr0k%<c^d&=L8S(c;Oxn4d?Hy1D%rdDfUo9c7
z+<7kv9o;Q^!5yD5q3XKNNfgB4#891}dP{Cht)SD#N7bF3q4l@@f!K0>AoGy6fe-Tr
zH{^-h)hp1(4iUJxP#bvDnUo)Ag~B|^6#@QahyT>e<Z*T;JXyrUcqE4`h@ifUPfoZe
zzQ2Pc<*N<!#ph|5CF5pf%mk!$g0))H7zdHc6LawG4F(|!8&}f)Cl@H9D!lf+@OuAR
zmj%$Zn;iA|Llnpm_mY;mh-5P&QSl8K_LK1_v(KJU`4~qm28sxQocSD<y7`8}Qyegq
z!8Do=rL$L%o)~0brtluf%i%(7cMrBtqjLM;AAjp^ce_6SxBcoIsk_P&OQriCyC>^>
zQ;Oi;meUOEnUL9m_)GU6e?3g$mcNS->Uhq*Z~wrt!XLItA*x1kaleh!0pgR}liBv<
zb2iHX<4m{XEQwG`Y&74#i>mGUWU^h5^vkwgXD=m_{FiO?za8Jtv&wtoXtx*_u+rZ_
zNBf?o;k`7s$WFL7vCRO%O|>~W*Uw1X^)ph`q!`GoIekc8?Xt5!l4B&z@!5ms--S_2
zohe)XGqq6H?N$Riq+a7V7?L<45=gT=n{6O~Bp|*`+Go{LaFmZ=3UmOt#8SkMkEA5x
zhE-4{sXHdMp-i$uZqQbyG{exXdyM+xEnF6v`^tm4iCDQ6uUylZjC#KX{eA%5N#osc
zS!e6D^eCn3SYRI3fKrZw+KSQrHv=4XlUU^@wbiERiDVWZ-YOn_i^K`yhGYP6P#N`2
zJY0$r)-?U;lyW8cL90O271BD;3%w-Ch>8^uLn3Wb!=Sc}OB<;VHiXgfTxT@mXrdMf
zC=B%#NRd=Lj8b?hg*NmVhLc3oC>hO3C@AD}=ltmRfB$-P_VHNUpqZK`tWhvfD-T0H
z0Kwa)9&piPQ~Y9lxZ0yJDQ{@YN%r86d>Ci<uz3U6Docjm6eOUC01IWC4}KZ%?(&wX
zFpqnSs#ji925zamBrDwfTcgK3y3S=&T?FiB(A{BF6H)qa`Xt5)iYO6TMk0#5)hYnV
ze)s}Q!4LEy!23&mjTr=kr%%l+jz~wf2oakXAQuSR6O>Zz3~jH10ohG&<WLrB<LcTt
zF@4<#Q1VT|JK%W4L&fl9c0)8}mO6N8RaU87n3gRJO(^bVeO4awiR;<sZ@|W6JI}G9
zsAbd8!ojsq<W_Hm-o=K_V&o<&jBDkz&Uclphd&xu$Ns15>PNTt&)xo`bgzF5J<q)k
zLk~Bv?|#JJoqb~D8^76<MN&~A1xb5iGJkI1tgMnL9ZM3fq#dBrl6<%!k>=;UgFYMb
zKx%M@zVjoe4fTHNYp{D%_)e(q{oEH&4&HKNOz$srjxx&;oi3F_@<HXr(u`}6^tI0)
zr%OCsS9@;fM{kFdWZn9<8~WG2+xryIwHF4Vw@-rTC`E?AhZ%s|^e;(FQPGczFCofk
zBzn=k{&f8*^g>!Q{G)z&;Xbh&dOj(8(bKQ}y+>gDBmPbr-S~L)9Bazh)~l)<c2>?x
zu%#jw=P~rh`a#Y8M7r+hBvzAxm-K*!)BZ|0v|iNRw!M<h8qT{VOzO?%Y7Qwo&CSyk
zj&WFb%I6T*zCSN`?GC+gC?9lMgr7xpW9dH`cJv+K1&UEQh733NBwF!ZkG<Tp(PT!<
zS~iy?gy{im3UWYKoCZA9!Oe(n=wObluO1(VR`x1J<=kLAR}oOzTs}TJ$45@^jwZnw
zvK~*4%s-VFi`)j%FDjXs24bkQpaTsP9vWk|@E$Vy$0F8z*#}yY7O*a_#Z|qAiCcQ@
z)T3aF2_=I1`axx#upRZ=a5T>f($_cflzSCC{mxr(QF2Vs|86T!`xi$yp#MKT{&!xp
zC-A*y+Sna8Zqe0T^$lv)J)e{@X&Y*Y@rs+&rg$rJVe<iSR?`M>i<1;owto#Z6DxHA
z8imY3o&x^pTnt>=IYevq0V=WeR!qf0d=YozNSs)F`%Lj|?XJ?mk*26j(kd$R!qgkU
z*=?0rdda1JUUG1Iy`Y?3VfGKkgWxyku9$K<*B|!waVWSZ8JmW8vuNr%ht)JHe>vRe
zKaQu-WiD53TY4J#G>CX&k)B%cf=(8F3oo7epvY)(w)SOD5~?VtUORmJxMo9&f@&Io
zo$8U<f!ibmy)21qr=59yqrnPR=%JG@XsGNxzpI_D0moN&cH(wdI+nV2-wWVh7ytqe
zMH3$$I>h|5(V%Rq*H#f1;z>7Dy8H0!t9>ura;nb*$9GWb$o#=asw?VY5WaLj#_m9@
zS4fIXg(PAuNr<F<py;(fla3r@^sq)|7SKJ1UTUgOkWtyfP>LatQigciyM>eJa-CaX
z2h|m#k!)n}-qr%z@>fO;U2^8G1s*We%7h{cF&3q`rL%B`IafUAGs)2j*MRn6SagH(
zaA>T_a!>y3<#O07`{E4A#0mYQFdSzx2}&J;y_L-yhqr-O$g>{3v$xkrbU|H-+*~9f
z4al^{tfjM4B4Q!d7UL!HdO=dl2mhJM#G<u#<>j!>t_)APz)15HB?wKOfy>SBc>dNC
z<fbTo)OtiD8fN|z07$v#*z;9&M>nT6END@uG$-DgNEB8chWLySxuFFWwbrX%(fqr?
z^svTcOcA9nI7XU9!B}3=@t^huzXDI?G)#ST7r40`n@UUf?pScMg7=(f)#I0PHAna<
z)ynSfu5*Hd?qmj(OI9@+6U)AVBOX;$;S-+r?Q9;pTbjYy(M|MLiad1lZ|w!Wk#AmB
zo?G*luV6d*<746J*!xrvnR;X=KIw`|R*#Q)pkM&Tu(}Nge!I%iX;TJfm9uFd6msfQ
zsBebQo*am+A(XtGon|(vw6IPwzx(hFuIDFWBhT{z&06Dl$_T3GdsQFTL4!8kfi^CR
zpyFgq8$kYmB;f5b@(ToEK1Z&K4GQPj;Vx>xrlvBf+<pvLXOa_VvfACPt3yu@&lKh1
zoiFfe-obZ2mKAM0k;GW(ai#p#9jnSg9zCRS3*M|-nMNvWjZS4Di`tiXu0VX+pZj+U
ztoLuX<LwVN7K7tbkyd)1mT3!`Mg6+_VIIxqkH=-|sjBk9edI0>s)jdz&*8@o$&W9x
zpl>P66uQD-LZ1Gwx91Qicf?k)@%djp^NnqMG%3ryabFhv;Y8MJ)goyP60|7AE0};|
z&L6-HkkTb@bP1>moi*&<SU5+#Yfwcz)Ntx>Mgb$L->K?axCzaM^aE8clW#j5m{qYc
zI<_iNjKsR9rVXr?Fhe|7gkh%gD?R?X&$U@=cYC2!{k;Np{xshYbU_Y~+aIz29wu(1
zsk9#d-G|0RlPjc7M6_F)IUQJYI$xg?P1)#KZ=q+!s!sc2V@2_uHd2PmMlh@!WmZ>e
zmbHJgA1R&aaw&}=O^;?|_&KUHNDx^{TB*EdE4`3R*xM5;w}AxBo<6mz90x1aPIO(9
z?qQ~5+Ucru|E1f?ELgz_ZenJc++oyS3-c3MEi86(&)^{SK#8JiRRONk@FFgkLnL^i
zAq`j;WBHw%E4o)(%x}3c6*l6OPUHFG<9TD&vDon<8ACyNXca|bIK$X33>~YXV;VZv
zL&qD2j{nTiF@}ye4PDk{u&m6GFU?x8)=S!o10~K81F*?LCSt5kBuHvZX1P)^adZ$W
zt^MR<`&5nT@X?2j={SVAW@+Z*r^HV$a6Z8$!_R5JR(&VZR6o^E8Kb}Q9FwYz0_rMM
zjeqJhgbqw7(~di0A^a`y{;;l{_Ts)lFgDsK{UT{h3La~&aXb5mol$ha>Z&d{N6DNE
zGui(q01ZtuAUQ7ZvRa5t*9K|UoOu7Htlc}NL{0ZrINfFkfvzRYl?j2CiR5QU2@VU9
zo}-}J_fdFNua&=b)x<G$+IS)^V+Hf5#2J~3Ct@zHB5@@y$WWkV3*8Hui7U2Jj1J|y
zS7fi{9zuhx$GKOiEf}0K3Lw$yM%Uv+4)-b|5p@-<TRD;l<p_Jm;T(ol&D^6_1Y0{w
zcT}x0ph!;fzx!yDe0V~tiJ6>#C0MPf{0m{}IsR3&3>MO^Jr+3sB*IwG1Qzn57qJG=
z2USnqg+Pv!uv;Hh9-wZjm5gbjA0Mw8b4NXB+dQ#FVuPr8cd5$Xoq7*zn*SB8KMnlE
z9Y!3EQXj1TQrpRFG=S1td*2Y4TGw~47^*xV8+mt^20m2-2U}Rp9eIMXNrR56`;w2~
z#$q7jX$OU3E+@|||CYNW2i8~2+>;Fstkd;-w%(K0`0I}GzH(_U<DLbTgGo1PAbh)8
z1*ARlFFHGu81P6G545Rc2eo4n|G2=~s3x<jm-Xo<Qw&*Z7xWX~!DVJ${PKWbw*|W+
z9UmGwtph(-kB0KCYEDWL+=wJOqaqwf{zjE9QiahYo$d^P!jg2BVTbmEjCNA#8}I)>
z@@&}C-LRCB)`HtQ0>cWmYhHkWMbkcSIjhDr2Rs8C7;{bi5dT}3h+pu0e$C1Q7|>z`
zd1r?M^7*2GM=a+vVch3oqOo1i>s!1Cu(Qk~_pQ0546%A~ynv_!(fvBD8g;Mih2C}i
zdRckmn_O>0{ePAr`vC;(&WJ&*!&-neQDBjQw#BR3UJM3@6_<KDBe5_byE}5v#93#J
zXAqO4+gi%*?tXF4+Jd%uNKNM+F)^j7U&cgOV0Ndq#aGwFZ*F~@!7O#D@rj3|@Q5x&
z-Zq<u%90t#vc@~(e|#}O42x!8{#Uc#TA%)s%}ZTiUKt%v*J76^;z(8&>#Mm<MT;&@
zB{HM#UR%?t8z3@Y)eF$vE^wO&{IZA}_TM~y1x@2C{<%j((lw7)eHcySXSOJkP$R{;
zcrTudMI>`^DL#_%_gj+#^6~Ju;3F)*b29Qjsv3P!B%wA{u%Se%evqXUL?E|kq-Lff
zBEAL3=5zTOyn6A=c^x&-{DJO1r#F>r|J>enI*jk!=idKucCAf~<J$H+zXDuSx%Nc7
zdQP3X<+LXi2;IOCV1RDA56zu&94BGOi#X|ohWz)t*WQvWC!we6@FB>yEX%T_{a(B3
zpJ7?2vt9k^TAQM0RJ5fZQ>PE$9MuTIH>+`-KpjWN#OGBm>1iybZWW$ZDm4lwi4E?S
z1F>0)YMdnkkNF?3d<i!WSLa;2yS$g)phO)qua;BK;3HHM7^X>&b~%1Ab2VcZ;a)6F
z(3ftIn65t$(bvPO{|rxgHI4EiREN>Q%7^@_V*n0^eL;TN<j#ilFQtxgbUJ*-4<G}4
z@jKSN@=)ysz{;ZuP^W`7aWOP1JsvFe^5(P)dqg^jmpP<oUp9fo!J`I0O+Qcv22I{J
zD^xoldxUELz?<=C=#w5T0T~He3JrSC6Zej4UiJ@&WeW3Ss@jfe)~JS20zggHpb2OI
zb7)4LCs5bsH({A)BdV)5KGXGplOnXDL*Uj>@AkK%L%j}OUt3nz+k&v?Ftd|UZ#?m6
z4MEL-fjywntlSdY1$rHlluEt$4=oDfXm4c)d@#V9N$P(p?<*Uwfg|ArkElZ|7V0pl
zLmLqFK-=gU;5BdY6mzS{i3g%}K3p1W?4|!S)^^}%5%(|)XVJBv_cHI}C;GZ18+O#k
zQfV5qbojDvw+n0Pt&J``RV%w(NWJ;_WOMf=lhLJN%$4l(dlT7XOc0uTfjaSTg6f%g
z6yNBLDZD9_&ior%Q1t0<;HEy&SG02BZ%DQDtB60PJ!H|a3QroHnLW@8GoExwteX?x
z>uhtuVkWy=bgVhVV>zzO-co`_AL-i9_0J@c;Qn=r(&$H_<!BmL{(%^vF%!`2rbLT#
zn1v>hgSSEgTO>Il_u~)07=#3eia@;-r3{gwIbA{OXc~Hw`KN8TSXL<@dxXK!*%bFz
zkx0cyvZzi=b^QGkvQSEFqHABzb)6Z#%7`{i{VLh}jZr0|chPF8rzpM4?iDc;QS|-w
zwe$N^{w)#Iw-r5E+q89$Ym2{8Pr7gxy=bx+_7u}Z7(Sm?2IwhJX9&5KFhmmbqNjzP
zcvH-~DY0*cn{$*hCRydm5IE_v5<LdZ!WcmDMM8tcSW4fwIg=shDN4YNHh22d-sHjP
z+zk+bf%SC|WX=kHD^0D1W;HpN@D(gwDq1$#ti*|OQa2Hc-((>Jzeu423A`L30PnfS
zxE5*Et9T*DY&V(pr3YmA&I(B<6#B0d2^8{MwCP!by~1+%83Pil_)ecB*51z#s(BHV
zQZT=R&~}0vNVRLMoKnTZpiF%%qx~H|5&61M)&I-<4!Tujo@u+8rs7o?UIrU(-y?5=
zF`yN^`LA6Io~Sw`l8(p>tMwUnfM$GbVkv2>Vn3^qdT|JY7^xglpN};ykb^anb2y^?
zcuwSbR3I|d!XcZo!@?=z#zw33w_=meR5IFL0a7}iX2i=~rIL>fjm?R}m~_)Y?i!lO
zE6>z<B?I}F0P9iC0c4i?XNLM8gVtx7*3Y6Wr}deo^|ODX^&?@9=G0x6%zuIPRn3IP
zPl)EvK=Y|r7t|@^#B$_MK-edSoC`HisG5-QS@cA!k;!=GrbU=Sl7?b-2A_X=&PacD
zcmfr|$~azVhGit#%Ea!E9by2xKj-Oj#3&MyZ6GX$tY_v+<=iRbmFoF1vBi0LB6!}=
z^kua6wfLHfe)ycm@JT+@RdnvyF1kM_PNkClkhByg5%HL_01Q@Leeloep)_v(2O3Ou
z6)et4czxT-n<@9I+NcF#t@7v(RHjIPQRlSXim#&MAXIb*5%-NKW%zFUe$=mCwWrm>
zTnoVmZ}x<><fpK06l~7Km7_1FfdWX>G%jwoh9YgpwrG01$AADyD0(su@j#&}$M5yg
z_I|h@>fnlPoiNhb+v9?2zv;|;CJ$`;kd{;;|CmLB=H2m|^m7P}2#Ic?PRnzIyqKPc
zw0CQdw1R$ub}XZE)v(`NTR8_}E!0|BX1!Hbzg&{%p0o{akN~!>f!wP?pJs(3k(ixy
zPHbWZIgQt&*5b4ZI+euazG7=uB!RRp3VqWA@*OZ<mi8qvDm$aCV}BDV_KB(VLiz4r
z*MfQ$P&ttyD=vG#v;O`4u0F7?@y>cLuKtRKMhe&XzaCo8YA+intzqH;X5TQ3J9w^!
zuwwHvN6pXSFbH=xj}?0Gy6FqPj3=I#`usy5q4ludplyAUeLVRg`BScrt}i}a9UlGl
z>FUhMk!RdgK;^|Ae#mZ{m3Gu2egHlI;<eV~%v5Tl3uPJ{spW-uI*&AeL7fw@=RAxy
zpZIizD|?ve&}k&g(-;9>D-+r1<EUC8bU%RwAK|r*$`#H^?lET)0$VAxD|Nd=lWf>G
z88!GF2mHpBf##ha;r!jC4TatsFHNl3fJg@n1@Qbu5TNoC9wYuo`~nfyU&IX$0!^_m
z&~>lZ4incBnAPyOWU04|7X}w$1yyQgI%+{bA?p?HF&)FlA)Jy!&)vQ6OVNDG+)SQe
z99W(Xa2hC~gbj&85TOTguFu?%q|~Tz*SV*GqNRA(0mNNG+;^v(ZtpuFR?dw*+^4#9
zZ})w#$~VV%-TTlwwRezCNlV5Nnh~o<I-f-HJ@Vs3YjYRuL8ED#puAznC8pr(oA|$#
zxByq%LNFMx&0#=+5>HArJ4Z3Gx`<&fq;>Hb2ha5S!w&ng-?i>OV0ViLt>HZsANy}5
zac@VQ9}`9^6AA%N*X>c;f`6iFg>zVutZ0(vIs!y9E~x&0tcimzgaPO29~UYvK-DF&
z0dE#q5O&G*^AlR8>O!XKstqAj5?PSCnQoK~h?niGm<nE+b8_6TK-H3Dh2epRD|77h
zBfOmWyn;W3=e`_Sm0i53q;VeLPmJUM{^^X+{ykQ|tYVT0Zs(r$1}l|nxdUpkbp|K<
zWi2|{x>lTuYa4Qw?pk<?3lRzhzVM$rM=QbSn;4Y1c+XF|lAtSDS`7VhoE4*DeQX$=
zXyYRs@DS`7wc1i@M{%W7U22`vfAd?=F4GA@*k1XIcJDbEPB-8WD3L*FHUG3YlZG@e
z3a22yE!Bxe7$t8TaeE!mnPLZofU>o{LlmhiM3hrjfm-U*LM=J{w(d-H%s#m0yj6`Y
z-GzV&u3&XL9fW6g1+=;s?fT!c^0!ub{w@1ey-Imz%Ia0oZ@>W+-?CkyOWmN_3wM1*
zr@K*ChZy$I7Hh=Xy&*lwIC$>9BQ}?o&?9ZBkF;ila=rWYkv>tUeC&Vr;VjBQczi}<
z!ou}){~o6B2nSUE-sIIpM`$3+k=(o|H&@<4d1U9)hEEktQ`}HKZk+|AXknAib2CfS
z>C)8D(NK{0(;!^B$Z7!S7HCq(W(rz@88EOe!YbVbsCOzSohcA)K>w7vb?rLi7<|Tk
zDR2*k<LDCr0O72`p>8_<1OVv<rDf_OMmW3gR%-YFEXkE%7O)in=M2_}Nx{o?%!5Eg
zoVk))c(*_mcKzIM4gp3G151wRg+0-ZBk$#fCgm+n@x_7)aa{d7UI#Jcgdcx<`S!Bg
zQMZn>;9`N?nb@dWakTq?gATsbU2Xe6_q&yiRjxjItgai|*tjD!r7EC{?(Qp$g9iY6
zEw49W$~7aoat~)W{#aQfVHBPkyugWy7~XCBFy}Vw(6H1~ledtcnN(X<ub^T*ADX-)
zURb<>V{H{{t~_Y9cNi0P@~WbTx}oh%w?wD3!#`TmAE@qzx_x((E+7NLlEbG%!Y>MF
zv$P*Es-Ril<=uewiG>pgT&76^ug0bLWoKvG;7H~!RqejFD&MZKfF0sWX;%-xmpu%o
z#Kl#Ta^&y5x5=)J2C!q)unrLEd6FkkuIOxL4k+{f?~#*Wje8j*1;YPgdqKQWjx+q&
zHsGhR+F$3u_#<_K9g$aHUm;S^|8`vtuv^C&V(Grk5HM!~+DtyCs3-?p_^I463%;XO
z0Vodzt4*^g)TiO>V{h1udrpu(gx9UTpTzN)*yy6Vw-{q=RSR24i9tQsk$D-oF~v?N
zIU53k7dfoK)aD#)i{&i{7K9BpAuwJERG^iffQ<DZ|NQB*tL;<t7*ziB*{}4G<S-L8
zsRryZr=Fsx*H?Ji5gA%RE*k{ZCLrC$h&q$bC`ekYt*wq>mE*(kdjPb|jvR?FXJ$n&
z^8cX6S37qd2c@m!ptPy}60BQK<F=_ML=SY;lcLvqeeH;ki~3Q71JZ$i9jep?M4bh<
zP%p+8DeSA<fhl~V4ZR<=3h-wgxp(aY^A_DzUwboJeocTHtsV=CR0xwjSZRd=?bkHn
zOz;hkm|}3BHCf{ez5JX5*8XXe0k|2wdz>Q`c`5snc+^UuvG3{hBHLKNw1gzU2s5l@
zO+uGRz+s<=J~FA#`)zQ!gZ3R_k?w_if)`bby;pmQK*O(Y0Dn3u$%(3q%A*kMO?%ha
zH#;W4B#Y_E)2Nw4IfT#|MF+$!HFJM<_JM0f&bgFL(20pG!%r1IWls?w)e2kdlZ{_F
zeFb=HwHbb2VG|NYKPNVc-z>*G1?)?Fhg|OW>ih7awaF0F3~VeDKM6t?jQ%>&NWFSH
zIe}znK~e=|zNi;(Vb3;~*5aZa<-4tpb7aj}7QL{x7MiT9G#d>ESsLDbZr&^Bv}7~7
zTf@1ChrV|wac7$!9(w6L{PGVBxRrbLfHvK?uObN;g!!c!)z2}9lr4zfrEv=(C5ZIx
z4+r5(EkQ74h;-V$2f_c@{X0XhQfMT0X~sWL`PbcFy@i4mJiPU9Ng4pWf-YhHN_nB?
z*|;r$CL9CqeYw8+uzhp!$I-dR*N*w|`r5X0Rfw06j%k+Gutb^r{7LL;w6)bV0ji5i
z&i?K&gNoN060f^K99m(wa57whDCvA#94K0d-Cqh7eR?BXbSpPbJGAW4kC$<bW#X`X
zEruI9cr?vYR<9B3fD$4B<P))-FrG{^mF}!eFNEZB$`N)G;c8~SzT4Y-4;RVb_V#{{
zX^A0T8l5iW31~TNtx4b>FZq<7XcS(?t`zKV&Wa8LJ?%zeYMeu@do@#SAU_Ii%C)2*
z+8B0_>t@`NoVz9s4~<Aaopgt-&|_TXl||FsSw5v!*IRRSkQNNloSFe$O<WA>tp_{R
zAI6*r^fyi9Ja~Jo7nRT!6z@oX10*G9HnWZB%mj|72Yy=&X<f<FLql>vVlaekmzzwD
z!FFM{q*UEvz!pCDS)LFLo4zTVxZJzt*MMO?e~o-5T`>gecY3Gg;R`AP2exDuWUZ_w
zUtltz3^-tCdy@kQI2gDYDMTjS!*R+S0x^M92iPiWPOsLDR;yWdfi?7E!%bM3^Bqi9
zcV~t(sf_HnfCU=7_!3M)?*%KlE*^o>1ChC%;|`l^YN=L*FUg#dCZufIusOxd1+`oU
z#?#zD8b|GdQM8vILvbOm7t?mJ=nzGv{WmMl&CZe$8&)A-_6yZCn}RcS3viB=j&M2a
zT4ZJEf7z@p**&CBpQv4kp0IXMhoui*P)~Gli!+)JygxN%e`;3G82bBE-QnIpdB&#q
zL3n1A$fpPvf@vVO6oFP)=(jPJB%+Rp{Z7GlN(JAQ9Q%@?nS0dCeXyEpk3M;^8&Keo
z5c@q1CwjXK{1?t16)PE;uxV+hEG(U$HqqCSX)a7%i{2a~-_Q4TJ;JxXU9Ql=nDe;b
zO=x5R*B*DELU#}eExVQ=<B<5nuU67td5{|y;%v|r=qrFeMy$*1KhRV@Q*|{4+^PQT
zrx7hZKnN-}iN^hmL#mcq*NFit$1<^IaB0{|#ArZUK~qX3z)40VedK*Sx&ddB=q-&n
zm(%Nu^Go*}oL`AM)c0^YI?fGA45K-v3*l2x!Gx+uXY9~)8mMQ#9#reJ>QDSS_l%CD
zhjTRtwmV(!`*jF$b?AO?sf-xMIzpyGx}s=WC?qbs_`}02l*xG<VAHE(H>0QBBr-rj
zH8ntWesGuU6nP(jS{KjUlgI~edtEhWg-q4_%zacB*m@Zgb&B|9HAX19M#)T;_fVDC
zJ&6N+?b>zVLLDG1M>-HvNL<o$%XN?9s#@zw9Ql#NLj58CVkBV?)N<kg8*Dm^86<pX
zGCaAyFxUy<=Yo0k5R3)m=N<C-1-oeFIu<lkj(os6I#`cYFR0Q_=#{*noM`aqk^?*+
zFE|Y6DQa7$Lrnw@Cn;)JEoETTo}Nxe5cV9@|HYcgkGA{*AMfDL7J^5hGAV*~7%+VQ
zho7*|xM6)_MKcQcXRP8SHi=mwPY5p+usrD>IP($2%Kz&5PB1%q&|236$(fhr9RbtN
z3Dfx(%)W;~v9ga%9`oo5(ZjZ1fV8{Z`O-K$rmvw#F|YYyMVxmy@*FJtE$F-)w-0z0
z8^bn{Fy7~2eH?VAy?DH16J4u>U7ehMjx5;lI#rah8l}tb6_Nv*W>#O^PTQOzD)Lxn
z`aAv}>k4!s8xspn|2ZWs0)qMl(%fE~xKU@_>T@Q@H>xn1H+9mT=CJi#$O{HWRC*^0
z&+UC$2i|n>I2g_b9s*|cV;G!Uu>Zl~@o=&003<-$zfw$sEu9YaqZpc9Y7!r#Pe$hE
z>c95>71H*pQARq7$QfR{)%xkHtzKXEUPU|d3K**$&=hVQh(~7S9(5uAq!}Q8OQk6>
zW%E*Lz7sbQ7w(YU^E{+Ec&TkMU}d6#BK=xWnMQLNP8$*(u(Q|OaK!#cPMh-+JYuBc
zin<^G49Cp&Jz3*my^Z7YDDwXD%6@A{r)e*jgB+6Pw|@h%ZB&f(!U-*4@<shkSv@OJ
zNo~KICsza&{_C)Ic6LxZ{DW58%EH<4%A)}Ogaztw4%853p9RR=rtZwgg*Yo}Jct;h
zzC)5UK2cZF|M>l-=EQ<D2RgJKBcX_r4T~EXVDhYj(#{<w>h*O4{fIn64m}dY=GD0+
zk6~U!eG>8Z-@W^d=CNs|`i^F@IjH1%rY2q33%&LOI|cm!M4D)1lVOi%KfM)(1nlmd
z(@geyMixCb93Nh#Qh)`<Ewnb7Ip-e__`!HtVdPUT^K_*$kQ(PJB9+c3Jkhx3E+-I8
zv<Y!0eodHOSn?*J(X6t-kPli`hYUG>@BM%cu(c@hGpKplW;`gBPW*vzR;7{@{H&0(
zGFOqoa;M@5b~{nPIL5wpVTp{hZ{Wb1+KgbWf$Q`@P0l{0@7Rc!EDsj{YaLz~gMH;n
z$JOoMJjDCPe_q*9WOjTg2POr`gL6M8MTuQmk2J6CK_A~fr#!~WE29Nf&V)G1+_Ra)
z+-4A_f|hd8w&@@lWQmw;&e4<T<exC-3$qpn3Fo%P;?v%PIy+77L@0@CLN{_$X9^AJ
zgVDR{pi<-d7e~yxE$C^vy-Q{l`>K6u`W`FYpco^$EXT`YHkKv`P0_6^4~hg*NwlYG
za791H&sk&yXjSLHesEc{_h%JoP$1>_v}IW?5H8d@<YL30I~RzFDR+Y)KyuS5{6Lx0
zJonoUj>1e$sRljYJxRBbgrI72!;EAkE#px25!arVi369Dbqi{xAAq<n9&kMO?5*bp
zCMp^WY*H%izqbv^QvAZXy~T>`X>Y`>&g*N<=8MDNofi3rLKseMB@9O<%aMfK82s1z
z-IxyVIboOipmohlWAj;cyt4XB_bDnhC|{Ddi*1?a$!vo=rXR=i_SCnTo;uKz{CwUZ
zMp?b2^HJDVj*D$rQ@@B)Vcn#qaSc5VfP-}nkm?`D!|BLBc9*^N3p&L+oUpR1DQa_e
zq-d*T3*jZLu+7M*QG3C8<+P7jH+MG7eFD`ZgEm~Houm24v25?|0In!dUPt)GyiUBf
zPNlPc$IQ1sR`#rJkWONTwP`-;D;#%0(Vg?$tn$Whk>y@Om`+VxmL!4TY_cc#sI+kb
zPFm7C*fUQwg(lH6n_9OXRTlXZ8eVuRYVE{%lo{<rrAHNea3b2PoI5%!{z-}28gCS8
z_@otW^j$M&rc*ok$lFD7Wv^6v`W+d?{LE;35N9>;i>+8M#r9qC!aYrLaB4==wBX?K
z<w}uN#Gfx@YP}G>U%?x9h?u1E%$tDX7(i%u#nbmjkMBuaX$x5oii7Jn-+Gm$whWSa
zuDf^U$64#=iBy5q?WKe5Y38Z(PmP14tG_;6Ts3Mp*WpY3=<uXbJNxVU=rZ(nJoWMF
z;?t!ZDNkM2Zf=gQ&acC}m;S?mdL8a7Dts8nNw}x_@tjM)!O(O$Cb`2y>3Z5mX^?jK
z+%^~W$<8%=A%9aFJzau4yWH|S+wwcx^0(>UUi`0h?fd4Ec}kE!#y;g<9e%pHIyyi6
z`q%Z>2Ew%#s$RP}x;bea<%7|<IKMd#z0-IwjmOU<={Cn)XvE{ByIC8JA9_@N-aMTS
zQu^sVZ`P(AqWzoK#IK~F$D0?)WQhOgB-ZhXdYW*-bCZ!@A75PE<WIws@DM!0JOJ&Z
zd9;mI(IOfvv{SEr4ZZ8>phfpIhWzh__;CEcO<Myg-E^m8E_@h2;NLZ|$zv+4_Q*7c
zw$Kn7!R@#cw-xTFH7*-8F}zxXX3Ay5yI05zJne^GqtV!Gsm<rjZrJaKS+*HdjjT)j
zutyhnTf5J43FkN3v^D&Hb8oudwvnxk{^wOlXtfNOB}#IV9stAK9^@g3?R4x+O)>c}
zl59>A2g$a`bM0rns|HkoknHUJ?em;;TLcP)Ld~_tcRj<I;GNNbV(+zn+Y^)dY#<+5
ziSi>RS*3F6Dv>{+Ga^b&=vfuvoK-3%ZN<f8y+|fclT}mDBaS8B^@zHs+RtfEBgWbe
zHuPI6t%r=t{@C(RwJeF)W{9nF#xm%t6)#Yp<i~bo^`9Iws!xfuO*=Ty3=BMA)Fr1Q
zz&XUi^uw44oEI!emiUyFu7b_xvg}o_^%Xu-Wk}&#ZXJ8<a%6lORR}LiZ!6L^x9f$_
z84dA=;3snIu{{N{pl(%>-IkSFQC_D(Sf$J2mj%{fJj;lyme(?!L&Y?FmOW~RRn@o_
z`?0=toK;Qr(KLNy%k~pvV8ZbYE3(#DC>TgR6Drsem?f1NMd}2>Q4@eArrk8OY&dMj
z<Cn}neJn)8zjWHc<}W})JUF$d&c9RV1yd+jq%%pDblj^-(3ESRTCW}`TN-8a3a6%T
zAOqw0^u(peslgwJc!tU#xGFnya64+-G^P#&f(?_$Y@#E{=f|KXFIK~gMft&#QJSNl
z8w!O3r*GZGyu?%jq&ag2jjW~YN*%sUbt!5FiBuc+VzP8;NZMnQhvyF+G`d(sY5Fa-
z>k+j51hVaRBHe&>&Lmy_M47X8^`;(#)2f=>S>KOlh~!h%HCORn;lcD5_O^ip)Iu+p
z@#G2>r};F1iL}%-ivb{Fd9vm~0C`xK1E>ySnVbNzgOjtiPxsV|0#3;#aqsN`baZl{
z^veTkK^bPWa@&-Zq2y?Q1}c7rY5?&C+M|4bVC{;DvzOdGVX6R(Ibv?B7Hl@EHqz`M
zlHHM8n}=V>W)a<F!e!+!bcpTgOT;P-;?FSTli$u`YYdf={`mLvV>T}i{qy6_{ot6z
zNQJf16-J(3eJNYLMhb$nQ1)Sk#^j`GbP-57%$<20=YM+IW)0J}_@7SOjHhkJ)3&Hh
z+qCUhuXYn_5{Jxd-Z_130Y7gyDsWiWcP33DL-Vwp*gU^xx9mNcvH)ZbuQCF3HlzQ=
zMU`?J@}OJBc}R;uFA};>+ev$XC1Tb{i8WHz)<{{ck@EkC<86<zH6BmwV`P_EWv`30
zZ&N~<6J^pi5!6xA-FIam2FM)}3H|0S4JT+r^_drz$Pxm}n?gn{ApS@wc&{hP67VE+
zdkvIKOo(M@Or6nX#5$Ct54Q(8*p+PZe0)uGMiW!`W1_+{sJa*_C)-W>c&r~uio@hH
z$>K+8R&N?0Gg=9;`&hqFHBrA&rNp%imHFN6@&rqrXNAH-7Nt&WG!4%xU5pv2p{<oG
z;<1Wh*#eOHfdt)SIaJOMWL{w&(O%ELz9oW^go7-ou=8S}+8{JiLy>jRnk3JN=JBfl
zzA|v$J88;;kj8Q;K-gauDHICmSWMZJ+6s6lJ)LsZoJ;mnHRH(Y`YC+l?ZK)jp4nW+
zfs7E7*^a$7t7t<yne97JX%7Ng$5SH0K>JMTBvOF|y9a6bYbKo&FR@Y0AgoHVNJ_P)
z{-wZ%kwORT?vMTqdV+@TR$v!0fKjC!-At3wWHk@M;}M;EfHll$yBxcg+}suRl#|va
ztHtEI;^X0Ai*BaHD&d<4`!FpVj<TV;PS>l|d{)Uw3%F!-R*09k3L-C2F&=pLW<fKq
zIFQjvAF%Z}pbZRewZ*H@@rCpURDlo$K&$P@h?|YRXOH(##Y=qa4{eLxcR#;)ECY_@
zQuNvP*gLI~gaW3Nl}!e}o5N1h_NIO8sH(&2YqEJVs`_a8OiJ)+dxDa+$PpoSe`n-i
zyGj%X&?7jXddm;2xxB9@D0E>)2qp$v%ii<K^5}2>`1--gKaSjDJO(c3;5v43Gep)v
ziPn079!nxI(Se!U0Ws}h=`Fbw8$Hw{A88d?RGWh+t4Rx~bTwDg2-rt=EpCQ`hqe<@
zvI1@XVEWZ+nTmv3cKzyOxxKd(0^ksIx*(>Izho3>rYYFoB&)32=rSJ-3J$Tu4|bwL
zOGe}uaIri#U_t1vs!YIM@M<9v>5f_`niI0wefDS^Yw`#&RE9e0Ye^5QeHD5HV(<g5
z?p>Xq+MS<&QLm=XK3RUQcUy=#nA_c(I9oS$D$Okbt_-O4RwHDj33E$pRx&Zt%*S*L
zVzvj3RxK~>5b#2}a#|seJ{#_6mkPMm5hk<Fy_`L=?a)AMcFLzSC1v9-%)qB~_#}e@
zYB827@RLe2rk@90kKYFDqe*PTF{G{D39Vm=t@PvfDuh5iyMEmELfq3vR|HM2A6Dpk
zc9UGrCk0y{73}hcy=pQaY&I_<=>`Dj*LZ)wkd%5Aq)RKSl5T5f6|jj{gC!K~T%|rP
zhpfOdSg$;R?D*t-(!+96>Qhrh6i$uv%?;HvEMUa~H4X<WETF_H=X8sRuDHc7Fx9x9
z3vJQ@aXihEaEC&t9Q?#<@|sOyg(54OI4(=R>$Y@RNtL`m{-6~^WAUO`t%}7Te|XY!
z*`&YQNuSK;<MqXEewn_TpM`!ZK@lT4#}O>Da*}(ZG2FtUs-nVE;JL6`tl?A9RMgB<
zavs=>V}<bYujSHfN9Sbh8alOQWKyEAwUH&xYiL_=P~sP1w1Zk<`Fv_hqK`>WhFTsv
zyE#vTKUV4r*SLAf%rbX7NUV^rQZf-G#(~xASi;_d9a&GS&_3+JTEsNc6=GYigK(iR
z;PmA>wiT@|j&%t$rFgL2eb0JBR~Y#%PuAC#o33XK6%cqV`CwMr&`FA&=OU3Pmr_cE
z-%S1H>KFUGBBUC&%Y}S#OH>s#hO5zS4a5J?IiV70JLUVSy3f@8Ox@?|{!-l+@_uK5
zl~uePMs42#PVCZxjf{1L0i7I1!<YysXw@Sb1jIbp&3r|f$CNoynX}Jjo>JyaWzIjB
zc}AJ@O8hU6Im*+$3WxC}J%mO5(Bftm<t>c0Wgwa|2ewEUDZDbGE49_7_B<&*TokkA
z2u6nmEG&uc@2<*lUDD)*2>^#;(zPwsTurU%E~w)z@93nHEiZyH{@bHrmnPN#X4<U*
zEVc&-IXYms+uqlGUO^2A2#jMH<@3EV=GP0v1-t79<w#JEG`^xUy^LgNmEz&h3I-V&
zW3~ybYv7hSX~*7jFWxJbbAKuJ$|8u)XA_k$(FqEIX&mQtI@QA!@%qTLBa}}^&C(0+
z`97m7*Jh%3ubs5-c>%QH%ivznrp{|~l(<|ih@gl)eA{am@WiC=6E6xv8Z`y|wim|?
zmKyA-cCBafJjkh{%b4FomFbAYD=O16@@R(w^Y>g=o~kLl3H_tb(chBz{0Vd;nrlI1
z(20bUO5#Pyjf6ESQ3SLB5l5BFlZNr}6@q`W(C;8oHXUG}%?yW#r?gOh>`nI-ZTiY&
z3a$d$dMXI7v@^Y>pLkUfbnu>KA6l0%D~U&~2`}9B(nRAVQR1|d6<v*%;0fQ+POUNi
zVMZdaM0I>fkY~Q6RMlUJx@bCSRk-d7^Yw)BSJg7h9_CS|F?tL3--U^S`T`vu5L92R
zSIcf`E@6wtgk`02D%e;?M@MZq3<nO3lQK`!K>lf$Lpp?>inmBN+D?t9O$Mh)(Q0@c
zboWogrg#u_K~WVMBWLpmv;%^5a}xt9SG5lyXA&XoltuNn$rYVKw6Q@tP`4>+u#jTb
zazNwCJoPXJ^-kv)=s3rvdAMZ(l?m%NhTYqYM(VPHAV$o?8I9DqH=~36&W~4yU<?8Q
zG~c2c@Uj~42{k0^D>y!Y&C?qL+OWnrae@Fpu#%z5PJ(U9;)h(uAg$Hg5so<#j?6-h
z8>?!39s$T=FMD23w0c_F602EIFAarr)<`c`&m@a%k<0+cB~}((^VX^9xT<N>vIUxP
z&7(zyXhx?xKH*xJuMdd-MnebG&|Ql&`7kOz)5L<|Dazd@PHThlKN*U<M*;ooeEKf;
zBB;R~n?0JMFs-8_0zZ?kwW+qMfHqQLXGoHQ>t*q3))JR_Y1Zp(`ZWN6cgwKYMmv>&
zRJE4055g&{r|#B2Osg<23SY^6V<<AUwZyh@Mz)pSNjF61ggJ;EQ6r&XmxW+WcVsx(
z?$EKhFqAA?*G8`GZ(g_ky^eE^vC9}1($ag-O~N!<$B%p0{b)^%BBtI|kscn_l1>AT
zkhqWICAXx{4+3^|?XJR0v1ZyKCt?iv(mrmI)L%2sCC46?^0C(1oIu_6PH#@b4_$vv
zd+VAC*?GFI!Uu(uAY7}CN93v9aX}c4>wdg8Lo%bv5HlkCM|Y?fny1XN)KE}o{tNIY
z4hR0--FB6C#%-^b;z8yt(9{;SVUZ?||I+t&c~AX!zbGv+cRzNZ6mk{er4=%ksH#E7
zM;U<7TwtE4y^bkD1+*Bq_D|JV^m2w%1j>gER$!F4Qo?tmTyjsgj)X}xf7<%u)~1l?
z(LP%*L2L6a8y5L`Qsj`fD2G25bl0DA8+K%#jJm=o!t&Lq>BZB?Jddvomrp!CEfsTA
zmk$R~yIsO?0U!Y&IZ}C*DUXysi^s4xcXMONO6-~ns~UvT=T`Z$R9SR}FxQr(I;BFv
zG>>SNz`q56tAS0>sgY3jxpHM|SSkJtEm1xw?6g4VK+&}fEMAd{TV=27WROXLvbF|}
z#HA<T)}mbZa~mEL2Es1#qhVB0(LrR-A~O_CiHz&k^gxoky<BkVeb^N{*<`QdWVVy5
z2-~{nw!-61_nNTm_|?kV84J-X0j@v!=ru=2tKMi(CXam?Y|lR7Yfn%4DWsgy!0u7)
z6>nG4o&dFWv(I20+c`8)qMld2cbR?65FUX@%CKdg$~g*`TVZY;^GO~@xyr2hVe$&+
zJJKJ4C=uw(HybRLAdlJ98od+&4M^FLG`9ralDP(7<DjT8zj5Yd5H=UUYf35XZ!7&&
zl#MS3mTnp!#F?4UpY2x2hJE=+xc#1}e*LmCWD}C;t|mN)ZfU|+$PNnaO<1nN#`5%*
z**baDoI$Ut90alU4R`in!}|!9nbLlm+xw}Ko91Re<*TpcMp|e$0p3w*9}U9H+7b0G
zs6Z<n+av=FDR-B&n{}#*9A+KU_Z7;zS^nermW>J?rgDQv6ktGv`DRuWX4OuJ$OTKH
z_Z2wi<qGm3uk8fZON@>z8nzrfViqUVnWnW0R+P4EZDF;w(x~XM;~L1fXg-*t_Rt&5
zA-t;4frc<*SS%-32%D_TI(cf@8n2Zx_QB`5Qzg?TYm?MSn5u4WbJJ>2EOyQeOEi<j
zPlGcJe+L=VF}BP2t68u+>`wWBvWcg3L3_(>g$OCI0oX#f*AI8$nGn6R-HwRat4BP6
z^Y3l|Bu05H`f(zTjxwl1bpHVET733pr`G_|Abn!(Vj9}2JI*pfzZC$m<sB$!i#m~7
zq3^Lvu(Xz-r_UEkt8-nX<B|3lb{{iVsC1XP?Y*a8@U*#XB4_tANLjkOqnI^?o1o6+
z*w8!28e?pU)4z58_BVEV-+eLBe(0cK0V=S*fC)ZPm4?ADZA$&yO0IbdMKuVgiWv!n
z1kDqAyI~DB%NX9T+(~Kp{R)&Ljcw)L?P#A(ZnwrK*KjG79=B+S$E;_|D39Cip|OZ&
z`v^t2Ndp~C#WAl3urGCQg-kbQx{Knfmc$xExM({G?~~EQ>LBhwOXY8cc`?v+2L}^{
zW3aUF+;tke{9EbuIKQs@#8@dwO@q~T2_@u=7TLfP)uX8DmUKrLgh=%e8oCwfW&I-}
zQ=|*R?lXh>)$~y5NT9e>1K`Mkf*VUOt<L9YZ4k0>ysfn+(wO6cvBU<G$1S%bD3b=F
z;m}_O$;etDOKp*K$v83-n~1d(mx#JXJ8X@Jw)k0WfX=|4Y^5)03TZPBe$w?NKSArq
zniTR<6NLu{3|8?@hQZiPvk#arpSoW*PyfsutSv07f;<LdC*A5;wqy~qFLv^QHPdS|
zjq=*MOYOQxsok`0%XgmEdLkFj(>M=8=k>VuI6^d?bYE7MC8~2LfO1yxW<(+L7}SCX
zXtHOZMCL_Zq!bwHr}jYdDH4H9IR@0mS`6cxau%inUNqrM&^8(tkoSdj#$Sf}`}sDK
zdo_!Sp-<?Pv-m|2m2|yR9HY2bh<C%LqvRctO7L8j#cp+@**W^Ibuq*yH|hEl=ocVk
zEg-)OQx38>kQ{oh{J|6BAYbgHlu&cX87+ov`v$o?tI!>t%Q$XP`rsBzvoSaTS%*ff
z`7w;Rwn~{}3bwgrB@9o%+c|>o60FxrpOI5!h!Vt~0maiTLdXI+kYG|%<tjCiDb{|>
zC8n}OXfC56D~5<Ccbb<45=f9m43p+|Nl<gMla|&lsz<VlEPnfNCg6vpY#!57g~r)G
zW5^k1o9P0-Fr46kIj{ztvO~gDtPEHKk*NsPK;5GSSYjnLaz3RClWj#bgGl3(D1DeP
zI>0b4sVgA(!Vhifkh>oq4(O*f5cy^^1Y{<nuA><A+CV`ppdy!CkxQ7ktW*`EL`7do
zCGcjkYstZYVr~6RRfANyTRT;_tp?cL%^iPM!md1$L4~+1&ffHS90Ny3mP>YD#q&dp
z3T{y$n_^54x0xGDzT%?U(gvslrw`K#ci;r(FD&UK_N@n`as+e4M5Ats8fO1YSaa*5
z>t9rhJ6DT)2vrKBlkdz6+7smJHri6lQS~HBDqQ^pL(U;i=#OeO<%CV+-Vl{6f>%mT
zTYv|I)=_6y*fYbp;NTaMPOTf!A-vN>(9{%bu^_7ETXBUBI1oQZV{G^Qk{3inJ{^i|
zTp1Qi=_KNM9Ue-UTP8CUk)a9iJP?<No}_l;e15aWhKN>tD~ZB46#^&-9E38|##TSd
z*p70s`#)L%<LD7gVkb*Y1$_h+^bt@iyger&eTh1J8h>l;^E}&D@l=0t1z%t#@hakJ
zZ`H>j`4B5hWJGx2`LIyOIRoGY8nWWDJ5GG+wjk8#FO`xVAz^kBCx?fl<(uRU>mKFR
zBnW~vCRj$3R~8?0(H~GW8=Hg!dQbv=9~9iIJ0K$L+dzEt2xbun@z+NSan(EMZ#FF-
zzc|A<K?PBpE(hT&RQJP0(DmrB-1FM<mZ9ch_>OA}Iwa&2gqHp}nb6nglN=WlA`A^y
z4gv@hUCd+1m@IpV4zT+iBk-J2koHx-8|q@S`F3B*HxCcLbtx0MO-9vo{j!}W3cf{}
zq>Hwai2gR7@&fbMn~k1B7^20|k)rr3+Fr_o+1`|<G%TmDf=HEPzs~d0eJ#3h=<kai
z`ui!`{glrUMIG6T482ijd$i@P&4?*V(zf~5v{ul-H=RVSk(49C7sHa|VP|L}U4yA3
z{dE}=?B~))yP^lxX!uDJ{p^fQ;!ut|?{Vrb4_WyNR%t3Ql$+R0(mOTSO{+?>5}TRW
zhB~Q^RypJ*sDn^}TT<7C1hJpVgcqu$`7E~14f~o2#|C-XiyhX(Vn-BX(AsU=e~(MA
zG3Yi)EU8?Y)M#b1_5_r@qSXVHky~HOZPrt@(1=Rd<wf5ZS;^9I;CQ2UG(HPLd5W8Z
zfCzqh5C8-evii#I!;#ltC@^Z|;c;@M`Lwc)UdNLeyg*dL?3)1gAPCtOPAZnF)>R^C
zyZV_5f}&jJpgt8@#2s5r7pE?jO|);^b?|v9@oGt4`tWdVLM7od;$VktwSfJtxkQ9P
zlvSLyogQb*2URhcDzXWNq500XA){b5B*!O#Xi9Ill>h`*4_W}CtT_2IyM()}LuPq^
zOYmlp8i)-jxArNKKhVYTE?i7UtH!<{!X{TvyhP0s#YQ9)&cYC(cH#ZS95^wO%hmh>
z6lgL?Tz&x7NBbv48#<0!_VeM66Ar&nPh?}2N&G(Xd&7QZ9VAWzgct{zl*dJFeCVXl
zh!D%x3-p_mHWblV(eJZLcQbxC<4AC@aqW%!d~V^wj{P{%Q*(;>JXIuhuJNzOToWR@
zXG9_)vXe2UcE8VM4I_B`xu<gx)T_$Nqq2poj=H<zvB}lmI86NL_JJtAd>|t0kgiWz
zBcw1S`hZ8RsEr!&6h!0Z5kBlRJBwsgId>#`{b;BLZc+{0@Zm&<(#jD>OAg%78Mu~-
zzB$Iojq4*f<l4~4P2|Y!`|kI3!(g!CP-vN<z_LaPEwd;zS)@y$A(ES(1I6t_Unq^>
zQpo}VTXt~3D8K(&7wZD6^n%l>o!mTF%gkou)DLvwOIw)#Iyb_6=|c-t>t%OSt}c`h
z?PgU>Hozqf!ef!BTy{1*+oY3u8iX4LcpgoYL2-T@sF+|0Jdxiev(akwiMNVhh9fGI
zy86#JvyG+*&-|HUYGGVj7KEqcM!ri?G+F)SuvrsjRKi6zldiF<6FqP)<z`c=5K91)
z554tlnUqE7wM!dx=~{avA((S1y_&R&BQk-Y7>e?tg}HP8{(aA&&wwny&XPsWD7e%+
z(DqaqyXWWk>HnVaI`oc{OliH}!{bi(FzVm0e84P#K<{^s+I`?LS29X1q@a2(<&(#m
zBdcapNe_8;81^);kc5E$&N7mP4FX^J&T$Vl$8~yRw0iHJp8fIk?VI;!zrKGLkCc2V
z?#WK2jV9JsHP9Qf>)>KiO_7#8)fyE~sbh$&r=3;U6YA9Q&U|YqD~Y-BR&#DsWZ6~>
zmPwjLKbkp{bl=0mJ47&ghHXiut9GLw<c<->!NGcVy+|$;{Hu%;zq<;EPi5@x)RM%r
zO(oE%O_KI|Xei*;j{!W!F2Z<o{HZc5PJCO9l$3tEZPs&BE=ii1t!>0XMTv4<%1wk)
zB?t=3G3;dR_6E0RNRXmoZ<KJv`F_kOLVW-9-8=jCryrfC-#QQNIPyq0Z|F%v)HOBq
zadUj*;chh4E<{)%pBd8W%UX^q;<v}~sw=-P6JHkSSUbCrHs0Mg5}DL4lVkQ+o|l*v
zn2%dgfePEE(-Oo+eHeli>%)~&L-q4c``~cb%c}Mft6JCw8v|P{(lk*xavuCSYke<!
zbbt-La1db`(H#PtnW8u@D>OXqC;^JYM*v1BCvH{{FjSDcfut|tVUaYxm{>2K+Ao^U
zu)2G;EQmOmc*3b=v{lVgv(dP|`Gvh7n>oJ~YNa*?wRJkQo7~cq2z=)d47QuP#?jt&
zO>f*{Y45sKyKl7j%dF5kF3(Y(NUz?*!+$(VovF#lCF7;1d9h#o5q+kWcSg${r+FLS
z78dHf=4b~{SCm#wXSp$`8+xL5y-Z(4DYJIE6zAPWSwKppwJGL530s(=*^jLlO%?_X
z0}YvpuB^}jqhM^=iQKOR9x=9{7S^|fxZg(FT}geD(Hp94Y}lszVL^S^poGdeW>=K=
zexr`(V*W^$e|YUI=r<8z(r$XI^3$jOSjlhQ{z~b*!rAZqgmeSjZY@n~e`^l=y|=d-
z1>F|)LpSth3xJ8l_m7iVzCch&|2%I8$MW!f;=}zrxf;<loiBhk5FoVR;_(37I)`o!
z5b&GWvg0T74@Gf2l87pIy@tr}j1EKJ9?-#a{JZ~p{%Iqvg*MY=;CEvNe&a~!B}cD7
z1Tl_cv0Qze6mZEr6;o_5tW_~0&lyCXtYsO~Zp%%W1z^<2Fj_?5FoV2!ic|Kd3)+aE
zCP21o4=O-FwQWfsaPJqc*xQRFqvHXQ5NL9GvbG50LdzW^n9P<VbS`JuYzA%by_*Jz
zAY@In2~?Hyv6B=;`^18c4-co%oW=k0C(4qlDlibOsrA6TZ(Im(h7y7#-1qlWjYqQC
zRM$+AzJp$Dv-$cFeXk%IAX#!85oa6a824}m@gykA>FJ|5)n}?4fHN7e+)!opNH6*5
z3PDjJ4D#jxy}&4?1_dALECElQUlJljr~>(XA+f;1fv7rm8IFbNyJa{PYQl!OvvL1x
zXDO^yyzZxnc!d?g5sf4^x4k54P8jg6zoD&SzDg!PxZ#W1ZFQn2CWa5(p!D@_7{y4&
zBBuE#ePNsY$KZzfbGi+}L5vFqcVy*H<+2C@t`Myo8M`ZO2;n%Om8PVTZn)y6W*i-D
z8%!Tlj@X3&ec*DfujAG=bOcFOsxxYeee6O8rYWjWZBA^q%7)jrg>0@|rEJaZ;r;P$
z2O-OIN5kaY7VYQ;&=uNlY{%sRW?A$BHHVi^K5_tepkVk;KzTJ0Byft;Im)}A*ci1A
zlAs>Po?{c&1L$U5-)2bt-#6#y%fM^5m>F(+KHXB%W^)h_2`{%>AlMDGR6B%FG<R?^
z&9ki&kx-xufS)(n?SM+e)kA|3NQ)|eBrj)!^YhTtq2CSmK)Y?6eUlCi<KpAHV!}M&
z<H^MLdR}|b8}{4Y6rc1M12OhO?|$qB?R(xm;?M7S{d-bXUb8oWl?{!@_i9kXT~a5L
z@J(B>Y{~{&jYH&B_*)Ec7r+)uOX%rkm=@EvNaU1bVwxxm_h0DooB3`eq9t3U+7tEN
z7f)0ZBB06Mv*k|Soggcvj2rOE2W%{z784wqbi%%nGjm!+37EzH)Qu7Vw7V)wK(eca
zfy{Ac43x{th@N_LR;^*dHsV?dqKq>Jy-Omsl|k~WyuY2g!2h(bIT_+fH0VwG@k~$8
z%dMP#H!#-yEcU-C2WQKm>koQPY9sQ$si~V)B(B+l^E7ZU{~d#22Hw6&v2*{501l5=
z#L%ScRiWVQBtFKk3VQCgESgcqeJC@Fmc|FC1QRW(x~%Z0Lm*Fkz#bJq9mo6hBP3{P
z_^X2H?&^!`#oy1n)tku@c^TML{#g0`;(UNb@xK~`a{+^D)RBIK1`7`**7&bYSmRY9
za<!{lORmWBpqn&?{IJV?9GZA}sp$jQBIM={bAr*=ITcq{dG5k268{HFy7Y;^W^ScN
zv^3|+0?o0oGeKsbD{#-`IPN~9Y*+!EO-)M~6x+|*-g5<rkq28PeH%a`ztHYNyArfk
z1HsU+7$k|1nlAv}DxwodO5n4P^hsbP`Pj>88!F_D#^?A@@-0WV5+CKwWHcqhbMA>x
z>VAG*Ea2wriN`WUnYf5j7B*kx#o`HlX&~>{AhG2OPi!&Xhq6H`tqy3=72jC`+ElW<
z(Jir<^y_XkrgT1^6bU7|!I@kaZZ@BgNeUz*OyZ}d^4_n7a5C&|HKvl9bMSqh*6@Aa
z@(Ju6fVNMgeYO?vCh<54U->E!sLO%!WW$rURTmJU-AafnMPMli#`(%@7BYmbb>cVJ
zJyw2CM04!J2(9}95K^?e3HDnG<*leW`MyZ(lSf(LD#;maP}Nx2vNag}QH%FwU_-Oo
zbyH-CPHX|$+f;-z>Ye3$S~PiMR&_#4)vPG>bkGCI{;mw}BdHk<C!T^iq``opqV1HA
zB3b=PrS4aCHAH9uz!dXcxOt(R3Rq=eeIsEURAO?ey!}@a2EB~wqktt9Xn%>&0(cCV
zg_7|T%{c2X8~z9}Ig{Ib>*<Bs^pp<f)(Ga7iX!c}(Pnn0iHh}n#w4W=z#BVCi;jAZ
z)^&6wn%-%@qoTu9a#Mv*lZHbU%-EUf&V;m~Yb)FhP(jU6gBUW8zdjydkS(9{KiQZX
zbWT%^PVTCa^Ktp6UJJ@KHqfdvWuAWWD2-I8>?B=k+lfK^YDN^&X!Q{yX&IG_*5PRR
z9ErtFIm0+@BM2j)vb4B^m<$**QPTPP!GlwXK2<rq0Sqgp8ie~d5)yf+RCmXI?>s;6
z^xHw<A9VvM<q4u0Ez~2Ln6uu4{^8-Q_f`K<(LU{_@kvM@8Z!75&-KA(GY(E37KewY
zk5aBhN_^Y%(T5@j>~k8koa{L<fGb!uN<-s8><<-A*(isk2%_;ovkPV}$++U9nQsD&
zCmj`eNWgp7OfPJGZJBE^U(a&C4KQLOIc`(K+eHx6la2~K2y)x3ss!XTOaNldRqcck
zZgZd_4%f<8=<A`X`lI-=twrHF?dTHL!^YqO`@BCp8V7$}9Uh)Ym=@rjWr3i-X73qG
zJHs*2z2k>NW3{0QXqhjfpvx~PDALT>!y*a>?bti<B4F&Fc*;VW-pSjR91Q-__*BZ9
z6kO+~l36Uf#PrC3PDw|`d?H>$r6Q^mr_x0gOSTGsSDl8bdm7U8KH>R8mq&;(dX&nF
z13A7;D@Rv9iGmchr!*PlCauSFIkNPadD{k%wD2LbINNManodK2QE`aqcG{Pkl#_>)
zw|I1v1qF4l3^#$b^*}~1E#lJ$=7Ue!qru%Co~3tS0!qp;vpz{&+B`+L5)Sl4X<=Hm
z2j101e{0Ej|6}cZEFnN_CHf#lnE~j&XURw3QCyh}{@0I)=J+P0`XAY0Y{rdHBStn%
zUu1&vIc=T45yJr0OcJ+E(Y1$y?_bYntD(N(Y(d-q`Y16q41%L}M&+Egt#zCn|Lx@K
zf1G_|_pg+AS9;&PMwx3hu*4Zn)IJ9)T|({g$4|7^5IovXXt}4ofAqT?VDG2*Pj%%(
zPSAHi8nbh~oUa#4nT0Q-wD-@x)Tx4M_-DVJ_D)awfa|dmPWu7dJt^Q6Jb<K}FCO%R
zqf>eLRi9z~`1)(wflh*>GHR)kzL5!oXejUh#`pSokzIFs_SJoB@AXbP9_@;~zjIb9
zd!nnruA%5tqXn14eEd5d1~*@CgQG58oag4(?}qQqRoHF1Jn!&95_IuD|KA(G*FNe8
z^0Cf_M+e6{OE42GVU_zb_(>S`OvD%lWV8`iLB(hTqs3nj4M(ek7Hjk`>EfTo&q^r@
z%YrV#YXwjlQS0C9=VnG^(&1!(jtrYkbp%U27%}?3A;<PIxvA1#N?Y`q2`xiy9m4dB
z&PSM76|@as%r9U!PaC#E^Am*<-<Guf(kx<Anp#z?FNzHF>-A{1re??|`X*?%OwLd9
zS@E_kDJyD8Z0OJtI!@x}CCoZ$=bv;ZU`BU3j(WxlSoQn8&Ao$ws4UO2s5!oO4=MLN
zM_O1d#gDh}ZlD|4@g#|>o$}|TPLO`O_4UN2k_-v;hFLe5t#r*L@o~zRP&!d07PI(X
zIx3}c>S&eK^Y7S?h@}Z94-w=`g_r@lOQ>&fY1MepyixAL;MrQxuGKaht&$}Kp=JET
zp^|UmZC$pt#?xvp)-WqAmltqi`3x-4fihU2vj<mRSg{orMx<8ZD%^5|0xD2n>cZxi
zbdRgIssWI%brG1WhB9gFJXIO6^;8^Ylu3_ei_^-u<N=Fr>Blla;=Em(4b4m~zK7gG
zYWjqn7*<NazKLn~BupNr-J{cxxZ&(!&R6Wi@;0$1SVEQhj`x`mZrlvyP^tg3xaYM!
z*iKXGG`ZM8x6DAy=K%5iPa^H&5@{DluQ~iO_3)9Kg0R%JB*DPf7AwupAZ&kP;FMtq
znjy$ms+LS{RO_0f&nwEo2@_FGXSjKmeUZ{1iCMV)Tz&@alz8#TZ$9u-qD~~D!{>{Y
zUoSvw9&)0l^M|@?qr5^}g|WA<t$sifSEe?)Rxs}k>`mt-OJ`r{t>K0Pilp0s!A8(~
z*($CssqY^@^-Px}4&v=3ZxD${L-HOwMRpF9@$2*XVoIgz04V78)dIey3*Up@4k1R)
z(uiJ=aq0n`i?^3D4vxOJ5YIXX5RU>NRk?1_?*O0KY=~V9U`kO!p|PMX6ux!z@?x}H
zjb?=e3O=A^Jj&JeXr}HsBh8}eXtk1148zVrlIKrleGx6Igm1`Xk|x>s=MlSw)lBOg
zWM*hgcJnjTCQ8cYQ~K1GmQ%}ZN~tR7*yMZ%jCSrOp)}Ws1FaNbk$MF3t*5U0v{bmj
z0~#i}-z~J-qtq)=3284Y#Emm5?FFTDQC6AaluKO{)A?0Hq1-lE7pp36nL3#c`f483
z1kV_{V)Zjdas;C?(bAA-fqaeU*5_WTy`!h#m%sK7-iqkRY3|=3x{$QWKTzt=Fok07
z7HByHQID|SGBBnVV`L0AAY;fA)q=jIPTq?3>~kg2=)MC^KJmyWT%_KfH690h4vT7$
zhC^{6jSGq}XAg3;^BFHAM~|)s6Ut!fkvDAIgn6hEo~QQuJ8{<^uPR-vFQ**c{-85B
zAEF1<SE$^!w>KLcnKkO&zRp|nyUucMSXI`S&58oQGh5Bq09^dcqO`Nx@4qvjb(&-K
zk+<6ptF9-ilT10j!vsoYQ0D-<X98UCrIJ?c>PINoXn8ihkcOm5XcHq_Ydg<UJNAO+
zNS-jPK?j70<QIyLGC0w(4yaob8FP!H<4GeG8I8xT4L}OE!ERPs%bx8zF2NzVYBiL!
zl(8CURXS?PaUjNu!$9?h`fzM9spf-Alwf_-g2=m|zQ3L?a!-2XXLM@3UyP<iS(V9T
zSunAr(imp+XK*<YJi4y*zPryBuF|ws;wldlqP<t6tAaNK*m@~^5bP0VyDlUsBEx=Y
z6C-U?6a=zg<Q<g4CP=_|2R@Cufpy&FuBKY{M8pl2$a^saKkO_=WPs}Zaq%&qU(dW9
zI}L~r=;70OUPS*ql{Unu-#nz^PXGCcuD|;GLv-fXCy($1kU*6Kt-}8d>J6kGUlpc-
ze7BdOk<(zSCIdUqbE|=ZLleS9O_KweSJT)YjQ}xqoCI4~^y0IkD8Ugqm<g_!T_#5%
zLAmGM!-TLDByNhP%8pJYcb(ZZsIZ=Lx4baCc~BQmWgx&z{NtEWOu+6lqg~}M3=RO%
zs@<E9^k10Q#80nZ%OoX%Y7>>6%M>Yw5-(rMTNdKb{dB5c(0sO7E@jHQf+)3IrYv=)
z$%F&faQgA-*;m_8*5mY_e?P&;`Fp4M$_a`-L1`yk01=}L*poR&X=Z}bNLqxBwtn1(
z?oOEADLeRrC_ArTADz-qp3|R~FX_*8N`IEi&E`b3AOXS+?u>MYm||N8lvX0q9a*T7
z3{3<rIg6cjjML!hm1rRZjNOdnf>n=|9K%Mfs<}JO6S)xsJ0-l@&T@lS7G<ej4IS=~
zdWH^zIa|am?d#4;i9*DZ;V4-CwRpoc7ZT)s{b;b5lWI++fedMu$SIn#R~B?=%Rp$c
z%?jI!C7nr~S#y*&3TF`Q;cClp8Fw94h}S}$%YCCv>0YK%L0?W+I*!szGl~8(hJ;1e
zthLe`*x$~+zQ1g$NVKd3PRnYb+La)1s_X#}!zCB1V7s)v^gK`QZ6EyslrqGz4CtVs
z*2^z1(7-FR|07F-zuW$dHQHzXg8pLsAH@sc<Q~jZ8mOzn_vk%$UtYwRKvwCJOwlz-
zKIodz71!jVUX!FLn5?PEg{sNJ_@Y*m<bzw2i{_eG%WIZb%gevzWQ^ZRisDKU&w)HD
zZ=I@|-;fb9^;_T=Z?;j(7`>%Q{tAaD&7q9X`q!f+OTxQX>;`Y@IIk-&KLWY(hNuKz
z>fZOOU@2-MzJskJ+XvFzkio0qZSOg;0U%T`vH(k{rGU=Un95+%52_rQujgrE`)=Q`
z%2gXsI3bH-^D34XO9ZOGq)9LD6U}fEO%0w;G?i{CL=L3AX+Hq}P0O}`3`fgpjh?;c
zV#d}8mefZnxAr`(KE$OF;Fw(Qv$wo%l@DLtMwIPLm7tPpmL)h>tM_eJ!L$<EtD(Qq
zqKXib3c=zGQ}iwhq}87TZHAg*RM-c2DW?_nbAur(YsQG|VIyz0;%0kq95!t_$&e7o
zZRDx=HRcE#KV+lDRb9FZ*(eQV;Cgz%{NP_7ut-bcniYt;(o@mBrZROEPuN#o%PyGR
zSSg=q<Qqd0Jyqkeq%x*~Sj9QLv;-}k`%5}{1d3U)%R84xG)zQ`Yh}*rtm0(`v{@oT
z)7W}wGl&B!Z@ZnwzxXO}@f6ICgpESjGdge)t#xQ^KHOFA_A_Q49;6_LN<+`K%$nL~
z&8;cblbux$uq0WU?2yg%fzIXUho?c+neGRo0n3K{f$C6UcPJxx4RqJwk<((1QR`a5
zPInY{n2S{FeW)rBgVYpW(2gOH3af)~KV``XRBdCYU#)DXHX|nqs}%7jkG%E;?&*R<
zu_u0!wt?Z!pha|hk>i$e{x$HP42q0+njI~*AaWC4Dls4b&>nVJ_y7%Ir;;AfRDo%$
z+|r`5cac-gh^8yje#|U^sy1ZRxg$Zb9io`|WCy}7&JY8mZ{5VL8zK(}R*FE7KpK%M
z1z}rj&&6eKC9z?TB~+wJ{m8-nimuPEN_i2#$e%K@AoZ<5Ez__mQ@x~yOi@*fuAlge
z9IF9fAyO)tR|3i_k@+yq0JlqJ%e<#nUfDqY9H$z|rp_S?(08y;iR~_{u4x6($*Bv&
z-TrB4Rh?5#q{}8ISOE>IBNR&+`OTsZE^{5LGcee0(iUyk=nD^DmVh5P_B-u>{`Qii
zPyPGB!LevPX)=IjO;$~zK_|a>m8!^_mOHZRe=6qbodsInQ7AA?#dC3yh@aqtF7;$$
zT=F%;O^8=~gZ*DTNp?T3r7z+YgDJ!RK_p51gN}YpGu>RrnCHJHV#t7pY5ZG9yRm^B
ziC%P+Z7j~K|0MPuI`BJ*sn;1T`B(gWS2H<$589XHP1#aQS=u}DgY({b|7P3n-tQco
z|Gp97UmotCpZ8gVdVYRzYHLx?Kb-tSrqczTapIT6X78B<`z1jwGmwgZ7%IX}j9SVI
z)!+Zk^{Mc^-fVD`Eid};@NRgj9X4bZMdLA$h#QH}v&{P8?z(NLMob+vNt=B^Li+oG
z@A~3J9v`#w9yR=uRbAhwVwS|G;y-EpmG~}?=_DX_%RB9S-8nf**P}_^`RX4he{U~`
zNhkd(`DdDc<%wzXpZS8AY2pg#_iK^QSHw$aDiCexEoaHaayVak+vq8f>XKPL2ch}Z
zSO1jubE`Cd+F?H_4&qwIr<CyzRJ&=AS&+lIdudNP`^qx=?4~GvN`Eb47}162N9TX^
z+kPj&p#MgRzfb3%eC@ILEu9$C`FcsikX%ts`I<4=`3gWY3!QpZEWE9Fn_@Zq=kogz
zcrcM*^*{8_uW9u!@1GxcANk$z;ra3T>7xzr0&mjz_~GX8FI~zK9gBZc4IWaxuETzt
zzJI{C-F-Tol1;kUWb?_Un5IR(87?-X>0ra6whidT&9qo08#>04Y2fP;dcQxS-RAuG
z(eYp;$|Sy#EO*#D755%4d2;Pd*OS%gVp7DOzVaU36W+sP`TUWGC?7?V<0bDQd(%Af
z@LXN?1$-HL56r`dbUy$Hn#^YItT$E*=Y<u#K~<rAX=kMme^t-=aJ5j`7mpg=`9o{Y
zdnbYp3eW3rqcZ7G;|CI)jjyRAkjif(X;lI)twd<aiOH8GoROcS7x;}K-{w4#zD;Ou
zIuT-${G;P;WD!fj4IsKQNcBYu`HI#dM=VT+Is<}$-#T0hdvtb}lF6r82T6;>_rgMd
z_VzW@P&5a>pC@_2F{Z^+|A&B|O5Z&WAEUSGIz*^qVp#ZTlc*|$C0nN(rUm|9sUq<O
z(fDnzPqV$a3>y~U$wMOAo^!z<K|^)PHJ7w?n>9A_nzjObFML%BXplo3L2x;d=TK-)
zq^<avN@oo-QTOB&E%H5vFs0vov}Eu3J#^sP+2rHif?e$?g^tOYXK`c>sLRK+2QTq{
z3?(uj+nM?nuQ2tYJvnRkfK-7cxtFe2E3n5zHtyxL{zjAKt)F<ALFd(C{Q<u4ioU?2
z7u5|An#fC{jUWgy>H3n>N3&3hS2#~71st=%4=j?RXBYCqL*;K6+UQ@Yko5L5+%3{=
z&3F7MXz!GDh319PY*;L43(NVP52=tCeGP;CT=In}qabiFh0W$e>T8Pn4ej!qO)B63
zBhmeh*PP6biC{nZ%r~4u=u@{mdNY5o9EEXISDO0pEEC!hr|C<mxv+e7g01R1ICq6^
zzonh(k@Wil2%%;W!Zq<P%ccEJO9~0%-?X(8KtqC5y1_F}pM+zrTqe{5B4_HKuau-u
zbYUriUh7h`uAfTQOQf!ITEa-i>glQ2ZAGqOVRbzu9-s^p&skXVh_gF?wJN48f_ni$
zN|BAqQIU7^@X7$o>NdJn$SUMn7Py*c#_%h4)9IZDfzY5ZEDjS8rtNf!`D8<fa#v#U
z+FM~|X>2@p&KTWF>7Y9^n!<>%W+WXz?M*ft{Qf8HLe~6YrM6<&Lpcewuv&0Ry@Ii{
zk^jIo-Ui>~`NSVqlHs(Y_qfADPi{Uq7?z2tStfVyRGnnYno3vij2ym?g*Z~T1sfAo
z&k{%3HcwJ~o>fj!{L)tI;S!qPtLbeOH!qE5vtj|Tm*_I(SZmM=nM9OQKwKX_&vy2r
z>L|tdS>m-y)uq7ltr+QucKjUXVGm-1fFolduT%MZmUWXb55SKbpDZbEEQlv59uA^H
z3Ks!3^sh8X<&gz2Ks8et^IbXwRS!!6J1WzYNZzu<A-{szujK!YL&QLw2H}8>P)i{8
z=tx}3MMRcb_Sq60hO^zGJq(AIIJQ<@tCE%omn$K6b7$KZmIt+Tg_J@HUNEIrSG-Mq
zZ$3*FgQb*tKF*A*<RD(AK08!JWjyFG&f-$}w+x6Ig_E;F^4GU<QNpz{2rQ6Aq7Evn
z5S)_T+&VHt$bAtvK#eZI4iWni?!+o^d`Vd%D35UgfwET-;~b0?2FHeI=aeqm`z`YC
zXp140Ulceg^7jlv$sP)sirS~b#^C@-MzbaQVzU|Yble7E1?4P(OIe!88sqO3D5IZ?
z){vzevfe>7Hlph7R?N#Xe3sG3*bxP#<{^onOA99!`&s6tSl#rVj0CJNIS7NwoAaT?
zZ0j$hl@q-~9~uHKU)2GPWeRWz_C$CJBwJgMpLY@Sd|513PYN2w0-xyE5RqY_*<=oP
zLeF7I6K5QX87Ygxb>6r3FIYcP4%DK)h3S2lx7%tTvv#gb9_^Tijc8FF_4Jt%H(>Lt
zJ_ngIovas-6*YB|z4gP+Qf>REY}W*56x~~qW#lM|xH58l*eY1Bk#yu&RQF&WY#D2|
z;nPqdx=pXDQ;rtP6&G^bSS33n#mX%KjI7#+GMZpn&?zqclc1AL=CB+Bu#WziH9a`c
z;O-D-PO}n2D}_I%0@Sb*IVQOI5eF<B(1<Gr-`v>c^_khw%hLVB^m1(*&1eUWY7=%?
zo3J!Fhg-;qq@+5$))cb5y-JB^8Vn}tw!Shmz<gwlWPYYCNLzVy#zEKNhP6&*c;Cn`
zyVofdAIRXl#%Qf!^0K9K)eix%dRRHHrv{y8G9uB;p=a#bk0%QAM73Okgw%T8b~mpe
zQr;&6P<Y+uWZ3Xw_3*q2e*k*TXfUAjT|!;#^jURuOTFf1lZheD6G^)cWBNZE2*^`~
znmg<b`T_CNw*vw5&fJIvJX$`hqXFCYZ%RC?1GCnP*fLD?t0|mT=vcS~FIoY-?q+&N
zFJDkaTCyfh<)|!oRqBqCw>vP_F9iA&084y=g+yS<Ze~ZfPl*2xpOp9)e<*Ekh-T1A
z%A5w0C<q4v0RRY{JFD(P->%S$6Fz;m+nO@eCgn1VlvA!kh9Cg$jF>niorX(31JIH`
zh!aWZ4EsX9EIx9?4SMn%N~$1yn!#MPmdgrw54<L}V1<OS5@G|o$ClpE`RP1g&vtW^
zC7nN?Y_QRri?w6G+REhY=sio6Z5gk`pGJ8=90?=e+!o}x=@ql9?w+9hN)k7`6e-(S
znWJAFm{R)r9UR4UdFRXfz2DFM{{3?wFv)ZsKxh~oPsN~&kHxVVmI^}o5BM6tYj=b5
zQ@TAk7T;1qzJGpve%!f#5NvRDzX5JDk<53#Jb%}}-#x#7ejHFK192t;E>>K1^c`?m
zlG$v|@yp*yOo;DF&Zeyi0&!h1%Hm>vHOdQDkE#Gymr6ihg;Fr^8x3Z1an|;ZD#$hl
z+$8?0L*$!f9;Ybb?@EMWU1jtM)^pdt*vl%6xqe(kt;C>$u*yijkZGhT3F6_{uy81@
zUCc=x%%S$CgMBFhrPLYVkp8=G)<7#2L=gjXKTV`jKT<42Bb)82K@_R3#7?d;h5{KP
zTZJf=2CdI$wsNFI{BP=!!U6ww0v5-)eLFBXMJ~vdiKS|4G_a`$;sqE@ykuXCg-?_e
zWENTxA4rFFd2k<}FWbj~GpCfUnt7*8?2;#gnEe7+&rAgAfaqdv&rX~DK3g~pHXCE*
zZn4-8wbgpNFazDwY2BQMQRqkAg6}P@`_Q<j83UOUQC2ii@vw~A?IK8e8ExkMIJf*;
zs5@Z=Jgvq{IDI{>`Z}7*=pcdR1-{ec<BCp&N=a%44U?GDag%jQdWmgN=op$aWF#>s
z*>dSal`3r~l;MlE)2|Z@_{t562{R(b*o<FQiDAK{=EZ#pGj+_dfTNsvN+vSdxv--s
zZ9j1fkxHGK36Bzo`EJ(Q2CP44uRE?1Z~y$vA}{N0v)?kF0eA-ED2{caUo|JN6V}9G
z5VQDS(tS;Ou~k+$FqEiU|6Hev@{Gp5Ei>RY+9dE7R=L+#5v>nw!;$~nwZ6Km*19$g
zqa(!ytlyZhfxrB=gi=eiJ(E6fxRe57k7<_(r)kHSs`}=d5dc4|Fqcdk&+~$akQS}6
zn@pAxQkr@m7F!PK2$9aTqn=k@hc+V-A;fhabYbair4B*BN#i08E(u(R30F%k&bX`=
zw8g#N+CV+YpWT*WWHx#Z^GWQJs&@eVi7_98tNK`D=>dMD04z+dyC>LY*u=%H)qxS$
z?sg*@KhZGAbbza4uVK+hNpo(pG*41Fsnpit?lP=QBKlgMYT*mmLiNQ|(lb!mjV27#
zzRW7K1&d;#)@p?IpBAGZWb(q3O!jN`*7v*N2M$3Iur~USesDYzKV-27;(8>J5052^
z*Dq;&<0-lF5qLl^{DCN%2$TzTR=i%7NB{6>vtn|sxB312#_#T*-vq~ER?@3IFFfu8
zRPKf@wg<;FFF9v$-ap^o6W#OKvG_Grq#A8z7jvmV5#J*l2*d7Qh%)rgyL62!BF_Kf
zckoN4UeYH3#v1<PL~x{y@awO?5+x-(INgfJvRs4X8Hm@E|KI@P<Zr_LQ{F*Xz<`@1
zUH-I~gilhQFMLC9tQQl92(HPUH3t7;5=rv-d*$L!Yu?WkA`IIds`&tXIzKO9i15>o
zub#r2X9jN%<PG?p2Ypyd?!GAz_b9_xed($xNi4wYQQ|ie8OIUG3WNG58>MflSq$zc
zQ*lWtjJ&7v(Irx-s^M=LrzFq>I-;^zg=tK>wp&zaG!6{fXZab!Z~NG5C$uaTnxK0K
zD);p|ZK~YZPeQlDWf2n6>NHd~w42R)3{A~z+<7CO@z7{J&|8`R1DF{Y3^}I&gY!%6
zPi8s(75#0!&_oufu-2&$N6Q5o4uDn{0q%?;Ba})h>slO>DGl)o>IuZcX*!$zzd$Oq
zoS|mSMLAfwtXaZWPWw$GhK8$kP!~3s6%y~CxWaxqF?+veBFV%-+OJ7bD?U}(a7jF8
z|1|*rEXJ0@s>b#)!Xb$3Q=m5VcnPNk;8+jR%|=IC;$<CFgD{(O)+*$o{2YcrshsNS
z3qHi;J}Y7N1M#MewVjhyak!t0w~dcjJ|TW+d<M>5l&RtrZWMOHjznfp3fX|_UNk(0
zjHji%?i!w+!oQW~+i2!Wdv=5+iLurPSd~Q02NnQL+#-KbK&8(fs43%8!lyOudFU#y
z-{2O3=q*)-ol=;WNr_OWwu>9D?KK>$d7LXXZLIXQMwmhb%12n3=ItWPL%uA+t1YZ^
z|3pFTu|Sm0NpR$=G9ViE?l%>pHLqO2eOV6WJ^pOoW0Uu<pUwMMlb7~`&*p}|j(K7K
z3toW7W%YqCDBmjm3ko;6AAUCTLzDN>XY)R)%KdyT9#*w@^!eP6s@#W%pUr)EXmZo(
z`nlYjP1Sq#%w~1wW;ncX|AflL4{gBzBFbbIdgt(AqMy<e3;J1jVnshIPqeP+_sRpN
zPDua6J?~yf|F$B}cB2>>&S4wnnJqQs1;1FcB}$$VGx{Oic^R5|jUzi!K9wBmm><r^
z#cXLpNb&QB<~0-C7Q1s?B`YGJdL<C-4GQ4}HHN7iB}hwhbud|{w0v)ApnK@0jtVB=
zK9UqxQH%j?WC~OdcglN}OHlPHr%c(&NJHjf1MT%YA_}{ndPDYwiYLm=3ab`MlaEA`
z3Y^w%*GuNOTg!`t0fT~_oJ!={O4?S-5N^Y|e*m1Q0rqH7;y3R{18F@|Y&K;V;IOpg
z6~y%^dF_`}Tfn{>PG@p*S`{-vdjk0uAGc?)boafVX2pjKX&VQj@E(Req1(ltC+tsD
zrJWk*DXVJGU^J?W7^Jd_-U;O&y1>O~$DBH~4|esbWM`Uo@0g(Ngkidco>~pUbMJ(<
zCz^uZKWXE^Z-pA9aftAKHN;J2?0ISxoG;APN?o<E8|cI<bG1G>Nly5VRXusLF3(F;
z?LMJ)K%-Ij|5o>Z=mHN+S!W+E-s*90DDg<Y(N-7rb-5MQY}ncVa@a^z9UNsbhp+OM
zdtMtNa<6UmzPHy?_dGn6YdDI68E8m7*UnWeryQ`-#C0te9{VSn7ZKU1+5sE`EbT@C
z;5Zf7R@Upzea)D^-L<!|D1&#XyxvDSaU1P8uNJoqAgfk3zX#)yR&I7SYfJ#BVBWSi
z5jzV&cZ>SA2u&`RYuK^G@~?M_+;1$C_LAK)X(ALvCN!2QnI6Ry)pm(j(z9ld_6lZw
zJ%wSeHoom`n^dOvCQY^C{A3fcu$qB^9Prwzu*dsP4Rv<sAr@I3CXWt~4Et_JWx6-M
zsF8_iaVxF4FX7~@T{93Pd<<rfa(|X>t{YrC8oQkq(+N{qkkA?^V&Z%uu>5?d4DLSJ
ziRNw(&^2Y?tr;z(>zCFm)nc{}0{c|>CJ;Ja=yC5nPmap|&DY!GQJ|Jn(`;JLMv$rO
z70WESDE4~i=WDNBVykeEudhYkj%8P|#^5P60H_^4GkmXT3`=qPH|TdM-@nS<fDY1u
z>>0gAyz_Gj*j<9L;iU|xNa<bb^zdh<a^XznmYmC#)?rIE7&NU7=g6hwbvl~Clx**E
zJ%>Xypw*b)O6&laau-$_?+;d}00}`KXOTlX=G!PqJO4iW@h$OeyBsR9pf@&)hXz=U
zf$k-}jqprT!JU0K>8U8qs>1lo)@d@0nRyly(8hV9!U^ln*6OaE{u(X!k{L}FL#Xfz
zo=q9`PWq5iXoeVZMAda<am+~8H<96h#l>PYO%@;Rt%pZK1pwr)`kwCvT}>d%?x$%u
zqRgTt6}VLJ8i9fkpeJ-*?a{01%>=G#&x&k9RF?dfoAsv3D!~tR26@_as$E3OCS^KC
z0Y;}~O0Sp7ok>?oKJMRAkp5nkQv0Tf$fq*ud%uC4oXuBz$)4&_92bjXxr7{7*mS<x
z#%O*=YO|~QSx|=wI*WrSpgT4?M*XYaSL5_lBHZSnu35bu(u-DhScy4($!Iem+C#~U
zG-RaaPx8m?^T`=^_paAJynXlX)syefyh@yx+)731aIGMBmLF#;IAO@og6eTMQci6o
zpbU{BiRbs2^Y(OwvwqyPnu6-<>tbGbHkq|c#M3I;q0XB$n8@-NPELSN6<UpHQg_}~
z*2BBid&I=QU4x`=f~=vIk=mp)+R&xN?m&iI9mo*X`#wF%CEHZNF>EWTnw(X)wntAX
zo|pO=t#iAo8iPo27iv+}6$}jA{^th3I_cHqhr+Yryrd1V+Wo|yyrPK#f;+)+=`OCy
z=yg4#Rrq{Xn~{=!V1`rY{bZwYmX3_1WYNcsIVdu-{sp@{ErEv$dL|t;e9cD7WQMol
zi<vdQN;dmqvuW#_)wT@-)B5-KiO}uQD_jeU%(|VFbT`JR>OJf_*2XF)`Ki0@?$;ha
z5G@=I5s31J(%Vg6RIOc>nn={n8P)XIR%dhlV5)zHiI9elwZyzuXVR&!&PGLuR;O}v
zm-YG)ONUM#HXYadR_|?T-wx<sME}@7S;au#Jv0Nc@9g@KXO=Hp&1iNX;5l~aW!tnx
zNCV%bZr}@0n6mHNa5V)4>DBk|m>SiQ<p(YSu;DSb2>`5D>j;pEw-NJ-X7d}SLx5Eh
z=^avbWk?-@su^P?w=y9rlUu!O*IT3C(*ifvn-Vx>caD^zir&XJjKzk)Rww;<!Uy%l
zKxs-Zi=sDapZ4RtH|fha3@nkf^SlxkzK%a}R`Pz<kt&^XJpqDAaaAln`e_!J#q4Il
z{H&VRpmvc|6+IoyINl=cY0TX%D+hj$v{m^Wfk>+va+eH=J)8rHD!OS?o?c8w1(Bxa
zYw+^KmfUJO!%u{AW`QVVFC&5$q*7X__nE3iY%r14>u3#DZtcywY5+Xt2e7UcH+oN|
zy_fbwM7S2Js9QQ?G9QexWb*b$bcdOQx*NKlg!<d*X5kXOn6CO{*~!~5?FzdkeAmtR
zCzLT*Z`=K|#*<)cg*OnUL3gZjmFMxBXWZ%<3A(YDx<1x$npq^8QvytGT01qMXLoHh
zmuq5zS09@yaCrFn3Rv&s^VQe&gFC*>eoXWPh@rb*k7JK@Nm9Qhl~$jvj$Nc(n=1W|
z`XqTi0^mebZ6111Ke1YgwMCz;NmZC#51o2PEtDrE+tM`GrR_1aP*V+Bb`|O+*%fi0
z-BF#j-lOWZxbH!u2~Fi^`$Cmre}CP$7dYHN)!abJ+Z8|O1BJ(}%MrH8S`DNKLL?3K
z*m-~7yua43H@)W80!OW3({2@>S?p}X2Bg@M99#rIqbrLpY3Px6ufoh{GE{D5Vf|IV
zjPYWtgsY#m8v{JbJ`-hni9->mnZ=6UR(0-x{5E>T?74mK)}2-HP<$hXvD{Om%S6Tm
z&{opjMdA<G4+5Z-yA5SW9PKYfFQb@2fD(u)qjwX1Z+8GC*&TrL<C0r$^X-i+2@yFE
z)dilG3>juu6G}JveD8Lu=XyAr6z=&&^r#Y5+wz&n6614cmxjdY_WGfPgINKl4k|(^
z>%xtsH4H*lhg^jNF^&O*J`@wUxJyB*Ue42se42uMDtpsDdM~G6E|uqA;!lLcoE|ej
zIqq2EH`<5C7AFZr+H&UU{Pgq<&0_q%Rlh%!_3R~Q-%jGOq|&<Tmp)5}?$|G3ky*kb
zv+O;<pRe%e>xyPnHH14{O@_5gSg3*Q-#L&sF2M`1A}MrFZX4k3mkn_9x~Q4Ov-N*7
z`=I<sH4kAi5#pxeoM^|d2$UT%HmR0+Q}>8W_tEyx^wHMzkws}4ULwjZQJri=u7Ik;
z+!6Tchy0mc8JEIQ+Zz{%9b4aaz<Ol=!y(!>4pHv-djY~px_lY;1?}%O=poEzKhEec
zzh!nCcZe*Z#m)%9>sX51*X#x&R`Tbn+yyaHQE<fLByPdbY?;B#Y?Q<|z$pklSh0EH
z>AQEKmjTG}rynVCy`Z!o&)&WL>BpyMe{d2UDAtRtfSIcJmU91R2{YW9m9Y3V{!Llm
zDSt}eODH+Z<4=kILr2@js+iKB8cmA(QJ&lBcxi&<vN;(YG0J1F<B8{Vf-%N*N}Gp<
z+V;fPf!IlVAWj&*ubzGiVD8ti!)K}QF*3Ku3D!NoMk#ntr99x*?37ca<T)pCP%vP7
z*te&Q?~Qwg_vYu$J-{l5P6lywN|~IrQ<*lM%5O`EXD+Lj(mG|daHJ`)aL!drIh6q7
z^34iA+!J2~;*9>|UU-&#^!V1?agQX;KDVb29wiotc{l4ke*MF1L@^EZ<!OH_{#`Sx
zI6A$bG@?UmaxnHe8Wv3ZJTGYbPg9Pw**keiiRENIU(kcB7)`uBN9zlyxowq+qjV*I
zm5H?5U0;Xe9HuS&drB#1C7k}cVej{kuk)9~=`#8E+4a4CJJ?X-J$`VnzqxlWxPOn6
z&f1%g?ak}<CU0+Ewl~A}X4>8?+nZ$b@6B~P2w*~fES|9~`cd~hZyy{-#qHDiafvwJ
zPXh6TFXm|w4V>K4UQ}j&lOvCXuY2YRwIb_2o6sO<y!aS?`2$eZUg|ppZVBqNgQ0QC
z*z3ttVej3~FCI$=2c-q>gWY<f!X#x10h$BE6N&8cS3<rGWh!mLbHo!MR$}a$4rkJv
ztz@#y^@~;*)`7TC7+D|FnuV$H-^$smujIHN5@)t#C==TejxjKS^|7BQnC=Q3ZeIiU
z7V#A#h7XRscE)bSk*8p|ltCC#(vHj+r$9$xP}Av%&l0z<9uaAIky45isYLpSS>VVX
zw0iRe*x=KX69tsK-AcTZS9Pboi`4NvHU&Cmv|P01#OO6VgQ}&XkFgm&TA-5chzfq;
zJdqmnmxu+ed($e8V**GQPM^JH3Ivffx@K!&vReiwk>kzH?s>~aMyE0TrH6FE)2IpQ
z#Ee(Moqc!T{PUkR9BL<`N+MutFFz$m`wLe<;jRGcxnb;?wMG-ZbAVY6_QGBqMA4}L
zj1|7J>#?47ebqf+hD4ek9u5u<)#nC8^bY&b5b7GY5=L5<`MGG_qiEn6Eh8%=Rro^G
z;z{ke4ay)<*;cqAqVT4LC#!BbXpp+raeLIQ36&GR*hUj)UsEu~a4SL=Eh`W;VPUYl
z&O34!T;>f{;#A^F0t>pp?P?;-7@Ly=n+dZ5>G(K%{M1w1s6kbm<PDoDdc}Z2zexfM
z8QR3g1-ygZmAS+^$5u?l5vLN_x;F?kk7ietI$iQQ)+`=2L>OxbLKH-;Y<CNda$x%J
zVEA}4qLC*i?0T2;{%oLs?65zXT@@}&PKLY6+k)0Q)sce6@z4o4C#Fc?C}mSxD+ln7
znG!=f4TKfuV8G{7*TY{L92rE;9o6Z+jG(AWxIzijI1_e><9gIIAIS*1b62CswWw(R
zFhE_c4@IA-ptDr1uq{zEZ}WJWL-|_Z7ZlP9I{rCw?NRUKw11w{&(T-(`<{Lu&~He;
z-&nur9U>GsLTxR>=HEn2{Ky__<?3PsS2X^!3_{=(0E;!eIT5GZ^XvQn6?B1T5cqic
zpG3jX?ePXU&F9yD*$+G2c6|8P|Jpx4IzR49FSph^lnfYWdSU-B2Y)@hcfWmp9Cv^J
z<Nw@jw*OD(sNeoC^|<e=i=+O1orEuR?tC8HKR6zV_Zo8H{AhE|^&;Yl{!jun{63v4
z5`bZqTOoh(`=I)z$Lrc-1O%2pDj0BB1p-!ADF5bEe6^LKe#O8JD*TJgM9EjXB~$9P
zO8ugeKjiU^i^gXR3m~7$Qs+M6V7*(Bb67VORmGzY5HC`n{`NdDH?;q~ehp0H-0KH|
zla5}$KBC)zfsPAoc}Gl7dZrYl$t3D96i0vg)xFoR_ws!2<;%V4bZ@z&|2z1efoNG@
zcuy<~@fyn|qW8emjY{QD;KHM>LCM#s=*yQ>!|4=f_LBcBxw5tQuVJx)_i;f7V4b>=
z5ufZ(rX~RCAalYnDa(M&xI^0hz3rT(L->8rr(-tf$lBn~PsA8u!wV31f4}dSh@Oyf
zwD-)8yfld20LS!p=Ehx`=p1&`rQPV}1?_}mE7Eu=j{`BO;*%l}k{Z=tuCJ++rr;>K
zm!^`pyy9-Ya_56J6+ECw*38K5SvSj#eM7V}1KsFEEgjGo51K>2R4!SC6Tpsr-rlQ7
zT6Ay4{7z(~q2jZVhW4EzWzu^$@DSBc#~pG#F)O{AiXl54&465C#R3|l3ZIPy<hBc;
zc!pq49>v2gA_CkV5eV6dvwH8V7}ItSh|?2<TaV?#eH|3Kn*djIH-u1*=s>FWI)2ck
zUi-%QLA$kwpf`CKPinQVM-h^>Z{1b>$rn|BTk~rE>;_n$ge;G$HI|ZMcdt;80Go~R
zv$R?cqw*isTm(ReD5lBie^x0jp<XRc{IeB%XIE^I<fD0mA<`Mm0p`#dgOMR$m=qH2
z_Am|Z;HW{ODW(;?f*b2lNm)e#gBOk+Dc7Y6?$@#jKdYcP*HH@#E25t}p*VvlOks?a
zNN=a}4~_lKyPyKJnCJdPB*5x_zgQPP%aZbrb;}~Bsg?0L98|5G)jd<RxAsrHN9<<a
z)-AX7irX30C^v=mVq2l@=k`D~Va6ad$Ep&a+lG_wIGjR=KOE(G0q8V|;Y}BkDyIwL
zb_)EK;AdWJ#R_4-4^rAxsc4VR{Db9eRF=5*l=%;?q}WO9&dwb%#u+#&h9wVsUROuu
z>PvpxWr@t#PpB_xr}>cgp7=xA?fuQ>gA(@Ze9-n}Lc%sNsV#nDN*M0T8+KFP5FrUl
zZCU&&NlSywtP*4Xq(ef|)Kc**cLhIE2%;u_qGA-4=8a$**59e*AUao*FvJw8*bDJK
z$8c$}dxP`+jT>!ir)iS41pEJF#9?G4*P2zvAhwO8s;QOz)vTOD$x5|G3cEf7Su?ZS
z^Mw7+owa7eMkfp%?0Kwl;(`2`n`QI%qOq0LxZLct4Cs{&EvpRbY@H2u`yAF|az`CV
z!HlZ9hF1@;d+aoxC^t)gv;<%<6p>D3KDQjNHney5#ZTN9P}fxJ?v~D|{C(Zoz0)_A
za4Rz-^l~+w5S2fyB{fVcKauESc35I;`8%Cm>~^-AMfqK`h-*?!p`p!z7aeG-R7lUo
zdbuh%yFZY4#fS-`I&M+a#Nm&tt;mE26m^NH+Q-xm{*)u#YH3D&tL4Q|$XK`3WX{W<
z55zBdTyo?l98bT=o43T73A+7N-a=5qnwEd(@k^>`^R|;2iRx3LxaiEfsxXaYCqvAc
z@iYGN0nL}s>~=E1fmAMPv6lB=wA-6)@SBqpbm2!th7doO@l85ev$IV(&(=#A-9`&_
zitgp<L|!luHR2S@tM$d6i59b`qshn%RDQ2Qvfis8toKx?WBgJ9^p{uGo;<Mj`15<H
z%pSGjBjOV8$#}($7`2Vk;Ex%k!98m+HNgQkpJq*q$ucm>{Q<<-jBsaJw7Cj=7B5+N
zFB)dhKBI<|_2z&@cJR#FMnB7Va!h*;lV#D(<ji{vXhXjQ@|zYA>II<0yBPyZ?uM<b
zjtEwFC^aox1*{gyY?)2gIV}_;h&6NLZ*)W|?=RL+JH2you$rXOKHFYb7E#STg<!eW
z0xxLwyeexF?#X5|uuUIm(;$L6qQTSfg6+OhGC!S9rILA%2(vwu7Vdd%S#Dbbivh0;
z0KOT5YD)k+fO|{vBi!48a_*0<n0>wpR4xEPHtA@QAhY@M0YEG%Q%ZCS7Z30+p2+?<
zKop(XZm{nyqy{n~oQyaqavq|UIv#$cJ&L{~1>M<jzIc~mjn)L;d?0)Y{q@u)Z@#XL
zUE@f%tZg9y3iJHp&RLIOwy$Pf3L@Js7a614&u0kCgDsi5anMQDtND^!va>8e&|Qj!
zSjrNw;uCQp*5ZS>w%5d(x_Vs=%~~l*E-3lJ9-0gF-~)#Xl!NhMcQDp^FxK%0@j<?`
zt-@Ru9o`-uFMq5I9vD*CoT0k;R+;-BY1lWLF+xPDlVQx!dWi_XjN5JEiMwoaMw>&e
zLQ>9gDWf*XO^b?{71vO8cl6wdlPHOo4q|6;bIo=$8k3PXpMffV$hyWji$2hs)Jw$_
zdn8d-JX*DwO09xbPF(GY19BYPaK)%YuMx@omU7ti1~yv2z`HGzn%(#wfCRZft9_Ps
zsxQ{Xms7XyJU_xjw+?$XJ?qE4aqT*O_w$Qm#e9R2t0<cQF)cZS2SoV(6A(wbw&J(I
z!q^XL!;&k=ct$9=Dc4lt;s@Ss^j@29Wduy7XsTlIom}JjLwX3(hC8Gvm{O>g^EVCL
zilyFc2(@4lEU#vxmDB@@*5#jLk-nIYk|&!IROE)N21NyGP3%G2sX(O=Sb|ym(Uf+`
zLHB2zYvrAsF64k`CR8z7q$Pl?*WrwZE-_GrRzT@V5V{c-J}-(?S-)cumqhX`jSTY+
zCZ7oAeQl-3j9bCsrH@!*M17m{oibYU#G8cgFO<5}6VGM#9J*AZVr6y}_|p?FQ;r;9
zN4*xml#*>wD%0XaR<M7TLanzHt1U;{YKS81tTC!nhg9+;y0XKi-6qcwV=>jxZd25d
zSzP5+WJD#g#4hN(N#1Dev_*3Ly2^j0k}E-*!NQgx&p$UjP?N{_A6Wxjr8N-y)x-5{
zHD6~#M%-6PCgD_nMU7RJg$Jw3pyImfrzX&=e$HWA8KO-!UBzv+l1$`Vb<b+}sgeis
zLA!q%XxP_TT=FXC?hEMnnJM#Tv5IG68MiLQ8{Tf|z(jEs==bWaa>lQ%G#s-A;)y-u
z2JD3Yj{lldtNLo&^8*h`6F2REXjoV<ubdA^=_oFvSBxhD-3yksUZ43kTGk}0uYBYW
zy1;F{L9yY5J->*cyQC*h8f|z6bVT=vtwos6WSSHna+SpjQHFy^Pbek)d!a}2)@8qU
zCQ+jlZjFLpq$@xOCdzU%MgR{h0v(;0n4nJ$4F)Xlvs6I2HO+}lTrDPS?<(}N4GSOx
z*R3?b<N&gd<388zzYMBm*4KeKphgeZLa+O9u+`JfGTg8ai3@9rU$_fkP>Xu~9CmAV
zwCp#D28}l+BF#mgxJ94t6ip?$MdMrRs#xFt&`)L|yC1Vw^F?jB4=N1k0^;Q(^OQr#
z9_btVGw<*I$Vu%Zr@J3<K2d$qd;~KCVD?5_?J$oW3E}I%3Gk(Adu`F(0hFar*=&R+
zoOvG^<-D#sOe=3{v48j9`|gUOvrX!K++=Mkeo^1XMTRsP-8zq*mqZa)o6O;1b=^rO
zlliqmU5U8J^{m?M@o5?N`ohu9(Be}Tl8A<VC3rKqr3<RV3*pR(YM1``ZmZ%Fsx5a*
zkpZz#@HJL3H}w6SPf1_$c;+;->m2V=OU7`qG=}!TKlLx{BhO+%DluN6Vq`H`e>7zF
ztRiiaZfpM}^tqtgIa!mYLhztyaN)$LAK0e<g{ju9r5XN^n08q=OdVqC_g@hw4d%pF
z-qy<@dJ+iW11ardGHkNL!QnZ_SaL+mSWo-}c1AK(m~x95cNlGBmld3_vBirZoWMM%
z7K$LanbJh~zyoYYOJ_VqlNIIaj2s*jI6TsI=0oJy&pBQIP1BU|Wtj&w17YxghHMKd
z_7iOcaqGM=BiYhJ`KL!dGMKL*D7rKsy8!K_4mwqT^`x$upxK*+S^s7WitN3K+I0JB
zlp!WOWpIgn!-O^&I2=|@2yTBr=B2Jr4vmUloeCOCS#tTa{O3wj9o_P%-ZVLiw`?Z4
z1pK`UX{E3UiWSZxDjr@`OpT6fA%ik<q3Thu=p*Ra8AqJpgMvM0w)GA8@UUtBJv?mH
z_AW-9RF3uTwmbOpZPy{lvuGg2FV<JGo!zm#eRpiw%5#x@(JoDEX|S_BC*7=Jd%mLr
z+iJXb9@_)H+#w{@zP!sgxWRiCA8!(02dalsiq-ozxzMn7q)E4ZcC+}#jL^O{MC%Jo
z&bKpV+qv2BF`pOdoJuQ9;j$|csztZ=mMo6lX%*_P`Xb^YeDsTseqWk|SNGyQLng;X
zNEbw5@-_YPt*0Q#y}l&zos_`YAM);-*wMCJG#I>Y>1YWjMl9ZxC2TUDZ7eH*Y*;HU
z>x+G*tjRK(Q0`2)apz#uGO0lCE^G#r`c->YBF0Truy<vgW964F^(LpW?@Wq2w!c;>
zERs&_F0(5rp6Sr5a4x9%eR07ux5fZT&2phiyKiJc-tS#$OHCIlQL&U>-_|+(Qd&}_
zM%{FFi&b@vEdCO6>&*599>92DLO+OiaF)Vq+G2eDLGMAI=qUPYCVddmB&)3CVfb6x
z8eTTRvHMDyGVk;GHEFOmP9$-1aI3NLWY^f3<0vAAf~!xh8rDL~ILx56TMTzMivR)O
z{DuehHr%?A)J$T~3h3oLM?yX{Y!B_!Nwe~5X!A^#BFjxT2G!zMxMZC#+ne75wR7;@
zL2xWqpOs=-v(FZfDN$IHy_O{#(ZUbJZBTO5tm97bAaL`Ve%*&&-*0}Vc5Z|yZ_W_^
ze9N0UQmOxIDQp|9{Em<4fC}E8w+%Ef!5!JReW(JY<k{98RZI8mE20^H<A`>%fnMo>
z__wy}mQnKBT^LByP$f(HQzZsnnLJp`*BA7geylyFTiQ;L*bOQD;QYET|K4YpI~B^$
zNv9Oin0n6E<n7VS`G%~(YC#-zQw0u=#mrSjG+IFIIG(v2o#FDh!)0teeYSH_wXZ8s
z%t?|KlQ@?*+&yuz)ghgv+tt76lxTsonksJUx6=1U#fJ+(60Z^ta4)5S)85y#*G+qW
z>x)ae`KC|I;_+Ux+*5jwDF7%B52v&xMmc5phjgb|#2Gz$(C^|wI19uQ`&q_<t%bPa
zP|)-haS`WTw=>kSa>XGzx8d$NvWH-fw4trlCs4c7ejq;Z{Z}%wjJW2zzf<~S7$dxl
zFKgd<+`H^kk3H_q`mq54dF+0${!pJ0gJSgy`Vp~@mSN^!H`oq9rvP4rewA1CxcCTY
z#SYENv&1G9j4J=7pCABt4&mooB3IDKFB41Sd!C!Cfun~A5I0k;qg!0>sV7=_e9d^s
zwTk5p6&pw|zXRx423Gh-b!xoy^WLBjAdG1Y5fmM6#1Z&YT*%q8=2S6^Kgf$IYaB}A
zv!`N)Y>G>tQj@5tc)B$Wx*@81x(pLxP5IZ!MVM8se7=}Z&H2(aQ?ed)o_GoVrO(HJ
z<fL|d%;hcy6OhJdyoQY5zI!sbCJmaVk#(j8UpHN}4q(=ASWA7X{p6H<mL_K+&14xz
zp09vNrA%iNdoN&d1(rQ$<txrAw*vJ{BlQ@gF_~<MBP^Lxc6j&%#}ri_qK1HD#OHAq
zg7}t33s7Hzr59PZ7F0V2u8JGdJGUkB=7X1P%BCSvqa+FtY~Bh)Ef5kr5J{X>FD<G?
zwmv*ugC?UneRz1SXcz!vGT#iP9?L~2CE<|d5r<o{%CF#oOz}&zWFCY616Z~8l6xG#
z>{M&a*FcuEs`7XU1+W!<`~wIm9aeFTg$!)+=y8YV_3m0zZ5jvw_wtNGT;HsxZfKbi
zEi{OU`r-zQYGMNECWkqN)olYa^qfbu?4sfu{?+>AfymYi$ns^oOtRIQEt{_RgO2?o
zeWd9{p_da)BY{ah32w<5Pn?+Jp+9k(S1Tm1<)^K}-oUbk4U9VV($5$Tu;KeC;Sz&#
zRk1uQZ@hBdMx?CNoeFGHJ)mv$s%8K_Q1Lsj;xW!dDo$BuTu=f{&@r__dx|Sn&V{rT
zkaeSTY=3`E=ht(;w$6g+8f%}S>7<)K9c#Hyoua8H!5~K$9TrJwhHmF%dfaK=K^cU#
z%k#L}cC1YXb{v%<&4<m#GOMZHa^De|-p*7iYcibF)nlTfN9lS+{E*HAmoI%uv}UCO
z`_Qe`!CqrxDEkM2@RSdARUj-X*UIz3Nu_yLYl|uJ+7#IZNzqv5bz_;^$eJ#@!p+AW
z_f+f2&jkHS^j@o!)#{`o`DE8@BiNr^ea@7ibz<R*5<_TD6Nl=#V~a`}hVv8*DcHKE
z7g#cV$BYY_N@Q@>TRKqL5~~hla8Dv?FPiKvc6yoify%)GtDmNm)yE0VAxKWwJBG57
z<D;pvZd#T&3A9z>Q*ep0B79a<bfQ=)`=mi(0d~|)A@E?ZYo9F%m*bo5G2s1=f4_z<
z0{(<c;)6PHSJ<Ua&K}q8YXIE^PYH9@jU~Gdsz6z1D@I|`$%uVliCH{R);IVfjx?U_
zb|Q=fCW!h@OL?<75i2^1B$qo2IPxouDv0FI0D`|*z56&#=My%#qg`N@oBMTq)t+)_
zmCN=8?Sk5d@H$%flSUp}1+SFxONlP=;iuU}kTpQMJn`YK8Hg28&#_x?NEexO_E%0M
z@8D*M%*3V`4!IC(&N|QnzNu?)YP+>%8eUDx)e+Hcv&jHXPaWffvbmV77s=!)@*Z8n
zF@RR&HODKFuUu1)`5%0QrC7ow_zWUZKZlHTJz#tcE@1Sj2=`|5y~TP`?5W^+d$juY
z?s0UQd-$Z+o`ENNA%Kh>wm!tB1qG3v;E%K&>9BCjnj36>t1f3={YTmz6U5vsc9fB@
z*by_>5#)&Yj(sWVjft>lnUxIC1-kZtX^R*;65m1`8KXC5N2j=-j`Dm`#QVO^3P2am
zC52ykE}y~HnM?7r!&7X#O*DGlQu%H}<<qmT9ID>fCV$SDRdx#zO1GI8%M36v9<p_@
z0F;4>9O6nmZj&|KA_KWq1i>Egiq$tbdYaQ8>OjvRRA{A-;oW>mKVS7}5s!)SrwUF@
z1tCVE@}yLx9c*j?O1maHX)B=#K3@O!DCe(F<=2<|z0HQ}@R93)H!f-7>>vN$J4lW`
zJwE#PAANmwa`ewX`qU^XeYm9cLN&u7xG`ZQ8L@bCE@vD4%K3Ay<`i9E8qp8t4*k$v
zqQBCbg)Sh&#>;Tl*B=S0>ZeK0cygY&lnqcO#}G5nOX0I*8?Cw*apJE)Sk!bgl>`IO
z^4CqqKgo920U%+6I5viZ-SXPfwMcI5Bc(p>eWb06IE>!1ALqnqsO8o&0O??c9|y|7
zf5jGJ$?mab$#T{79uu#A!R|@ov3SZ@anHn=cp;vMSK^cSF1qApe%X%)Jlt;+dNX(x
z4`@=YiDr|!XmDiTVQ1pRYw-#qi9s+xOyIZIvmX|S;zktrcZmPQB8Ts6_@Gx(Qt(|6
zJ&Rvy?dNy#V?Z+c&tzbYaeNYuA3lr5QYm^CBUr+#?l^o!dyse$4|->P@r0NRRDO)3
z;YmOE6yrze;I_DaN`GQ%7<R5tCT0#&)kL6{)Gb7b9|w^@J+UH2Yed^0B=v%(OuoJV
zgxZk0>qQW8p*J*Bo+yW!D<M4$uC@_>m#81K<uRWd!40bSxF0=%x4<XmEf8hOK>Z2#
z_Y)A`asq=W31nBaPN@5z=$;xsoN>22q0e^?4&J=@<HxhtZ+|{}2FdOxS$E4Ee*4AU
z`6)(=gerol$M_=3=X;Nd=(G83iH=Ad^<(GjL8RJ5P1py+opqQPvl=T+)1UhnQ2WL@
zyZSXzy!uh$t2)p^S<?7^q$&C=kY;;R-#zA4PFf~X@HTNtx+v)-mb*w9Wv-pPu1u+G
zA15?+pLo<i-BuA;E<V*Z>Z8xP*W7u6HQ1xG&sXIb^KLl5wq*O#w6E(~ge_4?TL0w%
zOA>VMkYlpnz@%ISpAU8Nk*@4k(+%nWb{k&OXT?qvOr=AoHUF(9{D<`u4c6}UO%Ya|
z?^YitMU7r0!ZVSETnj(1J<B>7JVymP7e;JEo^fy;d|r(IMDLxsK8Wu)`1mbaDT`H-
z$fF5$LEO4Qb8m5Dkn#=MjfeO%!JjeyOq)+H>kHCgK7$$ADGb)!Dah3%>b5hVIm5`L
zq$r|X#cC~R{i$s#e^^BAb{-^Jp+6x)62dc`!@M%Czj7nV2{={JJ9?)a<GR|{A}%o2
z-d4*%nRQKx#elYOSbb((UHSv!HMk>t-ae7oM6a0pE}JAQfS=}QperKNf!+of6dz=T
zHmNbPkSOovU*M!ByY&~Ub;urSDps33L~>RR%gqW1-Ib#nJNW5&KT&$Qy9wb3w#&xv
z)x5iVC0n773aiudj$QSBe8)4^P2BNZwb-hCDYQ{@CLL*~{~tGyW<hM<xJ{shFR1fe
z*4bY6PjB&%QTU7d8tj_cviGKJFYvwj;$oQ0JkeT#*d+SMk&tBCIVs94e<QBO54r7D
z_%z9epWU8ZHOQ_-26jUaLWW})DQkar`0c<FKnBZM`9NwG42U7a0AZpYltfnB@>O5}
zN?9#%Cz3%8_3tj#d?iO=JNS}yQJ>PN(8~CytHmTffa}nDHlEF|XHsMpKlg9d7{P`?
zR_7<@6<0>!b&2O=qM!J_u2=s6i?T9ShAF{gEkhtRL2QMU-C_FCT$k31t*j;v%Ui06
zcilSajRW4p?h`F9qq@-Em~%|k(Ij60zdNcxtPS>i_HYnol7wW#%)FN=Suwt9iN5KT
z;u0Mp?G=k=0bpZGEM#9P7z8v*lYBE{ECAv-F4S$;zokH-`&@Vm-PEaUlQ1|4&p4>6
zld+p<sdU&lK0K-gY?11NLTl|is2T35>9!|vJnm_|QwaehtJLXG<RwJ298s#xXzLlU
zs|3*RGF%zJWU_9lM>YvUQ``|tRje*+5-#uS(y(OzmG8*A8)TE-XSAiZGx6YV!lhJt
z79)&dAdR83ss|9@?ZWR2tvLetj!Lk;Rd|jW8)>=_mJN1+gPIm-Xe*2O+@(I$Y9AoF
z-lZL&qXS-#CGqdJZrUL)^t>~X#*|*zHs9Zh*6=nVznlef2gEeE>w_%!H`4i!ekMm-
zeUPoovIhG{sUovG71mtwFK$PRL8W{HT|D@l8pF|INIaW&yTC8@yGGodaZ_-@&~$E6
zJ26rjo?E&IZRzOF-n*fHn9u{u>=(M1l!-^8f)A+RMJ32%2c$<oHU^e9Q=xrh$FT)L
zFeO?zmo8wk+O88=YizRKo(*uMQ+ve#o4Q+Bwb}=1sZp;iV4<j#7K>A7<AE{iwA$I2
zEsC7aSc+G+a1KJ>enIsfEMjhX4I#jSK->YoTC0*CklX694HS$1V*@UFMdqB+RK3bR
zXE$hw%kF29V;FWo<!2qKiwtL;G_hp+)tj4*4SEPEW6MTW)7ffdgM+w-_KWrZ#kR?~
zdOZJuo>_r_1Cj7TUOL!s7a9fJUd8`ntiY3pi3z|+n~4Pz?)}a&K@U6`(w-*ce!>D=
zn?~07;sJa%7sY@@(F1Ap##Azt%sUu_HIzP8y)Qyb1Qfjiv1A)0@!@}`YvZHSIwGU&
zC{H-&e-dXfprfW5*u|sMF!@ZIO=-<Cfs;paC$k%`5mz3@rEK{1|5C$G>NuLZ-OeE(
zn+;m&GcDEcH@DPTT~#9=sYXUWbckSBPm)C^ozGX)w&bFVXe{$dfzWxr_sioS-@JPB
zBHVkw7;*5!Jpi8Uskio~G%fd5M0M=VXIar9s?mQ59O!R}LrVfdyhy;bgF}8i%l+TP
zJd>_#{xzNBkpAWKY|VBq(Y{PFRXaGymKUJyYw3!U^39uyCP27XFEH%My@yN4!uB{?
zx@7DS{pHbrL0(S>!=Crk`{zgh@S@&qaDE;#%v4|WG~yIp;vhP*?mt*J9epV}RWheS
zh!@W0E5B2d=mj_VXh~e<M|wId_V!29i}`|soo~4Y@GCG`(#bp<N85+T+=xd+PPdMa
n|FS3XT3!=rH<}H8`tkc%cM462&VR51E?WODzw6DG6YK#1iU!)%

diff --git a/src/main/webapp/bower_components/angular/angular.min.js.map b/src/main/webapp/bower_components/angular/angular.min.js.map
deleted file mode 100644
index e54ef355..00000000
--- a/src/main/webapp/bower_components/angular/angular.min.js.map
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-"version":3,
-"file":"angular.min.js",
-"lineCount":250,
-"mappings":"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",
-"sources":["angular.js"],
-"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","forEachSorted","keys","Object","sort","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","j","jj","int","str","parseInt","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","push","result","Date","getTime","RegExp","match","lastIndex","emptyObject","create","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","createMap","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","$$jqLite","$$jqLiteProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","listenerFns","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","parent","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","annotate","$inject","argDecl","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","locals","Type","instance","prototype","returnedValue","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","Array","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","check","pollFns","pollFn","pollTimeout","cacheStateAndFireUrlChange","cacheState","fireUrlChange","cachedState","history","state","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","safeDecodeURIComponent","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","directiveNName","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$watchCollection","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","extra","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","newValue","$$inter","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","controllerPrototype","exception","cause","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","target","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","expensiveChecks","eso","o","eso0","eso1","eso2","eso3","eso4","cspSafeGetter","pathVal","getterFnWithEnsureSafeObject","s","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","code","needsEnsureSafeObject","lookupJs","evaledFnGetter","Function","sharedGetter","fn.assign","getValueOf","objectValueOf","cacheDefault","cacheExpensive","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","watchDelegate","regularInterceptedExpression","oneTimeInterceptedExpression","$parseOptions","$parseOptionsExpensive","oneTime","cacheKey","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$listeners","$$listenerCount","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","destroyChild","child","$$ChildScope","this.$$ChildScope","watchExp","watcher","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","isNaN","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","currentScope","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","msie","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","transformer","httpOptions","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","item","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","amount","currencySymbol","fractionSize","formatNumber","number","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","parseFloat","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","spacing","limit","Infinity","sortPredicate","reverseOrder","reverseComparator","comp","descending","objectToString","v1","v2","map","predicate","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","$$annotate","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","applyStyles","styles","from","to","animate","enter","leave","move","$$addClassImmediately","$$removeClassImmediately","add","createdCache","STORAGE_KEY","$$setClassImmediately","APPLICATION_JSON","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","&&","||","!","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","operator","throwError","chars","isExpOperator","start","end","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","peekToken","e1","e2","e3","e4","peekAhead","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseConstant","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","$parseFieldAccess","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","ngFormPreLink","handleFormSubmission","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","parserValid","allValid","$$writeModelToScope","this.$$runValidators","parseValid","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","that","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","tempClasses","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","trackFn","trackIndex","isSelected","compareValueFn","selectAsFn","scheduleRendering","renderScheduled","render","updateLabelMap","labelMap","label","added","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","anySelected","optionId","trackKeysCache","groupByFn","displayFn","nullOption","groupIndex","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","selectAs","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","$$csp"]
-}
diff --git a/src/main/webapp/bower_components/angular/bower.json b/src/main/webapp/bower_components/angular/bower.json
deleted file mode 100644
index 3a791357..00000000
--- a/src/main/webapp/bower_components/angular/bower.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "angular",
-  "version": "1.3.11",
-  "main": "./angular.js",
-  "ignore": [],
-  "dependencies": {
-  }
-}
diff --git a/src/main/webapp/bower_components/angular/package.json b/src/main/webapp/bower_components/angular/package.json
deleted file mode 100644
index 2a45a11d..00000000
--- a/src/main/webapp/bower_components/angular/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "name": "angular",
-  "version": "1.3.11",
-  "description": "HTML enhanced for web apps",
-  "main": "angular.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.js.git"
-  },
-  "keywords": [
-    "angular",
-    "framework",
-    "browser",
-    "client-side"
-  ],
-  "author": "Angular Core Team <angular-core+npm@google.com>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular.js/issues"
-  },
-  "homepage": "http://angularjs.org"
-}
diff --git a/src/main/webapp/bower_components/bootstrap/.bower.json b/src/main/webapp/bower_components/bootstrap/.bower.json
deleted file mode 100644
index daeea0bf..00000000
--- a/src/main/webapp/bower_components/bootstrap/.bower.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-  "name": "bootstrap",
-  "version": "2.3.0",
-  "main": [
-    "./docs/assets/js/bootstrap.js",
-    "./docs/assets/css/bootstrap.css"
-  ],
-  "dependencies": {
-    "jquery": "~1.8.0"
-  },
-  "homepage": "https://github.com/twbs/bootstrap",
-  "_release": "2.3.0",
-  "_resolution": {
-    "type": "version",
-    "tag": "v2.3.0",
-    "commit": "af172e74e9e7215bd05087cfd89026afbf575e92"
-  },
-  "_source": "git://github.com/twbs/bootstrap.git",
-  "_target": "2.3.0",
-  "_originalSource": "bootstrap"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/.gitignore b/src/main/webapp/bower_components/bootstrap/.gitignore
deleted file mode 100644
index 3b10ffb3..00000000
--- a/src/main/webapp/bower_components/bootstrap/.gitignore
+++ /dev/null
@@ -1,37 +0,0 @@
-# Numerous always-ignore extensions
-*.diff
-*.err
-*.orig
-*.log
-*.rej
-*.swo
-*.swp
-*.zip
-*.vi
-*~
-*.sass-cache
-
-# OS or Editor folders
-.DS_Store
-._*
-Thumbs.db
-.cache
-.project
-.settings
-.tmproj
-*.esproj
-nbproject
-*.sublime-project
-*.sublime-workspace
-
-# Komodo
-*.komodoproject
-.komodotools
-
-# Folders to ignore
-.hg
-.svn
-.CVS
-.idea
-node_modules
-dist
diff --git a/src/main/webapp/bower_components/bootstrap/.travis.yml b/src/main/webapp/bower_components/bootstrap/.travis.yml
deleted file mode 100644
index b8e1f172..00000000
--- a/src/main/webapp/bower_components/bootstrap/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
-  - 0.6
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/CHANGELOG.md b/src/main/webapp/bower_components/bootstrap/CHANGELOG.md
deleted file mode 100644
index 68e2850b..00000000
--- a/src/main/webapp/bower_components/bootstrap/CHANGELOG.md
+++ /dev/null
@@ -1,350 +0,0 @@
-## 2.3.0 (February 7, 2013)
-
-Minor release to add carousel indicators, improve tooltips, improve dev setup, and fix hella bugs.
-
-- **Repository changes:**
-  - **Local instead of global dependencies** for our makefile and install process. Now getting started is way easier—just run `npm install`.
-  - Upgraded to jQuery 1.9. No changes were needed, but we did upgrade the included jQuery file to the latest release.
-  - Moved changelog to be within the repo instead of as a wiki page.
-- **New and improved features:**
-  - **Added carousel indicators!** Add the HTML and it automagically works.
-  - **Added `container` option to tooltips.** The default option is still `insertAfter`, but now you may specify where to insert tooltips (and by extension, popovers) with the optional container parameter.
-  - Improved popovers now utilize `max-width` instead of `width`, have been widened from 240px to 280px, and will automatically hide the title if one has not been set via CSS `:empty` selector.
-  - Improved tooltip alignment on edges with [#6713](https://github.com/twitter/bootstrap/pull/6713).
-  - **Improved accessibility for links in all components.** After merging [#6441](https://github.com/twitter/bootstrap/pull/6441), link hover states now apply to the `:focus` state as well. This goes for basic `<a>` tags, as well as buttons, navs, dropdowns, and more.
-  - Added print utility classes to show and hide content between `screen` and `print` via CSS.
-  - Updated input groups to make them behave more like default form controls. Added `display: inline-block;`, increased `margin-bottom`, and added `vertical-align: middle;`  to match `<input>` styles.
-  - Added `.horizontal-three-colors()` gradient mixin (with example in the CSS tests file).
-  - Added `.text-left`, `.text-center`, and `.text-right` utility classes for easy typographic alignment.
-  - Added `@ms-viewport` so IE10 can use responsive CSS when in split-screen mode.
-- **Docs changes:**
-  - Added [new justified navigation example](https://f.cloud.github.com/assets/98681/25869/5e2f812c-4afa-11e2-9293-501cd689232d.png).
-  - Added sticky footer with fixed navbar example.
-
-See more on the [2.3.0 pull request](https://github.com/twitter/bootstrap/pull/6346).
-
-
-## 2.2.2 (December 8, 2012)
-
-Bugfix release addressing docs, CSS, and some JavaScript issues. Key changes include:
-
-- **Docs:**
-  - Assets (illustrations and examples) are now retina-ready.
-  - Replaced [Placehold.it](http://placehold.it) with [Holder.js](http://imsky.github.com/holder/), a client-side and retina-ready placeholder image tool.
-- **Dropdowns:** Temporary fix added for dropdowns on mobile to prevent them from closing early.
-- **Popovers:**
-  - No longer inherits `font-size: 0;` when placed in button groups.
-  - Arrows refactored to work in IE8, and use less code.
-  - Plugin no longer inserts popover content into a `<p>`, but rather directly into `.popover-content`.
-- **Labels and badges:** Now [automatically collapse](https://github.com/twitter/bootstrap/commit/ead5dbeba5cd7acfa560bfb353f5e7c4f4a19256) if they have no content.
-- **Tables:** Nesting support with `.table-bordered` and `.table-striped` greatly improved.
-- **Typeahead:**
-  - Now [inserts dropdown menu after the input](https://github.com/twitter/bootstrap/commit/1747caf19d59cad7fdc90ae56a00e0e2849f95f4) instead of at the close of the document.
-  - Hitting escape will place focus back on the `<input>`.
-- Print styles, from HTML5 Boilerplate, have been added.
-
-See more on the [2.2.2 milestone](https://github.com/twitter/bootstrap/issues?milestone=17&state=closed).
-
-
-## 2.2.1 (October 30, 2012)
-
-Hotfix release to address the carousel bug reports.
-
-
-## 2.2.0 (October 29, 2012)
-
-### tl;dr
-
-2.1.2 is now 2.2.0: four new example templates, added media component, new typographic scale, fixed that box-shadow mixin bug, fixed z-index issues, and [more](https://github.com/twitter/bootstrap/issues?milestone=15&page=1&state=closed).
-
-### Highlights
-
-- **Added four new example templates** to the docs, including a narrow marketing page, sign in form, sticky footer, and a fancy carousel (created for an upcoming .net magazine article).
-- **Added the media component**, to create larger common components like comments, Tweets, etc.
-- **New variable-driven typographic scale** based on `@baseFontSize` and `@baseLineHeight`.
-- Revamped mini, small, and large padding via new variables for inputs and buttons so everything is the same size.
-- Reverted 2.1.1's `.box-shadow();` mixin change that caused compiler errors.
-- Improved dropdown submenus to support dropups and left-aligned submenus.
-- Fixed z-index issues with tooltips and popovers in modals.
-- Hero unit now sets basic type styles for the entire component, rather than on `.hero-unit p { ... }`.
-- Updated JavaScript plugins and docs to jQuery 1.8.1.
-- Added Contributing.md file.
-- Added support for installing Bootstrap via [Bower](http://twitter.github.com/bower).
-- Miscellaneous variable improvements across the board.
-- Miscellaneous documentation typos fixed.
-
-For the full list of issues included in this release, visit the [2.2.0 milestone on GitHub](https://github.com/twitter/bootstrap/issues?milestone=15&page=1&state=closed)
-
-
-
-## 2.1.1 (September 4, 2012)
-
-* New feature: alert text. We documented these new classes, like `.text-success`, at the bottom of the [Typography section](http://twitter.github.com/bootstrap/base-css.html#typography) along with the long undocumented `.muted`.
-* Fixed a lot of typos in the docs. Spelling is hard.
-* Made the `.box-shadow()` mixin more durable. It no longer requires escaping for multiple shadows, meaning you can easily use variables and functions in them once again.
-* Widened `.dl-horizontal dt` and `.horizontal-form .control-group` to better handle the increased font-size.
-* Dropdown submenus improved: now you only see the next level, not all levels, on hover of the submenu toggle.
-* Clarified jQuery and Bootstrap template requirements in Getting Started section.
-* `select` now utilizes `@inputBorder`.
-* `.lead` now scales up from `@baseFontSize` instead of being a fixed font-size and line-height.
-* Fixed the vertical three color gradient in latest Firefox.
-* Reordered some variables that caused errors in certain Less compilers.
-
-View all closed issues on the [2.1.1 milestone](https://github.com/twitter/bootstrap/issues?milestone=14&state=closed).
-
-
-## 2.1.0 (August 20, 2012)
-
-### Key changes
-
-* Submenu support on dropdowns
-* Affix JavaScript plugin
-* Block level buttons
-* State classes on table rows
-* Improved disabled states on navs and dropdowns
-* The navbar component is now white by default, with an optional class to darken it
-* Improved prepended and appended inputs
-* New base font-size and line-height
-* Added variable for navbar collapse trigger point
-* Fluid grid offsets
-* Fluid grid system variables are no longer fixed percentages
-* Removed LESS docs page
-
-For full set of changes, see the completed milestone: https://github.com/twitter/bootstrap/issues?milestone=7&page=1&state=closed
-
-## 2.0.4 (June 1, 2012)
-
-
-### Docs
-
-- Added `type="button"` to all dismiss buttons in alerts and modals  to avoid a bug in which they prevent their parent's `form` from properly submitting.
-- Added simple documentation to Base CSS for `.lead`.
-- Added new CSS test to illustrate how the navbar, static and fixed, behaves.
-- Clarified grid sizing copy to include mention of responsive variations.
-- Reformatted the LESS docs page to prevent terrible table displays at smaller grid sizes.
-- Miscellaneous typos and tweaks.
-
-### CSS
-
-- Refactored forms.less to make our selectors more specific for fewer overrides and less code. Instead of a generic `input` selector and various resets, we target each type of input like `input[type="text"]`, `input[type="password"]`, etc.
-- Form field state (e.g., success or error) now applies to checkbox and radio labels.
-- Removed redundant CSS on `<p>` for `font-family`, `font-size`, and `line-height`.
-- Removed redundant `color` declaration from the `<label>` element.
-- Added variables for dropdown dividers border colors.
-- `legend` and `.form-actions` share the same `border-color`, `#e5e5e5`.
-- Fixed some responsive issues with input-prepend and -append, notably with the fluid grid.
-- Added special CSS to prevent `max-width: 100%;` on images from messing up Google Maps rendering.
-- Scope opened dropdowns to only immediate children to avoid unintended cascade.
-- Similarly, scope floated-right dropdowns to immediate children with `.pull-right > .dropdown-menu`.
-- Updated `.placeholder()` mixin to use `&` operator in Less for proper output when compiling.
-- Added `-ms-input-placeholder` to `.placeholder()` mixin.
-- Added CSS3 hyphens mixin.
-- Fixed a bug in IE7/8 where certain form controls would not show text if the parent had a filter opacity set.
-
-
-## 2.0.3 (April 24, 2012)
-
-Running makefile now require JSHint and Recess.
-
-### HTML and CSS
-
-- Overhauled the responsive utility classes to simplify required CSS, add `!important` to all declarations, and use `display: inherit` in place of `display: block` to account for different types of elements.
-- Removed `>` from fluid grid column selectors, meaning every element with a `.span*` class within a `.row-fluid` will use percentage widths instead of fixed-pixels.
-- Fixed regression in responsive images support as of 2.0.1. We've re-added `max-width: 100%;` to images by default. We removed it in our last release since we had folks complaining about Google Maps integration and other projects, but we're taking a different stance now on these things and will require developers to make these tweaks on their end.
-- Added variable `@navbarBrandColor` for the brand element in navbars, which defaults to `@navbarLinkColor`.
-- Font-family mixins now use variables for their stacks.
-- Fixed an unescaped `filter` on the `.reset-filter()` mixin that was causing some errors depending on your compiler.
-- Fixed regression in `.form-actions` background, which was too dark, by adding a new variable `@formActionsBackground` and changing the color to `#f5f5f5` instead of `#eee`.
-- Fixed an issue on button group dropdowns where the background color was not using the button's darker color when the dropdown is open.
-- Generalized and simplified the open dropdown classes while adding smarter defaults. Instead of `.dropdown.open`, we now use just `.open`. On the defaults side, all dropdown menus now have rounded corners to start.
-- Improved active `.dropdown-toggle` styles (for dropdown buttons) by darkening the background and sharpening the inset shadow to match the active state of buttons.
-- Direction of animation on progress bars reversed.
-- Fixed input-prepend/append issue with uneditable inputs: `.uneditable-input` was being floated and a missing comma meant its `border-radius` for the append option wasn't being applied properly.
-- Removed `height: auto;` from `img` since it was overriding dimensions set via HTML attributes.
-- Fixed an issue of double borders on the top of tables with captions or colgroups.
-- Fixed issue with anchor buttons in the `.navbar-text`. Instead of a general styling on all anchors within an element with that class, we now have a new class to specifically apply appropriate link color.
-- Added support for `@navbarHeight` on the brand/project name and nav links for complete navbar height customization.
-- Fixed the black borders on buttons problem in IE7 by removing the border, increasing the line-height, and providing darker background colors.
-- Removed excess padding on `.search-query` inputs in IE7 since it doesn't have border-radius.
-- Updated alert messages in Components to use `button` elements as close icons instead of `a`. Both can be used, but an `a` will require `href="#"` for dismissal on iOS devices.
-- Fixed an issue with prepended/appended inputs in Firefox where `select` elements required two clicks to toggle the dropdown. Resolved by moving the `position: relative` to the `select` by default instead of on `:focus`.
-- Added a new mixin, `.backface-visibility`, to help refine CSS 3D tranforms. Examples and explanation of usage can be found on [CSS Tricks](http://css-tricks.com/almanac/properties/b/backface-visibility/).
-- Changed specificity of grid classes in responsive layouts under 767px to accurately target `input`, `select`, and `textarea` elements that use `.span*` classes.
-- Horizontal description lists, `.dl-horizontal`, now truncate terms that are too long to fit in their fixed-width column. In the < 767px responsive layout, they change to their default stacked layout.
-- Changed tabbable tabs to prevent issues in left and right aligned tabs. `.tab-content` would not growing to its parent's full width due to `display: table`. We removed that and the `width: 100%` and instead just set `overflow: auto` to clear the left and right aligned tabs.
-- Updated thumbnails to support fluid grid column sizing.
-- Added `>` to most of the button group selectors
-- Added new variable, `@inputBorderRadius`, to all form controls that previously made use of the static `3px` value everywhere.
-- Changed the way we do `border-radius` for tables. Instead of the regular mixin that zeros out all other corners, we specify one corner only so they can be combined for use on single column table headers.
-- Updated Glyphicons Halflings from 1.5 to 1.6, introducing 20 new icons.
-- Added an `offset` paramater to the `.makeColumn`.
-- Increased the specificity of all tabbable nav selectors to include `.nav-collapse` to appropriately scope the responsive navbar behavior.
-- Fixed uneditable inputs: text now cuts off and does not wrap, making it behave just like a default `input`.
-- Labels and badges are now `vertical-align: baseline;` so they line up with surrounding text.
-
-### Javascript
-
-- Add jshint support
-- Add travis-ci support w/ headless phantom integration
-- Replace UA sniffing in bootstrap-transitions.js
-- Add MSTransitionEnd event to transition plugin
-- Fix pause method in carousel (shouldn't restart when hovering over controls)
-- Fix crazy opera bug #1776
-- Don't open dropdown if target element is disabled
-- Always select last item in scrollspy if you've reached the bottom of the document or element
-- Typeahead should escape regexp special chars
-- If interval is false on carousel, do not auto-cycle
-- Add preventDefault support for all initial event types (show, close, hide, etc.)
-- Fix collapse bug in ie7+ for initial collapse in
-- Fix nested collapse bug
-- If transitioning collapse, don't start new transition
-- Try to autodetect when to use html/text method in tooltip/popovers to help prevent xss
-- Add bootstrap + bootstrap.min.js to gh-pages for @remy and jsbin support
-
-### Documentation and repo
-
-- Combined badges and labels into a single LESS file, labels-badges.less, to reduce repeated CSS.
-- Separated responsive features into multiple files. We now have a file for each grouping of media queries (tablets and down, tablets to desktops, and large desktops). Additionally, the visible/hidden utility classes and the responsive navbar are in their own files. The output is the same in the compiled CSS, but this should give folks a bit more flexibility.
-- Added a new CSS Tests page in the docs (not in the top nav) for better testing of edge cases and extending the use of standard components.
-- Removed the bootstrap.zip file from the repo and the make process for faster building and a lighter repo. From now on, the zip will only be in the documentation branch.
-- Fixed incorrect use of class instead of ID for tabs example and added documentation for multiple ways of toggling tabs.
-- Fixed required markup listed for the specialized navbar search field.
-- Removed all mention of `@siteWidth`, a variable no longer in use.
-- Removed mentions of unused `@buttonPrimaryBackground` variable, which is no longer in use.
-- Updated LESS docs page to include all the new variables we added in previous releases.
-- Removed broken "dropup" menus from tabs and pills examples (shouldn't have been there in the first place).
-- Replaced `.badge-error` with `.badge-important`. The error option is not a valid class and was a typo in the docs.
-- Fixed mention of how to add plain text to the navbar. Previously the docs stated you only needed a `p` tag, but the required HTML is any element with class `.navbar-text`.
-- Clarified the use of `.tabbable` for tabs. The wrapping class is only required for left and right tabs to clear their floats. Also added mention of `.fade` to fade in tabs.
-- Updated forms documentation:
-  - Remove unnecessary duplicate help text in first example
-  - Added mention of required `input` class, `.search-query`, for the search form variation
-  - Removed incorrect mention of form fields being `display: block;` to start as fields are `inline-block` to start.
-- Added mention of `data-target` attribute for the dropdowns javascript plugin to show how to keep custom URLs intact on links with `.dropdown-toggle` class.
-- Updated the Kippt screenshot on the homepage to reflect their recent responsive redesign and upgrade to 2.0.2.
-
-
-## 2.0.2 (March 12, 2012)
-
-Overview of docs changes, bugfixes, and new features.
-
-### Documentation updates
-
-- All docs pages now have distinct titles, such as <em>Scaffolding &middot; Twitter Bootstrap</em>.
-- Updated the Apple touch icons (now black on black instead of the blue grid) and fixed the links to them in the docs.
-- Added new global styles docs section to the Scaffolding page.
-  - Required use of HTML5 doctype
-  - Overview of global typographic and links details
-  - Mention of our embedded CSS reset via [Normalize.css](http://necolas.github.com/normalize.css/)
-- Added version number to the download button on the docs homepage.
-- Updated progress bars section to simplify how the classes stack and more clearly indicate the available optional classes and styles.
-- Added a new example, [SoundReady.fm](http://soundready.fm), to the homepage
-- Added various sizes to the docs for button groups
-
-### Resolved bugs
-
-- Removed all IE7 hacks and floats from `.input-prepend` and `.input-append`, however, this requires you to **ensure there is no whitespace in your code** between `.add-on` and the `input`.
-- In `.input-prepend` and `.input-append`, added ability to use add-ons on both sides when you chain the selectors.
-- Updated lingering `.btn-dark` reference to `.btn-inverse`.
-- Fixed issue with content being cut off in `.tab-content` for tabbable sections.
-- Updated `.navbar .container` to use `width: auto;` to start and then reset the fixed widths via the `#gridSystem` mixin (it's a little dirty, but required to avoid adding another class).
-- Modal footer buttons are now aligned by their parent via `text-align: right;` instead of `float: right` on the button level. This was changed to allow the use of `.pull-left` and `.pull-right` to align buttons easily. Double check your button order with this change!
-- Fixed problem where default striped progress bar was green instead of blue.
-- Fixed CSS selector used for `input` and `textarea` grid sizes to properly apply the CSS (was `input > .span*` and now is `input.span*`).
-
-### New features
-
-- Horizontal dividers support added to nav lists
-- Added basic version of badges
-- Added visible/hidden classes for devices
-- Added support for buttons in input-prepend/append component
-- Added .navbar-fixed-bottom support
-- Added .dropup support for dropdown menus to pop them upward instead of downward (this is automatically done for the newly added fixed bottom navbar).
-- Added mixin for [new image replacement technique](http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/)
-- Added pause on hover for the carousel
-- Added tons of new variables for typography, buttons, forms, dropdowns, navbar, and more for the LESS pros out there. These variables have also been reflected on the Customize page.
-- Added new horizontal description list variation
-- Added `.disabled` class support to the pager component (also added a mention of this to the docs)
-- Added `.well-large` and `.well-small` classes for extending the well component
-
-For a full issue-by-issue rundown of the release, check out the now closed [2.0.2 milestone on GitHub](https://github.com/twitter/bootstrap/issues?sort=created&direction=desc&state=closed&page=1&milestone=9)
-
-## v2.0.1 (February 17, 2012)
-
-Overview of changes:
-
-- Previously the docs called for use of `.control-label` in the examples, but the CSS didn't make clear use of it. This class is required for horizontal forms and has been reflected in the CSS.
-- We've tried our best to improve rendering of buttons and icons across all browsers. Some issues remain; Firefox throws an `!important`on `line-height` for inputs, so that's the big one.
-- We refined the label component style to move away from uppercase.
-- Added the black button option, `.btn-inverse`.
-- Added a mini button class, `.btn-mini`.
-- We had to re-add the protocol, `http:` to the HTML5 schim because IE7-8 wouldn't recognize it, dropping some HTML5 support for those browsers and introducing major performance issues.
-- Resolved some issues with responsive layouts where media queries would overlap at 768px and 980px.
-- Rearranged Scaffolding docs page to split fixed and fluid grid systems.
-- Tons of docs updates for typos and language changes.
-
-For full list of changes, see the now closed [v2.0.1 milestone](https://github.com/twitter/bootstrap/issues?milestone=8&state=closed).
-
-## v2.0.0 (January 28, 2012)
-Complete rewrite of the library. For full details, head to the upgrading doc at http://twitter.github.com/bootstrap/upgrading.html.
-
-## v1.4.0
-### Key bug fixes and changes
-- **Updated tables** to make no border the default and add options for condensed and bordered versions
-- **Updated form states** to expand on error styles and provide warning and success variations
-- New javascript plugin for button states
-- Switched to strict mode for Javascript plugins
-- Added more data attribute controls to our plugins
-- Full list of 25+ issues fixed: https://github.com/twitter/bootstrap/issues?milestone=6&state=closed
-
-## v1.3.0
-### New features
-- **Javascript plugins** for modals, alerts, dropdowns, scrollspy, tabs, tooltips, and popovers that work with jQuery and Ender
-- **Massively updated docs** for both the main page and for the new javascript plugins
-- **Inline labels** for marking inline content with key visual flags
-- Media thumbnails
-- Breadcrumbs
-
-### Updated docs
-- Added complete javascript page with detailed documentation for how to use plugins
-- Three complete example pages of using Bootstrap, linked from main docs page with thumbnails
-- Added section for compiling Less, for guidelines on how to recompile Bootstrap with Less
-- Added section for customizing grid variables in Less to roll your own grid system
-- Added section for code for using pre and code tags
-- Added section for form field sizes that match grid column sizes
-
-### Key bug fixes and changes
-  - Updated table styles to be just a tad bit more refined
-  - Added new form input sizes based on the Bootstrap grid system (meaning now you can do `input.span5` for a 280px-wide input)
-  - Removed `:focus` states from `:active` links in Firefox
-  - Fixed unqualified `.clearfix` in forms.less that added bottom margin to all containers
-  - Updated `.container()` mixing to be `.fixed-container()` to prevent conflicts when compiling
-  - Added focus states (either `box-shadow` or `outline` on `:focus`) to all buttons, links, and inputs
-  - No longer require `h3` in topbar, but still support for backwards compatibility
-
-## v1.2.0
-- **Dropdowns refactored** to be extensible (now work in ul.tabs)
-- **Added HTML5 form support** by generalizing the form selectors (e.g., input instead of input[type=text|password])
-- **Gradients back in IE**, but removed rounded corners in IE9 to prevent background bleed on buttons and alert messages
-- **Simplified the grid CSS** by removing the static .span1-16 classes in favor of CSS-style regex for column styles in the grid
-- **Added .one-third and .two-thirds columns** to the grid system
-- Fixed bug in disabled buttons where they received :active styles
-- Bug fixes
-
-## v1.1.1
-- **Redesigned alerts** to be more readable
-- **Refactored buttons and alerts CSS** to be simpler
-- Updated grid system to be more specific and not require .column or columns
-- Improved on specificity of CSS selectors by removing unnecessary tag and parent selectors
-- Miscellaneous updates to docs
-- Bug fixes
-
-## v1.1.0
-- **Added support for IE7 and IE8**
-- Added examples directory with first example usage of Bootstrap for a simple website
-- Syntax fixes for gradients and color-stops
-- Miscellaneous updates to docs
-- Bug fixes
-
-## v1.0.0
-- **Initial release**
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/CONTRIBUTING.md b/src/main/webapp/bower_components/bootstrap/CONTRIBUTING.md
deleted file mode 100644
index c97e8b81..00000000
--- a/src/main/webapp/bower_components/bootstrap/CONTRIBUTING.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Contributing to Bootstrap
-
-Looking to contribute something to Bootstrap? **Here's how you can help.**
-
-
-
-## Reporting issues
-
-We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within the Bootstrap core. Please read the following guidelines before opening any issue.
-
-1. **Search for existing issues.** We get a lot of duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available.
-2. **Create an isolated and reproducible test case.** Be sure the problem exists in Bootstrap's code with a [reduced test cases](http://css-tricks.com/reduced-test-cases/) that should be included in each bug report.
-3. **Include a live example.** Make use of jsFiddle or jsBin to share your isolated test cases.
-4. **Share as much information as possible.** Include operating system and version, browser and version, version of Bootstrap, customized or vanilla build, etc. where appropriate. Also include steps to reproduce the bug.
-
-
-
-## Key branches
-
-- `master` is the latest, deployed version.
-- `gh-pages` is the hosted docs (not to be used for pull requests).
-- `*-wip` is the official work in progress branch for the next release.
-
-
-
-## Notes on the repo
-
-As of v2.0.0, Bootstrap's documentation is powered by Mustache templates and built via `make` before each commit and release. This was done to enable internationalization (translation) in a future release by uploading our strings to the [Twitter Translation Center](http://translate.twttr.com/). Any edits to the docs should be first done in the Mustache files and then recompiled into the HTML.
-
-
-
-## Pull requests
-
-- Try to submit pull requests against the latest `*-wip` branch for easier merging
-- Any changes to the docs must be made to the Mustache templates, not just the compiled HTML pages
-- CSS changes must be done in .less files first, never just the compiled files
-- If modifying the .less files, always recompile and commit the compiled files bootstrap.css and bootstrap.min.css
-- Try not to pollute your pull request with unintended changes--keep them simple and small
-- Try to share which browsers your code has been tested in before submitting a pull request
-
-
-
-## Coding standards: HTML
-
-- Two spaces for indentation, never tabs
-- Double quotes only, never single quotes
-- Always use proper indentation
-- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags)
-
-
-
-## Coding standards: CSS
-
-- Adhere to the [Recess CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
-- Multiple-line approach (one property and value per line)
-- Always a space after a property's colon (.e.g, `display: block;` and not `display:block;`)
-- End all lines with a semi-colon
-- For multiple, comma-separated selectors, place each selector on it's own line
-- Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks).
-
-
-
-## Coding standards: JS
-
-- No semicolons
-- Comma first
-- 2 spaces (no tabs)
-- strict mode
-- "Attractive"
-
-
-
-## License
-
-By contributing your code, you agree to license your contribution under the terms of the APLv2: https://github.com/twitter/bootstrap/blob/master/LICENSE
diff --git a/src/main/webapp/bower_components/bootstrap/LICENSE b/src/main/webapp/bower_components/bootstrap/LICENSE
deleted file mode 100644
index 2bb9ad24..00000000
--- a/src/main/webapp/bower_components/bootstrap/LICENSE
+++ /dev/null
@@ -1,176 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/Makefile b/src/main/webapp/bower_components/bootstrap/Makefile
deleted file mode 100644
index 620af525..00000000
--- a/src/main/webapp/bower_components/bootstrap/Makefile
+++ /dev/null
@@ -1,126 +0,0 @@
-BOOTSTRAP = ./docs/assets/css/bootstrap.css
-BOOTSTRAP_LESS = ./less/bootstrap.less
-BOOTSTRAP_RESPONSIVE = ./docs/assets/css/bootstrap-responsive.css
-BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less
-DATE=$(shell date +%I:%M%p)
-CHECK=\033[32m✔\033[39m
-HR=\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
-
-
-#
-# BUILD DOCS
-#
-
-build:
-	@echo "\n${HR}"
-	@echo "Building Bootstrap..."
-	@echo "${HR}\n"
-	@jshint js/*.js --config js/.jshintrc
-	@jshint js/tests/unit/*.js --config js/.jshintrc
-	@echo "Running JSHint on javascript...             ${CHECK} Done"
-	@./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
-	@./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
-	@echo "Compiling LESS with Recess...               ${CHECK} Done"
-	@node docs/build
-	@cp img/* docs/assets/img/
-	@cp js/*.js docs/assets/js/
-	@cp js/tests/vendor/jquery.js docs/assets/js/
-	@echo "Compiling documentation...                  ${CHECK} Done"
-	@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
-	@./node_modules/.bin/uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
-	@echo "/**\n* Bootstrap.js v2.3.0 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
-	@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
-	@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
-	@echo "Compiling and minifying javascript...       ${CHECK} Done"
-	@echo "\n${HR}"
-	@echo "Bootstrap successfully built at ${DATE}."
-	@echo "${HR}\n"
-	@echo "Thanks for using Bootstrap,"
-	@echo "<3 @mdo and @fat\n"
-
-#
-# RUN JSHINT & QUNIT TESTS IN PHANTOMJS
-#
-
-test:
-	./node_modules/.bin/jshint js/*.js --config js/.jshintrc
-	./node_modules/.bin/jshint js/tests/unit/*.js --config js/.jshintrc
-	node js/tests/server.js &
-	phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
-	kill -9 `cat js/tests/pid.txt`
-	rm js/tests/pid.txt
-
-#
-# CLEANS THE ROOT DIRECTORY OF PRIOR BUILDS
-#
-
-clean:
-	rm -r bootstrap
-
-#
-# BUILD SIMPLE BOOTSTRAP DIRECTORY
-# recess & uglifyjs are required
-#
-
-bootstrap: bootstrap-img bootstrap-css bootstrap-js
-
-
-#
-# JS COMPILE
-#
-bootstrap-js: bootstrap/js/*.js
-
-bootstrap/js/*.js: js/*.js
-	mkdir -p bootstrap/js
-	cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
-	./node_modules/.bin/uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
-	echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
-	cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
-	rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
-
-#
-# CSS COMPLILE
-#
-
-bootstrap-css: bootstrap/css/*.css
-
-bootstrap/css/*.css: less/*.less
-	mkdir -p bootstrap/css
-	./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
-	./node_modules/.bin/recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
-	./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
-	./node_modules/.bin/recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
-
-#
-# IMAGES
-#
-
-bootstrap-img: bootstrap/img/*
-
-bootstrap/img/*: img/*
-	mkdir -p bootstrap/img
-	cp img/* bootstrap/img/
-
-
-#
-# MAKE FOR GH-PAGES 4 FAT & MDO ONLY (O_O  )
-#
-
-gh-pages: bootstrap docs
-	rm -f docs/assets/bootstrap.zip
-	zip -r docs/assets/bootstrap.zip bootstrap
-	rm -r bootstrap
-	rm -f ../bootstrap-gh-pages/assets/bootstrap.zip
-	node docs/build production
-	cp -r docs/* ../bootstrap-gh-pages
-
-#
-# WATCH LESS FILES
-#
-
-watch:
-	echo "Watching less files..."; \
-	watchr -e "watch('less/.*\.less') { system 'make' }"
-
-
-.PHONY: docs watch gh-pages bootstrap-img bootstrap-css bootstrap-js
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/README.md b/src/main/webapp/bower_components/bootstrap/README.md
deleted file mode 100644
index 4f74a15f..00000000
--- a/src/main/webapp/bower_components/bootstrap/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-<a href="http://getbootstrap.com">
-  <img src="http://twitter.github.com/bootstrap/assets/img/bootstrap-docs-readme.png" width="100px">
-</a>
-
-# [Bootstrap v2.3.0](http://twitter.github.com/bootstrap) [![Build Status](https://secure.travis-ci.org/twitter/bootstrap.png)](http://travis-ci.org/twitter/bootstrap)
-
-Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat).
-
-To get started, checkout [http://getbootstrap.com](http://getbootstrap.com)!
-
-
-
-## Quick start
-
-Three quick start options are available:
-
-* [Download the latest release](https://github.com/twitter/bootstrap/zipball/master).
-* Clone the repo: `git clone git://github.com/twitter/bootstrap.git`.
-* Install with Twitter's [Bower](http://twitter.github.com/bower): `bower install bootstrap`.
-
-
-
-## Versioning
-
-For transparency and insight into our release cycle, and for striving to maintain backward compatibility, Bootstrap will be maintained under the Semantic Versioning guidelines as much as possible.
-
-Releases will be numbered with the following format:
-
-`<major>.<minor>.<patch>`
-
-And constructed with the following guidelines:
-
-* Breaking backward compatibility bumps the major (and resets the minor and patch)
-* New additions without breaking backward compatibility bumps the minor (and resets the patch)
-* Bug fixes and misc changes bumps the patch
-
-For more information on SemVer, please visit [http://semver.org/](http://semver.org/).
-
-
-
-## Bug tracker
-
-Have a bug or a feature request? [Please open a new issue](https://github.com/twitter/bootstrap/issues). Before opening any issue, please search for existing issues and read the [Issue Guidelines](https://github.com/necolas/issue-guidelines), written by [Nicolas Gallagher](https://github.com/necolas/).
-
-
-
-## Community
-
-Keep track of development and community news.
-
-* Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap).
-* Read and subscribe to the [The Official Twitter Bootstrap Blog](http://blog.getbootstrap.com).
-* Have a question that's not a feature request or bug report? [Ask on the mailing list.](http://groups.google.com/group/twitter-bootstrap)
-* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
-
-
-
-## Developers
-
-We have included a makefile with convenience methods for working with the Bootstrap library.
-
-+ **dependencies**
-Our makefile depends on you having recess, connect, uglify.js, and jshint installed. To install, just run the following command in npm:
-
-```
-$ npm install recess connect uglify-js jshint -g
-```
-
-+ **build** - `make`
-Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/extend.html#compiling">Read more in our docs &raquo;</a>
-
-+ **test** - `make test`
-Runs jshint and qunit tests headlessly in [phantomjs](http://code.google.com/p/phantomjs/) (used for ci). Depends on having phantomjs installed.
-
-+ **watch** - `make watch`
-This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
-
-
-
-## Contributing
-
-Please submit all pull requests against *-wip branches. If your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](http://github.com/mdo/code-guide), maintained by [Mark Otto](http://github.com/mdo).
-
-Thanks!
-
-
-
-## Authors
-
-**Mark Otto**
-
-+ [http://twitter.com/mdo](http://twitter.com/mdo)
-+ [http://github.com/mdo](http://github.com/mdo)
-
-**Jacob Thornton**
-
-+ [http://twitter.com/fat](http://twitter.com/fat)
-+ [http://github.com/fat](http://github.com/fat)
-
-
-
-## Copyright and license
-
-Copyright 2012 Twitter, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this work except in compliance with the License.
-You may obtain a copy of the License in the LICENSE file, or at:
-
-  [http://www.apache.org/licenses/LICENSE-2.0](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.
diff --git a/src/main/webapp/bower_components/bootstrap/component.json b/src/main/webapp/bower_components/bootstrap/component.json
deleted file mode 100644
index 3f1ca0eb..00000000
--- a/src/main/webapp/bower_components/bootstrap/component.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "bootstrap",
-  "version": "2.3.0",
-  "main": ["./docs/assets/js/bootstrap.js", "./docs/assets/css/bootstrap.css"],
-  "dependencies": {
-    "jquery": "~1.8.0"
-  }
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/composer.json b/src/main/webapp/bower_components/bootstrap/composer.json
deleted file mode 100644
index abde6312..00000000
--- a/src/main/webapp/bower_components/bootstrap/composer.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "name": "twitter/bootstrap"
-  , "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
-  , "keywords": ["bootstrap", "css"]
-  , "homepage": "http://twitter.github.com/bootstrap/"
-  , "author": "Twitter Inc."
-  , "license": "Apache-2.0"
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css b/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css
deleted file mode 100644
index 5215a5d0..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css
+++ /dev/null
@@ -1,1109 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-@-ms-viewport {
-  width: device-width;
-}
-
-.hidden {
-  display: none;
-  visibility: hidden;
-}
-
-.visible-phone {
-  display: none !important;
-}
-
-.visible-tablet {
-  display: none !important;
-}
-
-.hidden-desktop {
-  display: none !important;
-}
-
-.visible-desktop {
-  display: inherit !important;
-}
-
-@media (min-width: 768px) and (max-width: 979px) {
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important ;
-  }
-  .visible-tablet {
-    display: inherit !important;
-  }
-  .hidden-tablet {
-    display: none !important;
-  }
-}
-
-@media (max-width: 767px) {
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important;
-  }
-  .visible-phone {
-    display: inherit !important;
-  }
-  .hidden-phone {
-    display: none !important;
-  }
-}
-
-.visible-print {
-  display: none !important;
-}
-
-@media print {
-  .visible-print {
-    display: inherit !important;
-  }
-  .hidden-print {
-    display: none !important;
-  }
-}
-
-@media (min-width: 1200px) {
-  .row {
-    margin-left: -30px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    min-height: 1px;
-    margin-left: 30px;
-  }
-  .container,
-  .navbar-static-top .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 1170px;
-  }
-  .span12 {
-    width: 1170px;
-  }
-  .span11 {
-    width: 1070px;
-  }
-  .span10 {
-    width: 970px;
-  }
-  .span9 {
-    width: 870px;
-  }
-  .span8 {
-    width: 770px;
-  }
-  .span7 {
-    width: 670px;
-  }
-  .span6 {
-    width: 570px;
-  }
-  .span5 {
-    width: 470px;
-  }
-  .span4 {
-    width: 370px;
-  }
-  .span3 {
-    width: 270px;
-  }
-  .span2 {
-    width: 170px;
-  }
-  .span1 {
-    width: 70px;
-  }
-  .offset12 {
-    margin-left: 1230px;
-  }
-  .offset11 {
-    margin-left: 1130px;
-  }
-  .offset10 {
-    margin-left: 1030px;
-  }
-  .offset9 {
-    margin-left: 930px;
-  }
-  .offset8 {
-    margin-left: 830px;
-  }
-  .offset7 {
-    margin-left: 730px;
-  }
-  .offset6 {
-    margin-left: 630px;
-  }
-  .offset5 {
-    margin-left: 530px;
-  }
-  .offset4 {
-    margin-left: 430px;
-  }
-  .offset3 {
-    margin-left: 330px;
-  }
-  .offset2 {
-    margin-left: 230px;
-  }
-  .offset1 {
-    margin-left: 130px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    float: left;
-    width: 100%;
-    min-height: 30px;
-    margin-left: 2.564102564102564%;
-    *margin-left: 2.5109110747408616%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 2.564102564102564%;
-  }
-  .row-fluid .span12 {
-    width: 100%;
-    *width: 99.94680851063829%;
-  }
-  .row-fluid .span11 {
-    width: 91.45299145299145%;
-    *width: 91.39979996362975%;
-  }
-  .row-fluid .span10 {
-    width: 82.90598290598291%;
-    *width: 82.8527914166212%;
-  }
-  .row-fluid .span9 {
-    width: 74.35897435897436%;
-    *width: 74.30578286961266%;
-  }
-  .row-fluid .span8 {
-    width: 65.81196581196582%;
-    *width: 65.75877432260411%;
-  }
-  .row-fluid .span7 {
-    width: 57.26495726495726%;
-    *width: 57.21176577559556%;
-  }
-  .row-fluid .span6 {
-    width: 48.717948717948715%;
-    *width: 48.664757228587014%;
-  }
-  .row-fluid .span5 {
-    width: 40.17094017094017%;
-    *width: 40.11774868157847%;
-  }
-  .row-fluid .span4 {
-    width: 31.623931623931625%;
-    *width: 31.570740134569924%;
-  }
-  .row-fluid .span3 {
-    width: 23.076923076923077%;
-    *width: 23.023731587561375%;
-  }
-  .row-fluid .span2 {
-    width: 14.52991452991453%;
-    *width: 14.476723040552828%;
-  }
-  .row-fluid .span1 {
-    width: 5.982905982905983%;
-    *width: 5.929714493544281%;
-  }
-  .row-fluid .offset12 {
-    margin-left: 105.12820512820512%;
-    *margin-left: 105.02182214948171%;
-  }
-  .row-fluid .offset12:first-child {
-    margin-left: 102.56410256410257%;
-    *margin-left: 102.45771958537915%;
-  }
-  .row-fluid .offset11 {
-    margin-left: 96.58119658119658%;
-    *margin-left: 96.47481360247316%;
-  }
-  .row-fluid .offset11:first-child {
-    margin-left: 94.01709401709402%;
-    *margin-left: 93.91071103837061%;
-  }
-  .row-fluid .offset10 {
-    margin-left: 88.03418803418803%;
-    *margin-left: 87.92780505546462%;
-  }
-  .row-fluid .offset10:first-child {
-    margin-left: 85.47008547008548%;
-    *margin-left: 85.36370249136206%;
-  }
-  .row-fluid .offset9 {
-    margin-left: 79.48717948717949%;
-    *margin-left: 79.38079650845607%;
-  }
-  .row-fluid .offset9:first-child {
-    margin-left: 76.92307692307693%;
-    *margin-left: 76.81669394435352%;
-  }
-  .row-fluid .offset8 {
-    margin-left: 70.94017094017094%;
-    *margin-left: 70.83378796144753%;
-  }
-  .row-fluid .offset8:first-child {
-    margin-left: 68.37606837606839%;
-    *margin-left: 68.26968539734497%;
-  }
-  .row-fluid .offset7 {
-    margin-left: 62.393162393162385%;
-    *margin-left: 62.28677941443899%;
-  }
-  .row-fluid .offset7:first-child {
-    margin-left: 59.82905982905982%;
-    *margin-left: 59.72267685033642%;
-  }
-  .row-fluid .offset6 {
-    margin-left: 53.84615384615384%;
-    *margin-left: 53.739770867430444%;
-  }
-  .row-fluid .offset6:first-child {
-    margin-left: 51.28205128205128%;
-    *margin-left: 51.175668303327875%;
-  }
-  .row-fluid .offset5 {
-    margin-left: 45.299145299145295%;
-    *margin-left: 45.1927623204219%;
-  }
-  .row-fluid .offset5:first-child {
-    margin-left: 42.73504273504273%;
-    *margin-left: 42.62865975631933%;
-  }
-  .row-fluid .offset4 {
-    margin-left: 36.75213675213675%;
-    *margin-left: 36.645753773413354%;
-  }
-  .row-fluid .offset4:first-child {
-    margin-left: 34.18803418803419%;
-    *margin-left: 34.081651209310785%;
-  }
-  .row-fluid .offset3 {
-    margin-left: 28.205128205128204%;
-    *margin-left: 28.0987452264048%;
-  }
-  .row-fluid .offset3:first-child {
-    margin-left: 25.641025641025642%;
-    *margin-left: 25.53464266230224%;
-  }
-  .row-fluid .offset2 {
-    margin-left: 19.65811965811966%;
-    *margin-left: 19.551736679396257%;
-  }
-  .row-fluid .offset2:first-child {
-    margin-left: 17.094017094017094%;
-    *margin-left: 16.98763411529369%;
-  }
-  .row-fluid .offset1 {
-    margin-left: 11.11111111111111%;
-    *margin-left: 11.004728132387708%;
-  }
-  .row-fluid .offset1:first-child {
-    margin-left: 8.547008547008547%;
-    *margin-left: 8.440625568285142%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 30px;
-  }
-  input.span12,
-  textarea.span12,
-  .uneditable-input.span12 {
-    width: 1156px;
-  }
-  input.span11,
-  textarea.span11,
-  .uneditable-input.span11 {
-    width: 1056px;
-  }
-  input.span10,
-  textarea.span10,
-  .uneditable-input.span10 {
-    width: 956px;
-  }
-  input.span9,
-  textarea.span9,
-  .uneditable-input.span9 {
-    width: 856px;
-  }
-  input.span8,
-  textarea.span8,
-  .uneditable-input.span8 {
-    width: 756px;
-  }
-  input.span7,
-  textarea.span7,
-  .uneditable-input.span7 {
-    width: 656px;
-  }
-  input.span6,
-  textarea.span6,
-  .uneditable-input.span6 {
-    width: 556px;
-  }
-  input.span5,
-  textarea.span5,
-  .uneditable-input.span5 {
-    width: 456px;
-  }
-  input.span4,
-  textarea.span4,
-  .uneditable-input.span4 {
-    width: 356px;
-  }
-  input.span3,
-  textarea.span3,
-  .uneditable-input.span3 {
-    width: 256px;
-  }
-  input.span2,
-  textarea.span2,
-  .uneditable-input.span2 {
-    width: 156px;
-  }
-  input.span1,
-  textarea.span1,
-  .uneditable-input.span1 {
-    width: 56px;
-  }
-  .thumbnails {
-    margin-left: -30px;
-  }
-  .thumbnails > li {
-    margin-left: 30px;
-  }
-  .row-fluid .thumbnails {
-    margin-left: 0;
-  }
-}
-
-@media (min-width: 768px) and (max-width: 979px) {
-  .row {
-    margin-left: -20px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    min-height: 1px;
-    margin-left: 20px;
-  }
-  .container,
-  .navbar-static-top .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 724px;
-  }
-  .span12 {
-    width: 724px;
-  }
-  .span11 {
-    width: 662px;
-  }
-  .span10 {
-    width: 600px;
-  }
-  .span9 {
-    width: 538px;
-  }
-  .span8 {
-    width: 476px;
-  }
-  .span7 {
-    width: 414px;
-  }
-  .span6 {
-    width: 352px;
-  }
-  .span5 {
-    width: 290px;
-  }
-  .span4 {
-    width: 228px;
-  }
-  .span3 {
-    width: 166px;
-  }
-  .span2 {
-    width: 104px;
-  }
-  .span1 {
-    width: 42px;
-  }
-  .offset12 {
-    margin-left: 764px;
-  }
-  .offset11 {
-    margin-left: 702px;
-  }
-  .offset10 {
-    margin-left: 640px;
-  }
-  .offset9 {
-    margin-left: 578px;
-  }
-  .offset8 {
-    margin-left: 516px;
-  }
-  .offset7 {
-    margin-left: 454px;
-  }
-  .offset6 {
-    margin-left: 392px;
-  }
-  .offset5 {
-    margin-left: 330px;
-  }
-  .offset4 {
-    margin-left: 268px;
-  }
-  .offset3 {
-    margin-left: 206px;
-  }
-  .offset2 {
-    margin-left: 144px;
-  }
-  .offset1 {
-    margin-left: 82px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    float: left;
-    width: 100%;
-    min-height: 30px;
-    margin-left: 2.7624309392265194%;
-    *margin-left: 2.709239449864817%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 2.7624309392265194%;
-  }
-  .row-fluid .span12 {
-    width: 100%;
-    *width: 99.94680851063829%;
-  }
-  .row-fluid .span11 {
-    width: 91.43646408839778%;
-    *width: 91.38327259903608%;
-  }
-  .row-fluid .span10 {
-    width: 82.87292817679558%;
-    *width: 82.81973668743387%;
-  }
-  .row-fluid .span9 {
-    width: 74.30939226519337%;
-    *width: 74.25620077583166%;
-  }
-  .row-fluid .span8 {
-    width: 65.74585635359117%;
-    *width: 65.69266486422946%;
-  }
-  .row-fluid .span7 {
-    width: 57.18232044198895%;
-    *width: 57.12912895262725%;
-  }
-  .row-fluid .span6 {
-    width: 48.61878453038674%;
-    *width: 48.56559304102504%;
-  }
-  .row-fluid .span5 {
-    width: 40.05524861878453%;
-    *width: 40.00205712942283%;
-  }
-  .row-fluid .span4 {
-    width: 31.491712707182323%;
-    *width: 31.43852121782062%;
-  }
-  .row-fluid .span3 {
-    width: 22.92817679558011%;
-    *width: 22.87498530621841%;
-  }
-  .row-fluid .span2 {
-    width: 14.3646408839779%;
-    *width: 14.311449394616199%;
-  }
-  .row-fluid .span1 {
-    width: 5.801104972375691%;
-    *width: 5.747913483013988%;
-  }
-  .row-fluid .offset12 {
-    margin-left: 105.52486187845304%;
-    *margin-left: 105.41847889972962%;
-  }
-  .row-fluid .offset12:first-child {
-    margin-left: 102.76243093922652%;
-    *margin-left: 102.6560479605031%;
-  }
-  .row-fluid .offset11 {
-    margin-left: 96.96132596685082%;
-    *margin-left: 96.8549429881274%;
-  }
-  .row-fluid .offset11:first-child {
-    margin-left: 94.1988950276243%;
-    *margin-left: 94.09251204890089%;
-  }
-  .row-fluid .offset10 {
-    margin-left: 88.39779005524862%;
-    *margin-left: 88.2914070765252%;
-  }
-  .row-fluid .offset10:first-child {
-    margin-left: 85.6353591160221%;
-    *margin-left: 85.52897613729868%;
-  }
-  .row-fluid .offset9 {
-    margin-left: 79.8342541436464%;
-    *margin-left: 79.72787116492299%;
-  }
-  .row-fluid .offset9:first-child {
-    margin-left: 77.07182320441989%;
-    *margin-left: 76.96544022569647%;
-  }
-  .row-fluid .offset8 {
-    margin-left: 71.2707182320442%;
-    *margin-left: 71.16433525332079%;
-  }
-  .row-fluid .offset8:first-child {
-    margin-left: 68.50828729281768%;
-    *margin-left: 68.40190431409427%;
-  }
-  .row-fluid .offset7 {
-    margin-left: 62.70718232044199%;
-    *margin-left: 62.600799341718584%;
-  }
-  .row-fluid .offset7:first-child {
-    margin-left: 59.94475138121547%;
-    *margin-left: 59.838368402492065%;
-  }
-  .row-fluid .offset6 {
-    margin-left: 54.14364640883978%;
-    *margin-left: 54.037263430116376%;
-  }
-  .row-fluid .offset6:first-child {
-    margin-left: 51.38121546961326%;
-    *margin-left: 51.27483249088986%;
-  }
-  .row-fluid .offset5 {
-    margin-left: 45.58011049723757%;
-    *margin-left: 45.47372751851417%;
-  }
-  .row-fluid .offset5:first-child {
-    margin-left: 42.81767955801105%;
-    *margin-left: 42.71129657928765%;
-  }
-  .row-fluid .offset4 {
-    margin-left: 37.01657458563536%;
-    *margin-left: 36.91019160691196%;
-  }
-  .row-fluid .offset4:first-child {
-    margin-left: 34.25414364640884%;
-    *margin-left: 34.14776066768544%;
-  }
-  .row-fluid .offset3 {
-    margin-left: 28.45303867403315%;
-    *margin-left: 28.346655695309746%;
-  }
-  .row-fluid .offset3:first-child {
-    margin-left: 25.69060773480663%;
-    *margin-left: 25.584224756083227%;
-  }
-  .row-fluid .offset2 {
-    margin-left: 19.88950276243094%;
-    *margin-left: 19.783119783707537%;
-  }
-  .row-fluid .offset2:first-child {
-    margin-left: 17.12707182320442%;
-    *margin-left: 17.02068884448102%;
-  }
-  .row-fluid .offset1 {
-    margin-left: 11.32596685082873%;
-    *margin-left: 11.219583872105325%;
-  }
-  .row-fluid .offset1:first-child {
-    margin-left: 8.56353591160221%;
-    *margin-left: 8.457152932878806%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 20px;
-  }
-  input.span12,
-  textarea.span12,
-  .uneditable-input.span12 {
-    width: 710px;
-  }
-  input.span11,
-  textarea.span11,
-  .uneditable-input.span11 {
-    width: 648px;
-  }
-  input.span10,
-  textarea.span10,
-  .uneditable-input.span10 {
-    width: 586px;
-  }
-  input.span9,
-  textarea.span9,
-  .uneditable-input.span9 {
-    width: 524px;
-  }
-  input.span8,
-  textarea.span8,
-  .uneditable-input.span8 {
-    width: 462px;
-  }
-  input.span7,
-  textarea.span7,
-  .uneditable-input.span7 {
-    width: 400px;
-  }
-  input.span6,
-  textarea.span6,
-  .uneditable-input.span6 {
-    width: 338px;
-  }
-  input.span5,
-  textarea.span5,
-  .uneditable-input.span5 {
-    width: 276px;
-  }
-  input.span4,
-  textarea.span4,
-  .uneditable-input.span4 {
-    width: 214px;
-  }
-  input.span3,
-  textarea.span3,
-  .uneditable-input.span3 {
-    width: 152px;
-  }
-  input.span2,
-  textarea.span2,
-  .uneditable-input.span2 {
-    width: 90px;
-  }
-  input.span1,
-  textarea.span1,
-  .uneditable-input.span1 {
-    width: 28px;
-  }
-}
-
-@media (max-width: 767px) {
-  body {
-    padding-right: 20px;
-    padding-left: 20px;
-  }
-  .navbar-fixed-top,
-  .navbar-fixed-bottom,
-  .navbar-static-top {
-    margin-right: -20px;
-    margin-left: -20px;
-  }
-  .container-fluid {
-    padding: 0;
-  }
-  .dl-horizontal dt {
-    float: none;
-    width: auto;
-    clear: none;
-    text-align: left;
-  }
-  .dl-horizontal dd {
-    margin-left: 0;
-  }
-  .container {
-    width: auto;
-  }
-  .row-fluid {
-    width: 100%;
-  }
-  .row,
-  .thumbnails {
-    margin-left: 0;
-  }
-  .thumbnails > li {
-    float: none;
-    margin-left: 0;
-  }
-  [class*="span"],
-  .uneditable-input[class*="span"],
-  .row-fluid [class*="span"] {
-    display: block;
-    float: none;
-    width: 100%;
-    margin-left: 0;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .span12,
-  .row-fluid .span12 {
-    width: 100%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .row-fluid [class*="offset"]:first-child {
-    margin-left: 0;
-  }
-  .input-large,
-  .input-xlarge,
-  .input-xxlarge,
-  input[class*="span"],
-  select[class*="span"],
-  textarea[class*="span"],
-  .uneditable-input {
-    display: block;
-    width: 100%;
-    min-height: 30px;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .input-prepend input,
-  .input-append input,
-  .input-prepend input[class*="span"],
-  .input-append input[class*="span"] {
-    display: inline-block;
-    width: auto;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 0;
-  }
-  .modal {
-    position: fixed;
-    top: 20px;
-    right: 20px;
-    left: 20px;
-    width: auto;
-    margin: 0;
-  }
-  .modal.fade {
-    top: -100px;
-  }
-  .modal.fade.in {
-    top: 20px;
-  }
-}
-
-@media (max-width: 480px) {
-  .nav-collapse {
-    -webkit-transform: translate3d(0, 0, 0);
-  }
-  .page-header h1 small {
-    display: block;
-    line-height: 20px;
-  }
-  input[type="checkbox"],
-  input[type="radio"] {
-    border: 1px solid #ccc;
-  }
-  .form-horizontal .control-label {
-    float: none;
-    width: auto;
-    padding-top: 0;
-    text-align: left;
-  }
-  .form-horizontal .controls {
-    margin-left: 0;
-  }
-  .form-horizontal .control-list {
-    padding-top: 0;
-  }
-  .form-horizontal .form-actions {
-    padding-right: 10px;
-    padding-left: 10px;
-  }
-  .media .pull-left,
-  .media .pull-right {
-    display: block;
-    float: none;
-    margin-bottom: 10px;
-  }
-  .media-object {
-    margin-right: 0;
-    margin-left: 0;
-  }
-  .modal {
-    top: 10px;
-    right: 10px;
-    left: 10px;
-  }
-  .modal-header .close {
-    padding: 10px;
-    margin: -10px;
-  }
-  .carousel-caption {
-    position: static;
-  }
-}
-
-@media (max-width: 979px) {
-  body {
-    padding-top: 0;
-  }
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    position: static;
-  }
-  .navbar-fixed-top {
-    margin-bottom: 20px;
-  }
-  .navbar-fixed-bottom {
-    margin-top: 20px;
-  }
-  .navbar-fixed-top .navbar-inner,
-  .navbar-fixed-bottom .navbar-inner {
-    padding: 5px;
-  }
-  .navbar .container {
-    width: auto;
-    padding: 0;
-  }
-  .navbar .brand {
-    padding-right: 10px;
-    padding-left: 10px;
-    margin: 0 0 0 -5px;
-  }
-  .nav-collapse {
-    clear: both;
-  }
-  .nav-collapse .nav {
-    float: none;
-    margin: 0 0 10px;
-  }
-  .nav-collapse .nav > li {
-    float: none;
-  }
-  .nav-collapse .nav > li > a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > .divider-vertical {
-    display: none;
-  }
-  .nav-collapse .nav .nav-header {
-    color: #777777;
-    text-shadow: none;
-  }
-  .nav-collapse .nav > li > a,
-  .nav-collapse .dropdown-menu a {
-    padding: 9px 15px;
-    font-weight: bold;
-    color: #777777;
-    -webkit-border-radius: 3px;
-       -moz-border-radius: 3px;
-            border-radius: 3px;
-  }
-  .nav-collapse .btn {
-    padding: 4px 10px 4px;
-    font-weight: normal;
-    -webkit-border-radius: 4px;
-       -moz-border-radius: 4px;
-            border-radius: 4px;
-  }
-  .nav-collapse .dropdown-menu li + li a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > li > a:hover,
-  .nav-collapse .nav > li > a:focus,
-  .nav-collapse .dropdown-menu a:hover,
-  .nav-collapse .dropdown-menu a:focus {
-    background-color: #f2f2f2;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a,
-  .navbar-inverse .nav-collapse .dropdown-menu a {
-    color: #999999;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a:hover,
-  .navbar-inverse .nav-collapse .nav > li > a:focus,
-  .navbar-inverse .nav-collapse .dropdown-menu a:hover,
-  .navbar-inverse .nav-collapse .dropdown-menu a:focus {
-    background-color: #111111;
-  }
-  .nav-collapse.in .btn-group {
-    padding: 0;
-    margin-top: 5px;
-  }
-  .nav-collapse .dropdown-menu {
-    position: static;
-    top: auto;
-    left: auto;
-    display: none;
-    float: none;
-    max-width: none;
-    padding: 0;
-    margin: 0 15px;
-    background-color: transparent;
-    border: none;
-    -webkit-border-radius: 0;
-       -moz-border-radius: 0;
-            border-radius: 0;
-    -webkit-box-shadow: none;
-       -moz-box-shadow: none;
-            box-shadow: none;
-  }
-  .nav-collapse .open > .dropdown-menu {
-    display: block;
-  }
-  .nav-collapse .dropdown-menu:before,
-  .nav-collapse .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .dropdown-menu .divider {
-    display: none;
-  }
-  .nav-collapse .nav > li > .dropdown-menu:before,
-  .nav-collapse .nav > li > .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .navbar-form,
-  .nav-collapse .navbar-search {
-    float: none;
-    padding: 10px 15px;
-    margin: 10px 0;
-    border-top: 1px solid #f2f2f2;
-    border-bottom: 1px solid #f2f2f2;
-    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  }
-  .navbar-inverse .nav-collapse .navbar-form,
-  .navbar-inverse .nav-collapse .navbar-search {
-    border-top-color: #111111;
-    border-bottom-color: #111111;
-  }
-  .navbar .nav-collapse .nav.pull-right {
-    float: none;
-    margin-left: 0;
-  }
-  .nav-collapse,
-  .nav-collapse.collapse {
-    height: 0;
-    overflow: hidden;
-  }
-  .navbar .btn-navbar {
-    display: block;
-  }
-  .navbar-static .navbar-inner {
-    padding-right: 10px;
-    padding-left: 10px;
-  }
-}
-
-@media (min-width: 980px) {
-  .nav-collapse.collapse {
-    height: auto !important;
-    overflow: visible !important;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap.css b/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap.css
deleted file mode 100644
index b2550569..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/css/bootstrap.css
+++ /dev/null
@@ -1,6158 +0,0 @@
-/*!
- * Bootstrap v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-audio:not([controls]) {
-  display: none;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-a:hover,
-a:active {
-  outline: 0;
-}
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  width: auto\9;
-  height: auto;
-  max-width: 100%;
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-
-.img-rounded {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.img-circle {
-  -webkit-border-radius: 500px;
-     -moz-border-radius: 500px;
-          border-radius: 500px;
-}
-
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row:after {
-  clear: both;
-}
-
-[class*="span"] {
-  float: left;
-  min-height: 1px;
-  margin-left: 20px;
-}
-
-.container,
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.span12 {
-  width: 940px;
-}
-
-.span11 {
-  width: 860px;
-}
-
-.span10 {
-  width: 780px;
-}
-
-.span9 {
-  width: 700px;
-}
-
-.span8 {
-  width: 620px;
-}
-
-.span7 {
-  width: 540px;
-}
-
-.span6 {
-  width: 460px;
-}
-
-.span5 {
-  width: 380px;
-}
-
-.span4 {
-  width: 300px;
-}
-
-.span3 {
-  width: 220px;
-}
-
-.span2 {
-  width: 140px;
-}
-
-.span1 {
-  width: 60px;
-}
-
-.offset12 {
-  margin-left: 980px;
-}
-
-.offset11 {
-  margin-left: 900px;
-}
-
-.offset10 {
-  margin-left: 820px;
-}
-
-.offset9 {
-  margin-left: 740px;
-}
-
-.offset8 {
-  margin-left: 660px;
-}
-
-.offset7 {
-  margin-left: 580px;
-}
-
-.offset6 {
-  margin-left: 500px;
-}
-
-.offset5 {
-  margin-left: 420px;
-}
-
-.offset4 {
-  margin-left: 340px;
-}
-
-.offset3 {
-  margin-left: 260px;
-}
-
-.offset2 {
-  margin-left: 180px;
-}
-
-.offset1 {
-  margin-left: 100px;
-}
-
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row-fluid:after {
-  clear: both;
-}
-
-.row-fluid [class*="span"] {
-  display: block;
-  float: left;
-  width: 100%;
-  min-height: 30px;
-  margin-left: 2.127659574468085%;
-  *margin-left: 2.074468085106383%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.row-fluid [class*="span"]:first-child {
-  margin-left: 0;
-}
-
-.row-fluid .controls-row [class*="span"] + [class*="span"] {
-  margin-left: 2.127659574468085%;
-}
-
-.row-fluid .span12 {
-  width: 100%;
-  *width: 99.94680851063829%;
-}
-
-.row-fluid .span11 {
-  width: 91.48936170212765%;
-  *width: 91.43617021276594%;
-}
-
-.row-fluid .span10 {
-  width: 82.97872340425532%;
-  *width: 82.92553191489361%;
-}
-
-.row-fluid .span9 {
-  width: 74.46808510638297%;
-  *width: 74.41489361702126%;
-}
-
-.row-fluid .span8 {
-  width: 65.95744680851064%;
-  *width: 65.90425531914893%;
-}
-
-.row-fluid .span7 {
-  width: 57.44680851063829%;
-  *width: 57.39361702127659%;
-}
-
-.row-fluid .span6 {
-  width: 48.93617021276595%;
-  *width: 48.88297872340425%;
-}
-
-.row-fluid .span5 {
-  width: 40.42553191489362%;
-  *width: 40.37234042553192%;
-}
-
-.row-fluid .span4 {
-  width: 31.914893617021278%;
-  *width: 31.861702127659576%;
-}
-
-.row-fluid .span3 {
-  width: 23.404255319148934%;
-  *width: 23.351063829787233%;
-}
-
-.row-fluid .span2 {
-  width: 14.893617021276595%;
-  *width: 14.840425531914894%;
-}
-
-.row-fluid .span1 {
-  width: 6.382978723404255%;
-  *width: 6.329787234042553%;
-}
-
-.row-fluid .offset12 {
-  margin-left: 104.25531914893617%;
-  *margin-left: 104.14893617021275%;
-}
-
-.row-fluid .offset12:first-child {
-  margin-left: 102.12765957446808%;
-  *margin-left: 102.02127659574467%;
-}
-
-.row-fluid .offset11 {
-  margin-left: 95.74468085106382%;
-  *margin-left: 95.6382978723404%;
-}
-
-.row-fluid .offset11:first-child {
-  margin-left: 93.61702127659574%;
-  *margin-left: 93.51063829787232%;
-}
-
-.row-fluid .offset10 {
-  margin-left: 87.23404255319149%;
-  *margin-left: 87.12765957446807%;
-}
-
-.row-fluid .offset10:first-child {
-  margin-left: 85.1063829787234%;
-  *margin-left: 84.99999999999999%;
-}
-
-.row-fluid .offset9 {
-  margin-left: 78.72340425531914%;
-  *margin-left: 78.61702127659572%;
-}
-
-.row-fluid .offset9:first-child {
-  margin-left: 76.59574468085106%;
-  *margin-left: 76.48936170212764%;
-}
-
-.row-fluid .offset8 {
-  margin-left: 70.2127659574468%;
-  *margin-left: 70.10638297872339%;
-}
-
-.row-fluid .offset8:first-child {
-  margin-left: 68.08510638297872%;
-  *margin-left: 67.9787234042553%;
-}
-
-.row-fluid .offset7 {
-  margin-left: 61.70212765957446%;
-  *margin-left: 61.59574468085106%;
-}
-
-.row-fluid .offset7:first-child {
-  margin-left: 59.574468085106375%;
-  *margin-left: 59.46808510638297%;
-}
-
-.row-fluid .offset6 {
-  margin-left: 53.191489361702125%;
-  *margin-left: 53.085106382978715%;
-}
-
-.row-fluid .offset6:first-child {
-  margin-left: 51.063829787234035%;
-  *margin-left: 50.95744680851063%;
-}
-
-.row-fluid .offset5 {
-  margin-left: 44.68085106382979%;
-  *margin-left: 44.57446808510638%;
-}
-
-.row-fluid .offset5:first-child {
-  margin-left: 42.5531914893617%;
-  *margin-left: 42.4468085106383%;
-}
-
-.row-fluid .offset4 {
-  margin-left: 36.170212765957444%;
-  *margin-left: 36.06382978723405%;
-}
-
-.row-fluid .offset4:first-child {
-  margin-left: 34.04255319148936%;
-  *margin-left: 33.93617021276596%;
-}
-
-.row-fluid .offset3 {
-  margin-left: 27.659574468085104%;
-  *margin-left: 27.5531914893617%;
-}
-
-.row-fluid .offset3:first-child {
-  margin-left: 25.53191489361702%;
-  *margin-left: 25.425531914893618%;
-}
-
-.row-fluid .offset2 {
-  margin-left: 19.148936170212764%;
-  *margin-left: 19.04255319148936%;
-}
-
-.row-fluid .offset2:first-child {
-  margin-left: 17.02127659574468%;
-  *margin-left: 16.914893617021278%;
-}
-
-.row-fluid .offset1 {
-  margin-left: 10.638297872340425%;
-  *margin-left: 10.53191489361702%;
-}
-
-.row-fluid .offset1:first-child {
-  margin-left: 8.51063829787234%;
-  *margin-left: 8.404255319148938%;
-}
-
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
-
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  *zoom: 1;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container:after {
-  clear: both;
-}
-
-.container-fluid {
-  padding-right: 20px;
-  padding-left: 20px;
-  *zoom: 1;
-}
-
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container-fluid:after {
-  clear: both;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 21px;
-  font-weight: 200;
-  line-height: 30px;
-}
-
-small {
-  font-size: 85%;
-}
-
-strong {
-  font-weight: bold;
-}
-
-em {
-  font-style: italic;
-}
-
-cite {
-  font-style: normal;
-}
-
-.muted {
-  color: #999999;
-}
-
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-
-.text-warning {
-  color: #c09853;
-}
-
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-
-.text-error {
-  color: #b94a48;
-}
-
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-
-.text-info {
-  color: #3a87ad;
-}
-
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-
-.text-success {
-  color: #468847;
-}
-
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-center {
-  text-align: center;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-
-h1 {
-  font-size: 38.5px;
-}
-
-h2 {
-  font-size: 31.5px;
-}
-
-h3 {
-  font-size: 24.5px;
-}
-
-h4 {
-  font-size: 17.5px;
-}
-
-h5 {
-  font-size: 14px;
-}
-
-h6 {
-  font-size: 11.9px;
-}
-
-h1 small {
-  font-size: 24.5px;
-}
-
-h2 small {
-  font-size: 17.5px;
-}
-
-h3 small {
-  font-size: 14px;
-}
-
-h4 small {
-  font-size: 14px;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-
-li {
-  line-height: 20px;
-}
-
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  padding-right: 5px;
-  padding-left: 5px;
-  *zoom: 1;
-}
-
-dl {
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 20px;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 10px;
-}
-
-.dl-horizontal {
-  *zoom: 1;
-}
-
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.dl-horizontal:after {
-  clear: both;
-}
-
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  overflow: hidden;
-  clear: left;
-  text-align: right;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p {
-  margin-bottom: 0;
-  font-size: 17.5px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-
-blockquote.pull-right small:before {
-  content: '';
-}
-
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-code {
-  padding: 2px 4px;
-  color: #d14;
-  white-space: nowrap;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-form {
-  margin: 0 0 20px;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 14px;
-  line-height: 20px;
-  color: #555555;
-  vertical-align: middle;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-
-textarea {
-  height: auto;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-          transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  *margin-top: 0;
-  line-height: normal;
-}
-
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-
-select {
-  width: 220px;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  cursor: not-allowed;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-}
-
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-
-.input-mini {
-  width: 60px;
-}
-
-.input-small {
-  width: 90px;
-}
-
-.input-medium {
-  width: 150px;
-}
-
-.input-large {
-  width: 210px;
-}
-
-.input-xlarge {
-  width: 270px;
-}
-
-.input-xxlarge {
-  width: 530px;
-}
-
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-
-.controls-row {
-  *zoom: 1;
-}
-
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.controls-row:after {
-  clear: both;
-}
-
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-     -moz-box-shadow: 0 0 6px #f8b9b7;
-          box-shadow: 0 0 6px #f8b9b7;
-}
-
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-actions:after {
-  clear: both;
-}
-
-.help-block,
-.help-inline {
-  color: #595959;
-}
-
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  padding-left: 5px;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 14px;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-/* Allow for input prepend/append in search forms */
-
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-.control-group {
-  margin-bottom: 10px;
-}
-
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-horizontal .control-group:after {
-  clear: both;
-}
-
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table th {
-  font-weight: bold;
-}
-
-.table thead th {
-  vertical-align: bottom;
-}
-
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table .table {
-  background-color: #ffffff;
-}
-
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  margin-top: 1px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  width: 16px;
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  width: 16px;
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  width: 16px;
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-.dropup,
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  outline: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.open {
-  *z-index: 1000;
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.dropdown-submenu {
-  position: relative;
-}
-
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-     -moz-border-radius: 0 6px 6px 6px;
-          border-radius: 0 6px 6px 6px;
-}
-
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-     -moz-border-radius: 5px 5px 5px 0;
-          border-radius: 5px 5px 5px 0;
-}
-
-.dropdown-submenu > a:after {
-  display: block;
-  float: right;
-  width: 0;
-  height: 0;
-  margin-top: 5px;
-  margin-right: -10px;
-  border-color: transparent;
-  border-left-color: #cccccc;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  content: " ";
-}
-
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-
-.dropdown-submenu.pull-left {
-  float: none;
-}
-
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.dropdown .dropdown-menu .nav-header {
-  padding-right: 20px;
-  padding-left: 20px;
-}
-
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-     -moz-transition: opacity 0.15s linear;
-       -o-transition: opacity 0.15s linear;
-          transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-     -moz-transition: height 0.35s ease;
-       -o-transition: height 0.35s ease;
-          transition: height 0.35s ease;
-}
-
-.collapse.in {
-  height: auto;
-}
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-
-.close:hover,
-.close:focus {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-}
-
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-
-.btn {
-  display: inline-block;
-  *display: inline;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  *margin-left: .3em;
-  font-size: 14px;
-  line-height: 20px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #f5f5f5;
-  *background-color: #e6e6e6;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-
-.btn:first-child {
-  *margin-left: 0;
-}
-
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-     -moz-transition: background-position 0.1s linear;
-       -o-transition: background-position 0.1s linear;
-          transition: background-position 0.1s linear;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-large {
-  padding: 11px 19px;
-  font-size: 17.5px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.9px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-
-.btn-mini {
-  padding: 0 6px;
-  font-size: 10.5px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  *background-color: #0044cc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  *background-color: #f89406;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  *background-color: #bd362f;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  *background-color: #51a351;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  *background-color: #2f96b4;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  *background-color: #222222;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-link {
-  color: #0088cc;
-  cursor: pointer;
-  border-color: transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  *margin-left: .3em;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.btn-group:first-child {
-  *margin-left: 0;
-}
-
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-toolbar {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  font-size: 0;
-}
-
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 14px;
-}
-
-.btn-group > .btn-mini {
-  font-size: 10.5px;
-}
-
-.btn-group > .btn-small {
-  font-size: 11.9px;
-}
-
-.btn-group > .btn-large {
-  font-size: 17.5px;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 6px;
-          border-bottom-left-radius: 6px;
-  -webkit-border-top-left-radius: 6px;
-          border-top-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  -moz-border-radius-topleft: 6px;
-}
-
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-          border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-          border-bottom-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  -moz-border-radius-bottomright: 6px;
-}
-
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  *padding-top: 5px;
-  padding-right: 8px;
-  *padding-bottom: 5px;
-  padding-left: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group > .btn-mini + .dropdown-toggle {
-  *padding-top: 2px;
-  padding-right: 5px;
-  *padding-bottom: 2px;
-  padding-left: 5px;
-}
-
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-
-.btn-group > .btn-large + .dropdown-toggle {
-  *padding-top: 7px;
-  padding-right: 12px;
-  *padding-bottom: 7px;
-  padding-left: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-
-.btn-large .caret {
-  margin-top: 6px;
-}
-
-.btn-large .caret {
-  border-top-width: 5px;
-  border-right-width: 5px;
-  border-left-width: 5px;
-}
-
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group-vertical > .btn + .btn {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-     -moz-border-radius: 6px 6px 0 0;
-          border-radius: 6px 6px 0 0;
-}
-
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-
-.alert h4 {
-  margin: 0;
-}
-
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-
-.alert-success {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-
-.alert-success h4 {
-  color: #468847;
-}
-
-.alert-danger,
-.alert-error {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-
-.alert-info {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-
-.alert-info h4 {
-  color: #3a87ad;
-}
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-
-.alert-block p + p {
-  margin-top: 5px;
-}
-
-.nav {
-  margin-bottom: 20px;
-  margin-left: 0;
-  list-style: none;
-}
-
-.nav > li > a {
-  display: block;
-}
-
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li > a > img {
-  max-width: none;
-}
-
-.nav > .pull-right {
-  float: right;
-}
-
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-.nav-list {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-bottom: 0;
-}
-
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-right: -15px;
-  margin-left: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  cursor: default;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  z-index: 2;
-  border-color: #ddd;
-}
-
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.nav .dropdown-toggle .caret {
-  margin-top: 6px;
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-}
-
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-
-/* move down carets for tabs */
-
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-
-.tabbable {
-  *zoom: 1;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tab-content {
-  overflow: auto;
-}
-
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-top-color: #ddd;
-  border-bottom-color: transparent;
-}
-
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-
-.nav > .disabled > a {
-  color: #999999;
-}
-
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-}
-
-.navbar {
-  *position: relative;
-  *z-index: 2;
-  margin-bottom: 20px;
-  overflow: visible;
-}
-
-.navbar-inner {
-  min-height: 40px;
-  padding-right: 20px;
-  padding-left: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-}
-
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-inner:after {
-  clear: both;
-}
-
-.navbar .container {
-  width: auto;
-}
-
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-
-.navbar .brand {
-  display: block;
-  float: left;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-
-.navbar-link {
-  color: #777777;
-}
-
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-right: 1px solid #ffffff;
-  border-left: 1px solid #f2f2f2;
-}
-
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-form:after {
-  clear: both;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-
-.navbar-search .search-query {
-  padding: 4px 14px;
-  margin-bottom: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.navbar-fixed-top {
-  top: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-
-.navbar .nav > li {
-  float: left;
-}
-
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: transparent;
-}
-
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-right: 5px;
-  margin-left: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  *background-color: #e5e5e5;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-     -moz-border-radius: 1px;
-          border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-
-.navbar .nav > li > .dropdown-menu:before {
-  position: absolute;
-  top: -7px;
-  left: 9px;
-  display: inline-block;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-left: 7px solid transparent;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  content: '';
-}
-
-.navbar .nav > li > .dropdown-menu:after {
-  position: absolute;
-  top: -6px;
-  left: 10px;
-  display: inline-block;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  border-left: 6px solid transparent;
-  content: '';
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  top: auto;
-  bottom: -7px;
-  border-top: 7px solid #ccc;
-  border-bottom: 0;
-  border-top-color: rgba(0, 0, 0, 0.2);
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  top: auto;
-  bottom: -6px;
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-}
-
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #555555;
-  background-color: #e5e5e5;
-}
-
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  right: 12px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  right: 13px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  right: 100%;
-  left: auto;
-  margin-right: -1px;
-  margin-left: 0;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  border-color: #252525;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-}
-
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-
-.navbar-inverse .brand {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-
-.navbar-inverse .divider-vertical {
-  border-right-color: #222222;
-  border-left-color: #111111;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #ffffff;
-  background-color: #111111;
-}
-
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-     -moz-transition: none;
-       -o-transition: none;
-          transition: none;
-}
-
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  outline: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-}
-
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  *background-color: #040404;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin: 0 0 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.breadcrumb > li {
-  display: inline-block;
-  *display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-
-.breadcrumb > li > .divider {
-  padding: 0 5px;
-  color: #ccc;
-}
-
-.breadcrumb > .active {
-  color: #999999;
-}
-
-.pagination {
-  margin: 20px 0;
-}
-
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  margin-left: 0;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.pagination ul > li {
-  display: inline;
-}
-
-.pagination ul > li > a,
-.pagination ul > li > span {
-  float: left;
-  padding: 4px 12px;
-  line-height: 20px;
-  text-decoration: none;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-left-width: 0;
-}
-
-.pagination ul > li > a:hover,
-.pagination ul > li > a:focus,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  background-color: #f5f5f5;
-}
-
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: #999999;
-  cursor: default;
-}
-
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover,
-.pagination ul > .disabled > a:focus {
-  color: #999999;
-  cursor: default;
-  background-color: transparent;
-}
-
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
-  border-left-width: 1px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.pagination-centered {
-  text-align: center;
-}
-
-.pagination-right {
-  text-align: right;
-}
-
-.pagination-large ul > li > a,
-.pagination-large ul > li > span {
-  padding: 11px 19px;
-  font-size: 17.5px;
-}
-
-.pagination-large ul > li:first-child > a,
-.pagination-large ul > li:first-child > span {
-  -webkit-border-bottom-left-radius: 6px;
-          border-bottom-left-radius: 6px;
-  -webkit-border-top-left-radius: 6px;
-          border-top-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  -moz-border-radius-topleft: 6px;
-}
-
-.pagination-large ul > li:last-child > a,
-.pagination-large ul > li:last-child > span {
-  -webkit-border-top-right-radius: 6px;
-          border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-          border-bottom-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  -moz-border-radius-bottomright: 6px;
-}
-
-.pagination-mini ul > li:first-child > a,
-.pagination-small ul > li:first-child > a,
-.pagination-mini ul > li:first-child > span,
-.pagination-small ul > li:first-child > span {
-  -webkit-border-bottom-left-radius: 3px;
-          border-bottom-left-radius: 3px;
-  -webkit-border-top-left-radius: 3px;
-          border-top-left-radius: 3px;
-  -moz-border-radius-bottomleft: 3px;
-  -moz-border-radius-topleft: 3px;
-}
-
-.pagination-mini ul > li:last-child > a,
-.pagination-small ul > li:last-child > a,
-.pagination-mini ul > li:last-child > span,
-.pagination-small ul > li:last-child > span {
-  -webkit-border-top-right-radius: 3px;
-          border-top-right-radius: 3px;
-  -webkit-border-bottom-right-radius: 3px;
-          border-bottom-right-radius: 3px;
-  -moz-border-radius-topright: 3px;
-  -moz-border-radius-bottomright: 3px;
-}
-
-.pagination-small ul > li > a,
-.pagination-small ul > li > span {
-  padding: 2px 10px;
-  font-size: 11.9px;
-}
-
-.pagination-mini ul > li > a,
-.pagination-mini ul > li > span {
-  padding: 0 6px;
-  font-size: 10.5px;
-}
-
-.pager {
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-  *zoom: 1;
-}
-
-.pager:before,
-.pager:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.pager:after {
-  clear: both;
-}
-
-.pager li {
-  display: inline;
-}
-
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #999999;
-  cursor: default;
-  background-color: #fff;
-}
-
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-
-.modal-backdrop.fade {
-  opacity: 0;
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  outline: none;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding-box;
-          background-clip: padding-box;
-}
-
-.modal.fade {
-  top: -25%;
-  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
-     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
-       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
-          transition: opacity 0.3s linear, top 0.3s ease-out;
-}
-
-.modal.fade.in {
-  top: 10%;
-}
-
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-
-.modal-header .close {
-  margin-top: 2px;
-}
-
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-
-.modal-body {
-  position: relative;
-  max-height: 400px;
-  padding: 15px;
-  overflow-y: auto;
-}
-
-.modal-form {
-  margin-bottom: 0;
-}
-
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-     -moz-box-shadow: inset 0 1px 0 #ffffff;
-          box-shadow: inset 0 1px 0 #ffffff;
-}
-
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.modal-footer:after {
-  clear: both;
-}
-
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-}
-
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  font-size: 11px;
-  line-height: 1.4;
-  opacity: 0;
-  filter: alpha(opacity=0);
-  visibility: visible;
-}
-
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.tooltip.top {
-  padding: 5px 0;
-  margin-top: -3px;
-}
-
-.tooltip.right {
-  padding: 0 5px;
-  margin-left: 3px;
-}
-
-.tooltip.bottom {
-  padding: 5px 0;
-  margin-top: 3px;
-}
-
-.tooltip.left {
-  padding: 0 5px;
-  margin-left: -3px;
-}
-
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-top-color: #000000;
-  border-width: 5px 5px 0;
-}
-
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-right-color: #000000;
-  border-width: 5px 5px 5px 0;
-}
-
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-left-color: #000000;
-  border-width: 5px 0 5px 5px;
-}
-
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-bottom-color: #000000;
-  border-width: 0 5px 5px;
-}
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left;
-  white-space: normal;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.popover.top {
-  margin-top: -10px;
-}
-
-.popover.right {
-  margin-left: 10px;
-}
-
-.popover.bottom {
-  margin-top: 10px;
-}
-
-.popover.left {
-  margin-left: -10px;
-}
-
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  -webkit-border-radius: 5px 5px 0 0;
-     -moz-border-radius: 5px 5px 0 0;
-          border-radius: 5px 5px 0 0;
-}
-
-.popover-title:empty {
-  display: none;
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
-
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.popover .arrow {
-  border-width: 11px;
-}
-
-.popover .arrow:after {
-  border-width: 10px;
-  content: "";
-}
-
-.popover.top .arrow {
-  bottom: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-color: #999;
-  border-top-color: rgba(0, 0, 0, 0.25);
-  border-bottom-width: 0;
-}
-
-.popover.top .arrow:after {
-  bottom: 1px;
-  margin-left: -10px;
-  border-top-color: #ffffff;
-  border-bottom-width: 0;
-}
-
-.popover.right .arrow {
-  top: 50%;
-  left: -11px;
-  margin-top: -11px;
-  border-right-color: #999;
-  border-right-color: rgba(0, 0, 0, 0.25);
-  border-left-width: 0;
-}
-
-.popover.right .arrow:after {
-  bottom: -10px;
-  left: 1px;
-  border-right-color: #ffffff;
-  border-left-width: 0;
-}
-
-.popover.bottom .arrow {
-  top: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-bottom-color: #999;
-  border-bottom-color: rgba(0, 0, 0, 0.25);
-  border-top-width: 0;
-}
-
-.popover.bottom .arrow:after {
-  top: 1px;
-  margin-left: -10px;
-  border-bottom-color: #ffffff;
-  border-top-width: 0;
-}
-
-.popover.left .arrow {
-  top: 50%;
-  right: -11px;
-  margin-top: -11px;
-  border-left-color: #999;
-  border-left-color: rgba(0, 0, 0, 0.25);
-  border-right-width: 0;
-}
-
-.popover.left .arrow:after {
-  right: 1px;
-  bottom: -10px;
-  border-left-color: #ffffff;
-  border-right-width: 0;
-}
-
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.thumbnails:after {
-  clear: both;
-}
-
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-
-.thumbnails > li {
-  float: left;
-  margin-bottom: 20px;
-  margin-left: 20px;
-}
-
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 20px;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-  -webkit-transition: all 0.2s ease-in-out;
-     -moz-transition: all 0.2s ease-in-out;
-       -o-transition: all 0.2s ease-in-out;
-          transition: all 0.2s ease-in-out;
-}
-
-a.thumbnail:hover,
-a.thumbnail:focus {
-  border-color: #0088cc;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-.thumbnail .caption {
-  padding: 9px;
-  color: #555555;
-}
-
-.media,
-.media-body {
-  overflow: hidden;
-  *overflow: visible;
-  zoom: 1;
-}
-
-.media,
-.media .media {
-  margin-top: 15px;
-}
-
-.media:first-child {
-  margin-top: 0;
-}
-
-.media-object {
-  display: block;
-}
-
-.media-heading {
-  margin: 0 0 5px;
-}
-
-.media > .pull-left {
-  margin-right: 10px;
-}
-
-.media > .pull-right {
-  margin-left: 10px;
-}
-
-.media-list {
-  margin-left: 0;
-  list-style: none;
-}
-
-.label,
-.badge {
-  display: inline-block;
-  padding: 2px 4px;
-  font-size: 11.844px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  white-space: nowrap;
-  vertical-align: baseline;
-  background-color: #999999;
-}
-
-.label {
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.badge {
-  padding-right: 9px;
-  padding-left: 9px;
-  -webkit-border-radius: 9px;
-     -moz-border-radius: 9px;
-          border-radius: 9px;
-}
-
-.label:empty,
-.badge:empty {
-  display: none;
-}
-
-a.label:hover,
-a.label:focus,
-a.badge:hover,
-a.badge:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label-important,
-.badge-important {
-  background-color: #b94a48;
-}
-
-.label-important[href],
-.badge-important[href] {
-  background-color: #953b39;
-}
-
-.label-warning,
-.badge-warning {
-  background-color: #f89406;
-}
-
-.label-warning[href],
-.badge-warning[href] {
-  background-color: #c67605;
-}
-
-.label-success,
-.badge-success {
-  background-color: #468847;
-}
-
-.label-success[href],
-.badge-success[href] {
-  background-color: #356635;
-}
-
-.label-info,
-.badge-info {
-  background-color: #3a87ad;
-}
-
-.label-info[href],
-.badge-info[href] {
-  background-color: #2d6987;
-}
-
-.label-inverse,
-.badge-inverse {
-  background-color: #333333;
-}
-
-.label-inverse[href],
-.badge-inverse[href] {
-  background-color: #1a1a1a;
-}
-
-.btn .label,
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-
-.btn-mini .label,
-.btn-mini .badge {
-  top: 0;
-}
-
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-ms-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.progress .bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  color: #ffffff;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(to bottom, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-     -moz-transition: width 0.6s ease;
-       -o-transition: width 0.6s ease;
-          transition: width 0.6s ease;
-}
-
-.progress .bar + .bar {
-  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-}
-
-.progress-striped .bar {
-  background-color: #149bdf;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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: 40px 40px;
-     -moz-background-size: 40px 40px;
-       -o-background-size: 40px 40px;
-          background-size: 40px 40px;
-}
-
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-.progress-danger .bar,
-.progress .bar-danger {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
-}
-
-.progress-danger.progress-striped .bar,
-.progress-striped .bar-danger {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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);
-}
-
-.progress-success .bar,
-.progress .bar-success {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(to bottom, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
-}
-
-.progress-success.progress-striped .bar,
-.progress-striped .bar-success {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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);
-}
-
-.progress-info .bar,
-.progress .bar-info {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
-}
-
-.progress-info.progress-striped .bar,
-.progress-striped .bar-info {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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);
-}
-
-.progress-warning .bar,
-.progress .bar-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-}
-
-.progress-warning.progress-striped .bar,
-.progress-striped .bar-warning {
-  background-color: #fbb450;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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);
-}
-
-.accordion {
-  margin-bottom: 20px;
-}
-
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.accordion-heading {
-  border-bottom: 0;
-}
-
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-
-.accordion-toggle {
-  cursor: pointer;
-}
-
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-
-.carousel {
-  position: relative;
-  margin-bottom: 20px;
-  line-height: 1;
-}
-
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-}
-
-.carousel-inner > .item {
-  position: relative;
-  display: none;
-  -webkit-transition: 0.6s ease-in-out left;
-     -moz-transition: 0.6s ease-in-out left;
-       -o-transition: 0.6s ease-in-out left;
-          transition: 0.6s ease-in-out left;
-}
-
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  line-height: 1;
-}
-
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  display: block;
-}
-
-.carousel-inner > .active {
-  left: 0;
-}
-
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-
-.carousel-inner > .next {
-  left: 100%;
-}
-
-.carousel-inner > .prev {
-  left: -100%;
-}
-
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
-  left: 0;
-}
-
-.carousel-inner > .active.left {
-  left: -100%;
-}
-
-.carousel-inner > .active.right {
-  left: 100%;
-}
-
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-     -moz-border-radius: 23px;
-          border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-
-.carousel-control.right {
-  right: 15px;
-  left: auto;
-}
-
-.carousel-control:hover,
-.carousel-control:focus {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-
-.carousel-indicators {
-  position: absolute;
-  top: 15px;
-  right: 15px;
-  z-index: 5;
-  margin: 0;
-  list-style: none;
-}
-
-.carousel-indicators li {
-  display: block;
-  float: left;
-  width: 10px;
-  height: 10px;
-  margin-left: 5px;
-  text-indent: -999px;
-  background-color: #ccc;
-  background-color: rgba(255, 255, 255, 0.25);
-  border-radius: 5px;
-}
-
-.carousel-indicators .active {
-  background-color: #fff;
-}
-
-.carousel-caption {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 15px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-
-.carousel-caption h4,
-.carousel-caption p {
-  line-height: 20px;
-  color: #ffffff;
-}
-
-.carousel-caption h4 {
-  margin: 0 0 5px;
-}
-
-.carousel-caption p {
-  margin-bottom: 0;
-}
-
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 30px;
-  color: inherit;
-  background-color: #eeeeee;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-  color: inherit;
-}
-
-.hero-unit li {
-  line-height: 30px;
-}
-
-.pull-right {
-  float: right;
-}
-
-.pull-left {
-  float: left;
-}
-
-.hide {
-  display: none;
-}
-
-.show {
-  display: block;
-}
-
-.invisible {
-  visibility: hidden;
-}
-
-.affix {
-  position: fixed;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/css/docs.css b/src/main/webapp/bower_components/bootstrap/docs/assets/css/docs.css
deleted file mode 100644
index af655409..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/css/docs.css
+++ /dev/null
@@ -1,1067 +0,0 @@
-/* Add additional stylesheets below
--------------------------------------------------- */
-/*
-  Bootstrap's documentation styles
-  Special styles for presenting Bootstrap's documentation and examples
-*/
-
-
-
-/* Body and structure
--------------------------------------------------- */
-
-body {
-  position: relative;
-  padding-top: 40px;
-}
-
-/* Code in headings */
-h3 code {
-  font-size: 14px;
-  font-weight: normal;
-}
-
-
-
-/* Tweak navbar brand link to be super sleek
--------------------------------------------------- */
-
-body > .navbar {
-  font-size: 13px;
-}
-
-/* Change the docs' brand */
-body > .navbar .brand {
-  padding-right: 0;
-  padding-left: 0;
-  margin-left: 20px;
-  float: right;
-  font-weight: bold;
-  color: #000;
-  text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125);
-  -webkit-transition: all .2s linear;
-     -moz-transition: all .2s linear;
-          transition: all .2s linear;
-}
-body > .navbar .brand:hover {
-  text-decoration: none;
-  text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.4);
-}
-
-
-/* Sections
--------------------------------------------------- */
-
-/* padding for in-page bookmarks and fixed navbar */
-section {
-  padding-top: 30px;
-}
-section > .page-header,
-section > .lead {
-  color: #5a5a5a;
-}
-section > ul li {
-  margin-bottom: 5px;
-}
-
-/* Separators (hr) */
-.bs-docs-separator {
-  margin: 40px 0 39px;
-}
-
-/* Faded out hr */
-hr.soften {
-  height: 1px;
-  margin: 70px 0;
-  background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
-  background-image:    -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
-  background-image:     -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
-  background-image:      -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
-  border: 0;
-}
-
-
-
-/* Jumbotrons
--------------------------------------------------- */
-
-/* Base class
-------------------------- */
-.jumbotron {
-  position: relative;
-  padding: 40px 0;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 3px rgba(0,0,0,.4), 0 0 30px rgba(0,0,0,.075);
-  background: #020031; /* Old browsers */
-  background: -moz-linear-gradient(45deg,  #020031 0%, #6d3353 100%); /* FF3.6+ */
-  background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#020031), color-stop(100%,#6d3353)); /* Chrome,Safari4+ */
-  background: -webkit-linear-gradient(45deg,  #020031 0%,#6d3353 100%); /* Chrome10+,Safari5.1+ */
-  background: -o-linear-gradient(45deg,  #020031 0%,#6d3353 100%); /* Opera 11.10+ */
-  background: -ms-linear-gradient(45deg,  #020031 0%,#6d3353 100%); /* IE10+ */
-  background: linear-gradient(45deg,  #020031 0%,#6d3353 100%); /* W3C */
-  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#020031', endColorstr='#6d3353',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
-  -webkit-box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2);
-     -moz-box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2);
-          box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2);
-}
-.jumbotron h1 {
-  font-size: 80px;
-  font-weight: bold;
-  letter-spacing: -1px;
-  line-height: 1;
-}
-.jumbotron p {
-  font-size: 24px;
-  font-weight: 300;
-  line-height: 1.25;
-  margin-bottom: 30px;
-}
-
-/* Link styles (used on .masthead-links as well) */
-.jumbotron a {
-  color: #fff;
-  color: rgba(255,255,255,.5);
-  -webkit-transition: all .2s ease-in-out;
-     -moz-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-}
-.jumbotron a:hover {
-  color: #fff;
-  text-shadow: 0 0 10px rgba(255,255,255,.25);
-}
-
-/* Download button */
-.masthead .btn {
-  padding: 19px 24px;
-  font-size: 24px;
-  font-weight: 200;
-  color: #fff; /* redeclare to override the `.jumbotron a` */
-  border: 0;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-     -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-          box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-  -webkit-transition: none;
-     -moz-transition: none;
-          transition: none;
-}
-.masthead .btn:hover {
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-     -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-          box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 5px rgba(0,0,0,.25);
-}
-.masthead .btn:active {
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1);
-     -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1);
-          box-shadow: inset 0 2px 4px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.1);
-}
-
-
-/* Pattern overlay
-------------------------- */
-.jumbotron .container {
-  position: relative;
-  z-index: 2;
-}
-.jumbotron:after {
-  content: '';
-  display: block;
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  background: url(../img/bs-docs-masthead-pattern.png) repeat center center;
-  opacity: .4;
-}
-@media
-only screen and (-webkit-min-device-pixel-ratio: 2),
-only screen and (   min--moz-device-pixel-ratio: 2),
-only screen and (     -o-min-device-pixel-ratio: 2/1) {
-
-  .jumbotron:after {
-    background-size: 150px 150px;
-  }
-
-}
-
-/* Masthead (docs home)
-------------------------- */
-.masthead {
-  padding: 70px 0 80px;
-  margin-bottom: 0;
-  color: #fff;
-}
-.masthead h1 {
-  font-size: 120px;
-  line-height: 1;
-  letter-spacing: -2px;
-}
-.masthead p {
-  font-size: 40px;
-  font-weight: 200;
-  line-height: 1.25;
-}
-
-/* Textual links in masthead */
-.masthead-links {
-  margin: 0;
-  list-style: none;
-}
-.masthead-links li {
-  display: inline;
-  padding: 0 10px;
-  color: rgba(255,255,255,.25);
-}
-
-/* Social proof buttons from GitHub & Twitter */
-.bs-docs-social {
-  padding: 15px 0;
-  text-align: center;
-  background-color: #f5f5f5;
-  border-top: 1px solid #fff;
-  border-bottom: 1px solid #ddd;
-}
-
-/* Quick links on Home */
-.bs-docs-social-buttons {
-  margin-left: 0;
-  margin-bottom: 0;
-  padding-left: 0;
-  list-style: none;
-}
-.bs-docs-social-buttons li {
-  display: inline-block;
-  padding: 5px 8px;
-  line-height: 1;
-  *display: inline;
-  *zoom: 1;
-}
-
-/* Subhead (other pages)
-------------------------- */
-.subhead {
-  text-align: left;
-  border-bottom: 1px solid #ddd;
-}
-.subhead h1 {
-  font-size: 60px;
-}
-.subhead p {
-  margin-bottom: 20px;
-}
-.subhead .navbar {
-  display: none;
-}
-
-
-
-/* Marketing section of Overview
--------------------------------------------------- */
-
-.marketing {
-  text-align: center;
-  color: #5a5a5a;
-}
-.marketing h1 {
-  margin: 60px 0 10px;
-  font-size: 60px;
-  font-weight: 200;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.marketing h2 {
-  font-weight: 200;
-  margin-bottom: 5px;
-}
-.marketing p {
-  font-size: 16px;
-  line-height: 1.5;
-}
-.marketing .marketing-byline {
-  margin-bottom: 40px;
-  font-size: 20px;
-  font-weight: 300;
-  line-height: 1.25;
-  color: #999;
-}
-.marketing-img {
-  display: block;
-  margin: 0 auto 30px;
-  max-height: 145px;
-}
-
-
-
-/* Footer
--------------------------------------------------- */
-
-.footer {
-  text-align: center;
-  padding: 30px 0;
-  margin-top: 70px;
-  border-top: 1px solid #e5e5e5;
-  background-color: #f5f5f5;
-}
-.footer p {
-  margin-bottom: 0;
-  color: #777;
-}
-.footer-links {
-  margin: 10px 0;
-}
-.footer-links li {
-  display: inline;
-  padding: 0 2px;
-}
-.footer-links li:first-child {
-  padding-left: 0;
-}
-
-
-
-/* Special grid styles
--------------------------------------------------- */
-
-.show-grid {
-  margin-top: 10px;
-  margin-bottom: 20px;
-}
-.show-grid [class*="span"] {
-  background-color: #eee;
-  text-align: center;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-  min-height: 40px;
-  line-height: 40px;
-}
-.show-grid [class*="span"]:hover {
-  background-color: #ddd;
-}
-.show-grid .show-grid {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.show-grid .show-grid [class*="span"] {
-  margin-top: 5px;
-}
-.show-grid [class*="span"] [class*="span"] {
-  background-color: #ccc;
-}
-.show-grid [class*="span"] [class*="span"] [class*="span"] {
-  background-color: #999;
-}
-
-
-
-/* Mini layout previews
--------------------------------------------------- */
-.mini-layout {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075);
-     -moz-box-shadow: 0 1px 2px rgba(0,0,0,.075);
-          box-shadow: 0 1px 2px rgba(0,0,0,.075);
-}
-.mini-layout,
-.mini-layout .mini-layout-body,
-.mini-layout.fluid .mini-layout-sidebar {
-  height: 300px;
-}
-.mini-layout {
-  margin-bottom: 20px;
-  padding: 9px;
-}
-.mini-layout div {
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-.mini-layout .mini-layout-body {
-  background-color: #dceaf4;
-  margin: 0 auto;
-  width: 70%;
-}
-.mini-layout.fluid .mini-layout-sidebar,
-.mini-layout.fluid .mini-layout-header,
-.mini-layout.fluid .mini-layout-body {
-  float: left;
-}
-.mini-layout.fluid .mini-layout-sidebar {
-  background-color: #bbd8e9;
-  width: 20%;
-}
-.mini-layout.fluid .mini-layout-body {
-  width: 77.5%;
-  margin-left: 2.5%;
-}
-
-
-
-/* Download page
--------------------------------------------------- */
-
-.download .page-header {
-  margin-top: 36px;
-}
-.page-header .toggle-all {
-  margin-top: 5px;
-}
-
-/* Space out h3s when following a section */
-.download h3 {
-  margin-bottom: 5px;
-}
-.download-builder input + h3,
-.download-builder .checkbox + h3 {
-  margin-top: 9px;
-}
-
-/* Fields for variables */
-.download-builder input[type=text] {
-  margin-bottom: 9px;
-  font-family: Menlo, Monaco, "Courier New", monospace;
-  font-size: 12px;
-  color: #d14;
-}
-.download-builder input[type=text]:focus {
-  background-color: #fff;
-}
-
-/* Custom, larger checkbox labels */
-.download .checkbox {
-  padding: 6px 10px 6px 25px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555;
-  background-color: #f9f9f9;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-  cursor: pointer;
-}
-.download .checkbox:hover {
-  color: #333;
-  background-color: #f5f5f5;
-}
-.download .checkbox small {
-  font-size: 12px;
-  color: #777;
-}
-
-/* Variables section */
-#variables label {
-  margin-bottom: 0;
-}
-
-/* Giant download button */
-.download-btn {
-  margin: 36px 0 108px;
-}
-#download p,
-#download h4 {
-  max-width: 50%;
-  margin: 0 auto;
-  color: #999;
-  text-align: center;
-}
-#download h4 {
-  margin-bottom: 0;
-}
-#download p {
-  margin-bottom: 18px;
-}
-.download-btn .btn {
-  display: block;
-  width: auto;
-  padding: 19px 24px;
-  margin-bottom: 27px;
-  font-size: 30px;
-  line-height: 1;
-  text-align: center;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-
-
-/* Misc
--------------------------------------------------- */
-
-/* Make tables spaced out a bit more */
-h2 + table,
-h3 + table,
-h4 + table,
-h2 + .row {
-  margin-top: 5px;
-}
-
-/* Example sites showcase */
-.example-sites {
-  xmargin-left: 20px;
-}
-.example-sites img {
-  max-width: 100%;
-  margin: 0 auto;
-}
-
-.scrollspy-example {
-  height: 200px;
-  overflow: auto;
-  position: relative;
-}
-
-
-/* Fake the :focus state to demo it */
-.focused {
-  border-color: rgba(82,168,236,.8);
-  -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
-     -moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
-          box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
-  outline: 0;
-}
-
-/* For input sizes, make them display block */
-.docs-input-sizes select,
-.docs-input-sizes input[type=text] {
-  display: block;
-  margin-bottom: 9px;
-}
-
-/* Icons
-------------------------- */
-.the-icons {
-  margin-left: 0;
-  list-style: none;
-}
-.the-icons li {
-  float: left;
-  width: 25%;
-  line-height: 25px;
-}
-.the-icons i:hover {
-  background-color: rgba(255,0,0,.25);
-}
-
-/* Example page
-------------------------- */
-.bootstrap-examples h4 {
-  margin: 10px 0 5px;
-}
-.bootstrap-examples p {
-  font-size: 13px;
-  line-height: 18px;
-}
-.bootstrap-examples .thumbnail {
-  margin-bottom: 9px;
-  background-color: #fff;
-}
-
-
-
-/* Bootstrap code examples
--------------------------------------------------- */
-
-/* Base class */
-.bs-docs-example {
-  position: relative;
-  margin: 15px 0;
-  padding: 39px 19px 14px;
-  *padding-top: 19px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-/* Echo out a label for the example */
-.bs-docs-example:after {
-  content: "Example";
-  position: absolute;
-  top: -1px;
-  left: -1px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: bold;
-  background-color: #f5f5f5;
-  border: 1px solid #ddd;
-  color: #9da0a4;
-  -webkit-border-radius: 4px 0 4px 0;
-     -moz-border-radius: 4px 0 4px 0;
-          border-radius: 4px 0 4px 0;
-}
-
-/* Remove spacing between an example and it's code */
-.bs-docs-example + .prettyprint {
-  margin-top: -20px;
-  padding-top: 15px;
-}
-
-/* Tweak examples
-------------------------- */
-.bs-docs-example > p:last-child {
-  margin-bottom: 0;
-}
-.bs-docs-example .table,
-.bs-docs-example .progress,
-.bs-docs-example .well,
-.bs-docs-example .alert,
-.bs-docs-example .hero-unit,
-.bs-docs-example .pagination,
-.bs-docs-example .navbar,
-.bs-docs-example > .nav,
-.bs-docs-example blockquote {
-  margin-bottom: 5px;
-}
-.bs-docs-example .pagination {
-  margin-top: 0;
-}
-.bs-navbar-top-example,
-.bs-navbar-bottom-example {
-  z-index: 1;
-  padding: 0;
-  height: 90px;
-  overflow: hidden; /* cut the drop shadows off */
-}
-.bs-navbar-top-example .navbar-fixed-top,
-.bs-navbar-bottom-example .navbar-fixed-bottom {
-  margin-left: 0;
-  margin-right: 0;
-}
-.bs-navbar-top-example {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-.bs-navbar-top-example:after {
-  top: auto;
-  bottom: -1px;
-  -webkit-border-radius: 0 4px 0 4px;
-     -moz-border-radius: 0 4px 0 4px;
-          border-radius: 0 4px 0 4px;
-}
-.bs-navbar-bottom-example {
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-.bs-navbar-bottom-example .navbar {
-  margin-bottom: 0;
-}
-form.bs-docs-example {
-  padding-bottom: 19px;
-}
-
-/* Images */
-.bs-docs-example-images img {
-  margin: 10px;
-  display: inline-block;
-}
-
-/* Tooltips */
-.bs-docs-tooltip-examples {
-  text-align: center;
-  margin: 0 0 10px;
-  list-style: none;
-}
-.bs-docs-tooltip-examples li {
-  display: inline;
-  padding: 0 10px;
-}
-
-/* Popovers */
-.bs-docs-example-popover {
-  padding-bottom: 24px;
-  background-color: #f9f9f9;
-}
-.bs-docs-example-popover .popover {
-  position: relative;
-  display: block;
-  float: left;
-  width: 260px;
-  margin: 20px;
-}
-
-/* Dropdowns */
-.bs-docs-example-submenus {
-  min-height: 180px;
-}
-.bs-docs-example-submenus > .pull-left + .pull-left {
-  margin-left: 20px;
-}
-.bs-docs-example-submenus .dropup > .dropdown-menu,
-.bs-docs-example-submenus .dropdown > .dropdown-menu {
-  display: block;
-  position: static;
-  margin-bottom: 5px;
-  *width: 180px;
-}
-
-
-
-/* Responsive docs
--------------------------------------------------- */
-
-/* Utility classes table
-------------------------- */
-.responsive-utilities th small {
-  display: block;
-  font-weight: normal;
-  color: #999;
-}
-.responsive-utilities tbody th {
-  font-weight: normal;
-}
-.responsive-utilities td {
-  text-align: center;
-}
-.responsive-utilities td.is-visible {
-  color: #468847;
-  background-color: #dff0d8 !important;
-}
-.responsive-utilities td.is-hidden {
-  color: #ccc;
-  background-color: #f9f9f9 !important;
-}
-
-/* Responsive tests
-------------------------- */
-.responsive-utilities-test {
-  margin-top: 5px;
-  margin-left: 0;
-  list-style: none;
-  overflow: hidden; /* clear floats */
-}
-.responsive-utilities-test li {
-  position: relative;
-  float: left;
-  width: 25%;
-  height: 43px;
-  font-size: 14px;
-  font-weight: bold;
-  line-height: 43px;
-  color: #999;
-  text-align: center;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-.responsive-utilities-test li + li {
-  margin-left: 10px;
-}
-.responsive-utilities-test span {
-  position: absolute;
-  top:    -1px;
-  left:   -1px;
-  right:  -1px;
-  bottom: -1px;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-.responsive-utilities-test span {
-  color: #468847;
-  background-color: #dff0d8;
-  border: 1px solid #d6e9c6;
-}
-
-
-
-/* Sidenav for Docs
--------------------------------------------------- */
-
-.bs-docs-sidenav {
-  width: 228px;
-  margin: 30px 0 0;
-  padding: 0;
-  background-color: #fff;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 1px 4px rgba(0,0,0,.065);
-     -moz-box-shadow: 0 1px 4px rgba(0,0,0,.065);
-          box-shadow: 0 1px 4px rgba(0,0,0,.065);
-}
-.bs-docs-sidenav > li > a {
-  display: block;
-  width: 190px \9;
-  margin: 0 0 -1px;
-  padding: 8px 14px;
-  border: 1px solid #e5e5e5;
-}
-.bs-docs-sidenav > li:first-child > a {
-  -webkit-border-radius: 6px 6px 0 0;
-     -moz-border-radius: 6px 6px 0 0;
-          border-radius: 6px 6px 0 0;
-}
-.bs-docs-sidenav > li:last-child > a {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-.bs-docs-sidenav > .active > a {
-  position: relative;
-  z-index: 2;
-  padding: 9px 15px;
-  border: 0;
-  text-shadow: 0 1px 0 rgba(0,0,0,.15);
-  -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
-     -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
-          box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
-}
-/* Chevrons */
-.bs-docs-sidenav .icon-chevron-right {
-  float: right;
-  margin-top: 2px;
-  margin-right: -6px;
-  opacity: .25;
-}
-.bs-docs-sidenav > li > a:hover {
-  background-color: #f5f5f5;
-}
-.bs-docs-sidenav a:hover .icon-chevron-right {
-  opacity: .5;
-}
-.bs-docs-sidenav .active .icon-chevron-right,
-.bs-docs-sidenav .active a:hover .icon-chevron-right {
-  background-image: url(../img/glyphicons-halflings-white.png);
-  opacity: 1;
-}
-.bs-docs-sidenav.affix {
-  top: 40px;
-}
-.bs-docs-sidenav.affix-bottom {
-  position: absolute;
-  top: auto;
-  bottom: 270px;
-}
-
-
-
-
-/* Responsive
--------------------------------------------------- */
-
-/* Desktop large
-------------------------- */
-@media (min-width: 1200px) {
-  .bs-docs-container {
-    max-width: 970px;
-  }
-  .bs-docs-sidenav {
-    width: 258px;
-  }
-  .bs-docs-sidenav > li > a {
-    width: 230px \9; /* Override the previous IE8-9 hack */
-  }
-}
-
-/* Desktop
-------------------------- */
-@media (max-width: 980px) {
-  /* Unfloat brand */
-  body > .navbar-fixed-top .brand {
-    float: left;
-    margin-left: 0;
-    padding-left: 10px;
-    padding-right: 10px;
-  }
-
-  /* Inline-block quick links for more spacing */
-  .quick-links li {
-    display: inline-block;
-    margin: 5px;
-  }
-
-  /* When affixed, space properly */
-  .bs-docs-sidenav {
-    top: 0;
-    width: 218px;
-    margin-top: 30px;
-    margin-right: 0;
-  }
-}
-
-/* Tablet to desktop
-------------------------- */
-@media (min-width: 768px) and (max-width: 979px) {
-  /* Remove any padding from the body */
-  body {
-    padding-top: 0;
-  }
-  /* Widen masthead and social buttons to fill body padding */
-  .jumbotron {
-    margin-top: -20px; /* Offset bottom margin on .navbar */
-  }
-  /* Adjust sidenav width */
-  .bs-docs-sidenav {
-    width: 166px;
-    margin-top: 20px;
-  }
-  .bs-docs-sidenav.affix {
-    top: 0;
-  }
-}
-
-/* Tablet
-------------------------- */
-@media (max-width: 767px) {
-  /* Remove any padding from the body */
-  body {
-    padding-top: 0;
-  }
-
-  /* Widen masthead and social buttons to fill body padding */
-  .jumbotron {
-    padding: 40px 20px;
-    margin-top:   -20px; /* Offset bottom margin on .navbar */
-    margin-right: -20px;
-    margin-left:  -20px;
-  }
-  .masthead h1 {
-    font-size: 90px;
-  }
-  .masthead p,
-  .masthead .btn {
-    font-size: 24px;
-  }
-  .marketing .span4 {
-    margin-bottom: 40px;
-  }
-  .bs-docs-social {
-    margin: 0 -20px;
-  }
-
-  /* Space out the show-grid examples */
-  .show-grid [class*="span"] {
-    margin-bottom: 5px;
-  }
-
-  /* Sidenav */
-  .bs-docs-sidenav {
-    width: auto;
-    margin-bottom: 20px;
-  }
-  .bs-docs-sidenav.affix {
-    position: static;
-    width: auto;
-    top: 0;
-  }
-
-  /* Unfloat the back to top link in footer */
-  .footer {
-    margin-left: -20px;
-    margin-right: -20px;
-    padding-left: 20px;
-    padding-right: 20px;
-  }
-  .footer p {
-    margin-bottom: 9px;
-  }
-}
-
-/* Landscape phones
-------------------------- */
-@media (max-width: 480px) {
-  /* Remove padding above jumbotron */
-  body {
-    padding-top: 0;
-  }
-
-  /* Change up some type stuff */
-  h2 small {
-    display: block;
-  }
-
-  /* Downsize the jumbotrons */
-  .jumbotron h1 {
-    font-size: 45px;
-  }
-  .jumbotron p,
-  .jumbotron .btn {
-    font-size: 18px;
-  }
-  .jumbotron .btn {
-    display: block;
-    margin: 0 auto;
-  }
-
-  /* center align subhead text like the masthead */
-  .subhead h1,
-  .subhead p {
-    text-align: center;
-  }
-
-  /* Marketing on home */
-  .marketing h1 {
-    font-size: 30px;
-  }
-  .marketing-byline {
-    font-size: 18px;
-  }
-
-  /* center example sites */
-  .example-sites {
-    margin-left: 0;
-  }
-  .example-sites > li {
-    float: none;
-    display: block;
-    max-width: 280px;
-    margin: 0 auto 18px;
-    text-align: center;
-  }
-  .example-sites .thumbnail > img {
-    max-width: 270px;
-  }
-
-  /* Do our best to make tables work in narrow viewports */
-  table code {
-    white-space: normal;
-    word-wrap: break-word;
-    word-break: break-all;
-  }
-
-  /* Examples: dropdowns */
-  .bs-docs-example-submenus > .pull-left {
-    float: none;
-    clear: both;
-  }
-  .bs-docs-example-submenus > .pull-left,
-  .bs-docs-example-submenus > .pull-left + .pull-left {
-    margin-left: 0;
-  }
-  .bs-docs-example-submenus p {
-    margin-bottom: 0;
-  }
-  .bs-docs-example-submenus .dropup > .dropdown-menu,
-  .bs-docs-example-submenus .dropdown > .dropdown-menu {
-    margin-bottom: 10px;
-    float: none;
-    max-width: 180px;
-  }
-
-  /* Examples: modal */
-  .modal-example .modal {
-    position: relative;
-    top: auto;
-    right: auto;
-    bottom: auto;
-    left: auto;
-  }
-
-  /* Tighten up footer */
-  .footer {
-    padding-top: 20px;
-    padding-bottom: 20px;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-114-precomposed.png b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-114-precomposed.png
deleted file mode 100644
index 790a64f758bfa2c40f11d0341e7d0e3b3dbae937..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-144-precomposed.png b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-144-precomposed.png
deleted file mode 100644
index 6d0e463fd36dfd8c6d22807e236eeff243ef6198..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16780
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
KM{WD){~G{xw<Tc!

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-57-precomposed.png b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-57-precomposed.png
deleted file mode 100644
index 4936cca83cfe51cc0a7b5b0da1174734eb2180b6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-72-precomposed.png b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/apple-touch-icon-72-precomposed.png
deleted file mode 100644
index b1165bdbddb1e9bdb533db12dff28c4ad8654e1f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5681
zcmWkyc{tQv8~)8$hbTh`X{JVFC=nTBYm9o$k4&;vmJljs8GDGvzGs@j=VdT7NVJd`
zTV!nt$yONqPG}Jk_09XoIp@00IoEZb<-YE7KTo0s$wW*<P6Pk|F_3u9lD8878^VIT
z*=F^n2>=}Y1)ejqzB|&*xayhv$+z?QIgllNyFlBr5S3(C`(y3*yW9Z+IAEGYbI1Aa
zJ7wAb+1rct)RlGq_q48Wlom;;y;{o0V<o<j7+H<!RXURnJUA&7o-m^wDL*W3@#vks
z-rk3=^5lCT_E_)ZZFebWduoq($nQ>_^`Gy;eS+whAtI#1eh5$-oNVfEIQp(nZoHXn
zoBP)Lv1WhVgL{5D_fj65OY4s*F`haWuy1DSt%R<`*~DPU0IBQ?3>Ie=ll?tFE}KN^
z3%E_|!PCFFYGvq<=)JWYQd;1Grd7bH4o%KXfT13^<zBL=S=%3QahX3{dS-9Ce*^bX
zYb?L@LuJY0>n>R63mx<QvlnN^PzDaVk6PBvKOQT3dG~&jn)5xN>3&7PJpK1ew2yPc
z2GM1ww{cA9=lV5a%>K;Zi~BRx?8enc{C~AX_O_k+M|Z#F#Is8(UPlUdhYVFbS4%wo
zFLfNX9?`~!Tb#B2Y{!bsG+Ms1)LIW0^Etwr8bZoN{!>tK*!b?Ji@$@!`y*~uy~-C~
zlaoj_jt@%fb@`}#cvv%OD_Se^+v2#!u4lpn7yWVVf6&ZCgJW71!C9p0w5h!px1P8*
zEn0WV=B{zmCgh8kdiVm0@BFhBaD?S=Ahh)QtBbA-?!tb))A+sV>)*Osi@ZK&pO#h)
ztQ_F8;ya01lk*yrVf^}EWTTKWAF$M|WU4i%+|M=Pn1{Uc;#sQit}XMH@XiM#!ulgE
zICL?ZqS@ARGgj+!Uwm*l)I*m150ejYM?l6YvHS;Qza65=Qe$KCHJRbRhF`oTKoK9c
z+>p8M7SKEMKLWNQLe;}X)^tPm3c5<Y6zRH;hkW}i778q!I{)N&>=u0NIMJRXk`6`S
zp^PZ}I|4><U?1Lo$H3&E3J&&S2f}}h>z2!+b_9th(g9QC)DNaE>}#A9jfgzl?tn<#
zgt4shj_Ym0m@||jYVo8p{`!>+#MHv00PVX}#kY*zx!CD|;E;11H>PXDs{!pz-@@8+
z6~#x}k$7kpd>$7h(JXZcZVgAzA!kqxs!4QH;qy9)NQeW>TdtSfT5s4#9<6b`(rV7o
zs&j3IVFiPnKOx4&z_%C_J01z)Qd5>u_|qhsx@s^yBAB1bzt3=erkB3GJ?XOJu+t_)
zwlr%ttRLDqvFvlCNl`F{=z0ynu-b}`8h>Z7R4VBJ%MF=G_k#-ev<MS{%g}TP7F|na
zA_ZrKIP)k#u2j~$MBjo;V-t}^A|PPiVlxEN@|iCUgcb=dJ3?EV3J%PB%l-B7ifPy_
ztGliciip%mR)IQKQc`BFpqv0lL*RNaSI9d}R5L^ikNE&Dvm#gZ*CmN$sqdGX2+$Xh
zxR`CG81~-$79YS5LqXgmYu?6<#>^H<1kz#yMj2XzxF=K;cMVk7DUbO~T)g5{8Mqid
z8K?i#lW4UbmlBz->JLv7Fz041w1e5~hxEHe{<c_@S7c1vQyk~`TGEst9_}~urFd*N
z!~$Lu8^C`$Q9eIjiq;MO8WuJ_t(qh10e@zR&W)>A>|%uOS86WAdw+QS2nj5@<5x7H
z!Xzl8Ax54tTU(01qzF0r8gyWhEQxbdf>)GQP@=pjnR7)zTeb$<6q#xSJSxlS2{#4)
zwuynaJa}0Gtk51L+TiNL-KB5%piiHR@_yo$?eeAHfaEkHLn?OiXq=lr95FX+BuxvX
z{dc)f7tD=$@uM3QYLK8@A?312a`~_`X!IMNcW2NzCCWUC;)gIu&%I}OV7TvZ5Ej6o
zf@pE_dKk8bRVLl<pk&Puh&hFx%QibLeMpLMq19XxtLJgx$8ejNi(!&JE09KjDv%~^
zWa#m@0k>Fs21&9ekS2x&<j#;zPf6o8Y?(Es8{nrp1r1hDAZGcX&Mt0M2Sm1C%@KiO
zYHJ_kIKH%tx%@)4I9Q^6i`N0Dg1mQiRyq#hF)d95ib>b;q-nz;Z53)cojIBT(BgaI
z#lsaArPRs$StKYblVFK<=~6-A-;a=0KY+5y*>v?&pLIEL^8W-~=3ssAw2OI=D$8;t
zy+y!WR^sRo$irM3Py|PLn*BldR%n|YUa6FZr^lYorc2T2bg91eh(8{o+waOYa^FAi
zT70LvA!7LQTITkhjdwLpk1nVFy7}CtD%5d9cm8=_utvmI>{WxUx#zt{3^#vkW#~=4
z4E9%9OHu;nE1%TjKxfEg)-&&{Gz;co$_duyD@>Oa6sG2f@PHlgQn~AnH=^v`H*9+S
z^Ulu4{Sm}dhQU0$QhLU_vA(V^SMZf2k*YIpZwa^g5IP_N$<;!8Oly<giL!`RdC%UQ
z30~R$HE*&p{pp!9Dkfw0*jT2s+Cl96=O&{ss8}BI*)acZ5IuPsQWa)S+bjo#S=Dh;
z9aZ>B9GL6oPs4x5J2vi~9$Q^-n)m}VKejumTz^txxG^V2mKE3sc9~Dx%7j3f2IO9E
z;5so(o~CJ+GfR#x>yz!*_I1s(A<7P4Jp}BCcgHVGO#H^`Ud|dAH0Qyi<|%vl5{b=Y
zxb^`Ms5)+3&rga&ak&guqCIk$5%a<f#@zmXZ~epHcN~yR_h}a+R+C!lFXhm6+WM;Q
z1V#m6Spqx=GFUhcp^t2Zo^njOR(CITzTbapkxzsZ99`CqB77k9i9I6%t9H4?xj-9f
znmqd6j&6y*O3Y?Ir31<^{4_IU?kMNH-347G3d(1NRY{IkucSluAPL9{`sRza^E~=E
zlxc<j*9$govwyMGDI#H_G1SB{_SkbHpFjOM8&lo;7xpb4EBAb)w-cTW#?E?^kzHPA
zF)zYxqU?~d0riZSgCsM67j=H7*&rlzp%V+}>|?vkK1=9|mVZ=upiINmh1iiQQJ#KD
znc%d$E3<U-?B1}0Y)ChD{Joe8N(|c#+FjTQf;`Y*9xk)2;v<*SJ=w1~S^Oy283|k7
zX`#$1$1>>yc+`Pxjom5Cz$FLmHi#0*w@cF8fpYvsILA4y)AUhFLV;}ROn8d-Wd8Hb
z?eC8+zOQ!64}x6Cbu*=ywzIkpS~4>rMr62glw}79#<{Jag6%8S`0#^z!Ujsi_3d(+
zz@<q;?4+CfdYss^07zdqS3=qMEG%F2^XMF)dcI$%rwh{iKhOTu)^3l92QRts=4al*
z8qJr8%dEqcqOzP)x{3|g;)a@dl%!v=&2$jtd!FZ6n1OeLY66`~e-daBk|r+~)RL++
zh_%LWp(j<Xs=VAC5MG_a#B4f)Z2UcFnMFc<lbHvUr+?DFJfsQtfPSJfJ)FBw;Q^2;
z8|cqg^X(_CU%vft>Q%%#@0(cTiuqSroHHJ;j)@c#Wi{L4hwYA_ec^Z9qmV{mAnmxf
zm2XKE30hu@6P9-vRjHs3fD{{NnX5#yOuTco9iHs;!2Wo3r<hLkX_K_k8d9G>R;;GE
zdWYYuH0_~osX(3abccQ^)y+N3#hcPVr!n#}@d6$bbyTk6*3-Xr=YvDX+wb3G7QLk?
z5Eqp^%J}7M(MDh74y}5?6s+@EUga5Jtec;uDbE@qc)WdBs{*88NgAVfvckmFqNo-0
z?bEz?)@)G!!~MA&Vb1P8rmb*og1nEM_ej9#dR$KbYcbDj5|3`Y6{5}afNQq2EZDxl
zugs4hc^%sYduGm6WBu+}H;MX_u(r{V7K#~TO#5R?G)p_V*$smrP^3iZ|979Konq0A
zn12Il^Qf2{b8b-J%TXE*Qn~OS5yl)-DhUr$*FZXQ>}%F!?cfnI9~|*I#jiS_mMCd+
zfeV0(!iIrx@9g1Q*B&A=(|FW)5^{kQ^@NXgA3!vkVG)NN_hQC>ZWxZp+<o#V_-w$3
zR`Nx=P_D5ix)vC8`nH^!SMPDH58h0Onnd6ulXnp~(g?>c!<s02u-7rn&0VkYe)jd8
zX<?53gaBn{j_C0?uy<VLA=#KznP|@=FN1k;EwyAzx=_L^0djSvZQJ|H*r)97WkKY_
z`@h#9v{bJvo1Pla=v2n`iDxktESckNU?>Yk-Sx@Pk#`W}7pe$j&Se=>cv&F$)Bbax
zk69KxX4JHm<5YM87&ddD%!WmkCCZ-;q~-7kgJ2H0<yKwg($mS&bS+<d^f0;JUfgfx
z$VO3G(Zxk2wIG@(r*Y{<tC+u_4zo<2FNtrTY60oG%)jJTVGC{Umufd5zMcLuEvGzt
z9r#Ymw#h+S-lQoTgQ~B?pb{>h5yRfPf)LP#QVCJX=XhrE{z%0cL3l@qAQ5TKdSFKk
zm0|Y5)SSgkNl=9umJ19E(GtbnU`PoeIA&R$Cr~-;f?I>gO~oX($tnG*rJD0;-yAy7
zOBKl%`)2YY%sSAE`}1~=?IeGiVCF3T(=%85=fkJm6-o!#lgkm=qMwTtGjoOBYV8yD
zin-Bx(wnD470@m=(a}%%Ha6|oEmoGV?P?mlbu#Lz_YkV8N1{gfR%1uxT5grZl;*w?
zUmx0>4#yhPLrX>$Feq<)WsT{VJyesKL!W>JG4dxcYZP^zMg6iYsH4&e+D{>3uDqgH
z$en{6i(572N5BCIp#*+iKCtUiU(2f9DcZ53wV$vQ7)8ViJs@+aRIYF9@6LLWO(ChT
zE%i4jQtBBPt$rFcRu4nOwyD7_hCpg5U4iHz=ukRtbWI2meO71Yu*D6Cv0aT{+gPn)
zqj$=iR2<HBIb+7VOI|ap<ZHdg&d!nhkCvC~UKCw?KCVNmlrg&$a=Dxiy|Z%ES{z1W
z3<#@hl9KewatPBAeHl0%Vm+`n#R@<}C`PlYPFc6Q_#EsUtmmS47BOM{=9A6fwWkA@
z#W@@hka`qY_;sIhN<N7ziwn8j1NJ%qWB3H6F-eE52pXHyDBA3r=V<*C(}~UBlis2;
z4I7sPf9m02W=&R5br#;(F~Lv_vmBEnP0yxhyT`T)>)6i=6Zb<ms`$UhvSiFw1MzI4
zU!R^$khJfa&P{gFk{~fC&=n0C@Pskt9UO%CnIp=85mfnhYqu}lxH6EI4)qtP(&en$
zFA!n5pb)J#-|hLhb6&Yz?-_;L^V!LpNtIPT$@>zFAP*)E&J{?bmIhxTEs29MIf1me
zk-25al12@_a_UBIj6XIkY9&S<uyK@`x*n^D!PWS9<+@?nLH6(~d^%Ji3_*-iNWI5!
zGXw64Ulv>J1Y#oKlW&J})?;CTa9ixcb&TH9o0l@BBMTSv!WGF$p}&W&otR?;jD~S3
z{6Z&P@K2~b{Z~6RuUqQ-fMO9cT5NxnUG$|^e)6mSoWu0=*C(4H-?0%w<fI<=;6HhZ
zjaTeqsz{Yn(pO%g2qLhld7~t}##_-dna8~@okJQ`;DAt}Kr3r|rD+u25<NVax`JA;
z<ydS8?{#mzK3k&Zddrw$nIqEk={NxT(emmK0v+S82i5S-b2LOZq2-nzjbOLHnMEl-
zQEGMoJY<@+#w-t})&49VO|1B_(bitFnEL6jrRw7CBh9<^jM*EXje>Va_!%h5hGGo?
z$`tO#i`b+8B`4pVk}e7~yNL{GN6jN4TKkVQ=N76zS-;!A+GHP9(U4`0hV)(+l)51k
zBBFul1Pv4AlX}eXivZ&0w=>xrhcA-HP6;gMiM_vP01TcIr|BlT!?6g?yBjUtnE>U?
zUjWP)J93D=3S0ACc}OF)EGVSckiPFhNzU!l*8r$O0`e-lw#>c_<o<wBHyNf=66r9F
z@tS`n9r!q6SdOs>uY76#e!h{PXmNmvIOQ=q*v;DpMLeznecfcFeu|CyaYq2C?Bq(r
ztv3wjZP5j!sA%a}m?e>H$*UQW5Q{6xpg5Kfb_{T=drx^$H|4peV%x&pNUvJ%81LTB
zq(xxVVR(hx9+5V^&l~j0?41uO@XNqZSnh5vih0fm2wn1yl^kh2bxBQU@l7JKs*ii|
z$u9wg71Udwz<ynrKdeH%LLUt|5G~>{ojK>k6N|hSLo?;|&->!SVb60cP4<TG`1D@R
z-_}h{V@wX6y!`|*kbIr4_n^|}$C~d=6++9F*#Ouhlc9=Q`zwB;4EA>+B{|CCIpMn*
z_W^xqK;YXm`Sp=+KgIyq;97gV_U!|!Z`NNKtqOMrrG!ajuM*b|7pCUP6%@~Dj<nf*
zgner`9QHbBBe$-Xu_FDd{L32;k!TqBTY5UjJ7OaEhuVeNvFCmsr0-4Qzcc`W2`CDR
z>IAdt%aD!<&?RMGspzuQ8T_4<x*M;mB*}F^v8cseH)Z|xw$F*T8$_4+Qxt(^DAju;
zrK0xr|Elr!1zxJrk6T)AZJ1cZnp}$P<jJw$V8h9Zr|{v)pzxjF-m?A?6K`yYL%cU4
zq#l<o)iqQV$IJG4vSZuKDQ(|<Eze0}9R^hG>{W4`(aad&XoAM#E8l3!8&}~2M=8h_
z{gi4@3g1GJaEAzrV+vNwZG5|qHM|j!70wS9VFa}Iu-3+?$zKFz3OZj@{#PGfMKAqz
zY0+J}0}O;zk$_k!S{nVR9W*ORubf0syMDfFSz0jVu`Rd9i1K%e^>{Z+-ZUf(`*8gA
z&sY|zk6iZkuK*cg^O$V{QLeh{Vg7Z&4Dwik_uaPCo%B`lt|3ipT&NBoRZh~$<(RKc
zq5i2=hbRR`mr<*13aM3^9?0QS0+q>Kmuq(=YhwAadsR1$1AKvt;a=to0)i~678-*h
zngKJc7bVoO%+G3+SnGL|f7jDJFJ2#mD?lcZeOtS)P4}r$W>80n84Ug_S65I=!F=#}
zMzjc;Z`|r~jk>j!eg9rDp%TX#0L4+CK#7yb!?Eno*`NF2lHRX7xyz`9%6cBO>GWQe
zibVNieh<S~)_L>+@P5s$slq|Xk8-;P=djC;=Ih;8(E?uVt3(o;CkNj*J!PL?W{IHL
zBsOv&B?mqPhMp}YoJ}<Go`Fguw&U&Xn!3AR(bi=$AWH^#JD;h6yE9QrqCrZx?}Yww
zm4>G^k{`YWxi<p)^Jo}|EU600S}gI0Gp*U8%q^Z8Yiyf~sA=1Sil;vtn8_qd60`o7
zn>pz}&j&0!x8eh-KgtPguk+J?O!#0Twi4bhC0P!9+n!|ApKN4|0!5Z+GxqOB)0eyf
z^2;)wHXH)~0z~`t=-A5iF;}M(`%c)~+V}fPy#M<F3E{U8q!BM;pNk%-48wZW4U_p;
zk3sIA5~a0VPE2rDE}#IhUeaaaEKRp_C+&EGeq4z40q7&V$7d-k>uJ2mYz32-Z`TP;
zvTg#4@xnDuyk--z8vSRKrv3>Oq%kH55`3Imo9q5?mUq&fX<MS4_iHMz1pKlbr%_a*
y)I?xA`q<~(6{m^>CTBjMYMQVzNXu;f3*B$p>oXnXQp0Nn1K@emxn~6DsQ&{<E_bv5

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.ico b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.ico
deleted file mode 100644
index cb8dbdfc429d78e4c7203fb8c08e203960d31259..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1150
zcma)+-A__+7{`yBIf_*Bg+z=rLQqLdfgnHu1&_S>M%v3}wRKS!l}XLDYLRWVbzRq~
z)tabnT~ur9!p)0TYwN<LUG?JDnDs||`#p~whK`GV?EKF7o%7-QeZJ2#B&kSzG#W|l
z_0ol6NzzJ^WD%D*5+|GI;wDMr+4i;k`b{`kTc7DDR>QWV6h}(RVOLe6LsgBVY8{-r
z>)<Riz^yUDsWHJ@*^JKWRt&X<elNdWisiGm5)Il_70f!atfO=vvz|TX9P81x!KbsM
z-`cyO=n_l1j-6T%Ygg-0i0#_j4!_QU&Kd{0YF+F(pH)1&%J#!q-T+1SSXB!=+QabH
zbRZx&VtWjJ<g>P2HAr2#hC=J}hfheJyUc8Nofq8(AA<Egu!(xfGwIsZwMdO$XZ-KR
zAEci=!`$?95KHUZ$|`(%H|r7`Iv{UhsouNell<=5%2&==sh1DMMxKf7ZU~~MLC*C^
zsW+A7e|`Unsfk;dO5R3#`bG9P*Weev1A>>0QS_PmxxY%z)Zf(A8;aDH`}&V{jCw|d
zW{BCKF^tf`822bY=c$RCS*=yh$}j3o&!qY6(f!BlnRLUALy*NqbCusC@=S}eqMWJT
zh1mr@TYUPGJ<Fy6L@dV<X&PnLRbk<*++wcoCGYUNg|-Ki4_P;CP9WNJ0<o6UxtUaQ
zJ|7>${LCDCo}Zl;+KV9Fi-}9jlCEqXMxW4*S;ye1vVwGJo_#uJ&a={A%9*mFdV3oO
zSXZ`;Ko<J(LuWB)4Q6Pb^JkKJM6*GxY>JDT2RG{#9C;2mpJMime?0U4)w{%STO<?E
md*Bm!DY`TpN{`4h)f;I($(~7<*pEwJqN$?o{|Nv8o!Eas>I5AC

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.png b/src/main/webapp/bower_components/bootstrap/docs/assets/ico/favicon.png
deleted file mode 100644
index 073c13c0f6e90ce5cb374da4dd3da707b7195dc9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-docs-readme.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-docs-readme.png
deleted file mode 100644
index 36603bd3b44e65f713884bfb74741e554c71e238..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-01.jpg
deleted file mode 100644
index 2d398982b04d8706f44141bed3295f2bfc05c56e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-02.jpg
deleted file mode 100644
index 7a89371a458712815feaf39847e8e5d57de64be1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 81284
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
Pn6T3q{XdU2|C|56DiR>{

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bootstrap-mdo-sfmoma-03.jpg
deleted file mode 100644
index 3638f156463c9406b2351eeacafe48b0286df3cf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 49063
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
ajVF+@q1kJi;oHs|D_wKMm+apEmj540_U+C9

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-bootstrap-features.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-bootstrap-features.png
deleted file mode 100644
index 7cd8501ae192e5b43eefb5a1b69857a6c9b8278d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-masthead-pattern.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-masthead-pattern.png
deleted file mode 100644
index 75c46a152dec0bd06b8fbda8b870949ca3ca11be..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6450
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
E0q_(q{r~^~

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-responsive-illustrations.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-responsive-illustrations.png
deleted file mode 100644
index 77c8f18f5ce7363cc4d83eced583e9981ddbe683..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10572
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
CD!P6E

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-twitter-github.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/bs-docs-twitter-github.png
deleted file mode 100644
index 06100f3989fd170b0a9294ac1c70ff460dba09c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 30968
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
G{{I6{1!#u=

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/8020select.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/8020select.png
deleted file mode 100644
index e8eeeb226bfd6c14965be7562e1ad45c09940a20..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/adoptahydrant.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/adoptahydrant.png
deleted file mode 100644
index ec9188914c2f4e8e374eeb6b48790da65359344d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/breakingnews.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/breakingnews.png
deleted file mode 100644
index 5a077856cc7add93c9bb10f7eedbb33c489b831f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 72725
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
Hu0mjf37~ft

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/fleetio.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/fleetio.png
deleted file mode 100644
index 9207b0cb805e3cf9f0edceb912fee623a1f9212d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 39837
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
Z|9>`o7|aB%sKx*Q002ovPDHLkV1h4V#G3#B

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/gathercontent.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/gathercontent.png
deleted file mode 100644
index 92cd0ee2ae5a03504a6f81be285a0e1fe44cbbf6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 76560
zcmV)7K*zs{P)<h;3K|Lk000e1NJLTq00Arj008<30ssI2ln?Es0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBYIvPnciRCwC#y$85lXL&BVdYL}6dr_BM
zR4vPr3vrKaWE-$)2{xe|0tqD4KuE~tKu!`M_@UmL1Y$@Cp%-H?26y8sTXK^v%j#uo
z@2y>@&#b=IdB5*pTb2#EH#zsoz0Y%^#b!L3S+mw(zVd!`$)lsA(y8Oraq9U0@6dkz
zqc~1vncgIcq$u*KH9B>iI{rUmLPb%cD4v*@mZT8>;?E*U(ibfn1W$r9Pc7D|<J9q=
z%Y<PVRjc(+eEh~&ZoMq<YO*ZPR+D@0df=PizPDH`#Bn@7Kd)(8Pft&hKvl{?5KK)?
z_4W1HwjD*$2~Ni6)oRtUtWv3T;`39-spCI%2panjosZZ5&`(bKF@E{~^vQql5Den`
z{%;(TX_~64iZRp4Cv3uMwY_fb=)J%A#4qmIn?&82*~TCJ!K-8|*Vp%2&kr)Tap8p*
z;-dH6cOR+9DAINPs;jPg;DHBlEwE@9hTy<vvzg6iues)$>FMc5AAMBkqucG`!&a*W
z9tOwaOmPJ;D%cggn$PD?vFm>=*{^A!2ha0BqaYsq6K_Byj^lt@`uqE9wHipmFbq%^
z-r$@}CgZwpE|<fH_~*%21L5Inpfu1Ys0&xabwFt#bX-lGkN3r5@nvKN28jaVH@pdb
zIdo+smk>k8_(+Pw^aNRv6pj9g4|OvMTv^rmbCuW??=|BDL!D4*A*i}gC}2p8F(XV6
zuNVe6aBgl6bI1FaYr;g5ONGqd7Y=>n8$av1UVmTV`s*(&So4-`f>o}$`t{3~FQ1&8
zJm;KqCMG5-mCBkmYp%Zf>Y<^bFMs*V_zJv)`<;2_nU`I58K#YUoN>k(nD(JVhrqor
zyzl}zv(aem*s){LqD5jTP^35Bc;iz~J+*7sE^NRl()_P;fXCLZT?^uY)CSq$72MKp
zxA7sM){{>@`I^_f2A@Eb3#I~F9z1vuL;?zgh5=chd^P<1l1nZD)$QH87m~fx>3|@|
z$H(#c#*G{CDl`G;7U!J&!zhsTOk7zMb*hTjmV4Jn)iKpB#koo}Kc;Kox2~M;kCRwx
z%_(+1*6qaWD24vGHldi=#OuoV3K#LaFIRZrH^>VN18*QZ#DE26gn+;&802qYLQ<f9
zkVIawU@1y+(<fd(vUvH}vk&9yhMC1QZoc_uFx4C1_{I$zHh?Xkc;bnl{NyL^de^%!
z$(1Wt;sjiD)22<wjvaf;Ti&v2)vDLN_O*~t?|=XM>-9QN>$&Hii{-xj^2;#@+-~*i
z)wkYy>-zQUj~qFI&rdPof2jlF7z6+@4eA6#f;_-xAN$zHKuDW6Z~pnue~y1{*|G&1
z1AGY58Xg{g{`uz@FJAo9pZ@gm#~%lyo_sY(eEblv_z9R0dJp&x!W|@yE8||c+H=o6
z_l<9S1D86PT>@7sjmEj2xPN5`ZB`hJpT5P$*F$SU&6L1${VOBznA^g8(u7V!ZcJ(A
z#nH$*4|o~>>{%M^f6zSim}wW|m#KQp3%7<^0)t>YcwM@5DW-G({rBTNPWTNrVVp>|
zr6r+v@W52p4<31J&*C-93N}_r_PsU~>+4_t`fIPf7Qe?Nu_#YJ{WQc3Snj&(t^-g0
z@P|L#x^?TfzV$6Ay6dmMe%Z2RkUfxIf651zW_ETK+7iO=YhU{s78*+imfpU7`^yG&
z>iDm4fQz1a<{6kapccS32x|~1NCHF!4F)=ad<WM7F5yFvGMESNp~^rl&?hgu8qUA_
z?z`vb=b-~2&B11O+;In}3xtZ#@kU(d*MA6I=hPLi5<5*bj^v45lG~CMO+Nm--kec%
zi?m$hxEA_JwgQYQg|5_XsPjkFLca=J>a>*VSX`e}ah+ec32}FDhZqJJVPs_Fkw+eZ
zCWjgn==8;tPuPU@rnh)F``GR8o@j?|y{$^gx{J<(u(;yVzrN>JyU#uM>~-tb9Y1~?
z%YjQ^K3F&?T+A8F-Qwf)(@)0<P;?hxd@)uNUkTF@8WP_E(*rnT5uq3%(y$F<V`E@H
zEb;#R`+t3bP96Vy+k~J52zY=X;Z_0J3=9l_K*24b4g3@6RGcYnD)9<B0U^E2w8K{d
z-QnjkAGjbs#H&z!I3L#mxxUPFgRvL+WDSDB@E%|47HmQ(@MMLdV(8=I=~u#rgmH)y
z@Duz8=MbQ^6T?p8=r_BIFfa@NcZW^}ci=q~(#znqd{VGpp0753@AYSGz4q+xTn*5)
z?Rblp_uc$Y+wXbssA+`IZ1Tc^Sz#@(f><)(Y+>VJ)v!jmG0qh5S6IgQ3WLDOVrlRd
zmKZ+-mtwszCalgW$IPkYe?JHB39Sh77OEKUf8CM$A`=pqE6UNMHA!;VM;mjrP#YMm
z*p?oK@u_7!b(}i>GY<JTrmYEe7gOvZk(obF9jA^{$A1<$PkvKel0v1dG*4u$B`^8U
zOWvLQZ~4T_f4cN|`Cb40Kl=4yODCBM{FWExB)lO1+MNI2Pcr%U4D5gHddbT#ko?*m
zWd8rjCelkqt^DsANb+y2a`JCXQ2vi^PV&<K%P%D}`8Quw{`c(AuTj4Izp(zv|Ls&>
zMppmE?r2^Vr-NaXD!;fN^2sy7HJ}w^x)gL{!q-gr5a5^J$cl`=lZ?)jFF|L>FW+vl
z%<@a9|K;m<B9Zl_KbHCI<fR|H<d^bGzG3zL@|8|Rra>ZXd4AzJB?QIATzEP!BKQSb
zkmZ-q)(MtP#Hf<rNR}^7BU$)ZEWQ}qOP1@`H|r%{1^J{Ih&y5#V=0OGBbpI^C?_(;
z&#!cK<wf#bkSk)W^1_F5>gq@*949B=Hu+7Imz*pOPi*B$OK@UZzk%czh(Z<-^M$2g
z0wZ#Z6OPnVs7@>yMy9CgEB!!`W%)(AO0OXC7Xr{N?EXosn!Id$;wKAx%(oXSyRZu<
zot^xe>=qZ3Pa43BJ9y%V8CEh2rF$mU1q`Do+A9|4T|Ww=D2V99D3S0N!;nm(Fl9Ts
ztgS0WTel5E(Tq^m0@+Y>(=ZHOQx#RitF9(e=mt*P>$Y(-MNw%1nYb0QHp#=p>nw>O
z#gvysW59CJ0w+ZAimLDiMD!|?cPox!k-@}Y5JJYtVx}}jjy0k%j5$uXj871=pvlIu
zp#G4j??-VMrFWJ%6;{zz-7u_7&a(5CZCY8&v@LvK=!OcJ<8_iwJ#ssN=Y>H?x7QRN
ziA<xQ*(H%gWRI(cd_N7R$V?u>s(x{?C7zv%1*e%vw8V-OYnU*mAti1Q1z{YqFu>P_
zA{nZzDiZzSw>V3sR}KG_1w2Uv#jC1B-a}Q3WzCH>C$>VxRIQwqEm)?h>#C+iTI{J|
zM-RJF=wOc$EJMT-NF+^DF(}$8`i%A~j4%%w<8gzSTzRId(_Jwojdp~0??tYWRasNT
zKH`NFr|9>%sG+BuDbZDV&*Er-qEm?{s6XK?p{<T248sd!KazY&lT=GKGG@ML<;$6T
z$<Ag#ZWySK9qG2cX4UO9BBvWUohS@q+T)N(E(xO~h+`*+{V;ap#0wMbPQ;Xt4Ky@`
z$yE`da-8o6F>V^rX&7ZXF-69lC7QNM!dMmzCMPP*nKneQ5LQpuG!2*I06oSJGQ%IM
z7CIA)r*V8mvomHUXV|ut&6#!%JVPT$<R}ca<rRyTK8SoD!$|yC!qCGIud)a7ig>XU
zIcKZ=IjxwnRl{~A(^GB5E@VKsCMedl4LxH>iQjbUbKSZUhJmVT_-zmbSbtfSKs&0G
zN@JolW^k4HE><+!RhgJsRt5fzR6125D#xyd5lx%cf}BOPLjmofAx9?pdS&cD5Ys}7
z?ZgU1tPH|PC<XikA|`VD$P4hHMD$0ZQZXz&o6F^U`U<7qQmIg^l(NNqCX=-=(x4N!
zW`a2->ZqaT1z?eccL1A%fnly;=!fanhQ!{KT!o1m*g4P-s2f8gaw7>7$q7hOqfa&F
zAsK70ND){7dx1;0T)!JcUPQA1rGwT?S<*;&fl-Oo5{(uM%LC~EQV^mRcK}IQmTqOT
zlAa6oVrcfNnVw9slq;4XF?AX2*U-GW>CWhW6O&OQUyf-}y#QlZX!mp-nliu=^2&H1
zBR^@h{gxA8*UEV_Ya0sf2c)dZQj?aB)d%LKCQQ#5C@vTHpd6~fu}mG(j23`41)GhP
zisdMfM7kM`Ai`c^B0A|aIpo9lqK+3ggV>49#K>#;-b`t*I5=GD?aycPhM^{r?=)sx
zvy*OZ#+~<_x*v3-&;{wMaS#VANZcT4dr{j9=et4MOFBW~NF*XzS;@L0S-NEEGDgQv
zeHkN!66*4w6Ucr<^n)!n4K-tErYf7nt}01i;0X#Mg0HX;q*d^O9kgu|CxfOu*Y|u(
zLJC=IVr^~H$k-4dm0YQuEBEBey;d$~X7bQqAdSHF{jS?-*0io4>N2@OK@AXdQ2<KA
z;*z`vPe>~9G%vC2g$f3$B!MR>K5a`E%;X1wru&|ud%CQKj_>*oFNQ>#R3hmfk;oT{
zmzG~57cFEa{jr8j6l|MD+CvQ!MYx0{(itF9oQ3t}jl)1RnPhXA$e1LSHIS50B1*+K
zKK2K<ic<w7j2+A(#MZ~yAn>8=$5>*J0g(%7UhuqO%T`X&EvT57<|skuNm0uSy0TM?
zTJvGEffWHGg#-{FQ;4m=K;RTykn}AP67EJCIFvC|xt+v%teVg<yiE})-$;<H3aY0o
z(F!C17&%haP-lVclc-h!00NnA1~QVsEh#_;^J6WE^J3Cqm?p_a%34%p)6z3pyHw6X
zTiC@)F4M2)im{@08jV)y#m-#Zo|oL37B)ersuV%*syr}ZKWM54G=Rm&46rwljKrUy
zNGEjt5JPKriMXkvjie)pR%KC15|IWbDY5J^n8Sj^5LQ@WS<|h+bb?S8W5!NF2!cCF
z_tK^(B>qVQl41cJ;Zl(j1gan4TAHuga;9LF`ZMJ|%u3H@g3zzcjr+~{W_7j=4s6Ux
zZU<T&OfT$+n8*y{B(V#wt9x-9e_`UpBrauDfR9x129SuXojuwL0_^yqPk)loKsZ6u
zBpr%_aDv1;ET^YR*dWjsStyW~^o0t&m8h;t!~-}JlV~(73wkeGD3prDY_5<k_1L*Q
zK8y{c9VFG6S<h)ZotD$YU!&V<Qm%^1!ig3-Q9?PAQix2;&Pb5~p#YB(ud5_*ZJgqW
zMEr->dm#qGoJ3@e|EV!CT8gw{x+E)h5|av@9<jy3q`}02ZAlW9;XiR6*p%=nts4U%
ze9Bh>%hJ$PCh(Y1BJ&_gZQ^!Pn?Vwjl1vB>0iuNTA>9C%feHW;HSC-X-IvYaFo3V|
zRp`lHL+aL4w+pI`i9kslg`|OTXNVz*bh$)8khT|_N(`uIG*OThNR{vj5F#K!LTXSV
z6bWsn$V`L8nWRJ^o+3F^2@}e?Zpe)JB1rBa@WTLNhnP(Oc$y1H4GI}}1%`vqDa?ju
z<P<B(6!Lbz-Lt6NKb$Z3Km`X*%WGBL_PkS{@mp0Xa=_9IL$I{i=mgT;Ah`#Igr<#D
zLbQA%0ZC)pH(lc;WrWErhv~+e&SnFsg?3osxG$k$Y@!i|n(RY@<FqU(5OIPWDsdo3
zE`coqKlptVliVc)$!p+)ClihMSqG4Y;^>3!$dr0=*(|m)2|Acd)SPqXCYy7!-Bu&<
z9ZljZVMSFnW`M+!iS(<g!CI0tmXh~1a2IBR`-ZW^!Z0QyM^2bP2qJj|Un2%bSYHfR
zW=JLjuR>MYx(3auu>WeoAcd|X1Wy+Oe`94J<*~ssHec0j12`9`Bws4!N~L1CQYaKn
zD+9v~q#XucyEfl#wVg%{vvAsN*Ks_j8+fj!5wlUkKqy=<DQA(G4^w={z7ukn3iQR0
zPl{FM7@C-tGEc-CMt~$qSe3!%N&ut?#6TxSY^TWttcV&^iAjr?kImkQjUAGU?A<xR
z@RF!3j+uZK>|h!ut-C@a=UjGLKb3V1K|m}qOidxcgsw`BWLf0Q6HeDH)3Pn`VrLE0
z0=5U@k%DgGwI$z!&c_zBxR7E_zrd2yitxC|Fck7t=8KZ%Cd8Sr34#9-0fOohF>)r|
z1(y|#pM)`SEv++DvaHkWiBs`^BGwrEDJu)YS|9|n#z-f}Y!Si~&t!7Na=Ev^cW6mv
za3o(WL9hhfX16xinV;~Qb6&II!eoj=rX$Qv5%3tO$I{7s)iv;pq_dI3#70Ig1ehZ1
za5V`@OUJDFWP*-rB32XYuaIDlY1%4#N`TTM(*0mUQ;jS&V84J8B#{p8jR}n6d<+}Q
z=!a6rOB^hA6uF5R!@4muMkWu9kuUUQb9vZMa@-A^cDFX;*QTUaHEhkt9Y=xoOM(Sm
zP9tO~K#WBaB}o7>vo^Sc3`@axWM0Lw?~{obvpNwTF@S$J#Gj%9-?6(9dts1qhs9A%
zjch`hNr)5%ZF@`xpiXdr?ns^wCQi-JEL($NW@qhOE?4R)l%e`EhLwdf#Ta~8u$_+6
zZnYbAr`2@Y4X@jQGz|g*>cHk2d%)-pk<c6L)qvy(*h6!Yw;mJ)PJ$4`2_cy+aq5{%
z{Um}bB4SH6@i@}R`jmtyEOjOT5}``!sT0XUGVM6cRM9CXh*2wvByy%OP8R$lu^0Cw
zcO>gQu)Qxh{zaD*)3?N8g?^zDH>zM)lAQ!a$+XhRkj+|In1oP+S<|wxc^c4K)J@!`
z)NRYYi)}R+Qxe6;tcw!OV?JDP?Zsjc;75`<Iv5BD8dC=h5`Ku7v5d?>B4(k*Ln7KH
z2~HqHA>U;j3k*PL1}uU5#<9wF42c}9mPTHtL|5d1%tYCS*0wX1-oAmMk^X_ffuUg-
zftYu<Hr1+5cju<v`c&++U@b^tC^HE0Kz8JvVnjjmUeZ;GR3ghmhCy=7(hf@xJCCed
zm39P+2Ewz*pOIKmZ0ZqtgJ_xwIK?1~AkYa109}w<N@7P(#IOfC)+Q4$(TxO#1w&Eb
zI0AVdyD($jQniAWD`)aOKya|HECX^O(7Llhd){kSyYtgtqpEmr6u6M@tj&N4V-gb#
zl66KsG<-7G>7Np9y~<R{zD8D(o*z3N(Ptt{f{nZ|_JRbjZV<a+OlDyaxdc%#Q`zF3
zR|Ll@#2#dm1G|$d)Yws?B~;l26R(sjl<YzwQz+Qk0(3dVBly7Kx-5@;NOix{aRE;{
z?ZERx^792krLj<uv>+DBBXw!u;-qFp{+)19l5Mr%P8FtsoTLE)cCfOb2wD3O&S2vm
z>Mj=UTLL&z>IYRAD=I1W5#A$7THq~E7}>vyuzkpm3`s?k>SHTDPCd&q*`tO|_a(s~
z#X7sGA(kSx2gzsyIj7!W+!U&sK7=4=6a=tO?kZq(n==ui3=Na88GvZwx4?vn+f71G
zWk)0%$SN2k19WZB_yKAK9$^1Yk~+jma)cPMQ1iGiDN$lLQh-V7fQMorO(fiF<Z?;)
z7SKt8-$+9O`^C17Wl+3?>>P>rKoKGtqXY&8=E;}xrSibQ@Zh46Vx?kPS>JWtR<$`h
z;nZe=c0+NSa^!1CgiC|w19IU?J_~y?jM<qBCJev@DKw*dK=;OkuA$AaM&wb8SxA@$
zh7_CNLp>1y5ID_H5?fbnQ!|0w3<5aB-;8MjqIO9m-z<Y|+Is<0pqFGPNLrEHm0&q$
z4GZRMPbQzwWytlSV?=%}>NLalT->axou<}qhF&*@eM?RwnC0Xbz}D#OSdAoB+9#4o
z={rGBs!$F@awH2$zxyyniC0zI07e7als%n{K;p(Q$r?(>Q`&y)Mns|vM2XZ1hp}&x
zwi4po)Im7p1y`{R*$m)Er3VsFC*H%J!|M0lR;}Ib*6X!qtp+uiI54dJ2<n2eRGB3R
z6tZ|0PIW)#SWOz05iv6!Ka-a*@r12KxJ4tbiy&r5QUcK#8UzD5RTTDI;98+B+_=;v
z19Okr1q~jhWf1&8OD4KysA(P@`50(GB*7Go8J37r)_9eLuRoMiw;;tK$e;&uAdUuV
zQAu`?W5bUL{rTj?BTo*ja#>ibN}^+Yu<K&Ns2YZC+B%e<X@E{t@(qQw;z2j+wj-w#
z`!3`)K^)MbvakjTc|K)g9@2{;A%|EP84GSF_CFC|RT!wS&Sy!(Unr#56V~loBoMzU
z0zfKkEe%UR-f32$fN>_}E-Rrzks_M5!k838kO3ugh2DXl{-M6X{z6Yl*Nk?%)v3;Q
z>N9SAKI%4<(6gW`R8B&Uh~a2O$tje0BE$lnPwJiUeLx`+!qy3E`;a6X6mG1?<e?8K
zTotQs3^p^!Qz0pAZi6%-)H1NX%m_4{F(ON0Ze}%$ksCs3Kx^oXW!Z}Z^$7UqM!F;0
zai*ka`ps-Uo6niLW-1<xM>S|APE~aps@qhewxWirr9d_MP+4B+v5igIl-(F)U&icz
z=J1uwZXY=jZ^MWs0!7H;H1-ma6I&*pq>M~b{^Zpos({Iq7?4w{451Y#sWcZtm;eg{
zEzmo;I*Ub^d^+gI&SmrEY@q}wC2K0oFqbfAv)ih7nypr=-E1~H?M@Q-Y8(RlC?fut
zjux~j34lb)<q@jKHb=}Xd=|ZsB`K!?M_zT3HxZliK%%7f3<IDS(o1J~9!X@R5(wwb
z#B4|bFsO=X-x%c*V>5t{BwkJO0V#0`GnG({NK8@Wf+2t`0%aWfBdeM5Fq@Jp69P^k
zC?%6AAhFX$1J^-5kPcLddj$}QxJp{M$OzX#fZ2paVT2ICr&tCU7tlTS>T#zLx^Co0
zWM`7!n_y1D_yDp7pxPvsg&m)AHz8(O1XkooFuw@g6BA3q{E&s%BcMl!O(8M~B@slA
z1F^+Av=SMl6eELdjsgrCaFNV5K>v_vm>f8=VVg!aS1Q8@Ecf-n@Brqm)n@0X#_KcF
zk=v3ZPm@9eB3mO_O_njU7e=VXBCySCtE%J)A$OKWmMH-Zwr&Vy5RDRS6DXJiIsq0k
zNHi_x-4g<uqMinTv7XpQl+gp7R*HQJtZfvw>s5}SQCN=DWk%LBl983njA9n-TnUKU
zz_b!a>bjoal!K-cI(p<uu?KxZ7OZAS7A>#h0$TaHAqPZLLXD6-Aj*?tVe{bj0$Qk&
zFw+<82317B$Zo~-G%|+bgb4|lNwAr`5YQC?`<V47$E~S~Lp4mz(6jk`sZuFcddt1N
zkR4EcreT02f&i+T{G5&Xxn`}}Y1Z5Aw&VG}3!y=#3PCo7yaO^hA=xBjWJ7?7fs@8w
zei4C_(;5)oamejRB*zd(3d@aZq&Rv<<AjVev52M(*ckhcgjI`AB+x{pmznfbMq&}e
zb5$0Z1tRnj3xiTlaVxukRKckPyJX?+h||nDB~I0Nl%^Um;geoVt#g@03`iqji9wE;
zQ1*SY&j_0^#vr=|r<)cm56je9NRzGzqaY62NvEE`_6P$~W&$ZhY4jh5sYw>0AesS)
zG6+Kog3^Yv)v0ij1|b%v^fXvPSb({Z!HiBPMTE_0Vh}q?lE#KX_QG95Y)D{4GROl-
zx*UXz>BZ14Rt73CTdtIQ1}X!ChGhr7SDT-oJ3c-$akSg0>r$9Cb;Z;nbv=QW<5=Se
zwM530Br==WgGCBK;UR`X-l@z~9CU_3g_AjBpI3ncLZmE1j<GOF$TGW7B~20}CJfzx
zQ#^Q2MP>-WZrvm=bl$e~ylq!t`{`CeGpIsIg*oPQ+)gca8;R4BlYrnTK`PlN&L_c5
zbOZbx5Q=saC16zoeHJr5B>P1rZ>J)RbD4~D_WWV`8hZjcoD&mRv!VY92`wa35K^H|
zFT%A$^A<vc^EiNb4INm?vNCoyU$6l?dwUB#l^krpd=X+L0KW8`Zl}|2H{5p9?KIo9
zDi8^dZr6#}Da3Rt3CJ8U-jHIk&qO4O@ab`a2ZwzLxUpuJgylw<gmV~T_L9l$?WAyR
z%+^J$uoXiT0zIlr3XBek{o4c*6lS&;k$P%&rraYwOH+bKaPbOCoT<YLPKi8nq7(ii
zi4?JwB?*3r(y%L$xvcn*#H7g+5kyg0Y7qS6TL!o;tfEk+D@f1{ib3*FS6~Ig3^X-D
z*SKcjJAOBIyNcVD!Hp4lpCG-32o(un#5@VXPg<x57JSeR$hXE8N+fd(g?68Utr}O0
zagsw!Van7kt0fetR~LjWx#S@og+7D@>PzIM<9?G8TOb_P;RFXvNS94h&z36vgO&b)
zY@rN(?zEe=nc0bBN9JdyTD2-5bjH+dO%(}-AzKofFo)8tL)OSV&;?pkgm)Jj7ZS;!
z5H@Lh+DeY8Ld>{9NGzK$mKGD^kQL{`ac`km4PvqrIiJT*^Ob^xBpK-*VA5Oy<XITV
zRQj^TB8VEK6!{M4yEKDt&2QHeza#lR6Cgkd#ZVnTc0vFjiNF_ot`g3N-~lV9mKYMq
zTGD08eo#exh0Otx*P*33R)o&TjYxJys4F44dSfE2h_wzA5|99+Hid)<wq2K0!?3f3
ze5p{*<VgJ$%HX|nrjR!*a%6h0+ji>RcD>uId+m-#4ltLLkn0D25Ky)mEdoOxGAc#(
zp9mqSX=Yr=u@6P$%xS{Y&So3Ao!P;eL<`A&q??%PN$zmwOSs^$WTb~Vk=Iiao}L(J
zL3kJhq9kQYDur`cWRWK*f@#9#m$ukpw*#xSAQm2dCLNHofUqiCta6$cDGPsY!h}I^
zg!0DZ)V5^7O`~P{O*qa)qJfN`5JE&I{SE#jF2suByfAb;2;&Bp)`)$uyhKb$GuKi_
zRLlW0LNX*dc-o{W5(#`03QL3mkxENUo)_XYVQ6E30U1>k?FcE9D+6CCLQqHKYi5xl
zr+tekxd`t_1mQh}^(hT50U7JIQLL1E`}&6#<qAc};QHL$?9}ne@v-TN<KV_9aKS#N
zriu(PMTjplA0c|c{KPZ?!^JfA$JRF$s*&nYbxj2aW?-06Diymy6(tBG*Cp#)Ay4Fs
zrEI!bWcHX5wXi2NN_0XNgwAwH_9(mpriA5`@5z=2^5vd<r7x4s;FeH*PPgths~vJ6
zHDj+6`Yt48z=>mS5VyRr<3|oVOSq_)<h;uE8{u<>1f79Dk4CELp-PB4;jCHOWdhY2
zc?&41fHsBGe6XD{IcH(=U?OplF!~l?g&Y<EHbIAo)-zc>Yvs*+saWo>^!61<@8wO)
z#>Rz_-)*%!twyU}h4}|9=y$u6XcoAz`V8LHBueu<0ghBof@6MU7$*EiEF07Xq{IxV
zYD^I9CZHr1;ZuxRYKr_>_Gv}JFMo3GE+G!mlvq5mt;|=H%Mww@kC>iBi^3NZGB`<7
zC<Obb4!<~!?WYV$&I$5rr3uX<zk<k`6jLIi)=8QTAajV9Xe$=dKB6FsB+^px4eTwD
zeaOG@fpBmENNZ3EwSc2!2+(@qdF@6c=r)Zc;>2JMr*TRJ!7`N!so8R%K$LKpkyWfI
zCe)=4^{A(z)CJdZipNt=L7HhnlOt*1b1E&FAtJ8IP=cYjNE>Bf$dPf-6A9=<qa58#
zzEtiT>>V7;QNOUbS*uNs9i19KHZwEbY}A7w0Kb_U=bI}WW+m%R;j~iOAo7hv43rfk
zM=yy2d7iN*NLJ-EPo_r<IHFusXah{$;H9N75TzY06duR|AcO>3V$lqZgq}<plBO=}
z)TTu@EvS)f&mh!yCY#d@EeRaA(GcDvuT^*3_1N=6AM6Jul63tL+7Im4@dBS9M#5Rg
zvO$c8SMpbqPNe#J8A{T3$?AlB2qVU><kKRwL<u|KPL-I@U}y?cTH{cI&NM~&T$IqL
zq~27rd<h>Jwq;qio+;!?ec5tvp;*ck3c%+iWrM&0`!(vV+I*+k=yo9WLY6(k*%OOA
zc-lis$BUFS#YPsP^o6o~;zU*0Dr^s?Dd{py2J+Iyd;zjc7<9>;%D{-6B!5g=fO(qT
zn5^a!4hV8MU*>!#;bh16LOB3@sT@P#v@1eg3~7baB{``If>mJJ^P7EmqKHZsjptaa
zV!_DWLs~mcq-EYE*vuxim@Ox3)6YYi1*<R-h@q?ld`M=MtXUfLAZIo!l!@rKTP;}B
zvfnXH)zl4e7f!=kP#lcig-XI<6`nt781~THI)OM%QrQ{9zDrJ&<S>@PiBf{i$Q~!Z
zZ6dlU%N#+GL=I+5d_fu(!wkKUBDch$q}Msf2CmX|Gi%rxXp&N;0uAnV+V%PQ$%*la
zv9bBtxn{c+`aW4^>`}prlOIG=IVd1PyX5306+z|&sdDx~i-a@CBw6I+K%uz-xk){c
zENEE|%_KHRQ0cY}LiYmVx-d<7qU=0kKo;ZdW+$s!_Jc@=nm2M*CJTEtmoH`uMI)1e
zU6n*ZXMVO*pY1f}+~&OB?nIsoQ0E04z6&BJ;CyS!|BS<hq78$RJt*@A(!d}mkeVj1
z6Eclm&I$qhd9VxO*yFsjINb_5Gzx)|q03B2NuC;~-gESja1zci$>=j7D`54N%Dupx
zHq5_lUN=pA52LTuX+d>|-LCIDlxWsz`%YI1eA=a$IDpV2XKI9T2<hQ@5oZR498eO8
z`?TtbaJCB9E!h_lSG;fl0%C);AJ+kJKo1-kaMHFg8X^%cWEvuKhoBxM&4sv46p$`t
z1;rqcI7BBvMtY0<AEenxuj(A`q~)Nb!$jl;ki@01ZY;npqhr!|n&{_|h&me1FpA0D
z;&d8;(=GH3$85#br^ZWt!@7|L4K$~ZnVEu~%R@A<NQY$C+RcXVhjy`t@+CMlAhUQU
zBx+(qDKFsQp#w0ZDbNylikZP~f$-Re&333PGW{v65if)vm<-5Mg@v=oJI66%jeRQ;
zqX`nv8im{``33|Hr9*is9NQO(izIqgPRJ&nQ*=nruIfmR$GJwdy8($!P;%DJ(~-^R
zz-INCiN^eVyWN?ZoS2`TZ+9HZk59PFf{X>pAVZoWcr5A^#svgVq4(R>8HoQ(-;nHk
zC+Z8?)aGojaDjZ;H3pSoMM*9rSroz1Y#9`$P-#LCix334o7iiu%7Ws-|G=WQVdt~u
zzH)D`VHml5k8T=)-)+|ByvAI&dc0eo_q!eZd7OOL^}=otyM6>zKRG@DO$0tjC|W>p
z9Dozpm^o0^wX{Hv?M<18Tvn>h#>{-R*f;FpYLoycixfXD31Dv?D}AncQaD>FPVEbY
zoZQ%R%5KT$3*}NzUms*#zSwJLU}-7=7_JKorP--hy>=I98GuOyq9C{-y&<AKKqwf1
zen9(8jt0mDfGW@TxtKtv#xAMM<KUghx#5U6TZsY-v$KM7h?qe*rA(;0g~0tn_6hqG
z+3g3^3(EnV9Re-T*%V|_H~_+qN#b`(>SNi1h0{c;iIO@PSPydKidK>`5ZL!6O109Y
zGg38)2&j<rjXq|n0V8<ijI&hBI`YKBkgqUJfBS78*uVW(o%tEp>74P~uj|z3#&<md
zR^$Y0$!|A@m!A$h<;ZhS%b7e!egMu47%r3?13j38$Hop{eC_Lw?B8?W&we~uDJPYD
zNGMFB9M4!7o@5|~EHZRfys^mG;s^urC+4nF9f8Wp=u+xbmI#iJ_csnhm-<|ZRc3!f
z$nb!a6{YY)<QNI1adG^GygUYRA~|fJ(yVMQTPWr2Yz}l;o1VxQDzLcb#t*|<g7m_N
zVWg(jY)M*br<0)MJOT1A1JqF9u{txp{^G5so!fT%_w8aY3&vQaP$rb!PJzIHm{24Z
zLK4HKP(+cE0!vSoEnV?x&Ddl~(hLfYka7-*Y1q(woUYX~&`(a>VsGes?RK@(Za3$q
zo!YF^nDaVKP_E~Zv&ZwPsKo(ehjF!5zv>Ndtxk^ZesWt+xnvVOmMy9;VI--FViXbT
zBbTWgChcx3-#@zLoQt<V{3}V-x$HqUm4$j%W;TwIC~WqKu?nPMn0Cg_79iKkJ>^2N
zoGTTJr4mH5Onss}x7&uv*KNW=Y5Vx|yqFy0s+F-#8$%<5s~ZHq>$_bSQl5H4=?b<L
z;|n=QncWr&3u@uAWwVM5QZkcN22@<TKw%5^gaF70C@G(?w*<gT<6WE#EpZVJ$t0WQ
zH#U$`52Qd1x{}YCW`UQ)9#o>q#U3#1H3DoL`6VZ?%qdX{r{1te=8;iq3+G_V3%sa`
z2q~F_qI_71$eV(#3hkbujj#T_gHJxvo}E~7!PS?)_Y+6nyQjYUnaa}BHsA2UJO1H+
z1g_hxHK=n`p%A(5;?*0~^1wqs{;}5A>#EuE@DeMV$CU}ww@5kT{9U{Ej_upMa{bvG
zH=lR+zkKn63omRns(!l$ky-2=QVol;juUncDpI>TO*ll?bN#~#rMQKSnd6urP-1yt
zSb-n}k;N3ckc@1pe;CHjqD`0YfAFV$#bOe8?YT)8(yZ8@FAv}r5(zS*t4yf}d(=O=
ze55?`;7`9@8D1v&v1LFF$k~h)x$RcB8QFI2_{6|Pr%Q_NJ$er~*sD!DUJ$Ehu2inh
z*Ia0qR-CkyqBh!7T7;1RpFuKr9Y=-0&t#@&W;L^mF}sa<5DySIgi-In5cVPrqv^?G
zz;#xx0FgntSpbkwe)UGX>ROfziZiSn#D8`CD9oSoz^HCmFs0kAHUvaAH`qV2s7Qg6
zN&r9^1(V07SM)8JgStL`q&7cYn?CNenue*vj_P!sF5si2%*|HkW?I<ep1w>zV>D`W
zVDW<NYfc@K3uaMiaMWwH+D_ZZ7RmzywYi$>290K`-gXr`1Cm*?`Sh#b{QLLabtl+%
zzB=Q3u5DU_!;7dqlIl@YvxOoSRMMw`g>u;}2AnTdiWMqr$mDV`A3>0=i&btoUEHnd
zbz5$u4(th&jIyJ+Dw@(o**!s3seaJydVnD=RAE59<bzP=bRan`0T%ISc1MfKaMp92
zt4V~!$wLcn6?QR@TbW}Q6lY6P+YwMHNpYr3B2(qk6*4JxE;5Qm(u5S~L0fV-r6+;#
z1VE)Y45h_z*%dog6%JXD77mlt-Je!rh;P{o!3DYr$KN?dBMIAsQ{~A9Q-GtM-FE+J
zSG-}>=8Lxf_+Kwrz3INY?rC^YqtiZT^M%u6haUg=4>xRBf5mlgmo)vEJAb(IzPntQ
z&&?yRxc;@Lz2b^P2M^zI`_Id=ynMyVOJ8{{hIHqTzq@Pa^R>1!apb_C{MF|!e&w~D
z>coMEesSJqTUTGSHF8?pfBMaKs|FgU_(2>rC&$j&`i9<>>-^gBXYc%Bm?-Ub`@Glw
zH@kPZHL?G>dw){t8_EwX?q7C#Y5BV9k-bmc{++eI{krpC{d<5rJ8$`Fe}C_#fAGmj
z(w@ElmhnS-m#p0!h2Ekw&Mx(j9Nd2A!QDGw{W~8jjjTAlch~gfM7}ssC>FAXd_I?3
zefD{P&X4}`hm%M4F5C25loHjLUwrzSYu@(9iK;(%*KK#-b>E^TODseEtxGOjxoXw^
zNA4VZ;i<)EZonF@+W3n6z{uW*e|h-%r<3}0)9DT`S<&fsS1n$-WW$!DJ9j*F|1a!Z
z0R;D^KmLep=b!%7JxBJx05XL(00*0;LZ&pda_ze1YtPzo*KHGr_PzDbJ_Q*3%kO`~
zZ?y&&ExGo_ciH(;r#3S?HQ6^b90u;$7hMJeXU79~?|c4Pr#}DqJ$GDq#nl&I`@8Mx
z+%4by%JfVXAONaw=J?d;(#3E2;Ku;%?!WcB69<pgj_%QX=ZrP$3zf=QmtF~4`Q<-<
zapM)QTE1b+w!41*_<awJoW4>v{VQK}L;vDs_uuu)AK!B4dM{|q&jMo9rzWny@og*D
zo;7*+z-{08X0cM%be(E<2q%K~tZX(5Jx07&E@ukRfd%M2h<QNbR<jOEuhVKl1A5&K
z<Y)rb2Qd+a8o6E#LPk1=$rH(QV95Gz2Zo{R`egcr9NVK@YD$I_W%V3<ltn5GR|~N#
zh8+@Iltj(~Q7<Gy-CRH{$`wVyt->B*D#z9}dgUrqQRl)^fQusub4FP$$;qJ+c2%zt
zyUnoMiYVXGl{x=Q<bbB0x)WUlxRjR*x7csbdC!VK)Fchmg)|{$q5lGftGQ<bAht0-
zGuf`qj-I(G2B_>AIJWJMrK{JwiXL0JqkEslFxOrG&chA=ktd$s_=fk4t~zt($i8de
z@&_a5zw(|(pStAw-+ANP{u_q#nj7Bo#8Xc^_0-Nc|M5rtSi14uAK3c(8xQQ;Tdg;a
zPlJZGZvNf(-v7|{s$Bf7w|rRPx;IR{IW>Oa4SzIr@$dZN-p4W<UU~65J~ngsz-90F
zsJ>$JFYbLfzy7LKTP~ZLnz-!!pHmlYy6dio2G7~L;o@tK9XT>zYaW}P&-D$Rb;C!V
z*gv`BxxHt<;r+I4EMI@_H6Q%ao{8$Vr+1(An)hUSmK;8ObiP_`Itged4{J<{uDRhI
z8!o>3R}Vh0=ji16%dUs)iztcN=^Y-t?)`r`QENW__+#f?bzP}c8C|mMrf>YnQLM+F
zdEv6(|FdjmAlE-~?Vo-5VBL9Q_x@MB{ZI3S!r7Nxec^R)kpu6KzVMygk~NQQ-*xF*
zKXA#bUROJO=xrarX=vT~J9g~ceD&+z^QkX`F?3+?PSZ3p@BiYrrONUj-~Q-@Z+!Rf
zeB`FP9^F-5wc(04y%RRr^?&%$B;Wt+3wxHI{ab6#Id5k2*y=48&9}p^fBox2r=NBC
z)>m)))m^7=IA`PK*Zt_$+oNpH<||(}JzH=4@qE2GFuLeHANwEs_8+J_!5iQ6k<fMD
z_^uBvJ?)Gw*S!9npa1qlkMC_Lx%YqVc6HIZUp%_|?AN?CwDN;zZv5oG+*VD@ho9a5
zC!hX5uYEO^_YlaoU2VPneIL2_`WqhIvGeTTe%0^3`+fD<X#-H+GV{e^Wnf@nbae6Z
z<x5XLZPCh={fkD6m0kecCSl~Mi6aM(9XfFA(4phUj?7Gs*XQS)Ry%M#s%?rQ7_MM7
zq3*&UbbzzkKvB(By8}~PO4}W98G7of7gk&%YPMrJ%{1i43krtds%);M5;17jkn{>T
zN`xM;i;sK^T*52DZIoXZixP*l6G+6>keqQGY3#rRCZfcA%2|_ig`-}gDFbB#%amor
zrGcU|jj$wTP6iNJ3yR3p;i##?u2(KO5Q*ComBGLaRuVUf?Tj_C@7bZz6-&2VmMGd|
zw|(pPKXvoq>FZl=F#hy|SH0tXnV!LIe|w|qIq~`Dzw$kQ{`k+nJ3BY~l~4W&K--ah
z&;R93U#!;~1EWi<B>3uQ{^s@{d|Omqg+Xv=|5H03y7#%;fA;=u+aLP*cm1bseR$iC
z-t~`nUUI{`@45NYnL_2XO|KX{_v-Kb`P<dmLq9pXy?^EU&98e$cG>!W{o~gde(SF4
zp{w8izVWfcvlGX5{qW1qGdqr-F}mX7>!0}eJI0=UY}Zfz{>rz0;Mmy2v0J|+1zvZ<
zhD+Z3k*T8x4?h3Q{$JeOZ8cY~UBB$Ci=Mvsr(P`ACy$)9`8=#~yV=l<%&zS}Kf3K_
z+i$t~hCjXO{8zqlZf?4-uVNO8-~H+rruRG<DaNH&Ze71=19Zz{4?p;KpS~$4N#|d1
z{#jREKXK^5o~O6({Qj3>r@LnThSit7X7>14Wq4_+l!w-O=6hdg9Gu>{q`Y+fxtG4K
znjcyDw{N;IXQ&U3Kl9oTeQK~$aFT9Ui%a?3{Ortq-~7_^I}UGLzY5UkXMgv9CC!P~
zz4HU7Z+iOSyML*NouU3-*h<w<%9naOUh?Vpy-g3hle?e#(5JqX&E&WK?mO=P<t=+3
zxb@(U`~TweU)yr&RS(>I7Z!X;@8H=NT=>JUeC`|n@bxvT1}c3zNF0D#&zB#)>$V^N
z<IM-Rj}{01{ySg#+nonzFF1GOS-*Wbl*f)o9{T*JKMVZl)~4U~M}K_t7jMGqty+7=
zh6^wI`ltV5>frvb?0xEQ{^@(;`}a;9+1EEXOvUT~6!{V$Gc0T>x^*45T>}(vx9i<5
zpn3<!1Len2;!~otGU5<E#i#rL#uL?KiAE-ltWf_1@?nP@Wl{~w+7WIO?j8_|g4wib
zP%MiIU6I+J`ob1KGItZE7>q2E{54?%^4()mITH)djGT4>62V7>gEnf~Fh!)Nus@L4
zB(0%HVnwJj8d_>(a+rbQ#c`b0t8uxn!~t!QqLYaCX~;npI#A}c+a%)RIhudI+;?#2
z_Dp&3oNM0HuFW0THSIXgnde^tySy=dq<qCS032Ix{F6#w|K!xn#O|khhZjA3=WV(o
zui5fj`wkwOot^>1|HXUX`Sw5h&_CRA;oU#^!Ds*RUv<O4kcx$3v5;SP_To;vX_N-e
z`-8u7JFRDTY;(tUl?(YGa2BmUclyvCZ~D+_8#cA)XP*1scP{waw;IO|sO|Zc8@F^j
zHA^>om#%3}9PG*JnN_2f63<T`FO*8<N~LFT#0_K9wAa7oW2R}1jZaMNd1A%sYidV#
zj}8wvoq?d+bYmGDGB7x_^2{~1ZBlO=OWVJD=hWV(RxV#|%917fUZLzwj4PTkcXa<N
zUVHJS*WEBZGnXy(H0lk*%8Vb_Gg^|$wo380ZpU%Dvj?ABGCD$mT$h@ob2dn9TK2@A
zr-q99nHMa{Yw^s)k)`W5HID9HR?$~&dd1k0!#f}N#lY}jBW&2J)Z0@&et1uRIn#IL
z>iXQ2(`a6C_2wljR$@y_#oVUzwixBXBZm$)Tb<{heqwNFc;dhdjmhz|&e?Ks-wSu$
z^1U-RZdP@z&@=ev4}YrLX^o8?ou8Wrx+;`=A9>)>_q_GZ@BOn+|K0~$58d{IZ+-0t
zZ;<6~n9R)1b{qAcyp-!-y!YwH0LBKg&=R^N8?&?XkKFn5MMb4&aA@bYhcAES)hkXv
z6G*aHD%I=tGtRsC@;AN(*MIoF`?96diZjkA_YVSgYSimmh2nDB6o_h8Ye1fEtLgg=
z7e$4VPzfsIK-LsY|5P&_kOM^`XTKl#+%qYKmQ?O3DoQyw3ZKVG5GWL?<jxNw{Ki!W
z1Y<dEGfAW1FE){qMF$9xfvm*~d5&p$184t5Y3{4cd3O}@<G72=ewh=6Oq8xdxnS&(
z6M5GnMJ6Oin=Cj;<PfUDo}^lyg=|`tAuef9kx!*?l@~E2KOvZkotbgTnF>Q&H>_iO
zc5S@kwHq(H<|`k6Z?R8%;h85cz5d1nJGa-S#v@6Y89V&l&wjFRpuFVF4RYx8S2k_A
z@RFZ>^XB6dNBerqy?wpC1A`eQzH#f;r7M<w^?N^1OdI5ayBU@VIW|2tsb?|=pL+Q4
z)7wlt1H@R?{Yp>S?{=q;>|6hu3yZz|pmo*EZ+ZQz4;|dM@xm)r-IzYOuXoWh$cU-&
zqs!K83>Cu(sNIGLy9B=1tkuCJNB8Zz=byfiEtZz7*=R;xWBuk(*XvH`#Ad7*cA-!V
zhoP8tCAQ?K<238XCsv)YdV1H=2Y&jkcB_TOX;$Y9L!UT!@HM~x;lXtme)xuK_m8(e
z{PB+(mW>s%Ga1eepx!oA8l%XRSxViz{6r)Mh~_>~XxUjsw}5D1Etz&<>d4;B>(19r
zdv<)R*f((YD=vNX)_+z_%b*f<6&J~ud$IiaVkw_5>5|hwIOIDW;LJ$R{NV3Dv+wE0
z-ua2o1ODyZ_4F&>_*Ti4#`iwkQ|Z6-%Bz3yPk)D9J^0KcyS6`qdkrjK?RT4leZAFY
z`?4!9s?Aqlb=6g8uUq|z&wTda(c_a7lWmtO+$F=Rx{?!MQ?ik)u^%A;MC|PwSh`}>
zx4!+O*~Y}xuio0*+kg1L{<Z5jaM&n%_>NmMcBa%jxM=0+<x)vk3yF$JSlxEJ(`mIE
zO}w-LBwHOnaEN25DxcD&xHf^Ho0^tdlkT80{3NX$iqq$$QH7yl0)QHnPcNDmaUwSK
zCk05NM0B<n)y-fGO`<f{wB6eYM{S(uX2uIW3`B*C#>u!zswiV_kjCAeL`R;5ls8Vp
z;7EmX0-K6hww#z$E**1@l@f?zaEe%qR%zsWO^XR+5ib+HtZ3@7tcEi61tGmEYGK)b
z#G?@Sm_saVDq@<Dd{pz2EADvs{*g1!c<|2K-v5cu){Y+ol)vNK|M-Rv{N*Qa`V1KL
zoEzTvjnDq&?DX`NYd7Ecfsc*7@a)?@_~(yr+xG3Ref3NK^8L%Nxcx`}`u$F;IX*Re
z@x`l^&>esJ=s6c%{_NRX9=_wYcmBmqkALf?C2Kcp%QijumH#6v#l>=E@3uSgYc6`r
zXTNp#-~aUmZ~fr0$?2Ov^!vr7Yya>I-+$ygU%B9IAN<wNe^j41m>*p1%Q_^wo-O6d
zy))C(Bg;>}<hmPP*#5{X|M1UF@3Ea`ZNux|^Y{P#0|{*IOrh!~HdJt_N7L2$`MERJ
zZfG2MYWmQw#B=;s1IIbn{$6c%de!<(YGvfkzy8=8-u<DOu_Jp9jE!!PF4?^CO>aH>
zP4D~2&7c3&*pVZU`k|lra+ELk#H~4%I?v=C&yRgCQ|y5P#Fl3YB`U@#_7J|(6|+$4
zTejx5FMM=h(^YT2>H9lw{n{B@-xiuhnD?NhK-DBW2lS!kD_K*|m3pZ;QZQF2P*nTz
z2kzW_(G{0$T6^&Y=Us5+b+d=|{ORw$`rNIr`@7q2`{h4>b<I`R^)6o>RmXPR|BDZP
z@^A0?+TWb{imlba_|E4(kt^6q9Dp}I^AG=g?=9bY^0CL}=jO&{YgY}9#Igy7_ndB%
z^6S)MxtH<|L#cmoFkdPiJ-GjU|NU={kB=SQci_XH`P>)(>f=)AFJ5`t{PZMjw$Fe4
zJI~yI$CfK!JvKde*Z05n`nUZdOuoB+^i60{uwSR$CXWiNyO2~Lq(3JEiL~gn`53h!
z<CGQd%O<KsIeVS-fod2AEcr~<g#3!B4-EzBDf5szv_)wN2DL?iLgI!eTp+|Lg6xAy
z(*86_!q<<u(+b{`lB1Bix@Acp=aevyGIw%sB1ts1V|_?2)V!q?ZO!BgO*ze7qOga^
z)1*=Y&hJfwjUrM*m2q)eJj|Y3jcZ9bi%v9K;R<@r9@5waC9~g^SvPHDnNaMT3(_>r
zE|kWOO+Ix0T|uW>>gkIE_l1K;_dW4QR+r=U+@ZsV%Ihu;OT%~H^4+oR_vQMBe)7Zb
zgX|WadDgx?yKnvGSE6?P@y8xpzG2Jqb!+dw{b#@Y$&a!bdur^+?4cLz{?SFJt$y@h
zzcAGajAdun0_EXve>vMao-Ox4&Sh<5=Yw}P&0c-++Oe@CkA3eSh70D-ZNHNHmurhw
z@87-a*spFW_x2y1m<9tFrde%u#||F|XUCh8sSd2#_p4hE9N1r8cTrdzy8YW<pM37|
zBwIRiWGs`(j4nT|-gQCu-rV?9!|^&TXM8saBP$!4rF-tUz3;S*kzKz3$NwU?rUS+B
zJI&`FysInei#A<SYqfs*gYRgDy>IvP$B!O~oMulY4<uTjIo58}s`K+^66ABa*=nOT
zeXL!ZnV&iyHLK&36PDl1mx}d{i$N~3qg{{OThmKY&(fzKxxYF!ZpBU#1&USZhVt0N
z@tkc84i7Zi)Nr6;#&grh4<6V*`}{V1EBCMJ`0<av`uRXs_4dqDcmB9{_2%rz@_kQl
zyYENeSi5Za=ri}vxl-i-ML@d0jPtsFvi;V7$;A$(LFY2l#|}NabLW=JUb$k;hDYza
zbJr6)bVDCMc4TU5`r!UOZnLK9>fG#%+nmp2wE24Lxu<pv4v*}4VNarHt2du}=g)3=
z=Kj0ZY}hb8KeKFPaANF`Yvkf=`OuNWJMO(rjofM{I<kM?*z?a&NkgOAbvm986OWTK
z*;^r~SQZICYy?s3lq9V&i`Z8|9)7T^3P=km1GQ>{5h-xVMOvb}Cb-&xnMe;NC6^@!
z8#qNKZ5+YDg(Qv3CEP)VT8eUW1LiPM$05t_zUU0-Uzeh~)C|WBB9D7tq=hW(t+6$E
zpkNLct(-x_7fCc+Q7Jq)u__Wu6qVSKi;lr?5ohwS?v6!xg9{^)g{H5H=<~#hbcCQp
zOOJp$^N89;hzcrGq1qo+Pjo%ejOpW3olbk%$`x1!+fWbg-CZb@28V_;Icd&LjZMzN
zm@L`Gz{n`{Rkzc1gQV(G3&%xEmT6{YeC*J%$tg;w4Wm`d79Bf2St({$FCJ>lOb!n8
ztzNMNJT~76EG0T^@ldAF6Syv?wF5`{hmIbr28!f$h6YEqOfGTTW8>q#WY|f#c*XJ{
zmO%P_gTscdH|C}QL>DbtzW>1fb{L<raz$%?`shq8NR)g&*SBQl<W#j#>{-5gO}VGi
zsLz6K%DVE*6OUs?Bg6ek7`7t)qPKqZhky51JD=Qv^&9CcEnc)}ZfX)+o6i+qcwukV
zA*k8)!-hwkCWXQ1@K7;p$4;%Uubj>1AoyV(+lo{_ek_~KP$Vk!Gr3%|Hs3ciY-DVJ
z!=PC$F5kHLf>-T-=x0zen=ZdLDULjT%gyD15!oyNWWnlQzH)_WYR&oS*l8JZGB-If
zJ2lncKXCNW;cC}64JDs3CuXWEmMymv|G=RmvTpSiEHjfabLGC?!o>JkwH+j`)8F5(
zWC~5kZ@a*H>eSTaRIR0Gx~1zwBcm_uJz!W?tyTvOjEoL<+ud%vF)%P-+1B`xqw_QE
zkKFXP)#>Sf{M_ePtX?(L-+R{C8$p>t<gZ$JniPk7U)Vh}SBt$a%m>d4_dUN0QoL9y
zyKa}0p<_X)>=C4hx2B79E=kl5a6?0t^EA0ND#zh0Rkd{$^iFAxmO;%IIN}af6^0Zo
zq<TSMjgb1&#oWb*%h@?0k@!s(1@c^Ysivg>T;nG~3|zaUa<2_FWkR2G5x@YTSjP{z
zELlVfh^sA4?#Y=$#DqGx7)(S0PMpTnDJ$GytV&vrYKBya@;Q>o_lciHZ$pwdWG0F(
z8p(-@9$E!bk1FSYa(hDd9g$k6#t`&CQ(cR7Eg%b4F%8WyusT4}6qBTI4YYg2u^kdG
zvFn8{^-ztweoP$<<D`r2iYPUlbB$?G?Bk6KrdF}kLCBW^EF?AJR;@HeLcc6u!n8}D
z%0hxV>bargQIQGN3s5Ia>RO4b864CRmN)e^;%r-;8qKPn=qZ~>?MQ7#TB4h!o`Fiw
zfR(eTo1546o3mk~mQkpwS)>_Yp>CqP<yHRd!KgXkY<8S(2XF&6A>^6sVS+&ihNJ5@
zyPSVXt+uFvXU;Z<ddtOf)-br}MWz-qCO4|%VghoniJro?rQ7(wBG1mu)qBoZyz!#I
z?F5p3<cWI+ik4X((m{39ekzXrPT;nKF77w)HCv(UMFI7RrsOhB@mPH0W+A)5EsdI7
z1k}1u=OPx#RLErzgw%u3qr_=Qd5Td<)b>J$2KC~k0rcH*Fe5CZn)WqKxXm$D=w~bo
z_R+}NO~AoHbGmPE#LnhaZvG?VYMoZ6(QrBquhXv9noxaU4~~CPb0^VWld4MCaN?p~
z3b|3BfE)UVxE^<S;2uWQ`h?;Mx~64yEpO>mwTp3*iA1n2W|vA7Nx-%q<*fyxH-yTe
zG?n6WGFKYOqW!dJS*Y^Ez(w=(wC6Ebdr-1UT1BCxK?rVeA<B)oOj8k!%@XcUL1|51
zkeHM%#f=Qp)M!cgJXJ=Lq9930y+h2WT+52NCmIJNah=%rg)u3KtZspvg?Cu=mgD!b
zXfqXwu!=$%|FX{MaM_FnYSXc|38^?Wh`MqRbgB7)8;SmRAQ3r^xZAaqcs}>DODn`9
zF9Z!y`KCo>@@l~{@}^Gi*%&iZ7-K|K>M4p)7_VreVSP;L#oR2EJ1?tTsmW#Us+!hC
z2y8<eCPgN-|D_Zqu$rGp-2hZ5ldq#tDwIlgR#y|>Yu4Sytlw_Ro&)x@G8xMxX31z$
zZT~~LVmY)-zuTqAY?MZuWId$D!<@pNoM=EPFLby{W3uW(Pgluf3!59bQ41*$ltp#F
zBrhC4&R2Szsb?Sk_Kq;uXC%>@HESxv%cxA22)rG3+Hto5v>Z6yu-l>J(a?`6A6@38
zJkifm64k@_2X#Xx_Sd)slN{k5>>uj*O-*PMQRgZed~jfzTdi~D8mHPT939iRFRBhj
zMD?_Gp;+kY@9%o9CizR&tdF^Bq0@G$maj#;=d_!Y?Bcm3@T2&|a{;*RB_|?tI&m5~
zQxg#(m$=WJvQQEtQrSg6a^a{+yKr)cN}p}Gi1$F@o^Ej@>Kn<iBEs7uKTH;lVisEO
zC$cES<w`(S#mp*Psldui)ZJ<kS1v?UJOWyw?xoSo9@UU=8?cxf>AK*z=tKi0!EmB)
z1-U~*Y2k4KCoUkGMW>D*W?F@7>eCYcL?c6y);^I>6nrrCh=x6)95$imS}JwPP$2?2
zqnC2(IVabkS}>1F+<o3^N>F7vBQZk2E`t6wQ*XE0?4?yaYDy~sE<(HJ>}=MejuDzc
z{rZSfsh~X(+00VfGd6zl@f4!vCdR8<k^lm7NMRL`m>?QguxnfN=TSwAJ<ww$;;U3U
zo3r(d601%F0554)6Q?V=>>0!&L&;DsMhGb|SSogd0C<>t>ky77dqIjZ*C3A5?9D`^
zASDZrTYyTW*4+k2ov<DrSJrR{mk|+_?5K&MMXKR}mlNHA+8S87VP(O}mvk$m>ZYY*
zPF?6{uicC~ZSbDoY6jx*1Dt=T5wUUQmMrQqxafv)7xftzbipYj<ZO&n5{gB?%om>q
z0oD~cv)p7>;Wd<1)6#4%DavFsg#srH6{!y*&>(2OS*v$D?MA)PZg-tlJ#@RIf&)m|
zC=kt3(>gch!~<{Ae&=b^Nl7G-i0u^38o8#P<bbMEA529_dns@q<dEXnA+!!>plAw}
zNGUSaJ}&h3r=H2&k4Q9(5p*C@V)%gw<b~C^lLebz6zgExP=qL=$RBnsq}nBFa2POJ
z6}IDxgeOO$G+5-31*CmM=SkWPu4v|-fa#)gC<SXOT8dF(0PMO*66F#R-!@|Tz)QiJ
zUly&`Vr~?*(7uPmF$*1rQ?*LL6JPS>z>yswP>;|(w4?7uqVI7UHlc!BO0+j}Ia9M5
z^=iJ5Z?`+c!^8Dfdu(i6Rv_`?VxgQj62<S@Miw?G1_?8diid+X<@;$_%Gr)10#^Y=
zK}G+KC<v`w5qr{UH+3^d2sQAv$kQ|!h5>+VqH1oZ4IHOZU8N%@24P^;bO^I1dd5%`
z?q$?=Fd4vU1FP=0!K1#cftW&v%f|$6Q8jAz%Z@Uv9_~fYRi)fiY5@#&4FHF+d9FvE
z23_Su+fa=>ONtcyhU#@SdOAbk)91Mi(NiP^GSy&uFx<0!K5@HYWFUuZGn)f@Dq$N)
zK!z~rG^JJ}Y5^*SiIH&{O@Me(0#QJ{dkvG`;8MO%Du&`}*f<lTk!_2r_ay4gPPPOU
z(fcgVOvX8oGTlhGiPD^|iIb^QS7=eo0|?BloiU3=a=^ll%@qnd5I8qesLj{vwQ7?d
z0$+zb^#G>=Zz1k=qM0k>krT~k(^j1ePha5{Y*chDT1j#v9F3ddq)(Zls2_*T`N<Xp
z{qWmBV%tik{81|6mq`1CfdmQ1?M#xi^CoATkk?V=I$F*M)gaqdPUMV5vr8d~c!L=>
zB|<PJ>Y9<>Ad<wh97Gu*S4)c`UKZmrwI0b>fXJF5WIh+wa<66nH)+LC6p5$dMs5`l
zC+UNW#p5Tq`-NzY#HBX`Jkm_H7qbaOliY>J_$b1dPM^WDP%waH@VSu03#jk9N2-H(
zfU5TxX0Y2zHuH<uZJwPxcFq;AIk4yXRcD>oYPC%}Q?E6uwc6UVHf`K;UT1pDbeqM#
z0o%~rL{;-;J@%}gk*HneCX>V%u=S|sBM8+@flP{gU*WWK{MMWlc#-cFMwVBWt*IZ`
zT^U_Q4P6u|(>ofuT^Ng2sTYbx%@v(`Rm)X!<-R0vaLKG8=X?5%xZ4dS)yn3{7S$xL
zmF*c&49j;qU=TK(L)EmYG`2ES7+KYxpUjl|eBXmWfQbmX+`ni!$Y9-;3+i*TzT1US
z3NvPO(WoJZ`Ems#O?(&lDxb?|ie)u&vbmgI=;?M^x}Deimdm|Mu`BtEoi7xNeM5>f
zF9nXNX>Rqnml>+pYF6Z6%5yVQ+LDc0w&FHxt@)YUz^IWc1g)ysGk|@y3Z+hMw)e~}
zMybDbY=3Fd%Fyp}-g1)b8zCv#o-Yh70Rn*Hg3gP=puBh`pkt@o>07eGb2`B1y`xJ2
z!`Gd6kt#=n!^8bU!=^6xk1S@;2iDFV*!5g(c4l^ZYJP66S#P+V4pv??Nzzr(AVz+%
zPt!>c-&%P3RJ`y6tc6GCvL{00vL2A24s0bl$w~as1oDUoxlhr$P*iPm6cLmLJ1`{G
z8>h6M-jlgbRYkHG6+8f4>AK22dx))=p+Zr3n^L==cWxcCcC<%0Aw=*#<Y%=A=HZ%P
z(pILfz;G&A5ak+oy^}<;oG1{cCkdp!QtpVNis}*3dMg&L-}H|wfZ0@Ge@sFRZe?Lu
zvNiSM1H!4eDqbl6RYa;Q3lys5PpE8*L?pNo5*HlE-9%12>Wn%}96x^CtPB+UM>3^;
z=#xgX?YhB|)7C6nzUuIv-Ak4(=^N<BC0DFnkJB>4%c&a_km<;(YBw$oj<gT$%&$Br
z)NO0{G_!X^uPjP36?0%|VQ^8~@ms#sGce+e@3n_k%B2AqdTP&NGgk!0%Pc<A$maE)
zA*nDJ82MJD44igWcJwp|aK&lZl2<<Sf<`DCxw3BM8qH>87Ya+(SmlA1lJm4|u8{NU
zbJ)f}*84VGTCcZ4P+BH$=F9oPC8nvi=BHO}x-eTAfEfg}T<IUwO_Mz1n!e`zi@T0n
z863%stjZ5B!@a`hyjmXUJ8gqzTA@{T^=#kha!)TbV-wb(Eji_4u@&oM$0i^XyFoHJ
z+cNV#j^j1vr(0f>S#gdZYk^|cJRn-DckzmrobfcHu;lc4Cu!8`+2tFu152W8MK4tJ
zd^zr0Dj8;b;*in5q^0L$&0Ko!<<qsclJ5nZH71Yrt=;0;#UM(CmadTOe9zFLLjMq?
z&*+NNv!zNdpYI)BtlPPA|Ip;*^xRxk%M_<3Ck{OGWVcH=)c4(xz$bNLk=VIUow^i}
z_AD=eD1~e5L=KivH4D!-Bl4$OdmSKw>h8&|XIC6mbE_J4HuL-_pk}X>mm<2hg`#C2
zKlCTy#}h?de4TJ!7u$P@;5(Hc)gh|($e+V?ko;TGWh*)Pk=P{A6;=F%Vt^Vq--n?^
z1=^zeoh!|_*$f9W2@fm4SXAjuW<7Ohrv7adQxt`x;+ayi=-_qY!IUC-Cl*D-6f*%N
z<-UmonL=fuNpdWn6(W*Zxlca3OXZh5Ku$b6I3}z`e_;Tmh(9VX!fP0(9U>^y!_PwV
z-R9i%>1SWC?f$#gpL=0Q&-w}<+x7@1S;znfnbkwjyL02C=Whj=J-mN!WM;K|N%md&
z*fUE13b1i&ZmM|ZE9#Qvs9Cu@Bw4wm`}ZWpA-g*xPwoOkQX|%|<4lj`Mphl(_k6wG
zEiE~7`shIiDA_I~bK_xsT5U`vg}%K{JtCXg-jSuT>nc{!oZE}N3o;e3bSFq!ovzfs
z!mUjxVJFV_1zuA;P43VOyMX+1*?jBx5o(Rno$sks^u$?z!KIbHfoJacsneK0yl)St
zY?2X`D~&8Wy89V>U}>${nVy-KHKTu^7rZffcz<M<e7B=DCyk*q%v?DaOc%0QHFP~n
zk_^3l4+VPOgLyUfw4WP-eWjVUTpF30o`oENKKJ%L9{JtM=B?4(F>iV-8Cf^G|Jlmm
z=p2BdnfKZaDqtKr?YSo&uep@I<(Z}C{wI^xthwsk>b@rvr;+I&#f*xJR?h8u%rx}H
ztIu+$4)-itQ5+bx6R+4aP@S4Iv-xJ%+p+DDmKX1T_Q|Ou2QjvzyLVzE92lsaLn2%U
zaT<B!WG|6C!iJzqd6)$Mh>B!tx5mxIQ>!O^!kfZQV?{W;S(}JPSR8Cv=<&@Z7}Qgj
zd=H{bY2itdTwDvtt-_wsVrtQ&v!_=PzDe%MK=q{5upnR#{GZglXRM{yc`o+#vfJr1
z!)ffKBo>LJ3ME;zC0Uka%aRq_@r_)sON2mw?vGsL8ZeLoU*G~pa^nQJ0qocb9NpLg
zEF_kN#EMNzmTXn4Q6eRZMZ@6?hn$&Hcl+vEd7k%Od(Yv_nZoMhZEAeV-urxeed}Fs
zd*0_!c@H7@p@)(bK5+IzlL_y?^|0{LYs9DIA)ccX@wCaof^aWSkz*xdrM^<bTNhiq
z7K}6=9ZZgul|TweaPGow=+Wtk`3bT{Y6&xks-MwmSkBlN9RG~f`EQ}#Q>dR&jYy$S
z6<#l+5TM2?+XfSKW#TtsvUKEz&wcunx7~Fw_6JhG+wZvR%*m5yPds_}*wN)ITIeL(
zTbtEr8(GNq>Bswvi)%OC;q{g`Pd^zKTjQ;Bo$K#5+s{tUo!U9^-MGJk)Maw+^vdyD
zde_~!_4Jd;@O02!2o?@)K6`rk@UeQblMa>%qiUPPYvW=Qr$LH1A?elQt=`ewV6oM6
zk1yPO-^xvQkC5U#^<9KwQQBka&5!HzC)qv77NX8zd;Kiw+2T%r?QlaPmWth};d8i#
z<9EF2>8DR^Ja_sn?|k>9YG8ij@eujbo%eB+!3@vASF9boxkf~N{)x0Z@K<ldc@(DI
zu-NM7@y7NJ?)Hs$zIkVBYkKyv^QWF{qV5fEc-vD?Jcd~J*xheCbK)_Bn0U0EuN|Yj
z1WY$cZn*P}uz~OY!)FiPbbJ50>z{e-;ZC)^aKmkF+-u5d-e25Cr1;Fq1IKPIcg~yf
zCQh8AuYYSgSULOj3H;q4>*CJsoIh<kOLsr;KHQw0t&KOm^Zo1V=Zl?<rGD@H=2n(>
zPdxF&_Rbb={JCdNPj@!!s)~}l7!8+J*P=Yz-dy*BsGZ@SeU9_fH+Wi@@EyH?+f_3i
zzB%cR>|~l0siGV!>P#2Z_iKtYH6;t4g87sjkYySvg}{Ac>!%qR>0~lJRA+~OXwP_F
z6wGx&Lzz#I=|fK_XoS|D*`f+mD&L(rQsIZA>3r-b?kiYEYijCLwxzOy6J6d&K1l9A
zY`(RA=inei0+U4KjS(3tC3>|SBed!WnWeLX6U7aya{^K)|0yT#Q)MyKsV3!-F)~Fj
zpcz+EW4oVPJ62gzjZ@*%nhRO6SfBF}2{9_mHef@3VI!R$DeVaB4c4@3ysb$!oR$>9
zB7UntqJQY<^-ursiEa`cSj?~MX9xP7w%G0;I+i5q<mAKAu{-MS0q?oT;$o-M?KXrO
z7_2Z$m(?^{JqDu~o_;J^JQQaA_WX&3L4Q0gtFSX2k2{BMtj6oMnXDc>zJ2zzUrrM%
zjiN9ZPOHJ;8!f_|tuwt|XM1o9f}d=1I!(ON5AwlUQ^V5F7;HM@jf0L&d+qkwqO9ZI
zA{KMw<dglSRjhJgEBsy9;i<>IQ=1@LIr{Loza3}YVp`<gex9e3^=EIr>Bu1U58iNF
zV#>7GU~8wd2xAznpY?5p7>T9qtk>jAlZ|I#lNDZ!#p^6j&ODwEmcs6`*?21Nb^=>d
zv#PsPZl51-Z$yiS%h7oInUl$pTgm>h@zmnd(xfbdr9;!n6gg5|O<_C>hmP-@Jsk-n
zUAlI(os6dEpYANKHHfwlIu916t?6EOV>8~ywg?thN9)gVLULLn<3l`h{<*V3lEi6#
z=EM_&UQfs8SiSD#lLF!BNOBx4x3Zvspe*CSo#rrem0*9yHJ~#L++D3q)CHnK5&NVb
ziDtscr1A2EFp6TBbS$hW((#0;48<DhsuQ_}8^*#P>yLr@J>it)q%X1}=8KK0lBmiO
z!JP6SXQ9mL`mTEDiJ*&-4jxQB_CNN%Hx{*-U=@p6bmYW%<UkOO5L#B2#7n(=r3Yuo
zD`WqT{U6z7ls&`#P*{wL$uci&eU>O&QN}?a8V8Q;%epBHUptV3T=yOBhIQ>oDE34)
zR9qave#$#4O|V)Ce#P}xwk=rtXI(zprIc=jCTCK&!veu#0jtJNQ|=I$Vs|iD8T8gV
z{=r_hlqXq=rL1vzY2Mi`h(TIPajhNW3%gfa7?qgj&<Ke}f+Vwb$t#a@=}J->va()P
z)k(LPWI<3Cfubtd67qD$n_UOoTFUf<)2iu)_;a~UlPG5Ku)#Z2&4h%J{<LlioSjjQ
zH)yMAOSEy+B1q=FjeVAd3&aA$QF(r2tFY0|Xd<X624HI|i$@MEA33nxi4EDILr#RV
zbcvfv9$_WEBgX>?pggaHDbtw{zTidl*`e3q17ZpDEKa>TC?{-m7&DnnM^#jZ8LlLa
zyly8JbvdtX>cWOaBQz*@({k!1-G&5mrk+l4+DCC>(oWo4=nNLK-eR6aB}a!m+>x!#
zEqw0rcsv?Us-oQ3*pLo5)2=ip29x~&tMpww?Q0vb9HK2f0kx2ILS%P$YrU)Nf^Kyo
z%^@UHpajerS%dMlXW%=`v<v41FDbl^L{PFS7l^tWM;AOeLX~^)gnTpLS%LG>(C);0
z(PWsZ&ZUl|0}&cG2Iz|djiirG%-jkIBgt-%Nkop8%}7?oGO1`vdn(lI3oDIE8ncmD
z${=o_T@C85GCT}h>;Q)!_f%NKsCjux#jCv<V&{ZHU79dD-e{bjN}w8Sf+!WbP-$ec
z0}~jhBCf%^aDS4jN-MpQ)_{yi7z+8X)ijg@_)H85M}jL3Berovgnk27mM9R*j*#en
zBDs$Vai~p>up-G@Nk~IiI_vmKIZeXNR3PqHnpEz!41B;k(==>t6ef*yH2p9m?_v;1
zY1e7aHG+spYLj?jKZ$TzlN$HDRJ~@Fdqv6?AC3$}aUfhqtrx}ClD*gq6QQ?irC1l%
z6#^FgtlO3q2SRZm1VKie5^|G-)N6Udq$MCNaT{>#jUsv)$H}l6AsotxAe4MaaS#jP
z9|F3BXvc^KYZPa2iQH*HMhUOB!MU9<4k4M1Qq08CA#-rAG?!6PatB9wpG-DzDV;3t
zbrX_~8u~N*2g8HqjizN;3F%W^HZ{xX%7KQ1iT5o~{?t&&w7B&f6-xF*g3BuDQLNnA
zyJh5e8KlEbE6iC>a-*KlH{Jz_dVlUWb)-p)_Ch?tnoUB6VWTB}VIE^ZOR^-^Q7Pgq
zA)&BWQany-s*RHW1+H&Sm+6Fn{6Gmau+`uJG9lcERO(aII71nTQgxU)<Jr7A;yxki
zu7tq7QtdQDC;(2{Ox5SD&I$^8OSnF$4J(Adl``<Le?Z5_UG5yMQ0yyVn}UdhNmq#7
zJpTe-Tnefp;pVh7tUyRqnZW6%Npjc-?HqGrVW(|{nNE*KxrKQW=R)X5Ml3mI8Ce*W
z<PL;AHWJoCT6JT@^6VVH5O{7xMOQgUsAbIy;IjDA=_hEZRXreCA%W|Px>e(b#8iAm
zMmc3@6lOwJ%!s;2%AZFL!pat5!vYqGr-?gZgF;!l?R*nyFz;!K?>awGV#1*Gob(Rf
z9~&u99W08rBb*WcjGG9@JFN*_uu8wqoz42UDme<`!;8o^7gOm<_(mk-kP#xhF*Z$`
z5F@6d$bwDK6HICvRAx^Is3=EUq(z%>x@b5lr--(j)(x&IJ-eBKGiDpG^>xn8>Two3
zvRbKzS|KCVD{(vB0V*8Z=dK;=i^P&A??d?@VW1CYLq|p>QGBP9B4k<k%!u8*oC+{;
zmZgZjn13~*BQKLpN(PQpr&RTIYnek5lPWWKfi%)39~F{v8Mq}}$%_*qf6qHfr%Rff
zejlM()G9xegv*>q!_DTwDZ@m*aK%b<Go<<oLP|p}GQo`s%)nDzs0>7T#&fDTN;gG(
zps?1Edyo3r^a%wMPM#H1y`vdW3^k4dMc-*;<=XWMTs6vN=PR?Hkc`S;l@<13tDJ23
zYm5fe*9*m%KmirIYjxw3CqPJY3EGM&8bpCip@?KfM?MX?;X)Z|WEL&AoI(>`Yn_0g
z;|=#`Fg+ExqHsHD?nBCzAV48Rt97TXJeL%1GLof9L@*OV7NT%Z)syIt5`oh3CWM{1
zEh96neTjG&J2Va*!8%^;w;D(V<Orq;PvZ#_X5+GrQbeQ$oD`_{h(lMamm@{!-r%1j
zELXv2!oZbb2ri$Ry9_UQc*BU~_{MXqicIGYn;{;?i3bHL_QBJ(RdG?0oGZg}h(iM*
zC~Uo;NJ=@KPODNV3O&zheX@+{iQ`lFoq};Zom8++=U&^$iqc{18>$SNqtkWak`@yc
zOQdd41w>UPQrKU$EaD4RStQx5YG(v9a^67MzG>vtfn@)%k)14^I8v;V{VTFE72%UN
zpL|S?{Z@|fFcy`>P)=kDod|C$thAHmdB4}|FXF$fheW<deav1SQTWuVjD+l1cZkgN
zZUdEx4VcvVHVIT=$;QHZEi?QQa?KbOjkYbV>zRrdhT9AZW2coV8at`XghePqU84vw
zdYe-<7Qww2^Ub`3I$;7ZQbA_D?e>Bz@|<~k-i#hjPfxgH)?*Eo$7_K)m<uQ=x+j(%
zqo9*Sog_#^oVJmHPDvK1uSV%(kB%Y|fKuRQt!*RJ2BJ%7E?_e?xfRORR!X=MqWHud
z5p!ylWRLsM>S&e~K%18AT>r`)<FgYd;_09ol%|$+0I#JsgGU<rNL0l+nH#9{a8!rh
z3<zeGH(gMTglyK0YAp#Mk}z(9H5+eY?X(V)HjR>$fl+KZS}eaM&pgjr9!KG<z(|@e
zmMDzUya%%ihzgGj513Ex#afBVNvYc%$li(~SX)^TzKS!1WXTp0c4qN46IC9YjRIPH
z$9p-Gne*pTCQik~Q{`A`DNAy~GW)Iqr*&bdGBNuOmJ-Z<FU}!!JW7fPu@cs*a;AGC
z6H(t&t<*q;B~{y1k|+Tlo4OKu;)ab`p*lyH$8a*xo*HFClPsfJx<agQz$Lk)k$E;4
zEMjGPi;KO5MNtOJMU^O^5tgja8aBO+BE_{gp+ip^3kdnIBI8s&S9Vk2I}+lV9Fvqi
zMRZ81o!Q(nc2w8H%8aMfL&YDO5|Y4^hm4$oO=yIs6M0F%21Xuvtih70-mQxgD{C7h
zbbo!usy{#f97>f6ge*4;$9$`Yi`8c_fWhh9NuzEGf5QV^Sj0(z!#&m#a>P`Js=|rN
z-zb(2aWxVv5o=OjV2L8#+@q<mzkDfa1WKsIQm_{aPh`%PDzZ9;;H@yJiVd<Ws~~w_
z2eOTW;^NkYPIX1>$0}`?>NQHdWmNduDtU?L&GQ|R&J4X7FP^+7Ve<)2Hyp$BU=NOu
zN}agzL6ik?Dm3pD8zd$zA{&BgYj{S;8uau~$y!qA1#RFk{c_7A*Jlo`le4YiVlzf@
z-EK}b+^RH{B>6&QpCnNl$7NE(sg^~9I5=#b;*MAsg)v-5K`Hq{DaZM{w3+2nL>rRm
z$Vi_wcYL}aTJh7t9e)P=aue#hHD@yha_kzNmJ^=U$k$R3eGrcFX(P-mhETyVYf8#n
z9XQ=SfsBz<v~6^b&~aBtuO6E*WaOXqy4@s?u`Zd2F?JXFX(!jQ8$BH(!4^xQg-L&_
z3Pgc`P*sxsf&+4RHHpCjl~A%0>*==eWP1`kga42v)}BG$xKp%SMY}U?CPY{>w&1v+
z)#eObmJASD6610Qc$9<14|}G~JyM{Dv&xMYp`BN=Zmxe`XPyJjXCOTmM{4=65%PYm
zr{!_jOQT%EBv0Y4!lpxd-`O~(qw^I<8wzWyz-JM6P}Nu?Fuu<BOT2j-iuML8p$U7m
z(v3<Ow&O-5Ih7O$q7$JpEg?`jknjxI(6fVD!XX|LQm3I31Kb!%mYIsMEMAM?gG+Z+
zdDi!LCCtKGM_m_{mIwtrOiV>gJa-$*d<C6-B%^13%sCpCUj*4Nh}A%;?&Zi5nPg`O
zGmS+>)O(_4X=doAK%}jZB=P7GJTNS|3hTm5h!;W9X~|&S$k}8<Uln_KRJW|?g>5?%
zERuX%vH+nb7uU<oP^c$-m3vh!ZWX<e1ESTGQjsD4oCLz5J5&Nwf;K&tBw>~GS%T2O
zxI;#qU+Ak$f$}36;d<hv0ax5q(!C>PDif$6)}@w-HMqjI4ixC$$e0t}FK!ynB9e)`
zclhw3POoFwj!4pOnsqx#mP8K8&FhN<1*c)MRugpM!E2@IuVIhXK_^eCK{bwNp;GvI
zJsG>xFoC>^cuIjKu06y&<I3z5utQr^Ue&s`jC2!4Jj~9BNR1LQV!4_rId;sXX$MU(
z$bu{~F*m390;*vt2vudUoO-?1z>H(g*D?$rl88#3)l>1kxSPejED{wyEOs+bYm|sU
zVD@a`XicAJUB%{G8Qh!=l(brKY7zG``J~GULj^0uabn{{;1OQJfsd#aq^ohkI|~-@
z@Np~?*w#fs0{;`0Liab?s_~1K63a!^vIO1;?T?HCIsH6sv}$N3#Uk2Ugit6JtB7TU
zP2xMk|Du-n%cxpgiZD4&{8+lJM#kfqu~>?17<Rf?G-hQ#&@z<N)u~n08f6i)Dz!*z
zc4>ceedP3`yao={igO-qG1W~|3)+k8C+SyBUSW>B)U^vo8{<f5nUGo~`;xDOdpA^k
zi9};UUnG=dt(DOz4Z*Av<MG|3i^QsK#!JEv2Ya-xD5iBiH&E_LwNqA7kdKbJMTEE;
zDKIN|-%}12-0CPzC|?!L1X^0@_b^l^<C?8SAB|F4X}TEVjwFMAufNc%Wx^psD#U46
zgtC64r7)OvE6o0Z!}a*evnJzwQj-%Wq!=1EOQ3dy*Tx=f9U*VSLbz$%*ad43I6_91
zzddQkHOz^+IW|y&_PH997ILK`M_L*Y?UFeWk*LEiY@|+2Y(o+nx7idDsKjp8i6I+1
z!{aGWoU4<{Q`B5NB|yf9k1|FD%&lsxKs%o2vB=`+F^@kRC=UV0aYOwJbWKVt;xrh&
zRtZAfDJnR7y~I#cq*Mz1EXJ5(IxFrnyp%btSPxK{GMR0j*%+on?CSF1fjim=_DSj_
zItwkVm3AgB>!^fS){6plgEYf1)Jk`29sLmJV-Ph7%@G2j3_&^afu^aawso`&GUz~<
z6^FvaJA1-O>9h?6fF+$={^3^Rx>~|)?xIF(#|$p0$50gN-*6PxoFbKqHBUZvol1$&
ztyN2s(J>8boPwrNB#f`Rc&?fvi3#I1R|c@II1uQt+^n9jr?RhlDq8ha%0N47*^8NT
z)X0HrW>J)5&h};yYc~uLYHx!>T%IpFb)wb80hPK{S#G&utTxHOmI^=7e`YC9FWxK(
zd&zSaOFc<HRiM#xq|(!DuL|#{1omFzh(8@X&oQ#ib~xuhNWZ~B5~LkvBPzg^)|@Sz
z*rW*%f^Lk<g0T}jpN?M5DKZiLGD|BsnB}##FAQZ))(`ioZNu72E6cJCb<rg5@O|C$
zvk_#s$e!xm>%_m~c=VhQyPIfc-jc%ziENKJ>m-dWYNu$AgsWpXO<9IjXlx`!MNXCm
zvw1>e-6)E&s>P;}w+O;SzD<x5GA3<BhM2fRnQ4^yVBEJh_9WkM6(<KokmjwP+=1lY
zr0n6;pm6r+;n%t*!)$-4=Cfok!Av4f-a=v|X(>mdk}0eq<naiE(ntq*gju0(SUW=`
zO<l7pK+;A*cJ>pPcQtf*VN>Er7aS&=H*i{tzGsl@Nx@jzFxkBmH9L{b@&g%^(q65V
z{*kBnex501(N->&afMGO45Zy2*I1y9u}*6IU<Th88cl!JdDa04DK;rPz4n#^&nZ5;
ze!WV{N(m#fuAJ?<h*r?k9Api>nS7No^T1e5L)m&&+9Hw=)KW5;(udRx;^1eY;Z{uo
z7hkZ4f>~3umP3nCthV!8*MXaNFMT_Y<opN`8i&qWR>P1y*VH98qG%Qvr^zZ(;DYcJ
zIbvTTA1?_gUd0AGd?F9)c3OL*y4kGoZ#XRLVNuqV5#XH_-Ns-xC+xr*vl1T#aM^d6
zO-M;3=)(vR%F5>SyCHS<q&L{klWpTBpLK{<@Z0V-$P}U+XEJEdU7JRJCl0zXzHoV+
z$Lm+x8;w_dr_v@J8|<7W)M}<!V(3+#0v!T5&?K6X6``mwsUMls680Wa-)}aK%q+))
zV?s>bI1MfAyherYtt+RrI#FYNEqWtW5_Ke2CE`$n5Gkc=)-8^WV>m1$1(h5V+5n71
z?>cr|3hYYpEkmO2j1j#ZN#-~fP?rs&MJzAuqOBQXr5&mt1R?SD?B~)~gl!p$c5=if
zj8}6ez{(~j*<WjvTvm6!5I;+_s+CopF^U*6FfWg_3)^bZN3$9!t?O{Kuaaj{eH9ni
z=+Hae97Eq3$XN1wu_4x+v;a8sW=!b>ReWIzFLXb5v%Jm-RjkEVVQtmZHPXLtOgn2x
zOXJC>P=`=mht$){Q?|8KHoBIYs%J~zmMzDdL?g`vPNURw<HRz=Y20L#s%6Vuqg<H|
zA!1#kL7GT4yKO?Ey^vuhBx2CmI~35#g<*Le@23&cn>W5|k2=kiiD|bAvsu__W2R)0
z;B+D(pG;>Q*^LHxPG8U{G*50ij}!JPjVv)SB{Es1gTf~9^UzD&$hOtdc~uSc*hkdK
zMSqqL&StqC@LhX8A>#NfU<p3r92zYolv;vLLks<*CWfp|+ZjKHqSEF35&QSm5FPYL
zI`bTjp~_Wg9FAQw8q0QJjVvp)4MTmQZD0|fOga4Ak+4Y0=!%ZSX)DGG&k3C&?|2)C
z*qo`Di)ti5YytLk$}t?*JPT$?t>_|pT5i<HA#^1i_~S@vP=u?iHRY6)KSBf>Db<lH
z#RiTwIwI2mJG#=j=G+^l<6C!RDWc2}gelE)Ipzskk`E&Du3@NQAZLD>#?O=*o>7q3
zh)|aZC(e+J^BltAuIA(nRsjh!p=m7~vY;Kg;ZsLLFDFspypWxNU;_VwrFwRbKC#kc
zRE9vK47u~as8}M_$heo_AvsYRHDSWiR3z*-)C!h&WG#6rB-S!P%lQJY4W+3qRi?o8
zON>skd!kJld136U7^foS(v*vxgd7Y)Xd)#nmd04OC5}YSVbVeg43EoZv{NbK*itVL
zUDau8cS^fCZFh>M65(qG$pWegBx#scP>hm4Xkl-bAFBJ|N3g84u^H6{!MqVxwZTH-
z50ZckEXK}A#T}J^bTL9VlPtIm6|yrI_`~Tr5<$R30{fskRcnG-VMI^dP@^1oz6w4r
zkdwxfI8ubIJqPwO+F4beamvRARsn<ZgutQhc<?JRhIY1m0Zn;Im!NXOQkWI&4tFIJ
zzcw<;#6a6XBHPMzjK?}tMT`o&w~<Of&RUs*o5$W@MBO4Glc1wvt&*QKVRRfT2(cDI
z1@4Kuk!lOUX;y+~U%8hfR!T?}!U87ShavSk1xBV-Mqf3Uy%~^G@zSbbPgsW)Y?z7-
zNv=+o4>quki|S>>UkWb-h<XhTw-Svou6n3NYUkdptBWX>-ztmlh2$@AF4U8wOB-rp
zT23p@4Lk_Rn&>bat-}Q(63%STN4{N7J-^a+obhMf4p%PXPin-IlW|#<R5ncFEazBl
z<04Hae;UNHTjRUYS<f94I`>5WL|5S#Kj!<1G?QeOA8BSK-pZF2Tr4FS2P<IPsTJIa
zC^2E33_=@1GidV6l7&HA2p2|;T_3mS$7XBNunp)1uArgi57pfcyzywbxwWB;_r4p^
zmj<_#i2}6%slIYfUo>e%s*aK5N;f*#jr$2MU(jhx-eukb_l@YGrYOs4QBCT$;LHTW
z@Jd1f$~Y&9=_Ctn+O1P;Nox42oM+^)?f8_P!D5`J8chTW&C%dgGEk?Au6xZY%Z_|2
zEgfMxBA+DAo+#!7xs+Pi7!#ruzp5G;Zsx&ev<@RY|GwNmm-NsvF}SxfToSR{D}k|t
z{!+tTQZG)i;r5!^pY@OEUtnpr7*$)QXhv3?jEY)Dew!m#OjBhj!V(oYZVfw!h_+a*
zO*@$ia#0K{(9mT(t;eHjT}-{IgrCnsL(ViFa*iV~@Z9Hj$YXJ?6~Q|Sp<_*r2y7vg
zW*s!j87{YVL@`GuzanzXQ~(D+8I&^|l2A-b<~GCSxss*U;k@~@#H_tz9R@oPTmgmM
z_=pHMi`i~YIH({h=^-U?C8`&Odgg^qGaYXio3(IoDAd#CC63!cP6VQ)r)@2NvP$Bz
zf)NJTU{jHd(IH@!R}nq$3!x)Hwh^a$0|JKmxjkxF;9ewjhM|bXA{LsIwW`B}R^^_#
zLECwuarU8&G_NA<nj>qBOzbFNY*97C!rPp*qe`?~8LU}5tEOv^fz>&E<`mxQ^>^Pr
zD<;Ts?aw<6o{lQc5CJxHO(UVu5B)(Jul3SF;)^pByr{~TN&-(^kE)&)b<x5It(3)O
z&O^2rGNpbN9qJ{k-6V6=YF0q%Ixk7PKY!{8IDq8?2QNr=d%m_f1R^V><<z~=evq3%
z4xA1aGas4=|8Om%E}}Kcm?doLrbHH~xH^#%k({An2hu2*M|kO26ltjs-?XBdOq&!^
z9_)1lFj6ct8b&iQ!kV@Yp}_NU^UTx7@4WTc&9@Qj$k;%N{J!H*iiPeLcQ&b-TmX=a
zip1R_7RtIAN1<Yg!%cu+Cq<b|3ev9DHKpr`qo}2$pof;L<67$qlU6uw8>yp)BD8m5
zwhwown4Wt4Q5*LydoxWWda2T{^Muz;Gh_)2bW~Icc^x5>O3><bt2FC9)dp5HogM=`
zC=<#sCsZNq;eXwQK`-m};-o9hNka{BsTqmbXseZ*W?F3F>W15%qo+~+Y{4g6M?vb!
z?^?{jU#o?Gjh4x?p42MFaX<J9Wswkt#gtI6O5DXf2o!%8^2~t+rksfhC0q!Ts1Z9B
zc&l}_Xn!6z=z|qbZBc2&z`9CJSiUcCs!`c)jGN6-JE^6#rM66ntK+J{josWH-g3(=
zfAEKY@Q!yp;O)!D(~o@p|M{Q(O)=W)4+gFdpiL<CfUG>z2t9(rUAn0pm91)Qh!(P`
z%WxV<Er^xXx*}a3A=2d(E5$=Lj*^7Pu87=B8rAx2;b=n(1}xIRja2Y!H<WEv02@!l
zmXI5VgD8?P#fWm1xAok!ANZLMe)M<#-OAzXU(H3c7Xkb)^FW0BkAL}p{LP>I&sleo
zESp{%3vq*FP=w}0o|(bbd`(qCiU>(*Rh86z*9~;lWX|Tg<C74fkP^&;rG9^*KUi4o
zFD`U?U3}B)FN8_%6ZTinO0isA!f`8uAagtns!=Megn^O5hR)jh4u2v^YAc6{5M3&0
zOcPZpWV$Yvw5_$y>#HiDo%O5uLgF(L_93leHR2%7d^JL$tcb{!)k-&s1y%_HoKH5v
zth1?n0z9IOL+Wvm(GvfOqkmMjThn?}HbpICg)+Cml2AJ@?%VNX{Lznobl+Ma9>-pH
z-|;)&{JjT1(eHK@52g%nih@@eWc5p}6U*_mM%3t-mdX#eqQPP#1$TK!8H#B;r3D6(
z$wh49Q(-zzQbq#8l+(_q%pC5A%SXt*%ztQ>DXE!_RUh38CU9jH-;kRISxsI1;=lTx
zSJ?u+YqLNB3B_;u@UMUUumA7u^JlXx4}H}XYkik5w}Cg)v-DKyeLf0dB~gyFJg97n
z3Rew;<vry>rrmybadB~VZDp`D==K-zEjhD0gEa4Rufqu2QmVX0(Hu=#mdIX;wk{bd
z1lsx#)$>L~DkR5@Je42R2?6>w$=>PLm?Ag~BdKSEdq$`w6*M5yFv8G6*lmVT7)Hnr
zDydExf>LTKN`2`;vah34eXW-EB^4BVYvVv*O=5)vLh?TrHn>3?N+S?28I-MG7@5r%
zfQfM8wDaEDZkM{xADnG#kiS_%yIuRp6SpqTT>>vwDnoyEs#=8zY4g&R%S2JR^d<Og
zYJ@B;g3+49gt4Z-jzdepcv2})!tpsZpDbL<K~3KZ5lZNSHRg9#+ZCK7n~5IdC5XE!
zX^!vP2fR<#$;P2nbO{C%)V$Z$icRp8{ed;FP#eLX%r<CIPsyzPdFzg5h;%Q_vtG9Y
z!-EB`EH5vtEW!M;Jc$u!V0$Nl=Y}#^iKEf5JufLK_Gr|IjfftKc)yy{SW;`CyYY!R
z%aB{rEtS$A;>k(0TAUGdt;HKA4UBa-8CkIhV9lJjhJ`f}#lx7H0ZO6Ta;z$dWn!7Y
zCeb)!x!%`-z8QtYysR|G`AApDP3~yD(^KXPEM@6?QxjA+AZcP%Nz5uarDvWOwRm1t
zRr}ls5uc2Z-<EZPbxPC8=DD5C?N%o%1<9ouP%9+RlC?@=!%=?@3h^inBP4QTcqvJg
z7^RXM6k$5~Inz9jb8?l8(ljM@jtZ0nB@%5<uO~e~*?UbzDRk-wWt`=YLt=D<Z?87q
zq%xbssh<vHdXGgl&NH^{eqLMKHo4b!V;Sog?EB{WnX;~@#@{N<*0k9glcE4_Ju;3Y
zK@~d{Pvj{|fWC;;v=kBC!b11Jfo`0w43d@QY+)toE#T*f(JP-R7S1c2eXSSeobe!}
zzmlQ}C&KHxtf!-5JT8Xg;r8aU&pvbR+&bqfnbFeMq*;3GrW?~v7E3jY(*R+Fh?lh<
z+ISL48I^O+rV5KnE1sm*m76X=EwcWS04h$rIQPOVFm3EL!ott!G~j;%RQA}V;($^u
z>90zn$tgVptqbjJ;Fwc&nnY`IMq1`UWBt+wm7F4t=7FxJqo^D=A@<M06T)7mWizeX
zHuBcbo>)0@(@*@;e@Wgk$5m+@X{9@_?0lv>aMA(_2(_&vOr1G4>6y6s<-l=rIb{Mz
zN9l%+wZ<3dYmL<@B%eSHg%s<M3#&>`J^q7F{>dK{lSYf)gaZfreR*TA%|v1gTV*ub
zy!*XBd*i+DK*&+4R9K@imc1}9X6M504n!tYPJF;6P@<*N$vb(LQ?5m!>%KP^&(xGX
z@|6F;frw?+$rqGXQ?*D8%l5X>=*`>P(`g|U4A)eB<eOjl#uxr((9PALsK1?Oolb|+
z6vY1f%-W?&B04C9TV+|Qflxz`UaQl`1T+S*o1M~bbD-1(sze_uYj4zv2yv<mi=Tv6
z%#s|3&t%5w*!u<MPt2~{hB)5apeQY6ASwZSx_JtLGjX_%v$k^s-2a9+DXX1P)t%IS
zGcLBrzxeO|?eW*$vp+BOjqkz{-}xW^+yAONI8b|0Vq|iDe?QpwmT-FO{QAnxcYOHY
z{QG@-sqg&2hyR!V?q7fBiw~}?9VE7s&@hIYfgG0=QLqK^B?75uG26GPa5dD8aBnKR
zy>y{SO~mZC)yj<<?+le(H1c%JKZ}B1?Drx+W5vxEtpzt2Dt|-fs}+IelT9cUoNp`&
zE90Wt7>_r1#&GO4MTOhhRFh2kDY)E8cI)`XzJ6@%Oi!HMK6QTh*i&cf!I5M8)dKZ#
z|BwB|@gvtQFLss(-9b0o=gW&-F)Gb=*=|qU)9c&W!5jDaX1Mz;Zy#-MH%RzM<WyJi
zmE%z{os5N=YC4|QC4Fhp))O{JSvjwSIGAyd;}>d4OWl-Gf>KmD#Xv;wQ|rK?c5)&`
z0mblyffrf9WcxE?vKJ!BfFvJ+3AC-o46xBjQEv~YI}=gFY0WN<VTTg3yL@2i@9hhb
zD<(;@AJ%<+T%Ou2!{zCCr)ah&<z#{oWd8=w#q{ujRTCsdSvI3~PIz?DqbQ0<9{=PQ
zyi=OZX^VtyV_a|VO!m1EQft7|MikFCE5n?|uZWat1gsZ_B32aC1k|)%TZKC3U=%V$
z-3^bR#hJo`jBz+xlsO}SJfhY(A^SktuS3#^M)(IQskmRIgo_9kr4FHhdsxdW8Z)d~
zjvLpNW;J@??Rs~me{-6_(xSfj@ys*NJpAy(#OAc^+u#27^XJbWKYo0DeSJ6_-f+VW
zukyN&aa2#eab-r89Tvt|v!8bf)^@R<`f*-XQ4tjWUP&R=_6uM5La*2R(1$*RrCwNA
z_{vwla`VkMA2@JeadGiG-}%nw=H`$8_>W`Rar^K?EISVRJkL*_JlXAbj~zQUolXaX
z!OK%1^~07eRYDkNO3eG&cY8^ib^3iqnK;8F$76cWCP2f1%_wCFiCS?CO)Jvsy1~Xk
znGwmOq#(IKX10m^(`jta(S^J0HL7(+Pg#u#Pci!E2;>h#r_SVg7qm8HY^XHeu=aK;
zJJF$WoxpmY1-hN0f;O?|b&_}w=d-^4gCG20XJ-dlFRbp9pZp~5{nFCXv(G;JzW2TF
z&O7gXRm<p3Gu)Tj+J4_8Sne#cVIHz#SEs=xfd+2e*T4Stpa1!vhfzKF;Db*+^;FX|
z_%}_{r{#eseD8bTgB?;oC`lfD^iiCE2M-?n@|VAS;>3x!z3pvZ`qGykd+f1~e)OZ)
zU3c9}zFdEy-)+ZTKTL~-Za<Ir`SONgv@jSfEiQ0!f(9W%L<Oa>$&|o?Pa}gHCB-9U
zoR&X}w2i`^WMF3WID!MCf1EMfU-aOdcrD{<txRGVrLNE}nHZpyOI_WFG*`?TgVGDe
zwO`b%HS3JV9B{Uae8*EDFU)V%^Rj3UPY4HCmgW23|NdY7)nA1L;)S38{O51K{r0!M
z^{rp~+Sgv?b(c|b!9>Yu(Y`;aMe|T}@C1qM@7Z*Ljh#Jv_Rs(P&p-IV51u)5W;7Z-
z{`li?edo@d!?!>Bqd)rbkAJ-1@2{+^z)9jL+}hegf*|vCEi4dT6z=imI5Pa@h5X=B
z_uz8x@PUQJL3f`oFQU*SrC=dhCWwWsCevzMOsAZ(ZmP1xmrYrc*FzaVc!IMmW2{QG
zI^Ggt*tk%fR5C}Y0Jrl7I`!p^=s8<K%@Md0C<TsDQK-PWK`iArwW5Pva(EXJ=`3jW
zLUov`vFNCXWPmve!Yq!xlpWMdKPp0?kA3W8IGeFuV0&<b_uO+2q9A<i)z#Hk-3WtV
z7PJR5p~-z*>fpqB)H*WhORpBU>;C)ihckp9`}JS{^+z6g<fne>r(ka|Djer`+;Io&
zaARZR_kQp9V3T<A@BZ%ZP9_sXC5S-~j^1|LZFk*u7vAT_8()SZ3NCPvryd+&l$49z
zUN774XB^xEi!sxdlEyWsC0Gs>nr$Of1Ja^XEN3fdc|t=47#Em1aj&D}y3ljcS#)C@
zPpVT0PSeH{bhfAZ>@w)&Y0yqCs$j-U%#v#$bDz?)Z&h%Zgq9Jp)WW`~kP%j*8P<9t
zzTx8uzI0eF{iufzA9hWoIR5a5Km1R8_&FIVoo3s+*a+`|APw8J^G{u~aRWYb+_iS^
z^WqM9T=lJBZx{XKzWeTbnS*Dcl;vJFlr9bTI^b|LeD<@S#X*cnSbqW^j?ae(`PE<E
zwyCG1;dC;ANz_ght#M>hzUZU)!hYOPqSh#{n=eA*%9x}q`-)tfjR3JgPQTh49V?ne
zmdX*#&L8Rh8kTW{Q`n#Jx_WMW$8!WU(%=Y;QdU_<|ETn9u`rf<f*fZs9XLJ%pE#SS
z6USK;lu>ZG^4<P<NY`gJg6QuNyTeQT;UE4X%<nUw`3$~()0^Ie=njc1lIQ7k`p`oU
zA>$g4$G`Pkzl9hZ8whb7Ts`uuH@x8uuUu5>sA={)I?ykxdTXaZq&q%8oJ{LWpMiMz
zbD#U%(W6IUjjw&}Yq6x?`qsA|e)!?v{LSB7TU*0|V|fo9I&}K<>E-2Rq_3~+iR`P;
znxiI*ImYM7_=Ry0Dy!Oqjr2Yxgi@|kVMEr*bALC5sudn;9dMA=U+AW^IGkh&pD{`^
zDz-YK5oKE<Am>FQ#g#dafXs0EQ4nXLsUz~k%z6;B2{73ck>}@e)X$PZnhx`P|6@9g
zHxo<s?2K6W;&T7J_uhN=-FJWLQ=h`e`NlWCfo*}O!z};kkNyar90?VS5Vz(BKllN1
zt)KXbpZKf4`m0ADee|Or{U~1bvR6kFaz!)ch&;Q`PdMz1x^73qVmdB|&umV&_h?Zd
zD*nhvJ_6VMYrpnuh=CDBHyl0jAAImZq^y7O7k`oGIgAjC46}TtFE|RLPM(l})*}@H
zg3wy@aE;3Rk?pb(!4pa1OylXKOJG!%Q>@3~cN`0qQDC~Gf1rjEhqp;%0vi$zc*4Sk
z8;9g*O57tNXP%dm8CK@F1*NQG7LiY>re4mHYbDea0z+4YQ5_8PvM|Wgs29hbB&FPT
zxbHC?LLDHbrrn(1&wIeR{n?-W88*l3U;lcfvhRH7J3sM>Pr&Nn@wT_OZ@TFwtnc@~
z|9w0MIqd@vJaFpNsimc*S0Z*LpjT#sED2g=3+(f1E|p<hTbOn@HATH=f#6U7^iL5R
z<G{kvrbY7WufHDa{C9u%cR%{0KZ^VoPkYBZ-hm&!@`V{cCdD?9`&MEkpI!9OcoB8T
zkTD7cY$K{E;&=$WBM~bHd8w$|4ZPiba^^Qgi1Y0{VKUSqar`=JY9kb<V#$`QtE7Dw
zfv6_%lx$ol@rgu}3=!tk$%3XKPfqIDN#V(R_|i`iMkf-^26+->Nu)HNC2epIBQ(k%
zezoMs_g{@2rY!oZf>;}W&s}oYU3cMvf97X?2KxgU&XFTW-v9ph<CeVcb+7y47r%(m
z6u(_xU;ogDK7<oJ%d%hig<n8Gb;~Wcydq_EDZgR;5`S;J3?e!N#*2%K`=OSbBPQyn
zF&scI;dtF8kGH(#Em%@`pI`ZvUpaa5B(D6}v160T1V;GocfWfu7~tE(hY#Z}ygE6z
zf?z}j#<s0vrYDDtY?YF#o?cC#rED~Y+>}&^@OoL)%hDtd?Yv(gY&XWA(f8U`sREUi
zEUE=`%BpJUq>>06C;bZ9x0IAWijp+%r~N@J18lIy1rsdx+VN<-5pHez1g#n6pN+#r
zI-7AsqU$sgrf}aI1;L(ngk6GM{N|f)#-7IdB7KTQmI!wO-Ua~)GAkrh_&K)n&;R_-
zBm6sa<_y9@ge7=6Vn5tAWq`-4kT%?U>#f*xcp9=bL@#*HC!c&0ws9@KsHGkliQ}eq
zTQ++SCEO|xe4!VB2eKFa;zxeuNAwG9mw838+wH#j&2N5%lEG3G>>`%{?9rb<fcM;U
z&*6;N*w{FD@F3P1E(J$Juh+xBuX)XD@LMb<o{6QyrpHdg>f!n4&Yi=@#1pXW_!jF7
z#|}S_8-ca$_xp;}7sP%GA9eLp(t4dv_t4s6HSkh@wZGKevpS8~LBF1-e7Mf}6YjtN
z{#P$IAp@&lnxLp#9A&CnFG5IU=c!5Q+!nPF{&<F_LODZIOrmhLpCMfv7%j7N#2$9g
zkSW1c8myy!Yn5^}nh6HV*q;y`88#tWu{9wC%d)h$)LA*)Up<s0v3NNoAzn3|j5fDO
zRoU8cfkT0Yiz}e0Fop7>G!zj)p+!r>y@OHQY?$A0IK;+%?6Jod78ag)<{8`!{2bc?
z<`)TxHPQfNR(Ki?$VVP|1Uno12KEU9gD=9K!1d!L*iyK8c;=VB^d+2{*m+<5>Q}M(
zuCdl9gsWcJAXY-KahZ5@AN2{n$`2BO=3ee%VLVSi{q#c*Jp^ZhGXg8Qxw(lYLN<#<
z!xB9!53D3kD;#`yCU(Hlqel^SWBswn_{rMZ8rB@aHoQ7+(+_|6!_%iv!zOWn;t8<K
zYl%~Ed2yEX7JHQTFq6)px8M7O*uULnoA!%xyfK}OCzEMKX3&PT>qba_@dcTn$wlJ0
z(dj=k`krX9!$}QQND?-^a7JI{gf$$mxBMHqi3kzyRDlPPG7+3N1!lV4{$Ockb@k{C
zO9zfpGsrZNZ33A7aFgG)m2K<pG%hKxO(s%$Lb$U~2X`Dts1p#q<bfNEEF8BJ_a2r8
z*N5|%in?V9--SJdcfxjo6~VXQ3q*rBp%IXL<};tU=bn4s^{#heTi~_ud&Kt`gUx}%
z`vV{N0G@-F!){@v;a=U5J+l_iNsM~!{)fzn5`-UdLcdKC?~<GlONZ4!RE$+(bRwbA
zPyh5!W5uwHSQ8{&_#xaQ)*q{c!yHSB=fD|O1OvCQLwGqnA9)&f2!4)J@|S=4m+^BA
zSnxF1;We(UaJ}$?(~Q%x`+RZJ&R}8fSUy<Un3(nH`StB$JgtRp+{s-EvdSqedNb3a
zR+=%jQvS`T3Yj!0;g`U*g}**jl5ZNZu~DD{e@;q;;;ea=;}}T$6maSemIh0!{l%r_
zwL{&7<q+X$jTEr7<)le7T7FZ<zMU4+!c7)if5w36nB_&NK-!agJmAytFRTmyYQ&hy
zWA|_MhuTrZzR{oj<WK(O?)O3Dxw|>0U*HX4<S(EgCZS#A#OwCG3HpAH7^R!zz^ft?
z>~+wr%47FWbZzH9Tv=JU@bRN)zVfiK-5EQ=*ZI@nFkd8&g1R^?F&gY265H-`BkV1#
z9f>>L=G@Lk(VQC=(~|L~H^XS^DJaUqq3~dkQpQp~&=>w7ig|FTsg20|DUuIX1q?+w
zE4aXgZ6k4os+bsuX*cVy<o#t_KyT&HU~#p#Fu;kBXPqR^VwrVlnv`mhQRLNC)SY&E
z!=SD5GAm)0l@Nc<_!~qyOsLzeGK=o<QQ`3#%DY?S-}n|W&p;md0x=T2pYYcur%s)E
z;)y4)74E(FUL3vfbqF$Hc(7hP6MF(-C!U7zb$xvui4cB*ZG>zGFS+*0WD*8l-|Mie
z>F1GuX+IeU|F^#NExafE2L4qCivSOQTF(o35B;H>doK1+UxACkr?}yU8}LKyb$uo-
z9ybH8)mx&Gx#pbL;#;yb>UYy9PRn4A`j$dNv6xsW{ag4$8aQChaoGqKaGeN1^vVaq
zaD`XlS9muhz4#YjBhJSM#BtWh1Iw#0H~bK*fg|slhG0~op{{(SR@14it33+@h?8-P
zalyDM8KO-tT}(Y7N_pVmz)jH%R@?oQq7zS`CkR3$d^9+4y?q)Hc-JtyL;2b?a}u|1
z+E%=tOeN5A!T>=&Ze=&mIZQ}lNd$=SN<~5*yilnAeZj6YR#`Enk8Wp_)2i!<_hkNt
zqclkSNq?oYaA2@{U3Yn<(_iTHm$JN<=2@78Gk(Gu(L9;klQ!<yydU-!lDddUA{Nz5
z@te95fR88q)Ivz#D(BN);pn%&{cYSx++Zvywg^(b<>h6pDRuyIkB@!qW3aBj|NFm3
z;(_!Jy9YnVHvRa=KYr((cft&?A+Y+$cE0$<FJce9_O-8l@WBU>8R}NUZ*RHfmUqAV
z-Mjtd6&?#&eBEMjpr7O>JJ3&qORNz2>i56@eQW|;mF`hQyx1$a_xK2EX0U$*&qzvf
zhme$F2jB_Xz<B)e$8mPx32%Jk8~^ri{}!JVFTqE~TOq)E|NGzn)KgD=@{^zZ?ce_G
zxx>G5=PixlyOJ<T>SpgrB`n2PzVa0{avW+%_TKZJ_k8)wU&h+fk>)wB|MuH&f8Fa|
z_o+{P3ZDX|h0lnvQ!_wZ;paa0Iouj-H7urjOZ<ylfHg-<`=@{Ur@#1%zxevszy4Zs
zLg9=w)FfcCw1+1|{)y#<`QfkQ+n@c}pZ(5vzJnd2`KOwkS|EOcQyahfrC<6bT<|A8
z@rmF0o!`Nev4Hp$o`&O0E#$<B6F>KJKZhIf&2N4aFT|_xTWqlRzW2RX0pbYX7Nx@-
zJH)*A=QtB!!^?|{tN7p2Le|MCbK(VXmz$gG<#<a`o?<nu>CgZI*MGji$!3MT+VdmQ
z!sUbR>XC)RH}#hf^_JGM-XKaTHR?N2R&i|XZMY~``1u0bVM06ft4T0bJr|LrsawYg
zD`UY8l`_aUw`Yz8&wyKwUt&XGr()Ag<$;}nmBRLgv0>HV65sshH|s%;50CwUOa`~=
z(MKP}KE_ocIu)gwK-+hCA$C088Oe+>*E*53($8*K>s`0pn?%jZV&~FwgH{M}YjH{N
z2H48@L&uIC!_L5!V2k5K(Bl?X1cSuqhjHS1@MQc1&xE7K*?~*Nb>hR~h4`d;<#^y@
z;^){X*J6ZGoOBjeaR`QS5>!I2d`Y~j&;mtZ<2|ty>V$Dx>2U@}frZ60-~RTuW7%;R
z@F{Rf_!>SCtBrTi$}?<u?ho;`o<Se{;0LdL(5WS5J4wro(8XN(1l&_x4=xhs0pEpn
z!}{PZW5pEckITmLVtsI(xEDAV@GD#i77bU0+l?~?OMUwEX)W{O9q_sEOoUPRA(jF!
z#J<8hUlj_cs6Z8GofEdGXs2j=1ULbg7P^NHA6QvkNz)`x(%AP$+dFkRX{SSS5-Hg@
z+3Z_Vo_Hb$ALzY~RGrLlL4v5idZfF2ba3SO;-MQdxV26vj7Zt-Fs3sOVAi7*BW{#j
z+lV|EOfmDK)OurnI~N8drcOxvjH>@qsdLXt#{qfFzun!0)vvL2-ul+JUX<17OR%`O
zZMYLK&N=!K8)*K{FEkApWbuJ+w$h37CR)n&7(&J^pZ6hj)9h|t?0zQh{XB5m+v_eY
z><Ns9W4YEQVUqQ)yBRSHve?Scf;idpuUwS);qlIQzVp&&&eu&J*umFbcO7p1{Eo~~
zzIe<hn|80p)s2wSvE&>!VQPbD&kPn}%kH1N<~6U;0N&{~KmV5KHRGmy<Rc%^tpb;>
z?rwJuf=>aLt|MJ97+>Hf(`VkxbD|a`^o>KZ+oY_MM4~I3z;Q)Rxkj5DO4Lu<H8Hxt
zX)4cVZ2eFr(xQVm-_bj8V|Vpn-d_+^EuEq8F0j+jbcQ85C*fD4J)&w_nWm*BXEsQi
zcBf_yx2^FT+97BD$tET?Ntyarrrh{44qN1%UT?6NrD;Vfp4h+UDGGSw-R&&B@i?2W
zV1zFnlMrW}rK7i|X^z_(cUR(cj~#~XhzrBP3pXM-#|F*;ehm8+dlzm8CxwRY^KAAa
zU;1+PR03aiOKNa%2Uo9->Lu-7SWWr#YdAM}as*0Pw=-wX;4>mo*9(RPs#l+Xii?h+
zYw8oq<a#KwmfbvC==GYW7LBe@d50Gl`pbiUH>M_;U|OikU>t#?bt2~EJ|`1@l=4@B
zaoWn(X;nv}Gj5}m8()(z9Zd5c2N!)scguLM%3-)WA*@fru1AkpQ$Mz;OOAIK--fY`
zlg1-DzJk@!4oyv+m{u}c`pinWr1yD2EL%L#Svwr|y8dM1lUw=X2X^h(zV<aZKv>sf
zk39z4L;QmXO}isXB!OjwqkseX^rt_KgB-~TJRVMBY!qx7><^q8$OG@W=bopZej2aB
zcEJnrG*|^}1K%P{z2lBME^<wK9MfT(4G!Wc=8a7UxX+h1>yaaA7>PfPxDJt+wombQ
z-}08X;9CUk@E%$ay8r(BFCC|NS=--EmdsFfYY$I|03NHPrvn~{Jk^k}s`wP|c*i@i
zZU~Y!#lTPS?;rp1A8USyS0VN}DG%HfeeIjx^d`gtNNW*@B6Y-Vx|Z~Hc4ipSx$_6T
z-jPEG2fe<bQXO?IBA(G<CyNKH`mx_aX>=H)3JTkK;gnTSk~9*^7Ez&uCa`-lz$qR@
z-K7Ibo{J)q=%xAd^Urq*o4!mJ`Z~5tUs*eKbM2P2jnC$fi93})q|$mj8<;XqSG1M>
z=Kd!E&KB2t2XBhgAgSu8)4LSFjg0Q|pZ`4e3Ibr=+}Ov6hml}l6JP^<_q*SP$zf06
zUl=FykcS_B7)jT+zV)q#9(o9o)uuc&YJvga{+u{*;`s67SW4^?JO?`rb_ffHwOqNb
ztF+%vE9{a`ZMXNphE}u}{2?+ZTs*$`!4H0b_eTbZ>%o4-Pw=_$?JG2*<z#e?ibqoT
z>C)$50ksUHR)jBbPHk;%!G!P=TsF?W?|=XM+ONXK!Y9I~z*&QZ#Sw$wV!{9Vum2hc
z9G;8?(c<%WzVjX2EG+MbKJ=j%biwpdVYsl+zuq1$tIAR|+G!z+Os*wiXb`EKUH~WL
z^khX0i2W`idP$NkU{9I)R6*y9KYJ8q9U0>_v#A)F_;tjEq5}|wPQQi2N~APTWQ?ly
zYZWgt)TZsUNw-PzrYwwCimaP6Qf*oq^UuHt<6ggW;Al6epk<ou5ih|oa2{iGz-7V4
zu(_!q$&t)dirV3O-}_!zrWVJM%ED;h_O`bv=n;koLxp`}XJ{=4#)++V*IjqPFtEvB
zEqImIT45Mh4+T})Sqj#MvLxoxW<87wejC?A^n~~UpTd{?Lyctk*wFYCxG)%@G^}1h
zJ}A=uk!Ze^KfMPk5KDmwLa!DpjJ48B)pf%nBeK9^F33ZJ=U@A^U&C{-q^)4Qu;%yO
zcOT9aB}~Cfu&}@J8@~ZV#nJY{rk^xkjG{re*GV&_G4nk~1}m#Cm_6$?%6yLiyRM}l
zCu4-vUW*A%@M7ibl}yqdmls(=B<kL?NLDqjW|%+`i1dZ4RD_9Ta2^Z9Nvfu{Z7Gy%
z5#cjI)I^!hy0$19J89Js&WMtf<9pu&P`K=2l4iXHTzD4man0Be?|Rp}E^2&V1OU3w
z?M>5pG2^D2ZkmG%=J^R?)ZHbY-A(gr;dIfoQv~jqls0=Ya4QPpq8v{xZQdo*KdtA;
zD`<f@6igdYtOTY=WsW@}kzF{Ai`GQH#+A<v2?yD3V9*>$pr31AUY_GUUc?m(3Wg%}
z0XwVK&G!Y=q7edNoli0$B^8O6u5D#pLtJSYM9jtbbGd@c9jp;m1O@aav86Y+K;(S*
zA6zK%P>q9`k5cOkYvIL7+%#F(lC7-{8=U;DAGc8sXUNt?N!l7|PYPYW2y_MhzGrQr
z7*a)3%<?o({rx?Ag{*vMV-u+a5|Pb~O=Rf%e0f99L?o1NW8dsKcLi^Z*a2?swXc0G
zzE(`Rg2iEkur4@l95?t0d=Y-DKgZ5S^senLL>4&XkQCreV6n&#;rtN`TqADrq65pH
zDKPoW#%Oe*N?HcmagmyeV9~@feU+h*@g)2%6nRda<u!pwIU7;OR(%(19f>xL5T06F
zB7%$ewD2jXEJqeuiJ@vqYr?i6)WTOg#PQSM$Pw&Z)6`W}Qq(p~o4C`&c^e=itz}q4
z5Nsi}<HBIS!v&@0R5leGk8p|p{-)DKeD%a5kM{cuICIaPTYuBr-m%Y@HwnCoyUC=S
z)Y;<+k390om%sdFY%OGZ2pJH9B1=RxF}I~pfBMs~v7i3wpZ>--zJZJy?hgOH?|tuk
z^2sM*pP&2O=U}40{L8<L=l|nB{v)1=fFD^UtZ^QRydWc#%1Yon1gMCR3UQgzkg9)U
zY#52AVh~h9uq1Qyq~MyXK|J5E!%N92BdTC<Orw$b(`a(3L9Qym$ux$qy+L{FP?WQo
z0@)-c3W8Fk9Q$o4@&@C~>L{^Z>2%*^0+Evy;XjATdW9x5%44>#AH}rz;p0z{lP`?6
zHqL+h>G8qL3(U)d$wW*L`t5B8I175UpxEv@t*)dy5=0b7v7F3tO|VPLxv&;whR;3s
z+{VTRP8kIMur!z-5<GmNBw&b~Z@lqFd<%1hr6KP{iiq7i91h_*@!JO;cmSCpzP;s^
zTaaBNEqrm&sL~611kIUnHvZt$0$tf;#_>YYCpN~lMW@^hz6vsju`hbkQs!)>OURL?
zU{_)om1RNU?M7tH?1gBUO!+b<FSMoFrr?9~d!AF>ppX?cp_8P^lA@}Du%b43Zjx>r
zQyj+^of@bAw%73PR$+H48}8DpxWa(A6HD>;+zX-xw@2k^*K6nKBTLq=^b(9VLT|&_
zpvZbue&6Rth*NW8d&_z)PQb0L^=?$J=AQR5k?LX-egACL*$!@8POe%W`oF&Mub<xf
z-hcih|1nDjSI7x*Xd|U*ut|(5n>`MTd+)th^Hq31oc9WU@pj=Z=98Ig^3V{}o5A;Y
zC(;O06%(^0j~BlVQto<wOr+K)4zFny&l0rc9Yj2c96{N4WyV$Yd_oZe4TX;@@Vq^+
zV-e09La1A-QK;{F92Pd)QqnvmvQ)GTo#ZD+CG<WC!y<P-Tw#{N3X`O&YA?=$tY=8i
zSow7kQbWp4MZNH%zkPOWpWJAddeKskh7m{Xqu?$~rrv1M?r}6(RVTk(LHSBM&_2Im
zHL30Kh45had2h!4RhU@eO*WT<obRI))>3M{DRIIeRXV(s9b)m~<s#L!qtXk!@S-*;
zmZjV6?n<$6SHi#f-hcnSXYGG_-&2Q@yD#esg_oLS@|D?{l%1m7qdu{#Hj6EIQB~>H
z4vVDj#fpi&5K&&VC9I4QI^t_-18|%@<UvCpCfaC09C)IdE@X(pmv{-6UsOz|qLxa4
zg3(r^Qig`YcSt`g%FO;uo5?!XQXLMKHbfgz7e1EKR8_@so5X&W`*JGOWr1jSXHry`
z%&Kn`_SOU8N;G})<XIf&XNO~$@_14lJ+yk;3mHLr5s%YDb8ccUHbQ~d)m~WpQM3P5
zq^RFVaqWl<^X7*qpUIaFRAu?%-_OTcUN0>z3fRqWjlUaP_VB|GBiFk9_S;XLI)#w$
z`0?X&Jkae2-#xAV=Fr03SB^-fr`%3Wxic>M<$f2dG=ea4`@(qhMy!r>&~n1i#6(O}
zr;K9}G=Vft(j=(~Jo80OSd@6l$}8#4EGV$M)H~VbVpYx8gh++!^$9$*X2EVt1h2@^
zDqDuYtE~QMW$rc}wbYX&&62uI(uRR(HxO#ls%|F5WV4`<+r^Enz@}-ivpM;PhaS(8
zWNS2mO`l!ge(OE2dG{-9gg7<QOX@@=F14(BtykNyp(gphwnJY;(3yc$W;iM1Bt}&B
zQrNTvqFJ9icWySN^}JJmeSIAn7eYIDLL^%16P_JD`X9ge+r#qI?T6m{-+b!b@44e6
zZ@>B1FYCBv8mMfWQ9Z5p{XC&4Ne1eZof3qvNV34ChqKutH(?~75f(^cP#sZn;t_$U
z0h33cVXgHp;K6-IR>>BFekE@ldQMD<V-qTFVQNamgibNs{g(TfhRzF6!VI~Elr+Er
ziOevFQj_I`3Dk&8O%ulElC~RO^~7_{Ez2vv^r3fejq4;1yGbyu4fTf`yZdQMLv@Ai
z82EdV{L5?idR^7xzl&dhL}gr7MO72|8pK!2n!M9n?Q>(BMNBWTG8t)(k!||;N&LzW
z1xp*2w00FqajL<>Vz1lrx-S*)B1|)T3^_dTzyq*DrT>|aAUw16&2OIi^v}HEzqsYV
z+y00D?_Yl7g!lHF|K(*op)b2nIRdTy=P)xJ%fl#5sIPrL-Rv^~T(QO=aN|yfWz0Z|
zqYk0M!KJ`cP6K&YCnN8qOlKi(Bpnb^J;~oSGm2itj*8Twz`}Vd_(BOtj7H5!NXF;I
z?sb+v5cwD6knAefHDco2<WXY%P7rh!L|EhbkE8wIhg;@}O_N4`6vhaD<I>CGp!JgN
zvAOgf&f{VG{F2N}Soy+F>?H=X`?oD~RPRXd;*HR@bxlF)s@3(lVnkXtc3OL@9ls$#
zfnU^SQVCfBr3Dz)hQ6x?C4ryDUN7;J(6>%)l~ep7n@cZgn@G45@b43?QOzTz7yTgM
zzN&nG?_~H=81%iz{>8_C<6r34fASl@aOFeGxSBr4VZ$ic|3)Z2M(5w%5TL7@__G1O
zUD|(v>^rqSZ${obgOSo<akSUExmq=7g{FC;CPEod<ElVXkEN9xErYZ&gc-5{qP<J~
z`!c9l@*N}6t0lsyCOwTP(&P{kX=$<6Sr^~s>EimiOGgT_$baqX^N!r}6N-~17wW-o
zj6_C4<v1|2z+mqAe6_3Rg_`q1sG}dB9XwWki?@UQFX#RxC30@T#?`%=t7T-~a>rlk
z&NtKZc9kg0dqv|-YENdnJXmZkwH{pCq_(5dS#0Q3pb?zou5(SWKRbz^ieJ5o4F<8I
z@)4+<KYwmxW3woxFQL%G(zlM`zx-7s99xFvL6W{lNfgHW-w1s-z~Jc=6NQzKDz_H{
zUl?bS!`GW@dW!$@WfG$y&f17@giJwj0)m0o^I9~Kuw4W~M56?3_!FusGgEaET?rOf
z$=wvXXxQ_yrKn;GzY(`^e!hq)5;3kkPa@JS#Z@>)PL~8%yR``Ip58VKnIFX@6t8Qq
zlhN8nB)+hD7BHFj{pJ$kKz~=;!jjv=+m-iv7s1b@y6io*)z&6B*nOVmkhQLD^@AIt
zz^+ss#kyAVS59qwdumS)x~sO0>v{su#|h6cPNVK1OMMUVVdi;ze|9+Jq83}Ncyb~X
zAD346?|99V#$MMCu3x;Iyeh>$m~se>$iYJgS65g5N%re#G}8HuD??9<)-Oz0`Vk@>
z>-{q@!eEA%cEO+uoVir)GR?4=dkjQ>mvtL#w7O`jVCEXFV`keG^hdrSIu0)uJuDHQ
z@HMy-X$xP*@dGMdupJWCisf+^2z#xY$`%NRqc~N66G}&e|N0W&5?&LKUh8UU(oSh_
zU5k?OxzBw5k%cY?+i@KSmIl+ZLY6ojP4MjlZ@i<o^fFM{o*kR@iMhxK36>>BkQ2~X
z9lL_rsGdS$pBp~g8JcRa7{iw(nZLEYSvTW6AGCIo=Uv>sIQE-5G_~oZt5J|~#@ff(
zStD*uf&d>j=r4F)y4#(?m!2E7Pi`0(;bnVyo(LZVVVa~!*v>rrtoPE|DhLDygTV`J
zterS<;v3)i#(UoLo-06JaaohrAJ(?;5VyDWzMpFg1RNtqcp>=oRsYIUFql8D(9HVy
zGg{GEC5j<cRZK@a*i}A~G~(Z6bNMn((i&;@`)t-HX$J2lby%Vnh;UbeLb^}#02^(D
zd&=HsBpC^0*x9QX!<6__Vbj78#fH6*GBZ(KGKOYA%*l)BswgmRwZpv>we_d<4Mz`b
z4JVV@L`gOo@02Yg(n)1r7Q#w=uq51r8A)O5l6_x=cN8IIYhWIuD2NYq?|SmFr~OIq
zp4Z=V=FH@=Z+-pfvD=^CIp5lBd9^d1ZjXzN<2M}R<RJn`Cz0jVZ80u48dDit!hg~x
z`ACeN9va-)&kpy}U@^0o%kn6eTs4R^IJDXNS)TX0-Iv(gL>>WS9`py{3!x-jnLVx?
z>mpX(oJ<jhZ;gwpZoPf~u#Q?nZI1LV7o44O|8s-%tbDq`A<1Tpu$(n*RZL)k&pjJ;
zi|#_dmm^5@oubU{aC9`<%Gw@|QVA)gms2YlaP8)MZG+>sQ524KTy0EkLd1=coC+m8
zRa2R;X(BOK7#(s${K2|1p0`^x^eRU9*tzzGrPU9A;Kw8@rE9=z#*&@okw-gh=`b%>
zD7DW|2={0Q&vx{%B){^d5r_u#p#b)-+$kj6vG66ArAbzwx_&Tj>dABUWEhQ(zRvG;
zhF%`{wr?6g_WGmq<NWy1<?cniCfBX@<`&h|?X;+O8dGjhPM%o*@?A&%lW}=v_<<c3
zWq}*rR_nu2Umh=g=S|r+egT%ev$Lb4l_yW0R7~0BZq3GcavtGKfRMXw_I-J@X`0Do
z8f8;6<Hm07Ojl6V$3mexwBBq?-eVW8l?+h$dnq~5m<cDcqPX&KTz1lq6$vI~D^;yC
zR!7Ifow}G-oo?3YhQz)kKGHG9rk-ffDAG@coLDUlEkaYKY!)_1@HolZQd}gb?CZ)3
zQh;TKh}ocCP~G6atE0e<4T7p|&yI0qiVK#Hnnr#e(|K=QICY+PYcFaJ`_GHkF0peZ
z-;v_Z(FOm~2qa-)DWU6*;;Z>moCP>2@*_)kof|%urQJNuuwbieD_PnvtF6`R2=GtB
zEbzLwOqS|;xIP+{&5jJ1+c@k-L5jRFiTW{~<40-K$A5Gz-J4*95|NrXxI$&f?u<v%
zis<=KF)qrwZQGZ=^U4>}?uW&G``h1Ersl^Ve_RJ}FGnS~2_qa&(mb(ACrtmzlzK<y
z*=fC{a=L*Z=ka1U-Gd=zYdCuJ$){FEQ=N!y1v+hKJlk;+_xrs;w-W`z0wdd!uBd6u
zoKBmNCc|l9uL^RbNKdKO*xgDoG(ywXld34oX<3YOsbvPz0Bl*Sf%P}0nGG^Z=bmMn
zka|vR_C!uMLei+RscWmmQslN__k!Gq*d%qOItN!?oha~bUkNX1=-D$vn?`}!n^cWl
zmDnjM`WMHU+O+V!J(}%}n*n2Cv!D2T6gsGB!>UqrwK5Xojm2(QHS15Ue`$H)x-44o
zgF1<N6-%r`Ytl)zgSQ--VG<5I*<v@#kYXoIN0_gMSk`G>4vW*)i<)-KEZawTZ{n~&
zE}!cpE-Oo8{|W)#cs$w}Pb-|jfxof21&{O+?GQQP^HFJ6dElJA@4oxyR)?2g_O%wN
zL^-O;xF7ddR=fRITcc)DZJZlE+L$8r6WQRg3S5uMXP@1v<1jxoxGRY+91YK&J^z(&
ze(NZQjD=^=Q~ppk=x|t*l;F^T;Gmzg@5H_!!p5p<Xaci9R_1*@qfG;>5g80a;T4cZ
z>CBnX2=Ns9F+x4dW;)F}y(sMj;%b$!wGqXYC^T04CY;T7EI4?5B8AW_Nf_!%*@v|a
zak2tAKpe~SmB`T-o{Pf*A3oPEq#;~bmMCz}s~bA!@znM@{&4DNsaF(U)0&Gsp`Ag4
z{5=Yr_VEof?FUB(!6mtP=rFcd>l5O0WwAGHp6<p6Hy=M3bqa(YTf>uU2bNlI3Sa8^
zI08+QWCfzdV%^#b?k<T2Asc0bBt(3I{klrEyCANbNsF7%jsrg(<VV(eRB^)nO(T2x
zQ@~);GiC_bltfB);J|^Gm=ogVFNmBflE?0Euh7v^b;~48qE4E3UOi8U-23#_*UNg?
z%huNVw|A1|OMK&V8{-o{JpXyP#3M`hX*GRkIDGQtsUXd*3(DBZgRv3E;d}jF)$8?F
zS4;xeA<cQhS~O8?HExwek=hchJ|qd#GZ`c@zBki0x9<NqSc3Qw&xfUuVwFUF<0K`o
zv*#9$iljPm7)U!_>=yo62qbNr#H8A=afCbAlpM$-mWo49>YC`mm51Yn8=<$<4R6S%
z|M1O6;Zujx0(Np}b*U_?UN?W}%=ve|`OfE_*}DGlT9CXjq{#WPSuZaBAsZ@D=+LuQ
zqZ&gp(22dX2<A-{C4s3BG_U%jWPJ>KxM4ir!6|m@ZP#Z5U4*u7Cq+FJv6*pEZ8c`v
z!Yn;jjXTL2LQ@2#z4SoQY$D53|Bm~6g-N2et;>4s2NCYEjZ>@%)47*mggUB^nC0NX
zgIBm&S73#crgm_-l7HxnfID^@$*Nza;nJPrnT^p8qcA;w@czKx`;Ye0gZK|O=*;#*
zh-(h?U(-oeCS|#?Guasxv$=S=c;R(nNi#@_vZ9P9wT`@y+`2FaPd+3`*FtN;who&r
zXv)Ag+ECyzZ~VZi?MgaHH`|IQ#Ihp8LuToF3>=GTI0;F;n&1yap=?N)5^@e1acYq-
z!ThA%;mB!XdXPAYn2B=Cx2A|XxkO-+ZH>Q`#CiB)`?E#s56gBuDLQ%D%d-f+rLoU#
zO(vB&KP(=4{F%kYrKRKro{q-5bbBj<k5+-N+E6iqiRmRbjf(H}kDoLx`!Y*6dE;Rd
z$CIcI;o+JzuUn*iId1<v<-6?OmQ4)f-l(41nVw$h-E6%pbsSpe;T2=&Fm64Q=jn^5
za@b{HPdxF&;^N|^6rDIq&zw1fKXIwr;nz?6+5h|9|MfS1<o6FPzV1pZ)<kt3)&yPE
zuMT!}b8_<R&LcOjzGHWsdD+l9>>OXde_Wn>dh@HdAAD~XEg@Vj>p6b1Rrv`)b9<H0
zzu;iWvn)?y1%XZ`aAH-SXSRqsk=KdhghTO_=Kwd3lZyy9-_Cm*G{PiKDk~a@evrtk
zh#Daq&m=5Lh0o0beSbdg6k!L#^#w`_3^NPjFxHc%u4<ghI5lu)l>BmvgCL317eOKf
zJJ}kyYb*JWzvGP;y|`?Nz#diheeXJmYaiEkuQu9cA6unJ;q0{yRUpUTbMWgzY1FF1
z<3fHkjTR==xyCQanjUy-OAAdq^}7g1+nwSR&Z*Xnwa$caA@n;@7$YLWE%zK?1|Ksf
zKV^{erp8N$76#jslbWMm(HmO<%*o&yPhz8mtC!fJMz*u(AARt_2gl>_oSb*JKm6*6
z|MP$U`v)Jm^}*{F@3`C$1+HsS29v^@OmSRcTNJOf1#V4Fp4tBPEo<+(77Ls|y6M`{
zr8jxr+4G|(5IZ{>c?o<3ra2=HHMFBRPI`mE@<KmOV%wUXogqC^Ta=xs7g`);S&x=D
zuL`;y8O(gEMYM<{q(Rh~QoX6dedOU3r>v+DM2TO*8mp=dLj}P^LNDw~FJA_jI3|p+
zx2jAOMhHcz(FMb+s?l^D2}fJon7U-w(fBV$Z8wknJJv#Ru6}Kw*X6+G#TzG~uRC>*
ziuXlE_`E0h#|FWrbZU4-W7?WJ8g*3_S8fu9az>mu|J8nXp_31GCL`RX)>PwSQ%WpN
z;AerKkj=pF3G;1?>^Kg4EJ3q08Y_~pY_><``LY?~OW#k8MUc69Z22wvSNh523p3PQ
zZp0BrUSp&xW~;h-DQ-{;q<e;x*I$4A`uh54G<xQlXR<6idi3bL26ONAAAJ1{e|g7|
z_j{Mmqw(Gw<7Q`K77834Q`P@@1se>e+?qUn^V&OKkOewBOpvHoWxXZD*K{*A)#Lq0
z0wvF05E-NlXPPCQ95EV_w7i%0`qA1-x11Kp5wZXgDI&op^aSv!;7Kd=4X*mn!bMR|
zB77Sq37%B@Wh*0p>iuF^VH8o`1;$83bAvDxW-W=kD67eXmgWbB(;ftoD+0JE3&yf>
zA~M_fEqrEdU(|$N(Rj~}Z5AtB-J560>c%Lu5%>}qTsUYhEeYt1#rzO}Rd*A=cgg-n
zB3sdom-y63iua^om^TTviQf7nzqr9PgVoN#x+%h>t(plEKjRmK)Hg^33#=R#DeybO
zXfUeVXj-iYejYI8%Y83i$d5!})|wijgkk+A(c;0lM7Vnen_=&Y=VO|LA%|$NC@-Bf
zjrVJ>?xYf;sxZ@BMhdyc7asc$fA!tpKeUkl<+uJVtntoc9||1T*u@>4?J-U$9Q;IC
zVU1r=BRn_!!D8oF8odBy$FO*|pB<XR77i`kX}v-w;#uO57P8DVu~SEWLnL5zQ*Ui;
zPbZ^ZH(OfjbvyB3p$E&HObgq>j&UR!e9}Cyy;e?K&QDm^B9qV*o~)RRqoyhllG4lx
zafBymJQ70%afSpsZX0YX0z?gqcTGzQ69kq@HtaJo72K2wMPtBHbBpe~Zpkl|l3ON9
zb4xDp@ry9RX>EV7-X7?M2?DvuZw1q%FrsNuOF;<PrdM$SRc&+cHgRJ-`#dA`p4e<h
zRd9SExG22C)g$4ajK}Q%T)tBdGmbgHQY{V^9{u{`&zyR8?ErgC2M=7gFjy>$IM0^O
zQ;O{R!v`0`g$uQrX}xWX=vEml=>$GdxJU}$rX(^Uo+j(0y(}ICepI#g3gdw?@mW(5
zIZkkkUqs#OauMm}LKaOF6%wFs6Y<{v_V@p)G~SQh_TJiV|A){1?0@}%Z(p~3_udVa
zqAswXDWK^$?JJ0wshZKKJiFGvRyOgbEuPx=()RT9!NKc}EZ#dS3Qm<2MZ10?NG*UB
z9_LnhCC1aDeCC;=EW3Gn?C{!wwLY?f&8_jyu#m&5wWUbt4w86S^@}n~qEIlThOwKB
z7}j<&nnsh!C~06WiD0ecHt@BF!EPZB*^bR;4UDQ3PAJM9hAn$(6t$m0=!~ky%pRVM
z`G!&6c&VUfyel}CE0j+TE=1Qw<IjHWdq_3$nXv|gUI*sa>*Sl;qkCU>)8BpJ;Sap?
zO-c5`s-tj&n}xkJWD=4mR*8p!XReeJdV=d34u{1(ufOlsTSlsPhXV*1bln!Go_)OG
zbmDs1I^mZq*JfDQHpR5wDVxbt8~=d3aWTKKWdZiGCl?FmL4`a3k-6%Fyj+|3S`tgO
z)B}UtfB!!_k;Wa7k#2tW4gbEItn67n#XC+*7-3Vh9vDjL{*`*19X>k94k5?BwhH{@
ziE|Gg9Nc-+>W@9W`PEaK|0rDw&90rct)1awRN<P#wx%tn)AfxFIH>L6P8tO}J3G%j
z*PoWf`ucD*o>I3dib9zs9PE^(37E0jrG7t4d_|&hgOx?Gy|Ee9Wx@JPY@*17!tsq{
zN3e2MN1=SYQye8t+@>j;?+uX|ET|G6=fe=$DrC)>HHHS;f>{dx1OsXci;6M~U)a9z
z-9XwepM{~Yu+@RpC0HQ*AFcqO6MxkDLART?FPz;-%D0zpEaKYm`J1YqUM4D=d%`qE
z0z9niB3sU~{CO<E%gf7iYT9cJ0@<PLB3EQ8Sgt2wjyOD&vBN8r8@-?of*NT>F&)2%
z<$dXoJ&%<=ZP*ek+fu%g{|~X*D`<r9YzGIgxt3=lhkyL+Umsq0!(vAyz`8e_SpWMY
zOZR%-ti)yY?yw*e2D3pv>7NhBlXDx}a7zC_d+z~gSy`Tqu3mRNb^0(fz!W-2k*+8K
z3!+B({Z*116V27cG-E9J6Jv=ni6&P~a`h?^jroHbA_4*eQl$4bbY_@-&YZIQ>g7J~
z`>lQEOhbV&!0-MzoY`lWwb%OA+spHIyFEqDf+*QB)${_t)#^s%$!VHlD;yeWx5FSz
zR5>Y`vSEzb5~newJkFB9>(0(jYcU65sUI<mwUnCkHPJ9%bkU1ieM!<RO|!UwCZ@Kt
zB*`;TKR{NSM%}$owa~SMtnP=NNII!BvXshA*-U-jZh)>z@FJRqb>a!f=qmTugMWBu
zf>;6@gpu_6(@*F|QV`_(%MtH0yU+^ry_JkoOckK)iys8fkspA3q*~S_*3<(IT%E^h
z$JQ&2;OCg{1hGU_`B9RoVdQ7|%cUfGf95PK&=`8B2lEZ?(u<1Xrp=v%Iq$V35Eba$
ztx`$X5cP2M{7GmIA<p)wn9*psfjiHfX+OR5r*(I^;J{9>W8=&%D~3-iTHm;po=PvF
zPmD}q#6d3cPuLTXf-nQS5r9iVu36HJRgcOug9wJJo~CLV(NuehQgvZ2wM&k<XslkV
zmdaGQLPc;%5Oo^O+38u0*oi~iD%a=aS)5T$LYGyYs!Pdo?N1z0WSRq|>o71iiok?f
z60uaE(g1uZrC|-rwp}mu6548C&LmAIM*_Q^#LpW<5PWjjnCd6g{|_1im8E@^<!I!>
zffG{xJy(LTPe{bQpQ%~<fXkSJa^oVqG~2)Z9OqC15Cq-5%P(H!3X?9E?l|y=e;yYq
z8XRRBR_DcW_;MfgL8VUQZ_l*aGc(PZM(YKNs3;5{yAxtiTewnjtCFfwkXVw_nTcq_
zdi$`GyLu?~^1V{_+on2C;C?Nwzp7#{5;}0h^v#QEN7tQ$L{5KO<K8vn=NkQ34h_&%
z%u1!g<CPSyC6?i*bi17-%{1LgB|S)W2}Z9@WS7zG7vdI6=eQy96lL@XkCX&!-tpq;
zMsIY;uXIDZ)PpJ6ZhI5kx9-@wRfBm+O;ZGNDrGXwP|HcnQACyIX!E>Y#{0~R9zrTy
z<M_I2&?G`?+7}ZnB<cZD6w|U?%j(6H=Ezcy@W5rs^LszHY%NOjr)D$5P-`U;a7jWz
z7hRG3KsK27g;mq@B~JK0pF20t;1n1gt}ZPoDSM?QWr6Ag|1*D1#e##_x-=66J6aDZ
zI6KXRRi-JHu39fTsL+#nY#6Tbxgj99p4X(5eN12gs`9c1jNm4N#1ErZ$J?=U=WO!@
zGGX}SJ&IE@4mozudpEo=-u$@q#ADv*tTwc8FAjWi<;WRc)OdX2$~6n#;26V?O<b|K
zc3hoxVAI>YVfw~H=W!r!uUvASk)a{mwsi`Q5PXE+>rKzjw7PyG>9StRwUS0tU!WwZ
zeF#RRB0w>~MGzNJ98g7NqN=fOQ3wTIakJxBTV365T5u+(JCoaYOz)h~k~q}3V=$Gu
zi#Uh1F1jtabAlj*H41>{naEUfx}OY74F;lW<T+sv6ZjgBAO+8wreT?O;DvBH1wq3n
z^tv6x_&F6bn_HxaRKNA)=EiWn3YTvd{3pvx7mUm_JI!{FvLw2;XlzK^KaP^f!R+_d
zyhtW*ZPT>2J))zo?HD+Fg5$81KEBBQoK^f9s~i);FAOHL+^2a}kUzR>>2n>ia+tKJ
zU`UqW<Ee^msHUk`z^m&1QKaJ3qXEkj^;JIi^bSQeRLv%*fI_2ErBZu2GokCcpr#;<
z!w4o^)bm~lDt7q9-D-7MU%GF9PhYl18up{RzAPVerZlhMXQum%sh7bWt~s)L!8tR%
zXQsMO47;lY2YS)W*5<v3jGbLFcLVr?S5~jM<0JKQrK;<eVL;I8Srk^Q?&gV^Rxiy|
zN3$xH?NHKA02_*4c8$RDsiC6V%LB;AScQ<bOvAMB*N*9Cl5cH#VYyOnPPevg**Y^j
ztHEldE^krHMm3%)7j#h~M9PcN^Rj3$q%21&BKN8QM<FOT$>>WCHBIq^o~Jsu93~vT
zQIr6-uc<1x{OqQ;y!EZmvBisr6q~$i_pS#Y+puN(+EvRM?QR&u=$ED&ZQIi0IC^^X
z)XK#}HT%U%{bf~Y?`-k*9TS#CTsSm5BnI5>M_CawYvd(ZD~9)&7Y)N8B$%j7v~wg`
zj@#w;q8X|v%mZv2!;N6OOj%A<*(R_o)zsCJrczr?H=HHNaxRB3HTgMp3kgNK$Eq5J
z-re`yvB${n7q*rxSyDV0HxA&W!bcuiziHD3x8$Te6fH@fcYq+-_Dml5`s(9%lZJ3|
zHa(^vv`$tvAxFm+pAv1JlIBUIWkV-zocY;w_sNmcp(S(N(rZZ;S{fDgw*BqT&fW^$
zXzb-f8k$;htcq>c%dY0QI@vie8+AVnt!C7VB1v<cQrUK0XqUX-z9gpeQhtG8j#Gkx
zO%v5p82&}}{IJ#PZr(Ost8E*q)qT&~ymd>X)uMqgihzfasUVwLh15`!bOv`z<b)d(
zvXC-yX(DGa_)rm=MwJMdTb4v`qFh+2GPQjKaUKRSP88})%F{R)8y~yrrW-%=slPb&
z^fNf2tcWOUN=+I`%q>PU0mP3oY%5ljv>UCvwmwZLY?3tjAk}TxYLz96#-*v9KfP+o
zb&P-jnR1$0L*X_ms$s-_GAY#p7>e<9q+Fv46#}KxQtH1F&`8rB1rzHfT&S*D7R-%D
z)<62t!w-#)j3!ZHJ9d?wf&J7EWGX{5J@W9wvyDcrR$H)OL8(;gbUL=>luBjFUT`sq
zt=IPzyYv0H4gV<4V6#IXW2c&MSJKRbW!nj-mJJ=xl>^dq13f`3MzODI1TQ%@I{w8k
z{q@Yu3<FGL0(l+ck%9{3kHi^V3_<ovF$cW>zoZsXjbWFRl(C4Kjb^#z8m2zglPa#g
zXxKG$YFiU|FIk1H;24%;ka<R3JQRtDV0QVDPsJYGtSa*`TM94t$cgeiKlt)jzM5od
z-E~AN<pqGkCDYsV<$LPDJoM7(ZCS6WjV^(gND<D1PK=(qXMSE-RSejo&rJPPSDmW8
z1fHJAUcd@{X8Oj1N6*@u1EoI34EN~CVmNOUXPvI!Xa}AT;?XV3wjIZ|Escha)AlgN
z8l{>u++9Bkd=F0>QbzrL;H4z)#CfOP>GgWrcDY(A!)$BJ%yxo^n2^gPNTF)Ekx(ls
zL1)wa9Oyv&fbp_K6T{`CRFf%8qQWiIMZGiiwu;g*s_~)be2H8|KY*c|#aa?6K@{L#
zjSLN6arxyp-+W8GRu{n!GEJhe(QLLmJ~-F0bsBK0Xs)G|VG+u*t)@m6+frJul&V9c
zn@csrbswCVet5&CovmIwj9Z=F?CfkxoqIW#kr`z}w>4}^)(QPU5;a_!1A`#TOL<n7
zsDgkXB_+b9=on^d>ACG{mV-TAvGO47%W!Q7)CGmOzbK!d6akzC3m2Bk<z}-f2JY_M
zxzll+Mx%k>pwY3hF)<V#P6d90J;e9~O|{Fa{hSUg*WzSUl=oZ_!ZeG6*mOuFmfTVh
z#9#QEzm()uGvHTimR`~nH_PQPZFR$)y_OVt6v~2B6FNh9-DJpE)Fzf?N*GY_1uSYt
z=mM3P<yxgaJPuaGO{X|pl&MCoI=o<LWMQo~WD!(D5cFo7&B>ipldY*HMFwFCX{zH`
zAkQdGHf`PU*pnMNp(o1*1o2$E<MS<X&Ag6mJ8Erg7f((+o6c;Pb;CaX?5x+0w>*yb
z=*!p2h5<7!*|AYuv~r$<r!B3YxTSGtkhI3jhcO3k+1`3!_4qj@b8LUfQm&w;K3;|C
zy%%<O&U7ZH!HKD2*>r_A$V5w1ilRj9nTu{-5H|JGhoK?mjzzuOGS60kzVU;o(dxic
zn^0#Inr}xsL?ih|Rf`Pn0NXQ$LX6?bDWQ+IfTeJQG{PfQc=D2L(SUB^ZJoSFMTKId
zv>`VWl90<`Z>i7~sVs4+jt4y$_&6<`9F3JO*Br+!Kow;w{3$mY?RJNzjWVc&CZ#mU
z4mvD`Yz@H9@UtY#wX4ImdL6Q1`B>GqR!;ZA$!@%JwmmsjZnc{b0JdS*-10C@RW`#U
zn(efjL6`d9d0eWM<z-nd^SJSX)=e$9EMH37aS|}($;|W&F0Sf=e2xA<)_q3#3OuH{
z*_4$^1&`OQTNm(xsKez94-Z4<Z{EBaGIGa`9oXK{UkFxQp8LmoPIFXObs87~rY1ox
zjSW|pEg8{i>{voJQRb?d38@U9r|p-!9o%@BBrKCmf<vJEb4J*)6nmqVmz>ara!^$X
z^2pRR!&EKTf`+GF9Vu}#sSGO6OKusu->H^O+t8KVh)e~}zN#q|%YmP*!&TMk3qYkA
z72uU~)tH=a_@ST9GeMtseNP;y<$fSKOT)+SmJLf^a;Q?JTcDKd=DJr058UY8`Xl#@
zUyt%Ao8C}awA(l|ORugRIdkLm&3@DXv3pTt)##a~w%-Xh6i10*6(z!Az`s2&oNaoo
zF7;45R7`F1z9m%Z=)-NIQODR!O2LO-6!hdQvW%?a8WmD07L}dyJQmPK;0LM5?vcpF
zXBa<&ZU)>HEz;63jUzb?)d;^+?7yawY||-9s~OzACi9a9t51&WGwg7dF&Yg4EUVDg
zxeQeTRTu=J=LH!Jm(ew{dBETam*c2p=VUy{6x0#NIh6&-T*8?~R3R7TX+(|7vWstq
z(ZtPK3hw=g3n>ggHt>DDWoQw!mZFtP)sfoBs8e$_y^CFt<dCj9qG^h<YRPI<H>;MR
z6Jk$FZk=hSwu!G&Q$OSI3By}(%ZMU_{rB4>4i)1N4PAHLb(52m#~gFa^wbnQ@4N51
zd-0Mb%a<=-ym;}}ty{r<D_5?V8`k@Lmtkv_=M1$Px)BG7Ic$|2ceGv`9)^YCs=D0u
z!*0(Dx_R7-L+o`D2{d)aW@j(}9zo&0#e{4Ix_N|CLhMISn0Q}Is9d%sTf~K?ZfG|C
zHEcLuus6dv$Yfntj3mZiJqOBGE6LRSLHH)Rs^vUmRmpUSQ;O<&Ik&T={hH<78ZVx2
zH9zloKgG4<DV&`&zC;ST(&in~vLm?kbEh>lEFD6ROJwQo!@`7JdhpomLTMt&d{;T;
z=VkmeKa2vXIC%LHe5at%YPPz)APO^C%b@1`E){s@1O^jFA&VH90Mp<mzz~f*s1w^V
zOC<~Dl3|!!`x%fEme7=$lmTNHD?-vzp~q4h6aWjwNJ8+TAtgE^Nej!9Zx{9Jr=0Q7
z<RVHV+RqE{C{fwNwLJoK5iB1B5f4}O@lCc(s!m~s#TP27sLJEvxKRkLTR{C&M28ys
z!59kFWKg(L)3lrbc~i=n7-k6~)}(-hn#X27)T$5~K&3u9TpD(BE2Cz$mg5roehdk!
zNhQ;+nC3#aRCl1rWmv-9zz=0Lq<O=!k>&=KfGe&Gx$jzFRMVWAn!5VRt6%qPXK8zZ
z%|N73(W;c;%nmu^U~n2fd)sZd<%~N9H3-hU?bch5KjDN2?tk#alTLgA9O%I-2s3H_
zGsd@U-TF6w``4~pExEPfdS%(t@nuWKDpkAd2itcxKq|i9>vf|r3^J*gQlqFqYZp*&
z6b&cINj<9A=8Www!amS-+6NNyhCwz1l%{5Jqi^c@p=wBmNsXo5?ksj*mC|yl3~6Xv
zFhAUGSA|ItWz>#Cg;or+AO_Tk_Mf>_k!_c5zWJsbZoKI=XP)s3r|0ElYC@|n$|g4j
z58Y~?a(>osu-B(bn;(Z~Ncn+fYb5SjP5f9J-Y@u~DJ?L6o*KUM_B+4z&5I#GL#U7d
zB-HhIig2enMSLk~Ueb+&2E>oVC~H&%lo!AZR8|jhmZzqrS=ccHZZs5@mcU2!!3-X@
z!nQ1mt1(y;`Q#bbpb>f~q$UAG#hL<xkRY7|)5xM_BBwqjsSo==X&>-CkIaBqm=^Us
z6!^<|IIxl>S(xAoLca%dnVaurvV3$^IJ{IEo04BI(N9WD$o(N?!_v4#$mbji&@^<N
z0A?r%p$E7oio6oCx1tTn)X`e8?RG4K3Ej$&sXB63>NY(?fk|XIt_cU$F^ypt9=S78
za;xM<Yayj;n(Y)cXVJVH-O?=|A`O0yTdBf7)HS_UAHM#&8y<T2Q9@qLgqNR-*~wu-
z*%}D{O0^1;;Qoi7bR8G`-s`sRyXPLfdA8989ZyU)AQ<nw|B*aPpjf4_i}!Sc1Sa&e
zo1bmW?#y|p0MD!=$De_>2tR=l*l_`B*`+B25w?*g+^Q<<5MAMdCVg`I&YhE67cX4`
zDQOx`sqDh3g)DBhyvA&&+30mTJ=jRFr!pm?tW`hOz}5eh*CL@tRZ@Av=>0TZh@&|a
zrqK*prLLEh@SRimg1(1eu}uZW8b?EVtt8N3@0zM@l;}3WI5o766nh?Ao7m7T91Elc
zMJx-1X^N!hee1o}n4Nyz>&`yn@FPS-kHSm3fh!cvE;<wk!T&)Rnw3gfrg1b=+c#|p
zKnL({lSmuCSkWy3JfF<$kkeQlTShvas7Qt*17lVAono#gwUSZ(02igQ8OVDqWxAYM
zx&o@GyVgj(ZaHovNVd;3?!E6p92(*kQcTPk^*rBew*$WeAC3TcBRTRJWI|IIs6Jt9
zL*afW4NAiXZCSb|Q){2s!!3wAZNlZkXKS@OSr{fYk!HkXnkEv04EPC7qj}=ga-bGW
zC91{+&>{~`OQrr;2$d!l_Q%sugQCjsrY1ugQcs!xL?TI>3A`DBc7yHZTS72x;y5(5
zl-u(q)~!@wkP>b<Xo7kebwXKz`|2~mdji2icZ;T<;s|x83|DXnLI~t(XgN67kWy2n
z8KtUgrkSbBHQTJ<Lz-@giN~sHmGmkII?W=Zlo{4gf`iAnJQrMAtH9re;Y)+~O4U}o
z#S>K7F(6Hx$m9v<{Dn3+%B@s1-Ryd^anSR7?Owa-dtL{MD2%sH&WtWxfbS#C5XVa5
zL%VrlIyKYS_{@fF+c!e2FxCOI4dGEzCu1C>glz#)BNJpfmEcMd#AB=zB8`zNTBeeC
zG)it|WONjAT9eH<kvm?teX`y4dXuw_nb~%?<3|DE?~AVBtms|i$Yp^@E(<?^%5JEE
zCZ|}Hl#|diiTV}Q<SUjSLg7t7wPI^6yJ&00<^<5RJ-uXCbj1>ZRy^rP-c+-b#;{{u
z9EAqs#fh+-2_7{nMm}O2tF@t?=RNq~y?y_eV8Ik>A|dM*X0QX-o&~pMnOT<NvZfl1
zB<RopM%|D$Y!-1|`Y3!eD1xUp33r;P5pNI!<3;9xgXBaogp>>02SQ%dKGFnlTT^S`
zz>2$IcocR}D@wM{wo5SaOQkUIvrKC?8_*;?qa=_hH9(VFh!JTx8gv3NNJwG+2;x(h
z;8g3bYmh-@;LMXw4`f0K_g=RP+srN1#uqLa8y|BVTc-WVL0h8YD^GLLxC61726+an
zL>C4xLjntY{Q@6~@YH02Vk4j#4qs57!l0JIjLO+EHGvv5Db5yI>`&t0uqRCl>6UD#
z%tfX=y&?|sP-k#NHKxNAqih(@ia<?y*I?x2y}(N{@<nuZh&5b0wR{-Vry(nj%<a!U
z*$J6$m{qN2yDklEbSz!Au}_fsQIy7Uk0%o22A6DTNhP-(y<C&+az>d_$W}+AJ=9c!
zuZyBEs*f_rKujHm^lyTL@Z1%!j$vBmGQ=Gu0!}%Q6)=%pmP^%Y1^!bA?uLb2Q4AfQ
zCWV5FjYBg|Ew>_3wWIC(T^equJBnhE&Ix*P<R@vE5#DkRLShUp#w(GiUP6*1#<J8Q
z=u~*TFsKzW{My}c`}W3mNyh!|c!YrnBH<!_UFBFc$Uh-thESbVnUYUp#<eaPDm9~m
z^i{4{&JDwMZI})=wR-b{FVXIKy)ZEd7{Oq0@?5lQ`#zYnrIGKiCiESt7xY@4X3$ei
zBXBIrVTk$CCj9o)0D)l(c~T1LSa6qRjurF6`j9>fN$L{L0k4wz6NT_)K=d#a>SY%`
zR?%uDmqb2nSCOJzm3N;GFZFQ;#Zq{3HGZ%OQB0FS1STM8$flA~Hv<{ic$ki8dIY0T
z3_^&KPM(s7ozeUS3;IhFQ$c0O6&T?V7kDE~|DNv`ajlYFDpPO^Mote_EVUpdill;(
zA^Jdj3l}Y2v1&!RTuG^j1-#kS`hd_ZqH-n9l}OHg4stRKKJ=8fd-bI(#2$ri!F6IF
zFa)YB%DHKDFw6rhlcA(4VbY`04~0n97I_t$1uZ!ZnHNI{KokW!fg_UA6d-975+*bt
zMxdaYanLkj5UCM1&LTb}W+Vs?RhV&dLXsV7!b){p(Hw^cq{5*onH2exDQ&7KVeV(t
zHBX&=WQyRr(%48~<JtsXZ#$Y>)=e7<n4&h6fMl1OfsIp^pDFuK)DM!yR2o5jv{2Mk
z!)aM%vY&PCthFLH1%p?s!!_No!XR!no4t-iw^qpw#~B(K!-3k}W=wKUr@Q2NlsGYT
zC^{~(Nf?<xBMwp2jO1X<j)Ow?BvVKdQ*2bm$#ptD=aiI~+C2@4_9r#L*)-@51|c=f
z;Eu=wIhH3t^PC_sB*Bg-oFpVik$_Nfi$GYGZc{E78xT;FO~Uh-X<{=Yh{?2dD#g{I
zihT`cnNAgoRL3C#YZO$}GJ}EuAPcI)QcQ*bj6hOxJcoKP*8<A8EtzO@6<A0hB<LOw
zS~&1hMz75ah|7LQY%z63-mNrIp4Y>X7h{gHqWy@|ZgMWznCm>LO97r#L;%y797H}(
zn~T!|8BiEzq!VIQ3?75rAXknI1_L_<m)J55P(2u_+v|Zo3@(nb40>Bilgu^N^5m&9
z@_`tfmJ&RdVRAiLh+Cm4+~QEc3}tC3kUXhlJrh;Jsv<E2ZDD%OaUtnEg;}vc?9@Rs
z6!l3pDbt)>t-D}pHHB9jrYekkXn5N)9Sal>22u$)DuN9eJ9bEAreHR{a%#!o5H^TU
zQouBX5I}}+s>&dJCDtNc^m=GI@xCljzNAn#A|=p_(6vHRwvh8smxSp^3=5rLY7lIU
zl95tcnT+197Ihn1b4s-;np-pKBe7e77n#y#k<<nevLK_zCzXV$1$`i^*j{=v_ET!!
zBD^}48>V5#ns}tsC0awZ@%re9VcO&-fuIAQqSk2waa<c3f(q?|#KHuIYq!~;VKmg3
zWn!C28D>5WU4@~gn%D%WVn_o~Ku<+BIRi{8vCPFc#M^SJTDoe(grnR8SlQK76HZ$i
z_B@JI(g6tJhMaM1n!>g@$q)WTLZ9~AG~BXNt+{R$-Vx3jHfJ0LmSthHcoTJ5AQ!_1
z;gJU<_{6{lQVeCsu2;$lzE)8j*CEt**qHFt{3wyVK$d)2@~G&8u)p&D95>OUrxcSH
zsPrS};(7tyK=O`LUvo&Z1^W^Q(tp|9yr21#3&ix5Jl{1YPr%vB{bD1AiD8yxZU-3$
zamd9dWG8SOX>Q(%BEUO^z^B{|{2kY=*N4jG67|&P67*Y@k#!lnT@hvlnBQ@2QRR#8
z_F%sU#Le(m+RX<1KIoV<=&Gr&iFRAER5A_=aQ8q?w}eOXQd?joQ%qY`8H`(uYs#5O
z6VY3tCQw=_mAi3A9^to<7_O*PEQ#}Ig)oD38)mX8vK(L`kdYE6j^tGBD0Oo+%3+bh
zX$o^W6+y3*n|hT*0R0n&lE#%<_*QT*B`q~#fTHbCk^}hTN@N(6;e`ET7+PY15ov}o
zbtf~T5-u|324$)ez^;S$DNSSQrlq<SxwSC0>ak+Qu(l}!OJJ_VtrR;grXOnz8bity
zRx)Ark|mHa#lYl+g{`TQ<LJ=%&?wbP1xBf+Vb`4|OlwG4axZ1<Lb*Cz8D0RJ$m<2O
z&dynDdl+_eHgvh|jxs5R;iyIh_b&)qnFk8aEfZp_ZfMj(86{o>D?R3nJI(1WYZd_n
z;rvXvI&3Y#pvz^@SjUrn1@b~ITqD{Kg@C0*a|6j{_8B2gV6ix*ifxrd9j=MLEt@({
zRh|M&mH?iFL*Q~PiK&?`%-0O+zZ6vC7+(%*q>;6nVHprLu=*80h*YZBZsSzJRj_Ng
z@ha<UEu{~u#pz~3tqvh<sR5WcRV@IligCH}u8MqNRqtM>-=BfE8wZN)2(w%wiAhDG
zZiuucfn38t<x&P7cErV&98YG(lbJKcq%>keoy%Wymb@9a(F#wSATx`q7iMCze+g%p
zY;1gyty?BcRy>OQ_Vi9E?CK=_LMnlTe1m?;8RMJrn|SCKOc=Q76l^Jwl(-F%97Wiv
zDUYX-M1LTU$;}w~i^|^mLrE1fwW+ZYs<}#~N{lC_Qs`FABbh)n$e&D1SUx2)k<293
zxq1z*pO|MVC_Boj)PN`}<N8#R3S>x8;W)LhusDUio|8%v!CKl^P6Vb2H-|8%Qi?1I
z$Q(^0npQ<Ic`7l7_e5ABNvvgAm?)mw>m&-znMk?vQ#h$PRU&Xgl<Z_~n5NEY$8o9^
z8%}5%!EovZz7IZxtsMmv;P=X%pc;_gOd>HVndT_MsE!g%iEM}BK&8@fl1Pqise0aN
zH!?0Egi#p;Y7+aJYJmr+XiCE#czG5%;1H(-uZiFxyo?&MDToG2FevcJ`5lUU%Q`qc
zrRpG91P)C5oMk_CXloKhKq$knQ%IJCYE%F=P{bs_rbLmiQ%M?CX2P5_>3^NYEg9rw
zEJ53wkhGeXP$8S{RC2}EgTQn{7kW5~VejWjPEtzI$|YBK@)#13qHRjdu~>+}T#EZR
z)N}o_#DbJo$r6FY$tI2>?Hc$X$@6M$gaX}H%~3JOWuLV-tZCKa4a{8`rRRwFMXMY)
zzJn}e6J`a8TqWfJ_5$T1RH!Kr+tlfH;9JqSQxed!n35#;R*b6GxW$%)G^8OUwZLtY
z^KQGH#YwxN6XuYda3;uhGcwlwBqk-4@TI{BjAU+p&giKET0;_Thbm)7(UasXW!$_=
za+1GLDMpEMB`5u&Ikf~wtxy@LlEB}jtRNZX3YFAIv8~IgrKc$z*(A_pm~AP;>5CYx
z@Y#iFz%vhJ(f+TpBPxkWQ3?kxKo{iAXcdj>-N?J*l1D1qr(ueORYm0oJnxO*(6|CX
zA+RW@e=_-eFhU-6VeeAffcr&QrZF&pXiFxIK@mhqco>U@UUFT?nlQvx$Z%d@yW&O#
zYT9fyAb%vybV?;ylJFRydgGKJu)@IOa5?P#YT33`)5i9|FzHn*49~2>3u-pCZo8S2
zet|vf=mz8oOiG`|h*C_N>`%&@;_ILa75I_99MHv4K?U}~upk3va>Rm6(sNZ;VSk!X
zvI^BZ5!Nj15tDoaokGe94em+#cEM_DV$%YvMR{kEh8fO*(nRE$fH)}o9|k?fsZi3`
zam!`LslfF$?2_)cHQl1Xwyee^mnBL%TChtYJ*p+A((}93TC3Y?d0sCHLndz4t(ll;
zl#1{m!8Wix$99$odS=C-th|rL+MoC^*X}M$@|+Ho_RX5PsC1SHlL3OdaIgd(sF*e@
zz$`eeqCwzQTnBe53~5kAA_jQov|ZgK>3Lldd6I>mDi)W0QNTb0nQ&M`7UKx130q=E
zi#sjIonq^Pe%x|}zdvCip^?479&nOpAsgNbg_0n}G;(_g2!m4$QZeC4O%kO5&E?)7
zrMRY?`|-IO5?^A{^j?A=X8)TuiL{sk4?KnBjtxDr9krs^zO4j-PFP%ALnW?HXgD$j
zi3<raKog3eJe;|4z2vFrw&5C@1?!CRENRTqlwwQ{Ja2d~WI!qg>j0a~TZ_V_T)stR
zc2xQb{pQ-#)2z;Q2vgRCX5>IY!MjVKi|X}ywdz(YE|?xNU&=zL3sZv{PZ<a{^?kq5
zn1Kejx>a0iuhXSkSz>e_t|2ZUaV!}|fev@V%;h@nW}1!QGNFeWGgDE}2s|CzWOArP
z(eg0z#7JK*fCdi`sw-ERlFcT?9!}GeO<l9;Oehs(Q{iZs!{4C>al1q{f?+D>oRj2R
zrki@HTyacnSk3?>sUL-Y6m+|dUQZ^_4#UQ-yOk;h!*CLCyyIRFbQoCy&KeBQsMDG%
zm1^Zuz2aDr@5B)lc&gYAjRDOS$FeHbN~!G1L)pmC2(I4ux}9FzBcNQLqFyoi24wcf
ziI^$GW2L1`gdHd*!_Z-3EQ?@N<`s@nXT`XKypI+89L@gy$PGJsS|({(F@2M(*u@Nb
zVU4ozg@~$Ds>Ag%tc7l`tM%kKibbA|Bzi&#r7UKvfD@oB4ir)LO+eT%S4ug&5}bRx
z)5X<N+=R=lx#mjciU?}i!I^1r!BfK8w5hI*@VZ4M3*iXGux)a-yl}w@5B^nElRQ^)
zuqdrgHTq<qk^U=Y_=*!EHsoX=7rU87!M;xNrLggF-wiUpGuSjXJUv|xEjf<WFfzi>
z;t@ER5K6+pEgWQ-kitb*BkdSBz>5G9N0|~*x3ouG1VaCdi8;6$k_}XaK%Pyiv7UyT
zrs)((iD71tkxv;a&8@<|q8Mo|b0Gs8d0;{ohd5NZ<cyDx4h`2!wwWhk;J2lo1S>lB
zyP@AnsbRy!nL?rUI&Jc{6cwK&vL&;ZY7OB^Z~`qi2yww;R4q7)S`r6S{#L)+_S(%P
z>}Wb{UCnjNhN*{%Po$GDIp&g~nX*NB7lPx{xPwNeP-n@lKt|ZMiyIXN0+kE)Cj^TE
zV<#j8F|v+GalsML373*$d^Yul1qqcMciOF1w+(R<Qi5Bq*u+ECa@DaM-0m>)d%Y$u
z4YI`dsFp1Zy)fw1E45m+lBWShoKq;zvSn7W!Qf%YGz%W846W%<F>qKJifE8Q$c{OI
z+eV4#rlG%ivJs<5WbBP|jGEl|m<BA6f=EToBNJ1isRS|Ox#Ru7X`w0QJs}p9!sC<X
znn?uT&JFlvB~~;DsTxT?*K!<NB^c|Bq6c%a9+4kUXqY?=N-oj@(p*|yM0LndcO9Ih
z+><!4opbLyXXUk=lAtu;jP9nE7wHt45rH{wlod(AlxBc}_jE{j9=DXGB%M{26M1=m
zzBbJ+B(0Vgbymb$l*pvuPo|I+ti)pAcS3_iC6&>m$hm_mAl8EKLQsxWa4P9klg=Pl
zq8d(sQb|R5dddb#+Rr^R90zyhP;eeUp`3)|YDjE4P+@z&UQy_1Mu8)#$F)GhpyiHb
zN%2!c(8YUQ$0?7DsxYfa2q(p84~mvh3<LY*I97eAM!^e1q2jG9?okXd>UCyj8&ib!
z3%-d3=71DX4XQx{0fHW^JlstVYDtv!h#~TL!e^F|_iUJ8+u50!ofDg8rnbgOP$~@>
zidJ&Uac29G52rh(cs)GB5}ZlUa4K)*lzhVI%&?KmrP2sa-+(1d1&NVqI+`)2sP)M2
zwvwrs@`X9sNiH1H8Wm4b!7=58s5L1T5vRxlf90MZgp}8!xloV=l0${uuzTPKS-uDU
z3wqsdv)kr4I}GfsR)a2F=vW4HCC;RblQ-;~wwDvb5`!P<dTd#F=B7OUhP$IuF&>(W
zq!aLC&H|TArj+8S#F=D2cs<|4UEt6lJrCEhE0*WsO+_e`@?4SB=ZC%ZqloWt;1zd=
z25+(zn~SnOML2V8*x@qC=P(JSFs4ac0{Naa8TCz2$p$L}+OwQ{>BOuhxesg+bA<_E
zA5x<dPwBw*=Ug=k^Bx;+neY=}59L~?-3)tFV8PiGZaI|&=Aq034dqyD3%)jG>Sv0f
z;6yG)CQ{2Gr(r||2B8g87+=$9Bsa(7s7-@07)UoN%!CR@75U8~QYBNwmP}d#i|5M_
z0c4qjA|wE5f2B+m9f=`1)OnLJm_KhSDZajOAcP2Q6>~Y{3s=fz>}(W;cM8|frc~!j
zRn1A}Cy}JZ4pos^&=vSzB@ty$_!c9Fi^Vqx++ter?5PG7c3_f*%%~)jVQ!{`){L*v
zf-u#3fnjxZ0z%Kpfg|kqloEi1Vwoio0hWL-gE-S<EjEl+6TakZyVLAJqf)IO&d3Mr
z60{aguk+F*1Z9kjE~wX+b~?>YceV@bkJ57~#r;USnD|jNi{`gdM>o#4j+@nKP6Zy=
zrp*m<D#cPM72#$vjqvI8I&ny9mb4SiIbm}vrT~e?kvPijM84~kEVE=7t|Y_Lb9KW>
zWy6m=u76bFK$V;-Tp_dDfn0^0AVhsw^_l3gVH;RCDEcXhS(-^cr!^>Lr}Ok^9{<h3
z4Z4HujR&}LzXvxG=VOS;Mp@<uUZ>M(G&(cQS=P&8rvq2B9g%AuG71^<mbmS^GTlr~
zS>cEl@qDf=5)Ps0<e?n2!JzXzzky(Ud@j7piYjTA;}q9mjYF;O0-0W6RfxmGMCo=U
zoL55CMLxcfi=K$WGwOhWPeh@wi~&ToPOAk2g6GRn-Gu0f5DJ~?6)H|83~90)MeBvo
z$(be$Xn~H%@Wi6_K^5XeDXd4HyGE^9#dvOpG*cOa%@Cr8`H+6Atce+6B_*F!C_|xe
z={F(0=UEZg%8Qx-ZnwY{BxJJ0nbbF23){FzKINiTOWrkXN#<$8!e-H^WQ6Q>(%UKb
z3aeaTB09wAMsXh(ff-X)5OyG8E5$)O^qW-l)@^552)nBi)hXC5DU`ZxcXCR~l5eHc
zh$|c~$nu1TA8KS;#{TT|WWvKhVHIks(QdYAx^kQd^$w0`wHoks!?f3!oecagY@~8^
zd~|$C$*l)Lk2s1lI<zA~571DpG_&CDS&pj45a;kYDP>Ikqthgb!B>>chmd#5P7S=)
zYR&r8F+&-uh)NR(I0Gt_<34fE>&Y}-q1W!TYSq!Paf51f?Gns<(}pUy@=imgR0_=1
zDp9Rvt5yjXrUq%@I8Y^Ahe%l=HKU-7R1{wcyN0qHQW4KrgbAq>;SELfOme6@=9q0j
zi8z4-NFyAg9!{$Z-s{46?smFU)02(aovr4K@3+a!;OdWzVU`LrQeuG&!z{}R<g#K&
z3rxdASf!#no`Zjs$`RcIAvs)Xk!+j~cgKV{SLh|2GU{)lb54UikU|>WitFbWNZIP5
zGM-!~Iv(9?uo6TxsV2i9l1^CiC?eNM+K*tn@g533<U-|e4FT5?aAO{yhEiM)N5@ru
zOvT<5?2+esoC~{KVLT=FO=A&K6~>{cWTO=p!*p4>&`nU}UZc^PndU*>oNUPQ{t!V5
zqY7^;<PlJ!<Db4kRYcfIz!);OE4m_?WbPBSaAt+-mK7*H!wxh%hZU!4(7JvUrXtA3
zgH~{Xw3!(p{3g`o*bTjI6m&g!M}Cj%Z^#@GIS)`vtJR#EnkGD;h%S*jgTRLd<R7K9
z4c#icZlzY8ZA_>6<6h+FxoVqb+;OPN>FJ57>1~b1WJ)vY>}?a1nxh3ttJiDeTo;Zl
za_rh{WoG-t#4}GlvT4)fK`^V3JjL}wv9*VWI>RFiM@K?fjZj|T{v;-dfSH}slM@pY
zJGS8-+oibKi@H6(JGua}1v`t+54mMaH>t`s!F{(>B?+Tuv)RB)*e*?%z_i1|vq7RR
zNWsI7tmr8`2w4w;JPN(~P;Yo7h8ra7wr1o|OI;7#9LuVq>Tof#C|8r13?s_<Q;(R4
zxXUzcwuq}pbH!UMbS0MH%&t^(Vu42U`I!dnr<Ip0=?IU|3<7^aa|w+3nVH#kYX+Vw
zELcO!V6nkq$$2yq=W<DEQ#^>Q#6(zp{8A$D_40m>o;Z+ioF=P1k`#opBzzNcCsL98
zPela`&YAN*R2WBGOywnHUFX~q#dVk>l26r^pa<Fn85S#nA(Kx?8FZb{4GFg^<i^BI
z%>O0hP02;}5?T;OXDsF(ic)TlzKB>T%_&qlnMYn$;ism3fmh^Eg=0+R+Kh?=CQQ^+
zBaSKHF;rDZLPgY3h|8q{_IAUnj~;)<xiTYyN`>>A_wQLT0-QBiCiQD8a*;?WN)wB~
zEvw>!-HSl2O!^Ich+CRjuB4l~1sBLFz{`rt<f1r%BAh(cm?}{z01>6E;WcJ<_BN<3
zhyc919Um-6qg^GQAkO(BZWqv0Y7Srw8(9cFt^|Ocr7>a!$jQT3@I+Xg8_12~0+2KK
zc%@XYRmUy60$x9C)gs?Ng*Bn*%EWh=(0q<tc4+dsN-n%cAo=8)u3r4AV^@2<7H*EJ
z+Z>!TU@qchXogIlQ|lm^%`*EK5GrvGKA#7xIOdo%m8|2WE0sC~h)7Fvf;EPJ2!g1T
ztMz&r9u%pssue}0m{GY*ZbQp5Bj!LS_3X1a?B~_x0^NEy$Y5bz?J9!F_rlof*J_JI
zlCaG(;eA0)hNLsen|$o?r>3T+DEyEGgyl&dOGZt&oG%JEawVE6BkIDUDL|BDlE_1L
z>=K#Zwgb`^=++cDOGJ%9F%v0eVL=$ps*tc0btKi6<RX|WitTv1Z*hHGTc*<ZGaLg-
z51&kBtyHVAm6Ae=Q<5}QvPcmneB9O`Q-vslv*Z*ogyM`St;qoaO{5T1g;Nh1&Gut{
zND5sk7f?}RzuElDWzly<wRKbkq{uv3sjmfPu0kcbA;K|vN-@dgU4Q!N6>AQY25YdM
z&zgAk(U)F+gGB)hvib?@0rW?{3u!`58ZqaFpt7Xrhg3&Md<em+xQ;zMR4J9*obvdT
zv^I<qygSI9C>9}G3N3-|2?#<VcqAIOn@Ishu;nx-_z());<KtOlH5Xc2#KAhavW2^
z3pqOwoK(BS^Wqr0P$&s%VC#pNL@gckoz7`g8qiJVrWA8xk-u3ZV0jKja;qqdfK-$P
zk*J%48l=h_VTcp=Dx?M(s)oVKM2#L*9tzZP67g{m+SSp8D-Riv)L=c|HC(GKUAO>*
zr^5_}vVwIg`Vl0qai-uCRS;9Y1d1`p{D3R=DNRCkk!*)kB&k%Y)`vZq2EI?Zn}9LI
zV{WX0kEY})d~Q_|!>m&nK&BUXA%|=;@f@rbm8O(2peDij!WRR}`2ofDBx+?McRXTn
zv@D&Q)h^7@qW(^d!JyQcC^V&->Xb^wxVep<OK4i5!l3t3F@TM8`y5;;CU_Tz&XmGc
zlelAFiIqf@W%3|3stHgjq$-M%Xf!;|&+oLY;gJDV4c7AmC;*jvzOHlG2*sl`14={Z
z(cO|<MAcIP?Lm2j2p(6$^}=Z?s!hdloKm?yL>Wy#6d3;OP^RpRP-z!eZKmAsMksn|
z&-1;AnUoI?rj8jx$%4IZ8Spb<`Q=i(P1EnFK}YL#J25pqQP!rYa}`53x#U~~K$N2O
zgQJKXZ;ZK54UCe=JRFc`MfH0s<y{jHIhxF@$aQFiGcGz-6cHI^KaHz+)RanDG%Br9
zMD2kr`B9>2S)R)Sk{Yb%yFh#0_D;eDwM;oP2-?CjxG_lBXd(}gi;#(;WjbfBXyPp)
zjmdN6ad7r<1op+Um>o;@_mcjMbCK6(=*=|ekPop_CMr&{j9Oq4a7@MtNDBGjg+`+U
z-PiR3iX>AxDHnzm)duq*-{$<^zPCoWo}x)Z7HK;Mr{Nr2KLR5R*L<#+NW@ndK#uhx
zL;gr2sVUM!1;7C-LyB6`@0|MqDQp^KhACT;G+@HPdI2l<JF}4Dd1NNO9tBp!T?J%@
z6>vx*dLkky9F6CR@@%>7A~_MO<up2F>O@VMoE4>96s;tl&}Dg7Nlk%9!A#7ll2l|k
zL}COQvsNlaf#-F*H0hObM|Uw=zN_p;nG+IHKgGuRK%F2Bb&IMiQtqM3#he;hG;9@i
zY`@5drHx3Z?CLJbM6rQX<b?|6rO=^nS&l>1R4$BY7{GDv>UK#|2K4kYTB5h>g&_Do
z7r*2jNj|{RHm2D`d72mjR8U~(U2Z<(;>tP2vFijx-B>}Vb3OYKSHs9cwF=gfcdrbW
z`Y8aZpGq&<LIgHGcMwTMV1^?xs-8RMP_<I4RH87{1aLPYz9^jT&($<m1SlZEx#zn&
zvWh8*RB&qGkSW0r$axa7S*&oHMd-Yu_oqm!7dpM4NtjnuE3P^fFL2IOHS(%ivE329
zHmX}L4W0=S(=p|NCVaWDUpjl^XQUnXNLKB@-V~w_Z(2L(we{0Kdf<+mcRKBu=C|tH
z$;Av&j7-|qeMo`E0=-PIj?^CwILDr;P;R2#k!$F4c~^Nq6;iVKn=_VSUmsHSk7`+V
zx#XGzgQBtq7T{9^)NNYk&`_Q7gq?0r<N6%vA<7c5mrCVJLCB@FDOb%FT1_09ffA%N
z_F(O15&Y3WPDNrwRNiu}NtzXTin&A&Yr(Xy4RIlf=o{_Bv|-^yM#jQaugUIky;{~Z
z+fYKy(he*S-hKDo8#ivO)oRBbciiys@IK%3)KgE*AMGFt`E^}CupY~O_uaR0<;tO<
zq30m_oDq6n%ooA;AUQklAX8IQ&y7Tk@4fcgYdf9JS!bO!|MUo|>WLrQ>1<|HsSK6p
z)}*q*u0GXOXn9PfVUpf2juwD6f}lmtitB)7ttcs*lgaqMH<>6#E*&r?1OYz$@cK@>
zWm#4c7i4o#u$sblA0vz994{oQRz;eg0k0(Lnr9O-C)BcxJ3NAjdM>F3oBClDj)~?`
zl7$2qm<T<T^#L+;L$6fp3l}b_)oai&3Y&eRdoxLsuIJ+!$9A<-PCb=#$<$;fiGF#)
zjE#A)St?rT`XN%G$ar1})%C@MIz<tns8D87K2Hw{D^wKc?n<lEC5u|KgsX4Z6)qYt
z7;n!l*Txqt85><NJi5TP9c}^5lmj~V>)w0sJ@n8+8;!;zk34eHNhjTZ|NY>`+1Xie
zCjJD0-gx7U_znI9{cYa7dD*gMx8HvILk~T4;e{9e<R?El=9ptvtXP5ldHnImaq&3R
zh7B9QpNkePDwoSUckUEe<M<%H=vA+J)siJkF2DTpqmMp%;lhPiTye$m#~+Ue*I$2q
z5Ksv+&H;RQ#1Ti}P$MHF)6>&9)T56+ic>NS<J;f<HVEjv^Uk~Ks;kaC^Gt#H{osQS
z?%1*8^wUp&^2sN0kYkTM_Lf_285<h|v*F`spMCZncieH*QAdG=?z-!)6HYkc(n~MJ
z(eS;vl~-SVH7*Aaa3Lq3d@|1So_p@Wx8u9;5}v`guV25uQmK?mrNxUE<4jIH_0;*S
zA{*5_j%2-*#ePd0H+045ZA+3k(;Q7RyIEP*Z9Q&EQICk1^1_Ci#~^XK;kql)$Gg;2
zfrH?A62FRMmSxq<wVrI04&aRj$1PfRknelYIfWXSbG-!24tK*sfhocll!&hk!=w=t
zrYY+xr`bqxsyyK(;ljWuCXP^x=xN4?p;<&|UaWE$gQH+V27?+J8gok(2Cyx9stQF(
zMYI%)m5Z@~yEj6L!}p!F|8{RWFZ$WZ6;>5csw}IZi34@~?|%2Y-0oEZseymMZ?As!
ztMSam7heoYUA1bJZQEP6Yyny0&D*zcf7{#M29*WMUcGuX*b?V+<dH|3ruofpeiIz>
z<~P3?Jn+O5Pk`B8^P1OyYQb;dhoAlIXLvs}DmVxHJTWnWFFO42!?$kT3g$WIoO7DZ
zCcXs<8MKa9aX$D{sNBiPNifFiU;q05`mg`$^?LX^@ch$HKmCq(yyJlf9>6izty_mT
z;~c<6U~HT}tet0`c?Mkc@WT(|qSmZg({8t+{qP3-30Z&x;u7#AUfQ;88{}H6)dE$4
z<?va^1xOQ|!<~2D2`2x&-}^lXn#(S`3<sRAGefU4^_@4H(IiRK@uNd`MLP3@9QV@7
zO4D(z9Y5=hygH22veG4NF)*85&fW2Nb`#tdy*viZ32IKpj!T}pQm!n)lTe9L+%tj+
zEoo(bQ(kcV$p8G_fs(l0UJq1ME|t>xvoUv--27Y@bvHdd#}4v*aH(B`XC!&vgxY?^
zkCYd|pKQ-Bmy0d}iofvm1V5mnNB*HqNGN71P;I(c^ak<s!d7u?arELl_Os~S+-k<v
zMG-fi#RrzjaY1LCaRz7+stkK1SOpxicI{g640IYe1ax`PMHhi~B_6LQ(6yH@Uv4rS
zAjlUg5u)ygKl~w78J+}xUUJDLcplt~eFrDQpd}RQC<0^SBhbAdbO<=`;Xwx-1hxlz
z;0?mw17AUNg5SU=_!dC~cnORFh5<_m6k5FMI1bJbJc%y?4})XDgwSvJB76`kU5qz_
zfB+j4h#Qq95@ADp;9~JM9O}dqPsEd8ImjLCIZg@ZhL>=exULqjQC@peCy%X2ytY<e
zNSUP40^{fl)fK1drO`BsrJ!L{#*Fc``Qqd8e0AAzR%u8*<Q!$qdB(DnR7I2H4h;c0
z?*Gz84$*2$OGm%MKJf#JJ(6}Cgu?m!XR1FpC&hhA+V#T_qH}BhOU0sAl5qY9i>HVd
zgDBiZ$8g!`>0Q)Z5c(dZFM5~7;vr;lAIOgn76j^_{n?+15K8eg*TH-sS6cj}yMFe!
z=Fmsy>P~U4ROx6K2kO>9KY+nNogi7T$EHo2prAnOPzW$bL4`2YK=jZd&~I;g)0;HW
zyQQj2moB~LnroKx0<*#P!>0~D_+T-$0$dFhheP4u)oK;S?N`3?m3qB?{`u$s=tn=o
z+d%iwT6hC2$s2CC0api058RGVfr~swJ%n_?F`=noK;j^{S-5bp9F)>2r<?+oSg>FL
zY*Bm!e}dnjsLwt3T(LjkI>F4agz;POIkY`aUI-Cz>`gb_g#E;;u$*z)qTy&YFBsvF
zCU`%16>q>x_#n<<H(xQ1x_5tDjoP_hlKdHX?`Gy{oz3#}<I?n#c|>)jdLFB-XXUV?
z_I6}j?o6kjQqs_vek5)0$l5!Upq1}@)bJ;wAjq0qw2fCQ-HEKZ85}5uU8%g-J^Eb-
z%KBm<9;!6DEPVk~o6mdjA{irp&Ly`gasTpNkk$~}Ad~}Wj{brRb{!}Z{PqjJA3O>6
z5SkM^3nqkJC;YBo<m0dvm+*R#aei6;C3+A+x3%-1PqUI{X4bQ)r&GBy<2ceF6vAmB
zRCtQ)`MOT^=xMGpI+iHYNF_pWq;}mb@^r(LR6U6zIg2E-B5P*W*`X{tZtVS6A24&2
zI(|KBo6NG8Gm&f3VC`oKcKXHF2(LM(dL^%4{Nqr<2P72n%aw_`;d#Aq(-yU|1y+i`
zztaG_KKFU{-_QpVoxp>5R?^(YuOOujm~gP3$1+TN_=0aX9==*}ss}t-uXxSM5$7rc
zCLFB6dhRv4_DuW?_TfO<7lSPrtic*E;b0BcfC&d{um)?ugwL_E{`{W78m#BF1lZrp
z|2$vrftftdP1Ef4dMUT=4+v|pesS3y1c4}T8ZhCDWkQ4C7;~;59q7ZsdLEQx(adV&
z<*y810VxV>qQD3o5Y}KlUp^d|qX&`?2P8FE|EI2jmo->}HDJQQ8ms{m4%T1|)_@5I
zYp@1PI9P)<SOX>;tic*E;b0BcD`sU`<~WWh<dEi}S4*58)OaNPE9F`S{e*+{%3Fk?
zRxUsN^wYL&FI>2g#~u~cR5X?-O(!QOtJNx4G>+q!f1%ZY2?y(yx4>Q9Zuhar9uq)S
z;Ixe!H;M{1JhOD^(nh1PY15{4>(+rwX_D@M2?uMi4(zflYyJB5;6q`TPESvR<!BUA
znnD4NjEq1@`o4eIVTTE*wE+`8@1+tJdX{GKD{ce@fvfXi8);wYvU8JCr9CD<lV_f#
zX)M6a2Wy{ezE$aY-th47si&R__JjRdsZ^FNTc+!}0CB}LhaP%pG5BR3{G5OuoC9%e
zx7%}Wq_ij6?|<*5y&ND9c?6DZ=w)4{M?v6es$&|G7lcU~$nq<OH1jO8t5q6eysuXk
zem>bN8kX~uPA<uvcK%B16xoMR`K3i-<}-|@X|O-RZ_s$)Hy$XTh>;t32C5Qo#)J9p
zqF~Ga_>ceS^?IkAate%9D9<_GdkI~~myiirE$|2mMgv!aaJJ`f3gW4m=A%&(Egn7f
zpv7m(xzy>kUMZ0-$F?87{`$+l_@zpvl<sv?vrH<RileDXwo6aaJg_{i7}@E6@KN`O
z;}Wm8w-VhoMd+7B-%{0*VHLG{xx63qgWluFlCDNx;zv;TBuZ>eRu#I2IL(8U2VC+D
znBDI)-C>@WS6oaVI=+|zD2Sk#H6(`2_9w+;JaJtt@Ywv_nEzWmDTeupTK~D{1zQSc
z182fTT)A>39LN<bRy_ISlXwX>t(XodSoBxR9Hqg8ipIMZYnsw%Kl0e7@5oXXM4dS6
zg=uSN=awxyuUoz3y+gHCQSARR&SCxx#y#3zgq@OQ&yVyWkhk7&edpSr4EH%{{#}h|
z=Bu={Y$k<eO0y-UOwx7LoDPy#pQIgqLb8|m7v>XWC5=qpk1!Hf0jo^>+39qi7YeXt
zNOw)9lYaL4Wjc?SmG_dDnQN;Xo7w;SaQGW*v~{Cu5J{FPbyDS$CxT&1K6PBH>%?qP
zCWmP@|12{pEthD7Q;W>MT(`;)xRKYgoQkZ;X_!V~$8yR^6vk0tT9$6Y9-<jRagszq
zKwHEYGIz7Yw#<#wYPDJdVqE+gz>e}f!E%n{%$)`}O$^mqvSbOE5Wn#$v86A0`1GY>
zLYfYhCY>yg;?y&xS})kSY2s$fSXe17H1&!sS+kASt+#&RH7BU&z5cJFSU#{OkAT=O
zm)$*{#~r1co#o|fdES$4F(~yHIkL@@CG^o@E%5Q!_dF#@WYbK-z%@)iildr4wqR^}
z!$zZ4l@wJDd{x&1d9srkqr0=MaA5AZ<Bp3iy6B5v{34`y(jRG#$DlSbAOMdc&P%1z
z%*@PJzxvg4&N=7A6Hn~Y2-tj2U8j<+vvtK#r6kKVXfY*|G+dkf&~&tZHhtqkhN3I<
zOq8{P%ur;z#5XI@WJCVU9X&slswK<M(kNFS*pc11&3COl)zq03%$9WmWr35cQkqNZ
z+*iA<^Mfm{act|?&NwBLrS-Rbw>oynqE)YY;;#R6+*%lP)}Hv*r|-You&PTAJ@KI%
zZhPq3pV=iRi&M?DPk--Q>tiE<@9!NQefZ&rapB-Jfm!~wuYK*h>#jTV%rigqp$~!I
z%4NEJKmPHL@%+<IKmDHfyyxQ||M<kj#4*Pl12?i(t3CVdvnQNz!lq4|KKjv*{_!9G
zG4A`X923HJ$g-&2+YDnt*Ih%c=xQm5y)bzu%LA`v&NQcdzZZq7!Lzb--LNd0MFFyd
zq2E^sAV<~E-6-zD^tY`ls4k4!dk8j~D`@DB?d*LTpZkl?)Q0LfnScGpH&(7(b<uY(
z2GN7iAtNvO-<NFNynX4CrD+zw>%H%qFG}YY&P0s<+uiZYK{7)tS1x(i|9tHG-y3r5
z+L>q0Tzj1{T%X=PF}7^k(6PsD|Iww3e)E0J2kskMu}WHdROg1Pva7eNG)aB81?i6C
zpUewXg~uQ}@si*=(dZ1lhga9HU;nz-z3%kWPyeTX`X><9pZv+6^mrywLAAR4Oe^c9
z*&$V9HcGllV#-=B=MPS%Te`^yk5=D)uz9jCDSH0E_Vn^+!vC?>IAlyq{p_3f!_t)A
zf24W)rs#p`>@QES7gzGjp3IIK&#&2-eCm4df&aVQh~)o#G<^GN{g#P%ZCyTPT<t{j
zC`{GwzW>2`t@4Jm&Y)YV+8gfq!HTu7j=Iy2T>I6N-u{_547WV;lXYjlKgsg(gO{H^
zHhk&l|7pch>rQ;j*}84UQMAWhGfflwaPGP1ZripE9C+b{7v6W@eOF(7HD3C`4}Ng-
z%{O0i$tAP1vlm=&0oYP}<P)Fx#1&UuasK(|*Xwl}z@n;?lapJvY{5(5#$Q=YDB=`(
z9Jf`)iPCPz+n}j7>{2giO-x15lkl&+prE-h3~ssQW{}#dRjWouMg*S-KHNU>$Z+lO
zk}K_)TyGeadSz+XYt4`4Kx%?p{_X#}2!imq6Ha*M>1UR&SiW}c+AA-+@*Ds1^=GHI
zE*)8V-do;u@kRf7!CT+?k&ph#ibGaB^W=sfUv|Z1m;TT&tS|_+PwY7DwA02Hj@@&|
zy))C(il%OO>ghG>*1Y>S-osN-cZ-0hdG1Nl($}9AEnU)Rwnk1l)vwl-WlN8E?{D0B
z#~o!|osGlh1NR*FzrQ#6g}<GNeRX)mIsU}ve_gc)C8)gK{qA=Qlj*}B{_vN+^rg>#
z{_~GN{x}3V=xp`s)nEC_SN`!I|MBw6FaPb|{%!n;3&it>9(w4%|NFmx<Rc&1O+P#G
z_wSGI+nIjvt;X#;(z_<JBZtzzxYPUK(dJJ!CrOqrb=5m3llLBG{ms4MikkfKpZT9V
z!@6y2vZI%ViTc?)yrW0qGpYB@BxiM07>L(Cn_ROo`iFB$JKFh2ZVc8>rj{xnJg&_I
zIn9OM-E0}I*M-sH^@260zGHIZZQD1lKlu1}ZhPW}6^Ea;{<a@Fm9Yg&X_njYk_D!w
zFF0hyvSZdQUbCv(>n3p`?><8t8x8_^-}~P8jc<Ho>(;G*{nvkuje-CI`$0~9?|a|-
z`q#hyna_L%90)me`|Y<Me)!?wSa2!0_t8fmg))5Lfd|ez?>uZ>v)Np*U;(7quO<_+
z3l5(^R<q1&cW0p${b0s2p%N>WsU|7$VY}OmlWrVIKl;&+hKA~}D_~2kS+fR$u+!-(
ziaI^JHIeU0GasJ)wu#%OW*=F*@`7cHP7kACjt(r-+_dr8D}MN+r=EQLOP~M3+QX0B
zIWf@<dTUp&TfJuWv$t%8qWi*^zVOv={PSDh@RoPJ`E6I;c+DSv=ns}JUv}itM>QMG
zCCiq7>F@vXmK$&Ro4@<~um6v?kCet*-R8R0>puU*ziBpGAO7PH<4oq$TqDgMlBCy4
z@}{e=-mw1B6>oZD^YJI#G@0G_^!VB}jjOI&dD<!Vo8H{ou(8|gj904V(czivo;Kt?
zt!<&ijymcni154ax(mYo%U}NTlTSYR?Qee@&;S1K|2|~-+ursz2=Y&V`qQ8M<R{<q
zmbaX7#u=hU<eF=)k@iBVGgR5+D2georYv_8X`!wB)=}1*4oW|LN1)_s-BPdI7@xh=
z_^o5jn>R+cZw~+Snf&igw-q`6$W7k+))^-)OfERoD7i|K#ZOPmcW%!vdV}`ZRNM-Z
z6+=ppD@`vSH`DzP6%X@ELshbdmmW9y%pFS)JF_>lWqNW`(AhDz>Xd|{H8Qj!m@tDk
z=mi{Y&gH$P*o(<xfAv>?1+xVTAJ2UDv!DIg$36z$gDndFyy~i};Pv78<;$1joiJP>
zyCJo2yY041FTGS)6Gt9-<cbw5!~v(KrVi{3<`<xjUb1+;3Xe$Dy=ZE3<~~_c7LOhe
z+b@d!EKg>e&rUZsEM0K;>J_JN-7>vp%jP$}@r}nHfBe7w+rL57-FoY-H{Nt3HvQQR
zI~9HAzV-jlw#i#;XQ7m9y<o@uxzIcUS-Sbgn+(S}=MCppE7k8_ddWd6SM2PzKK7|k
zu0E1RzT9-(_4nWNz@Pug#~-@?zVXEiA7B5tp=mp|Z#&|MBge)TELyzq-S2$Ymd%@Q
zy5YtltNxwueS6vRRUi1!2jBl&zeD5R@_Y}epJvi5nTWk3&p%&Yw{|9shmScX7#X|w
z*4wr{_~5G3PMdl3iKaubmIa5e^@fKHMJXS2P(-=H-E^T)u+W4cHTZZ?bP^ABTfBHN
z3{D93N~N-W`*tyA@SX2`=Vg~&2EGNCLM#66@BXfcOw8ZyB$F)KnB3Ged>O3FwZrh-
z<XLbIOm$gFaxks3l$@#T^c6<M(1Rr3;b)uL*~d<>6FHv=^PL_(E03CL#m+x>hWXQH
z<0(%HQ{`QU*>7B>Jun?EcGZ0U&NGhh`O&K5&hNFium9P_$DI3-J1_Zou1L!cKh5uX
z^BGp&e>9lJJn<~Ld+xbMJOjeOZzw~&<Twu0BV-ep4JP`r#~urQ!;XpIDl{QB4G*9U
z@%!3quZ60_PQJAGDKD8%m}kmN<7q$HD9d)&p9BFeA3M2ZSD)JavrZ>Ic<I^49`@@;
ztU1@VT{wpaAAB%OEEuAK9ARF@QMmfhHAfzGgi#K?UN%%ccy#D^aDber^Fx|Yr=Za=
z2(P;G%GaKLDh$yu42MTYRxdf|FFyK-cF+HvcfSw*!?DL7vvTa95B~m#zV*#-ee%yf
zaqyvs8jzQ&dirZl|J%=f{`_D6^&Q(L{_4*^z3R}_um82zz2`j_eC40Nvi6We&ie3K
z`Cd0qlcga^di=`EhgYvQET?(r?X`vDPu+2cqU$qv+!LLCTJO>I;}vJem;cVt4fn`n
z+Z#7*yY04$wJQhK9|udn;r4)NjyU27*jmtm(26rNGoU0q15U#maPne|A=vWnyYGe{
z_{bxVKo9KY=g4(aex{jvv2?|=(X=OzjcYr4Bte2Soegp=SG+VIw$dv%q$eJvefDM_
zM(NVBa%5G?WbGU4!{0gFnD96cA!Wypsz2QtEhsC?T<QDk)AJ5B4y`K}KN77TQjQqY
zdVao#KG$?Dii@~!8U^KQMK_$Fy>-orZ+qsRA6o9HMoKT9b0S(hXM%2TpW!r!AqW@v
zb#rn`gwyc*{`>F8K8%fx;ZN)vxDK-EUGI9A7?p)>Is5FhJ<t2pr#>a3&DbkE19F0e
zpV0L7^p~9qdU-Kno@c72SKNcUJGV=EThrohuaQRag377mho4hAVdcTgj#G3P9#W^<
z);0a@Z+|;B5&Mf>+q`)*7X&7bQ<CM(Fy1{}p78w{ORuh6dQK2FgRndQyRg^4_s4&5
z+L@<EQ3y3+yYAor^Op@>pV&45;#jr%U{%$wz2=&uk3MGclErU$%bWZlT)1da7)7vS
zhlcBKc=H>UuUtN{eL_<;yX4{~ed@D+dE~K2E?u&0-4TcRp0~GvF(hevV)6$c{18md
z?Y{Ta9e0-SL6s6R_g{QbteaBV9kF%Q)bj`K-P!d@hORj3-m)0t8E){=M<4ya{@4Fn
zxpL(PKlnlL-bEK(1TP2{7mQChir@OyxBlTD{$X@<^u`-+gp2sv*S>aWXb93BBn3*H
zW5of)C_C5C%ig(Kf3}@|`sTnkl-Dg)TwOV8G|N)SHRN?eYF*D~Bl&HI8lSn-|M>OZ
zL1pO!N7*aN>R;R*KtCQkrVg9(DGQ}hOG@KhSM%RkZC<(|dLqs~a<Um`**)9i6ULNZ
zTkb@0p5|G9ntN7q$@Y78%hojq7gOS(_kt*1dGz^t8p9bq_WX~TMz!aKf&;O=Q5+w8
z-dUqd7DaKq2M3C&!y*@tXCRSb7R_;^NJ#A1u>(5>I)T)NiaY=O^F;{lh8u3cUj5-8
z{vi}2*cBS`r$7CvkYf1A!i5V(66jYgSufdEISA5cHeWf@ysuV1e8K4PWp}*fSh9v)
z3*tDM>r8?9fqhSS;Wmg^MVj${sicvQBgaWkQ4B>^;>4e?2UvWnj^oaSH0NTBf>5$N
z1A|eRvD+z^%Jc7g6vd)hX6}IPR@<-)%e3~HjswqJ{HGuJyTAY9T1l#N9ZcRI!6)}0
zgp#zFe-uSpS~6-nys5l58y^0*pF8+ZKjC%S^RpDVOq{I<z(T;!m0UF%je5N<9)pa;
z!0q{u_Xsv{oq((;*|SaQpt^>?gETi)sT(S)np-Lqk(A20hV7G;XPe1EH8o6f)08LM
znX2R?6}j8ZOQss8Sr}7!Q`uH=kY`$%rpcW!x7Bpju%1C^hWT8y*fflpM)U8!e$i~R
z{l!23Xu0IV3}H`CGMqBDE$FrEQWeY?hh14w=ch*FJoDO}`H^SQIr07PfB#?p<zL_g
z!jb#j=ROC66EB^7^2rxoc;Pp{`AygY`1o)B=5KD<vgOA={xM#Hs9L*r?RUQO9WiVi
z+w$J`zW0Ye{2`tMEj{(rQ#d9J2W%Q%`jt!8gVa2~V;c5~rLSKwa&oOY0y{s7gRbAD
z1h2HKs84{IdwrcFZsh!xq+b92McH2UNBA>Mv-w2%9MQ17U)tmAK%_kLJl<!m6GZa5
zGtPYTJ@-~iPDRuAncRfyHLU3)y4p!HRh3I6vzFySqft8Hq=Y86%eyBta{+uTDkNcU
zL5M&Mfdiu`g06#%00D`K>3ANG#f<2^$`Yh*oEx&TxFq$$R0xHD$^~J)%Rx~)AO%UL
z%lVSB(u*>@DfaTZNp-EAE)}=<QJ&?+CAWiAg$GemGAUnTD_O2|eNrUz^EF`lnb}6g
zaX$Hb9~d60iyUmRhd~E!A9)I1muqU&`Em!+P(0Y<K4RT<*Im&0*IaYW*T4St$;nCa
z()HJ0kC$Mvi$A~iwXfm#1s7a!$t9QE#7k5%{OiB|YpGNcYV)zj9usf=^rt^PJUonZ
z`_(L4n^RK;48kM{o^N@|%W!3RUaC~opL^A;ByrDEA#XT7hG&v?>lIWe`}21rOI_R6
z3=<E!9q2mc#T_jZDF-OS4}9PQV8w?XdT80QW%u5DFN_8Fe)tp82f`X&^l`@>_eX#9
zM?d(%53aoOO3>J<Rjc0r{`ZfMk3)*V1B6|Q2RnD}gq!n@cf3PXuDyh1YcKbi^{>1o
z7hM#&v=2SVx>25cMV5AXAvq*;p8ub>AN_LDTzb(xF~TDK1zBb9;tH5Kb7g?@Lk9DU
zya!A;ScCO*MVu^p=Y@4D;stxx{Yrh*c45;Bt9}p5R=7DYhjB53rryDNMd{UkiP9Wj
z&2?AIf6sg)cAp1%S&eEMbde6$U=5gXum)?ugo8C$gEe5n!5XXq6Asp34c1Gv2GP-%
z`UYs42(rKUL(NtB%{};4*uVo-b&cbQy2$_joZ)~8U$P~70zA(nyf976(v(12Bst4c
zk=@Gj?0JDciUvaJP|361DTyD;eM;SpV)r=yKB!q1-JiRaAMC%+h~J*?efWIW!S?Y5
zl05I|KNremx5~c$*}d2$Dsl|N`0vLl9Wdcbwsc+ZcDviRY)&mZb4#V5*Y)yTcT2jT
z`I0IbnGr-$sK`n_pC9&1$ueP+%>yHoi~5{C%2_V&;vjhr%V`hRly_D2<hvRi^L!63
zodY_Qi}D|N9+wqw-2KDF_Y}3Kb3KRho)RI?rF=Jzp8Ja88|NMs*O$*RVZPgLh~tRO
zm@iHWaM<0oC-ZXFY&MrHSt9UD2Tb^@;f^Z`m@u+z_35W~{N$QNzxe^J_eATdJIrG)
ze6sV<^z4?C4tj&*mf|GZo$vbfUoz>+zV6|BDQkkbc7rX<^L&m==FHSR6%+%%7W6F7
zHGE`q%BD~61zUo&iPy!6<Z^LBc|J$md7mBg-C^hC-Sn88@5Tki3H|@<eF<<J*Lh}l
z&rHvKU}i7}jsbBDzzZY}5<Dd8AZbYyC0djsDRN0n96NHn$!hH~w^EzUx_0AA;#k>4
zrFB%w)~>x$LX%}#mPAn$MNzbQN}_C@AOR8piTfA;bNAdmy<hhO8iRwRL=qrK;1!9Q
z>3My<_kaKY{qOzne>o_V^+FE87AQI=0#3RSNytXa)>Kq6v>X^HohZJZ_{7=K>yBH!
zDFT(D>2M?hRsv&q*IL5a6D2fzJQ*}cl+W6IzQX3Fp6;Q=Zl6ir*w*Fa?EO(q%h1rU
zQ=v?zV#26Ufo3w~!wBu8$BYm?UZ!PiW=EqprKS6V1QU_x%6l1&n1>OeWh5CE?TBbX
zh1?~^f((~YLpp)r%Jx+@x+AtsdbE+J97QQTw#<tnYGb^`9z8>RIC>1jG%<mrN@3*Y
z!W0x+7&X<hY0uR@BgT`wpdckd7sE|u5uM2ezB3d%O1xg`wx(E}Z3Rs+I5>Fr%o(*t
zgD*72@Tn*xZs}#<(;U1*hEb>a6cIUr@Hl~zxgs@2wuI49Zeps&yemN%LnbkB0yPE*
z+02j(=<>D4*`nMe@$?waq{mqrDi?F)7Icn+7|{r$Nqt8ic?90V$W`cEL&*q~Ae-RP
zm&suQ;=&V}8ZpOXV^AZRhsSEtG&PaSQ#s8j2xIF!0YCIeO>M1Crz5E)Nn+Bw#}eXY
zpk}OAE6ENrUr5oT==2(co>sGTA};9N0<EI6oPy4$X+<WRl(OUJ61efhA|rz!^yD#%
zG1pB>tUrY;jk-;vELA={>XivOB$Cd>1D$K@Mr{qblz6i-dz0hH(K&AD_$Q=CDd?D)
zqDQIhNQUGwcu`~c88c_2KheTCtdScFM9GXkW|mZACVSP8Pliz#3<k21li%;3F<G4<
z5JJsB!_OmdLP@1k)ytQWBq;OcwwHl{ev)_rf(mgZLVLFj%zUNX>~o~Z1L9p>UCqtS
zHk+-ku1;24^X)UUeUZH_sSoEzM{jeHy^dF2dF9x#W9QDDJ9+XX9QEGb-nDDj;%ie=
z)00m=3EkY&({uLh*(FPsfYpP>_Vx8aXR|B|2L^vjN=hgxOL8O<Wm%O%sZuDE;<Tg0
z#<)n7!66mg9Q;?za(I)`5xjDi=b2IVL^L=^BVI#R<a{P0t}o1a9r;{oks&@XWV2qp
zxuoxCKFcemO$$Lo(2U7s5}(y-^{on-m<Qn<ToQ={a21QiT3T8l9KhbrojWZS3k2xE
zfdeL!Nu^SK>s#LfIDh=(AA39=vh#^frvqXidg!5T+qU5%S1w=vX#d9^Pf42RqtU3E
zRi`t8%V7yeI5<L{lA=<N$7Z+Bb{i`Qtu2=l$+S{Iv#chY6?dsAD=*im)x$$RpKn;B
z)r{=lloiAcy_BkCf}<I>va%wZ%`{!Okm0i?OP+$FL&1PXrz`e&0K!lx_}fFrVq6qJ
zbr-nP$wXIAUu9L*0#8wXem=axIhg2azKko+KmWYf>xGC_RaF%g6+t&Y^2j4#r?7HE
zLqpKhE|&{N&+T^q<R?EN32?=2Hl!4Qa<(;_Js)RjG+GEQNqLwRC|0RpH5!4>G71KU
zaQ3rYSij<8Pdu5_;<2S6J-n=1n!a;7-Fky5%Zqb0#B(FoFO@Xl-9&*_vSsBJ@pwX~
z(<_yX*=*A4bR<P0!zjEJrL2n0@EJ5OU|CR9l$V#Mk<1`<`vU!DXo>>O1ObAq%=?77
zrMtV^;c(3S?C^Y<vV=k*0G^DK4G#|krFY@L%zT+p06)-9qtPgj8{gX4>)Vx5`VJi-
z19vDaES#sKbF07=dG5LAjvhUVzJ~;4(rLAn<Cx0HR-}>&G;}hVRDyy^iI3&us0`mv
z+BlldW(B2E#j+|nsXG~ZCBqUZsZ<Krkz$lHQkoU<77B5f7*PZjU~*Do<-2R#D@%rI
zNVEgV6Gi@#OtxUEWFWeuqhtH_?JvLl@;nIVR)I7CTEGU#&w>RdX0xTeqtoHYOC*zI
zep#hdM#5qI3MOAxRz@~m;5ZI0O*9(8akw<ARy7Rx2KfvRKQJ5)`Tc&F*3!~ac#_gS
z<YFqM7{?6-gYYL&AC=7(i-<Zg=!8n9l0c(cEp8weiA3)3c@eU|GM|ViBGKrzt5#Ne
zSynwTFaTXfHn*6ZGin}$cYlF?mW-IVue!-(b~>HD!6AdeXvwptk}1H@WHj{CR5%iW
z!Ul4nydgIZrxV(|uctQ@3gh%*k0+hZ1Oj23-KtbDkw{dh(@DEwCUIH76+-D77>LE=
zI1YRU#dP`>1;fAu;ugVRNTE>W=i39rLy34?d0RILyE*)cYq<RWVUCOCJ6x;R+~ckE
zI`SQPR;xy<Q80>hCJk^74-fV9be}ud2sJe58;Hd?r_)8;f!h^KGK)Y6y?*xW+4Ayo
zkH<61kpnQuo21{Q-tOw^0v&?+0x7*l&0sLt+}u3n@s^gB2?qm#z@<x<CRfJsyI7;?
zblO-fzNC8j3opE|az*{}<;!fNgT|8!c*DmZAK1P7{rBE`_wwb-dY!mE3An@UQ6IBs
zbacm#9WIv(QnhsH(yFQ|vbV{xW5+;~%x3e-l`H%E`%wXxf-u=^Hk^VZFa<bbx7(rE
zd_Er-7ru6Ob}m@30Cxo0Ag*?6Yin_FG0XxkYciQ&BESRjRUQ@t6C=BylY(Y}UYv}y
zo}L~UlOsotELpMy%Hk%;8}9PUU;YwYh~$c%BBDqbTh%vV$^3*N99j<Yo}x0HvocT^
z8Lb(Ar`&7KPQ{lyaFtuo1u)}XUERO>^*dEn3;+DPe+Kxa)2Uz}m}j;5`g=r%?{w$e
zZHz+E*Vhk@pi<CjJ`0B&r=LD^?(hEo?*jq<6I&jysi~=}t0Vgb&E)9lECS)1Z@wv#
zrC<>9jmlT9Tmf2u1bhHI0L#xm|C}@&yrYE+7alx#5DyQWM5EDCsl4&V8~6#f6i_i3
z3=W55-@bh~x1gW^7$b;kYiq+b*RNksKG)XPzV+5yI0byKx3?F!E-5M5y?Zwv<FUsc
z1Nbjqy!gczUjT1_Hy!{_h)x39aXTOfr;p!@^Q)Ea?ru;})g8+KXG!Vk>^gP&j2&3C
zn0)=+{r+fuT^*~W3kr)GPyOz<hmX387npP^e;_2#N)4+}v#KzcShae!+mWx+>)}kF
zYdnu0HyMp}wKXy?n~PHvz^B*ig@M|;cQ5SN;>C*rfOYHESu7TqJ0JlT^4z&|_z4Ik
zX7IlI?gKL<JJjMt*g90GuCCs=apSA6z6$s)U%q_Tu3e8l`sk)jn@|U42igwj0=Kx%
z>C>liq_MH_-h1yQ*uw+hS6t-&`|l?+;1@1j0Aoz0QlN`a3L7?TIDY&%bP8_0XU`tk
zRUrJvTVJWf#bK+(kx!-a22>mDKLmx?x4SYvUQW4<w@atfgM)*a46oN~l}eSU{siI8
zfB%I)7<}&8r_0OAdb+z^1)hRpF(d&^>K`7qI^0{fJ_(J?MY(vKgX7I{QC6)LU1FsI
z?lBjOLDkkQtN#7TQ~&qp|8IEsv9E31ICp(Qv?)j<+8V$kaa;BE^{_dhl%No6)~q>k
z;soputQM&cYD$eRPy|rHQ3-)eOPfmqFhD8V7e)_a`r(Hk!ny*DxGb<rCS*ZJfwAq|
zxBuohzk$aET){oS5!gLKcPTMM!wHa}?}1W${`AvNfnHSJxpOB#PAv0HsvbNTo}BD)
z`IQRU5e@Bzzgnr>m4*&1hQ!CBXJcHnrL`^13)xIsr`I-LY}IJg-+$>ZXfXo56UbDH
zTTNz@@pw9uftR6TSvAYXI8MRPX0tdZtk)aFWIU9Rh>QDJg4#gCavWD*SL=4Ue)`($
zc6)wp&GI?w6GD<&T3UcNGHC`pz!;)+a3ZV(&;^rKSy?H^myo<hvM8gg;8+6{V0XmX
zgP8(`VKxsPI`qyv?`++=74{961wM%niG!f8a0756YT|bI3owKFPPyO%r<^%+X4$f3
zcpf|q%%<#B-dKT}fX54L<92w#j>|2d96GvX%h!ztJ?;gW!=sMvwwp|%HPD8rjP@be
z0};S8K#cGgFmAon+;X|Sdg)Sw(Wsz>*4E1wTfQyNERMm_bUYq2Tk;~2D6Z4n-Ko)=
z+)jJjl@6QLn#~FY1+IbqKDAaS@EJUnyRa}TrXFMT1_SZNzv|neH_<6*RlEXeD9~@R
zxgzOAG&}kTS`|7@T+3`Q$nG)T3ylo5f|tTY&>DE(SUe6}7mvlbctWja|NR%cKtule
zzx*Yh7H>3x2wXQ%fh^l4(SKxq0uP3Jz5GwFJo3;(YuBujH&mQMAe_De8HG880i5ti
zcz2l4+o<CwfN;+{yWZIGmfdD+z0z&7T71L9fAcp#x_3<jsodAs2P+N3j+O)^hVFoX
zLQrx+_-}9g{AWLZqoSgGU^tLYa@kb2YVp$3jTioS+qTGX*S_C=R#Ln`tx>P6uYUcf
zuPW5Kf}*laiu>%d&wlvd{yU%He*NCws&Wrp<>62Ssx0CU{MG;Xku%@wAM!o<<Wpbu
z?eMg~Mny#hc{Uuuji4n#Gzik#+uH$4a2#kx2nIAGc^!Pli9iToN%qhM2$fPox~K>?
zrPJy7VDH`wO_%=j555Q7;`PZC{0(s3T%h7EkcYO*S6+Mle?R}+v$eG~kdPUW*!kE|
zYW9FI5)K<p#!Jo3AM87@Wa(0i*-%<qmT$MoZ746&flo__H<`GXK^O`Jo0^&ni;4z)
zzGNzGh7V*i9XfQ_;dGcx2BlgT4f<{QPH)A6^XD)0c6W!k)ar)1D_5@6)z^oDfhd<S
z>eYc@h*78-&zx$y*!HL2{WF?R!{FQ!hf|CY`0CdoAe2@tF@)xTt^C`Lom;=YrKqS7
z0(=YY6~W<=qsI;(Ir@X||0haXaX$~jn<`*6B)n^ugAnZlP)*r56GrEAd2(DT1cV@X
z0O9mC@2yQwJmnjWO`l8xAxQv3zQT)p^{20S%gZ-ydU$wv_?8bx;a(8bU%mYf81Lhc
zZHB&^?ohtj6)_{v-4UNh?wE7u&Xtsuz(FF}2S`nP?(FP@hepmNuA_V@@)e!ra5&_%
z$cKv;FM<@Ip>IqvPm_pG_Cl|ng;vflntO#Q6K3YtxdtRApG6YnP5xmfcNETb`_ZQ`
zQxJwwIQ-y)_oIExX7ep~+sG?7G_2UMbJx9V*XZ<m=(xE8!sh1Y*4Ealswx1ir>6%W
z;K-5jlA}kD0&iZg7fO+6CYQ^F`fw@$LUhK*AAgL_z$tJl;O>`}mI7(;MqmS*nwrRh
zG;wS#7DF$7^2sOF)zv^dy0Egc@|MKD++-nKYapDs*dMj(*+hmfwHs{u>lpCd#o)~N
z1?IP^%myWui$l?|Jn_4A_pBv>*VFNMBtG6#TwLfb*th?{bAR{@BxhQU;cNjRl+B?-
zhraWj?*xOvH{X2orI%jXzkffl_reP=z;~~!s{`InojO%hQ-kB{)~y5HPM<!#cI{d+
z3JQq6_~MHP4jedt{yhBt3l}bI-n@Cwo;|(2y=cDGt5-KRHum-PZQs5fP87i>0N>Wu
z29r1&KuAg=&7bWGS`DgDf>$t#>w<8yWc2p-_4M_7iVDIZe<GQ*+MG6<EimkB@9Zis
ztH`92a1=pYq1w!OR-;Y}A5yE;B~vM*!H|K^nazS>7>yQ|RdF$np=gzgRjQN{?Tv{p
zna-&1Y}2@k*aG*=w-0*iT%#EC`M~}6fys+A5YqY*hEZrV>KMnNImBfssZ{1BwxK6$
zEDQ#HU2V<&k3WI`37$W##&EWP5GoDg^7h+rFIu#ysHo`Oci)AXTCrk<PFfZXETOFp
z1_P|0-EK!sv=qKxzI=K4^5ul4zV+5yZnqnT5r1I}ckS8*G!_&ToIQIMn1tno=>shB
z0rn6V1Wi4D{5T9Fx;8H_Z#K};5}W=nHdK6hH*9i+SR(%WQ>QOBooAJ_POon7>R-8{
zL8sGpceY2P34>mB`AUbuVDt_6YU}FydJ^GKkWZ&*m7>4br`GChR<Jv2cqpV$(yUt5
zbfJ0m>U-=qbL-{yaM(`?bXnE1wPnRhqv^KTLuqE{yvyYzTAP<rcxbd*@KnElxS*g=
ztycL41{j4(rBnzvaU*~b>dNaaKXl~isnciHKls300pa71KfZ6@KHy>N)~)Zq|9)+4
zEzpIR2joa>7f1rkS3^SsnQC9Zem%@1i5dZx;IG%$*OLKm7`hKX{BYsIg~yH^TeD^j
zY$=WaoUo#})Rrw<$n+y_1d2NY!(Z1%5plgHXl^k}(N`ZVsVFPMKXKAbT0fCarO0g9
z)6YC7i4k32-#}t(;6G+EaEX<vbW)?%3=R%L_KZfoMx!0{4W!b%&1PM>VwK5kVO7eq
zaxWTL#j*;T%4)QUOoo!y{!F)4g8r2`wz%vokzm#8MGLElRRn1QyQx~VI2sr{eCSZA
zx03S@w6=FW`t_%mdOaaAt<DYJnoM{=<O<xb&aQ51nwLl44WpwZVb<h`6WkGm6U3F8
zt);803lCpdSO`?~c6AIUn1m)jPc5ifh1X%YK7EyPJ>^bO#A2M(4!3h2=vEmGvP+p(
zt0hwu_y7ueuJQcF^$)6~ygLwGcp~`@2P5zuUER<v!-E5Qlclt*JkM-^DZAm}Uzw4%
zv|c`W>hvGI@QrjjGkv=?-3{vruNJlf3ox4zNJ$$rk&Npi7f>qW>CDAInBtRWy}I0C
zxPf67Ah6|9i$4@er=oe5ym&kvjYZ)mc?t^K+AhUY>6&HB1A*c8_Fk1r0rn72BveW@
z7me})?<pyzvi#8S(6X9ZNH-LO)ozV(@hp`c9u#K+ES9`zBwScjtWq-PFElw_MS7h&
z81y?`u0%XJ=<|glfo02TJ>!ESZd^2_Q~<eLDHsfi^P(Ct)mlO-U`YwlSyfh4h>Qk&
z2NoU=+1nfW@?$n+Ri~VYK)yS=#$+_;^}0YH2vRl=!n?eP(dQ+l#U<2zqeuAbZO=7f
zih>j<Y_r*t%<vhOF`3QjlwYG(OVN@%WY=PIfV<-?lgTIuJj<#xe3qdZFqB{@5b*oW
zMgxA0$Kp6njRbZnV)2v-P9QBnWsqQTN(w{MX;?gVR@~4C)-Q<%hQN|!8Mly;$}cN{
zFi1vR01va-Y=EiK>j6bVTt^0G@L*ak{}uN(!v%4L+|4IQ!-AHYTTG#F7`MCoeZo0j
zMm?XgjU^PL$^5>&Lr8=P=F8!9kgvr>CGt<jo{`V)g6rfm5~ok?wvv)-Ev@!=O2&OJ
z9!HXINt=jXXik&`P!UhW$x9OwPM9i`4)6jCX}gKt1ORUm?J)T#+$EJvO>2<JJP2o1
zp?w4W=`1yvH6>Gte51O|uD`A^oFFk|&*vK(6_l@bGuc*dU`^K5xcUT2$&2<`Aov6b
zL70ymIdb3q576o4JG*z6RaK?A=*ctZp56BC#pT6co;~6&P#k1fVZvEtjgBBp@1CLa
zAiT|G0*b_ZGos2*U-3n`B!68HP9FwlVZp17MEOuzaZp#I6(_5}7_HV7D_06MHOR%*
z+_Nq}&v*kPnOC!Q&_@za5#~X7cb3U))1EIfNhd|EDK(E0)N3Gk;^}bgB9W+=P*|l(
zrcz2J%!yLEkpTDR4sR=793u$^31qlv#N{e{_~D0PxnM3=uUR`mw~;kUWE)g8GhSa1
zWH(c|hX0wX5P`sCG9~$n^OkVVSVB?S1Yt0efSl-9C97nV3UP<NtUx6*JRC)pf=;A)
zE(!Il;L~Z{cxd%>b$<56XKr^<fvZrbQ?+;Za-m2l6s~VrwQT9)JGzxJ8Qx+x_Ye3+
zh@x6ABmxOv6KgGvD{bLW!0B{KhKo-olYncEr%g$gEGs2|q^au#<>uN(G+i(x4vo%<
zu(b&#&8Jn0xtn=~7noFrKXGL+Et$GRI%_kq4wEJvPX%Ksr&+hau1`RavNSb*Fmg%t
z^3w8(R4NVmQ>$5rvyiMau-dG*F(%<=+`?SeV71y<wmlY$i<?fFOwr%J(e^KYyyQ>+
zp}*w2JO9tW8f`YS#YR&?C>nFx@*-Sp#ftjD{+`o~%}W<mc6M~~;wDYPgX_OmQC9jT
zaoF3}7maduyM0bX%;c7Dytb~P?1Aq+@*`?=J#K%0KPVR2{c8lJ=`@KOBvHJ?5$fpZ
zfI1}0F9rt(p%F;}wLl<n`t<4Q>S}o2^2(;kODIToHt0NZ)`VplGdeyaDQzfUUpNtr
zrR_#_S10E-Y4dbU%K*o!l(slaGmH+;PmdEOG>As4)9V?@dQkA1NJO5H&1R+&yV;y?
z8|{zIl_!Dms5WaJ5ZKq>zra&0_FVCT!m28jt*ErX_`UDE(AeDKbh#NJ9gU}5PUpdc
z2NbDLL$%k$QXWrnvE3NsVlb!`g*IwZU^-ej5SyZXIy<|FbS0)ULTI*tP!O`Oee$<X
zb76Du8GPMT^Njq{>#x7A)oLGl=pnLH0)6B4dJP5x1P%}_C@2VpLanW>EX#Iwc9N_i
z#l^*+e)?%)Vd1yG{p}q)cKH4NSS*Hv@4fdPsKw^Zn*mo;4hDmIy}rG@y{4vS&6+jG
zj~_pK_ACj{U$SHgJ{&xFaK(xh4?g(dwBl_lUoWGese3DJprb&elA!^`cq(Jju^W~!
zi4-4ALP5|1)U!&M;AFC+d7s8@f(;%!evL&|+N5cg55qu>=IRTzRto{Rc=2L+S?QV9
zPG7PvvY}ZQi{!QT3(9=s!lDo_ZUCS%DZ44bw0J`wqe#T_wBGv$;XJ!bbPS_Zu_t;0
z$>c!pjZ#^PO-JgyPHOzZ6qK&+?uC`!DLux!(h|}xbJ2f%<4+#1-TaIHa3oi%Hg4Pq
z+tt|E2-E>K(P$K?Te@^9P}keri=Tioj^m*60kgKYHdwRT+FDc~F%ZC2etv#KLj&sL
zTpUM7!cI0fH^Vlfr_Y=@gM&b6Q&SUR|EEr!LLFQUKwY$G(F`{PQ0Fpfa$On}hiOc6
z!&l7HsQ}+l=lL{iRjS<(q+DUeiyt|1<nZCcfAG}SNR*2w(hM!I8of%%_y+oDM&WR{
z7cKHK0yCS3QYXaIX2lgA$(8kW`###Aj0Sgo9(cd;bFaI9VA#^<x0^J4Aet0L)fx|F
zq}Id}DT79#WfjRZ&x{PK3X?~>x<i>Q3)Mecpbv+$>2!uHq%@n&=PxvIT(n{3id<cA
zH-iwb{nW~DR=KN-t!25#!A6K7lF1|>2W|=5Wwly;J|77$0$G*&3Caw3tE;O6g@7FY
z@P|Ld5yDYldg&$7ufSw^c{#}oTwh<0`jJRv_3G8jmoJBP-L`ETTq)d|By^c!GbqFF
zXv+|*RG75Na6GM4Fc2VEGowaj(WyibqMDGQCXKI>kS=JetdJcV^ffkJQmJ*RSVU{g
ztE?#N?dcmB^p#gs78bfJW)pQs6?ATCX(@XAi_eZPs(f@HynnOze}2%oS<U|7FQ2ft
zbO%E5v_Y-pK{}<7nS8TmAdonCwimv%MtRjJHl9`*wc>s{w1TEa14mJg96RoIxj^or
z;^zbiNm*L7;%Z_l#|;5{Bz3Q79~_PevYVUsj{q-sxuASC{3LIJMJiaOLP^_|iB7_3
z_{FrQ#<+GIhDODN;-U)R5}8DXH|bPe;W%Kq&~1RIsTB0p7!vfz+O=yRe)!>dJh7y@
zR;|WK3X#00(<|z0vpmnmIH-Jvx%2Xr0*7l>H~eP*huWIOw5n?FsYlNCE#T;Zw?B=7
zx`U|WCAkzYv3S~U)^z$JR|cYj7=d)vrtS))!{SJSnpUtRqX3+p_V$h#$364Z6Jlsy
zc7C${t}eMaB>5?%Q5kVgV#R{1ZlxeDbb@81Rn&M-kEF^4sU}}@w;xrptZr1VsBa=`
z_zVscjPu0E3M05AOP5xk{{8R#U7tU_;o0AQQTISmBAE;ZV?0_+%;>A4O_EUKt3Q&?
zw-_FG<-z-vl79#jmzUrGLkALcl|I77Qwp6RkJ%hO{^`;si)=P~^m@BH&4ci6D<h+J
z0-tN9WK9gf(vo-)0b=tjvxy{?&E%dA&3%V&Z<aI2G=2|b0?T+j{=kN>?SAjw8n*M1
zXFR^%PM#O@rjo>m<lQCBM$5}JGnup$0zML-O^<qoqW8%2&}ckmi}Fe%B@i-o_{gy<
zm#;ka#N#A7e2#)Jl}WNn^;|<B1m$9LlTxkg;>}_{i6r1An04y)i}Dq8?#Rt3<dkgg
zkPI<>)4KWg3{Pp~(gd=2f~<8YDk@rc-~Ipmzh3{|OMh-MnuCEL#Zd92n5vXz6=J|A
z!@%x=vM1sRX(31q#!#na`K&lE#ekek^L}E~sFZ%&>2!gD0-EqmKKuN{zK=foqvyY&
z(duTv3{tapo^WN^1K*eC2~qa#+t=CI`SjCI%SkAt4GA)C_eh$PrluxHo}3<k$^w;k
z^5n_Yt5;8HC34pUkug}3-#!+L-9UEwn<-$DAd5kciNz>5ImryKV-@sONhv>Jq_3~P
zzq7O3Znr@WySuvG1#VWwLeb;x!r@S9nU{-%dV2cwdR;1&F_}$bR_|C8Uo~n?HjA4^
zbb7tfU_fQq7L`(kI)j70cp{<KYH3DQvcSXKzRa=moG|*Oy1M%Q`?_BFm)HN{Z-1mW
zisJ=&wiv_!zrwh6baeRr{<5+%cVRK<ee^p~Ptb1YZn;|_NH{`fCh+cqLqogY-}C%8
z{;;yDG7^c*Ooq-`Gfzkf|9bGpCH9K*-6vy7Zgb7Exx)-9m1<yMV9%aC;c&RLv=l9P
z`0(KuUwl!mR-ZU=0td-_1KJUl(fSJ)E=2vVt}YxL9v<GbX%i*QH+noCpzDJVK0sHI
z9M8b>)~#D{dRto?>DrJ~pb<6F;!$#Id_`}qTenU|{xlV`&PdGn>oJX|VPDEFaa^RO
zwI$#mE-5cdCF2(w&vG$wlWkU`%nD3#3G|fE-PJ)cV6AD5R%_Jj1_%3DjRtn3ps+L*
z5BK!;I~>-FO-+7($XmJ4>9n=9w#DO|TE#jGJf)>2v%!Bpa^y&Haq**%K6>)h>3{sE
zfButie$$#~k$F415}k{l>h0}?;wCdya$EKF^_@C(3g?nBJn|Dj2wA$+()z1kzw`7T
zJh^!BVn`8LLNSLx2xrG>F8uD#o_VZx>$~4Snfp^^WhE3gz=IaKaNz<zuUfUr<#G}A
zhK8=HsscZ`bm<b%;&eLExQ&gC_#6lXyk0M$2;+t(h9X4wpaOtLvgK0Jb_h^-=&<(o
zc7?cqT^|?-zCxAiq=LKPBDfT;SyxwgyM%8_6iybA@-lBl`N-t*B58*yG#5!TBhKZd
z(;C*gY4c<9^q`#YR9YpJRVr0Pku9rUjz$Bi<1?Ac$|{LIh))5dF_U%=y*A}c<~{e^
zLq@It`oI3w-n}3E<mG>S;)y3#H;fFe8;wRhXHQR$#bS{Y3d?y}$%6eeXU>2Y$?OAv
uKiK!tzI`8w+3%%&yQV3h;*{n83orl}!&Zj&R};|y0000<MNUMnLSTZtr)Prz

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/jshint.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/jshint.png
deleted file mode 100644
index ac7086de1d41dda2e67698aa300963b332a0f52c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7258
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
a;n@V~du&xQx&2c}0cr@OQjOx9i2n!s6rPy?

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/kippt.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/kippt.png
deleted file mode 100644
index 7ea1742f8092a97cc6db030bfe9fed35d59b9f71..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/soundready.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/example-sites/soundready.png
deleted file mode 100644
index 94e0e01b11080edc0e552177a9e352cca16f4f7f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50225
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
SVOaM70000<MNUMnLSTX=DFsFV

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-carousel.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-carousel.png
deleted file mode 100644
index 725fe07b9e7ba77bc9b648c2f28a218e2815bd13..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 339980
zcmV)`Kz_f8P)<h;3K|Lk000e1NJLTq00giA00V>w1^@s6v2Dou00l48Nkl<ZcwX#%
zYnI%)&K)*YZJ+OE{zJ)H`I(_48ABfHyDnm<Bmf0cEU6x@K5hF5ZCVug5Q`!qaSH(P
z-~Zcxts+_|B!waZIa38n0VygXG`9Ge6c(AOstP5k$n(VAv_F-~)7dF1P!T{xWuLGF
z44k$kA-e?o%ez2E?8;*#c|?WAQ#GEaQB`y)uS?LXqMk>!F7aCD_&Lw#V^vSnCZF+z
zk*CgOeavRPtae-zAX3UCC`B+qPUUn7la$jW(=^G)bdu@g!aJSh<Mbh?OPHq9l6Lxb
zl2X1&nTnKx%W*#Uo`TF3OIhM*`U?I(g~<K_?MTSi5#Tp*B*qO^CQsuYQm7Ep;v#kr
zs47ycR8n*)>-Uc;!YZsb4wPzjaSke4J-<-s*CZ%ay-xBv3@fY0DXKZfEEu0uVb+&<
zB<msjw1v==(>|}$P$ns^Ka}xVlspJxzO4E`+Z+@U7R+;WMJO8e0>kx(^Igik@bPh<
z^15u=@dQ2HPGT!BgdFcjo@;w1qVo}rEbH%W@PRx=E&x(IpkR?HQ<>$#EIX!4n2+D(
z+qcW{<6{ZmzkR=izvTP(zvT4&yL^0H&j0#m$4lC`OZ;^Dw#c0_hsos7G?hhOm8Je7
z03zJ&!;ptUo4+bm$Qp9l<}H1m`dm{xxBQhdvx}(xkwRv_fnu=&p|WcifTg`GkZF#i
z2<*7<Q6QL>xbcwZO&vpMXvw=ps(QOmY85umCW@p?QkO?FpZUD0TK$|B^elP_JXfig
zaISMWU*c!^@#8<`d^y%S$IqAe52^Ks{QKXRc>TBNxyp|@{cLqqwL1J>*-@&CByP>O
zIHr661RL|^Spu*-u80uB#rYJ43W(JO$LHJ<RSGxT#?0B0rd%Sr_T)=y@&}^H&Xm7?
z1(3o!eU<ZnyZ$1$nNB<}@4z?8PS|h$yNK-H8OdtT{W{0h=ATxnRpm#uxiIt2KYlFn
z^Adi{bI0dYwRu&~HgBrU71iqRjX7Vb&3k~436-Wjl(*7BDnCUm&4A}mw}kR}R8m&_
znxycC@}WCKl`p4*4#I?u`IbmV0Yp3-KsyNZ6ws6<L)a{;Xdw!ERz5GXeq)g8pmAXi
z+y*-+wDjPsdU_RQ16XLa#S!V?l!XMSs--D~)p-GcG%qh&8*ogQG&@>LI`9QR2gIP*
z)S&+jgbsO-7b#&wI3vI-;b+{b=U!CFp8&lWohiKE2P^Qic(3ra-{(yLDCFY{GAc(N
z`B+&#TQ-TqIh%g@^$5Vrpi{~Syce`;#w$1L;OacbTk_ZU0UPBK^o-TIT3R4BLI)HJ
zrzH)l0;#g#xLRadWL6PQ6#62ox{RAtg^~bmfJK}%!PxbpUyKjP7Z5T^jQz!7wcnM*
zz59=h$M|_OW&JngS;s^JBr`!Y)dZRQQPhq#-H=?5k9`P)ccnwlv%Dqm8XP+yPzNA;
z-$kp5<@oc2ZQy$E*$Md#=%7ug0_fw|%7RTkf9n;+K?fal&_U&~^$||%RVMY;iwd(Q
zcq*}h#eX#&1i>qdRR=Gd_=Xk->G7b@#B;tnctojouCDz+`qyj~WoTm20V(^kMyk}v
zcL~&LU{%Dco!4sR$m(?@Fvc~gLJ_nY6riXYvlNIh2L2?UNw6+`3FJk$$SV7<h6PsU
zCx9^F06ygj8!p8Ayelvg6SjGj0)O9w$beS!MjzG`+9x<brH_DFedmn%Ug3Fvjlf%3
zzoY}d<hqUId&|zeL00XRqvWZ2el%Ym;l-I{hhttV!6RHjZ5CU^!@*bu1SqDx>_Am5
zrzKwET+gEXkg8S6BFj#~&>UTY$v#X~$jM|Gky>#{p91udsp&!&S^z}}kqDA)VS<Yz
zcusF4Axg?rV)~C@JIOCcAp$rg^W6S|nQdg|kACRV^VpV)Q)U!-J$R_0*~IgbUfQZ7
zj&2Nm?wIh9*X%&d)OsSuvKX<!*C{Ts_l)`F=pYuC-)b1^j<yWu0Qj+p#pva*@I<N%
zbkIS+mG;#^2OU%_yiBK91d+M$XJh!3#70e<9qM(^OOV8;09W`VbvUwLlu%?a(XwFR
zlu#|M3=OF(m{qH~Mir&fL8*EUt*a$Y*TT|sy=qrgtqFYjVz18UXS*ip*J5Y}<(u~e
z3fY)aQet6f<3Hb?M)mswH{*Pf5PkK6X$K=C?kY+nM1tB0LBWeao5oZZ3|dykN=`0p
z>*jAD%aR^n?P2T}KGW_4S-F6tkWZMu*_mr~?ORyFIwty|Psw}z2w=5&A@-(0VgAz7
zr%B-iCGPj#=U<B}A;dkfi%iWbu0eSx^gvZ!zvcH=Qs=|Qm(^S0eE<QA$W)~eqFSU-
zg|2Z`v`W=UP7chUYn7><4Ul)aHeF5kC@d6GElA1VNELzCU#$P%4<xD}!M(1(NF-0<
zyyUw9_6)#s46|@ZHU3w?SG}2K1PZSUX-!uOo{utle^gHokc(R%e3S!#gS%p{T;IvS
zETFf*KR`-%E`k9>dd9vG9)^#YBY+H8@V+6ic_X73@qR!&bCfUtq)N!&OQdjPP@x&m
zUrE>mt?)uk`Md^F1pO&==;VDpVUUE75XPTR2OV?}b`g^zrvxFAz+19~8^%#TM~A>J
zUt%H@cMr^$AM7uJ@+fTLp@9<`SL%Vn0I$M_73pSzmQPz?O5<Eb?C2(eT+%DgscF@P
z8Vf(au3V2oUO^aT_)ytUQ^f1=Aa)CLb)`J)7xRpa+WC~{I4~-Y1@{w_eYaukHfSh3
zT5SgojJ59LI=JKG<aJmlbMxUk#w6f1^FzqK`2*e#SiMJkf#f58bKbvDr6z-Y8Rmbv
z*!MVDM$jyP2d=;>u1pMRaZ2*xV-Z?JCJO0(q@;@0A{AANo|m{x0kErq_4Op2)AS^&
zS$1+ifpniPq5(ieTh#{|b~JA20WT~IF#?LCrdsCQyAq_AK@L(0GO4cspSH*b5J1)T
zcq1)1K%}Bgzo*cKj;5SmYGZZ|{9dM!qfDiGdJ!d;)*wJ}^kXm~r8wykE48dIAT8X8
zCV!O2rJGx0jr2<*I8Vw1tjcmV+%ZVXKb;<v+$k%*mY5$35$3tQ{ORR_%LE`@RA3Sy
zGQ3?Q>!5>12w&6JpE19h4m#+d6Mf-ib2Gg!=*A0Jf*rp*9fV$k<i1mCrfFfMTTHLM
zt<=*gye=4Of=s@63oxr%Tt%uc?Bq;~2dG7LEv<CcSv`%FLMET0B4MtWW7;(gi<DwK
zRme2$eQm*}-w(WEy2T!Lpzw)ujFacJ`^Z=PgQTgHa65xE>2R=%8+ko{&wd<^NvFFi
z?7*!oO9mevA5Cj^Xava`AdtcybixX;BJVH9veB>LZJD9J?yqb%xbN7V?DJ>(sP(iO
z-P$6+906grOlC5vtMS*$3ifi28(Lzp69`<>#DI>XB1Bo_5D@YUSJS|%=HwewvG!?W
zPMyI)e~}W}tfYXJpGZg1`@XQ4$7hMf%Bl3wG}d11ATY_lbFb5cP_O~;evVJC4WMcp
z=L0P|KJSqHm9NLv>Jd>9A2ib>pVC0FF5K7TR>ICbFW=*6G{Ic-&ohMLtug^L+|t48
zP0W+<q&hfm0#rnw{tu#*TiEQ;Ok;vrzxnt0KLwyX2>M&-8<6^o`Pn<@pu-yNq;3ij
zFa0G_NUyv23toJaoT<p~Ne4mpX<ySOwH8zZz*1XM2E5?F6jel7McvGg)lL4YrPmsu
zm%6E-=3;LNZaS#FkE@zH7<xJrfL&th?Sh;8jO%_8`oDeZ7skjqkZC*W`B{LkttQgh
z`9qUE7qx8i7Mrz?y|{Wlt4IydZn0~NAlm`^ORYSzTeR#EpHLlVbUANpG6B!wIaziM
zE;fW%+4g0)Ie1>U{(ky4uH}5>kN?{=ubvvo>33|ue5MaPZeBCexdMv2dz*5Kl+1eD
zWRRL^m=Dx2l}l&i1wzo|%glFEQU#?<RVXEQv~zhjxhCnUx;&!@tGbM|Ap8)j8h<JQ
zV&%1|!r~B?n-@axHH*^TC)Cqx7TomV#5n(akX1WCa-bY}9OjAwq7b2~jRA^GQRU4c
zjH@3uVz|a=&MHkA<~hl(Wk8&^=oUww<$GOwX9VoiL|apvR!S@L;bBvQ{{;{W&mjMQ
zKERQ;df&eo8W5B>CL_NX_yZEe1@=e5-`v!L4x-B2>7auSVuY8`ijz=t&l~oJZESWK
zW3!sa-)6OZAdo~pvx!}kwH<Dz5E&QlFJ>9M;H#!fWV(5U@A{`?2P&yHKvOmIzq2pc
zWZ_r$ca^}@!q?hrEm%6a+I`ULB`uBW3q6%uSK1e}{w*Z{o@wQkg?S!D0q?blLrUZ$
zEtGQ4ZPmEjU=+too@!&3?iJfHB|@kDOl*Tn@I<T^s8GwHypBSp<zmx1hQ`S5X2%@N
zhf)BI1j<tm+JPcuO`r|zePq#istvGdKz^rT#<9zNH1xU|9Dt<3IPk8f7P=Z+pj5kZ
z(Ke+2wl4i4M31~9e)M`Ra6M+8&;TPJ*AY_PpHoA5ZBA12F60>Dc?jpJaH!1lvMHy`
zYcgW$^`-4K1OliOfoPfexSF2TQl)4ydBwBTdXiEpI;m*=AyrSJQXI@m4c4kEbBfTl
zNsG(6uGws4)onj`6z#DKs0*azj_@FaE!wX|gz6zQdtB~91*^IcR|NCQNRf%r#A_AG
z0AvAp>m~vK5{P63cr<``1URs>+hFpT@RXn#tz>FjvC)nqI0|i2xHo4B;rc@b^LY+>
zLUDd0Gx;uGP2}x3ylvdEkKdGh+-uy9whdl^)yEp(JU)cs?fN1l_{sjSMqnS0w4FQm
z5gz!pA5w{Ce4v=KcGOOI0Pbs0oG*M>X_?K+<)BZ!lV5D|m!$8~^}}zgpg6KegMeR-
z4m$ka?XMKdm3N9A&T?lENbl{#$<y%W-Cho&AMtQ*;F%qLaDPFGCPMaV>9BLH35F0=
z1ZnO<p)j?lEPtat#j0}Fv+=5mGBm8{+sdDpvT0TmU{%&*N0F)tlvPrMuBk=s7MvJN
z;Z%&K(Gm`D^Vyb)@f*;v2>j33l*lsnad03=KuaI=Q^5fuei%344Gw6ai;;Hsd(6AN
z@Cb*-RO!qIStCjzw*XOYs{iL%zo6g>I4Rr`d$;+$Gk1(R*y^~UUo^$RBW&wrF@JAy
ze-RDaXxUPR51JT`3#@EYwh=-humxD%)!fRew=(UC3_b`NAo;yk*;o@fzFBRUB*Ob$
zbFRld>dFz#weyMA4;HE@o3Ywy#wDoHqeUxC!vL;|gE~qn5UDIu6ryz!MHOlh;mJ3$
zI7>YjDIcfUm?HdMWgBN+F#vy}^Hc@XZ7t}4GBc<hNoTc_D&pfTBIcmi+BB0K7>oWb
z%}0U+hRKA&fRcq%YG#WOoD%6j?Z=1Y<7QWCa#;hir3Hc!6?V#d@%#zRb>mm-2MY<N
zru1m7>jue(9J{;NZwF$H=7;F}kMe#>bHY7&fK9oU5#H6FVxNDb{=V)#LQ0B(Hv&%&
z;BQ~Fbmtq(<8Rl#LKpIViMMt0fF(fmiY63_C?9h*N8zU`<Q;@&I`fx;(#oqK)(G<c
z9)#5n8SQf?Ih`Si@++pqL5IX(zMpQA-qqMX#S18kSF63Q2ja_M|Fy?n&^-;GxUKrW
z#>Jmcu$z!j$or`uN6Z6Ny9Ek8b7)zKq!tt#a7r};NjbZj3@Z)1IvaSU!FP}=%2cg(
zP6N282B0zW#xhE)2(3<X^xcKkf`^>L%KXi7fijM##>psp#6$3~)TcbLX(yTJ%_k9~
z?OZQ-xcjo6r>SLP96s0|ksqUfqIc}B7x|wx9Ykv4B@cp4ZKmkDUR%owaOl8YXYO|8
zr#_4IItj0RQp2;agLqArlX??8S8`tgmArW!I*<MGwqN}7wn-Lc4X&z}b3WPCnEGdv
zT}@XSOt1r)pjS~9!V;7sMcvd|y+*P(hgQmmx_0TbmYozW)~-qBv?3sfbsE}x0{#?m
z;f9hvw;xd9;mY@1|CuYxmev6l#w`>4nqUH1e;3gKJ5jaZ?SeL|AFu}nd)a6GMu;+j
zsE73gu&ECHjN|RRE+N1hw#x&De%ckX`@r=}QvLnvL1T3X;n!&cFnln2RT><05ads$
zgAO|A6cN>SA-1>0IUU%7pj}V^f1@~I_j2@S6Nj&jc)I)u1*D^E*D_G{CR5}R67(@%
z)w7*b(|k`k2Y0sKfLB$Gr*lyAd*whDYc&9?x;B+qT2<p|YI0ebr96dm8QAq&@QT7=
zyKi>D0d_SR3Ck<<(Sk9ZU`(&{^?OL{gIAW!&1(40$2y~bvJK((j>(L)(X69TL?aFN
z)kAkJ+FlyR`}Eunhkga^K_}s0XM$TMxol0gqW<R*H>4KO9{4qaW<i5I9_qO32%h8%
zTB7?ml&yx-s5Nx+y1H&hS4ZYY#L483-i#8ANA9GGG(Q|P>8!T1kfm|?q?V59x_N<C
z3Qz=7IB_?iLrcoVQl~}!ompjazkj63NYpf)j&><ME+VWc^dafc9eJ<c;}=sY$T^-N
zDNhIR6*sPr?Xdwj!}WRy6`*{sqieF`kxjpPP<pR-&%u1>=(QY~Vb{YHM3`fani51;
zy~t5E?0`Wzp3xKvP!+EOSR;tV#{s8(d4f2;Vi$9K1br|4LhsQKJfsZ9hm#IEsQj_+
zZVo!=pwnH<gpJA-w;?HzJAwjl2eAHpVy-j!4jhnU{Fb3in2@LlYCZu-ib}ObSDdS6
zAcagv>{9C$kfPFotC??_SCwbcYGo=l%xE0Est%5EE|VsLWV6M*_&Iw3h%yj>5qARm
zMHU-=P}$K20Hgpd`1Nz6mY+B7Ar!C*W!f=EEZ&#ZAe=o&3dW%Bfi!$lMT$>4K)>${
zo!kJcTE>>yq3qKLWqG+9zz`stAPta<+jl7xU;wS2Cj@Ty1TwO}d!Q599ofdoTfo;?
zhw9DiF^`+xi&R3Zw7sqxkirDRh}MUm3cGE-s-;O0xU)MTP0LhNN`c9=g{LXgDuq*;
zJ=f(}m*W(&PSeMqgH%IE6KQ!n;m#{R=&9Ts8_DYc-l;QZ3;^qwBH(Ju39!TOUw0pb
zO$}ReEYBxF7VNv$yd%%_3tqMG6W(p~4U1ZQ5#DhS@CFAzY)lJ#HwB%U=s^eJPsKJ5
zI_Mzxfpt^MVKjG%bPQ7AS3|jvEhcyFOll;NqTQM?oC~Oc?gm&PWM~JdFVNCwi;|7m
zU+g$|7OB2tpopl}<(xB59k9}MpeVzSRvZoBk~w`YFPVq7aLt{=^!9e{r2((7yL%sn
z!p&XI$oA|tQqf!fvOJ7$cg&do3zOaFh*4I~A}oSZ22->aex}l|fquMby={gi=uPm*
z`-`LoAb1y1uv6d2$DjehoH2ugbc(aGEa~8AZ+44LKw_v{tlZNO6?s<|D%<>`h~ehW
ze-!E{|GDGKilY|Qm}iwv)tizFTL2ZA{IM+~fJMzry<a0^!P-DXdm<Aocpk8dlvpxB
z;F?x4SuWKg5EYi{8eA$`&zCUC51r&xedpCvnoZ9^&sFMFWjclC>2&q^#|mMAw~aRc
zSkgpV0~DHGMIQ3Q0YxAl?*<-M^A^I88GuiJmEy)fAOb)(V2?!<W;8fSx$C7ZG}=lj
zKdosJp&#cI)pV*8o7#{~9_=;<$US!{R(3fCnxDZA{tSaQfO^RMCZDwTG<jsZGoxPz
z$esfn&xN4e-h^SFbc2uXJ_B9aL;d|Jv~u%O<mc$1)C?>rf2;dm+{?gl7s1>#g?lAo
z@(Ed%g1Fc}h7Pz&{{c7rpo0!NiE68jk@4P)X0_;m=RxwmNNb8@XL|F`qo+ZD&e<`W
zbEVpe^OcMp16}*dczQPTKVRth!c67tng*h0Gxw`jw${+hvUp{f)|{QsUXyFdUoDTg
z_Euca8sT8pYN2qWUzALr(4Zjl#^O(y8ZrnVt2d+U2+e}G+YV}Hlry;$ZsCi=wTR@C
zn>9Q<^YZtp@t7K9@#2^LiGFb(Y|+fZk`NFzHBOj|+zcwDl_9IOq0ig*YnXZ|Q~s<>
zMagvsW_yFk;0?fsm5cNyuYg@1CW7KDm0(d-xG^82y~!V)Q8Rzn#++t^G<P$QV3^NC
zdFOLOR_vz_+9zRX>3QJ%&AB(6@1zB9w+x%3jKEfJ{@nAkj$wz=5~x*kpWzy&bp;`o
z?!Lm)DMe63P!Irv?;NR8&nhUU&N`KP)kHnlD$~_8TBXc!>NUOos8TV>G`Ut*QGpbh
zlr{$oV*HH#NnP!P7x8rv3(iw<dE3Yw64Hsoh-YVy4))Q`QwO))cVO^941iJwh*8cF
z2eR%1C0W;F=SmTE*_C1@pLH6ti^A57(9^4Uz61i+!BSL=LQBu<gV#sm8jwEIwm{oa
zOE#{7);u`-aEo|1A@5ldccHNI6oAD$R>&LLl+4m3pEDHV4WOHkl_s|{@}2K){9D1n
z_h~JS&z^BUkW#2AYb57b%ILh$p!9(9dafm0+sL(q*LC54YTq5iFIHpN(D{D3RpcMA
zxf?f=deQfL(qTe=&<V0-i@;d%I$+?Zo!_7=1KiVo;1}sC9e~wXHebXPOz?*=u&B`{
zVE_|p*0RLUHO_O_K&hrFRjKa0_`L9{uFVa#+odq;HS<EM=5M4LFSRK;@PUSMZ2EK<
zhxfR169CU(p+E$s*n-vb1MT?2qvjjAyC*qjW`|O3jN@b=el}iL+b21`!87|S^Fye5
zbKVjfjqqbE-&7P#MGdy*U7zh%bKhT-(QQ7w^+15~usE5H))74Mb4%NM*@*(=hL5W!
ze+N9&ofRK99MHdmK(9{v%@DY&U4>C@jb$tVnQzR$=h(fAV_2Z}ng(#qo=nUb)bn-x
zAa$A0x3j>?glM9HSOMBPlh;itPQK()<pN}#YWfLOrfi-A8vsQdWSSD-eJgQ|sXIU&
z3`Rt-Vcf-#me(CJl?J>e77qce)R$5`Hi)HtA=fAnRfq;KzcNuzh^AdUM_EdzT!jaX
z<8Y%lY2)Yffr)bW<(}k2$O`W4Ep*rf9X3{5(*lF(Z2SlFFW9a}z{6YrK|gix4?2kC
zZw_c3bQ1R`16!=+SAM~uKF(H)gXY6I;12Sa8j!!yz$`Kn1sE59BaJ2oV>-l=RLJ#L
zM0Wn9axLjvSIaTYNKDhp7Ev0S1XN+IB6FHDfvK9Hmzl><=-LC-ObHzrwQ{Ut>7+=Q
z60-Mo6{`gm$uVp3o&HJ3#GztNP>KUr46~VPJkr~tKENBzghJ!P_<2p{ZPf6?pv|H=
z_z!;m&|C>Pt-vpp4Pa>ii5~uXPR%Xvt#50qSu<#Ei1_$WU#R=|LbbY-4n`*4==tgS
zrLV8iaOg2Mco{KDem`b2NeK7}lNbCbvvO1nZTr!0C_O#O6$A6pYE7}*O)&DtF%J83
z3X!k{VnHZH2$e!Ep~4D+<A(D|_qC#cy){i=h8WFS_nl?;&aZ>ZEi*#)dD)q_qSuIv
zA{cfz%=$U@w`JGHx0H76WR&03h>QFobIZah0b0$05G8y^zaMh0mUo(LPHC-jKC6@|
zz<-x_=d+xrA2OXLDLP5Lgi?!O4rN+os=)onD;!w2Flx`a)KQBPuIbu>Vez41+&R|b
zRZQ|Rz`y9{+IyWLT7OU`D>Xr(IXAUP0i_fbVX?YNQJ!Tg(=7lcLd(lz(nA_p@w?(Y
zWRYm(uOdp(YR@N;G-nsOX}qxMr)vG|>6m$}OCY09nPp<rlQdP$z!3Jl3t}gES=0X;
zHF}FA@w2tMA@n0Y`(4i29Iy&LjMDJcubvbEzy3ocv5!DwoJ(6E=EjcAp9d)*OmKtW
z9Lvr3Rz^WPXY;`gQ5F)?wkM=kXs}?schTV(JqOU&6Mq`!Dt`)o2k!n}dPx33B>y(d
z;DD4%aNq01J#5XLwswK~v_XH+XqJ(5pQlOz_5dt2fRF`MHn>P=U7g(lalZUh&GbdD
z3mn(HT8_DcAgjHwpWQ@8l~O~KN@L-`)Z8MiTmT+!PNR|wjTn1WZa8A*h8BzZZ?-sD
zmO9JAXVVuDum_yf^BaRwp(2>1L|-+1jdpkaVd6%;j{#UL<I6IxS-Dj#edD}HK!VX&
znN=t=jmiKw67URUG47RRyrLdz8eJBwrY!*L=3<=Dt^xR9-s41I2a|#BoGWOHc`pb$
z2$?2|>J=oIqHUd{2_O>;!C(s0n*SARPh4fxQtN&j$!zCjbGt;{dCdfk1pCg-H_aTq
zU-xCr(C-^so*hgy&ew70(Cj-qT2Mg)T0t#M(cZhf2Dopws4?ci(VR$_(V=|Kc{0yy
zC<eHU5EUs}1u%d?i<t@<a8)niELu;C+&ov6NmYvPv|8sp#T~mVmprIdYAMTws!&j>
zW2<Fj;TZrHh2pZWrs-NcX2y_mUnI4{V!kQ0*G3`*>&-FH$lxNPgq&u!`rMk-Wrc{s
z0Dk}-&@@fc7J&5(c-4lE7tbDgAJ;m^tAq0*l?-2xk$)A8XD08Rw%ia>o0(EOuwGYX
zqJ5cXi<t9aOjvk$<Dze0n_eBp$J5{pU$o%qWrN#KKDS)u<0gce?~OgV*Ji$;QAZ}I
z{3K8oB}rsyyvKx4xRy1NA4OxF=c~im&0y9A`Gx3Mp=9iL1h9;_BP9+xc4z%{>7dio
z!U6al2jg#M2aCu2$RwcHE?|3Lr&r){aH`cHf*tA3(?tUaYs^|K9$)bFtd_<qoa5n`
zy?UMix2SV)UiDyYXSFi)`bDiy%G#umxwzK^oZw*A{rj6v#?=83Dnwzwu@tLI8WRwS
zx{JtiAeV^3zO;)}bCX<<W*<bOjD^9(i5P)msN5v#-s5<+bv`$JhP>b;JmYJ>V$=YO
zQj<=Xc!R@fXzk5WTlgv)NBm09tJnLiD*($+8enI936}K7HG)Ev&IC2<$~*yt22nYH
z7xCK!nWin+vIa=H6;MC_@~UaH$iaUWdh^bKZ&W+GRPE|!>vyDgrk{0pd~~2;*0Bj-
z-S#h*C#}z=(JA~0EVgN5zmYjQ;bqzPHH+OpuwUG90LGGXta-jwCS>`pofvRuF3jS)
z5we)f66kWSfB+$DRBFh;dUC&j)%j<sXY+Se>&!cga<ZcqsZ~TuHBBtBI_DVYV-Zoc
zmi3O#*=m*bfQf{>-`2qDcYPJ(C4iMZqP=P)R!BYok5UxH)4h)XnOw*!G(fBE=iNx*
z8|x_mD}JY)u+xH54Y`%TRgGt0tx<O2G5Bc??_umuhO89t)A-O+)ys&51nVC*A=F-!
zClk;4ig}&X#EKyOmwg(5WeMy;{<lNFAb@41-UMLvnwXRqDR&2brw=S`=b=l4-d|>l
z5?I*;bk()1_$&DAIf(xdqr!s@BKZr0SO=ZnXVK1ITzuiz7ssP()?J@4BnO_{dhw+#
ze378RuzMG^ipp6uG;CI1nU$d}<vS3bUE@mKB(PlwRnHeM|2&IU@p{;rX5`oBsCy1!
z+R*}T(to1M-Q%|0!7ztsp@6uSLuie#??<IdrJHGqofp5pF4v&-L749NQ7o2?$cVLb
z)aV_xiQ2N&3nXta$pT88zYV}jg0+|0nN`t#djMEzLa5fSq6YeSYC1QjW?cz@Wqi=U
zVuF6F@j7ZyHTmt-<Kx1F+y;XoO&hW=Z@!Ep(uCU!i}Ah$w+GJfuy$qVnEU47Uza6E
ze`_#ylpC`R7^YDIO4)`y>p=4u3#q-9vL~7ju0Y2Q2wX2x(`4O&#H4dqZ%@kAeL=*w
z0JdJXu0(TkQqu_T{2K)ZT8Un@C96Wfvd9!vT>z?c{UKAGq-a^>=DD6_I!~h0ht!X=
zfmwAD)GE`Qjw&ogSgQMi3D|KGpf|Tu)s_5HGtCBb2iXR|(hUGh8S=jcQ*v(hAZ}eP
zp2KaX3JUyQs}#cfDZmv7Fqs^qicGjFTNIq^;{mFr?`vQsaOc3&_}t_WqOZ7^490U$
zg$`(CzgS+CYq`vq+Q=SEleo@DisfbN+suJ0tHb4`YX@KFjYi{J`7lc81Y5nYoY#(Y
zmIvO0_*O4lhzMi$<MRQmlo_83VCjAiz6SKXQ3ESYQVZYbrwTs_U@19j7`pZ)I?#-x
z1}v~@Marau4tjj`HyUZH{LXaHK?j}i(8Klf?ZywkS!}M|x2s>ABoI^p`7i(am!K5k
zRnuvuc>;vLliM%!5<3JIAtzDN&%^n8`Z}uhEY$FGBDM(A^Kyxa;$|2Sjjg?@c72_s
zfD4FKX_`%?ifC;#Jqiq3x^6#j7>>#m0ERKxnV)UFWhKB=%n4{IxP-EprIhlq96wHz
zoIXC}G#{sve9ZBWlT7n*`naUeX_xa$nDgKg3g&R(O~vcB`dcsWr2%#IL30FR&4&Oj
zXmuMn20F0pDNs4Krzbh4u``9UP+KjS9}YH}Y*49g>O|MX%7vVbP4jh@pj8!$jTtVH
z9RTZ`+F9--JNt|yfTf<U<VqVzyS`*bdPm<-A>qICJnpoo?7uE6H%&rF-IO<3=c6E2
z8MLX!IQRWb#f($gNDE*!?neR>Q;x5wdS#Yu1j03@D8=Wk3XC7uL+oP7-tju%*JJ>^
zVbGadDzt3|nz^&mrYcsC=6tYN!a&(3=}ayMzcE^*C$ApSDp<>k2NcNU;Z%y8rXpps
z<Ec!GTseJA@-a<|%=x&4?{oO}P5!!s)A#T4?b~0=`Nt(pAK&G}WRc6TOPCA*0?_*O
zOQH^1Kf2bystI7#T2lin(&QX|?tGlvycS|mweMxG$re~J`3slDlO3ly4U_XCPg#N#
z@qDRWb{D`3S+fCPiKJ|(u2C#i+;^2}LxpCrDm{-jTE`0jX=w(0<*vNvlbo-B<PSOj
zn3msHYq96fxyX<BeO095EEV<)DMdxKNYUzGqnkChz&Fr&Ey2p}Wx}X>44Im3A3}cM
zQ{P_jw2!B{17MY|_Kc%*^~Jk8n;=5ZBU^P#A%0Q=3vaXxNKro6J835DmH&A{93t}M
zE{XXZw|PPsa0{9{$#d*7J<9?vK)n_SD_ph)B2Gao-_z_iK>0M~6_u*pd%>QG@#|jg
zGvAkb*8lo;=x?=?04?mcgunYPgn~^0pc@RzKap(x^M`3+9U54C+8+Tt@Eud(uqw}J
zZ%RN)b%5!w@89KL|M4I4KmO<clK=gG{_g^)knFWRv|ECSs;5x1ZaH@ga82#21heL{
z4or~Mw5iA?Ue79Inp#NiCg^pjh{Eb<zUoU{CmKS_%T8;C*K-}slDgm8t2q?`62uZf
z3T&Zc3%`%0zhWVHI$h%B<Y3jDZh+P_hb2ClpgWl}<sy?z4qgfJ7zBX;osQ1vF>#z!
zov$T{I(ToHkeBYvq3(QZM}jY#j_*N>^M=MBCAR&CUsI)4wFaxUTgCfz8i(#$TQiwn
z1FIdo5FaO7TjJ+<=a#wSpl!o${A6;TurpWFaZ+lpsS}IqFumx3l+4?lx8=uIIBsZW
zji#On09}`Ie82<?!u4-n0ay@<Zod3u0E}|puI`No73~4Q9NVKN8;ygu?=S+5G3Bx9
z%glkH-aRkInano6`3wYNk=+1Dpvjn0WHP|q<%ogdbND#@KRM07)B;?6lW&*!_Zgu2
zehJ^^@NMCrE@1}I=X~Y#VfCCQlUo82zYeSgg6pcUaSX2L0jySIu`?N@oBgH?Pff`+
z2z1+*8G!y+AP@tjFd;y`2GA-F{>Qnc!Eb6QQ&Z>W%VzXJ{Eo;!fL0`jAZo|KgwlE0
zPwv;TR_j)V*<hFgo_(_tm3sbh3Dvdf&U4(rt(jlFT=<PNjpc3;9x^}!a9{5x3Ow}D
z4N^S9+(GjyJ8<VAk=NQqs<>i9o|toZ*#}l6BW2*u&w&T+^mv5XuUmyPZzR7Lz{-w$
z9Dt&5^O=sQ5-+2VNqp&J?)dCeX|$+SDw&#&J{M}`GFQ&$dCpYVPOSzMpK0^TpM8{K
z0IhFmQD}fTMP*4X?Z!X<pS^48k>fVPRXwviyK617vg81PPd@v<_^t?v4?fC1`=EpF
z0dmSU$iuK<BMy={h;#EL2#_Gi$%r4ak#ivHu`g-g!%E2M-dYU7WjEQ~T1H<9oay1K
zzpeh7)AOlFQefBGxHAT}bPVI;7+k>8AxUUBizBX7z`8PXixfw`fF*$pNuk8}H1@%A
z8U`j_j4@{?`kYaS!Sr|j^peR$`h%=si|g)H!n#>Q&(RkD$GSdL)B4()6Aymz-UsxT
zzy6JmkB?on5OL&LF=ARj)`tB>VN`VKKKq>YON=?Z#i`~q5w`&Dvb;W{UkUyX>Ciyg
z-QUab6;VQ;sTk_DW)2PxXm@wl9=GJ^SjL%6$7tS&S4>-5FFPM9zdWT-uk$iU4iIOV
ztG=KW{oir_9AN=84#B^p{YG(K>;3DMX*<Oc*?v9bDh@fq6TX>KSIpqhdN$$VkwT)F
zg!nb~;-kSa*Z-_;;FwUzOsr*PEyU{kA=;<@%|hCQBjY#wTkI|I*t;Go-*|ZA+l5EJ
zXJfu-+gFEkah>mNE)l^W>8q_TeA;^W!sYR?o5>T%J)Dv<b}NPyUxYDmU|EJJ4#nWR
zB8Z{E=QYsmiilT<ChmwP9D0rv1*PM17B~I;ByRSJA%-IXLjsQ6u|ltX`dFd&R4=}e
z*nkiww%;cHkQJ^Q#*vJHhvKGQ$6>gs<t=#;#o)yAXHWNOe{Z|SUKJLF1)IEi`_{el
z;AgIuRv4hADHlqNnl@T1Y8*?!Hu=V(l+eanpVJP7I3Qr1=jtMu#LO=G>gT_FpFaG}
z?`Un!PBmH8HKCGpd=ARmzSyD%adDHokN<VzHa{3eF?i*glN7=)m$}eeFDKyNgzJ&g
zR-`+IikVJN&*=E*$Q}<bKyj$%*v7qeA?~<xf^t>yQq+|Yvv=Rb{SmuAf+Hh`1QK6h
zh<PF+0ELnGO+_O}v_c$3%O7>^+Nl5_THYjSt<lHxIXE97AS`QHtA(iZ*M8BlLIFm0
z^i#aq!jSDRB8ZG*zVN_d3>pzgQBwj+Xen$aX5SZ%n;q}dc)k4TZ0e$f|M*J6AU*wu
zdoBifu5mFsc8_lUGuEI>XY(R){5%?sd47vU+HtxQnM3)BeU*eEAIJC@+GF7~9J(P%
zs4StcWE_$F5quHOPs1=a4mZ<g<E2e^d~|rA5#GJygz+WETyZ<jyK1`bw0r&R(@%`Z
zoOP`cuBVt?Tt6nDw2RQZhQYe&d4>>WT24#k9%C!aa2G6*@FL>9Hw)`-ZeF9m|Kp$Z
zlb`;Ku3fuEv)QVu!`dcyKuGB;h9Re~eEj(siuHxxP9w1P_V(Oyx?zWs>({UAT4La4
z0T?pcV%!8b!A)=z*Q01(fSceZzQ@4LW_{#G5C22Qhlf_w8d1Q4RW?mRewCnrRUb*V
zfaPko5S2JIO`_AfTAU(ajkh*eKH>d!Yn*tc(+6L<d4t~n@MHSbdmqxPul_*m=UZf&
z#OUGxFbsvm7qH^|g;<p>V1b+EW5BoxZi1WOCawp30dC@Yl#c`4oK9D0XZsQD?LM)`
z1w~;&z?$ZV28(_s4%Uu943tPu(+N4D?71#Tue*DZF6t`AxJ51}^^R7a*cF&J++p5v
z+djPd9WaD(<YQ=yBL_o&z6kqf=<DH?dG%ne`KbP+Hk<%A;~2E8w6P-J7xDJ_z8IgI
znh$Q4`#lD3=3^+In|Q_oH}U+B@3A=U0-munP-lFDX^2#sb&J4q`IVkpgoKQ?BkC+*
znM>ev;FBcCS6wAEA;}cV^oB{BKG-DVeC&2Lnj5<D@^$+7_kW~czyA?^|CO5*vGGH1
z^Kk&fpg1%F>+tZ9_V@R7i~3FmGsZZ-ZEbC71lCpN1jY*Z0^G#)fG@yJV1O^cO>h(3
zbUQ=uY(J*`y&Zczas(EvnlM#EM_|RL2XaL83G6w=rd~t7iilpKM~N6)TDDLok=9(7
z#um>N;rd<bWXSY;1Lq73<=}uXFen%8H{2ia1$+T+!WX~*U%(gOCVT-5Fjz&MZF!9*
z6^NLH$WJ7^sOG0yxMC(XE$z=FnEEspmulms5Jh!3cf{>pg_?D+yy;4sG(Ym$Grtdt
z)J?(=!;ykvFkh$*=Zi~hi0k2{41?(u!URr?!p)M#iUb@97%*-=cW#PEk=#@xe2;;f
z;3l52O5rA+|G~{b9=NG8#@Gg9m(p$W=IvYeh=jEpZnx`SGrf&%)2fNWQi;Y(@jpRD
zuR3JR^(9^sTc<-}`>(UOMG3BDsvP)mv<7#I?lP{Xn1yg<jL`aQMqk~(PoIDO1#N6>
zP@=&gytwt$PESuWBZ=V0*=(jl)|ECG3<iV2U@#aA##QBZAUruaqN=LKo^^pm+^e8Z
zV^aueDk9`cY@VU>0wbp0Wy@DMn@m|`oaYJI6avsTxQq2r!@Gz@tFffSUvU7JxC*T0
zBwV+UCXW?QL{2o3I?JUjb>EdD6w#U@;`$WQX@q1GaoTPXqF8&d3=E^-fG-ro)mpS2
zI~tb5O@7gRfw2PDgUa^>xCw58o8Ts%|G`agGkZbte1jPZ8xt?R`n9KZkuF;<A!fCR
zAQBT2uWB*KH=`Xcknl2}xjwxDt0ct#?q)<Cq+->aSl9Ma95HdqE01DS?NAnFB27Nm
z(*-Y1)f6(urn-@TL&kSqIQMG$ZXRk`7-Be5F!b*W%^%1Y3A=fuV{oZ=gCNy~o63Pw
zxJe^%GmfKA3>Y`Z;HG{qnw!?5IPg8@;V65oDB~F`pPP8b0ypve4{m~+;~PvO0v377
zlk#B7?1-cJk~f`(yMi}Lqy~pis)|HRRJFT!b|KMEVP($M5oRrAqisBGwo(K=nIXA!
z9<N?Dm)F#fZQb8yyU|4T+LJuHVhG^K#xS@qn7LnH_<as}JraDcbs<m{&&>kHis)9`
zIT*(FMG0fYh`!M03~&?N%*K%K3vhG%u>#!0SaCJDiRXWCb4edyD$QX0*{7cvA;ae~
zja0;9$jJPB3ZV$8HPZ!!$e4LoWjY+&rS08k(X#rbipCgLHPHIC-4AqPlIA3pXxx{m
z0%*utvVg_5C3Bk)x@M7fO-AT!e)hjKr?b;j+WOuW{ozl4rVl>)ExmH{#sHz`<4>U)
z-{6bN&ig(-rf1Kd*<%P;DPxz2^Uvnyrt_hQ^m$I)AMgdnO>h(31UKOea1+-9z8Jv3
z&B=61dpl3)>He-eW~_lVs_`VC=a9{3)lYa{^P_6C8=3aZK<Z>6VMmtKP$3dFs?Y|e
zDjGdMaoefI!i)Z^W||{w%oUqjndQ1n7WrdDdN7k1Lq=>`l-XiKrmiP#!(RRJe05&)
z(=o*Abit5{BL&0N_C?%B{Z1!@rE;PSZff}$+>GPM$AEDY+)TkxIybd^d~Sl9emS@a
zZsL0k&;QSvo8YDxArUIjU{hu$k%ky8L;WaWrS>jigt}v&=G*tc`6E02wTr@X!qAe!
z>QpV0vC5XVG94qfNF%UF#JEJ~pT$8Dk=#MSpMEKk@Jm0xGX}*S#v#%fLy9l*Fy#9p
z4@Vrs@DUs^6$AbJ2>%P@ref%un<+R_F^n~CmN8a<n>iv)Dc@tIbF=jC^!%{`+ypl@
zKie00{>Sq_xXCV+X|Tzgw{P7O5?+#X+&|U;CE^J2(zlUU5-E{{#PH(eF5lIOwAIu(
zG?Rs>nJ&3ppM^9oD}m@?4E~OTRO1jKW0O%4%ghbUMQAo#rLXRPL;w2nYkFy8gAxqk
zrtpQUJD<<#^z<~)4nkL3Kd!E>+IMghVfwfpxE}BYxQXjg01j{y+=MT{O=i2C$`PHO
z98*<QBTpfOamDdn2%QL|Ja5XU-h$>{MuJF_e*@^+TT;KXuiEENgVMi|Wm1b(QlC$w
zuxtfQ>{9MY)kKf<4<@;o>T`>j^XLt3f5Q&8!v^JH@Nwj0NWhVdA=MW{?65J8XaFmd
zo288vTDR=6LUCNxu>#x#H%s{*D~FrlCb$W1;`txkEM=@{DRgM`;MFkL<VUw}-6IiZ
zUWhZo^>jU^FnJn+)yJ-mFp1{&V=Q%|;f)o$o|DfDg?RDm?N?AG>|mjb!B=GJJg$W+
zayb{L3Ci4%snhywmA?MwTQ35uk5EYw2_?V1p0f)E4~H?v>#Jj*p*%k#FYb%ndFpxB
zBaR~#10t}7TMXYuV8whF=MlIW$B~ag-!-q8>yht^d~W7rD4(0m{33A^+ypm6dH5cS
z<G#Yz1Kh+j7On?Z6`dR(YXnv?JF_DKYx3jUKfLFTNl0`7^%#Q|EmV9^0qFn6*jv*}
zB|6PdSJ$NOiI>D8Lt+-CMvVJBpBp+eHh)g5D=T#W+kev+U*4yU_4WRg%*lif4-aW)
zXNQiCj_h%h+)j17ySrp<ZEels>}?mk?d@%MzS(R>)9JL=g~gvfeM$!h2gJ;-Z`f!8
z)(a(yt*opJ{x>mm%EJLneK&GsBK&<-4F-e3U@#c0Vk=-B7ARmrz^dGV%9$=RY9cPd
zLZMuhm)NG}Vl>OTvydSsBiy*PE)_D(g6;EW*Tpjunb%3YsHwo`w)sv-dj0j+>D_nV
zrMKUHo9^7X<I+3tyhCrj^%lMH#v8Q0zD|!HKXx~{wL}aq?d|Q+Yp=aVckkYH=iA!a
zvO-zgzAo*%`MkNgNjGlXu;N%Zd_IO4j{dGkxNR<m$U=<0387AqeDdT88DlPT#U5Kx
z(U!d!LPD4WabBp;oXGg#!2|0%_gO@mGJD_Jd&wS;!A(uWaWnTm^@MUO!ascY(DClk
zqel%lFY+%RgW3>dMOz%181j9=%#M%WefOR9xlN9v&DhS&<8o8QdiULRa&lrhaaFHJ
zm$oSw#^h#MV?`WCnPUaG8SVqz1UJD=aI@Ih8`v~bo<A=XrlOTi^|5gunT(hw-@Qxo
zY7B{pD;F{(Ms&N+r5_9lyD@lE7XHiLeSl3@RCfTs`$-xQ2!@U=*bN<f_rn5~(3`ac
ztcgC@qK2XrYoT}Sz0<3LbfjAlq+210siewV;%^@Qk2kyTvfsXU*WH)g;knQ5-a9jQ
z=FFM%@&CW)oZ$_%_S$P#Pk!=~0g$>!6cAVd-!q^2%<70EjwoPywbfSZ4tH1xIP@I@
zlH>mOzkjuS`SJpC&OP_sYG!7p+hgM1V%>YdykeaCG4?(7*rR&*!yjIK<ttyQ&O7hC
zYL!)1S!i7S0F8S3tN&hTPW83Om<F-+>h&1Zv{!~a@uTT+x+C>^+i=4Tt4BZj(bdHl
zU+j1BP*QlqZM^Zu)dL>zfa;=)E&?hu-=$v$ugB2))OUbeh~g8T@C5q~84yCYJbT0=
z9zov`2FOEg28?5<F~n2SIwG09BRV@?-5hMQ+#mQZw#B}G_OqW|ZLq-xWiHoWe|`1+
z?|;8qdF7Q|_V}XhW?e>i-E~*B`s%C4ZZ29Du@Cl(YmGJ5$hr<8iw3&cKo)fIK@WNm
z+aAwEw!Y}+&wlnZvLT~xnUCt<u?1zp&e%hnY_bUwi!RgS#qN)K-DzKsL3?eKwxWS7
zCTc61%VP3lXmxY&7?!GT=KfOG&D5JJ-E4KU)lL5a=}WJ)rGyZ6a@JstMj7Jh(EDcT
zEGC3-S+c_Sv~#6yf(HXgQaiteX3mxSKIf|0xmjRe4y@mRg8NlB-h69y-Ss#927HY!
zgb>Jh$U`1dJ?c@9Dq!{NU;lb_$|<K*mtTH)_0ymJw1AF>KJ=jl@LhfN)y4@>16aZe
zc{R8I6m@`W-VQ<%5n}oTT8bB!qK)U?an@O9sRLvH7Qz)hbI-*CMY|ZIc%>}Z|EjC5
z>UVke!WX^}frTsqSiRFb)Js1B|Jr+|Kl9KBP^yhF#d`=K&bR>9gg<IqzTbK0o#w6$
zu%tirv<K+4kJpTP`u9wIYur62&l0vdju1lgA8ELsG4t3v?zrQs&wu{&bSG<G<go9)
z`&J+Q=trxA4?Z~LR^Brx&szO?|2DnPT;mLv8fyq49eT=Bo>G1AgCC^xNWtg>`4tbz
zb=O_Dy5y2e+#irju5W&TzCeObBP6!odTRs(Z>A+dIvT%y_TUFUxO)5B-(GF8#TN9v
zko4PZvrV=B`s-KMTyqUuz-Fz8j265f86n4>|NQ4yzx?Gd*+lz!MRErA)njsg<Rc$h
zJ?mM|s&2dOw(QfXCvc7Xr7wMHwd0OER_m>|o_|k}+5Y%Z$krQgypesUtBc7~*iT-4
z0Y?Zl>;C39zq#n}t+(Eqy;8r@zMma(4YjAHytJh)ZD~te+R}y)I)(7=r58fjh7b->
z+GQIqzf~^(&2@NFxvFZGgH`#jPG05o!8s2l7^~)7bA`Clu7Iu5hac6VTssHW4>0)A
zkA75r_q*S%uDa@~>PuhxQgzv7mmze3Ssnp}w0Y5sUQ|8jInO~%l<>nhz3ENB3K9ni
zR6ye^U-`-cvbW!Ud+iFqQ-Dc*0GPmJycRs?F|qBo+ZMp_y4Ss~kWhEraYsC>0C(Ut
z{g?Odu)_|8WV`+L+p7mY@PXAXyX>N_u^1CFOE_TxSSbi3<O*;O)S4d;q1V6u^}M(I
z#U7DlT;@|gpZC1ynU7G*^6rf`+9+feuY)p<Cq3y&rLSi^;~CW(-tdNM_uY3d#M&=@
z@r&xIPkm~c*PeUsSv}@4k3m+&I|(6J<oNQJzr5OOuf2dkK-m2ehKP;7kgH<7x(m5v
zT=8%VX_zYnpaSd)KO*Bi*M~Y?ZOF()x9ZRIKM7FT$Q3<%1R1>f=9^dF{`R-+6C^Tu
zcpPwU?)C&-rz>QY=Pv7j2=mMpd5~2|Q{<T6>gS$M`^-L~%htkWZN}lsJwzXa?~~D*
zYpz+n>s{|EbJ%<Dy{nIW<RjGq2OLlxdg!5uAw+9J+oCfI%7~6e@AO5^NN=)7UV27u
z`m_#_nZDJ_#YWVL5})3qKUYE<Lw*Z^e%jNXhV<6f{UJgE8t7)j^)SvK{NM*<U5MAi
z4?n#6)TcfrWSreZ9z|zE<g@SOrEP2inZ@g{9**pH@-jwtk*zBpaoR_&$?F)e&&WRO
zU6;MS>A&BpoAvYDrN4yJ*K<c&t9pO^JR;q<=kkXNm;Q4_F6xbDe~f>hPP1-~Cj@5t
z*FzcQdQ4sxt!}FGJJiiqH<hKVo3+yF=6$NPWhE3!r|vftBBfu({x)26_>&ZiFqc)N
zikOQ0d_hR%M8er>Cijc%t0ZxsD@0bgW@l#8Mj26FquvmJd{0Oopy57%0dNQ>dc`YV
z0q7RuX6K!EF2vDKe)1DwL0&857J#QdQmT+h#~ynuQp|m15$}is&_4FDj}_0Z%{JRi
zTi##*1LCKI{~Uk(@zr;}^Bup9sSrTVeeQEZeDQ!P<kI`z_dZ0Ku>nPZ1tLmlq<8QL
zD(_Z|bDee8sb2iz7we;VJUs4kk25zwr}Y2vkAJ*6`|Pt32goRd6>tKyAgau%geZRb
z%U>?!)2m+fDl*_TBkaq#%KRVpu!r$rLF55&MW$PAwN-V(2`BInBillB?Yir(#s`3r
zS?S}*BabBKgx(Brj~)0s>pJ$(Uvr3@Q<5}3-fx~+o7cSNHDztT`OR<g+#)jsCz<e+
zu_i@VZo26vWJJ-!4}IuE)<YWrIbLi4D00<W6x}-Pu*0hBuDh=2#mGu;_{=c!cW+?d
z^xyoDyvP^xdHmxa&x<ADupw84Z6adHwCK~#H{Z<bgq|WtwWFU!u9seVDLIm<e!K(m
zn>~)yMYO7e{H5mwU~jkGcGb1lUR&LA%Pr~*a}@H3?bYDE0IEP$zvvzkoPHg0$RXw}
z?3vydGX4{v_yn&Y-fMKE=;dP{`&hQZ_fqG_KmIWpAraXHzwJlzDz@c<3og)B8$^@!
zk}I&t=*lav<blL1%Q|?bK0?Jl_73Z2O{@(&#{Ox`K6nq}(%Kc9@V)PS&l-_?e_1qN
zkKAjt9wAMQJ>F!zo)Gx<ESY@z)1NkP>s03Tl9#-M_Zqp`zhp}0`f|_w$&EeLP8$Rz
zIhFe7pMSpg?0E=8@8MN!FVJP<$k?nK*=x@hu`%Rtt?9fq@JF1oP6~3;+OgsKkXz9>
zc=qzXW2-#dX{Vh$)1NWxuRE+f<UYMXQigo1%hCOKBAZK-^_ajuose!eAH(lf7VUaW
zLKga+Mp?AF*{+Aam)d#^s5||(0>&=bd?|WXwK=fnL$V~at%ssY!uBK^@2H=H`sQlY
zI{kB_bp~zN=?_sPn;O|ypOyQ_0QV!VG|KO^3pr)(L@!Vf0G6%Yr$_O=n&*Axe)*i4
zbx%D)A4v%z(gVPOgSFOL3wT3J0cZ(<b9tVSK_pHA0N?n=H>w~0@Q27OV7CD6uYK)n
z1-Lx@=}&jB5Ebu#|N8+7WJ5ybeCiW<g%B%b(-l`-!TYL^Rj+;RYk5WhcnBwb0Ve4m
zVNt-td*A!sYXANBuio*FcL4ka{GWdM=>RD}1sL??xB?V_4kW<QM;{I70KW(}o+k(_
zWELQgL{kS5=6%M7tWrn+00+4NRl?=;$-4{aEg>|=9CHl$mGN)7>87RsZ++`qz!r~?
zGS1I@<}+mLo^TwVUgQBxb$h=|ZTMC^vGSQ>&FjP{Z#D#zbp;SV_qosUJmbk`zVv|%
z5m5Amw;f<>%>Y0$7p{mPEZ!Xo{d(s+-&vh`=9$$KpZG*NS7dp{8E05$?;e-O)kymy
zH@ZcqZn)tF1WK9vNhh5YnUVv&1iI-AkWcT(1gJ*}n!k34<D#4U?6VKTk9_DLvKO%&
zPrpLyyzFH!<2eJ!7xGrI9}qXzB1FmrY<JeLFZoJu$bn3Fk<uHsMKM3b(uEgZ$iC1=
zV`VGInjNDf4wpcr3UL+&heRTukgoL8en!aXyXc>S6hZKLhjmbw9W)k%2k)<+|NQ5O
z8+MbeEH+c&b!kmL``OPTMc7^AwMN=le{%09i;1sCy(DBB`C@GLD&4Wq$<27S+;U6#
z@aVUHALt}cCbDK9kwc~Lx4h*oY&cI~grdEScvY7z<;m)g0f<Uu7yTtm>!J_)0|Avk
zCa@XSFS2)!U15h2n>=ZY7wmi9^B%+({Wk`A6s;fqVx#=AMff`s40&vQyaSn~ewoiX
z=bTf<+*RUb>OEu=FFtaif5<rh&UhCYHr*eS->2;uT3Jj$H{11SWznujYb%<Rwlt5>
zn;+8~mv!c99#@9YC-;QsbFLK}SSQa1TyuS|=_~P7>nylr?q^2zjn%1<QuFmtK^ycQ
zAtd)zRm}qSC2Vj8xcY4ltU2vxtC{&3IkGYe?OY>s2?fwxKrgVxqX`)VBmfJiopu`V
z6(R+oD5T2=KJWp=3vj@D11JE-Bxgr7@lfJnAOw+jLB@~^&_gzO4ul|zkXmwZ0p36b
z5Dt*@lmH@-MnbEAdqkG^tE)d?LLFejxP?R-TQ?Yp7n1uxlJ^3=uH@|E4Q3vQB!Crp
zl?2cUNd%}8;^@6{hylaK=>3Q@pxHYBXLHm)kO%B0><~zjWE!YLK#(181Oyl_j$zhz
zV#YopZajgkLoVxtWFimq1L~1iAO7%%d7B{m5QV(d3IJ5d2kC-fKvDvpNIw9N%m7!i
zMz|<Q0q;nEz`r%)@xcR!3>%aNF5tuMQ@Q|%BTwj%LI>%bIU!}#58*`rk(>xzdP81x
zj&~b!z+NWngAO_f=%&l|ntteT9c20Lp1o!bc^JB<f4_OM_1CrLy4kc(`_CBdN#u49
zK!_)4!qDgwZ&8E+5`>HpSI7m#6rItRcaWhRZt5cRkT8f3WEUBcv)^<TDS=3F@P$xD
zYbEU2I}!7{?Y5hBL%6ySH1ye;mp=xadg`g>!nU#{&E(!(H;204T@tQ}1dQjOusphK
z9gwWZJ0u?h>x*CfqJ7KrkX^U$$-3xk?CmE%`AH-zk4!dGNGN;33$BFQ?zi85WKVtw
zK=+Vd2q|8-?1pFbny0NbLt@f#YtBBg>DG!Ku^+~cq(Z94hTE%bI4?6HlZY?5>Wb%Z
z@<DbLL?mL<_}D_ERsL{<$Tu&!&$J)k8aLmk!#o@17=D-gU{w2q-I+eS*<41`ubaL1
zTitARbDGyfSt{!>@Y(d+ifZYV_E@}x5DtHeU{*YRB@FSm&wEKIHN0X7FrAd><1Pyu
z@xk)wIX!T8zWb?*6yh{h3)3T?Bx+a7cdm@db2Xo^LHAt9EX0=kTJ$-Eupv{O{*Vj^
z89)z-0&GYi?K@zrpX34&k_4Op704LCS$+_p0pLa)2<s49hun%cgf=Phi~ulrO$n_F
z=n1G69s+cGKX8}?;XEdgT|(^?-WR-c;$elv(kA&;YBGxqfe>RhhvcLRA!Q867X%to
z1hDa5eI-AOIw8UUR6xtzd9aXCJiUws$O25Y0d9;RFcN|S)XKl5e%?=hJQWat!?@E<
zjKm5_h<E|U$V#zByw-S@n4dglJ^?<3-tbsJO7aQ<EXf5>6*8nCuE-78PXS)(l>&q&
zWDXfd=H7t>LsTFptnv6t^V1*ICo6NHx8@_f)qVi1>7l)-c%DNF%u!t)TEM<~$WH__
z-N|#r2%xTxy-Pl|y^#IZ?Y&_C)OD+A2*7ai9R5CeEm${U(D7~|XT&#R*<NG|5Y4<!
z$&enqCj`(Z`(m%MLH1_m72QWPef6tfMa&>N*fVyEJxDk$+2{1toLq=_M6~B%2;<Lq
z*@8g;Y!o2?P1j?feM;!Ci(TNAb>fL9hLGhkiMSz`crK9(4=T?RevTwW7_swgFv3rW
zF>ffOBRhh$%D*W{TZAK>w%*>Wj`bsZ`^h_yy}l!t3X!NFupDL*J4|M5l|2_SO4zuA
z6s)DWAndI<`;QD>Ko<0bhZjPW2N=&ZwhT#1zmQqRJF5L*+|#g6r+Ey6$I*NY<CI0}
zDHE_2Q>mM&*Xm}gn-h^mtDDnrE1H+K%rDYAYgxFG#bC`9%5TLhtCr4bt~TPda4&}$
z&iPP(gl=c47dQLKmdI+p|G0BJXRV5R`KYCLzsLKE;AVZ^Lt^p9lCT|V#RIF5SqLok
zBN5++$<s6Fv?O2&nDQ5Jqz!<Ugu9+08GH{I@hqqH)qyXN5n@NZ5JxWe7JRq+z<>n6
zJPy3un1Kzz8xQ~jGfwsOo3?<W_QnUCrubfaXWH~T<u0BrX`7R^g!lm#b;5ur3zDQ;
z#>SWL`bwX!$S&{7*o>VA7GP`c05A^{VJYTB_M;*x$GVSzZ$$`|@ptPNj|oMXR1z$k
zdx$SG2K*NS#p>nczm(c3jpT-);?bdQl5ES9MV{j#teS>GXFali$bxqYc_B6F09{N-
zA7BnNYnR08bjqB`GlvRTi|CL#ekXZ!_E+|;_Ss9_q(jIV-xoW_#n`LJcBp&@#)-6G
zGkD#ETuxt}NhmH%?F(P{LWpSXA|p19jFNLNCw7t}8TicjqSyKKUb^i73Np^gqt+?%
zb6@`<*!4$0*<2)=d$Ak(jNKYm7AYgsO=Zv+Qa|_VV@F;mAwFA<;3lv9k;C34r}`eJ
z&v~Z5<YXi>ML%T6PREl;{hT!D)BBQy-I{twawo<{YZKB;Xdw?O`or$B%SdwL*T$HI
zibfyeWo68+{NZB&7)4Sc?0A6jGUKVt!xz~+=xFe)M+2Q`v`@P|5vE-?o6Dm4|6_SR
zZo8S!|Ih28&ZO33@Hm#fZZ3UW(b|e>(aot@j|r95m#RUi;Yt?J+7%_%mG6B|sPn9T
za$eWV5m>3)({_;w+_W950P~*a@tPWvjw`<jsopPFEHbobQ+p0+g~XVhuV$<H5HnRF
zuG}lc)=Y>jT`ne$I0k%0HZEccAjtpV0~p=lwWlwjONa<hCO}2lp`0hYW_Vrs4M_N{
zq`!=l$5ucIFOd{vhHxF;U&1PY4;~HaUpru5=$J7H#{us3A41MtfO}U@^6h@)XcE1z
zyAF>PB$8Y~@qQ6@6!K(6y%>8ysQHo?4>$7xUU&ushzpklpv*C+WHl@yE5`1D#KQo2
z;!^<-%_Yy}Qj$XqSfe-YCy!8cByy;gtm}dR0XPOM$*oR$N!U$yfZ%B?^?eE)^CA&8
zDkl#xZU50l@)Od_8--UInej}FM^W-UkvVbzkphI%e|yh!eF6H26>@Zihz{8U<mVL0
z5YWcuc}gr;0;oqQhru?h{}>PmNGfCyj~bz3_Ln)E6B*dgau^BK@*5#YzQ_>sWXs5r
zhZ^}r4t*2$XPhCW-uT8hlDUvF_pA*Mn~*ZbN6)oU&&7KOS?Qe!^7Lsu2{#@_7URlA
z(SHnif2XuTD&;wwO`q9m-nAk7dO!_Zs17|#(skd3$y(3YgB(ymm&uZj=cHHl{kERI
zd$)an(DmCp*az=5#(2bf2hS|;<OxN0cx7qBBg>xDk9YG#wyyLfp}g@f3n1_xdARx%
zb=g0*Nhq~GLS8jnk6xV^$3Cs^(P_}l$&F!ndo@*dvssyb-At+do-)0-@9Sp9ptQDP
zQo7mNie5anEd7nJw52ml-9BljIs<xLsn_+&*WM)VD)rp%-e{dcQHPXsY7!-9K<RiW
z(k!(juXtpon{-(pbBL??4w_2w`?tBVW`zyPc_pL=iRDxNE7vS9fYhJUw!bWfPrj$$
zfQlsGO}Ja%w(8csn&SB&<O3Na5xP3aq~*((113U10JQEgAcEZIeI?WjpcaxLWCN%J
zCMBOndgxzxhg>J#&0|OC7_SOBx_|*=$vYCZC<F*V=}v?k@X=#LLw^1Ge+rqW4$z5A
z0!HO(0f6dlyZdsbuO4qN^~hKs!sdj(y!zFz4*6i*a=!@w0%!p#<5{$Otor$EP#V3*
zy{tDcKjAZyRtxt7IN$o#w+h=L+pJB$eir<W@NrtCB<}LtC{D0+njuovJCKHB$bU7g
zjp{2Sx@PSW7xqMmDg7ci5n2cs#0*l<>6`NL2&=MR<!+)Y?g7+qd)wP2zLsN%zR8cJ
zFM6e(dnK$Yd6r)Af)^nAJj;9#1qhZ9H2na;NOW^}*Z$ry*l$A95Ebu!_q%hFr?CqI
zW-kya?3H|Xa;_D7b@It4+haT{$<i~VR`;IHJGxJfBO`qxON4GBOXwSKFC=_ypKwKT
z7E&wOw{h_rM6?Qbi;VRbl4gJ`nyyFle?xLOiHlD0W=hC3!j;}RnU6P<d$EgY>mKh`
zdBEhTA{WI8g$OAJ6Og6-A!iwzNRD(>$T3;dd7*neW_=fOh;Wjy9l@1wL2|cG^r=7L
z%)CB%K<N*GjtsMIY%{wdyi*vmKG+mCtPV(`8@adae#;_{dkbxFkyGru_RZI$xn2x0
zh90lGNsOWS{^;L!sjbH(ZN>D<qSeh-H=B=Psp@8Ib*r0WDQ)SDBD!sbJ+Pt>Q3_mS
z$f!iXxw{}&hKN~F2e6Phogs;=j7_ZMgiFTK9X@1iq%q%rGbU%1i*TJfh=|gekU<0$
z0?YTx?-D-f-mH7PwA5G6{U*ns_G7z&G~mtUd%rgI#OK|{0GN=h954YAfe*k007pC_
zEr79{2$l9oB_SR>oU{SZks3fW0!(sbgcc%7Kl+!j8wk-qAP>+B35tPMkJkl2!<$8Z
z5qVPpkNTXoch%<{S(uN$<rM;I%?a=XmXK-kVeudWGL5ynugJ+gW3GeWgqi@Ua;)$M
z0j%V}@|?^7YA5sYA^?yF6D5;Bsl(j+0*w$-z%7yvnSfX^KXMiZdcXk(NF3hX$DlqD
z4FD@505FwThF*CWLJTNH(2UdbtZ^G)I!XQI0YYxl`TEI@060>L2a(@^HE$8XpA3Lu
zgbnfvVPMahzno6=nf^;2Z6DG<y6w4KKl%gQ5oHO%LI@*%4?OTdx~RS}jZzk=zrr?a
zP(fDEFA3S5U`nUVi)_f3Oz0i^fXI_5+~EO8WI97mWJqU_<#n6rQgXtci@aQ9BpeKp
zDufWJp6AvLNybAE`9en>K7i~`SfN8RjGIm1^<!U1W-bpL&rIX(@+cUmZVtO1@hC&q
zNur+og86rW+!G$y<4LIw*+`JjuCuKPvm+~crR-liN;b%S@<bLQdFeEQ3*lsqCD7-I
zOOKJ4bXa?P;;5sJLa6bOvrmv*2u<WLdtq-_Bc}~ok3uTldB>f`>s|71(Iq5vynMUK
zP1i7a^7Jvv^=P0MjmOYCj>+4K$?uO=7Oif!>#@{jk^1)$-E4I;Uee>Cv|93NaE7a8
zi>AU>O81KVOPweVZ=wI=I_3MI7tHm2GT$e&)#$<r=bQ3>gWVIO?iop4H2DN@dOR~+
zLjSbEU%4-AaL#8Tt4KQu+vnVu^D6nTkXv)Ea=(uxnu!B20IDR^HV)njK;S|pCrANS
zin{J4d?yLKfq^8lMfd<Gzzl!@7>2~5Zvk+;n<TLnHVC)?3)%q@o(CuZpS-owzi=p^
zMhTh3<4TfTpwFDV)3X#n6=`zt!3P_QF=o!lE&wcv?0HO>GeD{@{rc^M!sJ*%HUO}Z
zU&1b(P$tQ60Y$5?wz@R|qIi^*b_$s|0Wrycjl+1n2Vm2eew&oRTd#Sc2j)s%)(q*E
zVorb~a>}{_=|H)#96&Tl+{p$J1B~*%BUk;BCE$px@fku7>8VeE(pvG3Kwcsmwc&|F
zhsb!cIrIka(-57&xV?}uE75H_vj6`3^M*ol$?v6&#NhOa{OC2kCufQ4?QLFzp4&G<
zE$w;xgvSqgA`g)~bdJXhaE_csq99jG2vzd44J?z_P2;rgWF-kcZ%%tDM7HP2VZ@#w
zq>)u*Mn?9Z@Jz%yn?$B`*m}4}CS*fKbQJMIM(l$3y2n0fha{uZh#hjZHV7@`AOg!6
ztXod$<I?Us+r$<kU+DV;b#rjZA0m+MY*}nO?<I4gJD$h8PjY;9$R$KzPPHW$-mdN;
zXxZ-U1#&=AA*-FTX)VZ(ymL?i?=9YQye_q+(?SH1YwGaMLT*_PdxuW&<Yki*GLIxf
zg8k|repRjcr)yT7WgYu6q1@T4Y#rSRsj028*{2EpoWOcCE7L!QRu-)++VyDHqm@Og
zo6|pr*7It9EM8olvrjp3uEQm$6W8~gmgkf_pZKxxHN1f8VP_#{##7+7`c#s<{C=IW
zo<7(W@0<6!k<pYoL`F76PIG<2^4vmR@uVVVMMz-Bv)Q?7CMOOesAgvGA*$}K=4X&s
zGljhR^~~MX-M@Bn(`>c!Dt}O&f5GL|S?69<t??(T4R`87e^xs{1GoaF5^iB!3&kiS
zc9P>HC;as==bi(D`JF`FK;+h2Z!HW&c!yj*@_zs#A%hCgP?BgD$jR?|ZkY7%Qb+&w
zI>unEegjTPE?+;|ou`v~<`J+FLP~!Dt(lKvOb8Qg6F!vF<MiuY8H+mRY<y(kp5Mlw
zq{7<N=aizp_YBN2GWh;NYZ&>B%GK6<l2AFPtJUS5d_c&P^ljZU=YYq^E?z<b@8qVw
z-w6ebeCq_2_ap=^?elEZo>kUI-%ZvdCE>W{XzlA^O7(T~oQ{!OJkZEI<I#4(y`t#T
zmHx=dnk9tEvz&zIs^w|YFFo!)h@q)&4sEmgzq7Z#y=*?IQzuO#BZZ9UQB8)i<2h9{
z_MyH;(Zk3nUT~gw=M?jtF2)XZzf;@#UQh0_*bZ&_%VP5D;aTPsPt1k9Tzw{|8hP~S
zc;>Cd{*#~L)KVlDZ@^ljc2~xrZu)1FqSHCpLA{0EQTM>D?=#P1%kytZ{ohUVjg3j}
zM18xbum5H5>Q<zNp>Q%?S6T7raeNiM@F9EwU&Z^m5fl+Gyb$(Id;?Jt5y3lIMs1VW
zul?FkiyS(cHZ7hknWkxW=5X@OY5C^-052&v;gsJGNsbg5)`?A7hPibi=s$Ts(shv^
zn~Kf+`=QvBWl(J9-H(%FbGIwZ;p#_y&%QD{q<T3r{7?xje+*FtoeR!Nh;k?l)gF(=
zhMvF*7T!H!KwtqBjwFrEKwynP%VROqXM}NVBdZC<b%Aqemf?dQ9amzm3+m5vE%RG>
z7l{Z~8!SWTb>&Re9IIxXud2HHhU_ZKmS`yJxr>YI=FR0>^Xm1bxqC;bN;mDMGW&ax
zGyyq;oHNLa0#5~$tcSN0NS_oLa_eGKGLX0c@q@7%>jVOeUOZT**j(ZFlrn5X7qa~S
z?S7C9#JvL^Z7B2svOCv)C^i+Fx*r?9k0~}4n~F`v=B^-tbyx|3r34n6OkkbWFD=nx
z2g%(?SXmM{7}=N@E1QDM@@4StFrbhc=tC?y9KB!YkDi1es}G{%L7W7Z59}DbvM<>V
zGSPVt!UspLBLNnP!%1v6&!_wnBUO)>Dnp;Re81l#YzLtw2)Cn$l_aMuL%J^H>*>0X
z^_{K@*}DQgp=nFN#Fnth>q}rWT^DlIoeXw!d$xjWR<$4W=t6iPJe=SKh52Rd<~Rpr
ziY^qJYAbSJGxsx=VpDC!I<TqF{~RecS$t-LP1{){WCqn_*5v&_25y1m>{iZx1wP6K
z%V@wz0<?$F&jseSYI;LZ8O}Rgi}|jCtH&*=h3;5|uztZg2`!LV{J+Y#a>&L(HWtG+
z)lGAn48t%p<Qswa4?;UgUQKsnW}8bFvI}v#3<+{bGRQ=twv*bashHRdHhI1THczDs
zLGKytW`0|-eQdHJ9~cW`;QC^AljqySCa)_t^V?0XUpqF_b)nc?rL9nG>hph`Q*7dI
zoBWlw;^Bk)kG=75uNr`%<70yTx98KmJeOr3=fkqId>rz~h&jlj1orRJ`Q8NEkySC-
zyQlY5KyQdDh7)4m;pmX_3dgz!dS1~BixmeeUm1sS6-;qnm`|U-m=7OOQS1B<dsnby
zOHQ-x>T~ZMK(J<k{v|6|AhF<45E9SABY}Vgu$;{ZA%O%E3pN9cW`tNG#6P$D#2;!q
zIlfI!O>QNpsyicpJ-Jm$oRr&fQfZIl>T$8u^o%H9p;F_Of2nC0v&!Px_yANt$BqyN
z8ah0`ZaSWwkKiF>p~fqpbD^7|n=u|Ci_py&kB~*^X5Vwq5BHSL55&vTd4w>)ggz_J
zvNWlfmup7|X-Nz%c`wf^fSwC`dHL}ZiGYZO9OTFT2!wnUP9%WWi`5bGl~eJ&(maGn
zk{P80iI9&E0*O*KT&dHQ=8ItqbQaMv2x*%{YSgm!D;^*%h=`^E?-I|C@L*{V9(I!j
zfGK5h2qH$-1iCrVTH(0K{CIv@#JZ_?cHIo!1Q5Czx;fb%D|9p7W1*Yz9&^OsLV?q&
zRYyPsy9Lwbo?r&A{lPhjJ$%1sTb~SnP95*cpYK%esRmI#0eAv=JS%v)2$9H{kdk>_
zK`7~!ND}NAp@`N)k}q%&rB5l@Snw8CO0RFbemdHH5Ao38ql<?fWYOV5+{eR+EShw?
zA+S{^rqoTvQMx%Ui?L%K<2+2XZia4#Zq`8P=3e75mu}W{)9NOGy>)Y%wIcTavHy?v
znA6OOz}=63^uwQ+3C9Q8yp71gZcfTHc8^LG-z#kc`-A-1Hw72Az{HtH1}+9OkO4-d
z^?;Q?hybyBw<4DXN%P6_X0S?@7Zd}P(s&H4OapC~lr|+RlLUHox}#4%{Re&g_s_bI
z5I!rMhv1`HypMgZh`it<gmHxM_K0~JJcKMl7BL<ni`Zkuc*Oh&-3+~8Ug&(jr<CrA
z7j}C9aW|jGNHdNQp7aiu1!VQ4pcQ%R@<`FTo?%0~zNRtWc>L3y^`rPAoCTl+kUS9v
ze3*b7(A|>Ju^k=6Q{xpR-<!vkmid(kNwUEz5yARHIujCdOf2`jf<S3N(y%nI<P9BP
zcvyW_4-f4xM~(9^E(@pMOBQ{7kMl5&z-+oX%UZFAEWDp_S;V>-<1v>koPKWI^zs2&
zgl@(jD|9p7W3m4a-Sj*_1eSaXOR_V|LZje@rDLq$8d#?z(9Fo=LiL!O`n$Bmno3><
zhx2&&f@&E7uG$iTa`kvul8s5M|C+H$tK9R-y{u9$!<i)IG9cF{ZIj%vMM6S?v*sa%
z2Wt;P$5$hESV-GE9PyGrMiyQ_E{nEob{~%p1jffBbhFLFK7Y7dez&!PnfIBeZQ0DA
zo0TU7fLYhgBXo1NwIX!0ou5rNV~;hio3o8a?EhnrHOj+udn{(;@YfzqXw6cwFcYW^
z9O#7=M+me126}U4fcR;^bG|mA{aUA+I@&QUd~>%$?*~Le1t7o`5(46!6F~E#KiN~N
zBtWlL21@5M39>OOrQB95Ap2Q+C~ZB#JhPI~YP++X>D8+fefrry>92l-Fc9d`_ZxkM
zFt98OO@crm5C{YUfj}U@3#Es9O7h?#iiq<MJxQg$PA?BU;}OF47b@!`gl>%DOQ&*W
zU|@t*d@5{oZF6dC|B?WL--8?ivL7La$qOvnLQ*0Y5W~J4NZIIAj{OO6@usqB5Y85;
zT?igGOYA<u4Ovu<Ad($VB;3xt8wdmffj}S-2m}IwKmZd&xC$&fP!~76^&^7p<w|J8
zsLt3O4nWf=fNW^;F3XM85eUd$RS?pWoQDvJfX+#bwgg_6ax5@WN}_o@=Fev>*IuCI
zmXx-9fzbLwDHA3FmzY{A`ug*sb;@Yv*V?o`kJ`aQgO7e5`eo71?;wkQ*^Kkxb;Ag_
z9KYncsn}aL9eb@6yR4fI+H*XnUN;q?o1vRsJj}0~0H)SW#l*S^U~=6YUn^q&ANzkt
zyvN#cm+G{F!#uM1Jrg{AX~Dnx<xd3(ybvyjKLyZ4fDeR~t1uQe_bm|=pQWd?%*}A@
zE@s(0e0RK$trZ|b$>n?4P4=V`%V*=2$FUNRc_mh7NB)x1APEV~h(#rsy9at#T5F$3
zlooFEvU=@1orS*o!E5^M@Bc&}e)I?W#@D|_J7C|~N%QmYWsybEzxK1jK-K&TAu~^)
zo3U1eEJ8PfhZv8LMT|#`N5~>{Gjx-eJ9_y1-}G?*A3e^-t>>*$EOZTcrlWzNW5MSB
zv-x*f?(W)jylDELBZN5J@U)|s0XxRd!A;%xgbaZ94ZyFkt3a&QiqxRQ0wNI-xFHIc
zJj{~{7RO4G8K_u<K-oa0?V)`M(!~=CLYF=WP#&#Zo*37f82`dXZyz1O5O?LFw~xlx
zQ|6b&I069X*UdH$bIjBB96OMQSU1PVBXl#~W1*Yle8e6rbTjt<p_{SC8VBfQAaG(Z
zF@uQU6I8S81Eu#4K`DpRcyRX$Y_v+_!w*fh)l#<EAC+Hhv!1)6Uw2I;5TWpzGJWCg
z60b^=ylb#BFDkpDd|A+pS4fHILhnZkfzqECWBPRKpX`p1N}h?>C?HsyxUKxiXJ~t$
zIo@}hZU<RZbhnnpc;AK|`EU6GO`t8O_Z^QZbyIPiZr-Zz#yCy1ZhF4I@8fl|@ujzk
zbkp;5>ZX^^shggkLpR$z%%PiJKD}-N2;GeRf9(H5H=pM7-~8i{?JiSTR@%62g)!=>
z#RTH3^`MuGCCilaeT@@830}@cWM0yB<gY!BcqXeRDzB?r>CJd0Mk~myfrNyR#En)+
zdPO-Z2oR9(^N~VHAd*BRMwcYz_CkQsK-(Ha0#Jge)<R(I0b*k1fSEGArXKH*n;R<t
zY_11z91l*j9}nJkhzDlgNfz}>W;X;{W89z#-JEr;VCKEYqgNK8oADl-KsQ4c)9Pld
z6``A<o3Y38wsY*U*sT-1gJ%|RYvDBuh-A-$hx3Df^NXJeK^T+>$R0jY;#~<XRSYbL
z2;8>Eyy<KvJbP#iEV=eIMK9AU1WGBuC8iY!dQD<iNkU>*kB^nk8oWKB91#?vv$!z}
z$>`)#@5U&>#kfV3+nkLD0<2#Vdh_}<{q2*_=;y!wkY1fm^!oM5f0Z3vSdRjL;Ni&e
z@EBNw&j~Ec61o{{#T0ymZpL_oEJ8PfhZv8LMT|#`2W$WLpZ|*_-4pY2a7^Gkx(2X0
zv9Qo6u6i(GiWpe#fyI1B%(Nv27VqX{#xBGr#TeY`406z#6`D$5b>zB4U?{mHCO}Gk
z3E1x5Sm{iZl6h#+yT+|#bZ{@NBq`TrFE1E9kc<lp{I2&*=8*-xCwlw#E&boOzDeKv
z&bR5K-~Ew3_{s<L>eZ>=CD2bMR?5w})TQU;PU*Hl<~92E7~@jH6&H=>&f^;2UR864
z>*ZdDhVLL(I#kK%W;2Cv$^!rb+9KXu%hb`bqeZtktNS4=ysWXiuF7Z%rQL^*abup=
z8-ha5^?V->rpaE;4c#0Ax?F!jsQB)lri`k6bDEYWKvfR==jmtyrTS^zn%BkJ+o0{1
z-xea*s_N_i7v<~cSTQtV$KbHcyjDS6y(juNsov*05AE@|RtGv7K89;sh8?iFuh{)r
z>x+d^9RE&duJ$+2%R_sStI_VemO5V{WBaet%`fhoH>?L}y}Fz8V_ibj=A+F+2OnD0
z!$V6J?Ro08y?k`>FvbTn@4seEz(XG&O8>%S(OxT-Wzpd6Dc$Qn{-uD8)dm8mwivN(
z$Kz<cuq?^WhO=V4LW4~+P8E8|EkH<2qGe|{Rw<#!uM$a`IM*Xt89|;HuavfUYiS+X
zu|z8USsjTG-1z1r!L0o~Je=tV-~TSXdGm(;{FjgE{^5b{mSyd=xAoOrEg(S0E2+Ul
zd#C(#!-i&`Sa}ZCHbqSyYI>(dMdQ_N)Q<w%dq3uihcUaa>GA>I0vIAkhb!(e00DHF
zdl;6F={q+3_FSnk#w=-AnTu<60HLj$?G?RdV)Kf{T(R5OVvX?Fp4UKwrdpb~roHk9
z86NY1*HvhbM;mU8WDsH1_|-1=hx<Bv94y8sT0(FGqRV+zDQuRatu?L$o5uqynqDdV
zww2O#Zz5o2_Hr%XTJ9aDimgEVe<aoP<9yUcgw}j)=q6<}WV%-8E!)rX_h)VR1qcmU
zSN9b!Hj{gSD!={D9`vi4lMV2JPIYg~0-I!k6}|C!-OWQEADw~Nc|+(MU?-!-K0J)C
zf{pPQ!#L*vuC}><`~P%)`26LaLIDjS3|Jk<0a?>aJAv8$YTtj^`?e;>ao;-}$TPeD
zFOip2r7Dkk$oKzNNq)5^kTxzpZBdfl?&<06-S!My;zbm%pl}F)=H9A&WPTvww+5l?
zEGCloqYbp13_FXrMAc|8%k$pD6?jDh@1>!babgK{^<qBiTJQ2|U;qN~xSq!lb(R19
zzy7EEkN^JP<p2HWKheGf;L3BKBP;F%^WxBtW7k&Q9B0lvvOqhF4x<=jGokS*{XRp8
zyir*Ms-gl>Xox53Ndsh1UF5W!WO;F_D$D8g;+7Y`R@fzOsk9JWo)wLJL?Hr9;MZGM
zJP+q@<F0X!gMV^!*<FmofPG{h*XoaS{jb$(jf_|WwCWw-V{nMO^mFXT81M7q!s{Aj
zv%a6D$2fwfD~S{5Q~0&s)kELbW6r018NJ2udNiOrGGCTqe-ZVgvF^K!!JOQmw=J-d
zhGnjP&d8=K43A;bX*}tlH_aT^wlT}`ARIre`|gK#12*<X5Z>>mpX0z-u?ZY-KYpKc
z?$F?*fFN9WHDVPIXwapgIU2O)hn!BQ7q`5)%l%LJ@$-lLe7XPe<K_Ct#s7!={1Ml@
z|M^o+FL6IE*Cn6V3mwx%@ZwZ89F*l?KW81ytmdj**Elhgvper4!<z>5Ga}$K@xvx>
zi(*O<^iz|B##M_}tLOqzELR$<i;4nOer={A{lKxUkSp!+UaMK|a9xKCAA@!+y}<mA
z6LT5qudJJXWd0-b3)gGBkH6ynY(vI5%?a4Z?}fAdC1ae!Kk7tcek)|TOomwYPrqk1
zf3>c&+Bf+303^h1yK%feFAsZ6XO8FJl-?g?*Zgn`bZ#?$gu!A;h`^uOck$h7Lr_)r
z59MOq{WEaN-FLFONoSC>gmWuQZit*m&4-#Z=ktiL5$>GVbIvWZvz$kp*sy#i*A~uY
zN!r%yF`VV{e~ArHe@gvF%h?Byp3gTW{gx??a=H9H`|VBlx!?bE{>Zbw_o|O?ieoF*
z?|1H_cx%Y_@9VkKR|6UO6n51GnUYQp7-n%}7*7E#mA`W=u;wV>YKXNO;W(#%a6xv<
zt9jYDs<dWCK#Hdk7K4b0%XzufN3%(nC^y_Go1uzG^MC&Df8@^>2Is&2{8=C0{P3;+
z_djG{6{#I^EhF|0Noeq5T7yO*0*FgCsZ~6-m~`I5w!(>*`95LPd}R@$VhkmjB0Vhx
zsq~Zp){mEKgq?zET$WDrGwx3>t{FhpVhoXfhqJAA99AGG0wlo|1o~`R>C*iRv09Z^
z#_hVKw9zIOjtn8^kd1K#zNDEsLCg&Ts#d@Sr5*F<djM8FM<&uH0LyO1EIJ$vycth}
z0G7)pfR**a%74J55Mg#PM?Jp-xXG;=ghk%o<tEd42tfH3h<5Au!!qBL!#dVG(k1|_
znEMDLjZ21vK!^n$bRmG1@nrlnF9KO}`|`w;ZqtvSE-Fr<cN0FfJ=l8U8~p^%e}<7R
zsiK?)ozb8*Kf{*cDQMEm{f|H7j~AN$^T&^u>!0$+pMSo9Sbv1=!ykYAm;CwXf631P
zvVNxfadAIHPX)d&acz24MJ9>oMvYOWeHcNjQhgU2GW^9=Uk^`pcvz0}AtTav`@x*d
z|IO({BATFD(dgVv0IEH3N*W6hSyYf42;pcOfdCeOJpgM3vPs;x6SG>gNBZS*U-7|2
zQwo{@SFh#F4`uiBoOUf~3sZ*JUn!;i*Z7M7)`jVQxj&Bpu+p7}3`=Jt=qJAiE@3{M
z_B;Vt!um4?N9q?KfYsPOtk>%|v6}$t&SPqyz5z~QPJdr+li<U#41f0J(*Tw~1z_3E
z185qCsm{Ol1YqzPw$AVSadggg==A_rUlKJ}Wt;;vKc7u(oMS`S{u=Vv^5SByK+YEj
zh++ta%Xyr{{4BC$e&SrVoJ&W{Q!5<@Y;`&VznwU*Zt3)Qz4i<Bh21$8&hLdk5%2HJ
z%h5z}U%TNbZ{uZt)yFo4eiVR(x<CaVsM2`f4f&woH-LpF#5{c`AGmMpR{$T1th@UL
zh(nK=RREdg_&2!woL4eyR+3j1(pMtGtap!UH?<gdXWR^4WuDSf8%D--TVcW4-cCH*
zHUY-4W(Zk_H|)fbQM69Y2YjbY=G)R&pfs1=<S(oz%3BN%N#iU5!YUnsnEVD;St@o2
z&<q<yMlsF{@+0zG*XV=u75sBMN7!&rCJGQNE@xOu1wa$Pg1%uKCQu}fWbE;Q=q?`0
zldV@w2p2XGz*++i65~3fD_$D7D1fU)3&*H&K*_=gZ=B4Bv3jeq%L~VX*(SI-`AM#}
z?d!M~NNj5W%cjE|9+qZe?gZS#CK6}1l89UbSmF~X#h}gd9F*~RSKdG-&sGn0&k#85
zxmwQ3RlHR{SaiP;?DBXn<Bk2`($D&SeK>nQ$Q}UmbP!;D{Svr!c`F=^NK>tD2f!le
z#>Ws~fr|HYW<f`Wm?%u37HL#R03HGEoc|K}OGPxLN=5$@5>_J0xnwy9moa24C(&gD
zNH0(U2sjwW0s$;5Nh7Xv1*+sEImg`YG#*SN;wmyE!+UiKuW*eAfhSQ|gI7VL#{$8E
zqNyV`7S1XnLlfM~je~HV(XuR^-{IIFDIHCf{86Bmux=OEW7#bH3CInI8-e;9wnqA6
zoD+5fV2uQ@&Lur!7sk7Qs+J__un}QdmfHOC3&`c+r^Knx8*P;Evq=)z!;41%tW5u;
z1Qx=vOurVuvWJXJ@G-{kr*XRbtUK3i`IP|HQ}*4sDf2d!_74ZJu<{?a^cujDyc##c
z(w_ixI!bb1=_S{Vn=Gf&p#0vw7&OP`{@`QZZtJvp;P<_mT*_~+^LT41@fF7ordxXN
zgVL^lH@p`g&=lY92}#>e@9R^<TXFj^fujh&O`wKeckHpFG-$gE+o;7%*TzoWc~3=?
zqY6bVHumUjTSbe2&gAC;i2##E)z4c*g3Nq@9b*)Oc20)f!;Nss5RP7a>jU*HR$vX8
zzJ4#R&*dv^V(I~ixzUiNx~S-tsn<mc9Pt^jW1U6o*72YXzGg<SZ6e3lp;!U_?h}*~
z43i>>B4|Y<ON>dC35~5_54^$+2CAZh+Ray}U{P7ZE#Xg9o!ar&l(bsPov!MHOU0|8
zr2wF!$ow68XKkO$+rvo(4_o_iw>J|AK<|8D`o@bId}Q0ZUObe%LCp$70)o&h3M7tF
zu@x25%e~4;tQg4UD$OVvn&Uu`)1G6Vg`z+h?aUZNO>QW|40`d3iW=xVDo!+1bOkFK
zp}GRYIA-0C0VEcd455c-HUE}X-5^($OE~kMLA1UHr80UB^0|i$4^Sq7KfQu{;6`2K
zZIl{Bm)$ZC)DC*w*1Q%Ih?bg&UTGGr@m}08Ag%?H0dpz4zQC{l@L16rh=q@Th&mBi
zv?@QC4o;d{Ym$OQw&xZlLy>(hC4~jV^NM&d(x|woiY!Y?X*Gzxs06*z<y4YMDteLF
zT1xFO!cU^9N*HQ|Ko$VdxUV&h3}LGW4i_z;YPbsq#PytYH7%h^OF++henB++USr)j
zu7JEp#wj$%f#wDSu!u(eB-^2-T`zHpsOPejgcelt@kqCl?3w`(GmE^8YLBwOSvMPE
z7~+eGmHHrbWI0U5;Npg$Wzs6q0x?q&M?B{tIpy&TF5yVOIplmwmgpoN>$EHcw1K6i
zMKT<61^nGrPL`y}ePl~kTg&vd6AdzP;fOG$AJ|zlX=l%$5wR%gBy58R`zsn3n*w0F
z6n3=VK8FPk+<E!tGyG`4U1cG+ZQ4RC_VJCX<(|&K!{7;NHT*3mEoUxsd7pK!_a6(-
zHBGcIZ>@C$GzAd!puZVpaZ!_)n=lk>0s+ct#=AfUq{5x`M_yWW&;*m>H^Ibz11NRO
zaH3;etNrXZ7V>L!fYlYsBL5Sd?o-ImL3&_4Z$IpZf2DNg*a4xIr`rg>W!5bpr9wz9
z`1vQEua=VkUaRRakl|ArGR{uL!HA=pjM0vjc&k~I%?e5T6(#l`akcxK?--?mVODvX
zWLmyI-Usd$@9nmc8F7dg^R1d6xmGHA>g1T*kJZ|ae=AS}b6aA~c=`%3#BG~H`XgR>
z@)HPz$_C?3aPbI;0r|-Sm;_~G1_fp%BS?l&3$W63%c)(c7pD5)Qs7m%Q{>aEg9jt!
z#}ZDfRe`sD{{z%}TrZLSDdk!~uy-;D3q(Fhw^VC$XH*>pTMtpwVqzhdot(_XK$1uw
zsg|M;vj%`lYOQ;_fII?N+p0jWR7;BSjcowS8Bo&Q1U`X|GMZe8`$@uS6Tq6sThk5f
z09u%(A?Hrc{K5WarPgKWcaf3RHAuY!s$~f7siaT}RN^vWX68oete`(eaNkwTyd;Q{
z@ozO|ZE#YlKHL&INbhPE)4yZJo@udbs`J6676js51qUdZmF^v-SJ+`NWEvHL&&IW}
zp#7Nx3cM1fJuKCTQ=z}W8`{cB+LeHN(WoCw(X7)#8(2S15!Nctt!|F!N2-@nB65hU
z1wdn7KvvZ!sPn}?M22bsR-j~(FD;ozz(vSBqBwOlO-_lcY6I3uR14JVuvD#FijGI&
z1K8^N=wx`e!KwzYmSy2-!Wg1aw*=rvN!}VRPE#EcLsUz$)HKKG2>O>GoO;o_vW3_Z
zh%hPgC_3!=MWr{3fdwrGsG6P6x(JqNAJ@!BoBq2*`5Lt64;+gtBqYiSJO*F^)PTj?
z4K~32neW8D5)8g?QDs#}&vuffXye#cGI<Mt1>Y?P{7nGXFXh)=ynFTGyxslNnPJ;R
z2z%{S;)~{aRTuS~V`31GIj;#)A?F4x$F}48AwYFvhjcK96gNfL_ut$so9Exf-G5j2
zF%%o0j4@JN-CEWC6MoOD4}K4&-|tTEFTTC!oaX18gK8!%W%0mH6#)_2i9!ULq!K{r
z{FR#Dh_KfNV8<}p$M96Cu(MskFSB$Wc?GbQ?=pg7w7F#~aATjzR4*AA6iX1iK{EM^
zYd%kCaAMFiXaZM`f7<!Xc2{A@aFpB9J_P*`Y>JkHYCP;9fQom%Jx(-bf;w-0xT8QP
zq(d47PM3^P_}k`{Dw(EJglna*IH;hWg%pUQdROFMbT(>l2aV1IL|zQ<B({_7o^AC7
zc*prlqGt$PE3C$tminKoz^D!eDJj8D@7?1C=z{aDF9fh=;H6Rvmhzj3GJMC59l;$q
zhh&3j1hC`{0G79(aad%H*0NMu`EoY;3dEXi?=d^~HIu0ABg6iB9s-;BONKuJ?<B*}
z?S&5H99F6k7emdt7Ed8TOmh{uB{*5_GGcBv5at2{=QyQs*<NoHbDzU?Hzh~Vh;pN2
zuyX=#*BN^UN$6Fw483b8U><QtFCtyI3d0SE1(gELk#q-i3p!2FCQ2x!r08i$>8p|^
zRaDw?Es0@cP@TsUc(%o({BSFE8;BWV1w;5<FkB3vO+QZ%h?@{j5#RKQqFXf701LoU
z0$3p_dy<Go(Buk_`%Kr@dS(V@W?InqHWG9{Bba3#2%s8qkdgJa%yXC(*6ImEqt-dk
zCvgSjAqy<ug-DqIVS&q9ZM3*Xo477wP2jbFLd|kE>K93k6b|B|z=8DOe3%F#OzD?n
z0E^yZr<;--{`{6@mGizKZER)*F#ce7_F>yz@Pmf%cLM`YtFF1T7hUiks{=EX^MOvM
zGAYZz^;7^C(~{CONq|bVzQ@t?KIYW|70-!!m4r8#KnpbUrm?;0Hy)JOeOrTkgE-$m
z{Da%epQCNF4Kv4+ZR>pgxBtH9zEAgG&<2*v6DQX_KVg^;o_e;VfsT%sbuwgaT$rk9
zt^QZ>Jb`Jn@zy+TFw=OS9u&;LjsAW!!6qa8KCCc_%+FkC?AE-+$=i7B1TJv1zu_Dz
zw5Wh*bio9k4;ZFXZ}ugyj)1HN`M~EySPtl_`_-8bx?R^2SP-9KPu7h^ArN%XuL~<z
z3|sH^tMK$e$Wpua2*yZ5>PnSBR-Q_j;8sg7sA|Tmilm?FD@OoUm07ETzBmOT55X%J
zS*HGf^G^kDvCT1`KG^qOy<#TrsMrzV2Bg%DYT3P_$gc*7yHG;lYRDZ_33coOSX7}~
zsSpD90j#((&C-3qr|Rz$02bp2)@|DPF!5>J&R~)|I4Z0gVU|V%a0PhH3HnxBQj)@q
zhL!Kw>skl7FkcfFZMxKXb8d=VrKwsSM(bL@KlmA9z~-rO=rS^S)LR?8d|)xamLFjI
zl^<)?-5YSh&O)seOF@@};8%xmq9dO&aL%ssha)2(0>#RSpc_I9(5iPMNKXUseKM-Z
zqMr9f&suU6%fbUF8puCsN^nHJ2{d|1KP;ZiAxd&-j3ENcv@W7UWT3`G!dcfbIK1*f
z#-i2mwE<Nxu*wTmQBhQVLCMwyi(rx1BskUSu}Hd1petR2e|rGd1Y)TmpvuKTpbZfk
zaRwFWSumKdDR{yrL>#!;lyEDx!${W~4KC4i^~_>fh6bnAQ<fIKh-gYCE=wSYJ>C+)
zssm8mQP&teI}%tjNnmBzfuAr}fTTus<U_Y`o)9qiXIUe{VFaV}iBtYi&JWT(D1mjf
zHomEL_t#j#+uIE9R>vaLXW@SH&z=44Mrc3gs9q27Q7x%S2h{}^%{9iF7FflJ0N{Lp
zi`IrNNWQ-@s!uxe?|I1^at7b-3pu=BE(e>`%KzokSKqYZK7iE(e_tr7r7V7lT%rFe
z^dEI1ocScAzEVfKH2}$w0HHv`!^!B^sYO&HOz_GEjjr0&Fnirs+Tk?*ZdW6eBkvv8
zJjrw0ZlilKzPO2p05pQGE%l*UVMR0idqBl3<>0u}N!b1n1E{_vK*uoy#f0nt41j}i
zvR3(8G4XfsVl5eRR6MlXNh!t9Oi%z?D9~%gBo!07ESlwS$t^@2cL|RUC;<d1GDO=r
z2a2<>v<W3$S77=me&YL;joI(Vj-3+YjL82yQrTpwXp85}YI)HHdrR^L0d{6Q>{i_h
z+LKWtieb}9Pk7CQf?$UOqB?2YZC=59_5oE03rsjZ*kz8x3g*ylCI~`Q&iAPvK(LC9
zKzm(mKOTUf@LL-;AUiu^O!|S*3##w1apv~Yn;I+CmOE=ltA2Dqw`Gsr3@$%yFJ+rq
zL8%o=Qt{+I2G+fVx$;UmylKsv=0mG?&6aC8!`TazNWwAG-EBdZ3+zeFzEzeqL7oC_
zwZ)l$l*EdAg7N~MZdgEk0r=W<t3Y?sqe5E}<arJLSfz3ma|x%lMtK{Kx408W(a2H*
z<^)8KV1f2xu?1jNdo=Auf^<TfJcCzs6M!{4+Cp*|>s>az1f%*8S*8UEcmvT6Es<sp
zp71L}v?ZQ3@+1@PE^5f<(Eyoe-xMfib#KOcL{%y+Iv=MUIDbq6tHN{!ux1G?(hlew
z=bE=9;gd(|(0Dt`Z%+vAEAu?u7{#-S08gk8zB3=Xc|ChtsbS7TKToQIlK4RQ3`q|F
zr<AH7<I&%6bi^e&cRG!~mkIke!u<K}+qnMMbdG;m$9)6b_##59ClY*o&Z73N99$en
z#@eaQWA2RelAQ7(Fdpg4Qw9r&@{!V4W28!9fmUuzpT~=bi!^5Zh&C}A!*07$HmM6v
z_XvOM_zz(OucBZu+1_32quB8q?lm>@gR{K_2a6&f;TekSM0jLL#e6awb0sLFx8MNC
zKsR&Oj8Z;XVGF=?#T07Yi&AX|pahm+AHZ7L`U%#s2M*g-#rYg}72i%O+;?^j2rf+N
z73?(7MwD2!18QtJihZ#LU<e-J;xfHkLSL!{XjNU%>D*|?=%8&F-+lQcmB>=BfR>M<
z`YM3s+_e?3<*bwWj=Ee+%CLJH*rWvJhRC(<?|<cU%ym1Tigy%1rMMO6E}VT)k>Lc-
zSUsj^r*(Z;IsjA`BwEc<yn9vgqxk79Gi*1q9&<$~b;UL$FxzPeKxWufvo#pspanTK
zgzKjFyyttuk!JDDCuu(=6bLF-9a}w4QHHchqnMuRXmB=<y3qi<41!^O4cB$=JP6Ve
zh)O!!6>XJCp)q@^KC-SXBk%V&+h`Og>sNGJYi^D!iB(ZYt2##-my|*q;UAK%M``C)
zf1+VNO?<E=P}_zN@SqbKsTRz3*d7P4?n_`1%$?KURX_8pJASbO4n9cf3G&_}fAL^y
z+)+w+SBw2aumQFceHlig2Zg}emKHKr=Q*Pw>?v2knzmKH9E$Y~etgP6{dV8(Tl&g(
z)*O5ZmE+Ub+Yj*4d-o&$of0J$7e*F9<uZz8NfkkuiHs5cORW1@{5<LyZIN?;Rs^nu
zQd$JS%&+QEKAdH!!1U6vB|3OMGLc*iWMVnJ0_kTuh`wpiDIPd^14N3z4BKAO)QbjR
zy)VHcXZe}FLVeO}oDFGXCN4Az9q*uR7*&+3d-QJqA|jn`i8!E~YB+_8Ro+^T5?Hu1
zwOyQgl#vhiv~a2aG^s~G4ve}1+XG*9lkmFP6h<HctJW<E0s&cZa6~ASg@=hQA|t$r
z;8rc<AYsj{`k?)~g86)fUZLt$uUwtw>(kXY4S<hg;vtG#8(46rS`m-><5aObp!pEg
z^LCX$apfqFDCMMDKxW4$161G%siKoEgm2I~?Ag3RmBE{8lIYB~?Yzrf@okVk>qLRN
zs*`o!Aj2J3<NQ|bwJ74=Ic!<a45h~2yDdcGkaNRfJc;O$^lHi6lwGG>DHyNfGFAqL
zo%9>*D;_!kYe1C05jXScWX^_h(HkrqXj<0x|MChYXa=NRKWO<KnV0sOm^JCSY-W+R
zjbp>p7LAdfN7!P$5oA3+Y5_yKctT09k!7Kj6#*&<KaJTdn1<;X7A?&Cyv`C>^tTPI
zSkoa^AQRw8$0Y+)v&?2zd6pCydW`#ZIo3rJ#42%9b&&zBdb*$_AraMsEEaT>fMB>%
zzwY^MX$)S`Kr_UqA??2sz#?4&9=B=qZt%)~34p~?*)IgJa1?q!f@{;A<R7d;c&HBf
z`3%x6`8PpH_^Qc{+WCH!_)YKM$j6s<_+pAo-}vY^aP?1e_OSI!I{a<6N>2Oow-B!Y
z9y$AKr!SeT_a6wGx!A<grr^_{of~WW6eE%c_!NFCwZhlxe<p(}g{2}mGEOp#fR-1i
z6*0lgnDK-9MpcW9&t_dL;${f}uvSdGp$g#c%pXrcsIQqy;P`nKbPggkLk8N@cOSMS
zW6t{wpBYl5-)S5f01FBYr(Tj*$}~WRfxG`y*I^n;$n2Gk2Fobr0u|tKbBS0>emq7*
z@1}$5Ch*s)FMM}1;t*)Fct$nR1tk#ZlyGPjFzX%DM5?@t1#h~+lZL3uyR%Su<9f3(
z>^B<8Rad^N<7ym;lU`uP(<z$-9O;@&04%EA*xn%hVg4LD+WCWpxJtS)h$Z5|6&#nG
z_ws~H6TmwAN)Hp|w^g0`)Hj0I1Y+3`TQrMxo#+RCv4R7R1060JeyR`N&IpF1j~T~k
zP&1t9O}!~)s7<lUzmm*!wojAB%|7KkQ87ooyC$9z%qrl7Kv29>xtc?>oT>!ZA}^~G
zT(h5s<>_B4*7h0+QloNn_BUGOmLEN{(R!hCZVb?7;RJHg6)n#+q{WoD0=Oot3d|#V
z$jJOv3Zzq>jAnIeDpfp5(^)4jA7(3AJBVq@X2FG0yaE}lcdjcA+UBVY_ztV_;cGN?
z$KI14e@pp1#tH1>VMYwUnB4<(<Ah{?ax&ZBiCv}8^e=m*zl#Lo@2Ktp5f_5`DKUjo
zELQ<6<D|gfn6sFLb#7#2m-2c2H3I75yFKW%fAI|+iGRj%a|iGAPi5VY9f4MDzp)-)
zL)z`wR^Hqjzuu-CzCo)mF0p053B0<W*U1hr4j1Le)rU1lF~^T%-`mZ{-Pc)E!4q&Y
zw}?ln^0gYF4XO?fPgOt(bwSIpQW2C9VVRf7RU*sJmg`~W$D{P)e}iVt;;@{4uyM$R
zSSy%>67a{5PxiY(Q(h0?TYNA4?kAL!c(M)N^&v}n8x2q1Iku1BM>xhn*My6VQ<qZX
zA7-}uooy#~SrNZaP`xkCbo=9Aj^C-1Z!!v&UNWpy8@z_oj=#S_zuIwcFmki~jkx)A
zx}B&0aUOxCe8a23gboH{0-a~k$)Xo*)Vv-DCVj}!>T@|&+%00ToxZ>W)^XD)zm*@X
z_kB%R|9}q*lp`&2AA5q-QFn%Dk}iy?Q(T;MMy!0x)Msr+%0cNqhlydx;-{(p5WXM1
zmemzl37YJIAef<YS8tnF>^Y~LnN!6v!nIP_+(x|h_7lJ&uzV{+3lLb@rdQ61pYFjW
zu5050BfY9#nP_Jf{B}&bG2I$Nf<}Dj%xx*#l`les&V9v;9T7Q(hr?R4e^W}CX|TV7
zx$n;{&fQ-mb%j<zeJ-b!80%*k=pa4&_~Yg|J02<+NAus<#*tIlS!_cMesrzx)!ba*
zy=hr4VfLe%Gv?d<jm{qPuit$5$J#~Xe8j&B@BMbO?aF)5FVp-^01LgSz`qKSEr;o(
zLEfj|;C0LJHrVcxVAU92z>|xehnSr+t(lBc8}!S4N?!Hz;Wsxyh4rHBWh;osWKZ_F
zjvc|4T{}p41WD$OY&idwJCHcqxWWD0c-={G98TK_T}N#-n(64mmZD0n6-p2w0#c1f
zv65l~j+a)DRi&RQZ?^!?WWAdjc)(L@ITW3qsxyxn-fLAOs(?{mj4KpaK6o47wraOZ
zGa@++)T1kmiTDAPzk%V>hP}s!e^;P(kgPra;ez6n7(9LjRlGVq_-^Lof?}RQW`*zY
zhol(kwDLJ9V9Az<Ak%>m*4=lx`15O(`3Hy=U?tf_`&ILY8AL0+GlJk03HlDp=(~Um
zR5ysitiDKQpZU}lOq2lim&N1bSb-M_JUy?8#j3t%&d}T*Ui+2wXYSnB^aK+_kJSmJ
zjtVvAARxm`Ra&R?9HiRO*mnS*b#R_I$H1G~1AE_vi?~=O`9#P;1qYw6&zENg+<5;5
zO;$6PufR`#MQC7}>9orU(2k~fsQ^=fTX0=_l(iQB*8BR9G5!6+_i*}F6a2?GJ&;fI
z9kcHE8`{9~Dk^Vg!>A1YBpjZq7BbmhB17iomn-08EneJ)))TNQ5XwgzVn2(FOgGwS
zy9=eTQsS!B2P3Ur;+wrlAd5_;O_DG4zpF*?&_twB_Z7&5<I^UAX`^<24~P!nsC?ef
zVN%b*#tyIx!`yx6on(CASvh3RD>W3}%gVShx;~3$9h`9qZq;+!MufR7!D7+=QP*<j
z%jhESsVO6l;}{20GP5cr{20uE>P=f}W+1RRe;Vo5YncGrgn>fRTY0F9kFGNh?e3Ov
z>*m7aYHmmeK=4LR11uWDh+m0oGpO6o(}P1$=-9EJ4xj|8R75n6Cn=Jto>lGehH}jS
z>XzaW`r6Dq$J>_S@1E;rL(X^tVfi_yb&?RFddZ!`5BTmU?A}0J&h%~Or5V#wXTT;?
z4lu35MJt?L)5gA)w5I9nj%qR{_`oPBBc3_INn?E79_&{I=@)j^23XTYkml!o`B8q(
zRNlvRo~xqkGI9P^nTQba-GI^fIaFG~2(I}~WnNqJu=A%{E6WAAnDhM>Md&$aERIRG
zvzAIC$uu{m;J5AC_n=cOG2Q`V_+;2U0epvvci5UHa$%W{YM93@`ak^w_5s8GKYQ=m
zAUO*&i&5C~ydRVN|9_d}%Q@MmvbJQ2i?4l~o>?@@8e?qJ7_cd%(go}d&s{}*+Vyb9
zG!u`xcBh+~roh*(KSRxZ(|xE5Kh{*o+m-hn^<rG~4YiB*cZsD(sFy<HorCnF6aumI
z&s)`Yv8gH31p%FX>;Cg$;e!Qb6zA*Y**_5<W@y+22f$YPXqbB}*nwj?iHJl<Z+bKG
zp>;lHF0yl@h-8Kjr0`o&O#jrQpqmwjKVmw_Fhy_1b#+T(78sZu471=ITFD4sX&f7g
zOPbdr$v2|I*B=@7FVuostTGX&pE0jA1nv_w(?G0nmXuD<EBM|nEKSi4gH^>~qpVw6
zFPfC<W8}5T2KfxLGB0aj^=K8KP3u~bCUE6LKm5Hzbo%hMNVe0iW5CRhT?g0DwwIR2
z%6ZBdGEJ<r=7+qXdw+&sky#YH@cB*smv*iR@4hk-YE4cJ*xld+;Py}Ca>?k4r1PsW
z6?Lxf8t<!#rB_|+h)KZ3lqhAawO!mo^{vt_Kp>#ygllYzm=pWMq14z^X?w5sspxpM
zH6SnrBJ;2chLlPZPI~z^o-xk=*#26Gxz|An-zg0IL8d{x1LWd+zN38X?PSr{f2D)e
zx1*<u0~;>ZuedH<x_tAfj_@<316$EhmQR$(intxHgwp)%L%Hfm1||)3uqueDpYd6x
zoAO!lZ(L9;IeuF-vHl3KbxWQ%iAkZ7x(mNmx{1ct4RSxGIW2@+R+ik684J#+cME{i
zlRQvk*r1Vxgv>1Kn(zT`4O)9NAyml?rRz_W?&Li~42{Xgz?^{<u8qa#jrckf-Et{?
zd4|b4FC~o#E8*lMhC5s|NH!4Yer5ILg9LYo{z!hmx;%Cc<|c=auVdzu_j4rbz?JJ?
zFB`J7<4UOB2`#2ds+J5ckJ%-8`8|_fN?`Ms+Ms{Ol+_4;n}i>~^OA&hFu?A~n)VM^
z>vwuzw%WzX-e;1%_(inyT<Bmp-w0lD4M@_oSozW2WCcturirXJ(lO5;Nvr1+bYFuX
zckjTgIO=G1%|mtwVoO^IMqDnTT|}Wr4b0-NC3$^TJLIq9*Xgr9HX4ILH58A}<4bgm
zx^(H%5vVRcasEUZnXN37X2bMJ1wJ;z^GUQ53Oi}LnhffGVhA_grkhR*OdHEIuhOzl
z`u3L0EYVF9X}mAKeCy>)TAzG@;|}80(E2s-m3++#aSYg>dTtN`7lt{M>p*guN;)mq
z{aSBCHkrm@-j?wt@j>l|R*s3>o!A^FR_Fm8ABdgyk!suHk6SrH5r>&#0q_YpUO_0~
zEA+?9!(KL?1&WU^>AZ2|D`!y#03Ek)`a372CyZNs1_!`yS){k%uJQuzrI3V7(CqzT
z;8Y8uR6rHHUL}yGF-di(fXy+28d4T-h{UVD9E-F=p^qC8C^{XYw<%=w=YyARX~*W#
zH&Q(pR>b8b8xUTxc6Thn5N@oISDP~1_W>DJ`zCit=6DJm^mhxkU{jP1qWG_p_H?zR
zE;3$R$y=~tsmsu(X`OcI(xpom{|5Xd8NXTO{6UgrYDo4`%D~FhkJ-n53cSfy;tQxH
z;ikY=N;fqNGyrS{w!*v*$;0Gp`$m}}_iBi>?@%oVKhs_E+X)$X--oMm^VC`-Ydk(0
zc@+l8HDKbD=R#utM&zAd+OqR_fsB`QuVCc6M}jU~L#ke8(!!JI93(VCYwJHo$Zvnb
z^mPygSZ;1!NA5dqNanFbAg2bzqJ@29TYjrq8kqv(V5WlrRu|Pk2lm#4Y|NS+EL06_
zI4ELu+l<w4E!r-3z6JTa>7rj?x7JZg@O0jeYIf<;r3-Y+7iwdr&jhg8tf2bZEUfs@
z1VI$it33gb)d@-6V+SKxM@S(~ajNE2NDf-vZu5Rh;&Bk_Q81;OOb%|6N6ZBkzzQia
z2e59Up%sWZ{cr9-<0MID;z9H7cAm5y43~wtqul{!egPKOa4nRzYh$G=KxSA%@Ey&h
zOs7r0zqlR8`szJ#V(JX#VM`A5#3=#o`9>kE#QLbN1E6s~&dg4hd4*vR4XuW0!4qOw
zj;CGjt3;}mB2+uTiD1EX?FF6!?9KyOB-{FRkB9=oF8gK!+nS3JH+jTfJ~z)Yjgnhn
z4xrG@Qc;+WJt9tKPBLq|&^D`X&yugsaw!LB<!IVCSKVYfKOi^2A=t6vIN%@-H$fc*
zRU@^VtP}I&2+-oD*HHcaJk-i_ue9*r#3_ByXL<`Y-I|)|mG2IO17N|Or@#LtjI1oT
z9PoBY#qO#$jv1cu7yt%`Y!HE+olFOe+4cX3mpV!zvf7n%QpuS`YL2M=4=JQDWDH9w
ztM5VX%s(NLqM?+LgxemcQV6#oV-ox(IiY#fQdy^x&9-w1<l|`OEQHK{dz?eA2<5We
zhCcq2fzWq^_VeUEQ*}$@<j>n^9xW4TiHS)M>6w7#NosBy0jV1V*XBhs55fSdj!f5t
z)J8@?&gYg{C0EiRV>0|$Obi4H--5Ik9^MRIL4w73!cBKN0G6Ykl8(m}zy95T8j;0Y
zaQ1a3@{E@)6XH*SaZr2nOd;xsN6SO&59(c7J~{1kGfE%x7m;0!rK)T7N^hl0+~~#+
z^JsW~#qR<bSvW@e34P8dck;o3_StTaoW38|A0=PjE^k>Jho19PPM&l7WqmmwEJ6<9
z>GH-m5U@LXrJ9f8JDrA_mIo_OgRb_UBvnI7PPVQfmBa<0Qcz06O#m&?wwl7SDtnvK
z^;oiNBnCN_lJk(v=O_r^Ubwq_vtAe?LIhSz17yHyl?OXz$34G}b-Xkc0bkHx$iqC|
z`OksJNxIoafgK#`626D`i}{8bSj+GH!aES`q~lu^u8>|;0<M}^*61Nw0TqGnY=rdd
z$e)8^DJdXj4n&@2n}w6V4nlX;g0w(}|M>6X>H4ZnlN}Umv`OK#eVVtpPGd^jz6I*?
z<LO@V5OC~xqf38x{C+tGnCv)KzFDA?GJKp@#x5!Rdch|(tS(({((nEe8NsdTIvXw_
z)xP*PiS)G=(t#_4VA@g=l5vQHoZ$U71tDEe%rvf25EDYx-Xep6V{R&?B<^#XYEjhO
z86j<Ob!~$c?1SHB@FT?&?+h#;mb-<=>U2d9L^Qw_Ro7r!lF!$1;B^phg7p|qA*nd2
z!VleLqHGmBZhva)0Vr{UyX_M`*7<gN7H?}@&Fgi|t&6|ZYUMiUg%(`k>W{O0-p7b4
zOFV0uDB<p}%ru4X!VOfbYFO<*kZr^5$hNPv7Ht`Lgxv=2u#s#1@EM)L?@bMHt@&2k
zm}q(Z+*~=jhDr2`CAmrStB`U{TI#v}y&%ci@293asAlI~87ja!Z&VQZKDq$ZAlm24
z^?uo<3#2b|+j-~F8&yg5Zl7vO*aZv^NSDs<UYV`&qSln3^ZO-Lb%v_Wh9^Dkp{m=Y
z;r%ko2OriSFr;wbj<T@y*u<1HO@n$BBxywLx7qt3=fInI54<Hxp2dui%l;qXzY5d2
zA>7o{AX4VRiZ=&aQVL+GNOoH!hFs;5`SGiO4BXIIf(AZvul5SG#ADU;U6sRFnzjTq
ztN3O)6{Y>-T*3W1a=v>FTgpXb-W_*&uO4?*%Q~So6T{IjL(-0itm;`_k9qyDt$p(2
z{6Ycp9|I3GAYKaywIhO+t1|n$7q!|qXAIoL#yp=(3#zO>?{%KHwn;>dr&TsTQqq7|
zEQcOcTVi;+<jw+OtW}n5Cnb-QC8$Lv?QbyCN7_3Zl4o0UL1OP*Er-7o0j!!|#zP%Y
zYPp6}UM)#_+pNdY8pK-BWJ~1s0u+KgA8_+6S19$GciWp~286gjg<AzyIf~g{wS!me
z+E=T>AFS)*NcNf;IV9k~(F|;(+qX%V-g`S*#dmwcV|!y9dEBpfGWoAQv{9nJj2CMp
z3<eTz9)Yst<B~}ydJLok3BY?n6Xx+$YDF;!KNTpz7RhNV+*S%^C8{}Lk`Mo+`NBfj
zK9jlU=7|gEm11Ba$-bd!Zqgxg2wt7;`2c>QYB>T!x<>R%UK%OUy85ysfP+)P;xJ%I
zVt%DmXlzx*h!Sz&m$f_eW6m?a!OK#j)I}`o5`dL~feiphvM2}>3;tvPeyp`&Ykx}p
ztoi=7&E*+`cY|rThr`*ypjQB5-c;ISN8SxzPCUE^+i}ORgM1a#X<SPmNaD`Qgpd`U
z##}2W@3$pi3D<fb-tpd$B{1z`L%XKo#e@K$kxr39=H=6%>A*S9t0WaOg1+<VwIw%q
zJ~4WqNlfd0LRegTeNEUd3oRFG-?ti9;PRI2St36QiA5qL>7PH?0F3V;o9!+QyZNbg
zp|{#`b?MT(TmGiz+wN?4bt{{b=K7j1g<tH91^DN1<T2B3sYzzv`oiaywnkEbpz^>(
zC1_Owb=R(%;|mG<O*yTS<_mK?rKI`(D0r3R`bo}VqE?3iRj%npFUuJL3-C(f;8o!2
zfPDG!`4fKVhZ(c-Bf=70*b>UhUIoT_nv)R2PtU-ZsEJPQ8%!D^Z_uuTgGB&7!+RWj
z>jca8o4gE1OpFPE!HB$fxO=kWmU7nIjc)@8*r*)s15AAXDr9R%h^@BJg0;j(`)kLl
zL+^m6ACD8q8{s&J2bfRjVb@n4_O5x^J09%R_b(c7qXUy|7o-1K9oTy@g}|XO=Y1=E
zF|#_l0a+?63P`zQrpXsG-Y=kf%C@?PON(73B{UUW)uXmw{e~!qO}^Hy0vZB-vN0ad
zy9vIitxdev0txtD45*8}-}bY(CRQtGTH;&Ax-MP1_#!{Q2Twl(UKJEC1GT)r8eGKs
zXZmmEz;aj7HHg=GtP6zY$1A}r(-5JU2L{-xYNVVad{qigDcQP`v}^okfYdFCH^Cca
zKWSc#>vq~tI(gUQS~jJ`(tVx-LzCOKaRaPE_&3BcQa%q4!1{a`5mVR&@@Xok&XLtl
z^J8-^4kjvdOEu4X*+dg-lPP9t9)%T%k0J0Vqqu0E!1bNGF&i3o3+YgYG+s{z%<)YN
z^prNK<Hr^V<yx?4i`(+!++jXQJ{1J_2PNflzk1w1iIPtQ+RSg~fhz6;RM<cUu+o8<
z_*yWP^)1_eNJ_v~16((4Yp<soMzOL(=JzU_xGR`dbyn<}7eUP|$+9iy(wa5vUj|Mw
zE%5>rw4KCM5xDcXZ#2I15CA#%(i@(>u!R)n!0?m4w&TU`JD#c=z6N2^HuNcAN0*2w
zp2J-#K2kWayb7T54JIsIx^&^1N&tR_QfR_&(?;qtt^opQXK(HP`qAr%p=mc!?hBiu
zX&P;{HZW;i3Dp&FQtl7~ufn`l?Wzo{x;a1AbWB0Aq-KRQGePRL6Ip^*Rt9L`{zn#G
z>jMRu`+VX~B@kXYfsRD*D37&@7isS?0MSQJWQ;GKrg0be0mo%>GeTyXN?7xB#eD*P
zvI6R8*W9aO;`M+g55bz;q%d=i;I@-3X|V@S@%<_zPm`K?Ijo&O4p`CK$uVNZYn)aY
zZxhLt%eFvDA_I0fE3fmOJ#K#FO@TYz78O?$4R0l(VE>lp6I(8|z$dv6^uxe;%-5Ua
z`^}!1kB=<dAE^by37V*p0ScU;M#J`a>UMNtBHc`mx_`^Zy|nMU6^71j{072K!W0no
zUfe5j)plwkcD7&{EsqE+vArJGpELEkG|gK!-4ydaYarFN$#fss(iTCWf?zncYRa8B
z!t;ek@jJ~2xt*&M${&x_znT!*DIdfNS91a9#^V>zyLajIPF&f?KQyLrE$uzlar%zL
z<@<3>3xPk4Bd#3x0Qzzn5crR29FK$nLryfSyfL}ZID?!sf-CE&JheKPR`b#llYE4m
zDIWx6()5&sR2^bAsDM>cbHH1mYF^#U%V1_2NXctt@3K`AcufyxR_JBad(jFRExyAl
z?sbayIQt+r?K?J(as505^8{rAeKtwm$AD9ia~TVgClXo*`mD)44HD;NLd(em?inE{
zU{$XINLV$`^!!@(n73dk)%zN_K>dgP2~}W2!tJ0&S*{fLtX1bTre+Q5fs|DhYp^l-
zq#EwVA52yc1VhU4Os2vLIc1<2%D&+zwIu$YPP@Gh(0jj;%`z<_wA?MQ0oZWUj$dur
z4orEmQ7meEj6U{(R)G9WY78hjjR33yO0;Ht46>2j+4nx@=daf_xji8ubM(#IJp)Tq
z#>T9g*G#1GWEb?vwEehsoz_boaUP(;9e{%03mzu|h%85P5T4q!qMr*;?#;X`$_J%s
zXvt3HTDm3msS?un!Df9T-zDi>dvG8N5jjxj+EUOOO6F?V?-7<fJ6vAOL3J2?fO{lP
z1tByO9jh-(@0uW`XU(FIB<qS%${9n5e;Bx8qKj+-9%7J?;2Nf=8e)w4V2(h0dVgG1
zn}5Y}2oKU@10a!SAqDPutUVTPUu)khG_dy_*KkLY{0IW~KmkzsV@c_;s#yvP(VbLe
zd4%#E4q{bDLf~DlJ-Vb1tF8D-*wI_ej;~^#hsgc=X@e4m<nITu-T+|H=G70`+4;^5
z-wa;e9#>)k)_V%Q?(j>g6UXmG9DNVfv?$T`3^;;<RbUFYIgORs-~?g`cqLj|Nsm!A
zu5RIv^IZr?m68EvNr5ZQp<3almzx(F9v-r_ykvdwjl%aCM4|)^-0pQSu+2PN6@%5f
zXEOjr9FS=YLR`oCaIvg1Q+%HHVLbW8fs)I}HKnLY2uLwA4P#|EgLm;|+$nA@;^PPc
z!5{B_7|%GF&sny1fXz2a)8Klv<;SUG0{@!iV27vRc!0snea69+8^{BP29LiLSb)i#
zBQb-paX{csMN}De9WIps009H8BvxsQl0Lrh98G|Oo%DCFR$2rCBLb4tBT+7@fbN-5
zFY(K!*SPGFxJwskU^&6m4N5M+m;~f4zDaI(kC0vJg(v)Tzxr`drpumHHu(V0)=%`F
z`?fO258!@;27V%d#V3zx+)RhoY$8kWN=*0USf&k?a`5VJ_>=z3TTj<(NgmP23K{4{
z>a}hm<?i9B#sK~?TX}7J-b9nn@=S&w<Pe8>)U_FSrdDc?c*}X9EO5g|J$I{$0K^a@
zaui;VyO!A_x}~(pJ}JKw!Q=f82UC0>#bB)&ML4E~Ju^GJXmy4cv*P%?b!8jZic5UD
z;{==I+RYDgL-Xxf^6{FfG1s}Y9xwsN#t+@`NXhz~^bbsOv1*VHz_%!kZvhnM(9k&T
z<nlTZm)Qsp8!MY+N=XdGdIG|lYnZtXVg-a83&{$2g1zgj<EF(;dJ&l9SPiI>^uEIV
z_Z?;%O9T?tlZPnzrq+81qC_1OlW&xtz1W1%rOUqgedVMCSUIOn#vJexo60V@kcYqK
z7Y{l#rzf;=gvQBNZ$5m?85N)Ye&LJ0Kk@D{^;B6Xd%x10aJ;6a!Iz+&T#nN#Rv;x!
zR<k9N4p15C`c1(q(Y|6q;7&>BP4eo8>Mh85yiMEWuC$Yy4HAK23c8>8I@}J={y6x2
zch3yGW=suK=h>uU)mtDcZGss6y2v~N5{865Oc)Nj<AE(9%#`kXghl-eh(?}AMW{!k
zb(H`zfR21|<9_!Fzk#_Opf=mb`<j~?743ibTF}fXXUYL``@LNvc;Bt^TrIZ)0qZL*
zsA;dgZ>H6;KQ`dinvnd3q#DTg4|vq-jC|@^A_5#|q-=q9F$uO1z>tzpD9IAPVv8AT
zCYTv@jB&S$QlQ6E3IOVJjtJcSd`=-ZS!Gcy(sx)NJ2@KB`V%UR5$1iTI1Kr#oVZly
zwpwA2%G=ml{Mr}5{w`hf>H#bYoB}Mj#a>4q)*02D9^@D5pFJl3vRXNJtK>e*BECfH
zqXvQSCe!c71wb8lAx<n?`Ic|%LGK5!ociWzpFZ49CH>=Z2CsZ4Q2;2+X>@>!u6acY
zh}CLkY5r-SdOXN+-t;(W_X#W~Vj-=7SNw)i0l)l}dDQu_LxdhsOty$pL#v^7f_tcn
zQ-2$<?h6ag8NKOdCawj8&se8s7Gc33#chx|lp2ztgf(6o&Gj+tw7@rf%%ZYZ3e>iG
zd>+>Ml52i7hnX&G5$bg=10?WNTzPNdB$Cfxqj!b2KQ&%Yv7|-I;rZwqJB`#P_7^)p
zs9IePoYh)l3IrXmzjH;u3;Q!vr$)zJ+Ci)Qf{DxkxV(AN^Dlo0?wv3z0xvMMq}=q0
zP~Z(AC7BXcynh=4t1vS7b4Yxr7S<cIFOIc;!SGLukHsCtVgUq~z^}8F%G>}K-!9!D
z+15x9?Z|_GS3}hKZ%P;7qM_TXp%A*Bcf_+<<XR!0gSsKk|F>fok9#6P|J^waF@L89
zR<T0ss`WfTRB-0emV~mIX$wgUG0+Ium0HzEq?NE;$yzl}x+xHrW-o(G!N9K@GjNN4
zLP)6~a!om5JY|a{fmKW76_7V~j)c1m4E;Lz2jP6=EZ*48i0HtSpWJw{A(wsn<$%C?
zrCeP*v%Zw?w5$L7=4K8Ew@$}ag?IsSvqGeg#$$g4x`dRIk=ODv7uJINu}=N11~2WZ
zoj;UgJR8mpPe@p=u1!+-ZSis6vU<cpfjpU-ek9}(Xu+QjUbSf<<4da2fS{oO<tOp<
zRiyKZrmmNz<%EJZLj;!7ycfY52q6iGgrOXNkvWwi3ynqFsyHoxFL3$DMEX7ytfB@-
z;0tF1!GW<8hM~#I29)&(urvcj9+&eg{?8BMt>hDtejf5>u;lanr$m}L|2eH7oL{4D
zb3w*0V2R_{tl6-XhcsonfagYhb{;&DZh)G;*&=a!=7PO;{xGG6<Ghb)Z2^A$gtcPg
zwD(Lj!(S(HzcdM9o~AC?6Ai!;z-l&1z6B_Fl@eW(>ZTqA1H<k1M}RCU&()2AH_rPv
z-UR59ykb`PCmBdZCP^<;-Zh=+G4(*r9s^2#r!EejJaR5#09N5DpFn6(@i;XgO8#aL
zlJsY?7_vTs@R<Tu>mRMXkh`m|^Wsz6+DEQ&^Ufib^}DqIBfe2CS(-E34(2^Bhr)p0
zVvPacMHI{=B7~d+i^y#Gd>f;h`f5N_5X6Gyjkq>hz|m3n(bWE^<zA$2(*v5qsEEv2
zaoV#sK`c0PC{9@9Y)fZgqNHoNk`Ge_zb29{V7T__At0yEP0FP`k8c<O-ml)xyUAL4
z$}}Axt!&<Bqv;OK2E0xm5Y$Z!kqk*#Pw!q#i%x~`&&u__$BT`qOV^~l4q(OYYu)dF
ziFoN77<=i!y#Q80J3tA|@l%4|rwKDM>?^ncRIVVD#I8KBUk4i(^9~BR=2Zd=VA4!s
z2+6z%GSEE*GC6OR@LZ|+ASKHTT-`LN1{Z_5)h@{4Rj(_hitmOC7uMyqW^YK<d>>Od
z?_SuZJ3Qa^oT&L(Juk5(9?ncX5ou*4qh?65wS69<)ePJ%6X`o>^}uyPS3Z*n1RyrU
zARxII5ikrnnY%6jrYLO}T(dDYbCD8&O){v0$TSrz(>l}~<2<t}yXD#N+6n+^*K68T
zplgCru8|6km>9@g?xMc%&zcZJz)gseDUFm0dLbaAZDRSmT!UwO{vRRjFiAqKu){M7
zXA-Ovl63Xiq>(^-rl4d^c|Ro2a?rIJc${m&z|Epp+3#wuV_Pk$9}jHrODdeW<|4i#
zha(TUya4UWg~m&gc0kTs`tOr|hCfoDjYc0;8<tiUhJ1k_21%x!(*mMWhIeue@DUpm
zD9BE4j2!mJ`eFUr%?Srx{)izCe?v7cMm+|gSV;roioQOp|GiDag0_3eSeB4NLaV)*
zkdGZ6A?l&qwV5L^W0X|&Kt>s3hL~oA4uH`JfcY(bp(3SJfLO8Otdeex_1|fI+O!F+
zz8T!>aMD9j^SSpzY-2ZQT)uAt`k(|8!~Q58&ia~|M$yL5a|D{40~?L5(nvl&ur{79
zXjEP|N*;LU>NMRHnkNA@W{?@UJIC>N)l1AAuR90g+u%<;E5CEuR%XU&hoBu9H>p>?
zzH7XXwbuaxNXwHl&Aw!PE&j9M6?f8oY<yTA;>c>fm82hKj_KcKka$Qx5|Fw)qW=Q_
zfbX<vM~sJklr5j?_4fg>-v8qhA3!s@d)k&D-eH-8%Nke+JZRu-e|?@~<7X;}rM63;
zY{`tfO7<1R678!*ikaZ;Pq<BaET5PbCZ>$!-8~X22bK&bf{Cfzoc)!2py#k{U%+YW
zt{*}M(Y6M@-#q8M3~m~uNH!uA#pk*?V5A;D@gipl!^ve|Z*BnK$vjxwI<MZ9efziz
z`1g~^B^!J6`Qse~T=yX%Kt<$EO@F`{1RT_Q?r)$U0`6fjSSIh$SJxQKKhO^m2QF)K
zT|j^wU=Gj_;}B4IOdSId=MWLXFz5#k;tXgFG0H?gBE%_Z-Uf*xWqX%16#<jH^htp&
zh$+4UG18yNi-ZdF9){8>CypDnr;^q*Qs%*sWScn|pQYW4^Okb1g3MQhq@L4q$N;WE
z2%zb>lC)*(iwBIbcvZimbN^g8f%w-d2=CR9u1sxPaU_bNrZnIM4I`Gk4qdv~2>R?X
z1wY)p_q_03)(ONf0kMu~F<tn?dVkBWsT{5Wcu8r-=XG%ug(h=MpUuZ-V!kp)i!<Hq
z<s^X$SSew92$kkln)h$h1(|f85;$$$Ga=>V!ksolva)g?c(Y@=X@o1!5toMw1|mIk
z*y{v>(M$@fRUK%|4ra%3+})C;9do1sYfrr8TfsSij^rf(12&nq`(7MKctG3KYLzgh
z?|0YQ=rewvJum#BK9@(!R{|d*a&IZRamIz{NuDiA@c7Sl*UgHO3NU`YnDZpXXnh<J
z0&ERYv&IbIit{nprKbJA!3ftg*aYrjH2|k!*&AFFBAUlv&heX#gE26sfQ0+nDfASk
zfI-tZh^8))J7{!pNn)#B44KF1=od)~n#X}E(;TI4ByIx7x_H`B908UevX3O!LX`63
zX3tapD&PwBn8e@bdcR8-8=trf{2wpw-vW}1Rq3u4h(n_CE}g@vOP7Dyy9lsj!pVye
z85jb71P2y(C)!c>$=s8fyosnFRbUdue)kwShadpfl*d4+#3=|^Mbo^Jw6K6-OwEU_
z16IktW0@pE9szZ%;r14wc$jFLfj^{QpRgL(WFR8<^OHR7M%^W!!^P}*!aHWB4Y4YW
znw@suk+1c500N-x7zd_<*R{|Xcs8%sFSg6&*fO@wMUYHW=8WDczZucO2QRu3&`4q8
zb=q_V?%w|r;N{dt2j)t~_;YJDgbC*|3{Mcf&(9Gz8$=HL7(O1G>V%F#P(TZaz8}p5
zTC}Z(Apnx@`6Udqs+RAQLHFY}ybuw%XfdHO@u|RQ4h*<G`dnF%5Rxe%skx)qm=V0`
zo`F{xk$dHRk#=56E90A*2Lf<_ssgfMd0BZ;tj)fgzT<3R$ca|5(}gm#<<fk!0<rjZ
zZKLbJ)itx;E?sCr1#Sbulda7YSbTq_4bNR6@f1|irOU9!+0>;A;c@Wa7^g4#Rce()
z{FH>SDv_T9U>)-guwbVU9t=r0FM>(-OTMcm@MhrEjRIx~aK&)rluilDJ{RsRy=O`W
z4iqc3mL?UyYaT*((LKlTQkBim7q$tz#&^7{?X(~k@<g8uhA3OqNJXhUVCJMTxBD;5
zckz~fL6$0(B+sm5o_!vzK`(v$P1r4CVXDZTJb}ERg3W^e>{a5NKx=p8Cz+f%H&=Vi
zr@5)&uB!JppTQBP<;G%ssIC<+=wjM9a1KNrm!>~ww^EI&IE6vRuK{8{IH$>Za%?Qj
z4}*bOnb}QTTrI~MFxzi0^1ojfY97be_LNrPd3&5e4(<Z=c<0y2G_KOVDW!v8&;_+^
z?U0s(F14(cSDQW}-iFaqLwwQutV@?GZ84q#3Y?|@fScq3ZNBDnF9tv;M7sQVzrJ0%
zbRj-NGYh}c3n6y_2#}WM1gR+`A%-?WSgJW7Qwqqrt@!^5Nqdt0+n-w?^+R=v2L-N_
zuw6-EbxY^lN~PyCBuRI&<8(af#B&*Pc*W$WO9TFFOX;l3CwK~Y1z6mm6-4Wx03Q8#
z_iJCsPx49~oNr~N>-j?>&yb+~CKbRRD=jUYBKGC!-^*}89_~8~At#D`*}dVc&DhRC
za^Jkq@AY_D$)}9>fQ+l>njnA5;Ihff<iKNdPN9KA_&5{PbLya4R#D9XLt!$g$Kx1)
zAw&!cWJMjjBu|KgoIj<Z1j|xj7#-v?WXB7eEXHDtTz@uEGv1zqCU2@#kktA*;;`}S
z5o(2)vLTDqI6Nz*eVSP!9k3$V^fPjml*{w2S^Y&AX+I!$Z|mO6<AQg66?%z&G-P%>
z$owAZ0_=T<(K<eHca!MARhR3&R=ac{3H)a8s*g0|m0k_rsbP|v4%(zPg?aCWkf_sS
z3V4;$lrGv;w*{oSEj(BYua%_VraVDR4AZ>1P3cnBB-fO=ngC@0&D0<%--pPn?BdUw
z{&a)!v%;_rToL;Oiq2p5q*oN2;H4IlE#OI>1sKkm67qa8)zIYt2&8$&hdEcM%|zDh
zMw3zd^HN!R^X3t7Ms2Bw^n-^0*Hb_+C(p$Sh$UO__jq@5@2<zK1Ns*#%_}{kAQe>i
zO0}-ymjYE|7>B=M9R7w;z^q{k<D72*rhV7cirMv$ar!MBS!UuJ@4$26&rh#4sF_@P
zkj{WQq(t>Bl^DZN-JcE3q{b5^9W|(%(Goa9<n0x;*7ZuBz&q&xU0{vhxfgkZ;#1MR
zOq!S6TZUcn*BOd+>DDRNw2`qxt+B(e_hc8dUAlDX(m~utj<sg7o)q~`0IMbLl|Xt@
zdDL@}p2gEDk8L!Q7=nQ}3MqRKfQrh6#h~f8KQpMsB>T4;UHghRH9>UktdJJB*h#gr
ztRT}p@`Ak-Jwyw1oLM{EHz)hHby~jmUgYUjXteN^o{J{QCktpbqNenS?5Z)~POO=C
zx)(=?nkQNLt`eh?yugCO&GM$E<DvvEEPhZMWQM%#YlIOvZXKVpYVdIXOpWFR2(Q_e
z53d?v-(jG9d<uX-YqR|6>LSN20;p7Hu-(4^*|X6E&PQc&1jIqj2c4W9QPZdWL3yuK
z154v_e1Lc&)awp%j(gZ#CE?_z_d3@XYP}#+{16sgoV?H^afXA5J}M!4J}-l7x4E`f
z#mNr3(})0j_g6ek74sAYc)hXVygH_it9j=#Ciqy|XX9lHm%Mg?A8$U$-=cofh0Q`r
z3uNJ<m)&LTWhdzF@>G9n*RA6Jm3rvp?r-qI*aaKN#E1a5NC$1HUqeYO94I-9D=x&f
z(I#TC)xNS)AWcE8g^-j~RluuxC#3)ZqlB>iwrE`iBWVw$X<Cs~?JMWel1nKUhVC=4
zBz;X<W~P^|7_u-s83MPdDt&T*_1PnF|A!<4ulb7x6<>gpWlH_6lZ_)!hXfR}i(~))
zIViwvm7Oe1F<|**h1<+GLdjKv-JSpodM~|S5<uw?MDcR^vtfYO%l={?>t0DWW#m~U
z05<K1*vsqpNK!}#NyyUmKNynM3nh~EV+ywfQ5qW2s8|cYI-%fXF15D+ZziaI14=qF
z;*7as<)WYa578e(UBFa4H~@`S={3pw0|Im)q>f9KG^U;q%frn!rB6rn;409i-u3fa
z@DrMmq@7Unkfc^q$B44Ggyh!o{d#4=UUmrZf)8q6>zG5YVCMycS2(zAtA>SW_li-j
z=UP$<QiW+h&H=*^Fhm2R2263$xEhBEs8Y?VDgT^rnBsCR5ANX(gD6}@21IY&0L?@$
zB^qluZXpbmG%y54(V}BE7Nu|#(?mirnUvM3b4Y66Y=JV80oc=)h3M1L+X-!45Y;c_
z=KyZ{PxnGdlsF^uw&#gTBakee^nSp-zU{}XzC+fJA|VTKwkQDy=H~p|uo$F~?q3Ip
zyng~E$k?u?s+O$9mVEJ~78NAiC8&|nI~{%S;5=SP_xeRm4?(tdj~CJ)K;q}n;Pm6v
z^;>?&7#PLzl6;6$LPPri*N>!)O(t-(*r-BW1-OLhDOWnVLehn{95PADzVrBAH9@3r
zHzVXd>u#j+OOoj$nwh9lKXv)D3$d~2$scVpNC{6-C+5!2i9GpTfpu-$u_!JtG+EJl
zYB*YAT?Nz|C&`nT%%wHWQ=o8Eq}<cs?Pi4RiKdw)JXi{Nk#vIhkZdBQS2zAFsy8~H
zkbOT!-tpH1K!8`xyPV+I@e18%3u?85pbQ{R-H+tc#u=Y+;EK1X3a~r;P`61d`Hbd<
zU&F6K;yXWPb^P2TWrxMN{ZjNvGT-#kft?rMKgB%~{V4&m8=OczMmdV8haq58jG{#)
zW`pDGNifc)g9=<tAXbceEGoFA$EILfS+Gf=jAtb;mKMy%Lv2G$$uz<mOdTO46vX8(
zS4|I$2By^7xFp+tv8u%dfpOjQur7)jPgXOAQ~zq=@;<;Cp?j;YC5K|8jfYscKD0XL
z4>Tx97W*LKZyaX2z_$JuQR$67OnHUSrAwDCovi(Z8fwRI@7=)iSbMzk&+il@dCNp8
z(~v<3LdUM6E4{AZ(XNJaI)n5T(Ue@1YTmzzcfs^WRQx%gA=+AVUK$uCT2{WI%0vUW
zm}!ZnrMy<2cY#GT?Ua9w?1x31`*{!YwY<2Tw_pv;Qo*ZYRwjRY)qsoD5=~QJ-)ao!
zIJ{cTAe^q_W5hzr+H%C?g7v3BkGCa^*YJ9sWPY5mssc36?{Ts5G~EfddD*Vx-mWnP
za=mPP(V82XU7o+@y$`^(4}lVNR1S4$BnB9GH9!HVQBD8iFvVw}Y8+z5bu|Pmz}7GZ
z4C-|d!+cE)i)I(*bf9h=QMsm2netPD3a4wP%AA#Kv|x`71^JMP1r8j-04TsLChGO*
z<xE>}lq#=qt;qEIv;}H3ds%6flcEIz==-QLheE--_<nIMpLplm#peQU?(-N=sVDYz
z$}{qMll$7N8MF~C;uaEqZY6f<gzjCsbh!><aSqY6LPwvu3j;6C5+*VPFoqj$%OUqB
zNSpNL?x|IyDrjKfP57&BO3JPT?Q<ZL#BZq}Y)_P++E}h-MXH(2!ky(Bs42M#75xW1
zJXr(Ky_4)-kJr#-@~~|)(4i=wESk6$7OV7SRX;j6R&i+<A6Dc_xqt>R!l^DuJ9rGv
zEg8+V*3Qx-p7D$X)H*cz!U_JBTaC7S<Oe%4@SUEzT~s_1zk*-8)xtVFmtYGT?4<x6
zCoPFB;rkPvHyx2A@yhsm&5I$PNZNY@F(bHneatihpz%2EJHOQcD3_InF-{<sXj+XD
zhH;$1s&V)d&8sg-8-_uFt*;ROhGF5x3PHfDVURLJ(?V4ZFl;|m1*g(XH125t!U0p`
z>ERoV_R{jMUO>O)eGLOwEYFlbj=lip7gKF+s#$R=0aCy;o~R)a*?3Af|0Z{S7uMUN
zQCxYy5k7Xftuv74w|y*Gq+o9awdls07n!rr#2n=O1n|n^KSVyN%>1A=Pn>Zly<-N5
zoRT1P>GI*eO}lhVrk!y7gB}}kcjb<5Hig~pinW9|{eyY)6Wprg#(*01-I4%UqTa7&
ze{{3KWZ=~w^(M$HBm=e*h4lSqgsk(07w}5X%{iNhdWBVw;WAAffPafH4bQn&dLqXd
zGJ;PmQMh(Vaggg1PZxK2o^)aYG~iG<i6Z@;b(`8=vGE*i>c<@#G=3hiMG)dzG{DJc
z#cX?oq3ui*n8zi+%E}_fszP{tv-b;EibTjf_#LG~%_+r$w$BC|ItC884n#=y%fbV1
zh^>dW>#Op(3*?JuK=sFFRQlcl1}PPSZ)F@ZUaFAuRS8&SnpXq9gzst;Kx-WS3uFBH
zyB#Ea{SD&;R!w0P;A$M_^G68a#W)0nLGJ~<_n4Uz)-~w>74)~@0O-XUfN@dthx&~W
zmwKWF1^lSwm~fTHR#P=Ek-h(^X(4mkBKp_K#!`gj3u%U3?T?5kcCd219QWAv0c#t@
z|Jk^WyEGXQh?jm)x4*EZZ2UEXZ<w9(lMoj2u1b5laJ!!!&-wh_>EC|O0a?3rK@jSw
zl_ljaT^@6f3NDfEF5$emS8qQb8Df#PH3mox$yPtzhzO1mP=kS5?&>=6W~P4vWQ7c*
z3V{k%saHYCuOJsq>uL&m9UWPcnkGUp013r+BX-`|knk4p$`QbSRmg|iySG_JZO}Ep
zmBmdfArQs!KvpZ}4A}9rm!PJD!fd>HoVZ>QY`xX#Ycn>X=w9SuWkUW|vyw$8)!=<N
z?L(6iye(JP@?Cz&7|k5~<iRjN)7iMI|0CcoZ6h=V@hCrHwVWZai~?vhqzpsAJKu3w
z4SwvQYpLhb47`$9!Fz?pJ0QZ$b2Thxfpho@F)mtFgK1k$;p^*f(0Cjq<eFJwx|W(7
z#_8NRZG~JbM(Kl2Fb*k?L<KwwTyu2kV`P3X;-zXH%57Pg71J7w(G9d<=Z1lx60?_|
zDA`{to(Bi0418;vR50E#Jy)v?Knb;>tq4@(<aY{IgG+oW?^PG#pT<<YfAB#=E&8bl
zH0>)iSADs3>C&Z37f`~>q@7odHp8$3saRFy!9q+*bWcMHXeEIF6y#cfD3pZkT)3{1
zri;1Y{FlUBkW2+hyWUIoDaR>=lsL4!Hz&rvNohV%4HQ{m=a9eO3&!?pJ*s+kKx^|x
z05b!#m3%nXeu3uTi8>`E?^+sgyYQ&^O?t4Y0b&`tSi|M-B6mRMU2awQ8y*U6>b_kE
zY(OkP&w`M&N5HhNFhF>%q5w~WabAs+_LYHBL!33P1l0OcU~3qaxc$F54+aEG*H8cp
z0}MP9BqjHBmwDzgkjLb}gf2a~scBpje9?@u<?+;$Q()3~Yw}D@MV`Nm6-OwW!)AdD
zrl)3(2!#j1R5=J?W>(7bN|(C|UgV!0o!<JFep>O@KSlhr&gZ*y>C&a^YmMd6)bN{@
zQ*u36xSV#cM#;bgU0qE#*SZqbD$~Te-9)R3OcLi!K&o2-R2e^3pj`K+pcv_(SXfL3
z618l}+|HvQq2`ItHonPpkP<!=rQ!j8L7U`JgKaAN5boZRM~}g9p<{(L;M^>oIyoh(
z7Qq+@gcR?qIyA?;|IlJrxOup*c1l!Qg)BUWfqR$Qn7E-l1h7#QAlDyOsxC=*|C7yQ
zzz*&JOIR79AxlTL<58^C^HbCe{hGuBAX09|ionF;hd>S=0l<}4G@jOo<k1+0`Z-(V
zJfpXre-FIPXQ7GSXPK%2CI$fB2O|`;GOZltyc*TxU=-88!MqGgm;ox~yE4<k7{0!y
z?bnol2D31ZbNs)VJ8KjTu9*;CKr%oG--j5Td&^8|j!ZAHuJgz8I{<4#mbD!N{ZB(6
zswq~(P4X`(uM|rUgz$Xp+N(5vtU~QmwX^3yF30@NiEPKjmiy2=@kL1eCi~sy&R=t(
zbw;n@7^K>J7jCs>T<$)vF<jtfAca*9JPb^Ko|||UJ8Y>zc=GwsJY9Yx|CXPNM{5(7
ztvwfPua6^pR=%Xkbivg*OZRessPoaZJ*ai*LiFGH0BSO3Ucnm3ij95;ohVhbr^*YG
z27F)!w3wMWB?GJygL7X60k4d#JyG`40&-;}?M!aE7@QO~=?W~;Ei^)pa2E;TYXK`K
zOn&R&OzxpA$y}J5pwhgvy)DZi*l|+hSoYZvXE%}&+BVWm1I~&QxdYB?1qwks95}LP
z4VHW+z+Mkp{~gZt#3G#tYm72_8D6BAI0dS>Cp4Cv8$?-VR1;i)A*E71pOhd1jnj+4
zv<@c#^Ej|Y5zYcV@_NdXK}vj+<DYf^DnT@QouVy;11>NO-@r|fCC0MwVqFJ&JO!|4
zAHl$NPivb5{$S;v7P4O;sQcVl#!FPIpJ={=UjzkdWMRRdqW03(1Z<ZTE-Ic!%~C7p
z9NQen0DEveVgAiPw&`r@CuLgE)Hb2#<oy{EA|T01){YraLWr`j8dQUTQerMBT2}vk
z&6-yK%|O=I-}L_^eVEJ%|Hl9B4}a6+IGwj}WQ}r<5CfukECixyhib&@hf+5Ls*Z#f
ze9sO=?;L(y+h@y7wvN7#%d?64q`cWNrht6BrUZayEM4@!5@<5d!T>@-^0r7lkL_=z
z98}@X<h&wdhc0~Rav4xlzC~>Z;?4pUkvkhWT?5O03YIysm{(#|Gp*$dbKq_B6%}!8
z-Amq$+Mk5VJe4(|bNSx58-`+ScIIZ|pGen!;W{|@(dTuvh;xMjsD1uqdotKJ1|WG^
zkoAvZOhZ`~lq*0)*_PM<!1jErckS;NZ1hN;IL8~y8^IWakCP~_iY^GA3Ho*E(!sbE
zz@h^-^9I#qg61cP#j2<8WA4}tl(+y}y3ZR6vi4g_rt+WE(;#mKT<P(fn;YsX?2U3h
zsijHOc)p@KI0?4i|5%cNOD`Qcf8$G&=c|l?uOS7MNo5tx#l2r&cNtsm8ZUzc;Ld`O
z=ikLlJD}r1wXj|31XsW`WDw&vLHjP?nG*A3S01{K2R~a7@Z_su*Wn1sT`!J=xXA?b
z@#H!B3b;5y;xjB(B335yZ{ZU@Ad&Y75wmf@Ii?~c&4DC|4^cvlQOp8IHw}zm^S+R_
zk5d>X6F~*97Cx*mIsT=@?SlYXaTFj7aZpgqz$?|f(k)^;t}zwBK6%UatV<B#DTYY-
zVi9Zm!B(S+Lm;Dqgo_q;2q;x>E$Uj;M&4c?n|F+=pfNL~gYlcr0vx=87T<~49Wa7v
zsba~8wv8gnaYR&}Wbt;tcc6H$Odn;`dkkK6J&)(qPr}7<6?G9_k2<g-%?1@e;fDhq
zUAh==YJA}c)1^z75itg)<X(Vi%TP}68f?FTB4{Dkx=F@$HUFt8;f-z@Nb@ilOv}o&
zvTi}oQ$qI;Tpg23SyaO-vD63voIqp0;S#vz#mjiUs2}t{T}Xbu?*P91!z^DpFZNpl
z88=~x(!dp@Wr%lBe<sylK`PU|1C<^Jx$_)(g0MRtmd{mM66oLnc*=s6+&k{vI^?fh
zjZ^UbRbVv(d=h`TZM!;JW0vT-(2fb3xKTd-L>I*`AG;mwsUS#;J9vdC$6{Q(4nn}I
zN#jaL+ZBLvEv)fN_^o7r5G|`O0k(#(39xdlt#J@gZ2m)-?xSSudM`*Ba;+iPaMbjK
z0>B|0d~vla1SZ$gBNPyVYHE`K517e=q6X`$`a14`Awu&m_XQ1jli$@Wp6SFE)7BTw
z@&S~tG42Q!b;Gtl!9lE+pq~No@s&sd9?nSHE!-FsJWQ=K5mx#_--xQPTqXGo?U1)P
zjqAc(IWwJPJS@A-wv!t^Zj1@E2F*a}<#iT*CQEylF0QdprzUy&azU3aUB*aLi)<%Z
zgla>jj4vW{bj`+_j(P^9BpKoQ!ii<1?8a}El3bq#YKa!sENX7(d|HZOxm#>4o5UrG
zz+LNnWC<^0Kj=a}A8_+k{1X~7zVa<usOCKjkb{gy$}d?ao+j9JX)bf{fezNL@lF9|
z<=k|GM2PgVIXJc<kiLYHzBw-uD=w=&Vk_AG<CG>~R+mZQ&l0bmZ^6nOSULv3d~!{i
z6`?nT4Na0`X+f_8&yys-eZ~vCXJG)SHLnaLvaJj$2r<{Znn~8jIgC*Ns$nr39REka
ztFIw^iRqvm`;xe8UYXgTdN2G^POU+S;Rn&UvT-Kbc*reN>}u=?fB<m99l6bCj;x>D
z%pm-vp!90L09GN^CdCrCKCUNn9rUlr>FJASs(fbSmgV#OT&*k=OCNjcC|Ytb0B{pM
zpvZ$YSdS9>F0CN^5JxSqtRQ?S4-(#?SA1s7cYe*+KNQ!3w@oYZQ3s@sc7DEeC<}NI
z*IJh@T}F}t*zznz`J-@H(D`!gfBR5ma3G5MDXb=fDbcyFZVWfx=3|_W-EPZAsBvCR
zlIHzI<7!HGUX^6!Vq+@E9Sd*bF(UP@ebovIPz4%Tdk4G#df_~lwLxrzfW|CTSLutk
zp}96L{t#g2ehd$v6^%QLxX)@4E$7K@+n=L!Ags;EJ&vjKAGHv`8$aK3po2zlFb_Vy
z9#(x&qRztKX}%2LE!QX6dLIRBKO%}5p~eRVmf|qQM**>h!8{Cp4PqKNjPY-L2xI&b
zEvx?~4y^wXAZr{Ayo!Snyes*;UVGjSA;cl$Y6=QwA#klh6FI?`2^s*^$8my|7n$i1
z?ogaX{hlVXcZ0-53p^T%RdLlcoMpb1K>9rtxN6#aPJzV}Z2*WnrsX)g%Hw7zO+7OJ
zzvTO&ElXXuZ!UAo5%}|EOIsS>Ze;0-;(LxB)-yN)*P2Ryw{+>^GfTb*knYl@OI$cv
z=w^eJpl~V9B@Z3oN~D2TNe}Us!Y$EOJ-Lvw^N;3Tz^FwVOV9UfDPjA~Zkjmf-t^FN
zUHIV>u+JA7$u{me_i+HO0IRT@%VUuII(dsU?FwmX4+Ds7CXw7cAIe>P|Ibgj1IUC&
zSpmPSLC6YN1d^OFlmBZ_APql}#tnEAKurJ8uDrPcc-z>6Lryy!RvP)7IwC&PISVVb
z8RU975HrD`yhafMEFr2E)(l)l0ij0ayc)+jd`)20qG>g#3E?Q(SEh}n+ppQ<pj>Ad
zqF*~AV2UrMia|)@^EL!PgS9aYY<M5{e7Ev4-&Jf0#>owBu9PL<GH6NCwc*@Zh4E(=
z3tVJoo<!r$<bCfN0}DfpvPIOxu)3$Um{{CLkMH)gE|BmYn&bS?=`i`UOC5iEd7f7a
z?|u3RA1htD(88;vOP4OAs=w!GvA^I<O}F)?Lvn$yG=Gr&wD4cK*FlmqK;`CwHvzY%
za8qq7)x-)(N#6q{uU<PzN~LX8^Isu!`H770*X;~q+?ZGZ4N!$jB^^avj>W|aE8^NO
zavg$wKTMQduYypCtVCva7hg_ptCL61-Q|iY-*fF?_%5Y1KK0_<?&seq$iSF1?;+B?
z4hnGLd{@ymqlU@cZ<s)-7@~nw6L_V-l$Z&s8R4}5pXB-PziD4h4gV8vEaB0bf@ob0
zG2m|;aoWdB=nes~%vKGdB##B6fjORrW`ar|&F-+};tF5|^8#y}Rlo^LbL_q?NahBu
z76S8QFtbAij-AZC0_d;{SJ4Rj54E4%EYr*IbROT|NqfMvzfj-P{LyN?pU+ZHzPo@t
z{iWEYOP4NPx{T8XM8SI#=<ecUqViq|umm#5o|3YsV4zc=tL-NZOaf4)n}S-r&8C63
z`2a(>DX0~Ko+n-j>7Iog(3*CP2-|@H1R<h-o<zNRYqkJ|EJ$aZB-7oh^3W)8`9tk^
z1?^EDDwK6<zaA+tbE`|wzdwODqFt|7-AW#f2Ub_Wo@pO57tFD|ckS+8;^hYuV(Cj8
z$;?I?A&cn)p?FtX(+Y59hgP2Ms=J*^CIo^z9)6O!Z8w1&0o7%^=2^(+Oc(<eUCVTn
zX9^uN5{)a*E;$8UH@Qm%tX}m8GUtTaH9;ZPh}jXSzmly+mK-%w=E5`JswvYBMp;dj
z831MzX*QqmQLoR$01mQ905%*@OnzAh9`@^(d(Xf*;%)rSpF&EvnE(lK>FVwX;l`^g
z_B*&Ii?SVP;-m|cF`gI$V<5}>0E24Ucp0KTCqO}@VNmlvAzuHQ%?U>Vu2chS7zD@~
zhXufzJP-bl0$2adnpaVe52JW2oZ^^)G1u&Zf@eVVwgLlgv`w=G2BP)>3~~TBsZV)#
z>T_gB^3*MD`uh_Yu(XXR^@Q8a?nK5Acw2ck2&6Pvtm#)USv*l=NLj8SgvGKDh3TM%
zy8lR8(sam3W!{hLZsOg_(*Z9bYd$|h0XY`}Wiym=d3%X%yQM7}4vR*s0j3PMK*$&#
z$V@vpcmBWtc)98l%LVFVexJ{jc#7VED9(Av^E22!OFn5az{?8vrrExuo&;L5)_VMW
z$_qAJnHpvJ^npO^Eqcg&A(|x#3)jmL@b|wiR?3_0UzF<*xQ{8(5abujuX;Mns0W7H
ziAKWKLwZ>~{}!aUOP3KqL3j#6JtjnbaUh$xmk1Ycx~dr#u<0gdeoEesWO3oW5_7>h
zPq<OyGY~eVGg~1|5-8WN&6!X$T`@fs3INu7HXLAah6;Y>xI*$yx==-AXr$t=d~H76
zN*rkYgtfM&vGGXA06lVjUG+M_DFZ*AQw^7vVj1}CRp2f-QU7?MCmjd+egXFt5BaWq
zzXq@tz=)D=CSy>t_82gz*FodGiUL;6;cH405bI054~~<@mGfSWgOj)qgXT9dOMo$q
z5Z<deOdA2R7N4Z3>j>uck9@91NYq6olBcc+90QDSkA&LZC{Ub!kB~9&$i#`%JS7NA
z>VCeEl6ctiDW-q=KOEQsESFr{4%iQ_+bRrL(0xki@-Mt9*z^(K?{ZEn4~I@Y(prVu
z{N{6|O9v3IOP4NPMi!b3l_``)%|DTv_z~(BR6r>Oo&GEzwL;7;np<W@7?{EzN!MdZ
zLYmU#W~69pg`5<gcK0dn*gTyWmVA(3!L_YU@orF)v5?#22lFtn)o37JLi}p&>~Xub
z6(&$dH=Ti-6Sf72em<aDJrbh1&8MxhV+UQdzEias?yAUZd&S!xYb%KX%nHt912Jwp
zNw{u2!O+Dl|MsycA{}ce9cv$4Udsni0Q9;SQau)ipI||n&VggznMFGfQI16v+E<7I
z8x2^%tA(3NyauY-pKb+^`dWaiLBsgp;&D*o|BVJ%jmn!fm{!-QW`n}LHEpLqFp4cT
z*m_J{r2}uZ9Z0U5a3X)&M~lQfAl!!hTh&NJ;Shq<@kz_T<-OcGs@NoSCpEZIX<)7)
z?p{|n-%lhqv_{Ku4Xf_~27oW+xWX@6O+WooB%k^l$$e1!nZm$!ze9kVeGqr`g=m_F
zT|UhxW*3<;y7y_sdq;sTUAm0xvrPmTcvQHrR#QS(&n1(YATZ6~m86Tw$+RzKgXyNc
zSe%07)qOIVm%%W_nY-K8cq&O(VP1yL47xm^hqMVw%@4BqK_e$fd4G+7-@Yz*YB(oD
zB0^NY7a%sk7y#Q!@U)01@k-ztT%N##GJ15wMHiZL350JIw(jG}Dg(<pxQ@Sa3o+Td
zU`MpbkKo|~eJT)Oh^U!|@^?7CsDKezeU+dFeVjoELlCYj%zRWZt||erB>puF#$)yM
zC4iOlU;P(`|1|we_^*cXzd0zOyJ%!h*R%VmXTw2B+r!{v8pKd;(~(7E4u`;Sla#kl
zj}=6UECEAi=Co>d2$qgD9B@JfqS6<)Qi0C-0vNAbZ2`!L*-d-5$(JL$z>0|>U&9yF
z3V*2X6stIoO!79*eN;dNd+~GCmiU`#{ZS@3bp#E(dX98??K*200A9zu3&`ryrJE3@
zME_u;>O0LL&Ht!C4K=PBQ)(V4TLYvdJ_A-MiN`@9a8H@$)h&=t$}UtInnsv+!T`Cp
zB3g4m@zEL%<oH7exZfPlr-q**G>(kR0`9M*2lrBWNr{TD@#^M$Rx8Bp2W^2hV~CK#
zUlz2#&vz3y5w33)@)(qIq@sOx<Rx5-lD`8}crEG!PMeJPjE6wkF-HtPq3T{+3>NGC
z9(OR?IrN4>K&%*)xP4G_J`7>RXj)T~rqww7&rHZZ3UT`kO#L@b`~MS$|NaaAef<p+
zX!SMz4XULz464E9Kv<l?tG{V+5M`@iT38OSI8cA85~2C;?V8j-@QklQ78oH(({!zJ
zt&GwRCdjSa5RlHfwyA*?coiRM1+_VCRj&v)fdg@DB;wDjm2UWllkbxFDz2Q;{Pf8n
zIn8R|taOmX`6wYfO<z)e!WoPgUd|Uue?E8?I@*ORaR33AK&&oZy2K3?69+@!q@)CM
z(>>F`qH<iNWZnnWG*H2-n;c7;m$!`bDybIJ!kuN{lwtts6_&?5G<yJGLBv<PiR_XQ
zznOqXqVEJMoa=N)uu0G5S_xaL>g|h}(a3RY?W#ry370?NKgF#stp=agLdeJ3Ko>Z4
z0&9nrvM3HTlORD?^@x3?Q{dowAHvlFWqEpyKuP+e##=Bv00L4)%`=6?>tKwtmQ<XN
zyV>A4d@0}6-?(XCjiz1Yo(KO6aRRL5_<a624CZmrLR7#E0-#a(xWW*otpo$GumSYr
z1jve$`ahB{fx>6WI~e=vP6z-aVy=LR+X{Fd8}@Yy&!*>5FgJyiT{8!?u8hQ)IXRYg
z0tYuKX6X@w9G7xQoTwJc@b0yWA0a%gor@Ry!OQ6(!p{=;Z}@3~nw3=g*G}%vK>a;F
zBJqTd(d#m0fxf+Ha^9s&m+0WSYEdarMd~M{f=fZQt!`XQ{=_WMIIeC2K;2TZ^qT@%
z%2Q<~g|2x;;k=s3-)X>E3OD80qUOz4SCeip5&{toKT<@rL&WwZ4!|Zq7T-?D`huI`
zz|8XW{Dg<5fFv!ru!tUw<%lq?h#F{va$NZ_G}nUaUC=Zz@(dowOU)zSFC@>iEHedO
z1t$@#&t5A}rxHG{*kK#QS`aIIL$#1EyDj)Q>PvEe+N1&p0PS#$5O4}m-gbmRJq<!Y
zi)mjtt2BJ6x54-&<n2PvK8Ts%mjGK|!xVQfgI|N5H!5)TC7fCjV?g}M-dCdlB{Ayb
zPI@dF5GPx#^lb*@04Mn{thjlFVtj`KREf^H1xa`FKV)Mvb8alZ9&?Y!n{bm~(}4*c
zmmC--d1$T*D<`ad2#_ffAwZS-q-<eBNXRAn0*W8wqttE(VD)>ZxIdhWhuviAJNT}u
z$p~=F(%7Z5UUmJ|E?v5e-1`6_Z4yE1$Keb>{h1S~K$UW2nf4W@U?lAf<dT<42ydo@
zdT}j5l4ESl;CTOpx1cz={$<C~)aET5P}tRcIG5O_<CHlYt<us<M^}W<5<v6p2M=Y(
z;}%4md^tk1#C2dQ=0-&N*WBfxy1Bw3Cz9*{KZPHIEL_?*{hzQjXkXPCUq$84#>G6o
zgFk_fu|Kh0({0b;{r+RTDLhg;RBe<k^H0159(AxcWltPc8{$U!SrG=|#okzXegX{F
zv~ds|PKvHvdjmup3Nb1{dlZ0cQ0=PO^iN3G$6*SlbtU{)Vmc^bmH=H2T+RD>jW`Bi
z=Dre;Bq}f!A*Rj-TBXWN&&yAy+8w>sy~o=(4FEe~+dwd74l!DFSyl@Iq>ix>+njhU
zxx9~@7E2m~YhAUT2&?PWQQA4};zqXP&%M9_$@Sl$dFJ+UyQRuRS4#v5+qFvz$c}J}
z%M)9EL(z_68}av|-t?rCPC<&pU|xYI&)dm$e5J>=P<f=$)hD)OrHPWa;xo9Z_w3Wp
z_El`J9pd5xkQje~UCQH20DPCD4pcYBYkqr|E_fY)l@zQ{4}+O!KV?>Tt^8!#Qa)iK
z=k#Q*wNqfYWd!Y<Kj>}?xjURMOKu|P(z&(_sBkWel)Itc6p-894jYqKo?o>mSxgrJ
z_(xd#eYJTF)Bp(DkqlT_V1?_P5?m)>FOyrG$IL(B2bq)7hn<g2?Efa<!0j<BPfu*L
zwpyIgL6^ZaB%t-rf^<FRClda<qD@Hk{OFo>`L9BuskbQz>l`ky`YfLb`R&?Q?sTEG
zrggxQ2q{7LS($RWMg+qGTF2}+%N|X;;h6TR<zBi@Lc$$z+nks2!0gip94`P%01`p=
zslO2{i8vW3X+TpR1T>`1$O(x_jnnhd&rQfQohWHVZaskP9Fm7np10yNUJa$MCBWL!
z90gqai>bYCUQ%YD7kP-|`R_xxDkQv4aut0z7z>C`pjbCJEO<9EAUuXaw64T6;3yne
zYWC+I2S@WZXaLqQm^PMZSdH0vQ~Ya68^tVf5TGnX0j!`P8KyM2<`Ph8kYO9BgO2M&
z!va`BkQ*9s+%zPFK`nj*WExM9x&@1OG(e*X916#B)SV27vHY<9vc*}H^n5a8Aq9dV
zB`fBJCp*+kSMI_P8Hfd1uBrUd>OOg$g4WbvH==Jg*}oPZP?qNOb{=a_p?mZX^&P$i
zz;fYEGIsOOp!0KjQgqGGx-IR0>!Gf%a-0w3`|UW%3swg7C4x^RtWN8Mp@e?Vf(_D(
zRYMBcdmW_ZA(;VFbwxluz)7C{R@a4_X)#|^upn~V@w|XjD%YPbcp==Dit(!L`!BF>
z*3R-e@UBZ2NO(yL8yQd#+0Z83y1JQ?e+<s%fU=(!Q$aI5bj_>VEtPy&f=<Z_%T2r!
zIyhE(5|Z*r{$eGVJa*ItKfsa`sRgH?pu@u+u^w}N!Yf{-Dd`6<iR*%`1ipYj9M8~F
z(`jez`H9&xUjgqT0)Q>v7taVh<mnCBm)R!?bTY}^i4+UZTQEK*Dlmcv-{4&UtWK1O
zOMT$#cTEc{IhgYt(^$gxpT0tfdtRBzOB16{fKjlHnby)Q#x(^6u1xbv_Qwgln)XFg
zY8axXeJS6Scn=hftI-JDC*G_7W-~%boA$?<#QjS+v!Z}t_#48YoJvX>55UbB3(zWV
z=@OP;Bw&DamPew%VOKtjFcTGlAvuGuTJt(GMgtckDap~!tI9+L!C`HIhN$T=jfa%f
zyih@jT#q!RN<*UrmfD6EwXR$2)J@mzozpB1>6s-!12|}HckF{`f0^{Bj&)}pZQrAW
zT=|f?(u*xMs~7lB>4Iw}#Nh9mjPL4{cIndPU96U)E^Cw@hcr_^=aWc(0u8WIfXd@)
zF8D{dv3N5rD+98o3mecS*G%))20)M7hK23|xk~Nfr=aAo0I;d`K|Wr4Bz5}$JdKO#
z+`kZ8)c&*r>s4RlB-`xgxv(Cnvbbu9g-W9=Leg5IP&x_k1s^#qR`1$;Xs`f$2C=G7
zvdWcguCBzl{fe)3+unIV(3&c<YHN~K<IDau^)U9dsUW$lbkiCkpQ8VMUT_K&HVusP
zf+Fg?P^?yuqkD)1ozEynJqkD78=?`a4;Tcb8q^GM2Cu%9z+FMCuVE%<|N8HL{stv!
zA146of6RPPycP-xd|133j$;TIgl{Vfa1}F6#|Q!ATG@Qp?ZTLhsyLVGbG^-RA9V0M
zTr+~u^ayRADG>5|l05}e01uIxADPZ05h5G{a}5j%NOoK9O*1oOnnLcnc+b*|t!AwO
zRplE1pryo!`93$KxgL?ktP?0E<n>h@(|QHC^OJxvubpq_-Xg+xNf%@$_E<lT=&O?O
zZtZ=S^EfHiA1_lK>C%qwwD2zh)X;Ey$3iE6Xx(+`@?u~7ks)MIRd9gmW|+ndNZqJr
zg3~eTSvMhRPgHPAiQ9QI^FIN$l)&{CZh@wmwRFtn9*Gnz)B8#}lBwobTofA2T8!(R
zzeOp0MLXar15AwZBisg&d?=4&iFG=qB0mYo@YQhJ^XM8iD>8Gjc&;n4-G_t?iZQIY
zoBzDgBh`E})ufH8$xzNgkDKl9mrkzgCSspnGwwBZwYUgaGrfcGPQ_^(;tV1UaL<Er
z_B!|_@nKNDD+Qybc$_({M6>EkfUE!J@SkXDO@!^kl&;_v6cn2^uZ94~JrSdoM>x6m
zm9f#JqlndZ>wtz5xM>9xP$_MhUs-wuu-@eQ#$CnQ>{a6_&_O0Qp(}<cNi$POr!~mE
z7HeQuu6z)qwcE7B^*jfHz0I@&JyvP%LV?aFQI){^SgsKKE5$Ve@lx;#a<gOqKFmUR
zo<RS)tUVZg0H^8*`p*|PfXs}4RkbVpWa-ks$9~ldpi386cw9!1wl2*?|Ijl4N;Rbv
zh;mawO}iy?S8d>zX=EjxEHC>x&z6-z?$MCJCJAS)hoek7-c85{;9CYvzD-Hi(}Cv#
zG9)+Ba4>E&FxRO9s^_7>iI~+-RP^7b`Rqm!tIM!l@+NMyJj$(_hQ<4s%*jK`VIt`f
ztZ+WH*J~^qeZMg$^xahC1-MxKey4N+WWy35#S?8MoSJJ7uz0@*O#mk>>~RW0fTLFm
zTERWk3ZI^Y7=^P6YBo3%wa0*HgzExi#UcDR@ml>ifmaKtwUE7!vu0JCwX?qFJW=<@
zEKi7E29zP131beRY&e@l0erZi0j)^OUFL+GTMIG^dE#I!x3b2Pt8g(J1e>y}7Po?T
zJ~2&9AyS|rOAFjB1hppgi$oI0O&auc0uBXYQEnV*I{{w59{l{`_3#OD+*f`ZLki%0
zj-M-CxW}goO{c=qXf$`<&?fuyK{IFIKj+4u&*q$~t{H8?=jTe7E_eaxJ2E3bB(&EU
z2bLU5yh&PeU`x#dC0|;2uZ$1Njw3k{d(b%PW=$zy5v|Bdfpya+SdLo#zn$=aFP%`m
ze-if^U-h*&pi1)!IzeIS5%Ni1=g50ZgkqV3k`Jq$)|P@6u~Dvf%F%~3-jc#UxWplZ
zv-kijjSAGD<K7Hu)$gc-%6>`ft8R+aK7R!KJ0mZ@(Zn#Nlip-n6SB7p9f<e@0ay~3
z!$1+?yONGC@b(ndG(?D(K?q1SU<_l7VTh`EH40cYm=@N5LgGG(r@>Ll+vBL@?t^$N
z#I&8w5ak+xXkQI6&H;#usSoz$8Y4m&P}QgthWl7u0C<}Ojnn|%0X^*TP?9a0jwn=D
zXUT8^OuH)9-vOYS2L@j>Gq5UXyzw|#XlHrbG@|t#({aecht_iomL_5LVrxzUz>EFi
z)6jF0PSCXS%DeLs?W>>u4(VdfOsWwGz9<Ob*z^<M+rv7D)hFhIO`YFWw_Un)ZN)Lr
z*{*`QrcMGxO=0#Pm?X~RW`dH}12rT~*9r7(j^7Ln)8GbH<Y^brKnY7D1oh4&_d_*#
z`>DdWPP+LmtE&urp%Y&O;2@_1q)oZ-_-p6r)+d3c^>oySwGSnP^4PV@>M_1~MZF7A
z1M{sQBglTeI1n88F*M8$K7gw?1r7$nLOYWN{)7cySvaRu`w4@1{~MwN(YzYM2q9({
zP-+SSXblQ#jmnAj_4Qx)8vm31LAC;f$$4>{!7;f{jB?-k{)(g-{sTjQP>x?#eq?01
z<jL`yE8KzMf#qJ_9Ht^&CyamQdSuRO#^QN7U`00CrHPe?VLg}0ObXqsRgz3=oEeV@
z*NydjA8`}JLe?1o&oKmq#Hc`4DR}5za$Tc=Qp3;I!ut7|75sVTI9>QdOzXSwWzV1s
ze*uuyrArL2k&)r1R(`5!6_Sv!2Lw|1tpuc^09SL6G%kSF%>gei9tIO7&Ab*0h-Gtj
zlrG~N|5YeF@%c7p<mtxN%DcZy09@yhk`sMkk(hBU5XTxjJpU$WxkC=Fz2y^~Oee6=
zR6Y|*pzSz7M6x81XbIe<ylI=yAlQm{b?stNUek=b%-xxT`k(N|R4UD|{|T72Vaz8r
zks<gsy>4pK-G~-!swep{{<dRDo(a$Th~t4-C{vT4ShOe=yaNMLocg`gadsNu+6>N4
zlWHLCIWJr^rcJE}y~KbPEG$iwqm@hB>_$^eIhbUvZxc`_wEpV;PPzYO?WYKH_0FQB
zH)?TJ+oZ>JY(!OLg9PgG(EH#Cv9^E!Gb!B`X4`ld%R9-#NjkIo0i#tLz#O!aC=KCt
zv%!FA>)vW(oWn5x#Sn*u`)Zg;)`wAmC-FcifYsNaX$n+*DYzBI%b=YTzZBq_<8k&f
z$RXPGV^k7(Mk6f-YUGL%9HiedBW7VX$Qf?A1%d&&hrbnQ2Y@v{R=)Xt5vtXs(Nij?
z5!8mGZH_W-42+V=pR3&vsC!>5+G%3)@=d{L4$_q1=Q^VAX<4r!y`B(K0HOvT;R52$
zw*z#ieMZ#8X_Km_7ZsGF)(1&LB$1Nz7<0(HDisKbb--!v6MO^wObJD0q+KuYp66II
z+50ljaWR(W@qQ|GgZ5_=tBVE?FVHdY<(#PGhZ=N(+P>k1A`iGxbQ}z~U7tm%QZDsJ
zsyjSt+3EGrK=)AiPyKSd0QOJfP)1%Fd|~O?P9lE0KZN+*OEzE;Mb6E5)#C_u#?>R|
zZ`RKI8S~D%Ol_aoxf-@SX*apjmIhWJYwal2no4t>q&cJz=-O6HH;<FL)p!cB4YDuk
zIna{wkKyf?FxCe_I_2a0)rYYXPxr0{dX(e~2M9{o>i}H+3TPS38P|ris@d)DkgNGO
zQea!;Nhr0bxc7kIK&AU^mMHan5XISTRdKs$q%{N*fq1_uXe+1qi~Ko*T7KuSVaQzD
z@tj&84cz%|GmZ28i7h^0DQ#2dLtd`Hv!4eJ>2K70>-|3i9FU*@B<2KWX9Bo$yg}H2
z;1zz*8AT1=y@`*6Xn&E9O))p=641&*3=uv~L@0@R9G$Fv2AUS&Y6^n{*TfPntS>b$
zobzV9Szn6@VVncZR1l*1WjyU#CMz%6aS&THm|U5Z(L&o-uxjqMsuRuQj~dzq=o|Sh
zHZTzSG#Z?<@zA1q=|F7`8rwEGa9$15B;@$MZAVLD55196BO<WiR1~qHu>tx0s(QXB
zRYJ{Q0)wngD#^QzOlT!}9f;L}{MgNfv!em8f-yXi#_%@bW4FEN6Z(f(ELxjBXw5iu
zHWa06cT=p7VXZ^iZvQy|tKGjn+nf-;OpUHf3oz+EE&ywO&Swc;JTi^$El@S4f&x}b
z#(v{$MkvPwsM5G<Ro(PF3C2l5CezaL)mq6TJ0(*P$<x4n40syZI>|?PV|3;Bhrc4p
z4cEr3w5#IB_6h*izJ#123a;Jd8V+ZlTv`LQVnq^+BckJP8DtoEY?2rp$V#}GW?V8e
z-+za|-D@QMpfa;^Ne)LHww^y8nXtx>F)ca<>%}BcWsU=R5CXi2XeNXc$TUE_4vvF>
zSVR0$t*a=Y)fD0|gHywQVj}n@npZ;5KBa$&=GCBDRwITGA*Aq7AZyU_Xc=sr0#J`_
zR_0SucwiOn>hqI+9+TIy#fC_>z&Q}G;gyX+7QA9)uC_IQcOWqgfTa_Z7#S9i5_GSr
zE(Qcqx`S$fapOJbk!aHn_brH1mS@hT1<8w8tg>K5+lSZ&)Dn^sJNz*DaPn*-{50u8
zI+pwKlQx$wUE=3{MRxgsXA^k`*!3z9?PI}ypK;vQN!&A_Dd`ga!ew=nQxerwkjcye
z(;RLgvCy;<;L1!4St`}T`6$2>Xw}=i1YQTRkbCJ)7ZpTspSM09Xd)6@H@+W)VqwA*
zK2Kb$snDtjS82wHcBVq^clpC-;|IZ}%zMf{R+h(c2cF8}nmW7=<gy+8$h3QReh4B~
zDDGS|8v*VoD+l){u>tptRn{!kq%OVG_fDcuSQ+@%xhu)TPZA(nTa<BO2&haEqk=`l
z3|xuURK%cO1O<4S!uU00UIU}@Vhte<Zc^wPSMye`2MJK~#2CekArKc}%K#L>%%C@b
zdED`wxIT8_W`|C4V0pV0TU&|myr+;e3zC`3`=s?hHXaEX27M^e)j4sq3p0Ng@#Y#>
zl+b#KJu@!G4G)%nzQ0$f3A8>&pRJq#cl8KQfI#Gr;_~BKAC#*4F3C+{-!87;{4Wzc
z!Z_<L3D72y=7i(3rTZ4>(z=^UzsO9Iz1?)4syFiz4po~QLrPA9s-V>^+!Umu08+P`
zepm{4Wtvvvc~C=g64jO`<69=J0G@we<ILE#_5MKbglLP13}7IP45*Tdy8urkX(##6
zA}??Z*+k!w6BsMtB1*2UF2_UE#-iNiz~u%g_#T4r<EPd1mF{Z%x=F+_STzL};MaGW
z3V1m#EGF=q=hY-P03Fugm8B!P24(<4)DS{6J}k`J(Ma24G@xqMu7ak;!OaNc#DO()
zUqv%1jA}Xv;kVLj#W2P}L9HndMB_`)GkY<!)E>PIUO7KuYvRpfrG+{c4yJKb)?YdV
zDo8wTuRzMi$02{8sYW=g1F2Flk!wDS^B4!O{1|x%l%wT5tQHSwb-&kNT-WX26*Ag)
z#ZM5DUEAyZ9(5nBcON7pWawgx7@{`!@A6IDMqTg(jV#>lRl2tsNccs5Zuv{<{Beni
z3M2?gy8u_|<{ky-xNdJbs3m0YuDKP=#4xZSosjcV>C*ZW1i(|;6MksBYd^hXMuLs4
z6}4~Gs9{B*3qZ9RU_3Th@<>`CKy50<>)L3fdflRht0N(CKPc6PM@{Ash;8_Te2$Sk
znflkvH8FECR*5aZoM~<$NqEt?*Y@@FjS9$a{^c;lkeT8colrGiMCELUf>WcBsmEc_
zj`|95RKoTtZJf5lv{hcKuQ0}m2kXB%#5iak)xH{HfDpmkbwh+rz?MH^2tce2elMC1
zo;kjD9b5-Q5kf)+W(91o)G`~hjc{E6urzOzFODqjJlzCXi#KsHaZ_@8$_0^`1(I$`
zM4ESF$5Pl1$)E%;FBRN$0&+k>&<&6jmAN{rzTjGveB}~lH_iJMSVad=hJ!rL5%`Kp
zTo;75NY}{vg<3mZy0Fk?e~*mJIIGB;1m(GMQg()$61Ouzz%0#kOAO(r`9cO@H9%EP
zP|6D!-gRsgz*}Kt@cZ5r<T>*&UU0HqIAV*Bmd_pF0nb%<0cb$hZv8?v4WQ)7!2qt8
zu06O%IIOndT}Ai}khi?tk>kl-`@M&|1j&GZb@}dYxW+wr?g>#k_5|Eg8COgq85a#C
zNk~z)xYyjz%R|<lOFv>J>HI^GvgLp_f^b`DLWpqzmn4oU2-xIg?QxKO^DZdf1m(E$
zV+{g+NnF$PIuQbTafpG_eUKA^kD2zXgKN)`l&Pvhm6)QWXU_>2+W~!)xIA72lpK~o
zJzlEUKWIB;u#iZ@gHi?b(M$-fgt8A!b1~j5<cTo-uhpqEo%nx6=@NMxQ!~)?Ad4H@
zu@?Af(?Mtm>?_hwkuC-*Gj!?F<z6kUF8qbCZI_Yi;rd3JD!%eqdAR)v)W6$Jz^kAu
zr-cckf>&hFP-||mh_-+f?nZxreeY*Ln@0aIe7Ob@xZ@Lt{;PPvZ$<I~NJrn&Hz=4d
z@nb&+xoQ9sFZ>!lu++?&KB^IH-Y0K!&nVq``{DlaHn;Tse3H0Z3cS+&51+>FFvs{N
z6=?37Py8%#$c)>71gm~f)hk)MXnv_HXs>5fiy1<c?%<Igix7YcP@b!(X{tRnOks>d
z#y(2AXjery2OP&t!)jCxEd==!@C!pMK#nNEHN*xlE6M4c7t_Wf%ZI&uN6Sh^tWHny
zabzEKDZC9bbGM(!5CgJRz2ux$WU#;FW0e2j0{%?A-s>3xpv3yM*IUv}fUO9SK&+0p
z$M_R=2NJ#KziZdTpT*{bCqZ)j#Y;L=BI7g#T&>?y`y7BF%Wsn|j#~45v??8b>C&ak
zm=;oY(V|kac8w=FmiR|CuNH##?BkIVzxlp%kFszN-FTv>T=fv30?zRTA<t6-Mtsbx
zUCX=TzY9mI^whjKp$)T<hd9<QBT}g{wYUIJYot+hZk{bz2wZYi99n8N%4qqHwWZ92
zO!sk03yi@h3JCDh5Ftbf*wl29AnNH!+Zw%Kj_75s#<Bk~98r)<ksEEZo~zgGM|aaj
z^Aa!FwpIbN%xE&wDwjx_mZZLjd7F%&SiOx(HtFTe>xcoo37z-ay>OrAppGdeAhPEU
zJ+>9%?M-$-gc!t=>J1?bn(0RR<MR5^;zuW<Unw)HXPdAT2hD030@??+2KF#oMH1y0
ziYz~JAe+=t6t1aNjZ2^$CsI>|Rf2n;%<E7WHGGcXeK;k|nmxdu0Ig$caD*N+UIKrT
z$Kx4!#ZiTo9Viz?ViaH-xh<h;UID`#h9QJO$<@c1nEh)4wC1$IK&geSed4_OQWEzu
zK+OaP)x^RKY6&^J5Vs=`Fx6@SMUb^M_{alTy8&=ns~Cl$bF}{LqYXAe8~|AzV(urj
z&UIUDD-5vfL!N#hli!VlwNV;yA0=4-7T^jfwXhgqjW6XL8kFMbaR;%e-!0a58qOVp
z)q)WNtk*{UMYkDv40HRix@w+Npu)S*eV{ZoM-JjeExJ7wOAFPr^3g9;ZD9-4iWwk@
zm$FdM#-;4~%uJT~ylENq`KImsuHlRt0A!J!xTd+T9Bg(T-p#2+p5|91e;j1zU4^An
zkSjvkSY=}rLJ|mnL&2DAom_Nz0t}2>AP4ES9d<eG@$FdJ#liSYg^L8eC?7E+Y~GQ(
zS9_8D735uhQF!Y9M3$3y(r@A~(oFL+(rY=eikbQtm;x1~x={()mu)IFvTie(I}O}&
z(=;(74CaMUwXqO{=slZElk0E^kbTaQ7h&kmPRN5s$A?zU_$+nHyS*zpc%^@k5D+Zx
z8W=d_=+F}{)`lNrraH$po-FP`Vf2YWx}#QsfR>ZXeh-$i@%WLGw9%PWK}qg@Lo?8R
zL)6Mi{53r6@0V6V^?E^Bs+uG4NkyZ@9&zBn<GhFG0@xcLEH?~ThyhuMgAk}^npct*
z7xTYS2-n9cd<ke3;{;l15MT>K6z~gEela%$5C-GCGOjJ<SQ3D25-}wds1p&p3n;)n
zstK=Y=ajIS&g>`*R2ka5Nf)nT6yO{_rc%8iBPJ)}r?<aEL4kOaIQ4L1T|zy;^;U=a
zy<+@28h60T(^g2S15s40;iQ-Sg79a2v@mX|m%m@A5F}P~@bD|X3%iyHHq@8#F+}<O
z!Ep#(I`o;x_y(;r*!HyonhwVYNtf|9n+GN_Bb>md+s(ABQle>Q-O^$@IOTD2ch$;r
z)4_a#o>+LMCwUTW;)mO*eg+ABtCfI8t(V-fPb5u4rAq$@9ag|0E1!&3KJ%y(Ky5py
zwXfW&Lk$db63~j>IiS!OX+_<?Cyf(<U|a4~oY64Fq`d48y(^w*8%Kkr_E&Zrf`5%B
zJ(erB{ga-2w0=r$n!~f&looN|<~RhqH*y`P81@iF%X?M;HXdckdgSISbmOHSaSW>f
zx(=6_=fw)VLJ%{-2r&g5XKksO&q}zh#=*3ybbk(`Zo?qpRh&YUyclB$%AZBX07lim
z(tdzZfHVg<49Egr<C23fo2_#@o!sQgbFC^-WM!o>21zk6o~%Ysy9JAd0*b?#qFl7T
z$aPSDL-Wj)b0Jh*pn+Q=D78DA>)@C#YP0=%{Bs5M?zfhgg~=*THgzBSK14eHaWHvw
z{Z-d`3_t_?{(R{a@LjrB%kwPRZxnvox<{8N99Mq>#rvRo3zYpJ;dYZ_ft2F{a5>>S
zlPF-xvGNgP+2aL1E9CKyHXa7Q5hx>f3YD2Y?S4$7%D}@p2?HOlW}X|KJj#<`7b@i{
zE(x*V{gPA<$D+i+tXb~&>xNncM&05mjl#myCnlg`CfAjp(>3mn{tb5B)7+->0dMn^
zJo-m8_qc2?;BBpGz&5#OZfnRb@Rtui9(c@BfrY4E$m-Q<PtxPyoKu5tXN@Z5tr{c%
z(|Lm)8{C7Sa$Ak@OUwi3{0d^tAeVqvh=b;ZtN1UxTLPQEt!FSC0V|aKH%&tU2V$AB
zhUb8<^U9M2ILagk<WO?(ssY?-e_O?2;Q6m%q(BxwAUlq1gZrN?+l9NICn<cC@O(W2
z_~r%8F37);D(!OA^N6TihB5DgzUcTo=>iMa&p93kyP&tBUBOoP#yZ5uJ-05Sc^SN=
z8GK5rg>~aCq%?t7a$M#x5>Lw0kZxg$H{TAj;UQvyH+)<`xBQLFdVDYgA>oH}FS1%0
zFPaV{9f5aqkMiuGNeOG$#@em;_;bgb+9tVe#SI=->*tGWG5zRet76X0C+hQ9?Qo;a
z4C&&}cpS!x8l~-10X0y)2}1MD@hJ>*fPz=Uv>yhEyT?HzYacu)z%}O)Q$h$3CZ>c@
zj)%CI4O%$~s>j2qTy;n9yX)lL=b;e35VYbU)Dbs|LnPITi6N23WmbP!AUMBT(sUb|
zQtd{7hnDbOziq+P{IMoGD8`Fu=HSo3!1=@M+xVG9!cVM$F32LV1eV7$9=Y4@SoD7B
z!mGWa^I&z5?(TEDbQ#?=kRfHB2t!g$tJ}@Ass!LtEv-34RQE-k(A;(XAB33v*k|@m
z^7DZmT6vE>BZ4mg*7*3xJZo-xw5<fpG!5V;m6lSTM?fc32ZB&}n$k_HxYoL6XI1rl
z@xV-;UL__syH{%##=}Oo!;SO%DNG*+9{jGz`2w%uUCKj|l&JdA$uL_E60S882~16?
zd^bI$f4yFZmX?_bGxPKpqZS(h!b#;CSHbzIhEc$(IBQr5Df{p>Z6)tGh3WXHW`ofP
z-Ib&r0Z=md5WTE%DGRjzXv3J*gOT7f#Q2;=8@|~)W!rDs0V8R8ggz_M#$E)h5-mqK
zu*B@ri3>GBn$r@KIzN_5bq-Dzj#gL=#x!ROF8+K9(*Ke#3$-?+IE6^dd5Bqt-(}py
z=39Z^PUC>@WHU!=lG^3*Mutsist8z)6K^6!?s9CXc^yFPq9AP7IJ^5=UAn|{OG4Hj
z!n~ytx8J7tEtzM*Dc=;_3yptZDtP59^r)P`kas8=q6m*S`S^U(KJ~=)+2X(rxua^2
z*FzALzf1W8*Uq77I5cx+plUMMT<@UfMc|=D!ZGy}*F5RDnaKyQmD4&bOOJcop0B)D
z)t=$_?|#>O=aY6y5Iltygp|;<6AgS5zaP%<<N@MCZcvaUD0l_Y!kSaC5UL}@5n&LG
zD+8oP-B*)B@i>S<Oaq5$8#B|xLBe3#R&rk;M<4~DfqL8%b2#lgC^?#J8}jXS6D3&W
z#qT8^1LPL!Jjup$s%AGJIhiyKDUh>z_w-LflC9l?<%&O<45&hbXYf>?g*T|YI*Vtk
zp*UXe5y8OA-y&{}&*y<x-L-ue+@BvGfDU(g_e1E?g{$G8luqKF0@Ykly$ed9XlA8M
z^D612R{1Ct#HxvXOZU&`1*eYzS2+iGS;>Or{xKrso7MD<Yk+tBbn+N{0QW9X-j^uv
z$NCy{?|GVuFv9M(;&@$a3q&AW)i3VY#8IZBR-c&SagcJt0YuaqSJcFXH^GS6;pbHM
zq(n>NU@HMFU1Kh8;nJ#F0dkDjw5GW6SaCNj!79eWi9GAy-LyQKdwd{joTi9~QZM5e
zL;+5;ahH}j85;z`v?OM?VMhLnm9p^!+U6a8hfE(EI)Y54!vL1glX(KG5&}|qqyu9k
z`sH`VJ8Bw|-D{(LSQVScHR^Bi>R8%EdJ9sCwXq1xI1!CUEH0W+F=k!?&4kd%*Q0t5
z9KOa``)VBZ*tqO}g*bl6aRIFa#8MB0VM>GCmr$;~LAM$4FdNMgYMX#+j>Q7J0<ii{
zeH?Itk5ABNNv?RBWW#I+Eej9EFYdlmq5pC%Zh2M-3=!hmo5(d>=tY6oXCkdUL@@7#
z68GOjy<2N6%mBEP5Q2Kl0IQ~pL%>qGf4W&UPHDF#kEHI@3Vk0{Dsp8-`yJaLIreIu
zPeT{j?6tST*{kt<$%xl@{$}9a+Rc15?-iNHf3Zda0`k@c2}NfhHZ^{TO~WkjN6)XH
z4jvGPJgTph4&68xDpUC8I`5b}Pd0n}63t7V^)UWI4LoWX1*{TN!E~c=U;Pa?riGMU
zyb~&*l9=3Gbz!PflB;I&0uYOLd$eOSf972uBJMLO<-U~e{#fDO!UpzLb{TN0MFF*6
zJU^S8^f#<}C^d5nXdQD&v3d^NVj|KQ3gsz8=!3(Cn{wzM1J<?hWRu?kUOKF-q=yQx
zNIBQf9vBr-nQ8L6X4I<&Lee(iV*YXlTT5P#A=&dpGe54ZypknU*<4zyvs$1hvAw{_
zi4kpPcpuvgs&m<RwA#NYdHnEbd2?Heys>i|!~)yNq-WTuV66F3%(Pvsk+hRP0SsQJ
z2p?-0(9=<AU;(l6J{k?gia;1L6T$(5@>(h1)##+{F%Hgu6~6*TF(*`QECs?8EQ?bp
z$0?$C-lD-A=^*zU#k@_J4l%@7LIfmRVt)s=&XR)fndbWj4##7?C2qpIG=$|~%wk#}
ze;4z=C`?lFzkorB@@@sIwvdv7M>GvKvlvVU7TW?&B3rY+h9a67hoZET931zxkm}tP
z^<6Xv+O?q*af0?nYQ;fB6BefM@?FLQEfjy&FZz6hJ@@!1SvIc$Yv9%|<0`<#E2BB@
zDEf}4RpJ=L<AwP>E-|7p;D=6(xblh1JSVVOscb3-J6?TXBVAbz@1=a{((>ryCu`{O
z2lfN5V!HTMzft5mfYrwF!t#ww>P3(WWKnhXZw#U4kC@~BWsy?0LTE14`4WOy0Igef
z@?W%{b@1V%R%PBvONfdC$5B4i<{N-yMb){WF*-otX{bJ;Q{#ZU5ON13`g!&atWgiI
zT?00by%4%|p&{l5LOdvt>phXn57#_x&2jxLX~;kdzU*7pujyEbYtWzqutZaEh*NwF
z5#t<>7}R`F<Kq~jf?2~L+*V`ei4arX7$tqcd@lb62>7Ky7EBAPT_s|<NTHfnOp>2L
zw4R3{?sKPk`a^Aoxpp6+6`8b*UUy#E%ORZOV&egjOZ{+&v3Q=y5DR8gTLN+{)!qj)
z4e%+NT(gZ*<*lBnrAa+v)l~r<obvW$?;LnP5K{g`Gj;Vk!U;g=NV>;CUjE2o=<=^v
z?ql<jvs7e$s&v5xETT&n{PNMrr;TanIDYyQ{LnIuObSxnQn;nt3|uh>ubA9H^`g?h
zq%%2w!AIQ-w?NgV1spB!C%7{9`{F&HR&?b3=L&gogn)xnE1Jx5aBIQ^4V0~FO+-SI
zHk2h3kImVZ00UL;Vg}&Jj67J(z}mGA&0$YGCakZb^U_yh7w|)T|3J6o_F-U`i^<y#
zj5m$UO}L&XXo!bs<3R*$e28)JJ{Xm!O0}@EG~}j(Lk#06o&^U;d`ibm+KxFL;VVQ1
zsnmO+0vj!75&#2w2i(fK$vo%<$QBuqJHV-&IarnFDbk-MG+^e`)YnH*YFxGXxVx}~
z%uF`FR}5rm7R3-9aKeytvbCn?npPNpvtHogNiCzq5Rmlu4FT}yjOH7~D}oCfFL#X9
z(D9be*4u%rr!@iCLHqVfy+d{B(jkziOaF!V&@zp}ef39IMj29~X=0hHYM+?2CU@k6
z0Fs{rJW^{8AiPriKB0@LPQF+wo-yWlmBp!6CMbAKpst`a%}}0*+^m!#B39;EwDS#=
z!V2J%^$P@CZi9TXaWEgOXp$AdfAXW3be8Fp+|Z>3=l4Y0k>_&Hg!_o<25^cUuc`d>
zx+*$4vSWb8AskW&3RWo?1qHLl9MBp^H5XLPt5Hn}5e38=g!c-g@?BvJG0M5X7=XdN
z7$U;V#gdIRv0%?*(0A#447Ml)!ay06VAj*YDsBRTG|N;1&FVUUbFEcFVg}eS*KS3t
zl1^H>?W<s^FNktjYRrUbb=R;nk(R`CXj<iH-27B4izR9?tM&-M%De~E0zVn4f`ng*
zwmH!H8>CAV)7y|tIiGx@nN}Ac5$*y?yL9>eYJ2#N>oAXh1vo~)7XVnKco!6)DkyMe
z?x@W}A)z1RuEKAi6(6$umjl3EIOaN$Bl$9~`9NMqT)EHFw8fAb?u8#I3=f)s@<Nw`
z^Qgpoy+@KQM@Q9ad7kTHb;S^T9=HWI+)$;)0;7Rd<cXiovu*g39aZgp;6k_jag#9U
z|6~I*Hv8BGv`&sy*yQ~);L@~v&ySU*X;)QV_<a>n()`ME6+}BqHKm02YQUEOS_WEu
zg>lxpa`0-H&Y$<cW&jIA44BVx;&$iAnt~D{K}-m}z|yCqpc-|@Gk};1Wa08OspZGI
zSGWmMoFk1+ShTN(z;Mff?v@Lai`Uqod4~`PRkwniYwU$o3qu659wXiJY0|dk#pV*R
zeV%P^5dtF4&l7$uO7V=FYEEb{RjrHmIdP90j2+lN4ZL;`t4r=2sz90J1E#IYt4beN
z`M7_*E<`64@6sW<E-zmY7!#9fT?tvck-ATRyxEE-<<B@-$r6GfkGNXW=J727HvpeK
z@WHiae(_fwxA;-s+FQxjFI53J&xz&vT}w;T><=i-{*L+QEB?2tO>UeIUIFhezV8zc
zz}!7;9YsJh{<>E9lS$dGORLEADtYm^L;>d<#JBd&z^8-FaNDj6P3RabZGkKJ^U3=&
zqJvmM(r%hpaSo#cQo{mb#c4YOQ{$30#U%*uRUE?@|FdfiYNm)m&5xn?ZeUL#w4Z4t
zAsksGW*|>=iYN|L$t4JkO<298l=S-8H6x5MzQD5)D<2&P*cOpf3pg-Lmi|(eOg#d&
zNEV{R0l5Z(Z@r%g*ylf8uajIo3R8{e<M46}YL<C<g)tT>fS8VYURasQpdM<Izi$wJ
zow&oEZ(rQ%fKz7yYrJp*aGwZ8t{50@Z?BVXo+^m`D_1kSbm`J9wPIpYe_}}jHFisZ
zDe1?juBInV3zUB>RQV6^1*`@lJSL<E72*v9>iBNNl|LF6=0%bm+Lk%(jPaECbI}k{
zoa?LP@b;?b;fZxcd@4_cPcGZ?a@C@n<gXy$KscUQnt|!(dTu!$bbxzraV%NeA-OT;
z!;UxLGb!OTSdBbdk+eqzl60C9qXo=c;kd$t77Y;4YE<*U3FOlK7!}AGzl^Xw8kxI{
zEy{Z($1sEl6o5E)+C3?NN=mXr3+Cm~9HF%QVh(8ev3C2o1|*--dD(yu^aJqUZ;5Pw
zmj)%dPkM~iG4+y}orm1xBQ$;iP`6i6gaK9&sDNQqv^&}+VaDShsI}1rl<@mNs4fWc
zm^R`1#Hq^#Fn-DsC3JafKkw3|%g8?|q;wON{5ed?X^tl%5b7p<+Aszti90Bj_BF7$
z&%+O%B##9)Kmx2@lUE#Y`8^Ib1W4Kz<iVolJ}v@o6LarhIF<E)q*x3aQhB5m^5ev|
zF3Ivk4+>y#Sm8)g&ViUcdvM*&H4(_P>fsm;CRxhSvx<PDRMCmq5e8iuM@ZA2O)%uf
zkx_~m88{3f&FQp>3XHQw_cQ-hB--M!CA>~#0IEP$zd$+!w*0r>4Z6l-Po40Y8JD<~
zGf1CC3^4!SH@RY}`yn!uVO0JGJ%xa_t-M{DanM~W>A>PrpX)Yp-rl7?twU{+ESibX
zEzl>SWY9k`Pio9evXltBw+kEdL#x)>)DNioC<BPbDFO5^SzROZ8b>L!#Zzc{5m0~z
zEuE3K2d)j6fDw;l)%G&qCgXq$kX3KLH#BG3rMq+hI!YV`@TlnuFc>%u1*;6iQa-D}
z%?8I9#`raJSq<ZKd^F9gVahKa2WN9ah=!J=OMDI(1Ps$f7kfSl2oYlDHc|>r%J>5v
z_iXs(5JKi952PGV2mt3m!Zev&(3lM#YurkH({7^oQ6w#A5aw|aR$Ma3G_j!9N!lM7
z{!qt|IZZXl7&DD+y_RZcfee7Qg+l8pi8*1K6OEQ2LHVds`CFE~TSboUrmDAs93DA=
zJd?MjfDO${YF|j22RbT1-yPAA!JNx$l(rx|XsC5^qeGo~%)g1W>=}&$l9ZJOkfr(?
zrFizoB>!5HO>V1nuomG6P=cO)&$<Reh}1g1uBF-n<Nj{j73ZzI8vuK&aD^6vC+dpf
zvxVf2W_#5Ka;`%SKn(Dnuk9!m3nMfztMXKue>K7R`cknl)A>1LTs+G&kaw(E;;iS=
z4qT-tnPg#5u15}m@^Zg_(7|_DQQ%Fm-Zf7u9g^gs4lKS+e<4|HRQ)S+=WS~EOaa9-
zHB~Fb0#v+9y76q6RZigwsG7v1s6unzo5;~yab}=P;$Q%t)aZDPBZPdj>M8lJ`5W=c
zewsF)y9`JJtTMK1K42zX_@{%WGawq*mA^crgIR!tVHn)oAjBMSP=HIpE7{lWIBkbP
zz^Umx%@gCG0k%bi6%S}tqq+7%S0F^=l0yidGV?govYPH)fq9!IgZm&BeHBMbw>v?G
zhV;Zf;#j9%mkP;(1xQC4c;&EsN`VX147BFjey(31NpW2m=$f4ofD@B}Vj%|lFIHss
z7XLTCaluzyrb`!hsAKPtjc!7|;iI_=`HM|-JD<?!yU+6iedt8G3qGutM<r^vl|Ygb
zr>|a-EO=D#(yB?9KZc0!C-NkoyIO_tZ;Q7z>^?i7aA99+2Zn_shc@8_Lx^k}G5yr~
zz&YzH@@+#d@c@ByOW<CulEPNtez9~hEe0AXci<I_3ubbz;@pTh1V$^8Z8XOLNryRK
za3BFuw4|V56$S_}1vejzqnZO^RBfukG_*zyafsn>Bt!|KjfEj#7<{}?Fl<0H6HYEr
z3+Pq3Xd9*!I7F=*sCJQRa;7AC5QWRhfi1~9pA$2!ENp1l?3ikXZIfV+zUvdm%jjBN
z5P&vOofO`jz<oYG*S*jfAjgx+Ymp9cN2=x)CH-J&&9w><t-1g&cLWOFH3V3D@Ct<S
z&C#_$G+jf!DoOma+8*$>@Mey{pFAP&!UMB&WbcbE@9!sFIvmzDI=V1?pBeWU#B|X4
zB^V@Rh<swo^|75_LXSVUc(F21ITr9i0O=Tqc!{?-Uhb=Xn2kWdE}$jbMre5|Qw#^m
zcvi`jo_gGY*F98u{8{6>Ycn{xcI6I!6NdA+vb*p8GLp@iB!BitRu>0xQ|We+<O85)
zhC;BsnHupH4Kr4nl)xZ)<CGufT`&L!NC8m*tSJaEWg1pvTmUTDAI4!0ariQgt0_Ik
zIBRBMj>9;wT=NPc7H;Wc+Yy&KA|<|<zosPS8H*VqQy6A&>lPS?jC1bhmq%PP6?@5t
zD4x1*O7}BCu4|l<&K*^cTS2G`q8eJz>sgLh9BiyC_P8-%bIbEAVnAW83VXJ2l{-6E
zHbZ7c4FTekbF^KrH#c*`zrv5wrHk=S^6s;rBwhYZY`qIymAp%rp9V>e)CeKOsHDV0
zqHzO3K`p#Z#Wd<Rz5a9V^EIUUCk`xb=0(va6*x8v#68^A8{XT5zoz03Yd}=*CwPAM
z1q-**m&ozSf?4^5N_p$NfbaH3_4~#7_dd>~;0`NyW_%=U47Ez$p{B3rc_4sRG;f0n
zBE>05$ADqhnu<|1t~A6rN*JT236S;mcN_i&j9+1h5JLAM8tJ=vFvJvBU`s))xR^{v
z`1k+@QjQz56H|z3Dkt^$;)5{Pa7-aFhM1CgH>B`SB1#<#J=77;kuM+tyvXzLLa>Be
z4(VM(k3^vfODfAA1VCqFt65)-u5G0lX=3{!P9`}4*q*T=HZ5^Y0C-)q<h4uAn|P<$
zx#UlzkIvt2I>;wB2flx-PY!Yr44)}o{LQdM4bch^o+(|rbRoK}cbEG$tiORiV6@v3
zE0YvvoLJoWEPixS%L5l#e9PqVGo_1ARmW{2{5^mO8yasoo_pb7x=sx^=%|uJBW-`O
zxc0(hgGDhJlh|pC-Y!3wkATgXzXm?#K*KQ{>*vcBw75y*7XcmzGOZUNM7W7CA{4Az
zh<&HHYGREFWJM=xkHUGS=?fwIC?J&rU4Rp~N9AMzqLj(XDHOsmAU&3q!crS3G08Pj
zQg2y8Dx8$4JApxQFeP-SnhpxtxB(>U5syrndD@mo34S~25{a@M)4dYH2-f8}nzmZh
zI?xjV^=n1cCeAhMx?Vp?o8uaoU)NLPu~sG1pn{aa095#yfLym3B5?vN<knG2;6JQ_
z#U~Gd%&EKiqiA!%zDf_g8LjHlr6UkOO1ktWG?uQtxlUrj?_d$eXZEhEZkfBhSUnug
zcMh0ynE0fRbMPwzc*Oi>m$;gEBY`dHjzrcD7l@q1w=}gVVU;r`k%jiw50;K#vAQL%
zp32fACGQ)fDVj|lSKufjHwjiU?ZwkzgcGeJF4|YJ9aY;ZM$xVs2ieA9j$_dD`C5Z`
zFO33T6`EJT9N<7&0lIlC>rY^aggHbRf_Sb=6q~vsq<Q}qQh<3aR6Z<bo(Q3KoWz`u
z1u6OvL`p3z(!Ci<XT|sTQ))TMkZgQP22MeV(-@X<nGQHGg&3mLi2@NOOof&o8I>@9
z5oX$0D9aKVpw|Mj)rwgIZ%L$vDCNTXf)@i_D>W|dgSKFSZvhhfOv=qM@e6-`mo8np
zbm`J%yrr9&!~r_lO|;1>nR2E5R_g@W@;P}9tOAaJ3eQcx%)1ZSP6TxOIPD!C1jum3
zH6FL~qXHbr{p&%Fb4{g`J7nuDvoPC3p^-r&&D|yfgI`zUU}j!~qWzWL$foTQuhw8K
zg(W!ZaTdkl;p0V7pR_G&S7lE%n*c+2K(F3wSRV}Y(ztJWsRq<McU)(#uxI=r$pUhE
znd^Pr%UppBEWx+}x|IAzFzrJb8xUPX(+;jWGY3%DpqJ5p09FaO!4qwVYe`r)@ygT5
zLSu$YgG)u5UH8XE`dCC%^@SaBN4VBi4r0lUX<0=DrGP<*)uV7(4Ff_PqwrnLL3yx7
z@hGS~S8|O}jt_&H9*$GK80;@b<-LM}DhQCc0BA-)pRBtvNgW|2<wKJ4OO*+5MNa!M
zfN3s!qF_{rDKN!AB-6U$?5S|D_b)I65<ZsFJXMxlelSc?u7iw&jN95;Bmxvr!le%C
zV>%b`3HHt4?a0UAobOA)I;kiiNZd4$6zH?Nrd542S|r;2SgYDnqNIdqT3#p|o0D#;
z8j$yFXj;*d6$nf6%XR#?4g<HzAXbmU`97=u$JVj+G2h`4p<=)Tj%>ht-fz@!Y?8_y
zOIff;e3;r8^%#d2d1B<xA}!*puUEdQeHREk<dT*52E(o8n=7qH+^qYD(Mfmd#M$s~
z$v2S{b?L&7X+~qgn`4{BBtpV5cMw}rlg)f~k>mW}X#fj30JUKvNb()4WasaN{SVt~
z7vL%{ADdY(*YBCI@qwFKum$vdtOwOL9TgyzLOKL5ksq%Kb~BL51@c?bjPA0nC+y@d
z63M-1iuLBn7T7qP5TqA-JSQt2Z8&I1tEl98NzboG*x0_{F6AA*MS01eH(J!WH4&|Q
z(IJXv=lW$SAZdD-e4aZ)O~wnvw3&bRP8EPfR0?(E5-EU9%~<wrZq)`iT6ipuA%9MD
zR6YJhNNz+)pSA*ANt$~al<ffZHaL3`l=v7kAZtpG62`A-U-N5xbj_}a!A$m~9T|Ci
zGuoz*#E6hF5Dx1l^>PXb{}K~IGCnWmnp9whKu9-1Kfoc}5<>)~E|`qSoy@^1<6^RQ
z)xN_K0vfn_2Pi<r;FJM4djR+{=JMua1Vwv_P0MY8h%`Uz!N+;hukLoI3KVS*Zsb8f
z13a385N^~MASR!ZRU8LcJ;ym{ew45^xlEFiUCn<bG&?VH<gx-ye4?UPt+Qw4O1g`7
zVX6hRo<5&Z{W=#uiR+NnCkb}0foDN1Ek_35;(7U;@RzWDJ0yNAanZ1+bJ4=V<ekML
zAAizkE4_6g4iMiiY+i4Cus^bcSY3V`20A)t$1>?-;N6qwBR~Kb#-$c~`j?~&G<duv
zY(FI3HLzjORdSdEF+5l{?)DVcnmXULN&`M_Wd;Vag+~+w{80k;K$+n-{c8wo?U`YB
zpL8sM+nNxLE9R4Fz@7zylb{FPM+{2Vu7DMw99B`t*AW+Qg926w|CJNABh$PZV~8_&
zHR?Izd_ERXYyr$-#(NcoupMjtK?5_hKNMOqnnneA<Y$>j!s*_mm>EKD7MK_?<O@f^
z&X@ZLG~n1vOYrWP;^P*p(2!0q=+NP+lLP^dCNooogdDf)L6g`Pn%;rAKZ5NYvw%SV
z)flXeItWIAvjBOP%#XozJFg2I;FYn-06`k??%Lwd5k4ITp+DDm%5V36+r{4#1*a&G
zfmR6rkaX$NrAwEw;L$O&B3=frh=Ucq{L6+{R3y9fkCy`{QpmTcz1P&{Z@Q*_ReZA8
zDzo{0$#klX^MR#5;*3IGYu*`1+hJq&S)Z$cES>@RQ`?YN_jc7gxb>T*g#*}_Fk?Bw
zUE1mE>oTfU<r1_03kjx;6&1KbfO#35(iE^V?}9?wjv+dDH7frVFauXmZ7n5pm;DG0
zL%<xO*2lDUK!Z}~OnWDTI+AMcaH+39A<cP**_1Gv_6<!Vi!lXKK&uoPkfhQP71&Zh
zXV5LV=(Q}w@bb(MTM#SYjB~kjOm-lrpgZ|wo*w6Yni-xWS$Sd@yxk?w3Fr>8*1C|s
z^9r=$0Jg?Fj+oIPu=VQ5AngNi4JmBh9~XffXow}Ddn&)L=;neSX#@u9_Qk*t@vT70
zOMS(HSCpT+fLnff81Qr7=Y8QC3|+c(>2k(|@WGcdm74*lzm<q9T8nOm_HRjlmjUp2
zfCCYfV?aj8TXVAO@fc8%@7^KI?i<#S9DEP}!q%e^HI3)W$BP-fZgQ_<pC!?r&5m}-
zzXobC?0^uoEY69@rfyPdO_*b{`fW_!T%c%KH1H}00js7k$ksrnLAkHusC-rmYK?<y
zUPX%w$veg=j|91fm>K%@hX6$Lc9;=&JB%e`$u^)3iCc$D^KURyIPxZ(SJeBYB&6Rt
ziFp`ILrX@qVNOS^z-TZK0xXe30Pq@<A3g$FwrYB<L8AWl1sT^irc7Zgyp7P`z7779
zyzXhZ;u6t(rfEeSV1l3#?LSYj&j*FiHzDA!)o$uS@+I8!z*%?$yZsz!xlKP-x?Eq`
zB|5;>rAwDE)`L951HvTRE#4TcC0+nC!VfklyiQEtg_XDZlDPeVj24;#34o{4lFtcQ
zagU_WWTj{ntz1}9p`>#^-*|Ttb4-K3-%8sErGF<&hI^H4$6=y<%ymX=U6k8N2xv?~
zu*74Ou5KJx!MUl#Oi;H&zzjgCiQtrX7@gZ{7)%=rv+1Cu$3^36h;lBFX<bF17)3Z(
zE~zDM;OKc{M+w<=Eh5}>;bjQn#(;R6$Fsy3pxReawW&BT1SM}L_1Q3mK|rt7Q6`>3
zGuSHn@Bsi{DcDFl;}U6?zO~?lS5ru<i&E4!;5i%|^t`lkkdP_?1Jg4nG`aJSO!G7}
z8oj!EbDl0h!yVS?<V&rwy~)0jf`&Yig+JVZU#I+ODQ&NdJH2U4b{%{Mc6fWx-uUM&
zI(1>}?mACPmo8n#>l4!I#S$TD$*<EQ1T8Tscz72l5=O(#`OBpXil(;z^^L+D387{r
z;iAz11V#p2MX-$A+{mae<02_L2ZkWwg&H--=mOc4y)c73ca_iYlAvKx-z=Y|PywGn
z@ceV6{wZK{+=(e$#8MkB0GS8Tka-&n3OLOsfkN1BMC?<Zule{m#?pjvoZ?Y6uLe05
zrx2YVD~?(gC4`^vDWe5rY&3;*fAdLE_>f$q59*{M(YUH2L%2cW18)LgF@#}CPlIal
zFeD*ycXLC=`Pwnj>Mo@;*9E6IZ&Htqm(2K_i76#=)OP6!E~F)q*f<~Z+rU6Lar;ev
zLj_<tq!{TQQ$c1V^w));e{48Sbonlc(sr@AsJ1~32#X&G1q=gUyb8qAXMiu)5q|as
ze}#17UR-FY3T)xW6Hs>{E@ki1rAwEQfr0K{+En?m<}Mi6p0q@mU0@?Sz!h->mHBEc
ze*xpnIq5=}Y3e?Bg?zq7PsBR^4%d`yPHL1;GB$a6)t?|=gI<6-soQRQzQ5}hoS6m$
zi>V!d-|V3vhZU*3Sdzb6#gS_2X34vg&BkMGBhJ+$Tda5!MHFCQ-irz-37PsJUPi?X
z5JLt)jgmHjQwng6;&o6puw*~xri9}tnpc2maV__S0u)iph8n_9K|Ks;-1~=v7Q*6W
znnVL>;C0mcO+ifv10+4BK*G4M<|FAQ<umg|_qK-$JS4B<;JiZ-D;?x#SVywRq#ABm
zKPgWqt-Szij$^4&nwlVReI#=Js|>;g{Q|WaQU#-VpMa-fYxRJaS07#~_z<#nKG(#H
zWFX!N%yfz0X7Mg_6)5gY-UEkraYr3LPr7vJ(q&}MgiY66A?F>Rgai>!Q*zlf?I%M6
zjy}eSYbv5}voDipYPJKH)Y{!?60WGlqbk6`xtK!Io1j!9fthl-fNdQU5@4DAnX>&&
zg#0jQoaxDc8@=F|{wNc>EkWhZos>x^a^lV?$8{cV*G0qfiIBi~av3?yE(w9kj*jcI
zAxfE@#2LweEPGzW_C%gs*7MgjrMYL$a?SLDY)uk;%F7DQ(zaBY%cMlRHw_RIt*oTa
z15;eJPa-Mt>@i15LV6Ybgqv%*CMfgzM!}iK)^sXQ@OE!ag4u)Oc@vO~=LtN=p@o1l
zP6h(SZweO2IjhH7JA}qB<n304xJmO)x^H>g0oTv-eUdFY%z|^s`%oP07srTP!^OM|
zMvMVa)4qjZeFm+j{c(;D5CCiV8bVal!ZGSOgP9CU0K$NAK1M|>AZCPS8b*{v@=<}K
z)Mx{{R+R%Tkl_cM_mlEeMe8%elwIN}1|WqL<y>$u@QNvk2_6;?iwq14ch(R<I{23~
z4%jn@;9PG3jXQbo+qal`-`oXe<@Y0ol%yQeEB0Znq`#B-bEgBE+<O6gzg17M+9<hb
z&t`mV8bhglwg)%adytmuoh2g9AwZuU<lYpZwR}I!y9z(vl7ViwdD~9wvGA4Ipp^o7
zvv-EoR#YXdWXR;{?<Fr@YV1Tk?qm7UB_nt4vr{IJCmr<g!u0ug=<@|sUN$)b_pb>)
zZtCc*uw6W2U2N!vpQ>)=@3WM(_VnQO0Q&bB&~Ts{W^Kozeh!kHlITEYW$nSNe5nJN
zFNMp!SM%bD{9s$!PgE9d+cuiTR!`$S^EG`B?@50Oc;NbYupC`R1gsOD#;DWY^bID+
zd}G7Kk6k-CC;S~`?rY!{A#s%6rHG@aOC9G8?AWh8z$dXQHH*un!Y(>leucQLBG0KQ
zB%amsqA6SQ2Y#^ON4-aD^o=hkjPd*NxMY9>UTD>OoWmp<V3f^4)P&Fp*<+YY1BZYJ
z;i?)3)u#FiLmZv3eN+%@Kp2%H3#N%RPRHcD7>)PJJPu+MU!<tCX|Oq37$~P8Oc4)&
zZfI1HjNa0a0SL)F6KX#SvQ0@qlb8^aPMjkJtTNK}(i55irpSK>A^VlyB$?zq`qSf^
zw1z3ww92yy(!pOaM9Ll$gX|14PFE(^FhB^V<yNuixHebeO?AV7mt4g}Vn9U<4F{?V
z!uND;rU*#b(Oi@Qe}cky7n0vN{C5sitn5b?(7E;d-yj_%;IHo$cshtB@=mXtUGM?m
zRG0Bl2!%l9*qINx4kkjEE{7|?@nBp*mVoF=ED5x8F-3R<)L?@n064Gqu2Rf(fQ|Og
zK;Hjq#Fhr6{n)dnar`|m#6J1jdX~-VbvnUPgVH5vrm>b}m&g{=OVcbM3V`GQmP}3t
z21F_$`<yO3R)d-nPVvz_4UU5x!vF=eMgg!8=5xa!+E+>%FZYcaj|eI6hZa9opL$Ib
z<&KNynK4G~><NLYy+dk!DQJao3rV%pz-YS8oZ=}446f;hu;#o%?kPH7x=$VO67yN0
zN0sO9VPRD#R-1BtJ=QLQksb|jK#sC+V;^H<!imyEwHnh}Nu)h{z0$ttGDwh(JdcQ0
zUE6(B{>ch<08IG}T1^|~d3V_u47B_NiKU7C1>xtfwkL+~kuFf4#AJPsN_V9R3x^;f
z;|szENtZ4i-so(9_)MU-16ZwT48t>I*F3LF7n_VQPYY2dajRZyAb&}D6XKT3-VHbT
zq+N^I9eJRPPPXLArEnckDB3^n=fON<2FJ={4=LMgpp{KP1AjIP)=!tjr+y%LJJ0|~
zv{q+}5ryfg-#zcERL(0QX&2ByfG9)(v!=LcP02RSfYg@)RZ8e?+E=6H$2jHvl4DBR
z4yd-(91tR629!a`)>{xN7JVJZ;Gk9t;Q2{9=s_iUpDmXuri3>glLj;HRlo=HR+O<~
zNDweDY5fmNKTT<_J3`DaDfgGH1MTftW80$WE-exHz8Nzztq9?*UmrKvjCJjRhp1HM
zV(JZT(1aW|G6M(kylqO_HIK$xcOY7xPYqsozK`bHr!`juG#~dnE0V9C;755Uet<Wd
z_0I3tQ{w&Q??T_UTCy1+4<83Wgw#QWZv6NIxX1X0MNEV)_xE=ENC>k7SpG8DA?k&j
zO)$Jwx^w}ifX%k+s#g_X7I4uFGuK$ap+9=EcK_byJf7iTlL~-{VO^4&<zNFGuFJrD
zGJ4Wf^`pV6E^X6dv*^Gw!<Bv@=K`|b#BpowtA(U}(Y{(Zt{?zbP{MXB0M@iWDtI+0
zm?dG1GpHr!4&#(h@{EIkV=>O@fReWdD6iJw%{jJ4ClR<rYD+S!(^C7>EZ{;4)H0AP
zJr|nk;4NSnBp#BSACqVxq#(dmQgi-6DCQG0prr6f_<l*OKzeImJfrz1c`2Y=5Gtq;
zHI#;jI7V*|>VRDL@8NS}R%wvPJ%A3_wim4#cwr9Y<F&9pLPNJp7XbePd4Cu1*Em7A
zy=r1a{(3Xz4kC3Ky}_q-t%|@?NI1|xWM11BI$8xBfLYA=thjA|2uL{nQO<Pdb5E@%
z#|d?JJgcD*p1UQaK7ZBU>WuH0CH|i^J><z3JOBl3O+%~I$O8npQu8`Q2}6vk871IV
zj1re1rho!mjiPns1ntgkHEU=|JR%Cem6Eq3YFgBw#P-yJstMx`R7+1SHGft?tU%|Q
z3SeN00+cDD#b}E?%6oMSF@`xGA;)R`Gfnw4K)J?Xo(%)aA|g=ZdT-B=Y0@DhQpY1?
zR;30Ml)ybZ4guLL-*x|psM6Z&Am9S9<LS&brnVHf0M8#Kf0V0O(STa*mEBDFKzNcs
z6`7aQtJ0;DW<k+?{!%m0E?v5G=>V2a{P~S2D8b91dY5jA%r-G2h=v3g-z9WbvJViE
zTgVNo2@#9)fLL)@rGUV5KvA9xyx_o^8uTKJg{hC0v(mgeyO=}Eo48En(yv0E**t~x
z%O{*Dof$AU9V>;aCcLRMpF-ItVu*pcaTTKQRD}#!LJV<A8yvtI$FG2y*DB8ZR&k6<
z;;y_`@oP3Gj3dM&p&V0lK`}AJAZCJMN;oQrgt<%!W#iry){z}@R5Rbx{*r;j0}*gz
zNJ9uwfk7~Z#3*38q-h_!1#*~ypO_d@RLvyD0QDl7(o|0hk`W;p_Z6~oFaXESO33>c
z6HH)jrW#vt$ioI8i)%Ut>wOhdRs~X7YAFq2dk&_ifEa~~40Ecs!-fw_(w2B-I_SJ!
z=~$W8r5#_ub;lq4)Yak6DNpi;{Saz9i{ZBj5&m&*nJ!(rbm=lyR1Y5bN;Nz*ae{A~
zya6ay!bM*1+>7KJJt*>&_AOQ|!XV*wat!AX>pzjc0W8hEiV?L3GzFA!@X$0sBiyfJ
zG=<7FQA%RtXUp+5v0LY4J$vQqcOTi#QX$d9mIn=dryf6_Ge!YNN_X&%#Qi#WTv?eC
z&h|^5xFH$9azA-1Zn;O8M_qtA4FRZmgBGH8gec(E90wG%nh#65kg<<p92c*IF^mf_
zdyJ-eg&~S|)?i#&#&;DF?LNRD*VcPbiqgU!nx^LR*LiCa8^9cMNJ7RA_1>8nV$}RW
z0jd0%U@%ibdw@uRDFrGho`|{LNE$B`fJ4-vZ4Nxq38gG-8-jKL1*%BDKF<QE+k9C>
z#&<;&9tB$sSML+pa9Dx5_b_X_6tH#OsGNcBJ=0PFeMZ0(x3<L-;~5mROq;}9W@`AY
zFcB|*=N!v*kdL2d5`z6>th2D2TOA88YgrKpj4|N1SW0wLlt%OR*UL+PEdoBCfv-y!
zNZ6V|9&2FfWDIEBT;mX+%Cu8<_=rf}4USO3Ed=Neb5o9ItGVxA8%fKAO@pzg31fvi
zF_0&5Ltb4LURL<&mww{6U?QvL;zFj4A0Xt*u1yr>d<_Uu(~}${1EIt-&<P1@)C()k
z557z49^_gXi97W;H(s)2FwG<~?HEkx^#e~rlnRQKS6C%7O=P22M67@p_AGK@EUqY<
z-9&4FnU*Hg>^E)Np<QPOEafw2PTPF=ZuEvtEt6<^6H*6pok-JDA?>Oa(?Z%E=LpGz
zTB8EGO`C-HrE?68gBry(eKK-&95nLrq$Ic`D}ry9*COWt`~574tDRhE$e*PGOTo?h
zvM?ZqX#7>9X;Zldmc)geeFzv4;wa{YnA4-A$5A=4N`9?i;1x1$u=ST{Djo^0LkDDu
zA4Y8>L>Q<!DRm8|*>o_1&WA;PCMg9d7zk~(Dcxp(FE9n(7(yHiM-b8Wpua@8z>Gkj
z`M5*<bI|e@lJ^qcLf{T?pQQgMMDGK%P2O(y`bW)h)p}9Xl4`GRNz*CE2?U@;jZws5
z37~r!jBz<J+SqTBgP(>`GLXw?a;u=_ILGK?<7yp{wYP=rnn;@T*gKfTS4zAN?qEGP
zY+PsH1q_AO_EI<_>7*u&qmXzDj-%t=1-BqPRW9Ou8OiW5lAZvrvU;zzSs~woH#0-m
zv9Vb=XuY5wI8-42W$F_?d7=6-v){He{C<hW7w6-BagavsV?NUEfYAjX!oh_nfWY{n
zXg-P<sI&SZOWzo?Mv|rHKjz8>xw#Pa+)HS33ktPk)vn;@`v~iD?8&lDYt49=0y*qV
zPQsoT-_53=Ubf$bR5u#B0uNk6Z(v*U;wOfchdX%~u;$(#dB&gTU#Sc4<L^9Hq0oHH
zG0bzK=pWLIN{P83Q#+W)>F^K$>wn@Y5TkNdLBXme%pjEjQ{$JUMI&(+pzBNW4AD8W
zLKL7Y0_uG*Ga-hW3InoPdx??R;sdVFA{9MJ+U;ZhAVBr5hY%GuibW|D%%Xb&O$ro`
zjKZBY9Ul-9qX9QDF<`I<>0lH}l`9IuEO0AOdL_b%#V*pfdLIW?Zg!mVw+fag@~B<g
zwSnmO1FE<SZ7ZgiQ9zp2ylDCeB~|KN+7Y0~Ao~FhjFZ;3g0~_0YkmoSrRE2Igy%56
zZO-w2q^VC5@nrjeF8EwfjnO8fUApu>_(}KYONj<}0bC!=4Yn9OT=a6x)m>okR91z<
z=`juAACgY^>d!tNHbz&F8xGnP_S+oSCs&6iT0pek17C--lzWjRzYYTEtB!@(3T9)x
zXIoOz{xyyJ4hkPQkz}S-abO09utLyIXmgCM?k<9O1zb$}GT;e8%mIh5378rk#EN4W
zbsNVR2B>-9IOWsx)ueDxZ-WsF7^ddJ(E9;_K+Adl3T_{24B0XISb!v2VMq*tw}2>I
zR@C%aZb?>AV-%A2h5rgv6U09=X+47+7apZyowF>#%s6vR3AA3242(JatvKKb<1@w$
zIz;5VZG{_<CJ_djCOP(S2W)+MKmyB@*w&5SgIgr<oA<|0R`BP;&-GVuFY(9yRQ!nd
z6;OG!<vA>r2)|CcFdvWqArPxe7ryyid@vXBv5cp`V7N5{xYs<7*DDXdg$lF_19wS&
zQFE2!{AvtvUUeD=tEW8kONaoo@2blgpTmDf26At*c}yeLT9B=~x=*Rn=7C;|pYMFO
zI|b%0Xv};I*Vfahn9Q0vn~vFFaRS_^ORadZQ25vpz(FiP%>p3+6k?pyhEc&N0j%Ws
zmxEj*RI_S~Aquc1`Q>^BQbi$c*Rn$H7jkV)<nha96(ntYbPX;VN2=MQY06{eCTs)+
zR8CZFw&do~QT3kHlyI2yQh3>L3xs$rObG!LjUjW!Vu)l6pcB@)>7eshr8C|r56o`p
zW8hO<m69|KDUyZR7J!!b95e$tA+$d>i_@!Xn{`dAi0IFD(Zn)9RN8f2t|gU~=^{Q7
zv!QtjJuBdYnnnC2db%)k?w_KY{E-L`dGHYdI28agODOAC=LGn%3_xALe-4@K(xnS7
zV`?K#_{fj)oxSsoj}?aP10c(IUT|$p!@mT`ca1DpEP6;gzjT*x=6&(#BWpu^vdC5S
z0KO8T@H=fGR;<&#4#{iJhki3Nk>VQ{ot<;UHH-dLAy--&S?q7A(2{&W!w4DhvBaSu
zNeYPC4+tYf7l8m(gMk5R3K(Ty0jyC7+!e@@JVNL$d4}Oj@~Z|GG!Le800qbvkU{Pv
z#es7~#dA6^EF!$@kOCEIOpPW?@ido@P;){i1!WNaFwPoTkujtjLkzbN2KPuvsEJ}?
z7;u|`L#C+?40tT;@(Bha$w4PA_d(>cRt-W(d%!v+oNZGVa&nh)z$ZK)B|oz3qZtED
zGYvcD=RowhwdJaP&_UX?@}r1d>$$dx(fJHXeiZW!?|ktx@K<PSB|~mswT9Zi_t2(1
z+1#@W@KdZ?oiFq!N|!G0AGGjGOeuLm18XKnOgkD^%Bjku$)npY!a#?eqS(s*KLx~h
zp>Fo<P2eQzF-V+*w5fQ19|kJT<gLMCEuE4Kv}PuLy;S`aJbeY4I6;aU=!cxRIsaX@
z5>HJdSyW+axx4*r{)9P47jioh#T?v0Lb7Vt*6xMeTatx*oKduZ0wMXMgC#;lB_!>@
zls_1FH4JJ_IDRQPdo<0fDgHH%GdLAy;A=GSDn=z|p8ze>kdZVXIv^3F18(!5o7f^?
zqv;+4R{-`a8gNLPqCpiS0ueKBg(-wM1kzuwyfH8)(I8@)kKK}JSq+1eyAKL%+|tcJ
zI&ccKejKw0$G{ATasI2;s~{!R4FJgNL^o*_kpYvWY+R2T2W>~J93$3sN?Yd}X1WTL
zOlHZyKD;d=KNW$Qscb<LMriwyZHRK*w94o-YHo&!hlfBE9A5AJIBt2uK8w?d9|~Ui
z=V}L{9u_v{?pHK88<i|b#HdhI%8!;V7aU-Hw)e~~T{?)>dBMh3lZwrrPi9Wum(><W
zo?3o6h}FfPxBU48np@;4bYO_lR@O<XMnwUJDbRZT)426scRYOf!~;$W%=~jVW~L^5
zwHapHPf+L7gZN<+2%CIfFH!GfXT`^M*Q~1A46{BGDZ9knFC&s<Lw>nvW`Yq8G7ZLI
z6=zPXVbQ)CM@t`-4+|QGQMs`oT3f&<T35pqhlKh1ifu!^*2><Bwfn~8oku2uc6>XJ
z9w*@NcwzvO-xEgGZoGYIpm}z?ks<1FT1X)!1z-k&d*pb?oJPR+3jjM+98c6u$=KJL
zcH0@{@yf{yY3CPZcHk<jR}Bl=8I8RC8lb|UV8XV(mX+0ZvF7jt&h?KaZaiw97Eqfd
zwKcQPyLD0UdEc;iX>jt#BUpTSfx4iKJ6MhCIDJFkH<NatKdFn(UVf}}>C&ak80bI(
z0OK)9Ar*jB$~kIxwXqNgp0FEe2U2j~tuly!WAftjD-Dn<yIX7qaOHYP`xATc`Lll{
zx0!TXgvVCLxRFM#niz1ie%Yk)=mn{H=v+}7`B12bFuIQ`pkn*Mlp1#s&UC;Bk?OYT
zad-lmBzY;Dw?%c6PxB~dF+S>z2@)<-U9j?|fZF!ZK(|E6OM0D_vDr>3AlIU(JVZv8
z+FGC=^BTc@W-gUCMea2+FZgwpdE*K?U-t}bCe%Q*wh}1)H=^y6wu`o|+*}GF)kQ#c
zB3U(G1R`1YVv++usd<%(wgAn@c1Dqd7_wu(DM{3UqQxW^!8D`P{kfO|4pUCmq#A{o
zUBD{`wT5Aw(}QYgMb*fP7~K3Y#t<T8Up2h|DFtJ+G6vL*;F!YEv(?Y*ESS{-S;!cg
z0%D-nf2082#BBxwQ$QFf1a!&xm2`X>1vpF!Zpk0!YmnldFeU~>hvH#H$uykEK(KDT
zWgq2|mWm@ttWd3Htf_gkO0FoPu)ITo_w$&5lkIaH3IGmS9tLVWu0C{ZXtH`4qns|!
zOtrIA96+4WN6J~ya^_mNNlU+Pp6e;3pU6dH?}#r9HDtE^!ByT%VsTrm5d1-Erimc}
z4{He#4``bKcWe8AAEN-*zQ`HN@9<|i7l8o$M3qnfyc$vT&Dx<f^-l&shR7+cbT$Ir
zho0|q8r9nRN6?&<SnS6LPpiDErob1Y&Rx>0Y7f4U^b@5EKD}&DqRvT&^IsO9m{<X@
z;Hw@8lzo<zI#|ehd8X3&QSOx;*lFV-7Mvh${qZtm%;);`c;RcuO+3zU%cOz`*w2eb
z6AeqxCy2B_>I6%s8dsjrSr78<;GZj}*zuNJo}Z$!P8w$sSG~}2AKU?ok8;Bvx4TBI
z|MO(d5FRVq;?c&<okAbq__){IKc>*i7HvNl=FgP~Ks+(N@^In>z|FSo6zbTCEKNgz
zYheutanYd4fhpC%ii4zo;Y+;@YJTO!iV*Vm5C=8!QvR$cfFUqQS-_m%r~*PMhpP0p
z;omg@ZWm1|XTW4q>q`3MiPKLKkdqW!Kq?4D8Q%=;N$EDPXAD3{NC6N4W;QxZQSuLR
z&tmKW^5<*d6?{S`W#_dy2`k_eB}Y&#$7Y-5@#A!sa61FsJY4GlvGQUi1nqY2bQn1C
zR)mIz7D37P<v|=)9<ig3giwHA=?w-6eC@RK$7szG=YKbk$oX-kb@sD8Ig)(Myo%>h
zJ!~v6vC_e0U^mLSyPq=fW7}r;IrsaYNtfOW@PHRWRw}uCEm8>hD(mOVr7xRKI8E9P
z=^zrBR?)3w%4eks88e18Qg6T%XqpVK0}qj1mp|(DfCtFC8IZJ&11o^4%PRnOBHKSQ
zWg*-1$yU=OJhlo4z_t#2q!4X^qa@9W5P)iu7zK<17LxWTnpX;54N><oO1=@ZIbmEt
zE;v~`20_Onpk;~<N`N6{rpCyXI7{uIcWF7e2BB-@NLdrz<dO&p2uLYJ$k>*Y>o0*J
z(!gfX%!)C93`y+?G1W6@AX%cC<-r*KT$>8fwX3-HV{;G=cDC_Mp;hqFh_^k*wKj!z
z|3+7=cm}{O6ztlHYe#{AdWixKK+q0BwfDSTAr$+1Dq79#XpKv*vpV0VgM=wBp~v~M
z?;h9C;vOKM_)kpAiEx*6vQoT-nh1L!HcG8{oIStG#rGY44D8XROP9{qHLibo!+0_R
zXvs0UwMqK}(k8>U;Zy%McUc!0pjD}p?*pZf&8|u;=@Fh#pb79S2iZ@XClY+3W*)y)
zy;S@3z1ospfE6C0=RH!c?ISlO<ilRG0C;~@Qws*V_dzRol$gYoY+bfSwyxS%s#)cn
zS8<fI5dnh&SHq|rT6%62U}^v~eUM|A;-#h_@aV+Xw*aoJ60MrAYt%q@T5+LWOgO}-
z=F*t?t{A{!-cL~TJs^+{EJrX9YE~FhAY+KTjU{OWwSURoUQMn8txR;TcB&SZBy2W#
zgTfp0Vm_fmoO}3KoAkm!C<%yx23}=(;q@oGu=)iz?nD+~RmpSD4>AYfFCYkaA-;hm
zDDn5eC`7dg^5Q8FSf(Ac%jXoSYxCee)+Aki+?O;z;_-LsAQo^y;tpLB22;7x|85UC
zFg}?N5a=eIG;8=Z43aPPw&NT;6ws&A*75?trdMg6Jm=<yZ27yOao)8m*YLpjHCq!&
zY%WR0O?bi6PyxN^9^LvA=R^TeyuMm~3+_zbJEHvfaE6l;vdh#d+*kM~OCCM$J;&yl
z0#$J~Q3I6Aso_W)tcO9gd(@kogkccwDhN=eW`R)wDh+xJv-Xwl&jE6+DUNyHc&{L~
zgA!NZfxtQP^+S+`Rrlg!Ac||jRB_AzP(lh3QR-VYtAHrOpYc#31V%Y`+D}pVuo446
zC83+Mm<eLg^ZkDG`XPPX^zp75TiMnhWeYp^8d%5;Jb+jOu~Hx*EfMW=M6Fea6JtGT
z8dtnZF$motX64|6;0z?Z<<qcz|EvqUcRZCYXctHLLF5;?$MYZdoznStx}=BMHF^{1
z(nqAR;7Mgpi&B~(;TUVvBeBUvO##oXjuD^gNj3g9+hRAZ;Oo|cSO6qh4pyY+mJeor
z5gBa~#*_j9F|Wxk&QlXr<k#PBcf4083tAR_<D?+ftN#ysU+Os4g&HFsUdsfpbuUy&
zG?r|hL8F!E9hMIP+9wxJeklN{1-X!O&pCJ%BgE`4s7BQs;sj1f7-cJj?Qte-kK?Fm
zgK1n%=LC!fSPhW$00{s#E1425n>sI-#L+XxMh;+IgNsxUQ16qHsx#}DHVks<*-UWO
zHM8+9sbiH$*#0eqFd*ppR4<09AU{T+nSC~->W5GVOO8M8U_!dUkjN>lf(hxNPxY2)
zonhmfg!Y?{r^60<7MfT<wDcIG9S8FF)IKQu5C!6bN%FS>NuRHM<z6<skbE+D)p3>1
zY}6$_%yrnMOPBFAijj~|rkA_eH(UAX(xoJ6*N7udT+&gQQ+OOiU`!zqvR|o2`8nyd
z3CXeElE&Gz*Eb7xZkkR3A!^pMu6mF2AQm5Uve^aO+-XjX-}3vkNDE}!9NGd?)1}#*
z6Sczt9WtsX#iRt|&^tJQ1tZZG?}I}OV&*r2RAUs)tB?a(qw-_LDUYNna5YTl#Zh>(
z5X59KLV+uohFAbDf>d-ssRh)J>y&g*mt5lrJBDCLFFP}G^(h@*uB7?WGUhRec2+da
zE#nvi83t<_$-E8*Seub3O0efFPRarkhotjep3$ho`kj+*KXKu<vN-(t<#{C@Q2|$6
zfr=5Re<!8la%_pI35eEY+UBtX@G4`LE{P6Acahc&jeiS>6%|na)Ap8v-_C&hA0b`3
zK)vYRLYFRG&dqV*Ta^)ngAA2tb=t?<Y43c-h1KN;*^=X^?0nt_5m}h}k+fg}6dDf@
zF19LvaN!%)tyo3*1H1;EI>HP5Wyj5dKi*aw?|w$EQNs6YEubFb0rTXyrd11+04t0%
zJBX<uprq|z0jg0os7BQQ-5;YI8!#W!d}=x<T33T!2N59xX8u(Jf&dPmC$LsmTy@P$
z9@gusRuj!BBO3F;QfS~+zE2vrlI-hWx`{DoKokP_DEUh;Bn8k-4O3u<_8MjZ*pN9u
z%0um;sPp=k6^|a{_6NCZygK97v7ykj>90^++?%zx-vHe}Bcu&@wCuGOFD?!pt~D39
z3UQWY<z1xh556V3UJ1X8Lad9A1Lwx|3&O2YsMmMnc-j}0f1z}4BK`yo$1YuX*f__9
z!WEbTLQ)^!K-&kn?8nN8x8<<7o6Lb^05@E@?@lh-bdvi#UPyWjRTZJ}zQ)TF$qP1<
zff7JBPhi~TEYkd^`D?MKE>G_GDvzGA)sXXewJPuF)WbJP&sVQ0*OGLW7Hj&W5MgfR
zi9s)!rlzas-=vJJJh@S(ZZ0s>qb+fb1sE3_L(~Z(GwlVIZ3T^{ljVH>ig(;~giPf3
z=jyZc<64J+b$C#Zl5Xg^`#}VaP(qS(+-!NB&q?p7=2LFE12p})CeCiJNq<gcvg_aM
z+-jKOK1(b&hPDRpXEkY0vW+PG!+G|`@^h<xSl&EIimyW7O23h<!vVV)z>t!)8!Ih<
z9Dos1K5G3%(ZGVu{nhkpknIq^l&~EE3xE~JFhF>)%(QU2rg2^k3SL2hpy^mN=p|Z3
z$H0JxU|iP2v;W>xfFL(glQwI#AeNaC-n5R9IR8Gv_^+fsNXe^kk-r)s?FT6^IY~b$
z`ys+Gmxzk=Jz^cVX7XL;rVW0KNb+rPqrVftz*`8VWvO#}Ip`^xWl8${KL22$<h0yt
zsQsc^9P|@_&<HFb0NV%|;lLy3p!bVW4!D+<>?djsA%H^wZy}N)*~PujC0l^eYa$xc
zBAU`B^Que09tKGV*?5H3<>}GE%_5z@i|Y!nxE7B=f0kN#eEEU{-&?=1mFkyz9&~f%
zy54;kS)5?@`eFr8>(wFx5(>?Kz<&#a2mB<U>GjL(uK}()*VX&QG_h0pJSoRsK-}J?
zgQag@;Taz-a(J%EUuP)e%U^Hr*D$eFXE>lhH<tl7z(5LFvC!a@np!EPFbtK;fu}Di
zKm$LF*a5rg@Ooc0r3yG2T=0aC?k+eYXXo?2Y>|B}5eF|9#^Pk4)@E@)r)?I4Yycx9
zhw@$pOk43Zs9ID4REg%5lev#y0aF}uo&`h!$ELWNk3{5(DFSNoVJ)@RWq2YBd$~PP
zczc)s2sq%A$@#J5j=oO{0D>4|HmP8`1xAFhfL6m4b-MRB#gIY@Ll}ztCex}zwxGi`
z427+?R$AWHsRcnd2PdEM0pykECgxDGciy3ah5VA1uLQ2(VfA9j%sye<pt|U{6oMxm
zJ4iUvRsM8>pf2r#!><7b8Tf8^=1@Bdl(754y)Iq4biOkDJn*VZm+{j$6aaVIi=RFs
zF@_%~4=7r*(H<eoRj;6FCe*cRV&z*z%?Fj#cBm%WDN)ZuV0s1fEf2i}`ftW_04(y@
z1QpmP0OzC6o`Dx!i+4fQ4tVq!9E`;SEA(XL+4GE*3o7r3C0GUE(9AF{YAX?P41;P;
zsi#38Ad1JqaTt{ld&;J~SkpF2z9I8A2-Da?fZ2300N5$lb?^!XT3tmJT><&l^i5Yw
zc2ETdw%c!Du4$J-4CWcnw6IcOK$0smBWq`j^H#wlC4C>}<H*4zCcS?&qJBgg5LWA0
zra;q7q-k1K&NU$Mmspq6wLJma{j?nCK&)Nj0tDF6oZAYLveBLZSg<rjCnYJZf>G3f
z@LQ#eYa#zW0g#)uf3tW$WDR7=)`jkrVMV%h>4H~v>MmXIc7DzAJW%09!fWTUAMW{#
zotS-->^pmC^=cj@jno`znKUIc11z~{d^e>jn&!U<%%00!_}a0VY1jTz1W&pZ13|kq
zw61`LYJO+jxULP+nh&O`UJ(-AKN&)oM>(q8k=c3hicEK|kTbuj#A=Uu5fw18K~Rom
zU%)0PS5=G>%o8CNuY$^R6$djNM0D*dK>4oX6x?Kx({a@p0<_Ho2jJC}x@4tE#Rnm6
zV^Wu^0tcK;3e3y>4X7u?ypTXh6cYY{2qYAwR81=d;GzL$dOc9{(;-U-Yg$Xvv^G{G
zfwc<m!dK||u+nLh-wEuKbf6mN0O)o~iIT%VR4i{qlylL7R3`3$ut{TKf^o~?Fg@V4
zN38czu8!MX$e*gI^lPL9YWc2vM$<UGE{BeGyL9P7=n4<Ro25%%*ngu2mU&Z0F<Ayu
zV3Q9LX*~2i&U6WUf^K#f06UMsCrzj()QPm?q--T9G?IktL$XoKVc4RzL=-BVz>tUl
zvNnx#{w#AL|6&Z-?vWaT>r>KtWvsY{;rR^oW7&%u&<>W)^CrIA>7^m!lg6Pg08ZoJ
zyrvbTzzKG8MC+$jnS4Bl_oU`hF(Y?Z4XGHTZq>&dpq>WD87zpylvTj1II8v)6uiRX
zad1j^C?F09#2oYX`!w*%wK-vLIbMD7DytAnrzN%z@1rz;q~ybb6Q3jMv-4AP6GCI$
z8|G~?J}gq9E2h9@KQREZpHc`hrt-NX=G=F!)~2M@d90=&_4gL@X|OSmZ|b<tK{f4*
zz?wH#1Ia>TGFXDO8n5?dYws^TX1rji?)a;v%g_BrZ5`&Q;KL{bfOa1dMqUZaL_J>g
z^TO1fOyP~vrHkuje+Yw`ZhpUX=_Z7vaW)jH0+3+;k>LV}#qbk_eWhm?<lt_t&?ZM*
zh=}PL1ZtbIY669jOf$>HK(RWnmnEf_F@(TS-sf80B9Cksp|J*bfg&Gk&9{hk@|wUM
zP^<07<UQ-nUAS%zs#-j}UnPMnyTq1Otfp}vRD-o{7r-}h2+BgGpp*as5iqVQG5`Bg
zAS(#3)iBQKVGuHR=s7Wt23|p~Z9qT_Q=;w%CBA-`9GUWu4gqtoT6qXTyMP7z9PD<j
zS*DY6YfjroV0Ju77B|7B6h1+Ke56|-qMU<eaex7I@_n-8VN<pyNw3EgFH~Ui5k)S%
zXcS363H@1~N5ty}Ydly*I|i@|yf*?ZvxN0U7~s%U71=#J7n+6xQei`Ay|n@xgZYmy
z(DMBlQ2(BD`6z8NoScipz2$zWGGmv{cLfPA0<pSu=`yar9L};h<oOu>A?ZS{^Fte$
zQn-7sHMHiylsxZ^>&q8Rfr#dbFr^q`G_9^;{#3&SzQwb&AsZbh7HO=2qL}4O$3PHS
zoX%P!>x>2pib-Z`(TVdvwtdVGOYbgso4jp17GPrTX{iER(ePchfNWSbmqJu?E)2#Y
z6fwn=Y+d=TbZI;ch+;k%Ws6~)LyVB~obPJR8-`jN#x%JK511&++dxUj_&GJ-5fd{r
z9;jU|m69{;pl>OlRK8}J-@5ehN{uHnASLxw80Y=Sr122qbS$P22y>K?Km)$)-gaNK
z9ES!PLCglLHWn!mq83WP#8p=J_ynIzr8e!lzc2&lPP#8qP!Ckc05B&77LRg;@|cJA
znM+-=;6xK))mGVR%zAU%F!fIS^~j1lRQx{hs!K&ikUl`;3eP*yN4YmpcXsJQ2_{hk
z!^@>hmkwb0M`1J`iWZ*oI4X0AfP>G{O9q84(Uw@b9J<YS5=sOYo<}JF)#hm?^SnO!
z1f}3SqtBF;n`ksB9+&9#32v645b*H#2UglYq))1t^us7hJgG-QNuA^NN0x0dML7>K
zgoMCYgG6jB4-qo+qYTJN2qB)NFZad_`A3$|0W=MYbDkk-6TC!8H+TDqn;IanneGAj
zQAJ?w&d>L_)^ka!e?a@K`Lg7seX-R@gBOIY77$se`tJ?~u%F=yI!t+nBi3ZNhJ`hK
zZ(tx>v#_H7aSyoPPbW8(sd!|zo6^?Ew0?j1Z*`V%+k_aSKVx`Z<_WNbj5HllOzr0F
zpnw)6%{Z?F#G;x7#t~tFYF%lbDA!X@gX6pn5lZ~7eHPId)`PoBk5ak~zzW+gT<IV>
zvYcs;`|UKwTL4miHrsUR?!__Fq>6ffY8)Xrw^gD*N`s6)q=5Vk$w<T*oUomg`j<pC
zYjhLDbzVZ+P;HvAb>~V=*HWh&Ti_F{G9=|P`t90g5eP{~ZPc2n%ppeMDO8B6Y3B}!
z(UC(yvqcSPK|WyBWDGF`ByP<3QAEM=2sJ{aLW`C}Jxm7{XxA<{`Vm~641774D9NXg
zY{}ju`Vo8^!58^@PDXwVTM9I^$5EvNOA6ce=PAWPL&~(D;}6s9;Ros%b=j}2+qd2T
zQ$Vc09p)(L6JfM2{N;U#Cp2yO1ORJY%R)hglW!ip;DZIvF>@2)H<7ewlS-Vs-z8(^
z3uhDZ9|BjsjFD?~#e**@x(jv#6q6IW>jVoSs-{%3c9qOy7B!8AQbt|7Kyu>b7)uj4
z5?gdXDjrP-+$7LIdb>g0dg>|N1qTQzRG{S9cF9NWUbk8VPtPk^*M$aH!a6?<AN(!Q
zz<V1#j#bZ4;a_f)i8~$&4^JT&c;%PTFmP#;EcF~6=wBH$HLoK>^tK(Vdcl%42E?fM
z!W38F%Bg-3qiVB^;*3ziD9X7SGP3qz$_q&opvuh;gLG`fisKF1-wDTHPds#T8*Jwa
z;IuB-HSYqj?}gQmmw=)JUk)4#c$Ir0R8WHkW-u}1->2>;c}|pj#zmubnDPwscr%b<
z4j7YwTU9Sjq~cx67~Fzy37$^<YvDfHNa$d|L#9dXuqAc1{`BqcY??kJt?k+Y8f+`=
z*wWCzp%K~-keke>ol>_Ng7A1%h&n%xhq&Vbzuwot5A)Fc-s$gE*amzq{>Be>9Q09!
ztdMXeKV*<Rwh@{CbJjwf{_S1bujnI{{x1B0oBw7T+b&(k@Q|?4hWcFTa*PP1Yb!!V
zik$rUXU7tq=Y_lll0^t9Wu}I~CqM}y>BN}fW-HW*l#m!=TwnDid0cW}%hc$Ja3;z)
z>$>OLJdltu;Em)rzIwaRV9%4<oGAIS{7XEo11qd1&dzaUV2S)s=Qo5Yr6|BOxaT^k
z*<g%*eA>?m-3I}!hJ_Dn_C7dRn(<{t7<lCrS7H(zLo7I>IAx%Olp}0SoQF%*Y~u99
zr!Et~v6hGcvMf@qrG<)bvZaDI5GJXAy^yH;DS$Fo8j-jHRyQyVF)3dbW-~y-iH(nH
z$4kPJ|22gW<$1hZ2s6(%v>dY0w7RxX!0mnno&%Ue)NMcpOvM6B@_dc9IYcv<=`0eL
zJ2I)YNBXeay-N4`2O5oNoYjS`0O?7PF95vzDR=K;UAlDX@|Mwew3&nf2s^gq-#hL5
zhe)6Cx_ZQO-b*BXE3KpAn^C|dNuI<cnghmvr9ru&NIlP7%!?;23{(RzIXAzr^Sf-}
zQoOSr!SipLO&;|K7^h9*`gQoCRcKe+i6_@s`RX;<J|%*sAA(ja;=Fd>sBty9g=4k`
zN&%h`5kYnlBo=dU%0R1#K>;WSwt%SM6+%Rmd@+itpvH$d1TFvpAm;!QqVDIv6IvG2
zSj1@?n{>#Bb<Gp*-I9YYbCflSU1^dW-JCEa(X1j>&u19IJOomK{TKr>&8onKA1j$%
zZ%k=6y&GV<26iu6dnlnYoaq1fo_Uf3vXlfVJItUFoLlUEA<^yt5(l)FV%y$82cdxF
zO9;ohENuF9n?`J#aD(q4-+RBD<Rj|R1<1MZaw-9ApQC@TmJS!i@Zr+QxMB()B3(M*
z{SrK9T)z%KVi*MwZnxWPS}}Z$Pq}*+-UpWQco|HDW=0qcn36mx(fCamZlX;kle30n
ziGkvOOyd-zn1HJ+t;VBsRk-c8h&WJIM>%0hd^7&a6O$oqYFse<An6JMPT&sDj=`Fv
zndbqqbp!x7w-p71Qfo5<q@a01hz4|Fh(^v11Fr_j9}wbz5ak?6i>mpB`Ir&R12vUb
zR3It_Y=X|o(x`vn9{$e2H!rM^Y>#YO!!b*PW$-aX1DvEC!jmO+g{1YBRO2<eW-Azw
z7=U8f$`=h}-$I&0$jVQvTfT2GiQIgOAoA3L2MQO_F}AiA9?!Y=@_o<R2=rMh*W>mo
z1<f3NyGikPGaYy7!qX(}u(*oHnfK=|_kv_yx^(FRApEcY^}hoU!+-ycPqM7TOFja|
zb&ZpBswgkUcW3Ylh~fYEzy8ng|NOuI_dD^kf6zi60lRDwtiUSUl<w)N$^wLZz$?c}
zN;JN!l%^opq6Rt97p9|vRyT$)q`}<1OV%yobJcpX-vbA+7*!()56q{Wkexf=6#)C)
zA@M!XuUUifZc<m?W!~6@<XK-7$8ZXdInihU2X~z?A-06nap@mo252kV(YUW%`)WXx
zJW<2654e`q0(=>nd!}85Vai{UWiR<DWovx&0PcAc3{23|xmiWj9bT_X13n%hhz7zg
zh!ud=;E_r1i&`_w0e>x*atN9i!tus{K^6y6QZ6&n76>9J!(6iQKtU<UpIz4gERUy~
zU8^4Aqb6~G$@f`b2HPa@$xKjNft7X>Vg!)!tz{a4b4ufdP_6}rn3rqG&y^CcQBf6X
z)HK;X`>R8n+*5_iJDJ@|u*)leYF?(t@@;#Z;my+JerE_>UNTtUD_y$$|Lk4evmD1&
z|DB%MUEM2RDTGLtVh8!V>?A0TLinr{6a^0v1yzukKwg1Y9(mxOz<Goe6vYD+uH>Bu
zTu>=6L2+=|mOtVIObB)XLAH=|KXzxP5BHuqJ7>0AGqZcWd$m`Zb2Xajo|&GRp6=c`
zzdq-8ilV@SAA1nju3g9O&Mk~agSEAqPKg2THvGCH(}H_@yZGeAOGpPpy!_G?j82>Y
z_->s0@L*ma!(rB$eN(hU4v(o@T%EKX70;C~WPjy4=*5aoxk=#RRas(UFvpSb97y&_
zy(oCayl508GM*6*kymFS;fa?$S7ijyUdwg_()=aF^KSWp^3gHe5UZT^uUkmpudmuE
zvuu^11Ys@3dtcqVYG8NxUI||RM+m@JBBo+qMl6h(8EhZ{X&x-vpynw^rBMW@=P39D
z=spYj;9OEJQkFB5FGr#Kq`4-RCCxlPNzJgNU1b7R07ybCO4GhmG2+%JZD;_mxXneP
zn>#AZ<tQ683pD6G>Y?Ne<YH+pM$oR{qxWT>CgzIxoxMidgj!u`T}q3Sw7E0RJa3g}
zKr6!n=Q<re3OSVKh=@x^4nhzG(T)vFGp;vkP=85NV9O$F8_>G5_fnMYlDX|(EX@SE
z-PpTYx`j2@hq!0v>1C<S!SLjIq*el$?>#rd{w{kV#$lwFUbc5~T>RA27!HQ`tH1s_
z1_K5W9YYd#Rq&aQ-h^#;XB%hFp2t(4d>XI4@)ErFtNJ}$9`n~4UU!ZdY>_rFnd~CZ
z^Eysa0aB_2Rmvv3D3fK{D}bf$6NLg--sf_a&CQeWUZY;s`LVo@?wPnik|d^<D2Emj
zp0zBWYuYX*OxDzV@FMH6<U0VQnCrwe)28>zEBJAWV+Ilh$|vj6+5dqo%aKpUAUCzJ
zW2u6T(TR!>d`+a{9h*$X3a*+DluJ^i!vUykKwCP9#MTbDx&QIJq3UU_dN7V3%d`9`
z8M`DjvY?W;lLA((z*m|i(nqswB47y>i5~Ce9G5CNwpwCMvK*Wha7md4$}-Y)q`*K4
zeC2tDEE~%`uru4i;c%#ZKaOhW*j4U%9MvApfbIIc29goYVLeAnwqo&mYp#OriaK7R
zZNoFeu>!984w$XqvJ&unDbK-K<kqr3CLZ3C96{6iWG>U50H^MU9DsJARcn>Uhf_)H
ztd$XfGC1bB;dy@$jI^D|z%8Q4`pPV6%~)_b`Y?C#<Mq-D-?I&)!kZhc9XX7TqcIgg
z43NKPL6ly4F$#hnPweIJn8Eg~Tlm%A`Z8XB{SCbQ>g)K>)^IK70#b@7erU!Vl)1$s
zJ^%!W^gOl`nd)ac-SVx9*JL~vYpaWwK8ry*K#}Jac%lM7Gh<2>EeeO0I8D4A#CA`0
zB3rWaxsw*mgV~<T;@#W+IJA0Ph5`kqP{7y9^j6Oxy+&MTwr$hsq4^P+n~oM}bxHv8
zq7ZATU-|Xl#-ooviS6xMw{^*>{|~k_v#n7@7G#V@8@PV`8vgW;pT+LZ4J3mhJOgZQ
zh0%3Ll{&z~ao`eCCqWLL-FUR@mOT?3oFoDYg%<H(w!UC3D+Hl@1R8mGYnwscIgmwL
z?4p5R;`}?a^@BF+0cNuX^u9orWw`VcKZ^?wKZ?EGT`3|-QcSWjzWEP-hxgw5A=2Tf
zdM<{E*XBwUDC<BJMB@TgeU7=^r-m)snx;i;A45Qv6B`@&waZ_|*4AlB1B{K0P5j_L
z-p1cQ|2H5a0Z0gdZv-qoK+SFrL@jP-%n^P8wThY7iiiV1t`bMVmwbG@Zp9W@vT|kQ
zzZp;~sg7~FFe%3s2;<#d84rHyXMP@ek%QT*fBXoqzVdB+?>lec#EJV*c#k9je(rO>
zfHP<A$7C`A0GY}8zZ=)_;*}R<EKdgm?Covip@$#CQ=hnqJj*JOFHHxydi5pz;QMb2
zK<ZJCLP$m@7qFgaw9}?BabcIwZYv`jgNRzD3xc=qL*6S#kxL^PdAQ~=fSR=xF$!jo
zFY^oM0TfCE?~LDyoxEE{0(h2dv4Yv=5?;t%k#hCHCMpCZ^L4jIwmzFMK`&pvBhufh
z4h}tY!S>1xNbMlKu8iY~0;@5SV?By;Uv)2#l%v{vN(gn2Pjeh(u!iHO7!(7+`e5u1
z40xIotzsy6Zopxc^j^a}YPu*7psEeU6C&1bS}chT@H;%1z|9s}&c@zWgJITk4vzqa
zpIEVQTQfR#h6=QTsNV5d=$Vf`B9)G3M)}Z6vmpD;fRYuoBETEcMN%vQoah))L?7_%
z%XI=Y{FWcTm|g@EUK#h5(aLmlztTPHN*GTYAFViMqnBU;ACh~wm!5g9$a2vYo_XdO
zyz`%bg!kXSfvv643iz-B9eY7Z*U<k`l%$KF`APi9hd&~g6j`3tlvi{~FTqFpyu$2}
z<vAXG;^TPyiKnnkxq0ITzFIsh<-2rX;FSR;5lH0@7l*Cl+R+?yVIu0R4~uveK(=Jl
zeE>ICICEH5h$F64s6|niWJ^Ed7^o34zcXjf<ADb*L@s(){_z`_WEs-YXl?pskrz_q
zPdxbvvG}WtXCRwQFc=LN<hEiQTI$V(m&{m4%?b*YiJ4h!B3&>AtBk0<%rZiDa!wTf
z)H&R|m0|Pb79M)!F@*B{xBm^3tiZ|p68Ov`%L|<U=*MvX{pV1Zlh?NdAZPZ|NeTfP
zA9&zFg!0x~Z(?se!NzFQlz5RiG`cBzJoh_Ywr~ZEQztnQH*h97XD*eV$R-!eqAa|B
z9Xl1!@rrsllD<i*s<FJ&0AvVUEW=4D$AE_{Qf?hwW(t%k)huCFah>3wnWWAcJkRRS
zz?jIA)-}Ur1O@L<<GHeXF?XXdz=8E6L$((a??S+Zbg>oRtzIfUKT$8M39uXkC~AcT
zn;h(&+*Sge5qg<VE$>#zd!e<YF6?D*JjV9UHqM<phc7<!MSS&7{!AvMhr{*a!*Z73
zwEz}(cX#mcBTwL=haLkF;oW!M!FRv&rp)%Qy)a=Ngy_&Q_r&66JRW1&;+c^ZnXJ8#
zx))$?)_Sr?n$41q6_qt*E988xBqT*97-_Y0u+ZxZ){${YaSP`ZnWEWQ&jkox&v0vi
z=Qoq$6R2ztlej%(SuTT|*86%z(Ab;YwhiZbE`ZxI{JFKsuG_PRX<HoN%uNbOMZ{jZ
z112s(LYhtzxWq}CG(DbVjX!h@uFA|OnY5WuCX<QeD^LT^9^<_|+)l>3dq6SE2S&kM
zO~J;qH&6T4Wo4u-%&q%FzORVr-R`f+RZa6@&n@+!mRaJ)%~G#g78yWg%k9T0&vIU&
zfEqO#E}QjpK@2~KH7j!iizf47Ydqp+1QUqKR4kUI6%iv)1UlNpM~uAKp^~vM$irHO
z73#p`y2tI~&dF=<<Iw%DmtL$Rl7j5zVpjMRfL9(M1}%xYw-;*3ck%vSKu6j$j;C<r
za;K!1jS=C+7r%wqu3i;g{nM8&;g^2-7qK&DNw1Tn=B7fCYacIxRB;jIYiDO0AO6uZ
z`1p@MEiOLWw{GH}U-$-!`~dko3HA)?L*J~#6nXVxN|f<w88B6e<f~g*tjNWH6$jC2
z8fLYbJP69kL#@QmE&I*C+=MFkC1!4S>m%78SP{4dn-Bvum(spkOB4c#*13UG=fJdj
zISQqXVj$PVc&;qMAY5V*1Jy!D$=MU-26Aw^2DvgCVKWiBo~vay)NgG2XjVsv^5@_H
zB<pi+fHX6&+ox*qZ2BDb4CbmGT40g7$#@16PxBSj(y_AwugE?&z#(~lmG3;G2&%~2
z7(Gi30KcGBFW)}Je3%*y-*q==GIjsc@@9CgELZa*cSUo(ZE)uev3q;8y6c}^>oDSD
z%Q*ma4}RwK(u)CD_FYA=oFam{O)Teb!nBTVG;j;ruk}J2f~HvUHQe&rb1%J!mDTl|
z6Fm3abNJ}_^Eh+%EIxnvGTz?zws`A%|Ber-E8*IaxYvoE%~gPcnd7-!x-85)&vPh=
zt6-X@_|&IAiwz<B_PFxR7jWbHHK{<2Dt4UgoY#TOdX0?6NR6y~MgHy)xW=f$K^|Z-
zpvdd~c9M3g6ylJCSIdn*ZrBhnZukH1{sA}Mu~=gEIO}K4FQCENj5=N#$L&w+ue+_#
zf&m12VdgNs0w9H=p*76VEQ>Cvf09;UiJa4Ir_G4q$Z6A-eR7PeTnQ7INN{>yqfVja
zdjgQOxrP}qpjLe4dXh=~I3apZkY{-aQW(%}-C_-ZtLU0t7Kt{_1#X0nT&;}R`tr(m
zMF{}*V5(VHX|&VwPxh%bRw3`%b2*;Eu{k!F3TNf$m<;d|d0|KwUdnsv=5^|7dUi*a
znBSVw_(c{|7x*yNM|PRD6vtS=!Jl#T-I4Vlp_k6@#N%t>Le3xp1*7kFq4;aBxAj@$
zD2#4ZtYCLDctr#{f=OW_S`Zz+`z?u?fz$U5@xyD^@wKmi4ZridzlY7uP5kDUzJ#wl
z`xV^0xo3P>>jYpK?zGHkdfnoEA)F{rf99ug=Il9fMS11bm+`OPeFJAda;9>zAS^EZ
zc-kCokb=(G^~L-@|NURMdi52gNeV;?rkP7|P}YePn|S}d|3#jw3sK<#bA<^2ATAe9
z!0bZzk65@;)-^$mKoGf@SQ%uNRWY{*Yshq`=P)=XY=-lC`;8-RteJ3dPmx5xNMLc(
zbsBYmELvaPt~$Li*At6aTQQa(ZP*b|C%1Om9)Zewil}ZSm8j*F9!ugnsBKWKt_~L2
zmSgoi*WBi`T)?cb<^g)Pwoc*AH($e*E8h~%Lsg_?Y&m^u3#U(?Qm~~4)>wyK)46X0
zrimoo0&>NcHm(j>5y2U8xLRD1)JWnP?8-CPGkoHez}T5pmiJ)gI4i(1Mmgsc_F*m5
zNW@*`o*1-U_Fygm^4iwe__Xw#PGPpy5+n)}NjwA0Q5Q!d9H{G9o+Xag`4m%?i4abG
zu)P1a*oh23Gb!Sarz001AKw%vMlZ)#fpq|APLSLok+F^y*do?`rsY|TDaLV^UV7ga
z7bpnFt8X7(=tzu#d)eAZ@Y2h#;rYLP9+xkF9v6P>0>1Et-@u>$#a}8P*6@ylSZN0`
zx%wL<!p^O2TzL2~Jo5OHGUNa5yYJw|EB}Pkr%quoNRfMw<0ZTnvlavbFKB1n_PYP&
z+gI?1fAIS_b^5ddF<y#hKjpRZ<|25I<}$CyJqDu`=g*zNXfPB$9q$Xdn70eVIVV<l
ztm(SS3J{9CRCJ4iK;)#Yc<;bqv%)g6>X83PRgBakZ8-uZiIP?)ND_k6`r_EkM4pE|
z2Vcl6=R@7FJb*l#AkPbV#xmla!yrxIkjC{(kjRf&p37P-QIM42f^1up;&3)w>NzTs
zWT`*9fQRh8D%S}}>pCVY=b)?)4!*GG>K=TN!+Wp1OAhH^xWA-FJP=yF?~NyNZysLi
ze2@^5bSMB$lN#D4MUe~FQ&AMsUYQQcOE7SWJgakVQ9dRsH_rg+YlW0g(neA^x#tvv
zgSt!|m|X=rQRONKkb+UtN4Nx>;86C_BGdj$7z_sT<CF|XWgDbsV5*{)O9?0(;0SYw
zSX!k?0`{54UDarEeuBZEY@3Dl2akh%jsfX}sx+1DT>26F0t~Uplx6>Ug8N^n-gWU{
z?dwj)3hh5lFbLN*{WwZ2haYj~Mrc`@PpsCfV5CzJNkA;^yUak{rBKFQfE|H2*GPmU
z<FbyH720lqO2Cn2K#WDcwMg}5ffE9Xr2hq^^L%I*G^<0slx?ecR-*QXNNx_!04I$$
zC~2A@bg%MY`E{T48SsxmvC^VR<7zD5ol`5gdh}Th+PDJg-3Q5{)E;N)t+2?f=fiIr
zCcw*NXffLd*@cm#bw96|&Ak`bZV}dlSiRV!P|!OUnwKDIXn)I;-q<in6Z}7W?*Sl3
zb!82oSKX6yl16EwMsbugA_y4_CI<(+ySCT%?%G~^9oBKZ``NqSZ)~qW+v|V>Yiz&<
z6HLyw0U=OA0R=z_PynHb!sOWX{#&Q3^k%ASx_d@5j1YarW2&mFt6sg-eNUfzZkiRr
zLk~WT%Bl*~Pp!wog^RFv?_MlhzEb>z;g5<7`zh<%j=#3+LHi6ax>tq8C8(b<2kB{P
zRK8#N+%kleMs98{?1<g-*U;GX`vgmLVCDQ3P5dk-Z-h2SW0xf3Tm(nftC$n}o$yvE
z<7oI(yX$`I1_V94c|tqMD`sY9pt@=t3IxDnle>Ub#1&;X+cv=g56B__Nk>AtY`O@J
zA3y3#G0)V;$j>j3e$O*b06-9@y{%P%0Vi`=Ho7{~=&VadIZ_*Q<e0yGmFv*8wzaTM
zc>;!J$$9DNnarq`7EVKFR|mtF1Wji0faaD~#{XtzWSPZPS#Ap{j<b&THbB9Qn21JZ
zMkbxvj*fP;wYQO7Qdn3lb<3gi+tS>O26^7j&K7yLd}<JR?1kpWMvmpeqGG-lN(-T-
zsR`}v9cXK9As8a_fKGD^=%K*66U;DxGt%T4(lgW1*}-eb^X8(sbOf@qasb$zbIpxS
zXlOX@IQMK*ZN`~lhq;cL)^W+wM$61Nu;4K%O)brc2uPG)SR~`75Lr1nNSD5Ak>jnc
zPP-gKV`Cd~rOm?ObUNR$K!6WeReq<@tOxODhnYtWCyw)t!uVv{hr($bW6h1napdq}
zf=~H{`KH|yX!5kTx1+J)ILBCtv~`Y*;T&oAP60EU8XM4f;slPqbr>0$nKC{Kf}I8x
z^Pn7WO-(1*NBITCOlFanm&faOcXe^xc6PM0pHIj$DP>7J7lCXlcz_ZaSlnd4S=7N|
zs@$f=Cb?FwS7!m3GdT8|nj55zjv*r>(*=1$aW$|s=r|<!g-o&7E^9J7C!3(22QFw3
zd_jghBi9k_jzQaI`}+0tGBY!|4#;a9(>XHVN=iy(-sQ3qA`;JW*3fW*K$gr$)9!}I
z6J(q_t!-^wU-I({rC+mTUS)8;wafA5<|ekc9A`Z^e*%_$vu>+kTAv@VVhb4oK)8S>
zS*sxh158PQcEhsSs^Af&VOwlzgtQIWfrp+zg(w`Z0G{Wsi+3$QP)?`Nuo-&mO8FSP
zDv0SBtlh-EPHYN(vMe<3Yh(_3E2I+~G=P=wGlr$tzWJxkc<${(YxW9)*j3usodGYf
zC~o&=L@RSa?dgyv)(SJ%GtQD3%Y0d}&OsrUgJEp$B-wXb527!@KKDRi?gvUCXtOw(
zb{`fCuA@qdw0Ne0Sb89yp<i<}KoWw5`<jK@EVl1smA*nCH!@|XPGn%qzss>fdJIDj
zYbnHJ==Cp@rxyT2KO$IArJq6Gao-USPEi9{Xq6iBc7fJ|cW<o+{i7=<Cj%#%I&jAw
zci~H4EJsO6DK5YKa_rsnI(F@S14Vfm^z%=l4F;H_Sos-P1{3vI`Sz*t^x|u2C?~^N
zCs{PpXU+FO3(>t=iQ`9)2wSI|4Wpq?aY4{tcuN3%Sg{N&m8_k#R)=}38bA(eb&8!}
zC+3GGIrhbwr?ZxonPD<s$wq`=RYbNuHV4^9&Nlln6d`Mbp+YC#I))E^_~Tf5;U#!u
z-(IqCKyWOJpu#VI_TLV$LT4SCY!RFgkYn`dvG~NNKTqejJIchO^I9mt$X_3S2(RyX
z4F%~%(5@C%XGfcyXJcG-E$Svs#i&tZ1jH&JvxMv#GfSP!bOav`?%ywAtJ@`1@&Gb(
za>-`#LO<HuTQOqf7)+Z!$7MJ$%!lCGruENb&#qSm1SrFtd5cgpexd*}d2o$j-r>WC
zuvNlhcWi%&POnlHngysDS5bu-v**g+O1W0pV^s+d)-GX}N3nDJ%Piq=nt%x=?pWHG
zb7#>xOPuH8ToNPT@W$TV!eCs%IxIYE32N&m5u`B&xpyP>?0ywnU)qE>r5|!~^T~?Q
zI>=i=JoC>6vV7VEv}+OYrMh+^>g#8qqN*0fC8a%qXaX?%_q~qo+qPiK#&ra<@{5X~
z3@B#Izt;;v^Vd0^)}E80unp5^&Sl%w)J{N}j0w-$+uLL;?ZWC6%kbjnwQLs|XF<+3
z`_Q(#aqQ?(6bN8>(IwYlvh%E!HU6xr1h2Neyjj+_=kV&ztunp~k)DyszV@xaT&p78
z5i}e-hT^g^oW0~iOqwzs<uZl^gkgO=(=JP>QQGcx>G#bW*W;xv8ypam<AUSVQV2`2
zV1dqk*b>mNk##)hybCdP+ANG3Gp?uO&IB5JcE5&=8`omTwrvTV8|7w#1FU#Iei-fv
zL9)u~8cdS8+1=ggg=}%0zx2{(?A^P^S!)Oi7Z;b}-1FYU*U8><=l;ub-pem<A;7fg
ztaDITH&M<lK~EE~iHzP&n>Jvdj5PrjId9mXvFs?WElo{L1j1&`nUBiKDwLIt=p{HW
zbszx0XU}dKyITeDJVbyz6e5!_aj0SND+c6IFf1(}Xh0T~bKDCPv@HIm%oX1Yg6bhx
zJyzRH&O)}D6|uoCCb-G#Lr1g;&y4v2#{euWwlX{3mSIJKrz8VPnS1s3^Ur{9K7yM8
z)L?*Y?^q10)@xS-f>}ZMxAwVaWRtRZ115ms;c1z<1v=<EN8eJ@+D{%yQVEBqhFI;{
zR4?>))3i)`KqdMHref)MN}o0)wUj!(W=Z-~6Gk2s*P!{T#U1UR=tjd=_cgZx)u+Fb
z%8X}OW-Uw9p=?VxKsyqrgWqifJ0?fwsfxBIS}D}&+baILh6bjl9QR&>)*M>DqcT|P
zA<}g%$W6nc!*Ai<d+)_3KJf_>G_L#bhwzjC`3ahuI|RF-UwR79sRsyRSqNizjE<Y6
zx~FJ+dHHBE0$$p(89TSVgb`&%_iAV@MRH~F3$n&xoDiHM%L=efm>`*Q5t~jGB3jNN
zu%)>zFSsbJVi?qx7dPRbzwixAo;n@I41n;RZ+}&Qg91_*J6)E^M?UcxELyw-KBIH}
z>Z?1Eo1Fz^5xhcMYb(K?i!Qs0fI?hTilA0$*+`c9=`$I=x>+1|D=X8}_Yr_7LWWRf
zRSo>M@|mYFQpWI=*ItLL>}>dqAXoXQ(O?-p2Fss%g6%PX(b<@{a54O*$QH?F88ddA
zIQq3%_SZ)p1{&+&&7W=!j1#aVU!3QjcIeOnGIp-{;77^E2{1CA>Zi{}y?__1S1rf7
zH7nQ-;q>sSXtS{HjRHhwW@O>&4_u3Ba*w_&oR)@)>ROh$^B3ch2kyr1*LDaPR5TP}
z4NMdvj3xn4{~qU@|6T+bfz%0;rm{Tu%wO^F{eOhYQ3O4F;1$7@CSmt15FqUGYpx@+
zst+T>>Fo0^WO?$>58=^=?k0dItS8Q&o|*Y%j*zjn_`D0)hnZPf@#Zphql96{GIP!X
z0-ksO@n*C(H?yBTEhG@U3K1wCRX!Hie()n4w*kg_O`SHA<(|85Lt|4z+!ZB6X}iQg
zxB>{kbaiydoXtUn0Jna7?X_3<*&sl#^jQ~yq1xIy_-*s17v!8ATzB0^7}gwMY`dD;
z@hs0iyG#JNb;!%j4`k7`wY8DeId9%V%wMpG^C7_4M<pd?EHh@z#;TRiV)N#W96Q2j
z^sZ?L1O`<}S`*8A2LUUv&D@Kb5I+yh)5>x&5AzyD-w`2jrR<PV+9GwvWnu9g??xU=
ztEZl!5r_A-z!J>G)O}I1bx>%99@>0cY*Xb8I0Jlu$9sbuJY<e}V5&)o5JGR^LLauL
zy`5lPE6S5404G$?admn+z}7J8BkKMpqB-NgL#9Ht7*6QU;lZT<rOdYbC+<#wJ3hT2
zB}@EnWbmD)X#|oH6s8SD;vlWxF@2buWntZhP2&GPjf*e32-V`VUHks`;}5sr$tWSp
zX$*r|!_y#eLSD#JsGTsG4*tOd2e5AKDmvq7MjXsHYV}|{wJFod|2QT93bR5sI3ZC@
zC(zg^<%E=m6Fk<?a11A$a^g4(_m3WB7>{yU1%*YWc;c~#@Rcup20?bs2mTK4dGBR7
zc<@a!r4AiDfcIT?HO@W%Lip|Y@#Fa6_x~?L?y@qo>6{3tz_6riulqQ`tAPy8xeLw`
zAYeX$Go>ugt7CYe-vrPjd*x!OBf+Z#Hl=<#CQPmu;C3#-t7NQ3ocBd%FF|`}n=70`
zmJXf#_SiZRyt?pxR}#ER;&}-So_GF5XzysJMip%UOk|}L!{rK#O7PK7ewN@>l1A|5
zqyO+ZOr1W5V`m7AA!YBq^lE}v$=EqdE|hW+*?B!d2IaCxTU(lN<@^5@fAg_V5xh#)
zF1Y9l{QW<Cfoz}X7*jpjJp=$Rx#9!7F2Sq*8Ns)|`}n5?Ovzv<WJp=imc>xOmc~Ym
z8B-zm|180)WbD$*uEDHX^EuXI%nR2_CM?=33W(S?L-Ybnj<<Ti4$p0EZ6zS?H(?t}
z-L4{dm5iNx?)j*#nLvh>zdr@sBun(7i!a03=bT6IDmg8$u&~3H@;y?|fHqS7@u7qC
z(YS9%JP--yJQ&R@?Xt5XE;9=@L+g1=HlQNf6KQw#3bof~JddYw-=9rY!{9;Yp4?J=
zkH-cJjL8g=t7m~qK7%2Pxo`i?pKiZ5NTsFNqz}3pidy@U6gb7=>ss|pTGBtbMfK|A
z0B)iN%Mhq$4yvB1(nET`#P_xnX$Tr%F=g*)IW@zw^81=R#-mAkxaN4u`u%zI?&A)o
z@;IhUsi1NOFkAbLvoSIvYyl5G_#n1#-^Sx-owXR}p1lAq?KXzX!oz^(F+55%aj1Kh
z=4#KZdhQu0+oryYoeb=s!tn<~+n}dQ1jJAG%}|}XN%f9alX0BLxH2N{HrZB28_QA_
zTAQ0Bgzg}0mq9STwibW7^Y>UR;cwSm`yu%4^Z)uE*uM2;hA>T>GzI_o&tF22{qm<j
zM8omJm^E`Y@2#|jjy3@)F1`xoW5y!D<eIyjkRpn#7Z(>};>5`exANOG8Jm0e?4o{-
zILbz6DVB{PAjeWp@FY#ZxC_u<n^Hd$uk750LkHeOR#vWAU!h{poieT8qSZ5I&%?3f
zZ(-y5RSa*73VJ8GUK<7rHK5*q-NyuwD#JkRY5_1?TACOVnwwuRs5IWm(k@f_32H7r
z_dUY&S<5vlBR$h|%%~3~A%hYMdl?2|!aNm__3v@lZ8ss!6?a!kF>G|^>;<?~0IUFG
zDC*Ab+t}6uZpkxEMQK1=S5=S4906k2Johv*GP3}S>_=t<z53d}rA}0mMqqZ@^gh~6
zE8|=wrDNj(CQ_0hP;0;bp#k~?I69wUhW%>ynX@E3aW{cIVMcl&G{NBaTyT-BH<K|C
zn<apBOLGg>uU|`zz}V;MKMM;mp@c@oi0ubhHY_jepv%OHxM6-_faluEg7UyEiiRs#
zmd)#FoA)%pkP(81tqtQUKJ~@GON!e*@Is2Esm^7<F}`Lln0#=u8ek}#^5x=CW;;mB
z%6xG((bKB`?uS-d${DH-tB2E#J@c7YDTk3A7|6e5cv>8AQ$fXNgJ{Fr8b+igC1#!y
zyQkTw4lth9%$?KU^q}QCR7tYAG>oaisaE3J4#GIg%}K|JrcTkrx)Wdc!WSstbNLll
z;*B@<VfWrQQJB|vD4{xC04xF`15WWm-5WA%ri%kd-75g=o?nBbM-B=jpgfLXGN4l2
z-~q+yyNV~lQR~WRdT>9Eb1`@RS=5C|j>$zMlR-rJC41p#ke-%7ou{;nbd;79;s@7%
z8w-SmG^RJ$L_MfaeCl8D<<ET*pZv@hDTwa3`|rIQt3;=0&dgbKxI(ZP9yVrN6{gLc
z6Udah`FFp;hV^TxFXW2GV0_&~eCjiwqriAi6MZ0teH}V<kN{Tj6g0X$jvW=Y+45yi
zW50k*xjDI5a{f{Q5^CVHUK&ORg<-br=_f@a=`Ds#oqg^S0o5iU$i~XE?SJ$2etmGP
zeSS5TKl8M(nocmhNq`7pty~%C_@8z5`2rlhil(LpKC_*)ygva2vfnPg<SK?@`fcx?
z-IC4XKGEme1BPIgmSU*@26N`l_hr5a3q$Ej{Nd(bkeZqn8Z?aEV>2-<b=At}1PIzn
zf&I}k{w{d$#S|#?TX9Jls)e<)al>kki73eQmH=V1$dd9I>-@m|_h8NH6=-c~CLlj;
z`YgQv10VJ?^r%0zeXFDYwU+u|!pP!$IeSSkL+r6f9>VW#`jr5D4IIM)z;JH-%NM_f
z#b=)jzg1UHz^Z4T29)N!Yj0|lF?n&H%&QkAg!?alegbd3b(noLc3dT{xbkY5pJNih
z0}6@FXaXhHfzXNAwyd8!hRLW}Bjfyyy?fCeiJ+>g2Irh}4(F5K#*VFEKOd7m%nW6*
zKbvI?%$P9?Q)5G#dF_WDdH_3iY<IwUf>SeR&Bg^6To?m7EnKu%KFs$DGxQj>%93V)
z7^KdhAjCLbmU1%>YS6T&?LwB7$Ap9BWhUjd6zdF%_}j2-*>?qyz4y};40z>+5^A@T
zOc0?R^E{MIwzUD-v{UTfdP%%4_kvkVS|_QXVFAhqVkJP>$*>B3!GE3yAP2EJ_}u2N
z=6R;+Vl+g9=}OvnJ*8q<LIibBe;e*vCI+vNvUg%Aiw2aTdnV@wQ5%qDSOd9ImY7AG
zvO#j_wSGr|i5e+`QhoHJ8vJ_<O-Mc8T9A{5HxC@f0}niik9_2Bk)Kz94}Iu5-0-uX
zp|!OG+1UiKhFlPzSdayT<JMLU`amWNVDhx-C@&vF-K!njwn}-44y|De1%NLsK1;E%
z5+^h;r<$`(D28{?FeCa7?{L%7r=y?73~!Nc8#*jSOX&tijx5La9Xs%?Z+->8z4cD`
z?ZWq7il5*32b{I|Jos(5u&Dlc>rJSv7>95gg_EHyi<$N6CNd-yJ`>0Majajn3e%_8
zqoA+=mI^a`YomxeKeOy9TzS>C0eVQ;o-{E_JlnSIW&H22ZeVDvWKwj(;0Ts|<D1{6
zj#ZEyIItf-{^9oo5II8e>1M|fU;P}u^yPoUl&SUb+sN`Ud`>9a6w|ALfXCf;-6jru
z5%L5q?&@g9gZJM}jiE37>(>cr`9iX!{ice5`BMaI`m=Dhv@{A>S4&+jzpWL3`j<cd
zG3@RR6c<t7N(AlSkozphXTSJWGGB~AK*$P*0VnT!4uu6pgE{r7kM{q5a6MKEuv3tq
z$8ggl0@ytB%#--;_x}e)Qa_&&kki_Td|Or+=Pi97d`2MTyZ`q;M5uiQ%F0TZ(en7w
z19*P*v)Hm_Bfj_FKc!H<F_6KvW7~^l1WE{+fVb7cs+u0i9K7kqpCdmn8&f9DrY4td
zL;CVn+<nKbGEdHp@#S;!a*^R=!nA=%XS)+pO7Z$2dv5tNxbencAU8J)MFNW1QlItD
zuf*1uU&L3w_HPt3kI#u$0~PZeI2D?Vw8QwxPk!XI4~5s2QUruw6rH^<e(}oz+GUF3
z_M#I<wxEQ9GRx=8SuyQG@cPI9^Ftgyc!29wI22-N^R2gR#OngYe)1pw$sbNA?K>M!
z{^fB`pUUSWdH{$O>~nieEDtd0iMNn-W%0Te&w*@P1g12ZR+<dvh;qZ-A`WP2Lu*&$
zojOo*zOAACK#kHdK#jH|QsOeOOmaOaqmvb{D`P_=lTz(AFe$;f1VKc>L)3s%YzFRw
zz@Ek9u-%6VxmcM+K+qRz+Q;W?0J}`ZzG6ZkRUA-8o4+h7g^Bc^kzk$Su2agv)GCO5
zb;_2q(_hR!71BA-&@$`o2k7k6etl5`3~V0w`D(C1o#dHWr>-ro6ml{{ShZ%Y_<NN&
zf64i%uBjFO`AXb%=RM%}Q_C8{A2>{6Yzr)JpGmrRX3`ozVKN(0bgw9wElv}e2SZ1P
zOyT(idCZw^s&<%AK<FWZ%e%X~$c(U0(lBg9?1&8fYW(>LhgEW8pvd^8S6qt>A5+NI
z8bABdf5VP+p|rG=6UOx{$ZTq8YNAssj0p+3+ksbK*@?Zv%-Ad8h|}t)V&sT&hOLG}
z777asF=6}!w70hQB}nc%qKU-8J8|z_cOW+>1LvM2`dKrkW66>w$j!>a(@#B#zU)C^
z>R9N;`RAXH8Plf;YvgQ<9yJnAJ^45SjKcItGW=%a3+wU7L-%6doLQJVXAUNgACIY1
zreNv$OR)RZ?fCtzzeSMM)=frcR!+adco|08-A&NRZ^w=u!|#80Bg%>kuxQ}|Oqej9
zW&ZrRm^^6$9=PWYGS_^@tb4+28}v2d?mKV8hP5lOc=004o;^$2y&g-YuMX_rE81)i
zBET53>D8mPwHf0lPLcXegWqoZ{Y?^rxe{kBT8Jr=C!@BuM!=@YIOpuM@Y3eBxKEzd
zZ?)qm3h-A)wpNJaO%s&bv11!E+)3ehULgYHg$22oC~cORkwM@sD<@OlUjwCVhUofD
z#Lo$sS(Y<KyHQy^o=h*lz541a0?ORP{#dkNAtu#Lz?6v-asGMdAtyUS=I8(RJsy;H
zoq8+29;UCTxXuYnGA4B9+XXB>DvYS5m_2Kjg!0YA(xpoX(ym?mJc2A;+RoFeYHMpp
zP0jc~;PQ{R-^TFg^Q0Z7Oqq<j2@`~=H3N&KKVOjfwSL`N_^rCChCrb(@doTNsyLcH
zmNo~p$G+lgwh7Io_La?Jws(x%5%;(@1w0=*LPX4DoYKmh+r2;+qeG?r&JOFQV#3gs
zSHA(Loihc!fFga$0wk&zlS{>Q=#quX+%^rUWHNA_R{BhEvWDx%XM(~^D&$AQ%tx~i
zZU!au)+r81LQ5$;rJ!b8rNHr&o$?G#OA8^afQKJ^SoE;AqpPz+B0$c;+<CLm($Y1=
z_3kZ27B>19u8xIE<<TlO#@4Tk!EKcsC6^i<b~m$IrKe}2v#V3Wa@GoX&@7<VC^|^7
z!`_6xDcwgHqt>zHGM;Qh$LQ1>uCXs7wYNrxUxx+o8pr%nZkakH{4~{mEe@SLO<yIo
z6wrYL>;xJs+%_PHj=ASh(0wV&4+ZwIR@7~w!xXl{7+qc_fYkL2fl5Yy=H}o0N<yyI
zIp71GP!+a3d0r<ph|HQl-E}8IRtRa~Fto)iZK$oOk#RN>Ev+rE9WX5lq7fjg7e-)!
z(cv>=LG{@zJGO6=y0i;uF_q8eq0m*;Rp{<)XFbUT@o5<~H6F*LNt3*6V|;H-bu~^j
zG%@5)05*R%Ll&)*0kGC#+_*6USd@@8L^g%X5}7%32KMfH#bKC`S<=&rib{~5UxX8)
zhm}siOhd;f$<SHP%P&MlWi9;n?6N1((s&G2)9U59PJm7_6dkqvyd1po`d&OM+5WDU
z430f*Y(*7Dj2wld(oS)O%+2_YzdW;^-PrZ&4r%iV$jZz>gnDh7Z8~21>diNHBgm);
zrfuG%y{!%7>te?#K_+>Qv13OGDAI(crihn*pM76iT#Tpw`WUW$|8*RfJ*{qHJzf#O
zs;Ib#NejO5mCq6swX8I*6*^**MORrlPS(qIbaoRQfi3;o-PwgX^A^VRBTkMfMaGzI
zx1*w>20^xd-5R-mq11gW=LYy*1q&7?Po5;~!tHor!#eqZS`dgfY0Wj)U4yKIePw``
zU{gshK}U`p;T)PNppt-{oM&Dp$;yff?A!M`fV1GYoSYoa2{LS8$vmlq-{gat8hqo&
z*9vIa!m;9dQe-X`6y#&o>Xp(a^I;6k96D;$C<2gVF+vB3y2rqHz1L@@*aph~IiMA6
z1z3E)$GlQfY?rAVk?jy7vJVn989IoF`}UBfU^~Y`JwI114-MlVp3SQH7+KmEW-djW
zg9NW4$^dOZ&+FRgw`mg}WX6sWQB^Fg7qsHt+->tZ&98qYMfE(!@W+5KCPU<L_o*rd
zULr7*PWivOa9e5LJv0mpnicLXIPS5*xM#5wf}15S_+ZCf3$-EMC2gkfhtF@bRh(!T
z?X9-fu>bCF>H}yqg!%V01RIA1c=UgDHx39lO*pN~C{<)gny_HY@G&_j-4|o#yRG3e
zEj1$A+?$sRY>zV-#)wPmRBS%8-Vb8Uv@-n*jg%$tWm#r!4t(KO`t1crl!_sJ*=N*j
z(t~%t?r(NPZKM+h&R#WZr|x$^HE*Ar>*!&%<Kagh#iu{@PfWfyddz6p>o)rQu>r<q
zn9p+W6(b2@8K68oIGwMO<fPhYYi|X2$v&t<bK@~Oz;y5fmRg<Y*1EqD?mF2E1=a`p
z^qgR<U4Oo;uxRgvWL8!>a!15bSC$pGs@m)jRNDXMK4{yQQ%VEfk#2F?i?MsxZV4s)
zGVZwN5duH)SVedI;diL1sdmmYAt1ak*#amlDMqQ>Q?!!^I&?(3U}?C3MTE|6hHU5L
z<}#5$P3;7fmX1i6I9%(#$6`x!BPXz!>*x}!BLhZ*z=?l+lX0V9lU3z9-u$a9MRu5g
zXML<)NrhEWr)k8<GHNB+He1}g2laW<!WP5Be82~pkVPdW!bp09;@^n?P31D|%FD_r
z>gP8JpCo9LEA3-zH)EL#Oox;bHd8&y%SQ!fm@6(Gfj3{@LoFjc2=nFep##zv?a0c>
zCL<6Ubndlm3#&<<qmyfqFSL^FrJxXz=S&yCbM)AX0FAY7Tp}6qvU9RHHnr^o@8uq?
zZSBmMS?FW?jH|4M2G~!TGB#_gD*$Ctzo@;vm0*^DUJS#{%E?86v`1ln0l~)c67o59
z+D!Cmit~hwt>V&B_^qR(6Z-^295ZG#$1M9uSsvibwkRyfXNVpFtVHap!DVK|z3N*>
zj<9|LUJ;OTjoTR+>CC7ZVARf%wr1F7R(2M{*Mr!O7hU{5h8t^J$AASBCQM>m1&x=|
zvN9)Rl%d4IkK8*(OvP$0`Sc!@dn!W$Velccrno~#kEhvOpJ8iIe~M!7u9&**u9eF6
z?#XSK_0#-N)sv}ZyG48T)jiem%sITjkzVKNJX807EU4HpFw+ik1o5F@1!W)9y+iG_
zKM8?xj@^3%e-lw=AqJa2n1zsdp^gg%x$UlonB;OsrmnHyl}>Vs<D&t@;+M*(_3<G3
zW&x-4^DU5xJM5MMu!7US=u@E3sNs1&EB<q)EKc&Cq3%m<?hn;Z=5$vV{ZmG;2q}Ws
zX>Ms5K=pKzEB)|iA*4gRXV+^OIeM%B2X&~eo5b*~tuJjNpb+#+^%-Z%9!$!&5ta=`
zu;Pm1n+@(KWJWx@{3(3>EB`{_HYkv-K_AM5tUz<y6>E<07&6k+ke{2wU;ZO}5uOoX
zsjRHP>XpynyZ_&}@E_m)PO!83))8F)U*8nuH&cL;g21%;S}6h%N?FdhB6DVPbq&f!
zjH1R=wmAP;0!HM>--HNp^5_xk5)P&LScHc45O6Do+==5GkTM_ChU2vch+wt0G?Dd?
z7EWis_-{a9Li(hoxd}m*m6=U&QS0Ou;4T4Ja`OriWb+m*0;CMY1Q26iY7CBv<{8Iq
z$jbCPMPy-hc66ZI?Uz_nPMa{Cu%MtAej7DvH2&tJ|A+w?6A0wy<)SOnDRU*A;E6Es
z*oRZ5)T6Sxj-l5@C1uP2D&v|!V=`vZDc8u(%9ei3f!|u3(8Z9&42wO(Wi2Rgj!WJ0
z(AC`;7hdw_yjE)Pq@uM~5M)dm5NB;9a2#aXgf??65P&j30Kb}LASQjpaApCa<1ho2
zpV?y0bzvV9=1oQ?v<u!u_zIa=Y<J~Spp=FQ>$Ih)2w8MmitPebmPKIHgLR-~-_zLA
z=oym8I+<d2TxK87G3P06gV$ue2@NL!WLgP-6f?(cKj7yF{gTptR%U!d^MH>9=hli%
zW`RsMwz?h|aIWLMoU)|l51`JJaIusrB!Tl1RDQd>^VA%JJ)E;A1zx2rWkZif8mUhk
zFzkE~Pe?MMj7Cd)1m}rd&eEmtAvt4*L@YeNW;L=h236bZGy<@+W|)UU3!Y!K!T}V>
zM3^92GRGxc>EMBV;!NamA$<q^MmW4wP6J}~>)IN|N%8h=<Cyei)aWTL$VGmBE`bqh
zA8Ae2k+#Y7q0>enETX+IJ&GSI3v`g--NV$Knp8R2nOG*;Pv7|W|0JU8xBdI};n<Ob
zWM4(uO^WZQAHo<CMdz%owT;ZD*$Wn9#;kcLC@RJf8}F;2dbgd9-{&@+Qr~+9NocRL
zqZ5E;e?@FNNGzId+||{AAWP54gr!0~#s1?nup$h_#9&*d11zY)%8$kI*XJ23PPQBk
z?E$iE8<S0Nu(Bg&6Ws4?ZzG}R`0*nWPFpVm@0Vi2<oZ*})M2^0TIp#af|jva_8LK8
zBOD@F7$fzg6hZ{|Is*k7wb4cLK#f5QFG+k}pHyWY4}8g>^<>3`)6xhA4x$l&ls4-p
zl^VYDO*o+iZu`m1(ALRuZPp>JJRp)`)SmtoB7hyT-Eco;fMJGpn~)u&-Q?ZV^s%R>
z<)<f+lCBgG@fcfnpB<><9yfoLij@Tj<_;+%nr2xsXK;-09}E~uL3{q^N&y&c9atV|
zk?%6>s|4tY5oix0jQO5N8?Y~BNz4hKe9NgP9!i;3XA<7WeouA%sk><JHcOdVSWl;{
z2q{xToMzXT>csZP94Ygi$&WXjXzE0D#b{i4<rVa`Pc$6Iop;`ahNcb_<!21>I>Oo+
z0Ly49XxLsDI@Ay?kTwdO3{VpKv1-L~TzJtXWE@NvprNth1lrr%7~*w?F|UR^m8?=K
zp`Jm|o;lCZDB@(fpi`EclPy4F7SE4pn@%7d8#{uC?TH1O<DS+>gpQ34syjmyGtx8g
zt^fKyft4VeK64g6_l2+Ewp(sQZf*f5j!CD<4Tf4NSh)O}>rhiS5pj$RsN=$N*|2^s
zx;ndX*%epD1z%ZI|CW@vGl>plpK1iBB&Zq+hbZ37p6tu*bAgFLNtI48pc{j21e|O=
zXqm57PsdmXi}uIuWCa4Uwv<6N&Jp%H8btK|>?IfC+7Ep+(Ob~m+{7dW8$?U+eV1G=
zVSr-;z*TA<F<dSp#cu-M5MTzu6EpsL3s+k_Pbn+m$4ZFXZ<8!R@H{c0ZkCmR0zeRJ
z(3!qk^ST3muW5T8@N_AmeBs}gw#;nxfGbN8pwh5mYi{!|!Axz|cY<2pbuI5+23&z{
zn{5yT@^sabr^fUBiI_>Y6tf=$bXlsmwvhq)&|A;Sa-YczTPbV{K#}I&8{p)dxNWZI
z{&RQy3_4RUw!MzMo=yQy!(j?4Ndf#+zi5NSdRb4;fcUrmD7mC8WhqNp%B)xbi`&|;
zvWz|_v(0xPJ1ZU6UH4&T^X~5I!u|K&k2l^tfWkZjUcK!MEZ$iAQgsf2Y3d>si(v9z
zY<gh><}F-=!lGhKn>iP2S3k=To^aTL)@M5N%KSRqKRdOb&a^-L!za+oV{t-1x*`$R
zIaBDiZL(54HkRFOdrU5ZS)Qhft<AO(t2HsW2M+AVr$6@<oVWBs#ItL}so$}EE4E6C
z{4wJyjdQ_2Ap7e43oq#tyxP2ZBerbXB;wD9MWp-~T3cF07im8LqCj207M^u>lC%&t
z$c#G+&{lv3nRP03QffvqgegLYE+A2Xa?i`|Q|pX?lu}7E&{~>X5M+OO;xVjTv78!M
zCYB~BN3(g&CMz!_z+yW?i_IcBC~*q|UbrkPg!YbhS;Sl5mrZ(e-y8VNjW<9uJTpDM
za*L@0uc;A1cUPwqrpK{+#Wf#BkiG5*-Y;J!!uNY{^yph?XgH4JM~{+Ob%_92eSzEI
za0Xgh+o?Yo6uuaCLQOr9+?b4S)bAqeEND1brocAuI?ajH29R%WZ)cz8^bR9r7SsFh
zyO(S#8Q;mSt-PkPR8JO`pOV>6HkR4e-Zp_dZnMoTC<48#rtXHVLj>||9pS5%tDEJ$
zhv@}eab##P+z{M^5fFD7SGLDLG|v%}#Sq%&HIjIy0E)T=sQ45B9`&@@xMxoH61Et`
z%J0`2fJ*s>cB0H{+Ry6nM!8mj^I8W1cFF(-{ljTf;FZap^UjMJ)JDWVWp8KlLKAm*
zT3V`ul>cBVm*8-kO0<CCOtzGn5JDO~d*8O@&e`s+Zgkne2d}ycwRLqQ7%YGGS*%{W
z9=TZ|pQm$Xg%J9`<TI<*mdzVbS~dbT<LfZ4vPOibk7E1QEyxw8^-MB#N?~Eirx7w)
zL;{AA_JLE}HlP(>aT!!`SRby?GkBg&mX&Q%w?iA&OiwV>wu2a9oEQfW?#Jx83-Q^{
ze;vu#$N%Z`xc*yTb@ZDkVy)bNT>=0U6c%CHthorX-~Q%CJSQ0n^JHul34od}e@BlT
zf$EAesH&<?DvUv?egId>9)d6YDk%_6+JV|W9i8nIL+?u)sko%H4^jGN0xK#xT!)%b
z$BrF=O($Bx7$`#i^5*rTdpCycC5sNS;#jewjyb~|MW2dd>MCTB*{35mDl4l{K5`^%
zJ#^v>Mmr~=z8IhL=+R?1`qmMtTeVN$F9SQaZIQNXVB4FSZ=7ywvvsslIGy2M0NbRf
zs0ia_4eV&s0_dL;sKK@DslVcepZq^ZXrALYPXNI(SwqK+8i~xzY=UM!^8hJ^=yrBC
zpsBGDV*ado6n8&-@J))FYu#HqR4K?f>g10MiA=}OHe<xT4R}7R-cGuJybX<wY!@GZ
z#qhg5dtM_LOtxo`Ic?M4L4eN%S-D+aUXJSO%3jBUf!~l6D{fewf4yY*p9e@Q&Lf5m
z!r3AiuE>T}mPSbS+1^UKA>0wzP)wenl~G*xwmCC7)l8;Ht-Nj9gmY<_aRR;}7@#s?
zfq_!ni1TBKQmkC>uv7)~<^Cwc%#z|`8T*;7QnZgf#S)OkEcizZ-A}y}O${<50T1ul
zQua<%rRNX`J{|*C>(dET8~X32$xB|avHC`KO+tl$mlR7JZs+L;Vx=sIp{jIB|LU}q
zwNdXr5Gw^|B4ij@F^Z(k?Gc>4cmd8m_Z<59J9q9B_SHQ|4>`V3cvwhBVN*e0ZHKHf
zUbd|)WMy`Uc=vK<qAL;yY4X$=!i+hJBZu}=Y}@DPpSfdKy}fbn+O(?+b{UXKN<iNm
z(c|W(CIXNIs-(zYcbj2?uCTjp93Y#Z7Pm7UW>7fnX}d5JUzUu6uYL17ehnpN_YyW9
z9mt+mE@Igq`0&T@```Ww1^E#uxt>yrR7MfECZoh}8`iJG3+vb5oU<149NTjSl|?pI
zc20Hz?RK3si(U6WH93oKf1uw;X#$`yv)zlE*2je8Dy7Ie$;`^Zgo#rFgwETA5x0-P
zMw0a)NcNVr<Do+bC}!T%>g%Ut=FFKWEG}ks{Q#EMHpf-j$k9j-r*l8zvbs(jJ%Z+z
zCOZ13ff2~)lDh8R^$KRsnGa)NCd);O7Gck8I|ZCCgKdP~yihl^wYH!@K-Uo?$~nHZ
z(gds8T3T@E-~ps%WJ)`X3Sh*w;-0(yfKlaT0(6Zh$OlDzD*`C#0$}Ck<ptuXo~Tba
zEi4SKJ(xCqCj2&4`e?6!HF<gYJilkXrJe-9YHRBdWOmPz3?`-eHz%~8Ip_xm2DXgy
znxcP2;PlNm_r+ww99L0+dGqFTY%&X`)`24O1qDSEZFfUxsq@$(W458;gs0QzV{qwS
z4!6ygLt-YbHks+5E$|&Ki^*0If>>Icl;zaeBbY^vE3S2xfm69w6Kv*R%Tx<qA`WhW
z|3!MSb-B$~VfJCbD(GZF4Rs>j2R$&5LK!hD?gZb)PmND<cq*2jEH1^8U{%*TX%s~J
zUOfZy1P(n_K@Y!Psvb1IB&Bs__>I1KPv9y*2p%l`y#Cv7DNC6>kkwM3!9NP5?DSuM
zmBR7Hc2tfXiK~QtWrf0wV7lwByU@`MqkA<BP;XelWS;|f0!708`vy!W8jx(2EHYD+
zo3gvGuuvSgg92hbhYK7%tjrARVXavHBt?VM(=(tw1yoxb;!(VM!90u7R_~BVWt<|@
zO}43DOk}7z6IwwhV$W#aw6Eb1SZ7-BzAsCa*@Mz?1sH=v8_a7)blDVJ8=$EV;DRA%
z<>jN1D~>MDvOQ<V)4|eY(`fX*uHwxV9lMT>4%cDQIDGgpzW(pu5eC)*`0a%a>u|$Q
ze~4e)cr(+{_q21DzE`w=wqwJZ6&N#i9LEQR#0hrAT61$Fs;VjkL@A^ekhXztWx=+)
zV56JYNJ8+QC86W3Y+o#~inB-<0pTR3tr6R|scQo}4uU^x&O+>ZbtiR_OqMm$K+)9L
zfJJ974FWxwOyQV>r<IkJLhFcoc@@`rNYBVX)BgPo@ALy$HRC5>O8pG!&ow9&;6^Ev
zgkQ463Gj6Y3l=Yl37b21>@D1S(+x}pU|F&A9o$AdmPg#V#I{o$n_x@QtV9}qWbkc$
zc?+(2|KG&S*Y~{l3jE@y*P}_sn`FG?`QY*u5_ah^inV|Alb_`r>S_1g{Riyau~opW
zGMQsJ@Y_)V@^bTX7<!EmwbNYIjm3M-sGCfn(r+3@usS0nT^L2X$p-RipE1+nwrwxr
z^}TzUSVLJF78L7$qM-qkCf8%!xC$WY6!z+E`W)j22@4G>xi=bQnoO%#L`Q7SoOv-q
z?6YUj!(aaVDEry4;yBjOaN-2n!&hE)ZA{zWckkT-5_iZo$jrmV7hlGtC9?K;>pWS;
zD<rh`g%{Sjz@biv^bvR>-CGl!f=%5@7Q!_)p?TOL1*O5cqrw2lmUXqxEej#`uJW=Z
zl1b~+W%n}M8WH#yFp-7(-TlHXwA)=?-gX`M#5yk1G;tz))tl|))20mo7M1&&$8rmB
zG{|J*j)z)#_vk|-k%!z<ZFoQI^ajyjn>Mgbn?|qMAHjd_4_9d5U^943D62|})id~H
z4i(Hya_{6Z6TLA5W$H{*r%MQ@j!(AGi1Qvb)O9p0UsDs`_hS`2^KI`;0`oTap=^^C
z721RonpMDHVZI;kwKj9ow)Gj!)zC1ehS&ktum^GzBcq}0cPsbCByZ8~p2Ze@`<Pjw
z0b*XdHv_Vlf+e?EQg#}TLaUcXbvv@s6+ZZ(>l}gzi6sv_@BrS}=jdLgL+hccSK_%J
z9&XKq($X^QdwrK^6K%lUc?(fgTp}!iIavSv3hMA!;Sf?bV5&BY=d9UgTtM@X2SAw&
zZO(pQwrKIWm@)IgUg^eFP_TxM3B4kS@^4@JEFQS;P60W_V85^)&OPrv_|!jtsgIDq
z8}O$)?-v%tB7FW|zY4#7@NYkk1N&YVfTjUOC8Z#<sI47AHok5mUfj4=K#^k%lY&<0
z>W;|7Y)0LL$t*#pPl@kqSOCeHP9AwC?i%+rG8(VA>O=VR;}77(iDT5efy<U#c-9gu
zK4&R{Z1biKWZj6EKEu`Go1ygQ<>lh})z3+vE{)L)y7=;I32eUd%2uc-NXmU-_E50=
z!uMSTzdgTZ7549c6Jtk@=DEXf1cAAL@7(?pR<C*vXUTl%X;Y`o#NU1FGkE-wd#JJI
zY7FstM~xnb_h0w181U-Qp@UerZVg#;-JM<NXpbGk<Hl8@vZ@+;c025@5eS9SoPH#u
zD=)vO&%X3nS_(jZUIF$BK(%e_%c!3=Jtmaxa_OT-AAL|jtX&ADg<vT~2IRy^Q}Eu4
zE=fSB(xB!y_`He6uW?v{PcuT=#?j}|z!|0$ON_H-v&8vq)b5Wc1=zavCF+Y+R8;l`
zfoIPlLu=E<4P-4Ed_b{3mYjbf!7IOZ*0yb1F>>Tc0z@6{odhKX<Ynn;RwzscU4A~n
zLSK96K#_W-Js`_=+sI@jB)Da3gp@7&3SCOJBO%!b;2r~=ZrcTM*!e+S#=3Z+y9B$y
zjIuqGei(q3EHLebj{C*fW49G|0`933D?jSQ33^Njx64#ZMmJJ>#5T7itclJ0Xa$zO
zMleG-gODvh*UAI7+?Q;mEM+N|D$%#A2u^oPMf0XCW$GQseoPsYosnhrp$}Xo5j&HJ
zC#+nt0xMUqLr&&!_vY{eSj?DKTwH|B8`q(%Y$PhHt5H#1BjUtIgq83za`N)}CFq%o
zc4fN;g$??$N@>{qKf}2AH&F<oFydGSWPE=nB3<1KL(DHIz}JL*6=b*l{&#q8*`IO2
z(z&?vw%=m$x#wZd+}<Huxw(0`Tv$7||L&KtySwQezV+4-3b|)xXTcblo$aDauNLw5
z7tqns#%Ilyx=fon8#89ji>G;H##=mb&_MBfl^|_A0FRxf4XaK;vjmwkz8SckU_^~5
zABAf__)+ZIwG)jejx&sG^q5MF6+k4w2pEa8PEffY;2pt~5&;pnZ{LY09)ARvTzZ91
zXDNr^%^L!a92U*9rsgJwj8@mw5!mtD5n<*%`Pau#$hm(ynPwXn<mchx2mT~uasin-
zJ?$(3lO|4?hTXz`6BZdkl98jvkcAdBcOHK5UL2L@oj7Ttw9gwjCS$m|rZyI^mG=AV
zpC6`9ptd#AGSUTjog|?0`2v=d_c?w;;V`>Vz(R(?J^So30$4sHuzTf|*UDIVMds0A
z>UE76F%nf(wQ;jm+Ah1(QW{p0wBMxVue5h=FyqF|78S!7(20-;61OzRp`{f5{KVt<
z$A9`Xd?p~}IhY{rELweJGg_e#+q<HoDv0qS<Mz+c+Gf^90lgS<8nL?(U<9vh9hY$w
zs2yl>S1?SF^-wmMSm1`Xylld(i*31#BR64$tvv7#fgQoa1e$Fqz_4<O)^OW|5858p
zi1+fdBmEpEFWQU6>;y;Jd3sg6iBbMa(m7J5m@I)o>>aO|`&s=Ff;KfHem58~{>ozC
zCeLb0nT8$`y#*D(kOuUbEy%A<tI8PGW6Z3^J5Jp{rS+7u6o~asu@niWu{DAPb7u%K
z;XL}yyLY{Y`|i6BVT*VG{o8jbfMuLt2~8t=W{og7ic3luqBg012193#oj8i@tQ<Dp
zJKlz@vvnXr2bv{@9i_c6OA|`S<2LoGB16{Jon2jYijGLw*th=g4>4tGtRuZw!km6}
z!w)g4yqv<(jZMuGmi0sY?hkjvZ_{VZ!LD<cV$E~QFlyXb(Xu&+Et_A!f<=qrGdlY<
zwRL2zXsw;BYSgQVV{}64)Fk!8ydB_J>m)@Kb$>+{<E1$ALX`-vWas1vU@;5H*uD4M
ziSDirC%lQ;KS>*XE=z#I(FA0wYsO>p<S8+WVMSFfOCr1dwwuw>)`EhuqxlQKX<-ca
z0W&*}5?0ttFTRA|{QBqk+!wwAzljDGOCnn(q0=j#c?z{P)u7mVdI;-9t8LEwh45Rc
zfcqc*yHBE}r5T+a9Sldzl9EVtK3&GR2S$t@Jqj<qycJJ8@tB0Q#jvW#x|=XzGK=3N
z^CIViTr&<#0I1|dt>aE8zHVy{Z_6otoXq}!X7R6sHaSXmoH{7Jsv|bWN(k|mEnD!&
z!w=)K%P$XT`!be9_Sj>OV)yRXFm=jQuA}a_A6!S#WZ&y8hD<X+Q#1jgEyaRuyWt3y
zc0nlxLL^aTcc?!4NU<AWvJLXua9O)CRI6Z753fE@2BgzTek2;;5+)O2u=XI70i(ps
ze)Ns*Wh?_y@x6)1sufqSihy3P_VMZo9sl9XO9s@_-gESif|W8obl22z)~KOy#!{xu
z9M-)jda_D&P@d|DP7U$Xq`oOjwTXpylBK|_hQ<zz8c~cZufE#JYER$ePk;IoTHCu^
z-7B3MQ!a=_?Um-n6B35B650i|L=TG%*V)<O`%rraW}eV*$FgVuDibzHr^PrT&bF<+
z?0|I0W!udrNCEbtYGZ~o?SHcsOE0(tpZLemA;`Y>o&STz<3~_hT1xgpWkn@k-m*c!
zf*TNImtFNijIF9cOH(8A^K$X{qYvTu@#B4^%_lgTmtW8myb>^Ci@fJp04pVn?V^-Q
z7HBe_2)*NhWhzYQ@hUr>;0ICiKiz!?`eVPl>DPEw7>|{emDEY<-yk6HiNb;cl$I3Y
zXFvL$Fe+cbK<wAQ{3*6<T+7Um)aKC`b~72wJWT>6AkRcR^VAdg`A>g@f!M|uHsHoz
z{6v6}66EA$IdhR9)rJ?I$MWUN5Nt}$%|lUfX)o|<*K4m~=gu90nsvg!;{5kA>s41(
z2~cyNfM+X`2cA1Sar^CmKtn^rDa$S@7WZGgslhAxi{JdOE0$!!ceMr2%Rx94MqOPk
z9+kD@{s->EKy2Bvrv<=zSjKH7tdPZZqko!U+AY1aH0r>@^;}H#I?tm3MV!}RbKmG1
z0%pzUF)22S4lLSZV!5SfLJr$#HNn&stb(bhYwkHdxKpzv{kiFPYGXyaRN`<{7IVEg
zN*qSli0A2~@JCJd7GRpge-^h*zXl|iHF`Yiw5Ky@<rY1ROd#G{581ONPQaruh?WX3
zBKwhh0}feJN+mgnQox5!EOVct0}he)SO}-3r7Q(rQNuN40q_6d2T)R4#?kxe!;j+C
zU9Y1cHyi|Br9jcrk`nBGZHE8~o1M@?I&@Q~&7wn1hv1#MoSE!ULz7idd)r3*)v&9K
zCt#c-57_bmEvIO7M>L>91a5}F$Q+qAqY6L%*-Z$tKi+l=p8U%rsH(1}6Xt!9uM$w@
z?mK>u7iC=djG4r)`^YDm-7UW$5ADs3_|bn~FX5-#k-*4Qy5~=K;wL};0h*ec;I~nu
z$D*jP7+qZ*(1_5{4YIWK^j<EKh5@IjL8Me5I0mKqT0oesF~&UMU&OZp0g_fMe;Pmk
z*^kiJ*ob&`;J^WV@4NpcSsGVi(xeH@OlCxzS^uEA@R+c1%()sA(jPl!42p^h@IODi
z9=F{58;XD@6Y{!#?eqBN*S~}{E1!{iOyc~P;{yT1Subjx#Q>-wDb@fPhQ=9=L~NvI
zWMbmvNmwSKj{o}kPh-=jqyRg%_it|eCI0*RZ=<xh0Aogt0-29W$u-k4vaAe$xcNpr
z^x*wm_Y&ErjT`ar-~1{ztX~ViNhV1qDByL#{^8gdUsWYxy1&I8cicvut2oB-^Wz`=
zfI3l<bR%&7X&8V+g+k2M7{ms%LLsg>^iiOBUSG^df-A~Kx9&zbJ<NXdTS$&s1RBiD
zWAViKb#l&=Xe|=do;Y!W0N@Yf2S50}gi`K8GPY;W9{lQ;H{h;2Z+Dn<)JXH%TWiiA
zmLTK2vTZ3$3uub%)?IVkU-%k}drCx(MPU2GE)5W+O{Q4h&Ngd4kMXbBw)q}!+xGT-
zpD#Tn(oHCIFuq`9m%-h{*;cjEEPyY|p&4tvuq&gh=7Wvg#!94urIZTLUsFkAD7NqZ
z1O}5{RScO{TME<@L(e+vcU72B^6S1D24=(1^+(E70Fx>qpknxuN}XwZmlR;6mA|A~
zIb|suVnR_{CvfSd7h`JuG$uM)EB@J&PcKJy27SWQW{nM>KGAhdYfcC2g>`EfvN2i!
zgsPf4YRT-|vy18aPYw6hXF{53lVPdv5E<jhaHDs&X&rThjDR~xw<beLg%obR^?y-P
zQZ6WL8{Y$%>@FJcG7y^U0s$G}jMJc$<v67j2p=_O9B#ekCJ7@v0w_L<3k+#ICE(Sl
z@{tT>g7$>yA<kt!I=VXX;~!j)`3ujc&^3V}OL20Ql$1~qInv#Q+S(fI+50+v@ZJ9u
z2H#u}ou7@O;$k_cl+V}P+>C<<4v?j^b?X*}s!f_$D`Mx5AS*i;UE<Jt**`J`000z0
zoviE}0U!3`wp(vOccj~EPjSq{(oRhbNi;eze2vfC*4BnQ1t?%h5!(-Z-mb28WH3ar
zx8KJ;Pzv|ocMlZ9e+&@DxFEhiB=xl8hK@~{GFimNU&eoa>l>IgXP$&LO+(p;5v)^F
zV-pS?Jb+D`H{#_NH_E)SFnwCR^F9I^n!Un%GJD-K%bvvQHLKCp+35lXifw=5_))Ta
zVEUgRNkzpt<Yi||e?EriSFOb4DfI&OOmRZBm~kyFJx%8HQPF!kDtcEGF~@7K?!buB
zV$7UAoeY*Pxy}F}UjkR{(&o4P_SaBW*bRvVnVfAcjT~D6zzN%>qq7S)3loj~$aZ(Y
zuuQbb`?9mM!0||M1k_#2mV3>dIUTRQ_A37Kn_tGHsWUKb`b=sj38R$H+Sb~NLx&HN
z6}Vk8{XPHuDs*?W$(WmflHwAO0m<xeoP#JUE#nyYqiDY^mv%o#MDaz#jk;vnIoVQ|
zRvZ<bEXgP+efOe__1C0bN8`Z$eF7NXL~xC!HM4T+h$AAN=_PewNM@M`jH`?^EPwVX
z$qu;zGbI#v^5n@VmU$vNSsb%6Kc&7elPLyh)YaC?IKG_%|1N;Q@gj*3sBxyD5R!dM
zUVr?tN1Qe$kfRlWCbH=w@>;fB9}!5~WeLc<4g2=JDc9`u00c54TLpy9$<5_`WZp4b
z=`FYX&H#E^gBnw9t;osF=9n~$78?8Ogy_Eg{??n(+12emKgV;c^ohxA3ihYeje_p8
zXU`T9_U-uocfW(Wx(S#xc`^ZY$=J!ZX>4j@md@kHPdH-j1okrJn$xCDlXJY#TQd*a
z+S+md{W6!8nakR(e@k<d)FYp3hMz>Fbl(Ey3NVQ{ECZd}R5kRpt`s6l%eGU<k%S!r
zUjrf>->|~$9|jc0gm995<zrIWE<@MTPV{}&_&(wI*H+M8g?Zk<conubp@KfXMZo!-
zP~ev0ab{mMT35bsCFNs+Bu;Xe@N-wWEy1~M;GQ!^idiFNDeI@~fvpDojaVhXILsF*
z79WN4ooy*oZ`10NvXrH)rKJlqr%l3=rSIW)_c!;wAw-XR5uz-OFLdyo24HDD@Fc9t
z)6j^6{N-fl5TIDKVmaP-+11qJ$<5C7^ga^Z(R{(z%B`!SUI_pB1Z9l{?P;@z_*t`{
zw2yagjwyA@0;A^3a3EdU2pt<EFy-o)XlU-+;Ca1%Rkw}qm2J}z%n+yRX#tXszIBWs
zg`7tx+ttx=_ucn+p(M8MMHVoCnb)tN)zytd!-)|7^Z$IE$3h_~$^&jJj2~Z1M_t<>
zc%wk$y~m6mBaZA5+<wci#bL~%11LZU0W5JY1t6KoRQ2F}#tZXg44wNO+g?N{oCaP`
zxmn>N-EvH!V%#_ZNvHC)?b~;VQ1c-IQh-8tSA>p#-Gn+6<mK{MQ{z#*{L+hbh^4-4
z4`?md8B1^`LVAPgpKv&Y&W?6$lCUrVGRQ#jGCPbMIfBm{AY4o)&i1XF!~t(0;37s~
zNgQkeM<yf+TOf#(o|%q0;*1|Ue3-1JRnI*GWrbW(W}9u0E}%|rO(l~k5PWj_l!DM4
zGi<M{%xno!+u<;W$cj>0f$tS(zE0|&ot4*%Da7k^M^I2yi23v9iXiw~5>EI$)~#L1
zeh6`zC}uR1H<JBQQd)xfbLS8Uu-$slU_w+31B2VK*)~BV01}b=uU`2ynwwe)2HDU8
z_;r%uSz9|EmIn-K&$(t8ne=NrmOuR%THD%PkW0%r=t8N~Z@i2t?Mp8%bAaHcfKhzU
z8?W!i_Lny!EhE#pFWVd1CaBaE>6Yh9Lv=+3N~FClMNkK9Z_l}Qj%iJ>b>aMCydmJu
zJ@@<(X;K$nPg!0a2-cRAmSWDF*~rh!WB;raEjTapptd#tR#jJG^r+EN2Mq!j&;)6V
z3W}u77l>}$emwW=GAYjZP%an*Xy@6KMnz>6S#<*XNFS~yAfrN-*9Q#s6m2cGXGj4V
zGADNkaC-FUQFrWW_D6v;cI)a8B2X7WW>zMF<V_o2@R*johSZrL^oWroIj%AVK<sF3
zkgT+;1z_xSfn3ekq+arTRe%9gXwZ;8$UsZm39MeVf*D8ICR%eIRY)IHS66ZDnZ=aj
zmco=XXU;%lV*~aI5We%3?F_@Tz;=aM10!5_rqxd+2qnh%8{_$0CtlpL84V4MTn_-Q
z!CWh9YN|0#z{&0|4-nS|j0(zK$A2EcLYNt3WU;@w^svvgWkbXA)=t13Hv~5=^TUAR
zJahUy_C9bKSe|*Ih=5`n7$%e(UI-gJ&p%ID6ALzY&!iy|rTwfmgJ8iVbMX=f@Gc6<
z08%D4kL_jk)R^M`Sh#J#LQmb^{cD&V=DSN^=o;IXyF3rJ@tsY$C0HGAn>)RoZT5Qr
z3rRsGkEkV)t&#USMJALs*BP1&%FxMFaIk(5G;4ZN_Z>1e){r>|1gcF4>o8!U+M92^
zpHZ=L<{aD1i~jOff@MZ@-#S^^fXk*?bfW8@;mH+zY}Mfkc2xR|NOP!J%(nly)d!nZ
z^_-{b9U_abl<RLAFPq;<-cg`q$|4#VSzb=!NNY<A?!4<RoM>!8QGR;B+Ls(26es0)
zf4J5@|4$)2c*wXKlts+eHW@RA4j#nX)hqDc_gzMi1==S^kyxA{!EwzJ=NiGnwonP)
zV*#-J^LnsQO9N$@z2J~S<6^jaCv=?L0;7w<9UFACZGuyDN-L`>>7;q!l>iRx2fDz{
zam{OadLG8X(V&^EhNj8A#cg{1B)|>-3DMzpoP9Ej=$M8qf=HgD0RkS8ZVJ0sR8|sr
zNl#CsvzZo7cQV5fT#0nsP+@`-$Q973etJER31H;1rj&CJhWuq_rW0V`vvo(vwh(a0
z%(V!gfY<8oCKG|-K?~;3hxU2_bO51k#d@Rn_+Xv0vNAAx)(mK$6t#D4K>I;lqTcoO
z_2yc=-@}r?*l&OX{EbGrfMsoMt?2CRf=ysU5dai4o$cQ(=XUD|lur}dy$>Dj+S+RO
zAfFx)&>=S9m9L)NHUThUeU)KES(y{ANdQ7_hKOcAAtMwfGYSqk<2{=@%Pa%f20Fd`
z8*p6eL*~o0`e~*g3`L}`_G2HX%ll@|m<}LhW*Im~di9kuj<h@e6@m9DlP8fm*528{
zamT(4g%~R4jakcliHEibUb$cg*j@lZEP}JO<DGd}LDmyP{owRn7#YsBGBXI)LBU}#
zv7JW>=wqBe?>;tx6}Pp_Jd|T06+&fY1;zIzV;=7zeM;aZ(-|L`<O`!yj)!D_rU0VK
z_j$y1!v$b$*aWC1Pnr<OkFni#1n$@=lW|#IKFZgV1h_b7-8n>N(_8^KRm^#P&jooF
zzHi?Ac>#<aO{P>pZXAM=N+~k5rca+v{jZMBb~lWjYZQSf0_ZN-?X7>tv<sFwtm1Ue
z<v<a7Z99oA{(ttqHP)7-s(-EOea^X$b1%cpfFlG!d0Z!ukf0y%12HB<Q3#KiAPfpV
zf`s_NgfIFJF=&hlkziCHM5ECd1Q7_rfC}<{$ip!+z-1VMATtQV%s3MNGxy%P=j^VZ
zo7HQbRkf>o_u2cLv+v&L_ByGvyQ;gZyQ@}J_4@UCIM5JN&;*25_j=rn51m_C-#9p=
zEXis{$pi*P*;arAFemN=1Aq|a(%@ulC6WK2b9+Q?)`nO(Z*Pr4h<I3He%HXyW3saO
z2}Gr1S?8@vMn&_Sfh7@Sp2|TJUhuXo1=kewsfX<tU&ZHH^AAyO<3rLGXFux75U^r?
zZC04zLxJjJ=HUrM3>@h4%>B`E+3~+)P2oUr36{VYyjFk+W|RfXA0rp=Yi!6nkjqhG
zE%DC3e+PZ#j{i`<SF{=w{pDjst4X3w^R<bI$)g|hLlQ|1gtZ<Gd?e0Jk=2Rm|7kEJ
zs2~n?E)4g1LMoh?<6+3QrAROV2PVw8))k<6yAbCf8n@z_CW@-202^c>RLCY?1^ZX_
zB$^qkR)L8K015aOxB(8ri7f$bm;)J^IhD7Sw<S8?WGv!Y(<aPp&*|G<qi?~b(>RBw
zBM1jtKq4Rj05gl3*XdKn53YSTj<w{u*UuU(Bf>DapQnK+R*!)NFcZzPkVL^`-L6p+
zU;yVq$@|mu@O*1rbaqoC*Nn)_mDu*VZ=+1pqXx{plTNGYX;m>1SMpo|`P@q?Kr@kP
zUr7=$%Y<og6G?D$Lyieyl<H$-ZDwr=WSXCaX%(0#T1*1e4d@$!%&{SZ`E5>6U=!`y
zqyUOJr{I5LPrf&6>y(gpQo^5@OY{L+zisvk=uizWW)`q&V`JMR*J%Ps=fPOq4AN`E
zc9r0WLgWOW=&Zc^38U7=L4`KcKMJkdHwM}U1!>F#Fv@&szaTKR_Kma!Os!OSB6~<g
z|I&)1e)R_Cf?s5as^%7gGI4Pn+d?DhP)NIyyYEcWKx-(fVU3Nj;@~By?J5z2ah}mK
z*<_%6-DF9}gD|XcYu$I(Oe|<_x#br6zz04=CpSsnA8|kc<lqY`OS1S(ys7{e01?{G
zp52}}C;r?-^X3OdTV!2;_a2?)#m`5sUW-By&mFfzl50o-urk$NfPY=DW8<eLHsy6=
zR;XGNS_f(oXx(H`>a^qno1{|Tmo*^~M!-dr`0>nXGTzX{nGi+Q6xv0sAW2QAnIf2&
zBk|NSfi}P+Lh}Vl8+rRDXdPR<Q-Ts)b1xE>Zb|?*@zf{HfjTY#h>lwPqy!j6A6T3B
znQoiGQNYn@grfwodM3uaeURi$zzuGqV7zO5>P^G0EgA(WiWF=gvm_49g1}^9{iTiu
z6thT7Y7zw?(S(6)`FJoB=@jVUZqt^)=``ZUMulbD!^C@^!}i6l_Uq(buPryjiiD#Z
z59N7ty)FViZt|z_J~N;eGZ0+>{cRH?@tm5<#wE<Gc_}dya?`?+3m~9529B-(mJh^j
zYf0_Cxe$HrN;S^hFf}*x1<-Hv0d#A!FfZnx3CK_+uA-Q{a`57k*tBO49pr#DH`3+b
zO&OO>=zmTh|Hn(SYH;8Vtb!ZY#o?<tF=hv)v4rMZZ^}Pi4Rob6I9>Z~eF<v~#0_+E
zi|DR9@1)Ov_7-9$u~q`+nnR8}N}|zdbv@yOPM<za4_>@LcYpgX*<P#Ri_(spP3Q#{
zs1-Bb+2JOG9)ZfiEZwG<_`RwjU==7fzW_x~1~hnGwT4_*&`4|4{W$=VM~&i609H&{
zIAlIe9JnfFk`P#u?PJ&m85od?$bMYm=NH`qhyL+?UR-j`q}3A${2n`=g$EbC%rwn_
z99*Oo%6|-W&9!paPvpeR&`bs?IKCP}MU~=7k%NL)oV=l%Uo5yOEmh5NdR<O$N&&5I
zvM~dS(BoB_4jGv1Ad8iw(27HgDFwQXiZq8Md}GIvzh<#t2gn#gs1q!kH3prq*z@Ld
zPyj&zsY>_>4k*>;-yFnIc?b|-Uydm!JzGP3o`>@Z0R;~LYOcpAkj35La#zpTG0cT#
zSx^7D={f8pgN`C8hK`jI$K-4r<w}@w4l@s+U7Z2&o$f`9m%kqHK0qv7A+;m}`gj1Z
zj*WQAM*(gr@Xod6lbuK-iXKkC9e>|fLwvkJ!E>O2B+$|M^S6r?!rASO6$9>(EkPq%
zVFDm_n26B)I!&?e(A~9i{OdA+1KJ#-5HJBIAiCpNB+hpu#7B+!079&#OzuO=Y6GxP
zOC4EAb&3Srw(HvY9bk_?u^#7wv^wbxsZe6RNYZT+?yX$w2vSCD`FuP0u`|>d+XXCO
z8rYcQt&F9{qkCO&r{$7DsKgK0G?~MCNaOZ{qD;<frDcAk`N{iP2&?<`hBbMv+xJYg
z(!$~>i*8nER>@yTewh+bD(HE^kLSw4E7=*$!TMA`+r4m)M+=)5;9#5ce>ZQG&TF+U
zURYuYOL+NP4!5zbOC<;S8121NP^L9E?<k|%d|D;nOqd|NVrIG=^nUbO99>h@1-x=n
z!j#FN)j=RPJNK!>Ov?Rylsyg{#rzojNE>$rY^qs==8$gCSLfD1jK$uq&^tCTm1yNa
ztbPaahb`2vzAYES+K#SX0xx(DFAkS!Ds_k5&jfT0Ws0S$SkJ5UKpon$16`F`r~?hG
zH>x1MdqKQnI(VE_Jz57Ks0znSt<`~u{T<`m?S6@(2^LL)6d@~*=A=DwxE@hU-ZZcz
z#Ym|AIGENJ$OK?LuE_&s6c-?iLoo|BD1`~lr{rzm=lNIlzHqz2>^OP}+J1~QTzfpQ
zS(DvkL@w!|R|~4UEvl*#r|jp?e_>*;eBESwN73^WlQ94HN}q+WQJ&jB*LdF@cj}A+
z!}{O)AUEN4WvP^prGTnb1B6L|r;uwFa?mJo26AQKl>rjEzd3Fen*-<pvCzc_a|JQ?
zW5e8_14}yEFW&HZ^NNM{Mu#mfysYr&h_?P=-XA2$9<IYoPFaIE2yi7Cn`pBj8^V{d
zZ2~}M`kQNVg5})k=C%roIoJhG`%dm@Uih$|w;4qZ-uDI^SCR-pLD!)Bxd5J7w?ha;
zU6C+97;ft&=VpVFLzMQq@`SnNBw(2W?mz=U)s`bsjeRUEK~r2dI6Tlm>#ylI&_HS>
zvJNyF)GAlTvwMGh9}^5vPIg+X$sMyJO%V->;`!#+!lc)={Mx?USC)fU)+;D{2Vp)S
zmCHgaa)IBpS3-xl1J~G+4R5<en2M2WoB(YAFcV^W4a^Mt3s|2Nm+b_xxZ7urI+xy<
zq?+FSuD8+mzW2Z4;G2oWciF?Qy@t*`=?PSYCaU8={hBP`>9Vq4Ldg0c)BbBXG<C|Z
zC$Q&TfL1}-wX<B)%F68e4(=L%+iy0FxTK6ec+P1d|5H4-c_1(QWz7MgrJGp*C`<<(
zw3?$GfX*v3a~2iXA6fUYV<qkxOSjm4rDaBJRv)Ci(7XeoaI;?{zjrP)&-h>tKY_WN
z@C1E+ZR$)bHy3tcNsF|>957o9%JiTf?I0!g$-D4(gOwz{ieB;t`<^Rg)5*yuccE47
z>o(Is0}V9LK*w(JL=r|f&<IQpM7WtjdCAQ83J8cQ`o$){U*ixBT|JMpNXRMh514Hx
zRjG4x2O3;ciD$;x=(Uw+X1R9&-B<<B5a$qz{oHkQDg1Oxi(YKNljI{bkFf$-lGliD
z=A1ne3cv~kIR;rYLW{r$)9mUMF3_sIVWHcFZ(OMNNNiLUT39BuxgV229JD|5T>s+c
z4zP*5$lcZiZ?owJo#oHUu0hdx-NCB`ts=TR6+J?K9FM6Qjp*FDbJCaTzN)GudYzY-
z&ji4A<WiqyG0Nlk-V$|;6!-N^K>0i|5l%4!XN>ch7pSnO!@Ll_gV$H!#?kXmE%GxL
z8du46n4Qa&k13>@Aj)@Y+DYtlX%Jp^jY3zEl{%(`>FGRq9#}#=q1;EDq>gK&1q{Ry
zOT(c9#Nw8b#+qVrr_NdZqY<rbL+A#l(A8IHiDC!OM?cI#mU7#H6hi(aaPTU>F9UFT
zpTU0tH9_-f7o_HdIe51i4gz#&;06y|048S3AzSO2+4-MqA~ulNf*>S478LM9K0&Yr
zWZ*~~eOyNKCz*nKsEIi7w-uZ7iG7@ay>*TJe9Pp^Ndy)&H}41I77psH0BJDI??c2Z
zFt3IJ7dXozl=C|u+<Fc?|Gj{sqppWS<vO@9fe)-9QkpBL4G#Tpc^x}C&IyqSK?N7T
zcDb+<kwyF!?b4{G^PRA_%L-SK)fUfuKR{u)NuDz~U`3t)$I23b*9M2^nBZWedqDjM
z!V<okfks5DXFfC#%GDIJpn|9ZyoY6XP>P8Jg!08a#z~TWl$a1In3a^rI=X{+qySg!
zcT8N815=)9<x5V1i3~KbZJ+fySBoKD&~OQ$nSv*!W`*E6l)OMkMS+>NHn)gF`791z
zU3LE0TLttm1y(TkMS1P^apl5v?yQ}7N^1~o{7Fm>Y^j$l*FuDrFc+YeU!PjRtL0J-
zSm6+svbY3463ni@iAC)A`=b?heh2}|?b2aVIoDf&Q%>t;ZUyL|ktuE74)Agz&ioLT
z=IgS%9{>U1wF+9*6=9LDs4&Q(<UYCI5Ts!NrVuJga2_f8KGkjnvghmIwYWdzVxWNr
z8fb_tH_*cEI?zA^jRsxmB|E@m^!ma=zo3+v1;Txem=L2W638^EYIWe=Y-5rPh@#Zl
zJEiqTGO~IIXuX$tj6HZpXk!$(ljTjINRs_A8`!1$L`zCf<GGh$6gM0lxbo<1T3!;C
zW5@1&Qn%rsG2^eRjewHpDwx6usF#ed64TZICKwxVYA$Ho6>)H$;}D!TiIZrVaL~)N
zvlP5?2l%;(Am`7rqJ9`yQtNnFVxKejD)x41iOvCfBb|p^H62iXh{(?AzmnryOo?{Y
z^qt#fSj%IiV8AKh_zgm)g;m~j$zSfc-H!v(#s<~8pC~NDhex+BHl}P$wh?UHIhDtQ
zOlxZ)fdi(P#)|VXh^-W`Rcn1;vvBBdi31@NEjswqDXl-2L<22FpL-zoG$#!-&_E-O
zxm^uXU`3^Z+!X$5{zMQDzK9~|eZ~UB>UtEO`l4>~Lo|&mEdZiBVvhz~L4hmM6q|BN
zw5$}|LNuRO(H*zPq+UyIB4+&J5|rmP%iYhV39db5$;_)9AW#v`%|QYM75201xGd%3
z4cOYf*C{W1`#N}K6?3U|u+9K5j<MFNfj|I!o0u4-(O9lk#jPf3xgRR!zu>j7@~R?O
zE*MLd!TnmP32a4`0t;Gq2q|P$T(2Lz8u+WTX#j%tM;2a!eSE`Do)^5*O!3g@($b0`
zrrC25d$G@bk%<E)iT(QWOa_+ev7wpUIbB;o6gd)uGw1J|^1hI1Z=%#r)$72TY{oOD
zNA$0Uha?CT1uQ9~W3RG%Eyq((z`3Y3)I@bMF0n7}_H_i@uo<*J^lzO7E?{u?v<!Es
zgM;br37%ndxocXxsXA<(CU9J+Z3n^;uj&JZw!-K>1iERUfd(4+!dbd7@{AKNfW!~V
zwCJsZ9YD+}U!ctoRbEj7Dn$dZ5Iy3c<ZA=BEGc*es-pu_(e@Dx6tineA}9}FhPn&T
z)eMEXTlU(~{pDQtg;uLW5J3Ti#LGy<oHK2Yz=+HnLtNVkxJ;!Vnr>klt058L@HEmm
zue0DM0iOJL-S(3*wgIOotAkfA=z0`0$y&rfE8`@uzZ9B!gYq;vz%><QlR^nzt&Kne
zP5p2dFAq#>^$Ela&F>CgIVeHV`6^{YkJg7`d`4jQm)V>lrJj)7BOHmzL&h^C!(D3$
zShv~{3B-IH`EIs4T40zs_oN7l?*EN>K~oDRWFH^$k09b!F+|yxK42T?=+@TK{aTA6
z8<=bCu&cv*JFb-N$nfa{yf6P*gLe(2(N3=*`8?;dTk^ZMG>q|q>?0L{z@T0lXrRG_
zkckca&=q=JjG?h)Uw;1ab&+$sUT-nOMIl;EImk=|%~T8^fHc`Y)10a$Z`xNiqJdNj
zSk<nrrFEIs%DArS!i5Lv;>8Oz-rc3qXhfS^C+OtKQ{pHbdeI_Oe2GtZ`@ti(DY;{I
z2N@DzfScqdB4&P7IPA9n=Cfox-ldI=K%+1s^oiKOY%~RI!2r5V2eDql#qREo2zAv+
z`f`%rr9dQoyBabI3lHz^T&9g`L|j!pjm#;C*ZuC>6;qBYLOoW#*_7+W7-?ts`}vAO
z7#UBNA^1guD%a)^(qjUJ+y`9nI^>uP<mH~Jmgnkw9CBy!)ZA5%$I?z!wJ}K}in`~p
z;Va?K5M&+#K;!Y4CL{q1CM0<PvcL1%u94@9h}K<ILGHhu#ZZDkQyQ5_fX+Hbt+P_?
zrbv1iMT#B;a3(C12Z{iKl*I^-Jeg3+H2@VL6T7BD;g7Wy*l&pe0c|o^1~}k%dgy=W
zcK^?vD1s;UBd5m_=XD_CUv%+bVNM7sg9DY_lYfs1E!!e3+gG)0>kYfYkBQECZ>6ZT
znmDp{;1!G@%rJlM0}ZsMzAo4Utq`v!Qa;c?497vRG8$N91QP)ddyyW97r+@%<^h;S
zRH0Rb2tsWR*+DTveyNr-8qlh4%4+EG1d55~mI<Ht-*+EfzI>UUc<x4e;*)NqYp!`X
z{rCO%(bvEBRr=~z&Wj-Vh)3Sg5oRAQAEw2eZnQbi&9zNf<$QO+?5S{k0^JOOfJ%Uw
z&6Ar6@WeBst-u8!%+gc|t-?;MYuX*}QZ?F?{FNkN|5)?Zi4)2vwcPiK6DI}0iFLgq
z0v3eNPM$j5+?OD>vq55>BVJ7)o)T;!Ak5~*mVmi6fp}EW>8&jTgw<75aDm1ERs^D8
zfUE7-JZaQS$-|$GE9FarGh7_EKX7avNZo`bC`>r$aOvU&0kuz`IYYa<HI3`oDO??Z
zls`|XS#)gpcWX<2>$;Zw=H{m5J3n-QNTXEcb#H0ih_QdNM!tzDa0{?Hw<y-JydMw+
z*g3J4kE8i(lDdp9qR*jlGnwu<u%H_3z%8=z;93<d#}ot<u^4sj>0zpTJ?QP%x~>K6
z+t}QoiYtAtIo$3WnAbe3kF~VZBNJ7!q9m!$ua0#FtgR2Y><4Nmw6@E5cT78zHTdMI
zQ!)=8H~fmQQo>sQg2Ah+g@wfG2usjbTP3H~jJ7Fy^=Y7ikSZ?&vUaT$4Kxr|R~dOk
zSj5vVYl^EL($rM{55LabG5e95>Hsc)!TdDTFo8(~uR7KgF-egKh?43UDOy65{gX0}
zDj40YkU*0E&VSuS=Wcv5{m$>bj-K{oPcI@;eenyo&}&}(D*DnFZlfQ#;ZYO<t8mZm
z^8=jWJ)DXQsktCDxr8O<x<Meeuir@`Lgr|f6Ci+SXXg@Kcm1R2c|ZSR`uImaNMF0-
zb~?3vrcf<NoerbmWZwd~Ymi8rjy5(YLdG^dG!ZuHdiTnLSa5-w%U}T};EO=?q8I%t
zef5qn(}(}%X1ey;N6<@N`U?8;mu{txefa%!di!BlT#k6~!h`hK$3322`pd7Rcf9Sd
z=_|M2Ho32}hL8HVn%@zo`(1;}zZWiCm;km<rkh^+>-5&Q{P~2>|D7H;x&E)b{5R>N
zANoi7+-E;QXU{yWxlRb`em!Uft~n@w%KHv>r3jmu3$kxZO>NjL+x9-@S}ZW<@WReq
zFI~JuH{SSE`l)CBv}i8<+vh(^pZ@eG=+p#oJQQ-xD*>x+ddbV^_S?_XM?U;P0b5`A
z!kg%U2OgmJyyu+~QSLd<c|Kit-F5WVxBiW2VRZ@pG2xe;-5t5#7vJ<Uy7ksu=rjNN
zN!pgVf(!7b0Eht(0iPUj>Cz>-VKOiN!i#>1{`sG7rZ0W*HUS|TVmHOnTt-NMOeWt}
z5FU1p@9gFP_xzUYEFl3>tsZbu57^BlvydJ*ymc<dC>nIz+uQQNWIP`07>YixV?W#r
zwR@~uLcj;r@bz_uIVLUHNe-sL^Zh=)Tv68<XNDOi@&E*Y%+aFheC@T@P3ENsXgqG_
z>|;f%<j9`c`-s=o#E(+HcWY@)R%%7FBqOF4u$_AbRp07&M4;b51M$AgSqpI$g`^y4
z2vN#C3k}cwdNhharrr+jQ;{wm3;Sz1AJG>dhYo@+&R_>26wxSDs4>@s(7*7z;0Xh2
zmgdQmiE`5%jS>h2prV0NCTwWAwLpYMAcW;Xv96^YQrH-_-2Lru(a%2n1@!tq{Y%=}
z*`?S1!SB*XKlUMd@PYqN+o!haC!X<>^xOaMHT3THeS&`D6~9RDzxiGCn8!ReXEgUs
zRj9){NEH&E4HkvR-&b_QeZg3A%^VI6iv@Pm#7MOWrp$qMcgG?OlyVT~W}KXdueT2&
z==s!laRPe$@Q<9MXFdD*^xl7XJAM0G-xQ6ZC6JD|(s6z%6Qf|W%ilN4+dM(UK>&gs
zF%jJme`q`7F`aJVMK3DH3$tB^ll(&b?{&v0f*Xe*psVy_Gt(6Jz#U^5`8??DrF_Y7
zC+syMjg=S1b!@I*L%<UQi9^M*%}~ed%5%^<65z@C72F8cdMsyVPOuZE$TYq}%VZuq
zoQf~PL%h&>b@}o`bp0c4plANf&(UqS-8uoTK1Ef<q6HPg;YYr_yt6~qXhd}#1>~5R
zztU)9gF>iej8_$GUJ)Q<V`G#K+mZ~B2gy7)lDccDTj~L*fUR?L>HODy9Z5ZxCv}Fv
za&O~$tb7ME`KHKSIynu0Rh(;CAs4osZ=C#aXBEG1W{2%L0nj?kr5t<l|9!TC3m6lM
ziTV?t^rQ6L=e~g6_0G4`U3c9%0TfTE89M}gvYv48ZfcD%KZwEF7+P-Ty&ww4ALQ#y
zIv$yO#E>xcu$JRI@+_choJRnbJ7m`7FvxFoa8Sp1?WTncy8r(BChPF?=+|EUN_zEg
zy^6kh=Qk8s&7w!j_L@=g3~5V(=P;Fvpm0Eo0XF|@!Nzc>7L)fEdh6UL`Fag3CM^Ic
z_c9+z^kK%)YK%J%u#Nftk2Xl<k!S#3St;kn$86>C>T_;}Ob0zCJF*pFwVjB=IyKU2
zQ@4351I6G1VZA|%&dBdr8;G%=u!QSlb^4aOqhlX#_?_5NX_yUQY1u%FFdY|fJF~)(
zchuDX@@2l45Y_2zgrq3@-0?aAgs8w&?M~bgYX!OVTq$ezLsAqW;of_`OHcdprwe#>
z_jm55XFuy1bjR&qr$;~P8rs+#(Y?F7^r=sNhW_d=-b^3=)UEWUKYI(^``z!*m(Slu
z*Ixffs>d+_ph&I(1PXx*O|qTc%aYmJI;nnQ)Kn0;+7<v20*ORm^%wpbbn@g$y6@h5
z=}m9=V`<$pr?*uwMB%6#Qx1jE0!pF=)%BRdh;ywDCNUkHB+2gX?26y8jy^O~B7I(_
z1xYpPtgcZnpXJvM!gH~P)HAtvY1iGIok@GWp5i2bX8UXo=7QAhbZkD%q)!i<VvGtP
zu(S~|8we`^o5N2oFh-4_8A7ERP&3We6qFiE{Z$yLP|5OpdixCB^`GCMKYZ=)Puk-m
zojH3}{VFv8Fjy+pF*T+UZwQD*3akg+Zz3&I)$nt0P)i$=!0g&tE&VhaRr|I(2HN@>
z(k3B<nZ9{y2yaUpRKfWYGp@(fXsbQtDNmLB+yCxw>Aw5!p~pY|33UDS*ZZ8L_YwjN
zpAvVj({_%es;aa<$xH($*Skn>e$yKSWZXV;h90_jN$RdOSjF~a%)jsE_X-b8_*tGM
z0>zjKAxx5iiA~)PPU?Q+8~;S+%?U{0{bcQ<^QDhl<RAtdK!na|_uO+g{n6`RN4vWZ
zsYV(Iu}%YF$Xqd|NLBDL9F&Kl{9;<3L4X`gfuHSK3m_z>!J!#TX<M+1FCaM2u+Ar1
zC!&ubKi~T*tG|D~a(;9YfVvi6W&$J%FP0z?Ss;?8e@CG$x~)g6jj>q+nbjn*#L3CD
zvWg%H833Sx9>Q#2aAKw3v|&WlGA<qTyVtX3?%mnZHmq|0eLCMsTQz(lb<aPSn$Nh6
z95Ct!!HQ!`<rbZ*i8{3%y>6e|nOTlcg`Al9i>nlPUOGiuI~oWEVi(0$-bVxRvZ6{1
zbR1iHph4M+uiPjJ)6TSM-Gi|JOF=Q2TMU<YstBGsiMtR^7mEImz4HK%s@mHBn$V=z
zP!ehhHPjLi5Gm4?uAqP@U@h3LdasJ8s8_Fk>a`#sV8eofiXuwyy(>ts(t8q02qgLc
z&ikBmW>R<rz4#Z+<~h$yX3p%h&)RG6VZHONcew)VK3JxJ+GSsPpo|}kdW<YFu5|Dk
zhkyWTK$X8L9z#+H104M6^hEG*Mgh~Kj}O&#+qG$I`*!cJMh&AavSfsXhlg84L<y^3
zznYyo5o^7Bb<%nFKm3IHL*!jz?<Y>2P(X9^=n*?~_@G4KxstSn00RUp#l{|orIgbO
z6)qz755cck6G4&eFpc&2(W5ZGV(ki2DRSq{FV;s~Y%GC-SUF}2Km;nee+N8(NI~;2
zJGKJIBm%x=ckIOH74)VN=@oZIwoFJkZOICf)E9pz*vS(oWnEZRP9NM~yx1QEW3nyj
zLZniiGIN9agwv;#${7*_$u4M_5ZGS9kwdoTwTt=%o%0mzU{6221g$1rpW{62%Yep~
z!28*`E*e6zGkv5A)T9@N{>;v8n=CHwDE7X>W2k5zPM$geqa*=MpPcF=k>{kf=)K>s
zZKU8v3_t9uV4wL?|EIVvbCEi@3{xde<|R)0O9b4OJ9l1pZeqQ;@mW>Op#nK<Ctt!>
zm4-+V1#l5(X8;&Xz9UT~ox6VRDjpN{H^7u9%1*#}j_aPXZ1{5Cy!jNM%9i+!fI)#k
zVG76-&zzMgyt%%le{Men>hgPmUM}+szv6ZI2y>O)PBU)i&Aa#Wi7)v+gwHXy6IvsH
zGFmf$0eTJAl57#obqwQt$6hBDMCW2&u?K#1O83Lw;j(?w9|Aq-?-c#Ao@LKM1q)i$
z%2h0!^t~|G=T5U00uHdmd{RU~OvS|03HrQne;v9vjrkOxVJ-zeGj7>KEJ}&snHW_&
zVWFIeWA9+RAvV>(uE1`vR&39nUHB-BITOe#e`imUomewEo4)lrHqpMJzS%3dciCUf
zu#eXBX%!Ig)-8PrPzVZo`voxk$E+@3v~lA)`Cks!7J!QEjm`90JpP^ykTQGL>|Eod
z{6CrdP6>D#hU(9^J68$SKs@grLI3{!vX<mu_<+_0@27Gjts{WIQwcEEuwT|}IRxgN
zK9eY)!5_44T*N}Q#&1*gkNxyFev}RjI+Ku~_snE_fB#J6T(<~__S{p!{Zr5VJzBn@
zKD0;R8=5O`&kF>ZiyFsSY>S_1U9#U9ov44nAiW=!T8A;M?Luwnr&$Ap>bb_03bs=B
zI`<6r;yhiGzm;0c9I^*!@A3Oq2iP+%j(vym=jMkM?84li(EOYGU50<@oOo<SGd<^U
z0jXbOkaK>l><AdERNHv|=J0JyKeE5}UG`DNoc2c{U5D4@r<~_~&&uw{jvdij$iw(^
z=gzJ5e*E|`?5^{CT{GrQkMyDMJI>cS;#_<_LFdIDKdv>#j|J-g*wLfvkLQ1+Si6qD
zNb}_(F6S1w0B9v8;6HNwHVSfP3j~kA9|5goT3bo(nZEibNoP*E=z}>-fBbK+|M!{#
z3!LY^!!AU`J;(s!;V&ZM?rU^iVj6rXRmf-fTzGnCX!RwJWtA=^i08g=yQ`7nKj+mX
zPut34JSB%Pvz#Ls4C&ytRLm<KrvFIRZP3VS)U0d6hyB-f@7!TEYgVT(0buTs)U#Ep
zRLOSl+Gg*K9%)soIs)&71WMgA=rJ)z20#7}Ytyd1{qu>TVk10w-$2{7bE|^5n{U0{
zZXI}!6)0FpK@0(+efP}-d-t9H3Y5r?SUl(HKjE$0c0`Y8pi-5vje_FoQzzMiIWv{+
zhUl-KP9QLaIiM*(3@=*LI$YZw-K3uYvbI~E{Q0d#%Xaq5uI;vE%X)&`T;??bQ?zr6
zTCF;*ZS|^UcI5COK!`KCucpnevEn5nEzAYTwgd9aoi$a#a=G%AtX+q0e$d;Fl#eS2
zVpgwQ3M*}m%N#jjHEY$g#!XvD?3zYkcN(po*=XaeQo0QHa(=phFc?%2+Nkl>R;O-^
zg%MQKn75;70)1~gwr{cg`3fjtWoG^NN|!Eg*R<(q`M4LF0Jiyar=#bz&}aM5uf}@E
zJr6LiJ8bPwD;@i|!D_5@(3-Vq>)Y%!z|!0~(`@DPMJB*0n*hS!vVe4L0vznq(pt1?
z$DHO+UxyAJuyLP`vE%ranlknjFv_NN>tBiXQhRBSX>L+du;)sfGU+P;TZnRN{B1jQ
zwf*~c+meNItb4D1R<m|J%PQLiY{!l*_Vt8M2*{4ANC5#mb6UY}>NCI=FPvrDw{NB&
zhmB^sCZLtxD_y3X1q5Iw*^1?h(F~hn*^?a5C@1rD#%k87Z-omLA+2t<mj=b5{Q*EV
z37=}Iz<l}Ag&GU<V2!S9YPD+Dmyd8i3iRiay1Rv<2?U9uAXccY^*Z+{fV5srBdZ64
zGCMW|yb+MLdi4rhvS@+!0#D@pbYh|c{RW)hw8>S{aPtD+1@mUxrj6@0uNeiAr?5kX
zij}NOw;Oc7S@5@;`}G$9Hh<nMTfc5Cx@F~<%QjZDSaDC(9;W6#n?CIaI}BJ2)6Gxw
zIz}*Cv}iGF+peQ@qs(PIp>>6i&D1!#AIrgU#~t_B?mfRS&udcIK;Sd>?9ky_v9lJ;
zp9^*vaKLB$zJRrC(b`ItF3sBT*6<daF=MKNdB8%g!8`A|4}aLEd&i#@L|3U=%^Ejp
z1|w0LSORgEE?LB!FSQibxtK>>+hywb4A@h!_rk-ATGy`E+o}~y*>5&mUdGX-+x50$
z*%J1S!|1vVv=Wh#`YiWobC~Pp%a>@bv*KG~f(pD#&D0gIk0Y%H7IqeB!6UZp06VUx
z_a^td)qa>V$>P{w^GQQapt0sVDyp(wb4@$hjiw(SzW!>wfTFf-+uQv4bF>DrKVa9%
zkp64<{cppbQ+}8%pY_t*054brh4F)H_yMGpY|m%0#U}h<iXCQ;t;n@Ib?zqck!II*
z>a4k5fz8}G*1BwUO<U5`OZmXc@nc8vjajy9_iol?UiuYKB`~O2v*xVNGX8ow3Lvs(
z^(wue4cmsvAH~+p5c~mL!yk)UL_|a=AOLu}i+$plWfwD4a{~)7L4F^@Ix1MGkasdZ
zve159z0z8?Zf85N{pwXKEGzar$6j}ov9s2#!*yM-xtOjhnDXA}5w?uaWy2q9*KJ^r
zJocnO9hyD-$Un7qzxwhETfAt#<<DQ>yx`^0BS)-R^On}T&n<k%7L<z|*tgF<e1DYv
z$oI{icMp<1Sm#>D18%#U?~f^3x4E#7+q5S~*QjO9Sv%uD|3p5EZB$6%uDkEo-od^h
zKRFHv_4#LGZO*J2mM?#PofjEd(mHaFV?P*UHEPth0k_`;&|O$SBKEL%hrb1Ayxlr=
z?O`|c>SOu&9Cp@zHD=Us{m8|BD?iO_nG}^EGngX~a-_<3OGz6KT~y0#m#_*zCToS`
z|69uhtx_&Q+@Fp+bNN&80`}`w22=j0;}@pzn^#HL{{+AM^ZfGkyRCZhCUgOmK!)S-
zkMp)rP|DXi3HGd@*K`3Ni1Pj=1uGJIDS-mCOwT=lDk$<UT`d3bG_mw1!OU@Mc6BRV
zcj8y$ta#DF`n-O94RJ6|SKt;AS;B@q`H<awQ&+$grDNDtd_JmjH3E^Y_VKvM7G1NR
z?caZZKr&vz(m($BwEb)F3$}9Q3i}tj9{+goUi)U^SJtafe|z$o7cJS<w>bvz((U>_
z_TXbr!(!NE&p-Q=z4ZLEwu(TcOOM`mUDuv=hG5OJU4TPO84j0)AU0Q-aupPK5!~ut
z%M*C#CTI}*!U8_CA<@;>Da-kQNw6W}2}r{2hMR7cP86chHtg;HqH*;l!BIu)%Gh8u
zDfr&HZJQk=0HFc89I{QDHxs1j*J$ZXwYa8(HE-2kufI2Dq`m*%DBHMclQnPI-mYog
zQDga)^bn0N44ZfD(Z}jFXl#p@EVfZ2huJ3|e?V{<Z(Y0hwmNkhYTTYK7QrL|NFD2T
zLti_5^q9TN`NQ6N%@zV?T+_Cb<{H+ApWeYiKv|9ZF5-<zjJ0+EKyBK0wauG0tB=v|
zzGIts-j>%oUU$8F?z!~K?gCi+0F?sfuIti^Yjm+COO}v!^^(2KIQQ+_Z+G7Fs8y?0
zL)S11!=?g~2+-PCr*1ddh7B8S_}g#T>#zO?A@8pMAY-g&-+{6f!J_O|A*za%Egxk)
zdk?V6)oR%{-+X2Nef?$4MS+6hHt3-z369GOn1Mwo#zLhk)tTSi{GBWy2(|!40g3|f
zJ#1OC=d>{Zx39hWlKnu?-XNxl_3GVU{;#TGiDw0PmM1s|SaR*)3v^1$sT|{ph$!i@
zA<hY4Y<Oien>TNs4S(lN8$D`-?cKW<0Jf`Dtro3&KF?mFdBcYIQyXgnNV<I4G8;K!
zn7uRXO`9`!jsUHet=bCAA{AEYxY$N(w0ZMZ1hqfesCP#&x5I7sFT1&B7po7D4H%OC
zHz5~{ij9r4EnBw$Bpla$?FLBDIyiVxV8xAnZdK~!Cu7HwmimT$^wImI24%-i{j5OY
zB4U@(k%Huk6)Ri6TW+)Lth3L*_{`p7KEMC|JEbS~ys?jhWbRL_6asDm8i0QptdTP+
zC{em}S%G<g*aE}*_U#W4kl#N3c&xqg=6~(WFUMPCsnXW##=Z*1nOp4*jKlJA9=;~F
zNS%5O0BWwa_3Jm-JHy}Bv3k{NyQ*0W_PG|^!|70sH4nV<(p}|)l`2;ebCY?Nua~b7
zB>=V0&He2VKm)eXv17+h&2?kI>G;@KH!utM^BwS6x1sFZ<W%B0+_NuqU%h%Q#N&Uk
zVc2rQgfFZFzSghbKvJpm3do^r?GKF_HL)&$Y<u?ZVLgn-@7}co?AP6U^aOOMgP&I9
zJ{;gBNoxt9p8jvK=;}4q|J$T=P8k0MzFdkq90+)&{xv_Ok^<5V5a>Pj!w>DvH(mpP
znPBDV^G0mXzAT3AHvHxgU=|JkIV7+ThK}YOP{{i9=_hbw+_-TzY}i}&-h1y^Y+Sr`
z>e8KcTUzWL)|r5>PMy12v0}vl;J&ocqep2^VEyvLMJtKK!=MZ;NtuduMblc0jEod`
zwPE8%`)<;AHhJ=7bh&m>%%Kbg0t$)cWiHT_2YWUK00xw?sXzQ+AAj_r&6+g}z`vn2
zxvGWs9sFIuIE*Z<sZM~HJ(;78?4ken@=NyWD=*;-hxu-N5<tGK7{>UE0JGTRv94VX
z>u(r*=VQFe_u^Pj*Y~{1?z{gVvg>n0pSI_o8Nxoffgh8e#y;JxdUS2}rwD;g_$F(;
zp?;`INWG>6;1&rlruRw76+;XLoIU>Jv;3HGjeYsm1bgARXLM}gyX}s<2C<K|6Y#|R
zt7t(je7!5aG~o8T0Yc~7GtUgx-d4L#J!yMg4{+7**4wn+pL*(X=61Bz5qLLPzNURY
zvt5u*EbT9!GMA<<sdOk6@|-uENy$vty6E^#`hAy9|0<K`mRg%NGYQf%7vN<I3<mz!
z1G#ukTUPUH6nQk<i?wNHQ-B(*{g%F>)Ne_Dlw4Jcj-WnMO7QTstaOffOe>v7`iHMO
z!c$iRi|3)NE1j>tqzMG;0OmwRT`QIp0aE<vBa{gi6zS%5rO8A_6xVYPjF5&_y%^XI
z<?PM>{-3=t^huKjRi2y#(d}Sf-D}SeeafDBYN!<p7lVOcV&ApRo7daZ&%R`nzx~P<
z%$*@1ssA1K*(AV*2k#wVWlEP7dt?&T#vXj+3I5~T+t$NyIsmgKzw;}zFS=#EIIjXs
zx5^k}P=F`RnRC(y3zFXSPpmC3h*2<HKc+FDTfD|=Dd$M_xB_O?5?i-!js5G1XRPT}
zt!(1gpWE!&GXan4Tjk1C2zb8M`_-#ex7@j|u&UK-iP84yCm+F3_*SV_TuW?=)@?cx
z4ED7H*z6~&Iuc}`&$kq$wQAh~(6AH%&x_I=D_F3AgrcWU``!lLc8@j3zUc12aM>?b
z4?&55sue4i*|0ZXwLHuxY!etDi(pu-vD;y@0M^+04L`XIFI50jfQH`)T&Pv20c?Oq
z1fXLi)?cVlK`}$7P5n**_s#tV05t8P&jq^PMOE_&m_W_iTmw+f-Uk%=cH-v>TJbZR
z1uNi&o_zo@ZgvB-a|(<qRH$q%+gyw7$J?mkZ&-MdBJ!iz)4#WETQ}Lm_(!Fx(Y6XU
z3y~$k-+n-Y`q=D8iVpPSKAqGW2UIvE#?ULTy<^?4?`tE5y@G!v$PP5w!2)7V@%mYU
z;I=kz&Md&5VPe@4Fx&Dai}Ay?_VA<svW5h*b7oGH0}9l`&j5>*&W3%xyd1qo@av}7
z#0!+ERHd4|KjvMVKK%zP4r>Wk8f=E?1f4@*Azmw{0)44kTUt6N!Lfka8nx=$M<2dt
zQ>c1J5HADIojY4hmm6-l(boL9TK>WP!2oGuRk-FzK&yGMoC;%eV;wKx{QkGyX;(LI
zAy8xg{=H(ggtlA&0lRnqVqXE~_8>Tg?E*OTp+JXnJb&P!M{V!Ez4r8wCzMW^3%`q7
z69;I$++Ke9b!*tLiG2%84x@;P)s=vL!^REv%F8c`a0K&<YKBVyi&oi_gNIm)=B)r7
zzZByQfKYZ|f5R48Qmqlahh4F|s~;4wn1)yC{AZqiQofU$zE`eXW@}chv}cCCASTS@
z?<QI{H+2*ZJNAJyV&F6bsG2ipwm_f~#fxiqpEG-g_33*H)ebw^CdRxU-_HR+<NZjW
zz1mH?_0m59vDt&qVt1vz5!BZKc>WN^$|nM5SZg+G=5!nK%=6ZgYL08xtmNE8`Ink6
zYMiV94X{2aG8hD4)Hk4{m|ssn^(3I!R<X}m|M>Y_dzSm{(4muk_UTyZ-$epC0mi{Z
zn{H$9z5My|%Vx9iyX*0n&Yio+Pf3S!`%kcIuj`~#@*zW<{<rg)d}5=`qyM4w-@e0j
z_8DM5b0ynSA<~9C^@Q$`v}9Y#y#5HYYRJ>i!t7}U`1QHX1n{X}zk&A8Z@>9k%&V%^
zs=-9dX{}ndwsQcqgP(jte$E&Lv@Bk{z@FoJO`0^d@$`YM#qxo@W-mNHRIDoiG~2m-
zJA2)a_RzzR0_N9*8MV~cICN{V`1a#oH6Pp`^FD`h{%A#uge$#w;>3y8v}seTTemI%
zV;ugKpwCyU9!>iDAs9pN3Lwq~8*3HzUX8EcareDS%Z`nUm0!fi#S4sX0nq%x`(yab
z2mnQ~T<wc-pW5K3p98SJU+lm&FqFoA^nu+1xbwu|rv<pL|9Kr1KdTBv%ZQb9JoXsl
zsUbGgIDG5nm!21B$DG<k7<D~w>SK=qlIdKSWbQqCRcX_*I{g%Snx9J8x8DG<D{t+0
z6BSxlSwR?Hj9(gfqu%?N_XmpE3!~LeF(&|CV$VJJz`Zt?wNn6p+_!(f_J_fPpMgai
zWB1>CC+lja72>|WM8tpNhV}N+%dY~w$Eez9VF18Cy!o`AKYQ%+cWjb;aKWpLmD+jh
zuN!P<w)9otgRfr}>Aio6mXdZ|UAjF}%lh{cD+7PPz8m=c!%F#s!K=V!{@s%GcTa5C
zpA{KSx%8h(U!gGlYr(XiU)|I=E1i6n|9(m;fnJx5l_o_n$$j*JDuGun5azw_o?}7X
z7QiRz8x<=N0SjXn;Lj<`;Reh8xV=YT_eJ8ZM)MgsFnVCBgo~x~_~S#YdX)%)1*GIz
zNkFZgJ9h$vj0fO}umS`>1n~s9y9HX&0BA~^(ooR5B2@$-`Clv_flT>wWl2rQ$9ty;
zxM#rfsw!rH$9D|l_-)nIeBN8yR15{zq!DrbT#UVh04&U9+qUnt8Plgq*M@+{YSpaa
zr?>Ek-2zI*z-}-#uCcWMCv!+SY#38tsYtx6R2<Uyl!nvvs+P8O%SO#XSb8yJ1!v);
zSXGOzjY##^wtedcm>P||v^_w>1EhG2B|xi98eVgy#3d#rTGOi)yxaJ3A6rz#@~{db
z&0MXs<ttX&)G0rRu>hEtuCxS9B-kr?VTfI;fO0y3RsH()VW?>QVtUP*KAF_WIt1Mv
zY}1CduCB_33-A)~iG=|}O#sG>X_G9bL4C{V+K%8C#@iQSkyXb|xVQsA;u{6TPFl8P
z0YPgtfe%bU{4cz4LEA-2AWiJKGZYCx2g(~0>4+a%uAJGKuV_<dR+cb=!u2*15bQCk
zYF2?&vT*(^V-kW|1v)VxW(i=MeU6>Wmn&ltB}&TY07`7d$`u4!(*S5&lbW+asgI)I
zO5iCYjU6vIQtF=%5GBBNtAL-E#D@Sc#A=#}pV5)ngkITyOJ9LepwD&y1^fujx`y~}
z9s>U)%UdvyfDD>mJF)eI0z!ZbQdk$*QrLKn8Z}Z19Sy*0pUnh>t696Y&fBwRcSgkk
z0F4VU_cayl(_j`=0AM&N0D-{OX3v@_u(M)RMfn%L0c&p)>wkylOB!Kz#;&@mxzPac
zMgbBPgXL0IcH(@^&AhpD=p)M2OG>_Aes@4XVWQH@5)w{n?UrNS&>WHpw{P1HgJ`mw
zeijz0YNU1O`iz41NSLOiOlz-;h>Q>bR=RW<kNoWKw`k}2;@$jV0S=nRO{ZeTay@Li
z2LSj7>{rVQuzzqC0RCoMxL~ec%a^a9?Zxi+KxlPCjZ@c3E2!=65u|GZa8$QX0jT!w
z`vvf>p|?K+;;gmz-yd!F-S>c%V(gnYZ4___3kM*0g4L{1gZVBjE5IrhkXo-^eJfeA
zq^DDb&qvUIG+_M48edFI3_!WY6zqS{14^%5zkVI}kxz`HT<qT^BO=Af;avQ22cY{@
z_Al+9RwKGPti4E$vm}p9wf0E?$c$(v09$s>tyQa$U*&HDX`WkQ0M-Tg;x(<qT<p_;
zmjdOZoqd56bw0<s*nv+wKZ=w$`37T7U6kMV8?mqWj-v0aq}DbOV8(Qk{(2A_{seoh
zJa#T-8`l49B}$YK<8AuXDOQxVQnq|qfvBfXN7<r93t79<>{?PH114aT?}e<eOs@r?
z*<hc4`Vo77HTI*Nj_w&gvCrOo{r^~(SHq5NuQbc5l`FHp1m3vwa1MLvJ2Sngx~oyu
zy+<zrY9mLy4Io&_3b|>G0P1{4e5U=nefy3<z>4F-s2S1}6FYYnw%q;8PR+k7LjdTy
z#+EK#z-tY)pB+AY(6=k;qNGYM()swK6$cF7#{JQ3HhrxD>}%9WEH8ejDou+24r$Mo
zDpNM~eP*`I7Pz=92?1TdNe(4bocZ#BZo@KR-9HP09=K%AsF%Y2Br}|H3AO&jtxrWt
zy0kYCcA3{R@f4EN0jquq>hyU)z7`Yj{r1^Z-ugwCJH7}mUf@D=nbO>QAU&Dw_j;%F
z#(%A+5JgH06=(MuS1xnP1U&JK!-5skICzvev)*?e^%<{^5OGhP<C;Z%n3xOa63;3%
z4tAA$?s=D+f;_+`K&IUa`Un~Y`q1pF37=Y}3PlJ|@=DwqMhGCtWNY4}w(UWP`DA>Y
z(xT7+QA*9gJMJ}_Qq~BjrP;ECAmFw;2ifC8o>xFa+LBl}@yCzYzn^&=ZILZvEu~7S
zz{cA9Tu>{h=SK4bK?~lrs;hHu$jpSf75Wwv;1`2=ao2qh0w5I!_>n*`OryLog}#t(
z2<c1&N!k4>T->WzPRxZgzDP&ZFY;wemr_9IGUIeVWy_SdRcK{pRUlUYhFD@o8h#2s
ziUF9=0E*V3SreseVsl-GKuT<{<;xZc03?7@Wx<jPR5x&L7Nx`hGU@>MvMQA-V!sVW
z^Yv#^d}k1_Lhuu=vC%JqMM>^eY!Mv*SyrZ0Nf<~A)L+4ZMZ|DR+hpP(%OM?rl_y^T
zfXRX|4whl#aQq>UUsaIckzl77_FG~!RUXR+u(=scs3#sBBtJj|8y%WcO7n~;Sz75(
zGzHuNxkH#h3xFAX^*8}&Iq7JzTC@hD2uP2>Sc^xm2lk-=KYx!2OI2Q9x-q$PavkXw
zVM}}wR-jd&k4+nY);XjZ%64wknpc`b#_L|bzL`{|BS(&)!8C|8z}E7axY*;|Yi@vo
zT{Z%M4RDBHIa@|$W~CFeiXiaS|2!|BKgWHYJe@#4*{yupC~McQqvuCrT)@zA?`Ne|
ztWaKHtC)${y%@d(W6Yj?`YBrlOUct0O4G!w0vzx(vcx>0(x-;@(u>c-$Xg5prm%oc
znnd<nw{EK{h3pwx2Xrj3<0lw0=!5|<mGb~H1-em{qQty<hqSRA(gh0wi{=K-zY>@L
z3eCqi3)uq?{6i_5(sV-%y8u7{%qu`#K&*UubbWX0*ZKuyVq8CoY1Qk-J_3^v+Sa~!
z7CVwoEFdPABTQ~$vihR*EKIG<q#!NY-+S37q{){X;36-;J|G*mI16}GfcKNUii=vO
z+6L5L2#Cc)nD8+Uv2e9s1^59H>Hf9=PE}xD-Ly)9DgZBHdcr6LEGj7@7QqkJt^G-B
z8KA^v>m~{G$d@ONfNPoudgJ%9AF0qA=)atsMt4?>*76lAh}}p30{39~kuo+<U<J14
zu>|ZkiN9+fB(2e=p@#;07WP}{{+UI7g?^pv@FrDcnIjm5;j%ybf^^rKUe(O%0ba2m
z>ov|5ker46;PyN3(ipIzG`rAOW8d81fF+!lRdcP0)*(PpbAu<#?*PYTFW5qMmOikb
z7>$KtbR9f+KpIcjLHblMy<~@q+&{gDX_qydlR8=n&ByIV(;lk5E>Aw}TueY^0c@U^
zb;q8MKPA$4A;7+P*lf$JcI|osq?u@?=9>$oXJ>5Ea0?1$dIb@r8OJ*2x>W(D=c{M{
zfTW)q4uDI#Wl4Rf(F8_aOanaC_+KMcd+4)Ik~*1NT50E80KNrmI<(CEiitFLtOjts
zfjJ15Z8cYnO+^@JFt)|aL(9^APnuflH+L@WC%>xIk<9VC01D~MW!(8CZ@zZw#fY<e
zkN%$Ewo52to=PnJ4^3_G8TA?K{-#zKVr^$UZrRE+kIr;&M$#AQ{71e0ZL^sI9ATG_
z1p>+5;mzq~k|`GEj`uPIk;76lJhWbaFD)eHSJaaJf@>~WN1FTlgT8)}EzR+pWtIZJ
z$D!OKaM6sZtQS;Q(D%di%Tb^F3;dRla_ON$Ps`-|S9ZZD?+;;3LADi#1=IgRb*=<f
zahMBkx##P-0xF&73%l#g5HWWGQ88YA;g{7Kuxg<GE6@bY@<$lzCjn`w#7R4-4k?3+
z7R-_U4Z*POA-yOr?wA52uBD)w(%5!n|8C2fBa8LE?S5<5zLRu<&JoBG9C}(8Vj%Ii
zQZJq!{D?g<<OPJcZ_yDScbwpCy{$&z_s3Ps2{u9iKLHIMP?_Gcy!&hPP1(?E1TUm9
zEs_=q>5Axh^i^-9=aHti8T%{~vjf|OreFA4WQn{6s3ThgK3D<RC<J<bzzx8J7FTZd
zL4)m72-|PB90VF(Ujo<MJ_&pzAWVQHunUHme@>DKPy+NgssIqp83Mag3i_!QMc|Rk
z3uI&-#;eqlc=S}zB9iu3+9m)CFoxmN7XiPUD#BR&AO&zkV(wx*6%HrOZ3}@{o(l~o
zbPxGlF=DC%3LrZxTbh^F$~9mOofHV-RrAB9i3G$&(4J{QdSiV)=jhT1K=rGc;m`i;
za(`k5Qc2Dg%a=ds-m+$Q(pVi4<%3o<yf|Q9POS}H&ZO%m|K(KqALH@Xo%$f)S0D=z
z;evh&8iT+6rq?C(*C0)-$5Z&n+i$)mQEx=-J)v~`VFyCctI)F9EbtEh%rKzQ7{d(q
zQfX_@u&IQ{0qry%OYu`<1pqPk082$xHH`{s_?>*oXLwSfRB1u5V-$F6FG_z|pZOW|
zd$-U74bWQJPYuw{0l4r$bT6e&;1y#N!wWEjHFc2j27Q#KwE{3I<_Vyp$27Ze$pFqR
z2)Mjr<#OzsARVO}diHkpgq$_J1z?o-98vOAYd=Nlw^?##B^`5&Qt4u1uGB#aBFvLt
zND=-?#TNi7{8a9Mw^w7|WVafuY-j2lyK`u-RVuUQGl@Mwev~Y2Lw}DFsA95(d`|(E
zkGW+0GYuUHxMtqaKYB>oUal>DFo9HRmqD4L_W@5;-41X=0E=f|d_;XwY1CbI@;&ww
z^>6p5?_Xm)>-Nuj)84Qc77}TPq)GR-8++fZQ3Ilhi3d=FU!F8`{fNiVwc+&*h>;Vv
zZdIitA_}h8cwb;F=O|^AZso^lKEXU1j(B-rYuWM|qe(js@LH*kR8kcXBu1QN2?ogO
zGg*5EkN9l^fh}oU85n%*uVUpfn*c94@Sg+$Y5-?c*gPXUv7Y#z%b_)v;#VC_6sws2
z@xz;}TeltpPB`D=UCS?uv0fOjKp{lagFc@e^wB{2640_eKeEX72lzYyljbpWPFZUL
z#%Tg#FC<Wr4+op7WmaKrUxzq*by6~OaPN#u;{k~BiwFcAQ^2_gUU|Ta>_yWa&vzc<
z3s&$1w3E#k^B>Ke$!wV<l1muVWVTF(+h4m~{KCmhnNIotAu|^E?KTbk&!<^E{*DyF
zKc;0WZ7K*!7YLp&v)5-{1qI$yR}mEdz}30ZBS%V7l8$8mbp=*_x}f>#F6KSgp&*_2
zshlSf=Q8D@U?9!*s{rw4+W1guB#-`UDB2pgSlbr$#CjnJP;g3Ggn}BE!J-txa_IDo
zdVjo?f_1^K#IP$Sl1i{qRfh-|?E7g81f0<XX6&PK(gSz*x9T<PAaLE3^oP0#yw<Zi
zRG-^G5c%b}_np9i&t$tW_jkt<{53A%r)&yn6T?H##V9FWtSIB00|RNXe%Y=VRmm!o
zq7&1o8Nf+H=`|f97|!52*j;7UHMM|o(zIblLeoJx0=kZ_>CWr<`citK$9hR~w+aZt
zveH*JU(_4+fnLY1ZUC$llTdI>=Lgb9L*99Q+4yX*7Ko36F5m}z0o_}wvfXLAqpOUo
zbEs0H`biy7rKBDMk78N5O@KoQgt~9)d%G3o5q%p{x>hP^+p&GC^k!cD??|O9`Rpm#
zCyQm%HBvm@f=^@s)Dm+p*$bdFXq^?(hpCDfb3k_*zjyEu5F3&6T(HLcN|5Q9pD8+@
zN}V1(4d5&sR@oM5tx*BdDp#ta>TKu$S>-Cxwh{)~!uhkkYowbiz%G2X1Vs;S0zl5g
zdRi^btU~}pTL4>OJD@o<)UJTtV6I<=Ib+~&Pgl=v9!p5}$jZHD31pGqUP!~|w3l`2
z)QxpoUrd(8i<f9_4jeon&8YjtW(=1dIA8VxD3krTcG`P$Oa06D1!`SPP(qL_?W(0{
z@~i-?LO%%hVkI7{2@pY?niSRX(n%t1)m?`sP#v8i7@x7yzXCYXXV5A`W2m}ysu-mT
zf0NMbgN>!JC;LS-ywoiAKOewK7Vzw*>bl@aK%WT(zTIW5^)BBK!wf$P_<MDb9h??u
z;2PYo&RGD<Ci$Ff7Gg_XPZjWv9y#RN^PE5j_C4P7*C>6-M}sV#6usv44})j{HcH<=
z?}?EV4;T$gNlZ4XNTP|fNT4cdm=t8FPTJ_zs@gYU!sqghw2>lKk&jCEuT>k;>Y9_1
zc9;r{%K>-x+hKqmQuxqcyMffRD`fz#FR&AE4DGe2#8QRr2a~D-k5M{)L<5fWI_#7^
zou6Sp*#mzgeQ%4tdtd|kb0apV%Qyxs(mF~!b5{4r9+-OXcEQXXyys;L^S-|yFNfK;
zl@vNvqz!(@Yk%QB^}Wi=uHIeX!eWM?FKKNvf9V<XS`+CiFM8iU8H&OK`ujGZ$P2oS
z?IjR@3SG2Cq#pwW>j$gFJa0|v<HP@WOg2nIaPs!yG=ZGYluplnxzLEk>-YClBQD35
z*#Z}&jN`MoaFxu-&TN_OPbK)CxgIl{Wdc~28cEhme-ISwYgYMShXRZstI7ki6ddVX
z9+Um|Lf`k(2tA>9&QX79E?p3o&`gA|ANl7H>p$=wn}+E4+3>RpBGU$z2>Zg`D2#ql
zdx<k|rg9YQ8(ovM2OV6~WAi9D`1dQrED{~8Hm#_lw_p)$7js2m6T}>$DP04wMrjFA
zl`1Pm<izpA_W9WN?DLO55Zk4F$If>5pogqk%XT(n>LgwF*LZh&FDOKxZX#749I<Jd
z(sA4r8!<x=qy=b$`9-=Prj(HS0}uVv+O%~9i^tgMq|=tR0g6c6956(hVB0nymfn+s
zA=idU1VV*NN=pZgm3_RQJ)`j}m_wILsh0Ukxr4bNc2#JD2?U^1LITt<1SIH;Xt2^}
z0%^TBAYp01$@~%{XKpeWe^#Z2GEA|*Hlk?)D<f4pAoHqwqe;v<B;a!aE}iFnCL<e(
zeM3_}n>MaZ1+s;?I!1+D5nud5^VG4^4FazQKk<nDymqzNATTTxv{5xnfg|^%zp=l|
zCM%-zQqD0hiGOQs0#RV1h`oStvg}8o>f1@dAdegfofi>3JxriZipTmBbD~5<QQ2%i
zX;k=rNQ!EzN@oI1v+{XTA<-W?DqB$ri~zri*f56(V5g!t_Wk$YC<U-v_n!D!I|cfi
zVIRV*O3Px?x^LI93k)AackVH?vv!HOLPb4+KgEle^;0$hE2L{ha4fO>eLT;bH@jzZ
zpB-2e(3tx|KWLlo>jIkC7YHv4yc##|Q|@7sQVn5#i1AmjKz`=Auq(ixU5vsbfGGe(
zvUA!7AddeQ2bd@&9l49CNS5NV;ELc^q+>~7ehXmvO450`lGvXQKJ<vSL)3f>dVRq)
zkRkvH`w0A?Kmc=c1X1r<%*zkj3!65*+WHR|Xbq|0Hw%&J+@u1UyU!-63l)h77Pl~u
zahDvVjO&~vkD=oO95jEQ786ShT7hxr(*yDV2<|afHkv$XqS&;sXhZjGRlmd*q}P=K
z;5sLOt`xRioZ$iuXx-ENdx&-WpLCx76W#tvRg-`^EG(1lndglgf7TBHtOn@>K1$Jp
zjvcQ<%zU)wIc;PABE7V%z^f@!zDK|AQ>{1lf9ZzdPoDmoY(x_?wHDfK@vI|&Dzpl>
z34~^!v!1<r;nTHk!Gd|REz=m99;|s~{mBo|o<qZHy;!(GhMmExWv!iq{Yg3@`=-7Z
zDgcy`?&zis2iJMR8GS$cz%F|uz~K??<%>um{EVU=e81>(ysv9;&)Pdkf7DumjeMcO
zwphz(@2PTQ1ar#1>F=eXg+Pk9duci_I0Nt)v3voMG*uBUQKF>4t0fe!82tF7y8m1N
zps;B1hvNd`-L;o4{ZOxG6tXyDypSwA)>D$^?Y!&YH)|b<6>pb8%WSx5#=&s1m)4Yg
zA$V8dPb#FH*)m%uxTQZcf#wUu3NnjEh9(qdwhKr(3tY0Q6sal<a#)BMyT`Wjo`<Af
z=v*H4y4PP208<d;ryQCNy>1rD0uVUzBNebd9{WD2Ol_@mw;S|pGyp&l1ffxioY!|*
z@4f>CkbE}w19XTIESp4!y)*q^ft7j#u%Oc7Bj0)5rp;Vr_3Boma$hY8D<f`;7<Vl<
z<>RDMCt|K_X2ak6g4DGFq(kK7{JK`ZUTw6PBJHa$J~mZks!?0)q6=tZ;849vK>~u@
zzP&j7U;GJ_{i<P9(IR#5W`KogfTgSm2-mX4S6*p#>(sVi(D0gwxOiUdg|-i%TcSUX
zWU(g{Pyo&xk|qpb0Kvm4T_c38pn$Iy<;3IBc0mh7>0}u-0wf9B(!>BG4I~s4QP2Xo
zq>|;ZkOW|%DMCuk7KDW>ij_kJuh3nLK8}gy<IYbShm>G10ntH?jVgf(enQ2Ac`kc0
zr#gpfbxNhd4laA*gjjfH=@~=*H3;eeaY!pVz}V|6sP=#ar3$JlTq4Z7dLFRCTwFoW
zSVhc^bw92^usjAfM+2Bjm90>Ld{z<Gh3-i~vA`qUJHf3qvSQ<76$Akq019N2MpH@B
zU;($3s)s0Z(6(VNW6v~S@&$lH`3Il(HP%j?Ji)wF6Ohb2iY15OyO+}C2b1)tKoBh*
z%@6uPs)QH=5Yn~#jRJ9~;>SHTLd?Daz*9KY!#>w}2yY8K@Wv+gptO&Yl`={&EFpP-
zMENOI-C(>(#92TLjrlsmb+ZGk?p0b|P1X-%H?f8U$SLJY^Frk?`3-;T-qRczMh46~
zU{omq0doO-s#U3CS2C99=xAw~MY6s~DU`o)y7r~5>@SQ@Oi!*A;vdG`oP;IS$fDUB
zu%~?M0-K)}dE-re@!z@*qm28l>8{~ADh@%#GXX4sBGP#Bz79{2YE}l8Xg^Xq*((4_
z3X@h=pX!MXq;)g}O{R_LmPO%*F6)&?z>So%uKtzzDc+%J#Yv%Qa$;qL?9UvQ3Sdu`
zZ{a&CB%!{}AMDHLcJA0FKkm|{8v@=@*seZ8?Dg=4`uIW=Iz`Rx?YBqZTMg|9;KSN=
zKZ;d~Ft^0qy}6BLe?dP<KID!^{qOMl@2dW-LH#uSH>dw$BUrDsrA^iM=36PgP*VUX
zg)Z=gM%ccV^bM&Ts5QyFYaa}V%_S`-%`@{Mv2+@O_fr6~N>jL^vBc&PS{Jhp!GFy&
zzO22db(^-#Q;Zm!HKL;>!rl;3aagVrai_Vdky?+b_9Vur*Rcch+)&q|xPcCQSg-LN
z#68_Y6~SwC{?1*y#O%c9Ek0x&u}+n?S_`(Y=Zma6*_DDDi05~=+7v*jQ8QZKCv^ec
zs#mQloy2hyzOiSYf60zBKS|tI7T4#|r}M@8)BpG+2CMYNU^z0@E5#}W5c5Df`5V_~
zuW9UQqlx(#&wk{l%)6j}m=8u~<=&{8Xf*9pX#eT?d!t8U^E1{UrUCa*%SuK@s3LAP
z3T@EzSx-py_cyUw1-?o<Pg<MlS!Dmi7OF4xXN_Glo3GCsqT`xcTlcbPnJsgLWVW#M
zhpY9N*)rR21F$lipFVUcT1q;0m4K9VbpBxapN<e62|cRBH@Y>h&XpeBpo+skSBKkg
zO4_sr|A3vL)S2g>{g+Y$MvNW@6YDNg8h)`IJGZOy5I_oG#U8t7(0w-enHQ<XH-(bm
zBLD$Zt?GQil|-tyZru!<q@$IO%mwpfCqd*M+kzl)L%^zg?*FH!r6aADbrN<C*tMN+
zApP(#z`#BQxaZJiX+%H~1^BXl-A^vq6!_KoBH&O^b?DFmQnPAE&n4C=^-Z6L2`VaA
zsirD)o~ZeLf_zvnq$@VE?3_zgC4{k0N^qIr4Hm{#VlbflB{oTN5S-FAOo7ZPoAk{D
z#K9|A!^T%Dbtj%cJdWcC{nd|YOl7Pn`(g4#fQ>i-2kC8?A|}o5-8%)^T-l^K08UlF
zu>;Z|0|3G<@l>w5R-oC`DU-zH%AGS0Wy`0_f7-O~L=b$E@g5U^atM&6O0`-R!<gIv
zA<Y$K1BnWM{pDw*wN<hv&05(Jt{DrHB{uH3#(!nw7Kk@j;U33JAByoy%L-u3ZXR%-
zl`dORz}NX2c9RYhg7^S5uq~Rmc7>qhERO3Ogq_v8Z6{K<DvQB_aJ}@f&>#c+tZy}=
zYshZ#1ZIc$T(RPj*8aNgMiT=Dfn))Zo<&=??<}n`fJLPu9_1c#=FBai5{8@ov}T0@
zcmD&bCYME9B*Bxa__b==fzQg8^2Y<DkW#uH)=`X21K2nQ_zFu({Q-tiov#wUb4Z_u
zfuW#|N|AmVCQL@sq1H35g4nH!^qJzZApxcY<C_5rkfNk2b*xYPE4^PIBj|>4LO>Y<
zz*14;i<58e2ONr0#X%1oAZXRtzonWbl^p>fVl+NLPX)NFJ*p|TQ4qRx>0$wyVQx?x
za%31xU~@o}9b#M&_=^>YjRZ)e!v(<5&SzE;<cmc!W5!fH@7$$_f>VT{H5S&8()|Fp
zY~H-N@(IM9?E;&8k#sZWVYgBRDJ~&EmUSTQsftuhY)Zv90CUbeAm5_NzG3{MN}ukt
zHURUnqerDB2Oyw11I*C4Hoz)MV2yi#6dSBpq(O(jlzD<Jd{&s54_u{Y$Xcp>-v>AQ
z0;ClzSlCW^AaqK4T}o`Ow9(~gOOfUUs8Cw>3#cJ51aJafsJ5C17_+L-H*3ZWI|(>;
zGe8p}<?<WmORTr<F#qrevFcz2!5GX-bw2fPZRj5ss(@$a%8p>4M8FpOM*Wl4%i2A}
z9=cyCex%BAt}~XCO1mSyk2Jz&+CS+d_5NulCK1derJ&NR2|yG8q~;3Np2l@`^A-XZ
zrMYA&eCCjCCl!==(ONppT7ymLY;NqoWdNj_2n;-cPvA%Cd>9`W<LT$0e^w<;ie9Mi
zvjWx6N~@5)LCmY4*R9jKIEr7dMFgKzUsX6ncwD}WAHx#9R?JbDaawZ#U4ZdtNLl?-
zKPt5CaGk#Y=tJL)uqN53JBn@i-FM$gKMUYZOev4WwQJW7?WbZPS?b2v#gpU5C+YC@
z?KePrV=!E`{s15OF72v0a_?7+U*1>RXS1tYIxH~kvse4$uAMtHM!-nTMGolFd-rHQ
z@UJ%5A-ldm*{{*++eP)m8`(=5=>FM5T#!GIVJY;m<ck6r#GY)9Nc^+Uy(~LZgyDZ2
z?xtk?df?BfMDh2I>va3+%ae&|nI)AVb}Cfs?_#vf7D)cfpqH5~aM8!#uVuEZnOpqD
z>(T{&Bla&4iNgXC?oD$6pBd$etfvuf*OL$ymR?IG=&pb$G?g&qJ^c%*-sN`e=>iA{
zLs(g*?mKsEX`fA)Y%h}bck6(=0jhqGjuj%a`~uy^qAFLD2F5*i_9LYux2hh6xfQ&^
zTwNfyV+AlL31HrR=MDOM(<V-yXCHq!lAt6TLfltdhfY20)mL61plo4-pZ$-1%^frH
z9UK1k>vrco4+sQUFn1P#L?U2HML>jW32=|tci(&kgCb`JY`L^m-xPEUNSj7F%I$aF
zYkm6PZfi&hBuz>}^d(_j%mj>!;n!>FC-H9_rOxlV_dy$Q$Ni)pEe7y7B)|iad!>hb
z`2Hv{tBO#;3m`)QZpUl8sfyIDUEA~?74)!K1dNt;fMnHe<NCEm)AJGpnX_ikKrDWt
zMZxUI008vordZLU_WgGg#boP#LtlWu^|lkX6+n|x3-eORZ|sNf0SxW}V5_1uxBUk;
z@N4;S8!+%r-2<h}l}1*&Y<a6%y%xdL1l>zP0v@idAjnJ6z+c34Sg~xO(yaiJ1pNJs
zMjCJP`I>;1<zY5VLo00#fn!-W=srn*;Yv5jm%os}3Yb~Em$A-PaVn>+T)x<*m8oDI
zuIm9HRtfNOwE&2ku(C=-l(tVk{t(tj4}lN_hfXz1{Nh1-;L)dS{@m#be#?}r2%9a&
zz8Loj0c$zCuFDMyM5j;t-l=AYjTdVy4?Z%)=Fgc<P<N1^zW|`wHS}qKu%i^v5j0Al
zistKB5r8WF^Q$kvp!(U>_{2lDjLM8uKLmIyhYjnh#QyB*Q?P9*u~dErT>TlAAnC43
z2?Ed()2Dt+BLu*IvJ*e9!H4oIg?2IJ=flykYS*DNb5~UW9U4PU3Kcf5>1g-hM@tEA
zBL#MZ;NF&nu>l&0ebuwqO*ZhhI|WdXx~Fx64v>BN$yi5Fo%eeK7)`NNq)N_ZJyBs3
zf9-71Fq2?z=rfE@fayE$yah0JR6tJ#+EeM+SO5$Pa=A9wY6MfIzb)au2%eS3SC8wj
zTCoBfP7nj7H=^qE=gm=2Jbd`u5(dBTzK3l&_esi`w7{yuHblFMy=N+ns8YTrR>0jb
znIHWftSF~cJ3Ysj1^j*b*;pGyy7669c%(8S`-W0sl}=WOaeX}Y0|Cmg;@rMWz{u9E
zTW!Ml@dV~Q@WBXG<YRpU^b{v`u(A62{`+rLLGN53#ov#0xPTSFj~8Fbh5(QpfslRK
z(*#OZ1z7ydU-JRhFFHd4cJXHw7f1w<VgJcE0LKQf?Xd57rDXQI^)~!wmGp^VnF+)L
zShd$*e^okI6)Q%G{r2L&pHr2<TR0z$BdssMGBK85x!OJV4l-3q6HBKcHu=ILS+o7w
zKUY)5a<|(*npOfNUwiFUK<+rp1K{=HM<3cl4?S#y?tc(pSS+BFbX~ybx&n7bj~*qE
z4u+dpf!G%yvm0rs_0h80NUGfe*j+LB%k|8ES<cz7d#qi%j_u|A&sgid5Jd0O_h!->
zC)w9ueW^6IE?v6|@I89;uo#nkR_koe>{$XsilD(32&Vh_dQZjhhjnOct-w!VmgzGv
zvc#%|VI&cIbhxnFR@QuVeP;HoS(@A04vQ)}TA&w|bp^PN95IYk{M)s6z|O*VirP}v
zL|J^h+x0h!v9yeIyffT)J=RPe7;h5+xF+$vMs-jDHQQm)((Iv!AG3`c)~llJx^-(|
zN9sE&bUg}qTmyr83=FCM18x_XH;a9NMv8tT{I;o$9yL<-A^lVSMk=TnRS!S%PkZIH
zx7b^Mknh5L#78RI=i@#V@C@K7EwfqpMfV=PuyawZb%0aA#8xUo^4kBsY<J@?|9RyN
z8~XI)n$L_FQm_rB_eGO!Jn+)@{je|{uvf)eg(b^g79~l6;>9EQzF4Xs6E0njnq2;}
zZkgE=DSG@n1~r*Y6(;{4RJ_cVnRS^7U@3hhWYG(J_>0by?(t%3LtJuu_`#r_`>B95
zSICz`rPO^;Dwu+z>OCH46|5>41i$oJNCiWEUa$M0HG8~wZ2=r*2)K8_TxfY!UAv|K
zUDl6aWxySSB>GJNre9nidt{J}81^OsLqP(j2&Fk8LQBvw&kB>ygs^d_$ghH`PsWb6
z(*Q<~4}Q*`8v2@oC72@iuSf5<cSpQIpwbIwKsbSZAql8|FlM-_R`tLA9_w+_tzthh
zM1qEy_UVVC37E54WQiz0Rm=kC_a1DZAa&!$P4+saz`MdQs8zR-VF?AyBMG8+pqWC2
zHvJvJJ?-4J(_R?*6zBFr#Jz?EDyvVigx-C3gzYB{DLT5km?6JlFF+8n6UvmUB%L7w
zY;0M|KL7Lsu@^dbxgG{p3&}K`Byf0t%)5YqbF5m`s!9`tC6ST0YL2M_D7M6#ue~U}
zBS1uew{oJ|QngBe162T(>KM@dI-pKjbi0<=OaDGd6|h@jQC*{8A&zUK`(q2{%~T+8
z@<glx8ki{pdiL(#DP|80BI((D{Lv`Vhqfzlxw>V0`3Y%*Hkv->0U%YWQc0iyKB&)Z
zSijEd)^E(5NErS6E06bbz`lqmQ5;*mV|%b?SJGBX0cH`<ivjoSkbjDiQ2`)@N`ct3
zEMUS)`_I3J!ZPR&^Q^Pj2?YCqqGRkEQtqlo*HQ&YbJ$ndfqM}k_MaD@Rls~@<E8>!
z@KMI<fP5oZ4`%?2sw-WKpw*TUB*nol$%Ver8T4$>U?RPCl`WV**KTD!#Kc^M=@r=9
z_md})>NnoXlI8^XA^YUvb7Mvgw`;HKN-!8><tjvJeitrW$U68yEEzO>WPgHDY&=F4
zK(B7z61HA5`8iAmgu*Ans{77K)8QW6YH=ZU6bM+nxWMG&v9YRdcJ<Y*v?m+~m>EG3
zJ$LSGfd?J4bcQ98q@b|`HXk)|IAGaUyRK6gYsPg+*Tm)r?5(%n;BhYiQWXW~Tq8qv
zDswGyc33$IR!KvGHM7tD@0Ay==Z(DqAnUqXP|4VBo_+S&$6`7G2+2+`I{>Q6i}msZ
z+FgD6-XcaA_XvaItN;np^+**fBk%=qlxr>J8oT9h_>+JoDrstd0pI}QHqp13A_C4x
zfwpId4zU}q@1^wHN>!@KFAp;A_dj?Krpb2Jc4ehkE?-99yY~o$k1QDhC^&_+zSlZ+
z?uO4?C7Yh(m^XKheeuO762vaUoRh+ajY6uza?kh{^KqPcSt$Rd(w~5e`S=fDrpD`4
zcnhRt@idZHe@nC{G6u2WR;^s2bVkdl+IFyJf@};!NIvi!_uK2nK1!zpgpl9;LiNOP
zpM4@G8DjR@2LQzZLw>d=pL`64Qd5DQG%={qouYbRAFptNRxj*at&L}%8DhP8uRiH{
zl_)sC`V)}#*{7fA9sq1WlfPgjX??NR+EarEQ+2PWKvInq+r!MlFGuJz)vH%mHAlt=
zxbm*G@6eHPRN|Zij+4n3uV?P+)U6A+TTM1whrf*f;xmCS;f0H8pUcZS0(`bNIlp7a
zYw0%{A1|T(9i|ue^Me>&?2j4-ulwIm0k;?mbAYYO0PwC7D+&-x01fx2RPdE6=W3s?
z5nWAtd!BrGwT>oF{+7LAwLn2c@zFEf4_G!sKsLaS<`bXOoE8N<8}{a_0;YPB-g^Cw
zeU$>vTDLdfcui@or4XYBypgul20*KSzwj)nus2(C*i&0JZxU-2a6T=dEWk9fL<IZt
zaIvE9yz4%@b>LmPw^+cihabF8;`ajp)ja=U??Bt_duI*t`W?su^p|a5Z`mUc57O9S
zqiKB<V*X$L&kJb69g==o?Ya#F`tpO9J@)8>(w9RIPJkD>W7-=QESRsoCr7ZFvC=8o
zFT||eiXB40DD}s_p#6e$cwbj>-P*N)m*KGNwn;P4O~e0N)f3B%)<XWzs>ihN`&C>o
zO0YKIcYnDjp=Gwrmbq74zN<JhLHD;Lyair;;Ys35p;vzDgG!=v_-SoEV<)6Sp7Uyw
z{?K0mopo_i=K@*+7X<L6|4&PR>!m{6HQqFtk;xgeTKrFH<QIxG{l3Xg3DLO<_UQ|=
z%e+2oibqrMCjdi&zn)+_&y(~#NzZv-&-Ffk`=3wI=kzEH%)3si^7kp}ZNk6*$Je>^
zwpB$@_}Zor`v#ncA9*yUK2A;Q&OrSeNDL4X0)$|I7%<{5Fhr^lOpq9WV9Wpz6Q+z1
z1&LRS-#3nvf^mX@U`k40eM?tL2B?-SC4QW9&pzw!qrJS>-jGiO@OyjvdLgGQoONoJ
zAQ3_CK#=KTz;U5)t~Qd%Ed|~uQ6tm=V>*6@%m_<3lHsnh7V>n3@}vnxqH`I7Ck1*_
ziddU8*$%-qk9HN<WU?0|QGA%9z%Cs7*YUA~+KaWCzMG}kHLdR{&YflvWi3@HEEc1u
zpL;R-OaaEA*M<ag(A-fFaCkHm(N;FOF`Y~lXe?3G8X1aZ92+79PX75j8YDwWJ#O=>
zy4OFSA6w?MqOlqwq*)URY)?+3cBktuQVWt>Y;LSa8+zu_+9W@=JC=o%%N1-wHXFsp
zT{|YV;XNHgntg(VhIvxCXBnv(W9e^QPa_aGJ9~!*0X^e(yFJOwW)x*+A7tl)sG#7g
zCL8v&-gqIe;44@%^X+#(M9Y%kgvKRsMB8~tALevGT`H}4?8(GZoTzzu+rd;yzJVJ8
zKm}(ns6*RaSzn*i;$ApZfOXc46C0clT97Ug@H)V)R@YgVWn|^js<R(@y}n4CO~?;p
zuq}Ji!k&ykYN8;iykC2Hx!JVza5xwWvuj#&DSGMUS0%riN7r9}%|UM=A0zL95JA>y
zva+_dg&)9vmWB3Z7i4DO9*GTI0>L}$M3zR@S|N^+01;3kcXNPef+_9fcU$tPL4QEN
zr8TTjT-p+w5bBy^;<2u@cF6cbCQH^2*TA)bVc~L0n|WWyipYu6GxCb(dHWF%Vn6OZ
zvLhg=k-drxUW`ILNPaXDsXB&mAxQU}v)OOh5#M24o(P}Q!(W_v5<(z|20!=2W0E9f
z#+Vc-7F9@JYo|8QNOK`&T8tNky(5Bjur5qNK->iLA|#r~2${qCbs+ML3>(N)I?YjA
z3gQyGVpH%5*~Mp&N`glS7$lah))j0AA!(Ua>uL*`mx-m3uIFI?0Md*sA|#BKm_4NH
z#kLR)kQ_JlU9u^$PcD<8K3IygIrfM6<K9QQE6l7D{Ie$}TTRqi5@=~4goUMtZ4qe3
z?OFxmSQx(ru_nCL?8DQ0#vMVYM@J?DwnIa>u8LHcYv0Dg?<*qeZbUz+GhRM^5ZiNK
zS~lYjquH}=ZaMigq?7nDYM3n*mmr|<8=7}jSg7MWzzJRZJogPr3h`U`Og$i9kt0JW
zLKurgy3T89x6T~ngKK1&U<G-s_qeQe)$5lSGd<@rTF)*LO^6^m%W@xrb=Nj*goa5c
zXQ<()Ivo*5hxkuj+lHPskxpYs3w$q6h;#PEwaDUpY&>Lz<*Tih3E}bnzV<s&=gmU2
zB%H7pWbhP=MLHo;lpL#_)xq<5;s3EEaz^|$<KioP=I~&RWRLAMcXSrS)YXGrarRla
z+jhp-@3Wb3euvG_8ZJ14@bM>}j6Qh(U7bHPIa#2t6(k^7^Zr+=YpGmvtpEA(s0IlH
zrij6jW}0L^78VLxQ&nqRUS0m*j8-1h%wlgTU{BM_EsZB&LYnG4y%Rkunco|4zD>rd
zq~9OvjM}vC==J-W^Hjv`MdsD#N7~z>ecVW-Zm2tp&3<c`B=+f*a#a#;*FVJ1Vt=I0
zkYUI~Ie+k*K2Ix^()lxjGlh<kdc8tsDL#NT@gDaz?@=F(bKYy~^@pCPsc|(AWBte8
zwS>q~gyE{5-t6}5?8K}a4VrjRL{Ew)9)bpm1U(8~Bw|3tgC0D1_v}H4;w31E_{M`M
zibxJ3xu{nkAo1d^_y8Y}xI42+cBZ?m@B8~pH}fEyci2pCiu9wprXGL&RsYxjV|bqx
z!g(uP6eURFg&1FakPPiUmwcB4#JjM+$9=F)#XBu&ADfr^+kW1Q*L~7xub;#3C^R3D
z@BsmNXd1qjTTldh-)Zk`K{Kk4y81nvH%UNV+`sC*It}PbULG5lAe6G$FdA5e;$N$^
zp^AnbT)q+A@0{5*P<?UHdwp_T`Lxmy#uHQRS^b*?d4g=l<!3tyS1W*Zwk%QYJeP$>
zFIV7|fFrvvvyy5dml<FlI2Q74MW8A-P)h(-Kj(9Mm-mC^FRzP14K9vj9l#2@9OYsK
zzCED*1EB|?2!u`uIC_5opDRZC$)Q=Hr(<jYIrROLoQ_b|H1iriWx`yk{j+I$ih^Cg
zaMTX5{F?!2z;QLfn3QRg30D!o@(q;Z+`kbZ*nZP3ZvTNN-6tP?=>GcicL*<{P73_X
zofY;^d#;VBZR{5V;}n7p!X+Gnuff?Ze5z2WpPOq@=+%5tczYi_017y`MgLH+cJ`&8
zW7_F<AxxocltJJpNj%1K-4i`APzu5o02lyvh`^_aV0cy^KWQ0Y{0LY$hxWDzsyI*6
zCeFb!8wIC80Fz^@GB~q3D;)}utbc2knnPCqph#db&$8Qn-`;2<d8d2r&_U)i-(Kja
zF&kmF%L8<UPaS|+G%szp=U|qm4Xqd!1a;PZwR?i~K}o0&=n~}=M*n=T+v&QepLw1_
z{JYUt+d>2)RyrMk5&+;J*m5ilKrR6Rl5s&=ZTN-@_Gbcb(x8B~9Q$&u--A$#{)Yf8
zT2P}v)9{~zHi33PvuG2+sY+n;wwxP{pq>z*@eEo=Ncdgxz;WA3<-xn?6Z*iMBV9K|
zr=WFIOFpgCR}jwQJ6+5>fI6Ie)$gsFH#0R1NTH_Xf6FW29Wcp-4<&%b?C0D}?Nkr_
z4`32N68mO$R^yq-!MWO@-_o_psL#jp+S-`L1PxKn;S=V(dX{r|S{jaM3E$P{ePh-h
z_W)Kv0|$UQG^v<SJo&Umft041(NPg}&iP~-q7K)*pE#O0R;JFRt3+C)2F51_>h6E+
z3DU;fZ@wNuv+c&;I0uFSEF8SwNFdZ<zQbWY#*;vd=3!CJv)#M*&?NS~sQtIJw8TCS
z!J)k{C8q|@x8Hn?sDq3gSoJl_hv_B84CMnHBp`477(|nbLJRsrUBEw)mvc^e>mlxq
zfA&xo%4K`jdZ!5ft*!N4Gs{5Nd~P)FkT92FBF?cT*x6l$A11UJ>jl;g(qH27k%LJ9
zmXhj>I-;$hMetbkG1n++Jq1txZh;6q03iZwKSi@=?^u5VsK=L&#ULn;M*cGIUVZtc
zSdY~DB0dLCKpRm$#wd3M_z3H2zAQ=a7%Pc8SbM2GITQ2XLyavtHTf*@)kcq|s~ku4
zJL(C(gR%*{AAIGI04$os@?idx1f)<B`*>!PA{)nhnx~vE;4{dt^-%sBHUC79I!7Aq
z|I-f&J7eZK@(+}CF#xQ9<ijNduqFVO6{(M|bpVUt6VH3R7J${`x?%uUe;B~xJN**C
z3Rf_IH36{315oD+U{xA>8yCQu09X?cYXV@U6D7E_)nvY~i$51_`L~i5ma}u5mFSbq
zRAfSENkC$#K(ERSG1&Ql-yAWGv5k?BuJSykpx++IQjCrUpvY}um<WRrA_PDP)^eQ7
zyeQ76^rd6>e6^uKsP3uuW(WZ>nYNX4+T5qMxpp#v?8UNY-MxDraCh9b3%*Ebs?y44
z>JIWLRA;kI^^fjT$O)k@jX3y6Lc};~eTW29j`gz^OxyHk*>p@0M9SwTAX5-)w^~T*
z3p_s~cvXS6%Acd(pv?gAMF6M-hcSWx`Y<ENW%Iu%>rd?+1A>V}dyci$-QE+Jog@U^
z2rBRxU4IIY$BrG3eyiT1)8b}xfgstiim2L!GaG9Yv^F!<=LYMQChBh&N@gaILx%)n
zi!j)rc8n*Dr6P0Ohp8Kc+5zFns7PRIGL;J4<=FY8Apn}bvbIK3ARPh@N6dEstJJ=#
z+H8H@NIb7O4s1VZ1nmK6rR|Q)!z!8?!_JD_0JoOLXc%DP*y`HGj`ty~A`QK>jzi#+
z>Zo}{?We6<r|X*;0`53c(3}B&qEVS7LL+04eutdatA4t!|Gs><an4b|hX4~GXw#gl
z*itXMuCZ&{cgBlznOrkvGa11y6M9NvNzn(Zu&(wz$9V;0B@HjrLS8Fif<OTR--U&N
zPkjS*P*4hL_Z<ECD9qEKl|$ZGtYc-%i-3Ni$zScLg9`-Mj~w}mzJ(q?@KikiGWsL?
z0|ihsb>F^+2;Lk%{DriT>O2S<eBy~pV?k>6{roipdD+LcYepXeu*HOfe8^kyhJ^^I
z0hPs{E7u16LF0@x=qlf00JG-jx40xtL2Fzu6d~4Ez+nvxkp?->#bcpy#5S6IU21}m
zhK&a-E-vw{ojZ4Njrw(QkwF4*?2Qo-w{5!-{`(j;cKePU)cgxUpbkKHfT&q4lk1J~
z$x-II&J(bkF?`VFL3JH{XpFP0Ng5JibXPk97pd_l(ia$(HD}lk@mS6&?+D_PzL_}Z
zu^-_2gUre+exN#xxK>hB)=|$ikM&I2#Q(E*?Xj9&Rek;Tcc(LR?+o+q&=$~Ij1ng;
zFtrMaO-z)gAg$1ZG}XjEd=fSI!bTzdVN5mDhzSuW#-y=mgRRx6wb)2QEfh6AAO#Hy
zX;HD#2Q#*vxpVLLeP=Jvx9(bZ-OWC)?|!#;?wvX7X6Np+&))m&v(J8f>$lg#t~X0t
zZL3gke-<EyuW-nIy~-|01X*7xQp`Uo=QSg6|E<qE$j&+5Ezh(w6VIfL+*7}x_jDlu
zSTmnod2Y0CxGj?fEay#$TA>+Thugw(4^>g`N0v}<G*5#R$$_fKWO-CgQ0@}j^9(2>
z2^9y73HOmin+eIk9K3=8XOOr_vZahNJQy<pcpLRS%m_WPR_;|&0EDRo0)6MP*V6N)
zB+9)X|6>|0Ez-q@4o%dt61Vmemyf|I^PWqXG>;30G%}(fDq4*9r{l0~EY^Wijgo}O
z^85ET082^%!bs|cGr5dpG$(biwY~B?i;?Mn{D;RVaumB~25<pE%X5;SI`=gkfoDp_
z5MUq)Bra*ui~$cy6}SHpgZjc0**gF_7eHEp*AJH{Ge*&D#u=kb-KCRqn|t;((j*15
ze5T0kZrqN&9&2NJTiVmRQ(hjL7MZh#!^hZq+L4z<Ue2z8bOdvZIRMD)J<JA*_*!b9
z6iIrNXOFlbE(Fz8DObzSF8Rk%1FJNRujwwW>8L*;5*P-a(V+YjKLUW*QrfeyKu0b)
zD)mzUwUYP0fj!CSVP*k;Po6wQzw`dzrkij1k<u&R_bV_pM?q|f{X2d1qj!{GP$=i|
zB{Uw#hVPKC7pZzW*JA@NfsyYWYu7L6&ME?Hf{a-ID)<P3@0(OW#4o4-C<N(Wv&`+=
z25YDpXJGBWwV=Ph&qTFVY@9t)Iw-mJ+H2`}X~^DHq8CfMjvuBkm4@)IC>>mkIa)bA
za7ZPqqutlp&ycvUb5Yw0YN5REVYNaeKgHhI$y47DK-+<JdFga6!JnVcRf)CkSKarv
z_Ifsh;D#kMcFw6MZvGN1(%V&DB`p!%-81!cjv4+LC8yW{tZmW7ya`fby(h!Xl*H<L
zyLPD8mhrNZv8l2iz?xnB8q=@+%vHdUs}<V4XuwXPAWKw6NTLQ@sd@?-P{n?a*-!k}
zid;npZJ4;OjomkPpgW`o7o7#th@HfSAW0f3-1fsBX&H%v{H0IdwR>LNtlwT5?0)fu
z({%BX!*s=~uMkF|ia4h2XJ+60xEZ}?cJOLO_uU&WvhU?L&>XGzM_xBHEs6ntgkY!k
z`H+!(P4m*?m3fnsdy89U5HyO3<b_Bh-T8+f5lM{8FaH(-1`dD{ED)?b&>#klb)F#d
z)ZjR4$QOCLx8+WceLQWF-D5OV7?NF3g`~1E<$aj-I<tbivZk8aqXXzPiIb{qk4-H_
z%EUtRkpfB4?Hj_SR287-6nN7nNE|`zXO$8~YA-8H--R(BhbCoI+8z>{QFq+&`*iTY
zVX-e)N;H*#%-2gJ>Q9L@Txk!?R4ivW=R`K1>vQFEVBqfQ2q4QPaRe{xdqvRuEmOoK
zJAj(8RI64m-+1qyy<+?Ai;q8EhR@M~gNH@(u#~te?Qnfn@_u`1BQO9oI(ydFLOo2v
z2Dz{Sp<#Nt>dM0Id2t@{Q$PM=B0+Wd@L|mmFYH5V1(mlZ^#mQi1tEnQ^)C=8>ORi;
z-w0ren9ea(Pb}fQp`Ln}v<Itu39O!G2N5`tR3HbN^o~hgF`G)EUaOII)-<ze!;`q%
zwlW6GJrJsG0n-ymrH!&vuFfKtn1RuR23KjVhg*TP9$0+{>ONjozT75`sQbL?6_<)_
ztWsT3$`sniK*~#lxt(RHmxD<VFjiKgmKc?f;7wfKIY$%L<$;sAew+ta|HwxI+CjAt
ztUkZixH738&s}B1L5s*@*XdQSyv$UF3>Z*m7{p0A)_{D>0vo(NGco65o-0a*v=s3+
zU^cPoHWpkFEF{;ibdnP5e9UbD76r?7AXn!$yH=8?@b%XvUdIwQM;R2QT%w}P#$Lrh
z6jVJtswx%o<{_AEGiiwDn|TDfq|#-jlY+w~@bZmQCrcH=uThMJ*kd|&?3kz>>z>jP
z09f0fm{!t3*JrM^kpVM}qSxs&gGBR<!><v12XQehiBCPhnM9RR?B5-~`grL?;u*2K
z_}p{<M;xO#8CWRyp5bsL_7>Sop38|Qs*jhv{D|5LllJ%?jC60a`E<S$Cqt(9zQ4sc
zlSKL+@GJz>0=zwK*GWm|1NGEX4@#m#exz}15df=~?qW{Z)52_C$t?$-I8qtbs;7{9
zB2?fi&97;i9+ly8)dK^=pn#8`@aGa8;U&k#U6lw;{b#|iP4Y_qA!T4d#NO`{X&W`z
z9t_N@pIoR+Y!pA2I%z;bx-}XDrLqErUbhQZdb79-gOVA-Z5w-)S(sn)a|>o}z`q=T
z>hdmDhnMlRwAP@~STG~r_FQ4e-R2Pzh$A2as{9!Wta6|YA+M8lbfI2W3rt`TDh!iu
z2MSy0Og9?7Qsaoj)eI9LOY)h`!9vsA{@_^ZW%KwdpqHzHm9fMQVJbBz>%Z9#vor~_
zNnpDDqh^BJvtklevX>t{N=McHm=(8!ly+G=rWhLq$k!{!=jxz9)ngryMn{2Rc<@X4
zcB1;{H(Fb+5_rV~uousg`${`<XNSw;<Y7Eq7LSB6#tokZm|<NW41%bnvbwyfWfURz
zE(l^&^=(hv=P-oRNln-eAY?BW)7viUsi%JBfU6j;<BXQ(&IMdPyKo=Zp0qIW77{pQ
zZxK6VK+NfVW@Q-6W{NRNZqLeWW)zkt42YNGq6`wZUSMa)9Fy^eWLHsHPh@woQR+Qz
zh$#cIU<R{68bASql;O||R2-WIb{k}|C>#JG=U{_erS0)XdE2;_O|X>0Z)>Cxykcax
zJb};IPXe^$jT<qSU}F-MAXW}&RZH0b20%a;J1-1`#ISg(g2*a?H6XHkT*u{N!)4%@
z*FLc8GdR<AO$pmi0fFmJ)Y;wFw=*%QAGJZ}GFP&r&^0klwcXQPVwk;zg8WcG!6^l-
zT;jEeg?W@ryvG)TZut6}U<Dx(bFg+uIRt509ne&5FD~2dt5@#S_FQV;$G|njNCbOc
z2jGmWcFWiRU}4IWcWwax(QWp)I=V~9qS;R}fV6^KdC*%!Y8y?wq>W`Pu&VeM>iLX`
zy&SRc1%zg2Nvxr9$H=pxzPoF`Z9PP}eF#%#0>h+P)4tiXm6aVl<MWd_VWg$O{t;YP
z8tX6<1Pytb{|gj-Vs+&~dI-gPW1E6#yrp}T$q7id$DVq+pf&gbp9|@|MrMHK2q2EJ
z-8K{;WwZNGB@Lclf``#MfisuP4$tH&AvtH-t=^3y2dXr}b?d8p95fqO@;^}tB>Pe9
zKvm*xP^AVeKS>}W%a@}9l7n;i(@tD}4hhgS1h}_7gi!GW5MbknQWY6k6y&i$h-$Ya
zFafUY#gIVIhq9ID)Wx_nZhpauS10SiVAs{mG*_{kOqIkfz$!Ys(VjUE95VH5FPpe$
z=SGdfeE#@#6->rm*^dTr3#kMjKtPvz)MarPI9ngk33P=IrrDS)hW7gu;1%4#0B<Ak
zDkqn8iM0m}jo?+P;Mw?$+*cJOo=Cv@l^I{>LR)9*elGROtVY|_wY#m?#kf$9g=IQh
z-Y9t}YHcxQ8?Mf=)Zo0e-T*ID_X{ee_8<uX22iz2TROv@?*pxcoc-<qRPhuCT(Eix
zY=9cl9m8W1$=xo)pG3j(`?}^mM##mos)4Lbg*Uw>=pL@(eiGQ%S(d8dZqp^W$4*E_
z%MIJq3F-5QQ8!O=18=;xFSz+okI|I4@#YlHC4ta-h{T)V%#7K)8TEa&h5C{=SE~!~
z(8$2pfkpa_8E~+exLLH0Q<E0V8H9D-%R*tRsqSID<#=0I7xS}MzQAQFd+N#U7N=gU
zYetJR_6lHS)Dv%HX*R%v(+}kC)!lPfbbBkT*Jf{p-9DB9S^8h&QmNNP8k|WnyF1*-
z;Ecy3B62tHMrL3=gs_fYU^@-Zgk9XFc}N)(creK<YZ8Lybq`CGhk3wyRp?UV%J$CO
z0?4?89juJkhe)$fj4|nx=%DjUXowq{($u%e)CN7x6K9xk36r0_b9RlS9LuHkm#EQn
z0k8Z$Frxu;<P0HekTJnQvqeI}lS0CUKzaZB8VQ?wEjE{-_e6?S%lHjs@B`GdX2H=_
z{xlS7=SoTxQG%_xMPxDD9?QV)JVPC9u&wFNWO5Gb1Cl8DFhHBmbw&ujHluO$<@3Wz
zMUF4wp2*q%X;gp=zCj}>mLlD@zXZ8NQYv5)Z0+1&2}AZnBewQyx;X&gR+l=UsDNo$
z&zuJgI2Bb$05&FRE(~ZZQlV1PA%tnlnCk7!aLkq<zEGJ~WQSsz%;hu?5-zk)(^F49
z_0&`7ZB{{oA$l7~iR)~R8d2#gH@dEpKhaO}CwW<2wTn86tFyRWmNH0QQ+<gBSlKh8
zp90s)dgMON#^Yfb#;P7;VJtR1PM&;@{`aY`(Qvrj2xM`sYNs<Rs8Sh9(mXeT{ae|M
zny&>w`ztoK&6)$Z{Z+}77*HhF5k#?hEEymPLIQ%#Na~`W697v=t%NCXkBhvnd7w>g
z=-+O5Ab{>RT~HUGA!tD6DX;>(GOw0q^UB7A0jXK}1WYAN*L%z!2p-r2%hN3|F`@yQ
z1VmAIKms&J8jnWA@%;9X1^ufd6-}j>*h0(a6I?w`0E0?t2jbL@oq|@jR=6~5bl_>M
zYS|=`R#Y%4a5Z+d!Bt6FUvtNk^>VnR^=Qy<pBhHz&a70vUUHVJoAgzq2VPrSWDhX1
z_h_f6fomkR@=#CddX(m62Yrenm42=Qw~_Ac06aAKcLcCbZr8`-cr>Kp(z0aYn#>@z
zbs3A!&&<mgQiohveZ`ozBw2eqzb_P69usrS%Ali{bcTL~EkZcY)CYZDWz&3Sqli$|
z+gvK!R1qpLe{_4dDD62vz47(bQ%{k$3-w-4oo60^2%BZZz1ROvjH4^#Lk=owJZjMV
ziOOJPEvG+5i|D8R(NFu`ID7Q6&V)&sq&@X<r^Ut7bl|{2`rt?IqRYSS)iekLJ0+Di
zE}cC~|M}G?=)ni>qrW_HZ|N@l1-kg?(Zo<KvPhEPz!l&sVF-FcE%8k9N<l5xkkIl#
z8z##duVwjCA#}tf!`ZWobmdi7(`&x#O8UfK-A9XO7HKYoMynyGUpzzCz4>k8`u?E@
z?-zse2$)5*S%8e)^9yw2+i#&S{oCX8PyhH?+P!->z2(Mt(5aK(phrIWpxg%_r|+|>
z7qqL|LhV{*#^Y;Me$isAy<I5`%@QR*URI6&$H+7qEzu9Y=`Cfy&C>(-|CxB<3L#|7
z1iV6*nyh*T=VCRGWaO6Rn%>T{De&y?x1(&MGHw@~MEUaaGF^P+V!HnN8|c%IJwjjk
z@_(2y{@VHX;)^fRm9INauY3K~bmA}WDd*y8?Zc#R6?ii6TD=CcrAG-=m=SiO$iirg
zbQPQTK~~8vo}@=D>)=-ip$r!}c&%*+>MhUg69$AvjuC+!fT5tZfb1%g0@{?%Ia<GJ
zlB^>Goga~TcFQo05=e0!b~YhtgSk1I$IfuFgQLl<oV@RV`t^w2#8+UVqDxzu>G|hR
z(edwo1HIvm*U|$g?xW9s=26<SXRqlD+A<=0?3vT2>8F48U2^|-Z@*3M4<=(bR&AxZ
zl;YyjS^CMJ`FVO-X-NJ9xBnImM?-qsP4A#<zW0svf%o55?p<eSN9loZE6`{(k}>w~
zTi;7hm4{(}aL0$ln<E+y#1<FN&?T2%M!)>-_s~5b{}_Gd(NEF7{RgH4f!JYew-{jG
zK2lE`EXBQrRFc4^TF7*vP)|Me#M@?V@4rz<9JGb0jJWrdGv(`b70Fr;Kwx&5go$FR
zDrn%9FhOJ<tpu=&a*xz-Fhx#P3OPDp6?q1`2q9Hb!=PjUuPK45C+Xfly_@#!-!Jd6
zbLUPvQZkfRUG;kUjoW^Ye(qhj(mQ|R7W%^D{~|vu6A%l?TvI2$2a!rmSQ(&EUCkJc
z4CIoELX|X^!Vj%xjPia1AV0Ks?AS^B4;+#>b8I~71%fc%^9u{KYu9cXmhrjy`I(Pd
zBeOjJz`;W_nA<_4;ZOjW{reBn*~PQ8JRH%k-2!q7$o2J-DR}f#50&lML(`Jmzv^xh
z9?0$bR8pu@6XOQ8KzO{4;NvZ%ezhfpK+=B;C381l0$5AKW!k&*A_7pOd1Wv`y{$L^
zH7Y4ZcH*Df;$R9a(b}=MygVwu?SA^<n{KARf9%ur#V>r07D~o8p-qJkHlIwY=4Jc$
z5eOm;WFRR}ZJ%#xG!)=v|Gxb+8jht7QUFV#D#aEYKmtbxBu$F7khrbGc9<YR>|kkG
zU&GnfW2xuaXP=?B-f$CLcl}%Gw%>d&J%8#{IX`z35-<{ElmoHoxZ!{Tu;I4yUU=bo
z`koT_xcc}tbobqN(NYP1T(oZR1Bs#j7MBsJbfg*FM{WfTn1C9K^rq{s7cl?fhyO;v
zK+(p9f_fnZr67^Kj~SBGSp+2j#8!YqA_xL@70;!mWf~0T<oXA$dow-pl`qTMyvu-C
zuUY`7gNF~(!GniYO%BwRSV5t~hmNd_{qacZ+gpM{mtOh`_a=F6D7RnAQQCCrWv`TP
zI4avp=q7!9<j4`4pI@NiXe9Mf$9FS;H`2N9hwVk(4bA&O!RDFC0ifU%+Z=B6K#1gh
z{NjA0o_gvjZmYT7lRJ^a6el6UqdfuL)CN!!j6pJTSLzC=aAK@o@{=(^Bq#cbF<{B3
z-Uh84o0merPNck;*_kXOk5@BMD(z(VK2b^!{mQNHq4)jzFVg#d?HA}*f9aj{qc`6`
zuRV4--E#Adw0GYDy7$Dx^c}A`M$bL_Ol6<R59#5EnBn~jR7+)Py4juy3Q}3SfS~yl
z2hqHux`P(GR|>3{x3D&{EW1k(>hqufXZn+m-ARk5OD1k^E?W?_UITJeg)a&NF)l`g
zFqMrftt)?@;b<iH#_G16nCRYn?xw$e<dY>>woCeJxICf*CD^ue*S!D0pOUQop-r{R
zRaBHY>836b)t(S|EyIUQRZzco?HrBK`&_H=?;ML{4u%i}@O$X5AEf(F{5j1H=0v)%
z3P*5YLop|48z=1^7lg=!T+}rKtqP7b=7MylN>JYe4Y-8lkbWH%k@oD_Lo^7qG#VL5
zN1T5z2}vg-=7G480UrC@n3>w=T02v+yByO`Km9b_^+$KolTSV&(pM=VdyYv*m1N^z
z*JIP)j#R`E72{<hE{IW3LD5yY$1HUigDp&R9N8MH>#=w^mHAz+Z<;r%bQTeV>Fm-O
zn%}cff)R(Lj!_({ig@fk4>^{hpf1F!dS;WLUE7syo>%p~fbb<?B>>21Eblk9S`Euw
zxBV_HVKyDBN#?cYBN~s>cDfqyKvdcn<`-n143~$50GC#Ca@&jExI{hKsRe-NnC!8(
z?zwuU23HBRx@3+1p&Q;V-*hxw&JJvf$$J)2fT+=U>}zj3>An-CToL1>E(Ns&#1-(j
zYJo2FUe|dVqt@k=twWWh>#5O>9T!RaKK!8%(us0CUYOq_`&VA)Sc2{lHV$NbZWJH{
zY_4Hp*DUXi$0i2{gmzVPST3KtoGQ`QgKDt(=9T2$K>d2tsi&TL>Zu1`2(#P3>Iq%?
zI%j-Sp*RJm2(B*R#$Hn(OX7tx_>*#O%w5%2<OgnI+?^z@&y)Ps47FUtC1jd5YrFgZ
z>|F;`mDjTV4%izOg540M2!bHR-oSz)3JNHofS?o+M2cc1#uAMsiAhX|CTg&th#19Q
zVoCCHbCYY{&CN?&Ni;WBklqb?-pstSbI#=~)b*0PUh=}f)?Vj7f7yHX%<TQI`S#50
z_GazS-P{y?`dFfOZ%g!{V%OIOy?S;-UhXk?4092e|McfJvUh}pxhZ3zq@)-(Z~T+P
z7G!1k&h4AXzk5geAt5tbFbE?C;N3g7Bx!tgbtRwEZ#BJFLFYG7QC<d(A$VmfG}HBR
z3D0<-TWKyWEnx#jA4;OnpTuoSXi;@lB?BiMia`I%WYyPryE}anUOs8rswE2YZ{y?t
zxXg76%>tmAXoTjnvJ%wPRI!mD;Yt-1<su&ql()^}jXg0KYiii*L1=nFyey}44%aj^
zur&1mRyK$}`}8Ax_wAP)b|U>MEWF3>NjORooik4xK$b)f512P)WlXbpb(IkxSza}@
z)hI40Vp%9=)-!NxbkEi@f0+-`cYs5uOjTlDu2*EJufG&^1ZeX6r6tA0yBgi50QGaw
zNl_t@!k0>}Ukla^rkRZ;(XaB#ayDGKKLRpV5+B%@tE^;sR4~9G0BEb0tttHSANbGD
zJ|S<WHe7c@@?d=y9n(O|ZHqi=@7J<%DE+Lac4eH^&#gjqR1xn=<$2B{$Gj;Mx=bWo
z%%F`2bu4q`g~_zidu8%o1<SIi5CDW{#l=M=lNugx{4yJ=ti!^0G4e<kNgk}@^>(l`
zo}W|!WUdijR#II&zX)$D=p0%OpJkm=vSdDR-*v{av`^!%lzFAb9m|u)BEQEn=U<&(
z|Ev-(OTFcyE5;s^(hm2ZXlmM|iL`V1@_W)wi<T{v7YDRDIgpHX?No6)LW|y`QyDHY
z57V>dtaD=g%GfO_V!3i%3RK~9H76^8hl)PW73=N2dj%+@a{oThQ{@D*-9cG-DYqr^
zsipqiy?qPCMMdD_4$W!z^6zlYK$$<(VHj4ZpMJDFUS$6KS(kILgk)bUvNzzCMtO+J
z+=pu7d)?2XPb7nCuAAjUZR+Pl<t0fx<L8*SOcV2#d7|XZykXiUJRE?`BW1er_J}b<
z^;WX{xoy^29-CYjx5av(=1iftmT0_RcVGHhO|p|}Ro&3=d@8b$@%xZ<v0Ca;G$@d*
zsJIYS)m3!AhWJz>zdXo9C+M9A4@D-1bn<_`&%7}j^Q5Or?tISI^x(MBj+Ta(HT5=I
z{N+RzL5hou@y_mD=xuF{Q6A&@e|?`2BadaGQ`)~*P{3otINaHkJ-kF8^$R|R`l09%
ztKZO5Rx2{d&%ev#hTGsUbdqx+_nq5SJSIBj8z9#U3ht6TDw!5K&u2Yi?=tyz73Amh
zcZbI|f9K`<qv|j|z;n6))JJj--~$@p?aj;#65MH6cexFg5!K1{-{tm%2aU)70Uo9O
zEi;^G{&zWQpR66VNc1ZR{P*Emjiu41)cm`%t2LHCI)@v_hsN;2<9Dn!(LbwItJONp
z#bBjUkHg3{<CRYR2GLJ`sCu5<m01f#qw&g#+%rlh`>W7E!@{&0CkC!pl>Mj@sw=M$
z<wd1-s8X))`W1fzAnT#}|3Hi<c^tALuiqt$?;9AU@=y1^o*2k~MX$7L4AJT2_OSl&
z*BLeX!v9;fY5_M_JAC=YS9opf7Pt=@2Im28WU!P;BI+N1{2qO*ZSl^&W4QF;7r6Mr
z=QwuyeN6Q6!_A)v)FM#D#MDHL?JixrBX#K-0vFn#L;Fs6aobL0<(|gQ{YSCt`K{<_
z*@ulO6%HbXO;PbZSogKZ{KTb5TCy66i&i3NW+d9RHA8txu`WzU3;+UiYS>_waG3DO
zScFH#Au>81p5rD`f0_soA%>ksONF_qJka=D3?~e5bw$M7ShQ~0R=mmR1vdJHmtGV7
z5EGYzsJLXzj*5qag9`&K;(4V&x5phNWJsHJ=zzeWaKy|{krEs_7ZzQ*vhm9F7}cXz
z&4Yr&F=p%pG3JL1AC1uPC<5JDp?4oEqB$PJM~sEG0Z$7y4%)V950A0lY*0uJt)N+R
z5udmO@e9&0edb(re9D6AE;HD`9w;XMn|Cxvuspkz%5p@{OGaNi2b7Ym7@*Q<no#|9
zXxFX-#&}JUFw9nM+F{o07$l~wKtj@TgoH&?I7k<vU4SbXCstRWNUx`RW5}@40u<Oe
zI3YGZmFid~ymEAOVep1zQUVvZK}?I#9~+lKvKz?q=e|lJWgj131kMOyz(;ut7|k!W
z1j=>nWR8&@<5=F}%{FcNOvJ<|NeQ1D2TS5F%k81wpqBAmT3ASZ>Wq+(2*k}#MqFGH
zA|qm9V`VGgiGZenfMI54?J;`vIG8puK`9w*PA+Z;nH2#?CufoAw5fsMWALD%h>b~r
zV}EBFI~DY9mE`jpGGr)XV&XAx-U7rYBqJ<*4!U>mj*8N9XdVzv59<}}zkrYoUI@_U
zOzp<ZOQ1TEFfT3<1F5}|;$qU}{&015XG5Mr5eY>aIm(mAgz$6ZNDqY1o{O$syD^X1
zz@$Ez!QVfK`o0kJ<|hhW<Hvie{8a4aMPqRo+}#IB9rce|s=E_;EsY&d<Fjcq&T&I^
zCBWL+n)A=;fC~XaF~Hds(J}FKKamUbjK_t5CHe_k!+@}WLVf!>Ad1FlLIUZ|!Zgy8
zg|Me<WhDdxGA#mBsYL?tITsbi&47x4<bKm;VEx8duwmmiyts7-mMvdPp#C!qYLSeK
zsGWY;{89!yJja2L1&L`$U$qfWlMa^?=nkXg^E!Z#=qxJCCw+Fp;w9-wPhW=>>1z-c
z5slWZ+fm&m5Rg<CHdt0x4tfz&rc5J!PeuZj$T`vI(xr>Y%hPi_=|fMJjq(hYI;^a0
z5EUIq&!-S=DVQD<g4Q%=l<9!S9zCB%?7VomxVQ<a0f93xD>R&Q9g6H>>}|(7LV7cp
z>b4eeWP-O35|dJ~Fl7<Z6h%7Hm4Lq6{4~+)izK?9oJ{v3`Cb<REFj>dDbY@VF##Zh
zNxu^k60u-mGW{k|f5tJ8$3Pi_b;KtJ%#N6Y&YinRxUGLcAnD{N25!VF%h}nPep?EN
ztSkl^2CO3z7T>dHPX*|(F3N&{jg1ZL?d?g1ePL&3$Mwp>jJ#|rD;G+&3>Kl(PNm8N
zR4pXwy_q}E{C?rwX?*nIhwz^42g}~{T`Ml+_8V|W(J~+;A%T%mvFO&L2ZK$94>3qY
z^x7gKGKTZ|3BWCMDlpJ+Ax*A{4hSIG-`NH0H@%EEw(rKa?Yr>OD{o@rL?5nG04e27
z6*yxi%ap-<lGze$e|s<9d}|MuuUL(zEIQ-*weKWcK6UXjWW1G$?Q}2wx##)YCE%pe
z59Kzk_@RKp<V9%+3YjGUsql@i(IOW0%MKfezKk82)aD+nTC)M2Nv{bgGj_2y5#FoP
zAaEvrunokOQ5Z25EfpA*1`gGpw6Ea;&69->>g)d9A8Ioo7}EW#!`F>NztzsznkP0z
zjk&E=Pf2*M^6ECUG4#<2MrMKZOAT-BAI1i5+<VNF%OAp>QS^&T{q0WvUv1DM9pYlx
z>ql-KX7U^5Pf~S>9g7Eln7mhwMa|E8KnhBR0y-I^EPB!E^39_0_)Wc~1xQkNwe>>@
zsX&DW>R0#qy5v_;AeY?J-IpSDsXQ!vU%h8|{>Xd_#{Z-k!k)%YXjM^t5c<eC>VWqy
zoCF_(hK%IZa#__4BI7+b?=tKi2Oux+C^9p5k)72Pn_qs5K&h8dSzgY$p~Mh*%AzX*
zW`tpie=xRY>_M~UttnhD6DLm`N8f%<Si5N(`t^5~6=LYT2Rz67AT)A50SyoE?vY%a
zIdzHvAajJyi9`3Emh5SvyqY9wtv}W8;yx5#fAcLpe;8LTU&b?iYzZWaL|Xz8s%xqn
z0P6)jAwZ%l2Dl7@RwH1efL><pJ0dh<9;|Hp;r#jY$UcyT&;R~8Mvd`;*Cb!@DuDK}
zo>u~PSy|g5Bs7`~0W%8QJb`1!-X%jH#FudNb983o+lV;jLEz}*O3C)E$p9>+cX&Jg
zW^4>gVq*|MS4XlU!`L{t6d(Xb3j${x9Npm1-wlDm5vZ)H#gW`xoIP_E<|Lb0;j!q|
ztG5`K&_H<W<U9~FBj%%Z+YZ$CbCfLm2#QO};o}>G36rOZA*H-KTC{3S&$|<yZU~+^
zhw8si^&jT?iLc$5hXhXbQLF1l9%m*Rh)0V>=WejIcf?2ne8v$VcJ;HXIFPjuKi#-R
zAfhjUJFXZy+!MnHu>1Jqzu>^ZEL^*Ooj?RHGK5D^yA?v06&XhM{rYomng-<~In2mI
z%g(_Oy{&Bp6f`9O?)<rP$fkPp@7<%m24dK-(QNQ5(3$%nfLU<xYys@fojHxXV@Jst
zufn7${sa_GU;u!}uIPWumSkkp^Ua#Jfd8~0coMCg|E9XChC_cO<dF{(k)<iiTnu<<
z0l%r!F>JU8zWVBG<Q~r9aX{~|!5Io0TRS#HAGaxhwBa``5T0YbaQ*s^IDGgJKK<LL
z7(qbj1Tto=nODSf;)jd_a{@E%>>MPNZ+1i!16_39hVRMP@6n?dU5}PLZ5Mb<96W#z
z$zXRPV|n`Y5Hz8&SXfjf;hQ5zda~D`04;_`1@VxL>wXSSY^=)ob#ZY=J2NxxI~%?N
zK2G+XhS3CQd`<n|zkeUjk!+~nY|Inin(=dL{$s<Ro*fHs8ke_j-Nq5(S5Edp<QLo%
zFlxxq5duy<P>I<k)UVEPvkd`(ObK*POj!o636t@+t5>ma?;aT|9XeT%(Y}GkkrRPf
z`Rp1)a_lVf<-^RZBhlXp8lA_ZkwK@Cg$40`n>cwY1MT8Hl#_D^XU?2Kx9+`=keEty
zTQA)>(Fo{kVPS!o*aXq(4?lRHbl?aIs89X@!2~=G;zaiJOlO&A6(5F=7)81hz~GnY
z%(=5?VL>2rR7@PT(*xpZRmUO9P0@t(PNRYD*F>%x@9HW%W*re->1$^XpD9zxW7i62
z&z?bUP7azkZ-LOT*)-4DU>fOLR{}!w^72G)n>BBaSz!?bCiRlBq>_6F1O{QW#~6I`
z?YGD#S$*>9CvbBcNWgHI%x#tYtN>G{$}^T1bQoY{9tjv_ZEdT(zI0x*TuitP&QHj|
zmk!vjlLX>cR#qq^0Qxe0A1+?Jh#!9Vfq^&Svv~ID(Iv?7BwK^XTrI!Uo;fmi?+`r;
zi-;n=HkGl{fc+vm*S<qX0lYfV*pqLH{*W<e`HU4N(fy`PB`+cX&7;5*@u>3g^T*<)
z>C~r(IGB9^neXhzPe1*H@HsIEBS5-_+ErnUW5#&VygG`2rlqtfVuQmu**Kh=0|x@r
zmn>Vw3kLGrxoZy`q;KG1lBu<=J=U$?!urIZbwlBX+=h%LH}}CTGtsSL0$9C$`~(Cu
zB^}(mClmYk?Ij&*g>4zT;o|Df&;Fj>l>P)ofp@>ZReLQAfMpY*vGHgue+n$JF;+_Z
zr;>6b?xMoVO<<zG$`^j+hwb<6p!RDS*YJO>@<208|6C7T(yH)4=o70_5#vdPuShNo
zDi0M%Mb{0_1%QM;dAk;>o_aZ-9tXB*)xzi#b5Eap1`^VfFRSW+B^fL?ZdPM}+YoHn
zl7SP)kHX3RX(Y^>gB58>aCf%D+SSVmsENX?h*%D>VdH|qBQYvMXGde#TN&{49*vhb
zufyt<sR;D*BBQ37fR%7DN{b5%2*l`*NxlJOgk~c-Aqq!x_91)!ZY)|j58r(C6?_9i
zI9W317?FHXo?|D8;k|Lg8ocr9i@1F8EV8pQ@$B+6{7gLd^7hq%at!hq0Zi<T!CqVp
z0x<x>9&utQc~ADIb6~~N6dc^2i7OY+W9RnQv1!9v0i^8uIf{|_h=YxH0m3Hx&7eG6
zSCN*QfTKqa@(zzwZ!)f2xrFf({Rl|vEUWSQBu`A604*GXsmsZu#k+?OVjc0A4Z$z}
z>mOLTECq)T?H5lp*_qH-p!}>D=7WchB(UWOo?pEbXHMqgVAk7Mp0<#Tg({5j7|$}2
zaJ8=8dSRkZ06zNY11wI7BVO*t@nhLoxpW~J^t<8gG6b#zhce*BAuXI>UcyX<4j(PK
zr`9~XMEZAN-%c!9oXEztgw#kl;{%a_D!LQ)>4O+voyZ%(wyz`BuYDG8z4;meM0r@Z
zW;w1B=rY0EkAOTI(XoA*Z<DvfNvwW$89sRbGWU)1f=Nh|7_21A+WV3(r@`G2%jsDH
zkYv}wQ>Tt&1@V&jD_#_9S1l)Ay~`eNV$@ZXODLOou8bMyjVqTfQr{Mmv6qDtdAam%
zDh_35!PRXr0c|cQ<FHt07|aqQ)Psz~w&ba{di5$SNQf1=?<HPt+qM+|2naZZMT-_t
zy%*2~z#!tUrDY#%-n1UCZrws)(P<o~c9y0k<NNQw!}tk4Xwtly3V$*x)JYEEV^1gn
zeO}-8D%P)Ch0`aG;ce34^p#5pP_QJAAxjhxSSR%`cwA8_`ZkFS%+k_wq^2ezIVl0x
zf4nX`mrn8ZC(!U3mMlp@E{)Gi@14h+8Qbu}hIOzYu)t-2tAJ2f-oFGstgUTChZWBs
zQaf$iwj~gxp8ztqD1=x^Nb=}uG$O-+gNBeE*ke2GT=w!yn{esk1p<2xAZ<~S=-s$+
zUcy@~z++H=6L<H)WDLK9HP5ZU=~H<)b^Ki{OG_d!`x1G3c{AuHhPx~r$lP1UIjHEI
z7Ypjdu%0v}fOzr@;^XEbon*Ri&rah1Mg#>;#%%(|!e&PiC~J<t(Ae<x@g#sK2YjTF
z>>|Sg32gg<z3z-Z!Ws>G^NAPhq{;q5=ls~YICNkScD<c}`7v_@ObMA8j%Ll8%RFRC
z;Ix0h44EI3NCvxh?!bu?N3nLzDlz&;j`Glr*)rw*Mu4QP09ZMPvaxJg8jjN(ot3p$
zWO(h`bp%cirZHxYFTVIY>01)sd+!4HcxCHLTrbJ_8hL^lhTiJ+>Ao(k%+}UU=G~N(
zL;{|&1n^zCVkwFWix3(bAvw)bQx=kb971mHA);fkjDgV}o-+O`D$D5HLp-52ZG3^s
z23nvvNx71?Aw7M$csF`^O_YU%_pe;UvviHX7YTpcvSl-}4(w;0(&a^y%@AM$0memt
zG>}|TtRLK-JPQq2*F}$Wa&m|l*Kp&;4V*lAlIFROU~X>C8$SrpWxP+Z_DPcuu&1Id
zSZsZ9GmVF?q)$^hx&I?~W);91fPjb48twSX02p-n>mGA3s4eoD6&5LS2@3SZjyGPz
zZu;)d37<*2wu9!5Ni??lF`WX4-Oaxvo`g4V-ojMhiFoamE%c39iP-2!@~$<*b8B9}
zU;p|sW>8%juW!W*>(?N3=5)!Q=Ia;G&^J(Rkivy&XD>P8MF|1q_Lv(TN4j~8=<~z&
zj92mI8?PdG##91~GZ7sd&pODo{Wp8(0iRWQxBvSjfdEM$lPp5Wgph<y!W0~J)Vh7C
z*6Qo(aMbqga8<3gwp#V|ZLM0h?m7qVJ-`J5vIIf)lrTr)Kos(v|8>5c@r*nP<%53(
zbJNqD=XuU^pL_i7`}n(_>v#Qj8)ylRuTPYnqwOpAAD5A??7cCytky@!;+j^5G{Fk=
zQf=pGiKO8r0ot!%jrL-Hw*jnn*bwfOrwP43&v83OnZRKz=ivWf?lSwF^D-iWZXb=K
z{Q5wwxV2khSq6=J*kSM4{sH{tf>~ZhD*!7Up5!y(h5@MM3R8nu1=+5Gph^Gm*xuYD
zMkkZDhtKcs3)OSRKX3(`(5L1QfB@O<<TIP!T=)lm#s2A;C!0>mNoGL*DrGHHNJj5o
z=FeCDMZngx<~J8zDF##};EC77Ndg+~xb<(Qx^I=(0|U*-5hKjz4Gl^?K3>;WxT(hz
z#C$msLFWhVy#qb2y1Joe_^^7Do0Ta5>{fuo>Y735f)tmOnIbtR_uX@+X^<Y*h~dLc
z-OxI*KSs+b{mQ%`5F#Th3!!3#8HE9XEx>*@^9!@8yu8X}Wp|fz`A@TB`xmP30JWpe
zj2JP@tX{QLjHD+#QQKCdQ+LQIA6h>O{hIslxkC(=Jo+-MzFrPonR)!-`{WdEG(+k}
z!e)w@EZPeji;&Esq8_HAyo`BLRxVestOr^`5g~-JVWMJ>%@W}7vKcsVfPf9gNDkW<
z0)QqeB&kp=iq4GDfd?OMHf`RlvHqti>d`}O9cJq5>osSC1qwW6-kbcct~mlgK-y%!
zSn>y|f8rZ2=@;|?`i@ioD8k_05m=)zQo<Ky|KS!FVXoLXV9twX?b_95)TohW)W{L0
zM?t=sJ9jppy(xg_lcp`2hv8<V=DMc3FV47%7%&-tFKW+jITQBI5KN&3AI&$<YCdag
zs?E^4q13H0;=L7ebjOT61n^BjGHkDPYu5@uxLbO0CCp`=#%7SNfBxAg&CHq81#lf<
zx{@Uf$4yRPS6CL;{N<0*N?Id8sa(v3TrpURnNJmsWd`e_drpp)K%!WSc>*ZsnU%|z
z(w-qhoHZ~)A-LVl^l4Mb7TQs)mz|+divZSkIqlta&*39SD|6fHVywMqh7EJ(aTxVA
zZP_eF;e!!?o@Mx+?vX(V-yg5K9AKw!-#&8gI}ySpz(fGwD<-2`H`$PEV#r|CTPNpt
zHJU$pdHD`A2A#GA3qBH<H_!n$0V5J!ZLFf6CDb!}_H>gea5rQJg4qi50{|K}e3b0w
zEyr=z`7qt1p8cY0*E9*f-{<V1*gxM>8*{to3OLyy*3?unMh0rU203lRcBV{zhwIY1
zraQn8ePT~$?`>w!6?g!nu2)GJz}lh(^ECizK$gE&b*5jx8rl6Ife4?NH?(&03yQ=t
z>qOXEanB-?=4JrR%k8dpSVU+q;fQXrf^cA1N=F~(fLtE|jMY?EX|Ec}T1iRmWN!J#
z-vrEe5u0tG*|2V{?ma+bks;9FCXHQ4^EQHYsQpj?=mf3Xx2fCJ@`9l=cI?4s(ZYr1
z>8Hn=ezi61SsFi$TdIJ@n`uMe>ROmVeR}tnU1m^6&z?nuaCS}W8lj(NM?L2flM;FV
zSpngh`tAtTJ@&w{07XlbeNRPT@Czna<1tcpHhT0Z*-mFOW5#rVGu4NEiD?C^bM^<b
z>CaFd!?m8*Hmoss3#b#bimbN^?-SVB$FX;8rb=zDC@-fU09aVN6$rZr;ru!x{&G!I
zW0TfhsTnh7jP{pNhI?u~uUxs3gaDzPA?k~p>4>`G;#cT#l_?x=>Xb=hF25lr>5;ID
z^}MA0epm$uul5os!YBYT7WXPeQ|cM9s46Qeu-^d#`eUyXw02b#u2=*EP=#!NPPzN8
z+f6}Uo`B$?0zpTcRV$Z~rC3D_sr&RSDA2qOVO|@zY+_Co#?E@z{JSA@aal{OHMLP7
z>M86GH(d7@>`pd{4fN^L+x+duzpCE%-LY)`miSh?848H4?PLF8&Eoh5M0}&)+8sfB
zP7FGelpsTO%U`nm%b37@u(X#rj97w?S~$3p^Zlx{gJZt0yZ`Fdwa;<uU{r#85l6c`
z`<{KBJY#|WRIt4Ku)9cLN(b-5zH(VvI8Qoskq*P>uBf|z7(39<qE6}$XI$|*t|0{a
z0oERis|9dY0%u>z`OD2uH-m=`R|w$Urdi-eQBk3Pd77Nd;^J-so^I#$fI&kEnGx{9
z>$k*U%E`_&X>yW`ZQ+pQ=jDmr(!}Sw4o5#<VM?!x5tE*pLfD5`6NCyD_9zq!<`Xk-
z?p#wTcE%2|02KO0D9-AY%S`{;S^;Xw&bR<L)YkTsBRWrvoy!!q^eLe%@rHxZVgO)_
zIe;2swwpI@Kqtk^HkH&NNkBtiffygdcpz(9%Z2$?*b5-rR53Ozd#4;-m{#;DD<eZ}
zi$t-DrV%F6p<^-(fR^phaz)*f1tfOi?L>`VN=gb2L@R}{P?6(2S59^z8b-1s7+XE`
zddFAWy<4d6G#FU#O?uk_O9=ZhuFhAwoarj*#sCPwHt6Bl1oKG!VuTg-Q2kw1zp;5=
zuf6&S3v#t&BHS`J_D6FEAR)$I1CE!%npj6!**O3PDlnl66}F;rg*_wShdEb)5zv|l
zwe1}ihr;$~x0(0h9Dt;3-N&*Jht_$PDJ;k{vt~_4qbXTqEO3Ihyr=%><Yb{m<$>Cn
znVDifRBCMArH<|bpcF!gjuE#1<^*<+p+g6W$&@Y!yrXQ#0fm@5GGC@Km&rJk4=5z}
z&VSuv3i1mO`IgPV3aqNG79cUw*O-Y{q{BsM8U33#N6ulTNd;`N2;1qade+K@8yg#8
zM0q921t=y?c#SdW*RR$A;9x{FHZ_WAbFqMmMFQAzU|#4xFovW{ga#0T+-heRg>Sw8
z{xrTTAOhgZIALgNbHDxr&8k(a2u1FyBogdxL81fnot!dPz+`z@32TgbH5TB5W!X5n
z0&H+*(i93hLG8Wz>MLX?owS!Cst<!h_6zez#bxcFAxM3pW|**^evj_cS<I6w%#Al(
zqxsE52k!H2sz=!j2MItNeZW{kG8LA^+7UZd`vK#{-lDnW{T4PELfphG;&}0eX9dip
zv5plc$J`1iCNy#0ybra%)G~&}y-GAj8_+7N>QhDCDrDm;FDnBuX3q4!062|xI^f@1
zZ%u?Hma6?z<Ib4&5V*EQ49EHN=fi-}*g2Y5`kUls&y#(maF4ibA%pIeLNrOpAwZ-j
z?`oaP)^ey*tS3H`_LLhUZ`9XrfEOK-Sf9>k%)=Cg0hjdZr8)?Gq|S1!`^AeFqCeQH
zq!hiZ6!pUesOY=w7-p{>`@F(YwP=%{Gy<CzxC%(szkh!K8npwkM>Z?4Emy$!MD=S8
z>(7eG>}*9p6eEAU;t0aNm3@!-y#Jm%5zqgrwCA)AU^l|5`WngS+K0p_o8+*Wc&;WG
zn60p%a`SQ(x_1<pYH#v@e%9BlSu->yJJ6ug{9{w;8R?9p)+(Xm`2wf)8GEm6g=bhw
zN*ePj7GqmYW6aY8d{@`@)Bf^?zL!Y&rmF?&&P8|FmMVa(dsE+O4@w(4R`G*cu$X<E
z*aGuvuVOzQzT8#@aIV;s0gUx<to_yFZD;p<^IXXGOmbiU+=s%C?=Z)%y(HnB89Qu)
z=k<OQ8N2r@kBHIpvjPU6dw`RtcjcZ307d{n1)5ekqJFA&zQ@72p$=UaB<811!{>Iq
z&AC;l!`{u1K@&~!ww+K6+oXt@ASVFkNuj_c6*9ebOYcTs+=3IOOhdYEHLuGmtI#3B
zi6^|F2?v4xktK>>^ciOF`x!ae-2eC!#+jpzJ{G{p*kru}w2-q$Xoj-q0Vqg_TWp1O
zFp!evG%F0yOYM#mliNK@BG!$JAJf^=5A319snA%%PDm37vq=tRa>ryCByO5-#zSC+
z-m|3HwF$>HPJwkH))CH<7zcnq9dteOX~>*~BaxQYjj<5>0<a=}3Bb-E111jn?ojt}
zBE?$q#o^TgKqc2P20Rm3!+GPDjS?5m#HsN@T6fqEJEp4x7~;rh=j0Nm=iQ*$soxb;
z#vXBml9*$c=@Y3V;)(I{kF1Z>tG6^x9qFgLTLF@&02s(o26)hg+($r{J2#=Y#?Dw-
zk!wQZ?}n~zhuI^>6yvJ`8$%+{Xp`aKcS*&mQ$e^`U>E&#&7XD)JP=6o1#>C81Tb;I
zJ%qmt3UY%q^t6|KAz&X7)`qP!?gBdr0W2vkgZ(7?#};)CP!OlDZdh!y+SnZ?m9($`
zjl)vuGlm@m;7PonL<ersdmVHQ+B|A+J|LOeNI%>;5>VGinpK0*7gC#W*lpXldG@s&
zh4e04vKR-xZ{HdcI|#gzgPkSNxmaoSp9Fwae-KxuZo@#pI?}#@J&HBuwVUJ?Y6W1X
z#PWT>z)DO&ls{E0raFP^RaMpK-U+xxUrYD!?Vqs0km_QeWxRC+T83LTtrtj{t+3J~
zOqJR#fSCSu?AS^6o})Fd`?`BIYshEBvWL_D=)Kgk01W)Kb+QDl$NlgmZ{2xWIAMMk
z78Ps%Y|uJN!^XtU1Z2`W_3VcGN>tlrs05i_1@!RQvBw^-(5~Z{D|cQvS16+9v=HD>
zV<L87U=JDx_VT1w9sMAKBx?b|aMn6hZ>>XYUhF6@G~RbqVTjrx){OQ<LYmJz_k4ge
z+Q4Oo_Z2b+V^)AP*ORu_ZzqELEeSmHI!LM!h_ENPK>y^)ld)&%V4-=XkI5>lJxcfL
zV3Kt|K)3ioPF|&)+uS3D#S6o)dro&US6=_uKbx!na-A7>@~KLOasyXc{~0Dln|8|$
zw|RDv5M{>~pG%MLdt&V!AnmGr`q<e4C=(J}np5@@!1f?qj`wXh3|>DHxX*f@&BlCt
z^U-zzR3{8sMd0}wfKAVSR5%xig#f(^%zm9f&0enC-j`q!#=LFt?i-09i3Og*1@~z?
z|KDN-_&By5SqC8Iz8M+UUhKH30jxI0G~^3@@BPw_U+rzr+x||kj`k(qHdc}3@oD~}
z2vYB%@g0rFwW9$dH@!OneE2Im07m>I_Ixgl75;i)mF)pmypL#mL`ruK>I;Q|Ru=Cg
zEN+K~lyMRVyo$&|wp#=<HhJy=tP-uyfl#Yc7B5~PC$XywHtoPcjEScR(tP8{s5_DD
z4lA7cO*cFzA7=<aOXnLlZp6{*DCf~nEpJ(97A;(~&}>|XE*GzNy5TdlC2Cwq%Wu-;
zq~Msx>af~T*>M<qz$K66#Or9mg$}Ohaclk_c48aAmrY`FDa3|QnD8dZu@I|lk=PgO
zVFbuo{u&tAew!oa3R{X8f1AvLDgbmk^f|=rz?LkhKL|eqwAdm4GtCuaqQgU{7|p;j
z3i)fu{}V9ZJQj{S<`@ok5@Fw@k*99L7X8oKikS^Ep~Ntfaq46Pw9l_E1h>QoKUkYo
zfZ#QKk6@G8aGPY0y2u?Hz!k5r2>=be*T#kekkL<}cgLRaL%zRY;R3UG$r9GX+&Lde
zNW7nfu1_@`9N;1(P$#yp^hFwR02iI)oO@#BR=^ZtZNYL2XHQsw1lT`)3^Iz*mXl68
z1;KWOL`k!0sadCWxJJyCC5snJ6X`-UbJPcb>d?-w%m=e(nL33oO3MiGc8RqEax7Ax
zvb*Pa^XzpUV9DJZ05kkOl?&K6u`!p`>1vsM1~4;j+$rdwEnB+Od?cn(!`cS1>*m4;
zyy%k40K>zWt`R>X*v&SX3J*N^d*<9<{FX79GiSD$HFK7<l2)0?lio&n`eXqSmKE4?
zi|J~u;1qkc0PB5QTEAg~*83&^nqXa7fQJhgFEMM^to8xTjsT5>U`Frv04`yI+3vk8
z)xVzkVNVPS_g|>+!nKYzVIuR}hI7lRi3(l!wP@&*UwjrF^QM=aN1^E07JHrwx>nev
zdz~K&Xxke5xyn?xPQXbg0p`t-Pyv-2uBF&5h8AG^?%2Rg5@>~B{`Be7#S|_k>{KAF
zm~O>l6lSA|1u#xu+Q6{Tm9#j*FSgvF+943Dw5(M2GXqid6HXjwW=x-Eo_l6I_Ryj{
zt=-~wz<6@rwpW2ZT&6<i|0vK*EM+BbSfM%p$gEN*phA*i7vFZr-DpTgcgl(z+Ql9o
zcPvb3x8ODGMf;7{S?ra$jI_G|NDJ4Vif*6%?FArcXM5Rm04o}vwxT}sGQWhl3R?=q
zesy41&HlB3&HH?^vi9O{HLU<scAURoKM${ccJ>@82yuKjXR5teQ6N@)23B|)TKC-Y
z1<|ZM&&pz1|DlSb-C_@HyDena_OFf4G_u-iaNMg}yM4^qd40z*bO9<t2zgC-6aRdT
zs{p9teGk}*_zYJnV7!O_qR(9U5KFA%gj?UH_D=-+E^zqce{1u`&4^YzW%kVX5m0tY
zsnWE+`tmb4x&bgj+I}+5Ic4eMMFMOBCk@9_hvyert^?o}9J(!AHq(x0pL)zpkQP$D
zz_Y|%%oF}<JYf#>RA^92Y8RZb%E~?fRXgM`<0LX%IDi0LmA$Lw&}|^~JD*28p26nH
zJ+^J%2H;d$S|J8U2Ur_`JmJi$PMvYqKT()QoWi|zPn@<H3KP8d?%VlgK04E&9C{cl
zy^4zf6uzd%hzrWaE3k49>=)|+mYc#d0cC6x&a&I7erM25{fZ7dBpzUj2}j$Sn}sm`
zy0lyd61!6@%fe5eo$w!fF;*xn%*bWnsGwK1diC;_!oF~PwXR`Mxr{I7YMuI?k`mc2
zv0%_!lTD+mlPKG9TL?444@a>h2Pinz`Vs3WMU1>-jvuGcot5U6oB!^JEW?0EO-mDt
z@e|l$#tU1HJJ*%~oVCnpMrJk|RcQcOe&1j)iV=b6HVwlg#ZCa5o3)<QUq4$~UEOfN
zD`kvRhRGLUB`WL@mXjDlu=ARlw)$+iG`;>{&P+3U>{!`$FX>rLA$)N0;zg{BY=skV
zQ^=teV95af>%?3U&`W5b_5(m1+YVy36V<m2&6(a}FVH}k<BtC!**34d;!=TE9|F*%
zq^8248!>#e-zN5DeMjdmJ9a1F)#u70nOjf*c=f^TSrQJvSRrK}s~sIQ&t1^lOG`P0
z@pMDuTxM((er2^hBkXNkH*@~jBM%_fFI_nH6*7vt;HJQM#Kw~a0Im~&Q&C<a_FoqO
z5%#V?9Gh@!?7#)^w>BacF0ub-2qSYfrviI+v(EL9{!vM32>?&qdG=xhrL=;v@c>YQ
zg%bvJ+pRJ`K9vnSjGsI2yn~R_&Rsh38GvyTEKHLqC$yrnlF-L(+dhkZhVd_aTM1)p
z0IoF?(#d}60+tG0WIZbc5+F|*W$8y*MY*zr9%QmLUJYy3#%2ES{MEsonR+|cQKA_n
z48cwnBB_KE_lQY3+?;>G|Cni0COg?=(e|PQNM8(-)^eYx3i<Xy=lD)PKppJ0-(2{6
zz^jXX_iOX!8?QO_5GK4`?9l4k{yy8;FD~0E4)6jX(AtlioV5M3C~H8VB+r+;yaMzS
zJ)!!bzh42sd3GJ_nX&g~G_3uDSJU3S_+Vfx+rtVRUKdP`w8BudhG>u*XAg%U)`e*o
z-rk!niSLtHEymf{ZPpbV+MC$E`uAE1*5BUPgRQ99`R<_2?V-V(1$Y$y;xVw$esQzh
zAp+wu5#mE%mc{2WRvP^9Xzhh?Kih9U{|mXwGCI-!w~Qu1(1@*{@9l-H1&<_RV8fl3
zSWT=T`yjvO(>|NG!oaO&kCDaou69-cd~vN8mk?erZ?y(aCB%BfEog06aj?W@eG;M$
z|CdgjofRvVO8ceGob}URD3jMjiAv9LgnI#v4p(NsTmOEobf^?gBF9+O;S6k)v;C8E
ze(h=t%|_=XRs$iR_6E9bFqL4Le5&;CKT!DK=Jg*-puGeq#QW8Ln?fT_KJ9GA=FZ#x
zW>zd)j8mPPUnu6nO6fLbV&4u<_L)KltNIQyV<kBL#H05Sl0>*v48<^FG2t+;UbO-N
z>g?{>3TfC#n4cReBL`%woX;MFn5`G!6Q|H_g<qhpGWvi6&Ef@faU=pTjBqq%{5xLG
zRk1Qf-4b8dC^l9mzC#lTx6`#&-PFJhBaCL_#<dDT*({Bu0cM(XyW~*2?WI0a^AD~Y
z#p^X6uYzS4UscSCaA?6wTg}%U*lcT0M=qsWtZ27|Ndl<eif{-k6%sdd#*}C_0PI6K
z(PSSKfWulPB(A!~%oLj<U|3Pe>NR}i0h~9iYcL%<b@J~St3GHmH(qjB02Pyfh<aWD
zpsiBYKZHh7eO<i+C}Df+RBvf%d61Q?<&3b*%g1Y0V^0GH4Hj$hBhxvxvq?&DbfXLm
zprQ36xK91^TG*=5l~?pe59dW?!t2wg58*zE31nI%#7^2>IMBAckEEw(NCbL?#GqG_
z$x(?J2qBcnH@Z9eDmzbr0^#HW+z^6XRzYG0fn@$D?$DfQeUhQj%P^OgnkHa4*W7>K
zU4%9d8Z-zH!dC4cYaLfqR#4xUT8jb}05@Q|a<J!W3}n|O!?^Co8?O;ttWjaV1F>0{
zBLc+wRQ2_oe*hCt=S?L@P7p^2M<AcT;q{EqF~=Q8sA5m;ZHX|UV4|QY^s{q+rF(yF
zZvMyrq0QF6{{XbGqzeUb>H_HOD?<j?dA0*{bIX=3)PKbHj|B9QpuYQ@0eB`G=vim~
z41KBb;~(=_TU^69wCI`nVPlc3vptl+kX_3jRuIbkgCG0=9WV9E4Oug?|F6)CI^*=S
z%_M2f%@N~JH}b|PVDKgoYRG#E^A;%fm6x%Gz6b;-q}OE+0s!~uS%m#+55|7K{NhW~
zD1E38r8_2Yi_pT4SFbUa>`MtA2$hV<a29MnK?teMT8`LH3BTW^>qK&a>#n)l+;q$B
z=8Us{jy(~+X?RAUjimxWz0+>?KpkBJTTSii9WZ*Wh{sk$QG0nN4IDgF8BrfG&pkaJ
z;eUl`0@ST;_?UjHU_W~$1kKO>*EWQe*dYnvdac?qct{<I3^X^`gj*-JIcV?@A7qdJ
z-()e%ZO^rwxF&8GUE9}(f!7x1VC@58gWtscTN7!w0(T~U1wJdA#TfZK_ntd}Hf?mm
zo`m=;$K990bt4D3*FFbu#OMYFC-%3LafMIF*}jl%kT$m&c86W=<M2bUuB;$bcMt8I
z3ZkLM{Y<>5z2HCFv7;7%05(Suc@t?x2`&1;`)ZJ|6(6&Yf5f`j9Br&A%MKof{yzXG
z4-5>LS2hQ_5FYc&I}hG#wtYY=<kjneSaA*$MP7^FC;GL!`voHF8#e3^(`ubqN9*O-
zZWJifAZF1g=EQNQn&)4cOa{HnFa5Pbani^tc>T3kiAga?K-K>!EN+R}xPBeF6$_or
zUBeGB=bZmr^PI9&&61N(NKvqXd&0WGVImn=p9*w(Sq^e-|G@&LhL}ytQux*OFAxjg
zDj=z<x}U(KBJ;t_nPe@TC*kmhH4TLKbVy1@@Ob;S?aEZwgp*T0a<rV1RSGLw5-sBH
zj%^H~kjz)JlufQlj^3e%A5D6HF|7bJ#KeJ3Gv>fUeP=TMf+a){wuP8300vEBVaSmt
zyh|d{Xo^+W3{WP$xw>ByOp3M(g6L`o4gmtlbgV6;8}?F5AuoQNfP61J{}f@P!$yuq
z2TTA5^Db}_KylOo2b)Qg-f=)afCxKM(<=JdgOsAJhQ0>t(F#Q~N;xQ;MILbqz|5e*
zL$wap5xytqPJLaEt(D1neErpz<Y;}V@FHhyo&k6mQdcjqZ=Kf9r~1z4oEJ-Ux~_h>
zM6@TEbq%Xcikx(RXyO2C;p~I0vJJ7g^tX}s`t|ECU?v+Tg7k|B*Q=GSNK*>OPrwm>
z13)yWQ|v0Va9()fIW(chj5$ba;uEc}CRk0iTEC+Ns+u-KlmceN+J*)MuWM>*2p8R{
z_qH}R$v(D`h99Pu+NpN=p_$S$V=d+7=PUWcFxk^4fe0%Qh-d$dY&as_Vz-GwG}(+C
zJ;rp;%Li=xQs9o*RJ48cm;=#(QW6E6->r>}fEm>S77Ggsm@6f10AMXCE7ux6%G>Lh
zUv-Fk2gx(g(E?yn5db#OBzH*QdTCw>Bwu2_f5b5Y!)p=5)_oZdfj@viE+7DV(VY)(
z9}bc)bWV1Fa0J}z>qlw-9H8qPG*;LfjL!iBhe$-bKw#<&Ko&8<0RMh?(vL}8Ab`pd
zrzerYkw+e*Y>q|Vx&^>$(l|_<I6<J-K<SiK!5Y(^#i6Wkyf57{33kt<onc|F?5_fI
z;wC|`0FA6zeAqU-uQUSNu^Z0}WvE2sPyi2mwwOljW7`C>jn=%YPukn(6IN;b5ao{O
z?`aMRpZ!GRpmu4mDs;X}p8)Fgeqli&&mL(CGPmnDZUA(Y78XFB`U%Uepr8Ofx4gVu
z*g@MgAJP^BOp^8-*8?{3&kr+?i*DGFFJQctmXwgy^3H$VCN}e70&j*gSM({FA8i07
zht>^aZm}@|<tvsiWsQoph`qHo#FlFZvQ6x`rl!`E_9_On6)2?e$kh@|FEFQ^dWOfS
zWM60Ru>OBIJhYGYJp91F1!$L<!;d^l&ybb0Pt0zGJ1$f9!?Dtz`~Ei?N@CgmvFEw5
z+soc(v$Vk6w)gSjZg;@jS513~&Gs8z+8K=PnMacXU2<!`*?&0+a{@v6b{|D<;|A1a
zLP0ul-*kgeKtI$^=k8&{?r@!>0IUMsGJKC(VQl%IQ3rqZmZyysGpE6MT+ORCm{*Yi
z*Aa4rZo4CdaI(vSBGXzQIcu2;Jz6dB=hPn^FDGuH7!jp7icdZ9u$;?-%<unjtup-$
zG|xWs7(&=}a?H;E)g`bl{(RLX`hGg0JV}wdPSM~-p!-Djwj8DUe!<kp**f*?^UTyq
zZ<>|MmeA%3u`UKkq<Q-LQ>Cdhf%N`s8`g=b@_@PESHCr9{N!9%Lvq$|ghz}TYm&tZ
zx&5Cvd0~h+E>UqIzKAkmF=XU&gvd9WM;^N0{OsrFo72xa*GztAB95TKcBGSYIL_6k
z&09>K974;>h!vwF6H-W72AL4wobb9Cd(fdcs0-%J!66wixL%B%1I2V(E^U-2Om0q=
zA5uhRHX1qr0hSLA5mo}Tq^|&$!;UywfZaBM0?Q+GLioBTWa)<<xoZUd2&^Pr1RdMV
z&CeB>Hd9%-CYXZ`Ia1+9#b*A8vv9<UdX|`BBgQ(;klOpW$;r);SK{kL`3wjSC<4B)
zaFm0`wb7X_Va>PzXO!KCaDG&<CjbW@rwT?s(Mse7X!}?JiXRU{Q@e2ZrcIrqaXbcK
zYQ6x`P_yGqj!<6@AS>Jy*;KFMo@iLjnmG-}_RzzBfEc;L)nMN!b-h5X5wMJ2dj45u
z?8<>jD&|gDWKlSnhUm2eT9OHHl$cv$i2#(oKW!TKJ>vU6AhYMHmCIpDRoC>>925ge
z9dytkjvkff>2<y@@HZO7(%coAiL$$tE~#<~50w_xZ~<!#4l{~1{@?@mnTm?uXaKoi
z^4EbCxvyZ8Q>RXb9dYJaKQ-^ZH4#0XjLa+n4r2vKEYLVjHp54ZM9BW5kLH<>z9TRg
zaCYRV1H=XyCHB>ej-WYUgbfqQ3bRk{3aIgt`dFs$xiil`$Gjl`as9eABu}UtHd5@J
zRP)B`uc^+_FnLyJ%-?<IO>@Zi4kz4q){N=Q)xn1xq4ta+q^^G02=kMlU!XO8k6A8e
zX@?~4?<EQV@S8JdCOUP$)E*|?Ea`eJfO&b)A%`m?UWIw&;RhtXev0|s#aEa|AG%k7
z)Mm3%bEBd?;^$_e`n+oO3IK`D$z5VV*&K<$KQC}t%uYfTC%*Bj>}4tTSzTSLzKt^P
zyz{p9wl~H0>LU<!gZ8dl%z3~3l{w?gpE+z#?6p^~62$rMxZ^f+`sruEND~l6{mS4b
zMqzJr%8&nB^D)T*1+ay&V-Gfi1=7Cz?mHZnl@$WRng|1S%J;v2l)_9uMtEExVGBSy
z>{IMxr^eWdq5j$I<6`@8T?^_X*pT$Rn6t+oeb`)h(WU0x^Da=ECopFEt^?w*uI|78
zUa{|1YaFUb+_6UIPWH_)0xy+S5tiuEWy@ugQ_Qeo!&x61AJ&1uJ~Fz_ojZrI(*0Eb
z23<Q%*A4?5lt!2X3=;}oTv`HKYU-4!WLlMdk||VdK?h7?ukOem1~0lL^#i`|GR&g(
z9Gi<ub&v64MGYNVFUIgd#v)ON##wWqXV}9J3S9bcbLr)OG812W8D{3mb*GzA>hBwG
zylw{QJGz!Nf=;CO{It2J!$@QQ_*h`jvrj*1&i>gs=J!|r*}VMXbKIw@x<;CM<Ft1?
zPZrAafAMP=j33ON>1m-+Uu5n@i#Z8Jb|~yxbk$gEapWJ^uXT;Twz~@ee@o%Bby|-<
zKj#AGYU-3pfWasJ*U9Esg-$>H)Oa#}O2~h2G8MjI(en0!x!P^P7d(67W<8^hSY#{W
zEcErV2z2Z(vgkgWv^~<by|jZ@?d4m&_LJf~NcOA*fYG<2vw#nKUSh@VgOI(5J_g)m
z<7XeVz4IUp&^=eiF+0$?+SweIQP5{xg#t!b0GY+cb4Q|Adq&h`h!B%ThvGe@{4Z6Q
z&e6x7?1qY2PB;o|n;GxFFJNlC{$u!Yy&sa6M+u+FQQ$xB&->|*%|Zb)7hQUlIqJA^
zFp=c+==$;IqTifnob2+&a{A>Y5f-p~*)o_sK3Elm*1-B&rq9I+K#$0hF3Poky3Cw*
z=FjDn9%hCN8|{Qg08G53{~&+m<>yREaj_Ftg|o8YqlMDGx!9bhu#-_^4*_f;WJ036
z58i*B*|Gg|v24n5GUA1`z_eJtoPKodnCNJ1;dozr%^wwZbB_9Wk^^8d^fM()edp~r
zn<K^g()?jNvGid6!XU`c&y$04KTg_l(l+Ydr^W#S0c9qO$@Iiy51E|obcdaw_rKCu
zEfp)F5e+R_1&ozOv2!$UI&gf%aC;KnpV4E!hZDVI=^|JO=)VLr&ON?R*rig)!(7m7
zz#`8PQ~O{*2n5g=?-WSTMPpj1@Q%B1Adf%sho+);Uu;!C8e-g!Jb14hksN8p<e-VB
zdZ}N`o2WGWfJ8Wf0(P*uMB11bv-%{mPpbQ6x-JM?q+l~*)Cn9|#XZDo^WvqcPhn(;
z6@R7>J~^<6ce{=><I&oBkTa_}cuUUiY;*b<KcTP2#xCVJz9y&hAvx4Vp6D^D<nO!d
z4rSF_EobXQQ(0BR`j%~y8vgM|9~7%2kBoC-Q^59Ev2q3Nj?!Pl$=)asRKSSFd7J>3
z!_4eiGvv@sG56kkmpNI?n^B|2m@kLc)8|GpsP6jL9dg9qqkr{c^hx(g<GQgW0E=ve
z85!NozyE!Y`DnpB)iqkIlyug`Lk~S*rpa*}d)>jb&Bj(c0)}ZVvJTWIuP(HMmMmFn
zZu<NGnNv?Y!yI+&iDVU%O-fjPj=BBzTOEBjK&Sk|A_UMawJ9Yf71q^^8SgvoWzWb=
zPj|H!0k63Ka;-h-A)$TLEi2t@)xL4{pRO=xXig43^a$3T<{SN@Yp(qh?GcN^0din-
zjeq=6&IS4jAQ*~6yj|b9>#o}XxKC|7%bX+u_MGmyYQu-7Lu!)CnnjUaVQ3u)oBqS)
z7fSH`N^|;|=duq9Xw$mgX#Q~7MFJM52w=}uXkk6s5e1Utd_VT+L+04y{>zLRdzks#
zjeiz^zua``loBmqjV9POfqs|&{<m`8e<>jRP;)?YGXRNfRgU|UfRh4C9a{mAS|Bm{
ztNw7AIrOk2VBQJz6#H?Ku6=@#O|^k>!<M_I!O*(?uh*I%pL&{r#RC9@ys+eFo_Wf=
z{L%}u=bqG~%#;A7FTD7?Iq1McRDZ2`O8dP+#G?T$+NT5Ib=%F989e`4=VHRHiO5Pw
z;WPGE#P!8y)qa?dja_=lMf!o@T!E{H^S&m6_TPN-O=htYb<|W>v$g~-3Uqsyy{Wdg
zmi}trlnrDE@Oy{-e)#YaVz1@Vwnnj1UsPY!CPe)O?!mO0BRf?HwCu3X<mp<=06bw+
z%20^zT4_lcVcpuR*#kCe?%6|h#9=;btk~n&16dO!KkzeKa({(IYP?g-tvCP8Ty^zd
zVMN(BfV}28+x+{!ySc}YetepM-qB9K2_OFBm6yTDlx~@?=_pp7>e>ouC5=Wj>=rFt
z$i692dWptA>Qt=f)=vbg4|6jG8uReO56V8TGsnwTe|Pa^0x_%1)c4+V#v0AOq{t*6
ztnEb#UA04ikKy1I*UC;9V^z-QQHA%^M?m4V4Qr@R`xY_;S6*?6IeX1H=0~TTM#fLg
z8yRh{{mY-sYXa~}w6>eJZUvm(ze79PixrD!1@gLa6%;J*uXiEZe9dMLO8dyS^IO_W
zJ7n2jzSVkoNoId6ZGl&N&c+JD_dI}!zsAoNX!FAO83j2^)VUlKbg!t#t*bfE#3BuK
z1Y^#Q{_Fk$#)>b=ZnZ^J3xvZur=-G|I_>0RBn}(`1PBW4bDTdyAqxxg<>;ik;gAT$
zIwI1Dci()|bz*VcW2&oaU`H$!h_Xsy0C~CH<>+Or-_1Dk%a<-TCmeIIvOaZ3SlDM@
z>CkI2U?!Q@Uwg%rmzLsiE1W~lcZ#|Hu3OFXPd`qWo$e1i;7hf;qP$E_Yc^uP309H-
zq22-sR+^h`ydI}7BP&y&OcNntS(#m7j@gkQV0dODLQQ7Rnr>cy{bf^LR;KYt=Ci)l
zea%vZyIgg}MG_P4NjQm|1;PN!%SsgLGgTnq+or6v7l2Es1=bwnCC9aI-zxL&+i%EG
zdPe|J5n!Ph0{}C{J$v9_*$B^X)3{zQt+8|m00f-5=k9-^^P>AOe+oxL%jMd?T!~P1
zSIv*c9B@jYX@sJ1m(BtZ6uNZ%byva2QAis0=t`aente3?1DHG-C#S8vS5s4^woX(i
z*V|5eah%q#ZIA=F6=7n9BH=g+Btanm`fI5lXDnd3dG*iLukI75UxLH{p;3kFq=y6B
zpj_9<=Dd3N&hlkTV2+fO6ypH7jxtXCmMxpi4cGnI6zTr?8pmgzdYn+mvhq@IURu)x
zQJp1X@VsTNxa>mpp{D@^YjFD7NL#WpGrdqzoMtiq)SuVYp0@~JN=!&Xo9eUAJ|SEv
zN9-nDkK?^T`ZqTSaFH0b-uK4F57{FmZ;95&r5FFs0Tcj-OSKNx$<A)Q^(KvHuE~~7
zOVfx@S*<-n+?3f2og0k@_TbucxZSa?#r9y0EnGNXV1-1hVX4`&i%tRqYV=u_nKSnT
z_9Ka~i#he7Y=ODL=?(x1OZHfd0Q;qv{tky)>=k7TT`wDMbgn1V_u>nGW3pre0%34+
z^;KQl!&%>I@583Dyd3aA^<sy~ojVh{_P;k=3$P(OW?dHxWLdkW0f%3p5jsf%*9Z&D
z%*xQZ*d|?}KQiZH$^ec&AlA<F&ppMQXx#wH8m)&R8n0JgeAYZU{t?}~J7WyPHROkZ
z)0W)4TmYK$&O1}#SLM2Ici2eFmMoE-brM^xTmaWa0IK<_Cp)J*jHp}waf5)xTN$s^
zG=%XDg@gp&nZ<rzkY6Y#z7dV9M;>`l?eD=l5*PrpNB|%<rcf)`YX^)OYv#|NXI@o8
zi`QO#*#l$&+y)F7!1<P~gf$aBr+tKRzxSRy%~MZ4q0r3&0J3$eU!Xbjl<C^D?1Q!S
z^poSYW}X6I$;!&)J%4=!U<CW$1OL7s%PlW2^8hR#;C%6==LsRzXTB)Ciu#esS`j#h
zZL56(Pbv+2*fm$9)s>Z<O^B!`;NM3qG66`~Noq=}K+f%AW!(b+k|A)or)*JsJwWB#
zZ%z~#I|X)+=8`>Cw#1(G$}2Au@~XMv?>uGVd;Iao8CxY7al+_y-_L1-=GW;9p!PiN
zS+9xZS6NY^=TD)u*8td}DbT!=B|Dk$+G_xry?PbXeqUpXYtT(2@yHs1eB(|ynrBXr
z{9MK<DYc`?)_mM{^WOz5E4;3xly)o<t1%(TVm>Z7|7ZLVQlR;~^_IUI>QlQkmV`Aw
zD&V}Zut3j(ZU{6zaNnKgd4=(pmX-5NP{vRI{{H>?!=ya)kkPEQ9359&ez5}-0e-1?
z>m6;m|GoaNV0S%Kx8CzUV?Ew;*S`>A*BS)G3*To0X0@e#)vG@b&^SFK9Wd)(0=)&c
zp>?M<PnP2yTDJx2=Oq{Z+H_4#4H6OTe)-n2O4<vy<7w^1=0vyl9ABYc%l>*<OZ&B>
z*bZg1mv3Gap3+|0%XbFA+Wi#9(RwSbi(STJJfU?Z(22jEAbTiC$=(bwrGsnS&-ojc
zy4?iKE9#_<NCsD&WU&8<Or8~e;?b{3>7F1ED1&xI6~L7QHxrpk4B!v~IOuFD%1Y6{
z`C!&m+AcPLoPaXGEqw>JkggSbrK2h6lmmM!#ILpCV`<AF=>{kv=fng5aIED_;UI3_
zuokV5{DNGZ&tx2%o%Ba@fK%S9q?erETrz!a-MoPip4ysfwKLgw=wnL|3Mxhsj&U;K
zILw9EAQq0+r=NWagJ9cdO>z*@OmR^GVLRL980uQa()&(q!Fkcxq)3CNA5M5v(<Xxx
zp#GJY_9D}v3ltFUqA?_#&I2LJ)HfIq#_}|300ji%p^YRbh66Cvj<In-kKUE#I2pk>
z5cY_@WoxX{H3tH22%pnuIE}UaYH<dYSq{6-$m}Kuv>4|ZT^O4MhjUmNQ@`=RUqCH|
zg&`6zpdiQ@VF%ag6mTsoGb5;n&sa0McLtyqZ44YG&ePKT{!ynKD*kE=`Miz7_o^gr
zYy$>tHO)JAs=aCIYfl(B0do&KBDAHy#->S(sHRUEvFU7QF3U^Y>zlc+0enl-oL1n>
z!N3e>IOrPL7{D#sJ~}l2^f_N3PkOg>SZNzKkWEnam$Jq*{{W(5)-WC}h!7oi3HwW|
zBeaw5yY~(>e+0I{auPVF`5geWOxks-({}rjtu|u|^fhdpS=UunRcH@M!-tHB$`mNa
zya(Y+yTIBE9NvJ5XA|04Ug|J7ivSG(uVAlIvHIl9U!_Ezo$$0~?8?%u^W?~8q<3}N
zPlARHx<_T7O0k<d0m^hqcCyUDz{AFCYI<v(HWG5FE^0r>ksTud4;U;^9u}d!)AoN<
z&>8FBX1;7df^^wxlYpy@>(&6G6crV?j6MtC8n!8nt(|DV36%3#Y-ocS>^m%y*5VC5
zSKk@q%#2KQ29@a$aJoSAEryoHI9YZQ0?bMgID5jlADI`Pd)hR={~qi)*O3B@5W9*w
z7P|$zaDQL`DAk&DZD$>OgMcl@NauikZd(AQs;m3LHq-mqUle%dUJJ`c<5=W7jM#XP
zJ&zwd5WEleP%oq(Fi`sy;Eub8A)GECMD1)+i0E34akBQl3f8k&raVIhbg-TjTF(Bw
z-P!Ln_MMVDVgFg#S%hhS+Vm+Qt;qsa#V}*P@c_dv0@-CF)LUO)Pa*~#YR3-kdj(o&
zS&W0)?Cxu}1Ja|5g&l|NI6rVX2ew1sGqbw62~e<M=HA!1gmrBLx}~P2`k){-xN|3a
zTc4`lrb+CwWlI)0YZQPfwQCB1zxu%bsk+!FVLe$E_s+^pS3kP4M+gihYi8f7D)y(P
zO5R|(dvsx8KF_L7od9@Y<7$rtFw!+K>|rso355<sRqcpt(C0J3^DnyaY^45NzkVbW
zOf&ths_H`swL)*vDbpV6*)i)bDIwwiv3G4TnjBa8oa%qBJG-;q*<G7Bws*Y=80`2G
zaEKx>Jb*;7EkFjLm<UG^vUr0xq`ZLOfd?cW5J*uZ3^F$XB0`BAVdErD91^p3e8C9{
zwgtfkUszvuy*t<cuXE@=Rn@0@YrCgA|NJ}u>~{TIJKfdQ-E}?H=c{vZ?aMHQp$Ew(
zZx;z0zt?3}a^lUY2eF!UID5FL4}Iv@gdV_}MzkKs^oPq_1&c`jS0nDEDt|tWR7#7;
zfm@JA&ma(~G57EhTm6B*&Sj*eOw|*eC^*hem@uhLd6;X#!2o;-FtdMYQ2-W`N6ggj
z5Xw)OSz(;2wl)j^nqZt)Y;QSZ((ZmDE9E<K^oXdJ88ZMglLa+Ld4|Ern;ZkoFU-Sx
z_q_+0oQFD+16zYts=zrh!)#u@S!KLJx|ILG(te4o-vDxL&b6Q3(-6q1VHBX8NGrrD
zxMZm+>9DW>1YX?~p=2tFDBd9#MkNQDq@LD>GN6wtIXJ)!W)>FR7)%`@2xByh6(A%q
ztc5g)fQ#|)lXnFWj3u8i@_N6H7x(-@-c|@!=7sfbj|n%JGhhiorK*_HKgm1T*=>s7
zFJObVS1rv@4{}Vv848fHw7g%Z7Nx*vVEoZ!Im3ELfHn1g$|Z2E{aKW4$=%1C&?(=3
z1#>Mi0Cv{ef}t0w2sQMs(w=!c2^d6FwnrlUaO%{nx#ZI$xq90@VqfOu$*;rK<`4!Z
z6I)hy<m$H1J^QRkW*xi!m>VlI0|94JPz*|g-v^hM3(#5TIfIO0Muf$E3vzCW%5loT
z0$d=@%9tMIkph&*EKKyw;=t9L2_P{2AoX+-TLIv=BtQ!yIM9sT*e4!Bmbv+LFz*v0
zTL1%ceMBUn`9eM}?1;e9$V*=Z+k+I(VVT!QuRJPwLRm<PN&-;L<WW7)fwb9yxn)O>
zyxld%dZvt+WKQIuj+8mWOn@5j47)*7%z2TFyE!-Pe&^jkUr4x$J*&{ScisJSV&Ca6
z{^CJV)6M~ZKUNV4WG)rYml)HU0F+B`eJu64!q4%rA*18H!mKyVE$L$bbRb3L87y-b
zjX4hlDFFL<0qUGbN0~2SO_XC$VPt8O959u1$;a&5a#q03Y><hnEqXv@Fqjc3L3tHP
z-HUZd+UoG(LkcWfkTFH1V{f(qM`vb4b$uwHzO8y>)Hz%lV@CsC&7A8u#!%W&j;;ST
zK;Q0JK~wU1wX%G$V&2mjBeZ~-ec5IK34B>W>NH~zsB{Jcfp$v-wch16masyvg^qw<
z(;)3rc}EJ6v(O2|U`nAj$UKcDpu@&VW=sL(N(@AoncSKu?{)S0-UDCqMzH(9z2aFH
zOX<8vLAgHkp$|QP#om`J0=Z)#A5-{8-QTkS0TT<1$}s|$>P@Jk8V!aYX>y+|%+Ui`
z8JWn)IuUrr%b#0TrZNVlsE84uMeL$3x-M^E{1qfCucdWoIm9{~*hKe8aZES2%DBBp
zLuIb@gBvk*8OsF1z#t|tLTJNM)y9A+0VE&<iws~$#sgU+_heaAQ)C5_<S+xKQLyvm
z+BxLaFX*bFelPu&Vw?<?IMhe_F*WGPEyT0AyjPz^al7d=RbAEf8`=v3nGWBwnpE?}
z!U~4zHP%C-*e|)lF(Cco%A1bCbhkYPI*qoO?<eV7ZZeR{<6dheb!Ck6tat9*s(>0&
z(sKN0YZBIrJX;FmH3G8JKBz4ZRZ+p(Hr4Ucsg43(Jo@OvBEj_WU;RWb@o*Dttgnfa
z0zk}dDSa)s+4YxV^K6jKi3-|wbRht)XjGyiZZd1RqS}q+*dMvMUS<B}n3&3GYyx-{
zq+Ed|9RtH}t)smF0qFA^10d-FM*4Is`JAL6jmU2*kjpQ#!YY$Ys<Q3+660~Dpf*<K
zi2~gug%lcR91x!vAI9Q`tROf!yMv5Ue!0b91`Hy_B;dgx|Ir`9$L_taFi<b{m55l<
zi|}U;{3$&B^phgJrhOJRR#I9cp{x%jz}EIb*07r0My0=LP|!llq+mE1Crw0zz%1af
zx49L$gmWN$m~CJrUB_UM>LRdUfC00CfaN2<aex9=`}YwAXA#<7el3+H(n65N@@tUG
zL+259Dq^&eMQjz=cR%0f)rR2c`v9Xp2``bSAiCu{`X)d*&^d>ow;?6KcnUgUB)L+d
zB}u2%T~m+97~WBwm<o7+oYIUybK`UJZJ@!Q%d*ekqnqwz6-?@nJgxzE)<tt{03cak
zleDpoj>l6Kb<QL2wm?vW`HpJ3TW?0y`*dzmxWm&8HxATSjhe2#TtoK;F#dq1${LnX
z8}0GdwZMx~%H}dzUmo<4*%Kw)gB~Q5NpC<wmFP$o&m3~)I$gBA34=SS*l6k`usT1j
z4;0M|-t!VzN^tz{{VoJ$UOdR8fK*i)3z$lKDn#yF0V{u8stD?H<sAGo)3wFtZKcIN
z1$ylYa2Q01$p;$hQi7PonAa=yZ_>pF9g_&G&r2~!-%m~Rfm)7%HeerjqPVGgjxsxy
zoRxRimoKSiBT>b)%)DJ4+B<4M#Ae6HY+y=)NL%GD+;bzzpAuD=+~!zn<R9DhE9nHD
z$okuzi2*OAH6tppPv%}bpUI8Gzdt`-Idr6u5)q^Nuf6&ToXA!C4y_y(2^84jGGTI4
zT5tA=$Q)&|6(AP`G&^5H)l0*&ml_J22t>M301Rvq$db=v-91HwiqvaNJkt6}nr1<4
zt}}WyX{B!f4DPQk)b6@Y;wocDEM5hr?4SAcpTOsHHNs=ZuP;=|#K`yyxh=BIjWxL8
zh8u#dsJL^+89Oy#H8+porYV4!JUgcO;5UXchkDk%CTXMyqF3w#F=}7q+h6-a%g}X_
zn(F&G0IQnJz$GYyZ8QzIrP2ZR#$0<VJ-vPL<~%%cH6H9$pZ3boP>OvK%S3I}P%qPo
zjF@b)$D1D$pNzyiJ=m~ctS_R1_Fzwt(cL4j%CvakNz*|YCpFMss!9-hu*x6XAPErC
z{k2#{!3OY(s;Y?b`$FJ7x~K-`K_aj}Z{l&VjHnl!dLp1i!0t;y3fk<*SZVAK<hCW^
z@poCPXFi&A263E}NNRN)VXXFj_Erd9(nJN5nZ%wOF<-EXrZv!MVA{fHWJO&mx4kCz
zkY3IKyO&;gK>+6E!WjH*w}^_>a5U;Pr<;T0>azqmO*bQ$FLX{o@rD7qV^zUc5Q{81
zuq#s2w$`eLS0ahTE;3s`Y#BH_2RN3((K2;+nO>E)!RQamwIFC*=D~zkn#!0Oj;t8@
zUtT^4r*fNI|NiagVKf?wdf<`6hhSypePB$Ms=2nHS%^5*j5=Z+lchjZ_+Ne|U|$I7
z%4vLr_!+fYNQ~*;KYD@YQKh#vu>4|hQgcK>CH^j%z<UbNL59mVAjaV9beGcrUU-zD
ziyBhdoIXsKI&2?$6x#T6Zj|(+-9tXPO}akB;4XX5>}_E6dj!G2Ec@f?d(;jKL;x0t
zoqyt(p{ht-0S8ZmRDQ53<K@zTSf3xOs<f;nw*FYb`rMI*Chu6AssY%P@#RGFN_WRI
zIj-!M8!cd$z+fA27Y3d%kc@35{4N@zjV<<wu+tYmHts;+)bFP=lYl$9U7avb$B<CL
zb^^mljVja=2ti${FrY0FS=GXeLrWG|>o690rGRr)TbEeJBB#X0sk1XFFeO=8>7<V~
z&{L(a-ixcFqfFN4_s=78(pO4%tC2kYt=&Lq5PkGCDxDOO1giX%e2Mgxnlr?3pZ`U{
zfpmrOeeqTpuTg;L)FdtKxb#T(xiHBM5M{0~Ue^@FD)X>{)7@4}-hKhZSQ-#2^deDc
zDe~!%Zv;U#ANTIhCmnFQ8#*zRe|ZSmq(Cogdcx}>D{bA$3ik3&cwxzW++CAhRHKT=
zyDNRw2jZ$;UJEXPI&Od<CgwB7>|t9!)>=I(yQF~P9>CH?cOqu7kRv96dBR<ffE+1v
zg=1xIBnERnOcVgCQsRmzW~x*&i`e>fRUK425D<=46jjfg(Ivz&Ydrph!m3SzdhIdI
zojw4&FkVIpTMHr~{nrwZm^{O#%uV}7pdC}f&>cz~AGKs`354;~DufWxWNaaHW%5w(
z+G({*UHqMmAQMUbag3dD8(Pu5F*uS2WF#=D)RlrsB{&cWqpD|HpO2_YOM?_FTN^eA
zB&rIxOXo-`7S#rkr{y{qxctklWM47$r=dVSV3kITN}GZ%I_piXV-E86c1-2zy8hJB
zF`aQO>!bNDq7)=<lLtH)l|`xswqi6e;c*i+X6y#UA^;{5(7r4c$Tir%ipG-VRGJH>
zCiFr3boxQ8KD3&*DtTplrM>aO6iKitt<6|YT3b!RX_1BRJqEPgT({c_L(~VJ@Hcxr
zmT;G6e;)?ZzUZRz)e2(87gb_v0)v5zUoxV-nn|#)qAsyx)f7_jN`Wn9%G9X41xgLG
zH`|EeIvq7^WHuRjyFT0bHf#`>GMGoB5?9p-KB{LzRlz{O2=q6VvSVlBz&tL~#+`|i
zGC{Rvo`^WOM$-&H;TS+wYw*hKQJ#leE`L~eeQM01s`Medn9QSgUCqGtfR+M5>3paf
za1Q{KFO3JULOxQvMkMDJC;(UjRv}nPE6xcZ(B0x!N?wuLAC%T-|E~%>_!KQOQ(I_Q
z!SwWctTLUbyrnkduriWN4A~<9ceQI314KLt;3~8iPI|}&dt!+_4M@@qKn;MU?VW;W
zT=j`kN?L2svB?2%M!gT&pJ4UloG+RLZXY_d=4A(BA@2#cNoi&sA55BFg)2tAR>@A-
zo4Zt*>xq4V^#M~Ae;-pW08!0EAnM(SxGjK{W}y~5-uQeLHS;#j;9U=5^(ur6HD2~=
z1`IaIK(t^?!!Eu25~J;2;!1%jwXtF;-sP8LVY(vF%d+Q<Sk(z*%W?ubQ44PeSU>np
zg_b0KcmUB%Ow|Jc+avPmQ{`uTky!yQaL+Vem5>AY)k^J(K?4S^qwH6l&?c@jNOe+I
zW|uyV_&kAZY+tGRKAl!myt}l6%}G@a?*Ww`#*Qi;Z9J1=^eN-K>;X{pTBWOMkR8AV
za6zs|n*zae8;u-*6+o|8LQB9a3v4NmLdSLE0AuM{$*;DEkZT+)aHko8m}E$20ju9r
zy;v2o&k!rpM5G#vU4VF{MH6$_u^XcB9M*-T(Gk_khADn%#<b6e3M&RB)yh?tSZ!oV
zzDxo@+K1hs_kCcD_9}SK$!n;zYV0_H8cY?it8^dw&>Pj>rMX-K?;w&lUC|(fkg5>w
zm`XddnLtf1zt96%*qOi8ohjW0odB_l)Jg(Fz$9rZeFbt%l2(FR5-msP>M_gb4UjUq
zG<{E^;-Lhfy$7hO3Lohfu?8>PL_WP)0w>Edc=OaLDf7yaqiUxs?Gpt^BI&Bk3}86g
zg16r~4Tle33G;Ic73nL3!l9`*sn{D~y%XKmUA(q-4hDl60G2>$znIP6%XT|yG$Y25
z*VorzVPP@9Zy<FY6Bv>DtZ%Hta5#j0`<6rkZEJH&yudB)+Xu!N|IB7R^0n2okPQY>
zHX`b-PYvD6y^*(tCCbaaKh!(CTgu%kNZD5*%LXvNxCl&CUph?7U`M0;{xw)!)IQk@
zObc$~Srv%j-0C@)ot+aqTurKsXaF`gH}i2bgr%jW4y3g^sECNLwN;GIO<3Bu2$*G>
zy+Qh_`Ay{S(#fo<SD@)67gZ|D5?DJ@_@Fpu>#iXHSsNr?g^p~lt-@+P=a-h2y+jNH
zgLUJC<OwdXe>WNfXHLH*?^`~2#SV-o1mg&7{@gP%Zw~CAmu5bD?kvpB&ceY1E2U>V
zB9gzctv~~HhQC!UF%9a?kQ>$Yc7plGhI4Lxe|JwzDoLugukgaQve*EM3jvO=B?j}`
zDHEi2?vl?B_9MJeUA+5T#fDWM;nEJ=t7P<{X~N*;!$9_c4|ggdUOfAJJ>;R4Y0!(}
z<R-)}<BrExHBNbkPVeuUzvDf;BeRh&7XS-`Cl9XMfG1UHP$54RYaUnZ8CjmJc};33
z2Uw%zt{QRG)U+2FyAe4GU!V|drpR&0Xc5Hj+o=Svtar=K#1eremeN;HN@G#1wxYmT
zVz`~PPbxdNrmBjB)tX}}1yBWiQo~{{a`iguv6SoWH{XQc`qb~i-26QJ!SDYz%+AgV
zsMS{9=FGdN;g(x}7(RLbZ@_~Od>UT(&bQ#;!9&Rn>bVQ$r$%B-;;!7aq06rvM7U_=
zaAb!tGdqBf-gyuF&nw@B=bwKD=I0mmSt(J2&CPYV>Z+^ZM?dlt@Wj_2gEwA(wY-N}
z`=;GaurlTA8*6zR+zwZL-_`JyFFy=t&z^zrzu`u>@y1)>tB*aBpT8>}#cD>ZFz|>7
zKYRBt!Kwdy9iBY-H34(drI4EmXqu<74qKa>@SzXi0sHqKfUi9EFd!NMp{yMO5lP!H
zH>(y|>x_qg^sZlkx86JjPo4aRj3q>DMSwRqT%X)|*N?#y-*_Bef9-!^Zf<^$db!eT
zqu~}T%rC+{_uLCFz4#sY_P3rBV6rZ(Z?3^jH{A-?U3UV${G~?(V3K**ft^E%)iXv+
zt{0%?@e}Wdn{U1i9{<XhWDXBzX1hsWl_0$F9tBA?7OO_mt5PjY?gF{|mPW9;wwBM2
zImirnJA!hbGdv$8VFe6)7d~|RN8py*Zim15s|VohyJujK&A4Y0gGDZn0o*Ijo_Pm8
z{)zixHm~1<fBu>LJp({A?KJMNDs74A;^x*S95`?ge(l$P6P|nKN%)t?AA<w=9J=qm
z`{DHIci^8N{sQbja6sB-Gw;Wl*%=t*QD{4Yq-*;jkZ)^aAT|D;+7Z(W@jAg&p<jqN
zhPn~~b4&Ooy(bWHrSmm}08z`PC#-F*s;E(#z7Np)^#g$!-8CGv1gywK<S>RyXptfE
zS{cT1d}o+fy4DACU1^`8rs*@>1w>VIM2^Lkt4;)TIoF1pXdoU7D`H|__wjh>6i_$5
zp-J1SIu~}-1{QPjNi~g9Y5FZZ&Gy*XYaSQ|q||q))pbW5`%v|})t~_a@+!pSBG&*2
z?BD4<mvTIbn<(1l=Kl|;1Q^Ej6!)l;36pHv?j5(N@!BiFu%xAZgFqFHA8H|Oh26m&
z?(Sf~7_QeCU~UAXx|ezU%@^#V=fao1FydhP<(v}}-07L3aA~h0w^|mMIn}PR3MMH-
z0Kis1TZJ(%0V=D~RuWmF+Fl{Ya1r}+u3CdtW={Vmqp|xwb@P`BwjRxE>ud0V9DrIm
zbOc7Dkx0PQGtL-)SeF3A@)axa!5{fBeD?4E8ird#Zv!ie#%M86ZN?~wrS?xGCg?pU
zRkGH?fHS!E`1|1WJMRb>BVbg+1Ro8DfF^_YTz!o&?8D&}%*`!C1gyIU7X}uvVP)kg
zTzlR1FtS!8TNW3W;JRbimj<Z;W}3jHqV4nhkHc^@gpKtLxqp&7&<KtZKYZj$SUG$+
zFLMF7%){#HS@`igeo7edM<00zjL9U{`g&plYXOes{XoR9vAF^B3k!{2zTz;<-#b4y
z57%6K44!)O32BG9xxFu0FtP+AqP$&Bz-u`um$yqjfQ2Aq=Fp+TaQyi7@I~@~IJ5wg
z8)rQN*GOM2E-dEb?HI84fCn>UI)-2d<4-NCM^`x@jy?aC>elOPYjEV~Rq(N2`6PVt
z(SL&f$ieT$;4RWe8`&0IUtNQvSH1^s`oL`fU>vQP&s0*@=fhHEk@9z(gA*rypa7g?
zzGs<{*n#En43j1iS)q})-15O3JpXU0$I{Y%_@SF_hVTB@f5OJb2JBnf2O~iE<$Ldg
zH{N&^zM2Dt2lnj`u!xi53daGc;Ft%edisr;#_^(pHNYdcw;hyvkK~p%*D#^i-6XL{
z018vJb(Kn0h3XpwuB5R80Fk{tt(K~VtP)gQRl$lOthD^Bpkd=D``Ca&ACNr|C}RZM
z8xqyfhrKMHg3}^{)Q3Lwa(WDSp8Zb_j9r~6iVkMfL(UePAe}X3nk3Y_n11KraHdA;
z%XXJLpE%KKzLm$gXO96`DM~v&63GqO+e0+9#ZhCe6%`kbZD9o!KwHEj&4E?c0}xE9
zr$GwRTd@K6#FcwA85!D1(;&9Mrch#6quc?A8)TXEV=$t;v9VrC0;Li{76>uiqqaee
zDWZT!MHr2&uj_dLmS_5y2Vf*ka_F<lAEX|?<T$CkNHv^WU4@4}|BrCyows3TW>%g@
zOi6u1Ihb7;^B^FRK@&8+S_NhbOk&C0Afl)+e)F3r;l-C;6d)qYj4-i81-Lcz@0YR!
z<|;8doaYl2L~)r<!ZiE*r1^J}d>|HJk$@Sa5y|`aEiM+!xTumIIdYYhXKpTQnwuh7
zwwm|D7asbYfM1~>m^o=X)rr@7&&|)lE3dqq_v7bs>8scB_su2uhq=_O(wOF*cu3VP
zb?RjZ>-ku)BMU=oVdNz(thGsg1Qf}~XP<o<UViyySQT~3g{HbCy>B|uPL}z;DRX~o
zI0Qy)cvrLK5{{f*Q!H^x9vDyy?G>+j%p{;58Ut6q_Zm^N++1Jxs+P9&_=@3~mh(Id
z@YGW$;nbUN!<j<*YGy|1HiUc@Mt=SvIv|nR0jtBI&7a>E1ZLm21>Hk=o^&j_zS|mZ
z$^5Z-9Auf4`LqA<ccMx=m)FH$Cf84#c)vVnGp7f*e>qj@28{P)(zT*_#%sn}wM3qX
z<2LTVr22{9keB7M=8^n9rU0x76c|xKuJ~TSPVx^N9dQIovBdN-$nt)5pn|$kT^b(z
z5~1*^2?~|=fkDULw1ao55`uA3x;L6QI^v6kI`yFseNa*JM*oj0Jsmc9aEFyAaT`ql
z-cjcth&ZM^Wqgc#&SoQaOy|qjh<hxBg_VV>K47N-rDv*!prY+uc^|O{u^>oPS+&nn
z0#}g7kS@>h$L`$y=g%Rs@xodV=J63v#K1Im3;)mFb--6qrQh$)3y?y3A%$K-2~Dul
zq}ae-7ewrR?d)3ChPqaEby3&4y6TFnYXJ+^f=UrksYQD4y@Y^C-kblKlib`lnfG2E
z1T^uV%Wr)1X71d6Cw}Lh?|d-0sK>Nv;|4*Zu~@Ws4_O0b0C?R^SlKSP!))8OmCPoe
zWf9~`O-;j*UI9$Gg2b!Jk+*E<#B3)kDJd~U_WAb8o<bi0k_-S)4Rn9mKIl?$jFM7Q
zk-rpLH~VNHBqb-qK(si-F8n(thKA#~58egXk}3IZ^I4B>%U<*kU=jfqzhBRt>8l;y
zOwrmkbo~QUg>~)TwX1wwguqT*e4KVaq-N3F+0$j~wr$eAdv_SMCE7NnfnHKvOkl`o
z`9v%NM=ZAiUG!X{;2OB1dsKkn6`yC``1l0g4<|sa0g^(e-3bXCW30(a>);o(1#_R6
zRAJ<+pf$2(>t@VRA?hlW&6_t$N^&aZAPsFQ<@JPyiOh>K2-1P6#ddxC;TTCwPLhrV
z9SIU@*O+3IS>*J+OxubYWU=Ub9LG-ZnIIdnF5jB`s&wekK^kQfIODU>KLVIjNLR9$
znEGVUf%$?qG}O9cy5D@J2yMdHan6g2Irr2k3d$RHo&mfeZvwwp&VzmvBuPw64C>b}
ztj|JwlyFYLu)><aL2x&qjdBsXK446C?%csCQ(OZj$RE!GdDzaMf1Zc2STEfU>&|{+
zF3p^x4Oqi;nFDx2rX<?S`ZYs+*Y2GJQ?VXh{U`&fQUC7U!u4!v2BblYHNab3%=u!Q
zF=yqhCDz3@aU5O7e!#3<!MfPDhhPyks>)DX<5G>hyLN5od0bqAY{gn@K(?N6t*r-B
z3BWYhhuGA@Vn4($Y+Dl6+D|`BmG|CxOS&K4jeWtm>-lirRm@ipW1w~J^n96J&$1%D
zE4k)&?$|+45#vjc7y4Or6IAZdSu7jl#JPX{wHGBB@43UeAI`bnv2!Q)J-{~fZ<8dT
z&xuLN6>e(e8+lxW4XAHNjWXE>E8<|aBVCwoRG+1x|9L_@s>q>ml~U2;G`6Q7uKJY6
z{f|KD@7bo-@2DE3L1@{E{P?=$-m2RD)V6CY8B2G?qD!zcdaI$Lo$;ON7k{k<i&f3l
zv#CpU$?UjDf0q@3D|h@p<$;?Fwr;*f4F_3~naf5VBdQdLGVHc}z#3T5>wQJ9QCfYn
zQ1qCC74Dgcj$U<92s!a|`8dcEWApF^4$>mHetah~MW9N8SXiPNRs1Xy6gGnF#%)mN
zHxaaq?u&7KH1L^6nA+>AqK(Z+Ax!xZTG-6oQ<X&8H?hv^Z@S&lDk9*pdgXF?`CtE(
z(XYKLC64i}RIpJ`*O+!4I?6o{{7pJ{=|+S0=lQecm6x7@?#qwTxJgqQwk}~^#piL|
zB7m?9MqICB`^&&n&j!n)8QsO^&z&jXeDw)gQyE!}M3n<V&0Dr1s4{o%3<|P$KeC6U
zWu(iTnLiOcf<}%@7p1hMlx&S5Lx&M0gPRUP4onw}<ZY7Iq?sJk^H|Bu$YS}6p+oc)
zT;d=AU0KWDlfbG#8yd(FNA-kD&=T3cZHx3f?j&iG-(EO2YgR$)X_9Q&vYGl(0EJLj
zZ=NH+1Bhrq4{g~={hgBrok15tr@FOZ98H?|H4X0M<P;GxKnz?m2@VZ7?nEi**o6l4
z#trLb#`I~jdesVw#H%o&h5(At^{{=1&a!UpD%rk$D*=u2#5qY%&y*avU@c#^i1iCg
zqB|k#>m-LC*%KgAE&#fCIpwr-2olbm@e_>scxhkIS(YqX0IjPn(zacDY1_V|qwj>W
zmdJU7&nNo?V?%HSiF!bAi^JFr<az-(z`jhKGD+62U4!{fM4R{GUK2T{M{h8(R+P_m
zJpvK{La_D@gTC0|1j-5lz|8pR2bm495a0v>1`$OdDJI4zy?ghQHf`HGz#`{h`cG4_
zX6N!d%B*aRY0-UZxUIr|*tBT_!QG(5xoy#^H9^}2KhNd0-2f)y0TP`!@HFQhfyuS#
z&*X{UIAw57E#n5o`3wLA={N9Hj9Y=z4&+}=y|7IHtQsaI6X-kg$RnvAw`|#Bx{}6N
zF<h?z1aa?Z%ui>uHy(Z4Ewg9M#5l~9`sh~!9JW$&ShvFobgfyn5<rmAv<j4Rub_;M
z1hJPcSs04qjc0eGpQ+Nn{|RujZS0iI@@CDNA@k<V=GesGn$h(O7~PeC09gA)^5CAE
zg0Wh>aK5ug3E+~&>i3i3S<tDAl;HY0jMo`wo+qhk>8!hF@4lGpuCfv?cyne=m-=z_
z2^xxDyJ!o6HH-tEI~(g@8UrU_Ua`)%5#&4PybDlHf5#P;T59i)eOo>p`;O2pH8v_{
zF~=tZ48)5rxmr4PIgE3=2z`0`f1_nB)^<)#u19MO<#P-!zW53P=gXEXl^(tNI$%Em
z&F0wm7hHIm_)AJKZ?i-cfoV4j%Ql{OmicpK+^51aFv10)P=_S4o5`=DLx>Dpo9EH;
zBAL_6fHGwn?iS14KR8LbPR)AervY(-&TSL5I9P<zM9Jit`h6HMiig-Wk;L;`$hoV7
zAKlNcq}6!<P_xmDwQDg3ry~0kDBFF{4rL(Q%52Gi)TO#qmkt5a>~<Lp=zud?q0W`P
z%6ME})+p^IZ^UL}L8}9%0a;=ES8T5+rzfA$Xx?ugx~e`0%9NoFSwvpWW(`u6vuZ)i
z-$T<CQ>>SdRVK8~Yg*gN7O##K!73gEu8g)7ukpTd6%6oG%s(SqY+My1gIDH=9;q`0
zdy8_T!V3CO+XxK3HRemXarj-be#1tYFkynk#wW>(ue>9-+<F6r!<8`!$O1Xztikf}
z7t`dF)BhmLm#>h8ixx@W0fSJ^R}e+MitGuDQOF$!Z5o0Z*WP%W+<Mo;l9k;AV8Tzb
zX8k(pcf!eX>)j7Yc5WWQoiYP|FTjzmQqZM4!K;fdyH<JtjA+p^pT=&$?{zta&^X)M
z3wljWo42BIi^+k(zf-z)J5tUad@+peIGH&4dzm$Rj^wxRESFq<9mfJptw<wIV8a(v
z4@PKzX$k$Dv(6nRt=e>u88c_foVjy(ZP>-vKybUIBiK&nQfq))XbVNnwc8@V7#j3f
zUV96`x?Gv|!w+zQ`cZNkH$z*lmzFKt5HwKb^9JCIYxKM!7Xm!%E%Sd~Ak(K$r@q!X
z=M95_-yQvA{*VbeR%EaA>3h7Srf0&K-s`##pogF#?i1`oKlPN6<(1Gd8T}|Ag9mO<
z82`4?D7Ptq0!CAmKF1zMJ**Q4ohGN9`3HhAV0jVb=zZ(}09plPuV^qNA7IjDS6+v)
zYbT2rEr!O`j{tYl<opXR#T*^ZJiqMw1=mugFF=#T#AJ>ofH<<QPCfk`IsU{`5#6l_
z0`F5W)`fBcK%kQV9Kj`v^9bOF%&4KmE|=~Q_+GMfDdv0<-1mwh@PDTC8*mcN_feP0
zR-UCwkgY>O7df`y30$`x*Tp~pVB#Q*MH>e|<GRjllr5KD@ki;{xtlD&9ARw}@VV&H
ztEF}8d@|savNQljx5#0aT!}T_1#5AZ%$_q_nqkdeaM2ags&!lDN58oq`eJUhZW;g@
z0!9~JbgA_1cN|zfJ2?(pw{DZ;PZ%iYo;yU82$^u0ORT^C9CJiIbQwipQ4z>Iw(kId
zlR4Zgm0la1x8}`T$R(Fv1wgSm0IT^j`TOs&M|ZKV{sT?`$hntHynr^?E5IxMhfFm9
z(HQd+=>`iXCHI4k13Ft=e@7#L!jS-m0rUWDEP#t$J3-=J>el^eNdcg>XKx|<k3vwa
z(mx!aEjtK+T>!Ckp96B17CZZo0Of;^JSl$|axq;nCr+4v{66^$-ZL0u0=Z(VNFkd!
zUjV|mhM#`!H97vIQ)Lm>?Ce>y8R%ft(=QX~+=lm_*?>IdnBYeMyerS)zTJj$@^TwX
zC#(+uYy`3j0RCnH7%st>xc@GR2gu@ZR#!Qp7PD2{><il?<f<$c;)foKM^y1SHCPxP
zBr&4TUcAd_Wh&i16{>>&_tChOs6(?X%trnd`*HB=BUoK6o3b|UbhRIIUCUo(b*U~X
z<vMCNXHWyh0rNeWMXn5BWhupjIhY3ruL%zywRN5EcKOgyQ>s#sFFqwK$5I}1*<zhx
zj_5hw`aH~GhdInMVvcGp6Yml6{y|N4m_t<f<4_T^Vrt_a@k!<XaaYw5uGS!vKG&zl
z#ZL(VDE_Mev3TfTRLh0j^?j{@W%A%AnFTu977vd=yQ$msCi>VUs&arG9bUyNlvi0X
zmdt=XFdCnI=`9%Po#phC`^&hG$4fmQMbqVqtFDlnhu=Xl=O4fZQA!cKI;KZodHkuD
z<?F9Lmn$wE3f9aPMhHt!Pm+;OJSTUJcuaPHz4P@K;|Q2kW-)97W9iZ>Z;+EtIZK{-
z`U!dS^?##jHjU^OFxVd&IZCd+@pk#gqay%76jSe}5KNO~7_X<FH3Wv_PI>g92VvwE
z!mw>DDG*@hJOq!0QUquKa8bVrhB5&W00RKp2Ff?%zmosF`XUWsg?~xODFBVG0jP0?
z(J2duJ1ari`>5^IqgOxqe)2?l^_6=ZcOXVTY}6=6?!Es}8F2g{)bTt48~`yKZvYnB
zrHw46Q^8`II&}(|YtIo#Kv&5;y8g!Da^^Wh<<*y;p;2s$B5UaIBaQ)hFh_>pd=0K|
z6%m{6R>N<-ll84yxs1j?T;4q6t`xPs_+5iBxbFJY_u+=7pX5ET@-Swf%d^isDYyS+
zgfxaO(OrMJg)UEN8EFJ<0H6S<I*yt}|9pBBB2LbiwDeR0UYG|QB^-ky%w;x=_0s`z
z%>v`(`DdS`J{IPX%#+Knyq0|dU_e$A##%GP%E6Q(IS~Lte%lW6)KgE$4^t;|X#=oA
z{r%+XYp$2wnCox9{gSMp;{l$<q5XH<@h4fgZgqv**BNJ=BSVH<0MK@=%%49;65;+B
zobW8x_6GUxyYX_$sb`>{8D#ST5Yd1i0LZ4CuQ6l(=d3RRK<5v;4E3y)zmI$vY_v^6
z4J)vIuKnXpnA7tyr_Yo1h`qsxe|^xtX;=dzAAQ&v2eO6I!3?}-#6vRRgh8_A->YN?
zz}$TmYp7UM`FNZ^^dhdehadVY*om{zH;c@sqmDjCZn|kWfWPDAlaI!V&tH!qB%bHt
z))7+#xpW|dK)@YY2Kl*GPdoi=S-5baj6}bjx-DgKt(|_x*>e8*!({o2C9-76B50*0
z=xsu9N^8LZuwow=$e?^K>4wdJ0p7#@;P|dtvqt`W%O3%5wv|U7eFALI=j8Lx#sSc4
z3079B2m@sprYqmQ{t^Ox7(bQ+z?XaSp8M{jSpJolUx<i+;{p1`5L7rD0N-VoUrlgv
z4%lju66S^M#D^by8f?u)a^rPZl5vH85rBH)$>-(n5s%6(H(W;6TtY&U3;e>Ias6vd
z<HZ;L375`2^8Aah0I-}Xf5Vuz0BD()my5mY)7pq!JFb|(-dMfN<CmyJu~?=AN#ayX
z1C<z3HE8kG!fXu7SZiI0ST6laeDjP{m=>_F=J0Ax@-WO8^NiNE6mws<i-#_Xd02QT
z2DM?-{lBr>GztCS#&1)<L1Z_(rbeYBdR|+72ko%y!wvz0+O;FTUtOw8E@_Ke<1)&<
z80oT?=xoty4-uRzAVTOV_+Cg~B8x{53Edkoh0nTK=%y?JV!X$@X56*SA7vzQ6~VnO
z5S~tD8sxro=mU$my>Mz+EE82t8Ht!m7@C<}0vwiSW%AVIt4`&n<+dA~Ay{A#%SeB!
zTvv@lg+%qss@HMTxCh|Wi2mZxV!}Al!tK1SSv0~t0enY3e%FAOXjVW_G((+71@+kW
zMp0Cj_ZM2Nn-^gt*{*G7h0kQ}k$G_3@h8LB?IqV=dl|yJkC$VPZ0opq(Exn@nHR~Z
zd3@Bf)VG2GOpxieJ0E~6)Fv5v-l+gj8c6qU?KwAFw{8KTbv~FUUFFt0{|e^G6uJop
zZ>l0NIXc1R@Vudy$QXzkzx3Qw(zQ!x$w<!-%NHXnRxFqM@4Qu>hGBOs*fC#>8!O6+
zao9Bk2j+sE@{h+KmNaP2<mToAScxZ)sHyTnGJ;ZK8<&p&jAsSI6)r?Hj^7;pinN0+
zR#sM4x!d1rc?m}4UH3l3Yg)WM*iYMhC+mY6VLPCO^X40`f>DtzIcOgem{>F9(~m!t
zKMWp9_RuzHUl{<C=zK*)#{~<1mVd)IZw<pdD>I90X7#F70Ch&mBab~vM#=|c-^4uB
zt8n{z1At#_gL-g@>&dn(0{iXLaqmmpw(S@-aM6N!QZI>lMO0`}aoc0manxA9Ho%k-
z8>E4liZO2t0~@YmEFc#kRKui1Q5K^GqOZx+LK<=R?R3!sV+Y_)0su(8FIYd%!KmWc
zJ@eG#&?rljE}aWF|LfMSg@)0aSd%^B>exwUL%7`5ZMKDOgSoj)9QQ4XVo(3!dpW#&
zH>^Vn%+pP;3EV>mopP$on)w46LQR`C$2iXi;I~0~_Bfj09>6iMmA;c+z4~D7WlAa5
zwh}uSG$6Q=l$s2X?I!|Q?cfqQ9`3D-q9_UspAs;By3%EG@xle@dmP;Kj-*@e(*V}6
zb>x^{JqYxyN524CfC==t9D%-#efKQ_ScpbPpmp@?uTrb+u*14?D&_##`xtZTu&Yv1
z(q$vvd=2Pb1P~9=_Q>FSa?}$5juy&MM;$>|Kmb7iWM;{P@4l5@z5B>FUw^@9qCrv9
zT(M%5vZ?K-=i1~l?xT54n{mC4`{;eiNK3_fZN)XQY0E|gD3}5uaG2!gG?sY)V-n$}
zs`UWzUmlhi1}o0Upz}FrmZjg71fB>=**3>8EiDD0BBO2cJ(HQ43UCZ#@3)zk?_nW|
zz$3u*rJ1fmhT~Dk^d>le-@SK0A8V5I=y{C9_+kjyjd|w{)^q3G_Y?4nV3Kl<z~Upo
zI{c<<0Z13h(MKIgw$Ez3J8t{)4Knt_FXiM@&&Ha54A)ILieK1&_RWg%K?^Gx%)3};
zys62Rmy->5=2V;$ymG(y!||z<GBXt%Chx$st-@0_Y!i?oO!BzMMMlWfez@?lPcAJg
zB^FmNqv`WLZyJ&sFIClFE28E`r2xh5@ns%Q2KWC?nfIuEt9a{immNLi#|OQnb!8tC
zZ5_7WU6;A04xm6jU-?11I(C%XB~|I~zaB_+uyv+bn5r%j&8`vFdUUHg`0tU&Yz+PG
z6Rx9xaaZELui61dRb~;?aE-9KR9n#f$T9S2AJ*2Wr~$1_9X{xa(#V7-S}+g8WwMaV
z=v;@LS5?V8vGm_l73O`(2fS)J%+F7KO>1@8p+Ln@*CNc7+Ar|YiVTQFVckdnq#}BE
zuz}a=JM?K??a)a@4Pb?Y3JH)_OqzS3^@3v)4&vL$2&IU*Zfm}wZR#_7sN$O9=l(}v
z<MT$OLIX<tM?=GJ3~rcK+BhN`2-l3kMNxO;*C3a6Go-QN`k|QZWG(LBnX1$!F}k!>
z^ham1qgosQmv&O8$4TFP^O<yL-<U=!+CsOcc5QRy+wq@~!36y#xGWXXh%e~aRUUlc
zZuGGjVg2*jcO?oSPA*v~&p!RQ{Nt$?k+(Ap{*NUn(aq|x?nm)_-1~1!8yLdr4tQl*
zV7%0WQQnd6WZzGkAYC9<{q2_@Yq51c^Cfhunl#RpHf`E)eoD!9^9KR10inU8T=oXp
zO<?_y*#ePguvRh%fPod^)Qx_$AS>rb03w4<KHdEybAhd94I&Gp3nnEsl%~*Wf>BOm
zwPlOuV1LjcCRk#dNQZh3Ds-TJ`f)1SkxlI!xW<t_+p<*)04@vR9{2+_eNYDO`3cs|
zpEs9Gll=TPx-8ZW<_*umUZIwdD7TvnYBw)6@5=Ii(l}Nw+aNwJfh-iR5!^~iO`&@p
z=CtDJ@c>KU$_1dHrxwo!8)}a(lE58UTVTC3fd<ig0KFP=F14_Gvt~^Jer?41x)(rV
zCP6V}BJz<T2DduS)s)E-q&3FMQZ~S=-DFnfw`nEQrc8iq;Xur3YncER7Brdw?(~qs
zgU=_pR|F6&wtkG{WM#;xCmscWl}@lknTUuwa6j2q8#XK^L#I>c!>}&LbNp?wBmqE8
z>o#ox6n#Sg2rMhC`2sNNz6UtBRXTL+Kn5Y2M{sg07;}>*d;=H9QwUywiNv{`HuXD{
z6;CZBf1nioP-uH|x}G69dr`Zc8paerrS=^<5*%Fx?Xzy(y6JpeC!ITYmd`)^80&c&
z7?p~kjW)gAAeMO8Cj2KR0cazzc;AS-*{0l_9ND{v0`<}Wd$t=y$u+yrE=4=_`%t^P
z*?cz{*Ft{bTUA8G2=h8?mM+JlBWrSP#RC-N7y!UZ2AEjCfg{$BCpB}6mH3UTqU-&(
z3qWXZuB}-!evpnGJ7O$i_zuTdVf@<5^dF}Z@M{RIvv62Kfcfi7Pv};C^x^wpIW9pk
zf&yxdp|b$=(!k)Gk9+SC=zImNN$q~?`fX7eP%06?F3RLc*Ta5FM;XaUi3H;{Bhn)f
zp}etdY{mR87bcrG?1*|+Dx$sVb#GH4^%PlV)I4$1udw$#P>bS+9zW$;qf9Q!enf2v
z*E9MG)>_n%0BZ^;(;l9fAHJBw^{XxKo4jrW#^7E0a<l=UqR7qZ@{XNpS@lIkz4xk7
zW~3H*-DvHwPbzIF{#rncnV6bmtFt{d)|d~?KU8+508SPz1;k6YaN8o9y{p2r4Gg&M
zMRIFyG_c<wZmA0Grd^9hqh_voy3EyH&sXnKP|9_Sd)3l=k|DJCMJaaxA3kTWXW^xY
z!Bte%+F0Huxo_*b$hzXQVk-kA8Qa-7{b@prvQz{)0aJlt6h|XP;L$0G8Y@xeoR>Xx
zo{)^bkYjZ~NrjC@9v-s@c&=9+#Zu|d-`IuFxT!?1BM@Ca^S_e@a^p3Lj(z36p$#qL
zeh}<BNHEH|Pv(_2k~AX=*G&XMzXZ9S*?dT|xp>ZNdSU|+F?=rtPN{?GOG@w!ZebKN
zU-0vMgs3l)h8gLGp<~-L-ZyRBBukerqL?+@-~g`V3le~UxsrkW7!%!Y#~`Q3^K#^O
zQp?u)a9?`YxHsBD7E!DGb~NU91L%O^#<p0NDrcw(Sr_ZquA=aH0+<Sgh3m*HDTL8n
zCIp>FHz{NddMO%+opa~@8J_KoM;|aBV6W^ZXaOVB)!#I<g^V%JX0=1k5CJr_2jBzy
zj<VPe81@vfXE{DAgt=g8@pJ+K85tQcvWrbyN(F4E6flOikO2qbbqcC0Wr2aT7h}=D
zsoQ9bDJcgYg>`%P0l|YPm>J3}IoDNF2EZ{EqgiDBQa`V2kZJR#jbLfzX{|8cbGxIJ
zNODRV&$n;eOtxDI0g2M`XM`?d>(;HKIDUM5T=0l<d=cT1<2MZKq{Ku|L_Mxku*A4#
zV*n6+^uc>LPXwrSn)K^GknFHktCmwxzi97#r)Ok;!QEGv;p%%5_5oaI0bq3{`)mEW
zHFSrAXg}BU+<CJk0quaWKi5|)2)AE<!!2Z^3Ew3w6RxW#QM4ZCyodG7bq9Am^fQ*=
zmF^41lk6aUZsv~j4hCK<_D;I2Sh<4iB!ItknbUv^gvtq$Y}>kt%q{>zQJEVm#8m(+
zWGof#+zx=Q16XIB2|5FW!=8#KXlmRKHQQ8NKM;_)TH)qP_dm|1U-=3A^ZjZYFa~|Z
zTCo|O5sCRri%SVckuAnLw5zr@RJg|V`;A~%W>zDxI+r=+(IwQ+XIKyCVArk<2oA84
zYbs3Q{D1{Vc5Ig}U1ZdgFEG-jHheI)bRUJgBcnh<XrIq`k^z&o+oNU=aqV&H#d6tN
zk@VJ$pt$lHJ_p-jNmZNMW7uJ8zoYL&^^EO-oA}S2L75z8uY3Qm*H*?oFls!*cCoxY
z;F$eeFg=vi`eZ0Gk$|q>3XG_kAc(5nj3PH<LaA{5Bhw?G`CH1y5h@6j#dTAc>e8<b
zvzcqZ$7C2)=89#0*im}#^59<OHH#pI=zj+VNO4E}3lmk`%!d260mXFNwa%8(f5&Yr
zqKVEFKwi^t9=6}EWXGFR19DYnixLeC>jJI2VR)-9#Lfd29YTPf_LvG6D~|RkVUMWE
zhN@O+U~xT18epSwVZw2G1wg&7j**G*hM7`Hn?mcU2#yMO7bDP)3p9lI-RNKO8Qu?$
zR4C>i4xYQ}4;vNA4ufAtRz)+9N4Me82O8f=0Ei&!taXq)&w*7$!!#x?j>cmm@*_FX
z@W|?5pAEan0bJ;=heSbiKhKp*4<@l;63V2@7RCCMa)<J%4}eA+@&GE>HcMFqKVp2;
zJK^}djq)JC${Y2Z?Lb-D51Z|*B*@M3d^oDs?jS^_nN)nvTUPnGKb+#SVjs{9=Jh_$
ziv%%zLEuUZzq9QjG_E+WVb_3Nb#w|79{m7G(@Hod1Q5JQ@wx`@ECO%N*p=#Xc<%FA
zWXP3)JH^~PL5xK{Pk~3ef|UfffY)&YV))YlQmq8gl1?|mQBOP~?b~;PhS*U6VOz`5
zJ^MQPWdyN488?ROnYv+K<WJH7$|4_K9t+^Mw`|!WuG@|{UyV98tzSz})hCK=6Gf&5
z$}D9cjHXtsYyl{_VByb>CKBh;<{a1atVhAAUf%?2Turh$Pl&QeV5XkW$9Aep231mW
z62Prk?$f<s!r2j~kRq8p_5R?7IRGFS0~flB%f<Bz0s5?#HHZkfZp|7-B)#FLKT*g(
zKv2J8f0%b5C(ry+?sv{{V9a<<5Q{)4GZJvdo;T%?6{}gU8idj;SN;Ar?Z&uppTM=0
z!ul#~kPMr7Ma4t}`w@(Q;~g6tFAbAZ896ivXkvha&6~G?QTZeF-eR2lhV>X8fH6v#
zA#Z7+Q#&lfphg?hUe_+gzPR0!g&Wu7CKtXJ0Wo*2N>Pwllo@WG(7cTbunRvM;&#{c
zz9-xO8O3MA)uNYdW#%KxIOxgfcBvW{J+LlC-qeBruidBd7><DvI{LQaGqqa-t9G}(
zE~yX>Rs=!xJDxy@UutP`c>%cXIxk|UEUiNo1Xd}-v^GQ><t0}|?*tz@P>S-<p`sA<
z;&ts}Xs(ee7Dmj-RvtHUm+Gb^2K=g!)37vFP}%s>513{L+--LCs!FbsiY)!$9Utbe
z-imiS&{ZZ}*$2dqcI#-w{Qd+%mDcHSPqT5)^DJVQHWl*;7nh$dfkv2}-YG<+f;6yj
zZte$xSpI-v2I#e|840Ex=96ElPbf7SO;(hVeh4y9BL?nA)U1L_4GlHT973WY29^Rv
ziV+czE-%Yr$RmM?(ioxYzh~vj)I+c<JtLFnt5z<j(XN|dm5G-F09Ybjx*q{ovLrGU
z8pOs1Z!$7T5UQT6rXAaNP;}WAf;nV3>^HU9W>gD;2TFwQkefHI#aV(oTOfcoQOG;8
z!5A=WNGU6#&Wo2oOaOwwAjX3%p~Bre$YOCfIY1^7w08iUY{M83$kP$F4%Cv-&+0$}
z1{~tt6jR?xkHrBb&Q<tilg$H`76IQ>fJ>V=53a;^BqgN~d;n9*#loP7dGRmQof`Sb
z0|dJ;HbDTK<wPK)>tefh?XXUB_<Wl-t-zdGC9l6WhvT1|lnOnxW96)~&qMUR<K?qY
z-q!%92Mma95XW^r11_CCd-cISNFd`0(fGjb8pC}7b`PS<?I7qh<-3XU{B!@5tVWGQ
z+(s$2+#qUC7f>>^kbKsD#p5C%wPV|M1XS1vhEbNp)Tf)O3nbA%VOHa8Mj9>LyO(3b
zc^BIQQUjdPg6(co-*((H_c&tk1g}1L|2>GQe*z|;vu^>QA%9Y$1C+&SeKP~vYfVAT
zMh%n*drGfAe>szw&k)4I^Bfz3mN+LP&Gzf1qnWT=vxect=S2mBWwsE!+EcijY`fNN
z+7YbRAa<}geSBOz-BjTQ>xx3?1|F%I#_MCpye$tsa1R3&=;2lb;f3$Wl;jk;05`<D
zO+_1d%|*91gmJP`D_jDr#{|*iqST@Cm$1Vk{<i6Rl<p~n?hYu*q6wJdvWBB@m<a?q
z)!HG-Wc#C`xwxeRY&Q$>x5XCi+RH48+{oXhAzYVikBP=}6`e<ir5M~o=ig5~`?|3=
zA9me>JisvjW(YMI<M(HKd!4^*x4WUX5nZe-e!8FM_h_6mm6t)~r3ZN4Bq7^P96)=E
zxn!ul2Db7r>3PkR<CZconqgW~m*AC)yrY7(wv48CSiLE=KZJrX47bn@_<Ek~D6p<T
zHL)5My@r=4&sfvKtbuNX#t+`E7Mm*~z=8W7zP~oQGz*J{7#9)UI&k2dc7frch1|`d
zfiS<vt)*&>hXcW!&HG_L-99)pn%!YD`r3fw2f`q0$_RE@jk4Jv+-LN=w(UE?P;ZJz
zdlO)=HjtHY$8l0`L{9tf>n}mLoO$(&iN<oT-u;+o@uCHEwFzb-Ad4(oIG+rLHu)Xo
zr)iVnQkKeRQ4WntxF#{g{2H)ZcJA5^##TZl7Z4SdA*U(>b~|?vlxx<!rOcl@Lz2an
zsI`TA`uVU*C^)KtP;*lfq(MS`Eo9k}1q9V}(t!e?;Y8P@qM{;#9o0-6UjRE?%MHpw
z4+HZ0$(+k>l%oNzFh;QL-qR|Yb?3)nYk-UTPynF_EX<q^4KcTS9HTo99(ozp(sqdU
z&y?((CP8Eh8;qY-as;9=_UY4`5#JC&Qnw3$UlGACMEirT+ZSAq=MBDCCQbZW;sDY%
z0FbqBU$Jb3d*bN-yhH%;#FGZe#0g&$I00DUG2TkirWCNSW<yI0Kn~8+2-*N7qIi1>
zz%V7KdruKSr44cfbjyB(%OL<-;|8dd?8N#zrbln;WWD{?Xx4WiN$-<2Yu7-8zBl@t
z41KzN)V|W=05Ao0^^#tF`pdsweAW@aC(A4rW8fCpq)r(?=L|ujYowd)<p5zm>D=Wo
z22l9#=+~gH)d_BLDP)c9+P#wiHxk_pZLtk#WlIIfugY1idx{E$F19#IiW!j;*8>#b
zkBg0GM8#zQ$pca<DqvNhIwfcqAgv0;6Eb7V!7J9oI~t%h)b*uH7R%8Pa?gS*;igUN
z(bf#DvBmjl(xf@H@n)|3QNksP{%_g@EwuI0|F{!m?0cgjxSq{-iYNkD08}^1b=TjB
zaq2FQJu-q(KDF?<4i7C7OfR>DhsFNmqI-TZmIU_!=%F6$)oQ>In2$pNRP5h-kkeEd
zL9-+AovNY~nL||)e74<6oxE%4`8-VBfr!quiVQKM_hot5T&5nIXJYEMO}G{#g70D5
z9tyUV7l_wEh-;b{ax|=9f)>nI;{Z0c>ktX$)_N~MmzeUw8EX~po-rTlV8FUmqrhid
zjAvLaO_2kjs9<-(fYGosAeDAC3u0gKpp8tg2|5CYW2$@EN+z3SY!es8WO)J!hsFWS
z-xhp&ukpl0_YW`WVER)z>1g)Kr)^lf@{<POWEK^qSuCDp2nHNG1A2uB#^W*5*e_Sz
z(S`;zQ6QC7rK`HpV79&RgJtv!J&ZP0g^sCGHIIR14B{|5-4-M09(7rEsBPdD9^)qu
z4MbH$5VEO96C6QM>$DKqVp+`3@1nJ?++~~RL+D^c8J)$rf9<yzTV!5`O{Ua)@BCM;
zzwuVN@s_{HMdzPMmIl}q4ts$i>94tNxHe9ynYC)gazw~`O0K%*dKlra%GaNN27oIM
z&-n-@bcE3L<yYSbLE|y<^ZeP8oY*iJq=w;_A=4&LlqHK7%T?D8m*LmWl}#JgNh+>8
z`c_3?LY#Q=S(2WKw!QsdvQuF2R>P@{^G;9<OeP3!kC*-fj)$=K4{-fj=YR~HpItk4
z08nWUVdu`F%RDHa?4GbUi~zX+AmZlD8_Gc}03AD^HPoRKLB+TKH=3@K1PQB|z*M5q
z4u%rJv1y3H7aK?R8|!S^tR>vyx_ZLOdtQ2$A^-uPiBZ!+i!=K}IYAI0DlFWEh?nE!
zwA0U)w(SZite%vTOqVfeeG$A&O-+}tzWj_J59-ow0@#^?NO!ZKWp$#QH0TU@<3BF~
zfZ10rieAbnmxE3@8@ggyU|g-kx-Ft`e?iB?FwS!&vAhk9z+Bo3rc8Qz8rL@Ts0i-3
zXs)``{s5!Ktyr;AmM>ch(efk7=v%gQ3EI0EqVlcFT^lWk#(ymrUVJ$M6&#KzoIik(
zlS-Bt-0m2~vEP6bWZ{CJ$>`Bc#RC8iD4;)S!nY91?<L0_cOn6?K!Bp~+_&`rdK`&p
zhf9|(C8!3iGVITdY%8MP5#R#r4{L#AM}cxf(=))PqHul@!9)O6(D!Od-7$=fGmm_}
zH$XBZyfX^9CUi0W^7kXosBaa(fe4^zV+?`vAE!>1jI1oq@p|mV3og7&SPtF+1ii|^
zFC>Cpn>TF$V=7J>pxu7+el_hjf#RHdZ0{GJe=6r+a4Fm$FO_@l8qPI_{zCg~57*6k
zgNF$c0o6!=A=q00uHKTHhu`5a_E7FPg1s>a2C#keMgU<=<=j79h`<69sa*$<(;H2P
z4f8T#l_&<(NP>1&ee@0UM_?O)9k9k0VU2C)yhct{{aw*a1m(RGb!1_aKl*$Iv~kt0
z4qVFG)`w<K+xnXAv7EhdfHL0+tgDdE1VWFa2^3)Jk78_8O)#c4h*h(a{kwCLs!Ph)
zY4)$Nd|ZJIs-NmoK<d&#`yqjc_$=+6Q~Q7{W&FYL>2}#Q4k!kk!ohPKhE-*ND|6ot
z0=BFOuKSA7s-0v7bWlVW80FEuvTUV;d3hqc20Y{twq0lO>SMC&y3ZO=3vX>!P8#qr
z<*U#jmx-qA&g1&wDd1rziSnCf+7Tt=BZFeBJ`j>e$l6RT!Ejc%4G<cTRN?Un6(zei
zruP0-G*Jl+%O)CHrparI0hlV^r;LR#>Y!t@N`OZ|v#)rr-2-*RK`oAr6PGrN@Zk3v
z7@dR7BXeU3^my*Q`!>1nfk)+~|NKv$f>sdR`Ur50`0L-rifJIzXZ%R9ZMZH`xc#Yr
zJVHbKjkiCQ2k*O0CWF0VD+|EEnR4GlPtdh#<U=DUer*wevh+@tdH@MZ5uxw#kq^i-
zFT5s?j(S1f1QTX6jO+vmLiafL0_oXjfPD4Er(owyg>F$hf(vxhsnA8R!v_E1{5pAf
z&(a7wKQkaa{ms{(0nF$Gkl`Bn<imGpIFn)0wYwbMqpwVxHU+L{1q3-<#);b%jE1lY
z1?u&;Cg^4iF}B5QP(K+}TQ+Z&RbUfce$|cgF~siIu35!)7WC?i@f|300Mz{S;}prw
zX@s>$eX-y+cr>$^BDfGCk|SNECQtfK1_1OpVbEz{qRnDI^V=4{rLMosn>$Bx^K#*G
z6~kV!T=U{)`@lp2kkLktJn9$%o$DZK?q25s*Sciig8;a!%uE73ZQFMQfN+sa{O(II
zWfl>r>)od-`#xj(Px8am$;g}T0>|nDd?+m3CU3p<x?FYDbu#p#D;a5UHvpN2^^@ed
z6HWmL*-1vf{tDW;*6B0B)HBaIPtN(nFo>~FBIp7T2Y|`tV9XruxP?)?KPj&XnQzAD
zoq%?Q_E>#@4U+*HT>$ZTC%y3O)7V2v<=SI@Ndp)*2P~~A-%pm4Pd!sI(9ih*%}R?)
zFuv_&;3=mAK-?*By#5+MlzPs7;<&I9?>ctrvFW+c>lt7t#%vkN`j1>N>_Q0IUq+TB
z06Yiyz&H#PANu$X0BX29IzS`ZHIX9hXP-CJVVrTib8_>*Dmn>sxSmS~AT?{(b-|?=
z;7+l8k7v(5XRr)D|3aBMWdaTP=Gi%9Z?0LhR+a(SJGTD-0At$;m?;`C0IrN%9~olv
zz^Gdb=Gf&|Tt_w@0CBS5&N^p^G;h%cfZGxRYXN7yq7B;tIy<R9fWN|`T~dm+Y~HXz
ze0a8U1XnVv$nxZvlKr`E%}V(PB2C_W%WX2^{*m(L8?VrfIS+Gv<+V3U34pyhvuEi@
zsNpoF`0n`Z({XatF@5CLJMNRFO<Ty6Dc?y6+EdWGt6X>EpBb3qsV7IWpO{<jSM&a{
zSiX>r#j$nT!LjOq=!i#PFWJiJ?{=<{cI`SKYGP-c@8I|*CpTc9s!|bmV>QtSO0$*u
zHS8b?*?2%T+x7ryI(pv$xkl^qz1n6fWFHmt(x?cnr4bo23wcY0nF<}iMIAEF5i_wh
zBh@MW)TLjQ<!6{2Qq5GC4%Hs4bEvhg-@9Y8wykvz7yC-<L0UYF*0E)2e?8`<9;&56
zLqg<dF}s0H0!~o@TU;nwr61$`Zt-(nm;1*=j{tm7aV}3Ml4Bw>y4W>69{l0~+CrP`
zv;#sjdR4Hip$8E1UNf!s-eT11klD?+M2@7$d5(&L<!zU-Wum~&m8HBBf)vAIXygYx
zlMA@UQ<`o5CsT{CR)Zd{D)HJ`kNGYtT!?K?9_8w>rtQ1KDf?Z>XArQYK`R3~ky%AI
z!BS?CfM#C#o$J^Nj1+})f?E2pHIQXC3-K(EXuIBcQH`I{NUh}wo$fU}Y-_)$`AQ6$
z+^ktsdG6`IQxEI$QO^Q|Itzx_7Dm!q1Q)>5PCizK55J3UQRp|Wr^;sBA9!33dGenx
z$({E;N_GU?sTgj5(!}rNk5^rUvDzoin>R-!xvh)}S6H|Q`HES0<GjYQ1W^o!4L(Ee
zfB13v<IQ)l3<xE&U2gz<_-O3g(y5?88sOR<Xz+l+LSs%81>J*RDxPRkG*pzLOWY0^
zgm5b(n=TnFpB*UUkq7SuXmp(nJoOy19gvs6#jCHp1a{1P8UCj`X<SlRTf`%Nj{51s
zwGFHkxE*@fQ2?*lXXqUvA0sT1nS#2x#(XHZxTJ*F{`JDsa`w4H9M+I-3-y$~{dT;(
z_1{;eS<@!eg4(sKkgOfJ6ME~z_Y$-R<&(`4fvrVdtxv|iPew<dWBWnWyeAERr7XCI
zy$S$fv0Qh<pSbQV%Ld@Ji_!JC&m=(LZNfKSgME@K15ZAK?4?&;dK!J%h56YfC2qDD
z`-8H`@FF|Mc7TOM00t@Y#NQs2!9y;RzWt7a+vxy|Niq9AdC~;*{WX9LIjkFFNuwV3
zxvz5aaslqmkdc3TSgyJH2D%7h?3_Lkka+o}=Viu^Q>CDwJ@@DMuRjNiXrG*O-Vidr
z;I8HXVVu)9|2rCMcD%G}laF>9hMaQ$Qo^;L*(j4h8-NP-WzFgpWO8Yt{s#3L5S)AY
z#b+t_e$v1}WZ3Q7x0j&I@@329h3B6UOVEexEUvNb+qTjDPdh#7HBEQVV!ei--Gnt$
zggu1y%=%P}l9nx7%A`r(a=%`A)ip9?=*4^nV@MGB$tUl_zS${l+U5%uxXhn7TV8wh
zWw{UlTuT6u$V-4~^5lsCy55wVZ@yLhaIvkYd`_FuwjEN6y3(^65&Wu${+)LEnbM)4
zGr=#^1AuOx{Oz#^>0)@x@Y|%zVMoaO@4kip)+Y`~5|$mHK42{JgUJN#vcJloZ@)_}
zzT_J2P0Snh>F)l^aIA&nDYS1Re|$<jMDkZ~J}<rOD(Q-{KOQ$$UVZr)0O^@1*F==j
zVUGcJb3Et<t&}vu{(0xE*ZF?CXT*aL?(fUB1lK&w<r1u)OHlUJ(zR<h4Rlv#1@kiw
zpj2YRy>i>1u9sVHzefgRtj`^M0R`d{;ljBPuB0RGxee=Vw=@BB5>Zmoj?L^J0DP7K
z78};hZp~mMa5LuJx8)MlKNMi<+BK`?ZLm)9F2&ey7bI!``UoZ(u*M5sRJx};jG$23
zZdI{$y%cXd6o3{Qov}T2gnQI>)8f%rLddoi>~hC@wqkC#IC?qTPJF?Q(2;<xAaF~W
zC_l<q-U#gu%`<!ki~u{O1C;rTT_%R9*{J1gY}U>5fYPkZV4+eUj#4MH?zCyUS!)$+
zPhN|}o~qPw?UJdyvRvT{;*jjGX2n6I(s+QwK$Ws$cKO(<8t3A8Xxs;_>Xae&Z#p)%
zas#_6<TKoBZgzw1<61CG(E#&_VQ}EP*Xh{eUerA|QG~S%i(A7kXerZJW}Z5}Q6ybK
z6{sn0YqbmHcIh4aT{eBKTo+a-;8=^bTUvLD=O*f)TV`DA1*>ui8y(cer%W!_-!o-C
ztPo%m-T5s8H5sWfvi<qp=knmvCbhN`T~8WiPF^>f+B|H2=QF%&M}lo^gG{*PI$S|&
z3>fAHr;I5ZvUJy(Zcj+&x(e-v>9afll_7)ZKldCbt3qqmwwSs6oo<B<a1#MeGsuI{
zWT=c?aXzhze0t6dux3@;g^;6ma5b=OZ_!?=StzEtilVInJLufwL&`**7SXPP6)uH3
zyt@%~*LnTUeUm?+pVJ$I{}i9mTx#c3)i5Pb^nv2Wty{MQGvQ?bPC&80`Rc1rr56mm
z<m40pIrC)N)JYNtL-gM-{Zn3i{z({pi8L^>8)Y-%)@2u;$4G22UTKic2YYAE?CFx8
zmIC*;#svQ0#)Ip#<+PLfFsy%SS{jF>RjXEDeXNtKE*?U+!)7g7kQuWGhTvWp-5uJu
zM>~>f%q7D>{QT3808*4l^Ja}%S0H%Pxdif!ZcQ<mFHZpEXb5IkZf-Wgq{e8Mh?1vA
zjU<aA7h=p1sisy=ptP7__y7L4zoHMRl9`@nLi?LU(fM7wc0<hhZUB187>`UB>WoN@
zj81p&UAM8`+`K&b`pb{ygAa<NDe6y4&wv2_4{&Gv2G3^6yKocy=BqEjKxxGymM>ol
zM%sD@pdjN-#3mzb)Z>o;7>Gq5vR(TM;0W9Ez`cLL_@)3<$qX~!0kka<Y`P4Hng2^Z
z`S?S+Dp^XwRcSFmi#>QgT^@V%e#t?f8f9n8m@)q&DAuG&9zm5v82-C=ual9FJs@ew
z3m^d3;s~_dKjL=Ooq_9Vx^0eVHnr29{KrU&e&^-pa85Hb8<ETU#^`^`XPDb&=sO;Q
z4%-U2iaC96fjpUP^SX7b<-QSjNH+SFo}S7*RRCt*!o^GEwm)A_HW*wE0g`RQ*e#>J
z7?^tispxhktx(o?-+m!ev7VuEMi3S*bO4l=5P)l!-<Ix!2pSN{xS(roLi{hzymI_o
zG;0?89D@&}qwmsMWDJ0a@n3x|En2lENVI<4TCNGW(BfK4<}X6s4?Qq~bCR9YD0oh}
z*Wd!ly0WvgFy~Fcni?;keDV<h;5-6a0iTl29XoQ*{P`A)L+gBMQ*GS1NtQ#aE+wg<
zw90Qy&>bKM0p)2^Cdu^aKXS|(0*qXR2!dNTZ^Amu0Hf?F)SDnpk#GLId0@6pkQ}Vv
zH0%W|WEuC-SghG^QIFFn3jp3~Fc{Z3<3Og<<(Cb^p2?I9fRjSO_);D80_XU|_ne#@
zSpt^T_19i5t@GPqJv0Fjycx{DnP4qh*e9RKXIPhMX~|-Vh0heY62C6vJ{-$669^RJ
z8d-TRp?IZiUjKC52Ly#uQxdsXoYWQo-j`pD19NN=-9N!z<J`}kJB#{yAB_DU>UaZV
zmlPtxrxC?Z&tScnv%9cvUzH9W3b-d$V81R}^fT6Avb1c`64!i;GI`T=S8+TWW#<xr
zdGP*wxfgPCvj}3PqrJ<PEtZ>ax)%E;8z5O6BDXdKxS1p4Fb1PX{|ED)Cz+@>;B|}l
z=t)Iyc-v9@G4=pg(fhAQAy)2XPkULcl?yR|mbp)a6#J`EP7muVnqg3(7-L%AT^ZMf
zfXQK87j>I-UZrZY-nkb5J*bSa{e4F2QY{%P8hYxWcgiq2T&#p&V~^FPx>T1`7^Bo+
zGPc2pjLV<_tW=O&p{0>+vaZZ^VPam5Ie8-d84-Aw9<Pb>RL*@01`w5aA~}<|<<_9m
z;Flpnm<Aa5R4ZD#1>TK!jRw=T?rBK9%gUebF>|xQg7X-``S5?6Rb-+z+gXW8=EEle
z3U{<aWO9?+T%;~nU>nV}3yFm*<3MM?GX7rS#;`0E0>E_tpj^YF5GtETM4(DZRW!y3
zqOW918Nv1nFiJDB%Gm<?9?$tH$Vd=McxbVA4S4yvtQGF@8U^6Zg6A_VzvfYS(RaF8
zwQ1do44QEtyiH>*AwB_yat;8jSh5;~?m6|?3EU^JlAH`9d(CoLykHJlNdPloz%`|=
z65T0dd=4Uy@+}7pqzjga`Sq<i4Buif6*jJ0DQi|PAuyB)W<`F>W+)?$z(9-=@!`2N
z7>5{Jw$&d98yYm2^~UIMjT)s>Fdq5YZhR8N0uzab{@htVQIiMx2)3c!crJ#~$uxKs
z8qA0V_>{rujb?6@wyVfg%FcH3)n}^!bkRi;?p%C635IGc+{luWlL^#p-n<!XmYE`S
z?M##|T{^RD-DW%o;3-|GnWGp@&fA{sOg<CAXd{T1o}SM3ZQZg}mM)$zNCcf)V%$+5
zSR#cI3qxBe0tf^mF-9DJ5kJPN5ue`)R*S#%7qlr6-+ctHaNW4k8rMbiF%9$RD;FRS
z5O7FO%OFs*1z_kR=zxjO!ninn??O<nq}Wf!0LL;*Bt9Wt1ILVJSb!*lU^-zQ*T`zD
zLx4#D2O4p1%UEfCjwjYK%IwO#8{qD^a>Y`v39zLw=c#n}Dy=%|B3XKgXm8Udjm1)m
z;DkST9z?ii(@<tt^kLK1O|tOkIigey_eMuB3KQ^*7C4Vbgw7mB5sX23c4fvU%SSa_
zH%MGV@o@>9W6ci5x&R}pgKT&DwqXrfVR7*drEPv20$6@!ld%;LKLH&Gu!9-24FM9C
zqYOV?An`n1B*9D~;|-5s9uja(5x_1fp_sUI?$inE6n(;61@Nz7d?LWVe2I;Z!#YmF
z*z9ruAT7+!dKpQOAis%F*c7a&RDk505Fv2+(uL?ljO1o#6Hwa?m(*e(@h{9@u>*i2
ze^c3ochhFfGXNd}eq0Ay9hL8O0ubn9Jw`T!Td-b-1b^GNZObv5GWlBqjq&JDix$ls
zO)auJePl&Nq^D3v4EqH0kw`Y=x8px^z$(sDe(P3rg(TZ7U~$bSB_$B_R6-p;%wHl|
zrg(;oG+&GbhGkRsd2i7^lwXhYAWCuHC16|uu<3qy!XqCF5Ci2_%P<Vs20%L0?jfo&
zrO8AU_WV-mYL32dEB4k7r;()sA$>9V&phSgRnx`YuYnpnEXP5KCT8iU>rypWNL{jj
zM=pp$S8K|7c;$Fhq^E!N@v2L8sqSqY1Yj7Qt8%uL7;P*Ihn8S*&h2u!cb^*!aS^NZ
zsb*!mfhT?jl&YjfP7urhN-lgriO*edkiDXe+(1PEir-D0F7(UQP~K+WS%y1~D!vEw
zvmPKSbaE3kSgu!!!JFR%&2j6KdD!0`oio-E(B1Z;S1v*}nd)xFmphnFsLKQ}*)}V9
z_$;GEhC;nWa>aX=M9sho?}vHFl3S6!S_D|z4lUlUCsq?X1EQk_;<F;EAPp{~dF2lf
zG{Fb2;hzf-Lw*-vg|Eg<F=QxDJ4(u?`W18|43Z548Ap<<4jAavbkU40jpP#eigAFS
zOdMGz+Lq4}8mgAkg7{=Z0T7~bYurJ(nQ8Pv+?s}X3=B<Z6A|cu%O;sC<ymP!SJIV=
zK%Y0dP-zY*#W^x-K!?u<fX3^{MnIwz6Rdm|Su~{q0(D`>3qX=)8nFzw-b;XnbX;7T
z4h}#NMv3TkMYctJLR>j0=YzXkF2I)@7uwAFO<xGMXm((j_V8ZhJ<4(kg5)*M(|I-M
zK%ffs=qQ^6+O!~dP+kHb$p9@(|AqB?gBAohhhPTboNGw`;h_-^w>!F&+PQh0Qmd>T
z1PfS--{$&BO>H2&&gTX9Nmu6DLD?>*CfihEUV@lc0<6$EBKu7RG&_}GD$A`>an|^-
z6QDxUW9`X9;1%PTo0~^HDiMpI1?~nv!*!nG0ED&?PS;5TF94nN8sa`oh_@<0cqKxY
zJf##t$ut}$f{9J$m2kWaiwJv=`!x&u*0^|*VM+j(?MIndAFLbmz<CM?K_T=h7eHwv
zKBE-JmJ#=`?;YTfU}uTH#Jo$%V$~XhHt*v)_kCP^ECDXt&-;uJ8rvY2{YG1PO|NaR
zpKxy6xy5z|>(K9Y0IxhW(5dGM{p9*2o6HzWuJ>D6eUa(LXcyY&lN^kJQrSYvb2)7u
z^Fr4*eC0I&j+}QtuGhn7N-DnlV%T=w0DLEN%$I@d$|-|ugn(gEV)Fm7_bxxPEZJ4~
zUc0_?Z+DyS+qSVm*fN$MLI!z&gpehsF!jI##E1!q5%b@SArd3Rfd7CgGp39^VTutJ
zmMvcL&yw4>?e5$6-t*;NTvzR=6_3oU%CD-v$2k?>$&-(WjLgc6h}?U{-fNq2wvDZD
zG~uf9DY=m@fKRaQ0Tu#5tQ%!953ZDxpvUwz@<P$R>(A07T)zH7G$bA)=&*hl+)Ehk
z?-gLx9e<5L0_~$t+%AXS-__-T0$f&(o5w8}&pVUb-|QVAzNdQ{ff943<&*C-&~oMq
zxXLmPngg~oH#lUu<#HVZJnOa=5MdwXt^<0ap1f*`H&LnBh3JcJ>>|<02HM}Twa}(D
z*`fmp%sBUn1B{KBNkcc56Y8DpsGE=%bdEu1kee~ca=r09hRBj+ZetCrWM;z}F{*d1
z^m*GbKmcP8aQS|3XD~MBLucE=r4*Y&4!OyV@Yab&Z7q~2E`?F^U+tCp5VuwAl`JV-
z45LN*gO)N;DWi%usP-s(xr>0j7ZrfGk|#4vceP9glSmm&-DDW)O`ib7VM9VzZ$|UZ
zOni#iZ+jBE_23&vT}B|#n404e31p`1^T@F2#CucS-hx-TM6kDXTiVZar>0+#JoQ^P
z<abF*eSbgt9kMz)^ID^cELlHq{U$dwuDmqUd$t(8y+hH)6cEIXF%m?xIuD&IkWDg^
z4N76%qWV*9=j8L%orJ|?vk}W;YRN*d{G78*#R%7v2cQUUD9SWLzkh6ZYHK-msZXFP
zM`QjDTIs`TpZgNiWGvS&5n2=c3^L2dfkUtax(M2PzPGSLSq5{=E!U8H_WqAr^wag$
z#wf4jQ~^b(t#g`kLt2U2cMupH$TpaLNz#_a0MOiU^mYSiNP>KT37{gUQ@jXzY03L|
z81tZeTn{mgixpZJHY@LX?$=kM7&M}92O-`^!BIo1CCeiFB84?#G{Yct4vok53$8`&
zQQ+(1J{2&v{R$Z6Gn#&&i`>lfCb8ZYctze6yo$SW|1uHDFMR5Pzi>jIxhGuqMDFPh
zVu_C!E{dl*9|>S3$E&;VaS!BiSH!}`%1A-%Fjx(N;%1V(!z6eTu*IH}%%F7xI!Qhh
zm$vlNnq55r)yxGskudH!fM8glV301NJTT=IB!CsnqM|9-mmw=K2(~jzPEIa?jw2^w
z;!VU1lU1}eB}Y{Q+@ah*8f&Z-t}x%%!-luovn}Mk6Gt8_xBUHhT`q)UU`Fy1S!Psd
zSt)L`hU?0rSX~vKmN+V0oOsNO2)PSpJ<M}S@nJ<Fi07hX+Zj&+%?J2RBq8PMB%;bp
zp`?vW0eGi`<)VO^iu_<`$@I|JVd=aU7k~1s<rF+uyy*#oUwjtz<*$b>$|t1cLDxNp
zd=`e~d^CW?*%GQOFg3Umw|&0M5Bzu^=Xdddh%A-5*$h(sZ1cOPk!?N;(PhYKiV<2T
z;FN%V2EmBRz4`z~^XN{PU{_j)F($K+Rbm;V3vU+kn!%78wm??h^9CDLQb%xsHwjR`
zUpEX-9UAM@Si7tF$rr^et|~4io#u8j=-YjbF1?1@J);6S^*zQuud19_K+V#09WxCk
z<T|Lnp>5Rlk&EQjIu9cCxLJb0{|tnMm-sGd0&}Pz>PWB3TaHo^^jdkhc3TnNUpBcJ
z1NshbNSu?tKSs+d-p#S@>4NW!c<RJ`<z-*`+zv1=5w&++bap?Kb;!Ej69}Qyhy*^;
zZ~-VXePa+Yj^?9Vp|LN8#&wR2!-mcqUE=z0TmGL_jRfYDl*3LIWS-#V7?lgc;G-A`
zm@&D;tRkm}j*Vj-+KFpN(Xqo^nrz-nPRh-^ac?I7VZ=z;o&e(*d&o<PP}Ih9L4lQ0
z&?>O=;VruK;|Y^;Bxlzl9*YF1a+@p`0aB_gvW#V!uu0`rcdZ1{S{^K3|0@sJD@~9O
zv_hz+>7*1r0BWRVJIi67?BrawmV5_KRNOX;$JBCTp%%ca?ybzWF6aqehuq|2&~e!;
z%&5#xexQ63RCLLr1kW$CA)}a?7l4;fR`7WRg)X{}bC4A;06QxZ1-T%@C@a-GMp;r>
zSQKllvd_tk6ptXMeR*R;l9^i?PZcybB#>~ee{W}E;+C1{<|C{zSs)48TA*>U0Q+V;
z3(#C7oAU|FN;G*s^g~`xnWp8;AAG&yjg~(_n&<H-LhKM{CoSNpz$t1!`N!x0LbWZ=
zch@Iyo?DEDA<_=1>jxE?P(?7jP{jeCo?ns*Gh)VtV6>{g`B&ogr*)$FyZfNplJMBu
z%amrky8oLn)J>S&oj~oL?um*<SV!+e{uyLtRV;UQknRWHnP*r)pa5Xy+|=(N4S=#p
zYWS6+>%>u6ZUs$NT`b4Nmsx7Jj#G-98Y2r8&GUddZ#11y@z#?Gy&i(&`91^o1jW}`
zDnvPl8ow}@k&mDet$sc*umayeL%_U({E!}kq54%Vl93^@j9W&Jp67BWssoNRluLaf
z<!C1jeHdOetHuIr9w;CbybqA}$4gr}hY*9K*C^L9-Z}R=$O5OSn^Bt<YL+(47?e_l
zT<7sA(u$xExEH4U<2mJexyVhX=GfY(G@L&bf|7^43b6s~YKZDKDDxta8{W$)a$Q3z
z>7K_Ml}`)IK<(H0ZZL<bb5$Lei+GZxDw2b(Ur##%o};{~49_cf_G>14mb9_YwXGcM
zNG65*@#b=m?i|6YErk)wN(}6DN^nPKa8-gG!7Vj~#rvn4;8h<M*19sf-^clgFLf1Y
za!NktfemD7uEDM`L~IQUSzM*!yFW(CbucQBpJ8lVs<T`~MrSPJ?sRY&3^Pt4?m(97
zSrsrN?=F$GAV*Z1T5}PYTTk39#E&4dcA*8@%h{#cty&y_7Pc!hYnuF<<t4!CFT}~8
zK;!Ap3r_%i>g59b$g}ulFx&sp-cqxr{q%@6B1v57#^kdC74et*LOUbno*eE+D_ulN
zWYEM@?@o)3O-wmn`kS6d)RIf&iD7|g-1rC_#~_r5$ExMbPloac>eMAZNcETgN)rB`
zTQ#PBtBx<3mGX3Z6rb*ulCFu<th(2{>UKvi_5GKDI(Q4iE#}hNC@88}r71(AFSk4f
zK;u|eS>Fv`xwRB;!Fk2FO6_-m?L!7Zv2;u}=uEH*0-gXIX=Z?(5u$-Xf*Jc=Lr1-Y
zJl_o%$ky{%B=FG=$vabOL7Glif${+KI&v$MW69NCc>;<?>4Bz6GiS_s1Z1g}AIh=o
z204}G>ZHF`8bguQ&rQw=I09)q;HYeSe+|gJ9<DpuiHBHH6Rqa(N*vBLWsI8Ys-@uo
zD!>uQ6%)Yfc==f$X(2E1sa#-QivqYTfi4&=HgHn!r;2Mk3Dgy0JvVYC<tbQPSz3#N
z%uj2qDXjz!3riG2Qi>ia|5Q-aSL8}a%O~0ZVf5WwO~Pz-E_r)OM<MM}>T=*x-Y(bm
zQi?#XQ;F=-OVe44LfC>;B-`AT2P@TLE@4y*PK)fz<iu#BRBG?6YUflSUFUM(svg+a
z^JQ^0^3Yu+z`!}Z0+)+Cd`5`_V_zq_BApcv$gaRB?vIvQI0t!Da1QF7MP%(YNMGCn
zIcc1na?Gq<uw&9b!)TLD=>`}%rcMRCvN8^rYl~}3?JS1&aH_}fxkO?;?G)PdPyt#Q
z@<?yl*)kupN!<>_aqbWoO!cm79V0<++e8c{@wIImXuf8OnO%R=y}LHkVk?edn!dZW
zbr$VN-A-mip^$q!*;q;w38Hp_FHAQ4PCIhMsZia9r{jHq6gjL)7{U1&+cAy6A4juH
z;=C8GRvLE0q=^G^`L6hM<qv!wHJP{OPa>Z-c2NN8OL32>?QMBal>i*E@Q|UX<Z#hy
zWH$28N)c0P$}dfoQ-)o-g^x6WZ{r>bGrS>!DDoqr`<EGJJ1ynK0xR=V?kSUb-s^n1
z&#VP`p3`77h8s{*^!TDhaYWt=MrsVyC$Z&hiqP*FBl>mVRq{QjL5o1K(7h0x;ShJL
z6U7`qviP;=UBgieY>^eA-#^S1b$191<8*H#1kESN>P}VZIK^E&<*^5tF&DKL{a#?y
zXC*V6J-m{^Xwh<q<R<-+%8})jLI0CSx525H4l?#jQI-mMJ0k>WRW62M5{`pYbByFD
zj||6nF;FD%>yndr-8d!Ud65q^&^Bv~#O+E#>)|fg6=t5>A<HX)TU0L^6Rr1b0g(Hl
zV}1KNlbdWy0<bQGhT1PKktJ~wbh_Go+gXt{Y4^1F-Zfj*0!ez8(7Wv+Li9=lx1lp6
z_2wuSK^l8&1mzuh{&IYztXMgPvEr^`nG_JIyXuI@UX;h!fmB@tIax)#CV3EA!xzRw
zjfF61+=3K)XCAXGhb=JMc$^$$veBg)Pjf?(XsWX0S;FqfQP_j}q$~!N<mR8Xd4$n3
z%I&Tivx7#rBgksrx)zEM)Z~W1@d*M<9yT_kJt;Y&aKHt`yOE8!YY!+(*72G+E%~bT
zVjAxbPjApA6PyPyFHh-i9~i(W0)ze~X*7DHxqG^&d%7(ba$1zP=8>ArlhJ~UwEM81
zpq5kC>H@~%ATM*L{*Fljd5C6`+r1U0DLuHIVh?MQJF-|ewnmH^qu2VY@-!X|beg)~
z-s_3YO`AvkYcO~Ry1R{uv*T?@^w63!MC<g{@BlJ%MOu|>zl)%ZzWULvYiBs#ql3os
zUOYLtBJz>8R&2;7033ez!|M^CuqkRGmf{Ukb+Q3%#7!Y?774`>w3w3MJ(w<pA|;-t
zbW7Ohn-n<RhGt-oVAh&gfoB2($0XzxSA1Pc=n>Op69J*^D2-Bn($G+#{WTli7A04^
z(e}EMCguH^cqY_lNnY40<boC~`w%<WO?ftCV%oGtTrX@huc(j_%h%UFUXC^{G&2;7
zZn``oU12V>;?00(bZuX2OQ0$D8o-JPNCi2#3{FM4FXLx%sh*<Z84OJ(uy()JhcMV%
z)pC*B5YK3;k997rA@Ztlsrn@{9ilY`F1doiu&Kq99CIZsZ5`WQf=_E8Sp}g&olyo8
zw5r_~$*^M#TT*Va0V9x{T{N<u>0`^PC^<qA4}qR<O}raA)<o$PDQt8|G(K8)9A0za
zCtoB&-nG)@V;Nq(5fAu0hAseJk@MD_`|6%XUcnDNQT$aRKWKSB58J!W+r~Ta%Dn2+
zG=PnF77g-7P~<T2?}o{WdS4EQVoMYqV5P77;>1Agc7xzUQe~<0&|o)iRi*+XSqHFn
z_=WUgwh^CDuHmxgu1LB748WO#&2J8cam;9py+v>CG%L(1RPZcBj6Po-V2IqPT};`@
zU5Y}Ozrza&k?MGO4IP^&2x@?AuosNUMWNDhMHGxEkp?Av?(^~-GCFs|NaapKYFX4^
zXdD{(^$pNTw!Bsl(c5Yg5!_9f<fRzMO|V?jfy3gSD7<Ic9C+9XaljA_9axv35c*~0
z%rjf^8-5=DvIN*VH`(hd*lLep2PkSg7U5N#6}=8zb6nsvi&VTa80;@5@l)ox+Meld
z=eM4@afrt57=y;VXhewcIx0}gWStT*l`&NAeh~*U_n72jD66a7PnYZhxb|+?jrG;E
z8kobLEn<{B^O*}qH}1{RoG^0zZBUZeBG~mp$VHY{<LMN!zD&lq){QyWY60TOvMwts
zwGaLFa!j0Sfyvx<xo;`yzzDg>!gydDb(kTVZ!!i__{<jQI@rF1xQOQ6oH<Ome3Xe2
zl3#5iUyghoc2AW6s9E>3pAOmzYK08*)Dia-c2Ccx@A6~n#!8Lrom5q?T?f66MwnoQ
zvr{o$#ylZunH9wVs_swv$cJ4jt6lyaoi7}X%9mVrti#&qeIXD?*5tkT5V@nMfeTbE
zqlQYfgilF3p}O<u!IaQ@f}yE(Cv>gV1<=T6^Hem@hAipPTG`W$If!F0^n%>H(M4?b
z+)2O+4q*Wh+5E%n@o7Hkp4JJIivmZ(eG$#WEYX3~FoRPnWsy+@6)B7R{RFlml`1H*
zR*+K8HmT5VN}2_}QhIjjSdCLj2Q)Bw0#$MmY(TgKv`h(dyZ}@g0dvgHT=uuX4Z>*{
zpC`(X{9Udpw2}+IpZ(x?I_loC2NPA7#x5nqhcgd|5E%RnDKKNbn18cm_DAp^8$s7R
zU*lj3_~KzJ$7ngug_QT;qgh(0GRfYVWu_cY3qU3Cs*I&^=xI65vVcz!BmYp<N66bK
zd^pK()Ak)I(oI(w!|cENVNn_h_($*yw^6jYzz~fmjB70OWKfuBK6T7w&krcKR^QFI
z87f6`DLhoOpG;zO9Nh^^FakFR4PeFW3QZ!Ajdc~WF7|J)1F!bgh1s;m$w$^45~_o|
z8+$Ayh?Dik-{bA|0l3-q@n%8E7odzpKjtc87TgV_i2c!F{m)EGbO)~PPuE9ItdGYU
z3$2`kj5H^S2$_wPooMiy@5tu^Avp%30hkw=A&>RmIqMYABVjvqOu*Y1t=bcCqsAdJ
zETHq6U?YH0u6jKIyd*`{*|{1*$IK1J#$}UHgN8L|H~)iSsDP^BA#@Z7qjefF?=gT%
zHje!9=$?~Nx<BR4(9s}v?;Nm)w-lxUs2kF0vP&{6j-+kPFW59q0;U)(*HuJX6(};+
zbl8`Ym3g{O6eL(gkc0JA4e`VcMu}(QOTd!t03=W(zyypSiOQ9w^-%`Q%E_wV^Sl&J
zPFj_Pu@g!iQi>NjV{R`j3ov-8nUGZQbR4JJhqk#es{-Cgg7u9SaM%t2SiGp>ppVPi
zZ(&0wsUzwmP^kqaI#g-^evx2)8-yY%klqw2Fu|x07gj~+9#hzqWbJ1AJdK?ul6Sca
zas<_K0m}aA7Q##V#mH)>W8?+Htppzc4JV+(6V%URXx}%AhIP^nnCFdASdB_}xuTED
z$4rhu)zBt_G-S-?pc{Btd$!vE&5!w$dF;%>5Buha^Y=@b1rCvY$bl$6s6JM=ix_%j
zrZxhj$`Hyo-aU5iX*+;*PZ~ch+OSmQstf?Wf^K$CcbxtsHo8qvsq|q5CUQ5V98`c8
z2h64GNmc?hQD`;*Q<)>{AyOvttR*|oO*Rp{gSuNZR26RMWu)D%_kK!Ijd}e#HnW=x
zHA`7rIv~XDIuPd2kot+v&7vCH7=1)V4UwMp<Vj-$$4qnH9PBcCHt`X)l3t0bHfS>-
z>`9>uk&E1`K(&REMBrb37+(v3r6>dJeZGLPEF=`31R~H!AGB1|q;Qduye(mq$cV-F
z5~7bK1!C0}UKZ@!)o6Uiz^Z&v8}G>XC)YqjBJ8=8|KVB23wTwwT_I8dom(|<W{6bh
zsN8rVcjp|JJJwqslH2FGz$>=zA2;xo2XG!T$1D2vV+~?pE^kqk=Z)`&GP?y<Ik?a_
zZf*gqQG-N-YcttdWF=TtlyXiQCoO1}z?8<*#{{@0qa|lx&}^cSrJQIX%ebp0@04L3
zCZHCy7Ea-XLtqPFEDL9OSs=i$=^}&*M4EP=PCWZg$u`<4w6i${pVzfYf=mIg6#19P
z_MLzfcWs-BT)cp=gzffuMHq~QKp+bAp{^2HW^~nF559q%R8hp8j}^ZnJ}9@rJ9vc`
zZO2`oa`D96(>>kOtKkMDBnu^0HE>UY31IDDhTU;;7lzi;hcn~|6p=bQDkflO<UEu}
z_J&-N&4AAOo;^n<2D2;>gX)DL%CF3c5V{u{d#ymf5rhAIR^wfCavFWaS2C-Lh6vpp
zlg44@JqnlMNj1&6u7Nlpmqc%PuvC{E?b^14&UYb6{~us(fog`3NxjCx=>VB}F&dCY
z6Cf=KEy)vKyj@W{+8KD*3UDPPQS+d4VfCeiCFe>u9wtD=e4vN0?-6E`_*uk<HI?Iq
zCrc3wWvL)?I5Gt6Hqo-MYAFJ8<;~-~*lzOg?~GS{8+o(|PR8Sx=J8|OaS|Vhjf07y
zL_vV<+z+|#wu9Sl=jOYeJ<x5(2YbLfd&f`g!M|DigMG65)IPCq7JOpw_QyW?=GZse
z58tdG-r2*uZ;pMl>>l3RZuiap?!o+<1@B;f1ii2kcw#ds1&cC0Z<j$%c5$Mv`SDVp
z2yFOja{FR>ut&mRz6p;Rt*oLKXKw-2-iC;ijce?>J11Z<cVCO(4v%h7QpPz;I2ma{
z$}B%c$jv$fS407-9^czU=0$nnx?+^&Sl*@_ds$mu$-*oD^4JKh>7MobbniMoo#Lxn
z0k~ZKaafOxRAV_qowM#1s5deKPfn;PU@!?KXs^5gh->z5ZvH12SqtV(#bY!V9}_KN
z+1*_x@|P0AvryYxSmgFN3+Qq9%}yF78WBeKbQ`SO)}xUy1}vP0^4$h3NCPHgjzdMb
zW`smpnF?xlkkfu4%XK7ShRQdRNx+S0Oz<_cJ48v;yVtu-0g$Go{b5Xbk>uEhaPq?N
z^W^im4l3y#JJc$9o$GQ#RZ^gyEom|X*NQaBC8&3_izbqjGUSqyB|s@}NDf9M);!fp
zoOBks%<G~S31VZWX?;lEUpQ-C4zJ%-G~0vWEjVY6vIXD1bKrQCR0MgI7@`aZ%yytf
z8O2hUqtgN*UMxjrmIWs2@y2CkNnMZVug$@eOWVBY=absey|I1K-6SU2{0O6$<DBI&
z_Od@094j=S4Y~nC^<f^+5+B$4FfBdk9LxO{d}0IdK-VP=a0|#=?wGxUDe0bfUVId0
zEwJ#W`V5ysd3W2<5D2H6U&YVDY1$tQGL^N+@>*MQuMrqgk++WE9m!RSVdb6WKD6=K
z_}R}BsaO%P-Q!Pe_tlT>N1y(peg56QXYY4EWtc@^MMCFI$arl#VDMB7+->JObL`CF
z=5*V=f3Symu-)VCkiYxOWw!^tcG#IG0Os!IemD;fT?^-vS5vz)GBC$#Gyq)KFQlM+
z>?v~a`GxPix8L~e$M)H~upds}IzX-MY{ym`nOALRg-TUL?N5(7GKUW7F2?@9;BUAB
zZP`FpNop++tAPGt7R>$Dr8<>$k+5e}!6_pWT2z2PYwIjF1l&Q+L={v&jA-wj+eyZ?
zyqFn>#;BGHz|FiB7?|xJn_6SvS2&A7ktY;gu7FlUG(emPo^cI}RRL>ADYUo^0%j9r
z#kV^;`O&~!EX?T^k>#96>px6Mww{91jslB_Z1=#j0xLsq0aMzq&cVnT$m@p&fxW8K
zkiCMJ-8)`!#4f!2OqBZchouCo{b+9ZWJ)(|MI19+ZfJf_Zv<+=n|Z^$eAsx?UJ0n8
z@1mNsbGV@rT)cquMCyBzb71JX!>jyx9fApxXrG<ce0{8~3pj@*I1B>#H6gt+&XsDL
zTbY@ZAPTZIx;Ux~nl+3SaOIM3bcX69B%LnB1o9fKYpF++=E&#u40kg?AxXXSe%5s$
z)PTW9r-O%W);ZYXlJvafnu_|@0$Uw_Mr4Gn{hG463bW*OIpirCVL3M}<V!1Vm;p88
z1)}Lo3PP~mSASu2w?F*#e`0^}3;)nQ`Ro_XKl#q`%Vo3E?=}jv_?K)Za+DdzW3`g2
z^~CPlyj;x3jg^FZ(m)hpyFdHFe(ulz)PCpZ|F8Y#PyNI`pWYcoNO*EKm*~bM!)xwq
zi}5Z2G~W>CdE$<*UIlW+YjR?+zG7wdK@+DHEt2yp-KLM*)VMe$7Z$7NgwaN34Nj^v
zL9Ihl8CgZfh2#JDTnhN&5-bMmEx!mY;Ftk)CA#p@#zyg?-t!Y$)Wz0LA}=4)NIGtK
z7FYHd-lu3Sa0EibNO8A;G}pI2zcpb_9NHv`J$abh;aC9Xw#)0F5vqzM2+7W3F<Lng
zxp0+%&QSartGb8}GtfWyF$DbQ>k;kv;k;`$td3#m@?!G?S?^=_<TnS2?&;2h1w%u^
zB&wK9H9#d7!_k#YWbT<4{e0W#!Uvpq6Mg;|RA#gsssJk_X?%xB1<F04>p|2Gw4z}Q
z?xq4c@z&HOz)EN5d2RhnV*4&)<9JQIiqQp8VBw4$s_L--Y60_{<_;`qGU6bE0tTsG
zhdpd>guHNO>~gLjEX~U2Hlv^EHw$VVrYM5Zk`n9Oh+HHPv)S)ML36OadbxzngQ~y(
z!U(tj@pu2FO~3iu_OqXc#p72-`^mF%YJIrrp43IZZ9n+pr|sW;{(bvr)9>3q`0fww
z2l1)l%+?FqNW=&j@p>7rG>|K>0U?0~T%rC1&NEae1~H#x=iWTJ4Cbtg0ITG*Vp>;e
zOq>+(VxKpem2)D`4~?l|Iyc8-aR<gcz~2t%e7Zve@a*F(pkq?SaN-;s7Q-1=q4vm=
zPlM#eK|BQD;Ozdxh-yYvWU6N;vN5v<Bs~f6Q(02?igY2IA`I@wNh^Q`w*+QkwsQly
z2V${vbH)*DWCCJ(<dqd6yq<6oxChA|!C019IyX+<fvXGJ=SK({js5ctzi(d%Y!JC%
z<4BBGF$;OO#JZ=@(|XIksJGYcfR(N)@CShM>+M3z&=9J#lg9=issj;JECrZy?%^C&
zJRmj5-Liq6OG{==E${@bnhjF24BDROLXh%T>s+w6esa~<JU2AZ9g*d`sD{#|L=Orb
z(25JudF`y32Su9X7+4JGN&3BEPQW~Xr8{%Lg0B~S=USAv2(vyEJSk$~0!U3&nD+u|
z1y$a7RN9y?Sc+fSuE!+pzu1flw<*<N*zWxo_D6sFpW5T!`EC2YeQAICXJ6a<$7wC}
zy7td$B3L|E=|imlUjMia*k|AR#2&u?bM_y8@MwSi-S62iefw+si|Ij?VdX+>GW7v7
zzEYB4Xr`u<37zMYVd5lzNEqk92cqTL30aXcDC@^`1!P1HpA=w4TF?^YpHhjR%$Q?n
zL{^=_F^pNZ<+tj*sRq*ar!sO#z<H)b1yC6nuK)vf219)`PjJIY(o?MD@k)xV%3w90
z+YxHu>PmW8@?FU?_h>~096+O8zzm)iSAJ-x;l_+eh%h5yM7B*N7go?vIwQRU$HLfj
zosdl<8+SK>!O^?NascOG_jFIRdm4QQi|#=)n|L7>g=$T?b`$YYvO3@jL7V2&J@HIG
z0Dg2JR<Y_|;w@&b1+chz4P@k6`Os;az$QoI7?ti?a-k=fEH@jDDFpUqILPq|Y^0-l
zpB%V6mDns?HOxVaUWw}uvJ4+iZh$;2PXuw+6}@{7Dh9HrBh)=%zG9N?QOAOOnQo#S
zvK5lUWwqu>!@>NG0<bE?@r|X?%`E?nEPzxhV^c#m9HDh2_Y03pG<-0j!1V&RYNFQH
zKy^glOxRA+cJF^|Kl<!f>_@-)kL=s=wf)JDzBX{O2Um+;hsiez5=tLM{rCFENxaX$
z_{#pur=QqQKK-lqpa1;l?4N(@e;$H60B0ZvoNe=bt#gH_z$+Z#ECaV$fkBxPB<nF7
z%5Pnt!WcTaCZA?UzMfH71@@;!NlbZ+lT9%hE%PSY6jU_VB$SjpBFA7IUBp3h9e}}k
zK)l+(g|nS{PUmX^?!Can&caHrF@TOspppQD8%I-9dx7DUFiw?t8X$%z{U8eL8BoFq
zntNCfhNG)Lj5q+PyUC3R3;KS4n%v-z`*Wx8B#fnziu4ma=*|H1dSwzzE|e_SXG`u5
z;|!?Y2JYZiOSF6X@OgKjcJpzn`e+X!GU`1RE$~o{C%`!7qf)GR_k3Hn<b`YdYHj}x
zU~yv^w~s5a_f+a69)jld!;?V`UJcY6ts8@_xcrd@qGO$*^x)=BumDLS|9Qa{R;}s)
zEXZ29PgK2Wo;$04N{!7KR%B)9Y~4~z>b@GJ9=cLn6Hk$zcI_HE3w=YE{=*m}b?cFN
z2Gw94=`oKT-uuIw9VnPhZXhN$MY$r6TrKQ4ucn}m2UBsI3L$YSc6L<eB21y>JFi6!
z5eK=&g!;t^KzEN{+MoZ-Zy3J&^Y-P}UmGIKf#t~-K4Bt}OXq%!_227%XRt56dbDpp
zxc#p$zi)r?{*Udu50ibxjYATmty(^MuaWpbyDP#WF@`4x`<R31EM(9s+9B|$;gch6
zGMYt+wkEg0DLJc*Cim$hc$H)3{`>=hyM^Vk0({YoQO3lK_!><VM2(j`0bXqn*UY|5
zU!F8xg{fk+xYBh-<Q6#H9%J3megrAk4WD{JZgY2*k0-W(R~MDVjATWiY4>5U2WnQA
z^y2b&4A9~XgTWXX(P$SI6ZYEx({d2mUMCY9hptU1SV7Ix$OuDTZ)dbA^XiGSKG783
znp3f;ry`+!)Q&cO4ItzVveNKYkkI7`v1sW`*s}q5+*Buy;1-~9cj=*&>4x~Ip%%O_
zWOYyXgwE;+tI`(G`J)wU9Ld57Zm{8WLh;b(MwcBr-JN+BXr#QV8hyP6Tq=1sPytZE
zxhRJsl>kk}ka<*J)71owX*g58+V0)<bUi2nHn5X?*Ut?u$mHmJ`OwQblGBuU%EEs+
zf;T`jw%1k(jq7Mg+^HE);?$tW+xu3JFJGm!H@c)0RX}`K`$a^=DUePfVs}o5b=Z;L
zB`Sc7j8q6i#I6F*vJ7mKMr9D1NaZd4M#Jrh%AH};w|~aIv~Ss`(--D9H(|M_d(r^?
z`QxYdqiJWKJv^Reg~GF%I5wX(&UtLq3dCup>L73l4*8sOjmhJ5L`HHHEoJGUy<par
z%RYY+2OtYTZ(*F|GR@4JA_QU`qqCYZERP+IQ{dGR_!4*)WjvPRI`UmzgBfpqt_U!Y
zDs$pRZch>}fKm-LJDA5{y9zLYq7ZfshYJRb>wwT;Tc3*v`!OJ1YO1OaXX!ZNfWmp|
zG&wulsXR2{sZltn3`SBs5K*2`9B1kbOv|gxN0^}iS!s!lM}vK06XFn#d2*vq$-@dg
zuBMw(OC>8s18gy~d+4e@&c^x@Pv&@2IlM)_A4)I>w`<8NR)<4>PGc&*GM^=0m-mnJ
z{A|Rvniw|tXm7t_o|hJtxGp!_n`fxvW^OTb<KR8r@cmH-KO~oENCeenBJx;290Ri;
zmoL>l>eK?sNn<OAYkSVcAEO)&p!Reat+qxo^hN7-vbDf+P<eT*zQsvMj;iL^NH7La
z>oJA)u6>lfAS7|k6G0%-DA(yMSXYL+55nq8xwqdNPDPI9f**=J7#>Qb4?=<{S-lX@
z5G{P=?rD|8r_aO^Y7F44|0IpGz7f$qSVmFS#Mz=5f9;ohj+*ak3ge>`HpZhxsbiWB
zE-}R6+|JTO*U;d;?tO|O4i*>bCsiMSbvz6O6~)<>S2`C78n``9X7413-!$FRJppEq
zL1UPqDDk{p{3X$cvE5J`m-0^au(1w!&Kik%e(m=G8b6|E23QURDy|;mv0N0eijcA$
z^4~v{F2O1$W0onz?N&gnkX340q8`deg89MBvyz{nSRrd~$3+@90ar0M?g3A?N`Sx|
zAPn>|CR00Cw-PdV9d1MZW$QMFnR_bk$nsvw>W<woVra+%6et4dK7l2E17!^LskLdl
zem|`MF`gT-&GKq-Z#0yrFsZ}s?W_Q;`TYDSRC-M2Fq;n2P(fD>4r9PLg-uznV`qWM
z5Mh|y%pVK|N_QHF+%IJGw5jx`(sxi~5b6)&z#=Gljv**=N@*RLRiX;9ia5kpVq_k2
zoX0nYXVQF#tz_OR%T9@a`rKw8S>WOyaxx3Ng*gh0A*C!XA-M<as!0|Mv*49nrFro)
zCoPdC4%HFUf-!X-RD`c3TvAa*b0N9uuDyYsOFw<9X*<yZb6GEcPqF>!jFv0pFz~#U
zM2Nr~LaJIqbEfN8kwv}OKKm$VKrVqOd59SqjP>_KEjCm}_Cf-**|VwV2?0$ojqoA|
zHVV14neD3A7^vmX(aq7o1&Rjhv1OfP*B@)Zhn(fIl6X)q6(_J!8X>8*)^<?N<cg*Q
z*nmQCQaN}PtV+W@b~EqQVL;~5%tG>+A<SiW^~zlcIcJF_kz0yLf>;qp*TN`#EK?U%
zkcICmET+jOP8LQfa4ATavPN1Q!_0?fotf);rgcElm2d-G8)&-Lm~Sh<7gDiK^Z>_a
z^-MgC_jFIlF)nyj@dz*G88S-yOb`H@gXY0d@D0ua;<E0bJ}@Dxn6gfwDa74V-2OP_
zxF{0#;$qF1%#8arr!ZQ{w*<NNc`eT%tN}pCIT!B>tf+vikVEn6Ch!oUC0hK_U59A%
z6FzXyHiMqnMP;f7gNALh|9RZ@5n%#C0zOx4-&lhXGH*XC+yHxUZT;PkVpOYKPm^(X
z;LMv0hDZU2VN6g6G1+8p9<djOXrAEg0ZfeK+=-mTLwNSr=s*Gix|$HnT()CQu~0NN
z?_4vYWajZ6d9ZCCZ{zpz&i$^w{9=q*N{!nQ?@VkrO80b6>wE<Qb85?MQeX&7;wl`*
zWqdWymCSddkB@o4IB<|dSw$OkNh(MfhhcDe+{tyV>wz2ree_slWA!EB4q(~OTSj-U
zFi5T*`@gK&ngpWt<S?wp_?348CDUdp&XZ!bHPXiGU?;proThT?G@V00;HPV%gvp;p
zy1}BS1!(~+;B|MJ-oYZsnHR#sU6lZnz$>dm!jmF%w?jUsROY7X7=0+D1ZM3mcqQLi
zUNK-aFS0-pVyzWMu7KQj+j%zj(B*F)rS4w;y?$!BzJR@n2kY`1(QnJaShK$K^<vee
z-<7>Myg-11Mv*SkUlc1S=5hq_A1ly`#t_iOn2xU17KQ&RPtSe18Oj2cvbHLD1Hh7b
zoAopRH_`ogmNF(0?5yOFB{OS1%V(m#paN)oPEg$9I(QL0Ks%53D#(q_C<0U0-z6K6
zuD%KgGca9NJwYn*F$7?+FpIRb*e`CAhZ$iHli304a&y3@a07Nm4~u{q!`$=UItxKg
zIm6Cq>@h-xL@U5P@)C2A)m4_P`_G$8;D;ZO4}42t#`7e;Vw{K=zvbe2ep-qZnoqo;
z_YQ4c75KWRyJID4)&;@{n<rYwIynSMBj!~Gzo2KJl5MC1v%T3<&geli01Kq)vN~dY
z8doP`RS${*PNx;Lrd|TL667Je2#kZ=D9dIFJjyi3HQN2&T+anT;)w}(a=eb~ka)#r
zeFZRhkrQDK1^5DJ3>e=Ei91axdXP0}lZ0b|OJTCON+EHgz^o}kr0fyKLgJqJB-{2N
zY8lO^%hBbcj{+_@i>FP!)HvYUVfNDu`EG<H^0+z4_r3mm{etF0O6zqJ(`v$HL))es
ziKWoTPM?pb^?aVlipT-Jb#H=P3I!s?RLZ3LAGJS4@??eF37N+Vn3cSM`>N8-nq}Vv
zj<pJTylN{GtUv#Y$8#7~j~KMR{Up-qHmLW8n_Pc;S+r*|D(dA*2qF#>Pw9?lr0qz<
z6h;*HR#=1^Km(?nO?|Kk?8|{Lb0iq%2DlkpAePZsU*)(ZPR(F+MDAP`V%ebqQ1Oo^
z-P1jB!+^TI-tm-s!qow+d*a9TW3h#e4J(A*co7>#<%|a)_coEkH*SX5ba|X@MY_OV
z!l9V>#IRg1XF2TF%Z~{so+7usOQ0)GRlyUk?9j7URc`{o5?a^)PiimyYDFN-sqD+@
zU^<kUVoJqrGUo9hTb_%ftBp8bh8b<PbMttD%H~2)=M!-LXBzWdE#(+I|I?~vjN{9V
z$oF)gzPgrVrNMDBqc>5bd2$fOMc0MdEVtk0?oHK6a*XbQ+zzSC#sipd0;lBOoJ8zX
zOycTEUcX2;!PxK10*etj5kQMPk0Hy~FkPbsK{Nrd-TG=w04@fWII|66_I~8{b-Gp1
zU=HXWJ90`d{`_-eGM?Rdc}zGPyb|J^2okOvo$z!$Xsn9`EIAF~X>QJAyGDfB<mL#o
zBzO0HKY*D{S&!QTU=arv3s{)vbs{aU^8W;?3V20Bu!}-W$pzd#DWJ+Wq`M!~o&5P3
zt<i|9RVd|fLtu<~B4JH{$;vg1%Ddf@x~Dt$)yFoB5oQ>zG98j_MmNJ&79KgTeGx0e
z6|k!ju!3PwfhE&*lo#3-57zJ#0mvP&0%)Rp4BFK(^ymQ_5}?E+OrBHJjnBFR4qTC#
zr_sp6uKQe9R7Os$L0Se*%AO5k(%o9_(*W1A!8ifzaC>-D7<V6voieFoL=iMg6u~1X
zH8G4yJUrE|FJTssW>bcVFV-MDoUG_twD~ab>S7lV9b$uG3zf!PIW*<q?U_=fko&YS
z7?P-kK}~j_neenXd9VLozf5O&Yvo7*DsG$d8aT(Wd=@xaE=DQQM&y3}$$crodrMG0
zsiuz>rcw9+RgSc&fcXjf6=14FYMpA{tijT%Y$HGH)1Z@UeJOZ#x!()V3Es~hL+phW
zWgwS%LwB^Boe+U0BruH#BX?OZ);r|ssFY`NEpZDk*+$n~=CYk&ToI9BBt^bztVt;>
z2-`6g)_}!iHpL-6w(kmkmD{5|+OEJ>MIhQQVUwG=!6LX{6Wr(PyFVGTUlhfgG%YEF
zmuyiD2<$risSFAk>x2!U)g8a0-4l(^3}7jNFXVJ}R1BdG1Pr`2dLC^V$o2Vhu;B$=
z34x+0n~{7a)<SpEcHFJ8*2+k4*0-^Z-hX5HToBP(zr{lDW)D!UlxbvM<t`y<L=S-V
z5zVtq?=~neD&ll7ZLqzDk}8GV3D=(tT7VJ_Fvh-KC7zJ)F&HVeME+j3<(B#YyaDW(
zBTYKhN)&M`!Ka8&B*DWvL9IMK(a0%}QNR=r$II0it!qw@O^9)vp#WejLa^ei4#+*J
ze`OA|kroEBIW&!-d<b`dJ-8b(Dh{!Y1B*}NNV?a5uU{ZEpH1+;VU(^8puiI(0IpcD
z<XRR^Fbc&N_upeASCB~5BSO&xC#L?-ql+~uQg@3IY0&m*lADy4<OkG#Pu_kV3mgE~
zG1frq&V`$p5c+XU1u$Cmu^y8#OGLcwCRu=;)yP1`bv27|N;OlvyEtJpjh!Ax(C8_E
z<xv>2-MS&I2N7nmgIR9Vum@;?odv@XZa^43t*-EB_PE;vUPx(>-bGrp5|x;;cr3C+
zT5*?gj5yp!?057YSS$Z{+r~#Puj=2ezHqgl^Y+ZQq{QSFPCA2sP<Ap>lwZK*?Vj!l
zOFI-y)REl47Gy(6mO<&uu#03ylDgj5X&UTXr8pl&+G`mWWxL#?WH8#&v_k$a@n@sG
z*GpyP{)vwo#(9A)^LMB|p7Hv*I3RH$0=S9^r0ePiv_#g^fORnBg!w~zsv9YUza&D6
z5-XIBExpW5I8VkGEHpL4xR+Z?WlS@q!8-a@7!`f15WVMes4LhCp2295MYfHYgU_88
zsB6WM-!q?sqND#g)A`D^$4;&ef!0^nTm>Q1LO+&sGl$_J?=7<2O*yc-z|p*ONZmQG
zZq4cnacp6u``|iDq4FT+b?`jL4`31G(eZlLs=7QiHsv^&3wR7z5zOrb?-^3OX=!ye
z*>UW%DaqR7Fg{IF61meXf=59kLf{ywmq%^~uYAdy6nL`WjeIHskJ|b@b4Xfr_d#-A
z<?cu`k=uY9XDnd>FD0^E)h1moF)Vjl)z7o+;jv_;+kC5`V?!GzmjoZkRG!-=Td(DZ
z&g%W4uA5;<K#(riRb~`I@xIZ*vplDC5lkX?m?1KJH>P|CJM$eaVCFI9wc9AY*w?H6
zlhKY9EC!L+&a?BsVBI;`{3gm;Q^)dL@RG^zbs;s3y2i~DE>xy@T?~xfE?)|SPzRG#
zbbg8(`W&;Jy}vAR*_srMHc2BjHd?skZ@KYmOdpa6m+8<fOrBdFH^=Dt2G5Z7X^A-|
zDaCv_cy`tD3U*H~g@H4dtBj1`>wTF}cgA60koA4ao5%?uZYFo_#5U3hoRA(_lY%#s
zdi0RK$pv2rQb5uuA@2VsGuveyBUOa=;P_yT#Tlb3^!*rY$lQ&c>`A%#MV>!I9K<YO
zH-{sLWd$76AWgQ?;)FhgdVB`fKCGQ3TlE`V=Yi68oK>BG&9SmPya~*{d&VR!*pU?n
z6%wAg%}@yWDU@F<v!=;7v9i`;)-A<MM8zE41bMy{0XrvHHys~!Wa!+bnHSWEX>LR3
z^~ad)1cjv5&5-x;;5&0mw9{|#x?uo|Ky<&@J?z(CfBltB(`281`l-3^jOoYOB+q84
z<6G06#lqhm>W#;H2p37qXM<PZsWDIy2i;)iCnGd%uxb&&&<n2APFjy@Jd-Pv0#z`o
z@o|4Vfhr!BeevmlB1V`oxvmtsRW4FeAbN`{UT$?Yf>##+SW3Ks>Wx}Rs<vThB{A&E
zo>U+txCKSMfy)JE(M~Y))Hdp4TnP=N?GbCnIuu22G$_=)T+^CSrsPNkm+kM#zTgG0
zEmm-mTvi@t(*cxn4~uZ~DQvQXWtJf=8Yh~Y8&fFtA~fb?R_lr@P)+WEwS`t~y?qqe
z#IM2IVD<PwqZqQ;xF^2pPcm}N^GTOCSZ2^#U~D~Mb$}a{Q`kM-(?E`WE%^c;nhzne
z*afv>?G411r`&*D(!*s9MRIhe(9ZhLj5)o6w~x@WA<`=AwyX68uUC^Wc(S|>QwmWr
z_(HHFu&kfRfptS+iR8M$Mm93QEGl6!I1;%tMBE-ng)O9@87(aL4|%$WkmTNSV69o3
zaUfLZnHKEh4F0k*=LL<-wTTp102YwDDu?8|g2T*I#@$VU&8|4LmvukV?T7#S|Cs&Y
zk8Sq}%|G4Q7e9J$w)>8~`x}4LzW3SpEFQl$xbKzjAO6Ab8Qy(j-~XjwHRSvH5Yzjh
zIm~vr?yN2W`}`07n;B_8{VRXV_$tYPHRv;5y<##V%}`$~`M8oQLUP9Pl+AJN@ADI6
z7r#}+WEMPv{9$Yq@Q8v;#c`~hf^wH)sQzZV2Jpk!0$G=<HNcfcOeJ0=4vuCQAsTm$
zzkq7a-JFp;WI^xO)9uii?FZi9(VC*S2!zt8_J}ob6lZ>q@#1PP>)FyIG1Cu+`aza+
z$|8|rHhFD{HQ59^09TNe7t8ZU<Pq#aE|QWF!g9&_JGub_6kK5>+|UHsOAUGC9j&?l
z%q>9Ut4aViKGB#3%|sY{qvw84_jFHl+_UR5y-4{4Fq|#t#T76IJQ1gmaSJebAl$~u
zn{Pm05-7OM1sa0Z8mwy0a+$D)#fo1(b;?@j-a+Ofp^#;%XG>$M1kbQgSqY=LALSaw
zmC&@W#1%!2t#RXG%fq75hNW$xhB_`ws}A%MK;>R4aD&yBS8{XlU0PsG*R@S|hkf}T
z_TxYL@Ag~29QObHi{G-p|LZ?*?;dvc|9}2t`;Wi-hxTv()9>4#e(}rpvw!Vp?aQwo
z?Hwlj*Z=s}><3?({rms&{+qHcfae2A@SRPMU)zuV@W0x_cfM!e`^8@~#&ngAH<9*!
z3j0^T^K1L(_HTYS?7__(_Ue*c2;Yvt&MYJX?yV_KjCG@5Ji8ejb}rI|I6Z1`z6<+L
z$|7sxq;azx+n<y5gaE4?Gl$VEf@W6(uVjJ@yH=8ka|}nveHyRF;SWzvEZ6aBqQTuq
zhC`whGT?TR{d6u)s?nsZwD4kTw^(5H$OIq?+!d8T0dfn#9DwcM_3;E0BZ1$YndLqY
z->u5AtL4Bl3iP!C;A&x~8J9ftk1PB2b0^xJf9ow7BHw|lkrfsu&cHLR5Jlaw#tbkw
zw%*e{-P7#=B4I%5`NrPJ;~6;+MJNvIBQ|ref)X9YGdbhGGzbq|<p($13q0?d4^MgT
zye(k07M-i%xG-y#uo7`Fa$DS2Oa(2MX)=b$jVs_Q*WI;}EcO}+Sei}3Vh5EqRcm=w
zjyfQ>iK_hnWA9Ah<S5Rw|9`7{W>2jyBtQ~}00HJO;q(<gV@!NI7$5Nw+n+zjjz3?)
z80T{mJC0+=iEZrQBfjv@M*_Z$u@i!?#22RlbKeLd2_Xqdt9y^xnXdO+W~%2+_l{<E
z*kM`8TcYUd>gw+5?y0J+r=ItDopYgV4%8BdxKK_U1t}oTp{gDIz=@9-+OVGUUvMCw
zc=H(m+_tgI&Rq#lK6oL2cf`TG{#i$J=0~n#^|l`3Ld4wunDbwDGHV7)eC~!@DVIG_
z!KKJgErL;ZTtu*g0vtF8sfLM*0PJ|HAP$ghS))<dJ#paDeL$Qczpd#+43(6HJrUo1
z-|5`4p~CxqHcW3ph(z-UAdr3D2Epzh1dA)>G2Zmtlj!X(@DEqsfQzIW?O7s#M%N9;
z)bbkL$0z&bva{%<VG%kQOt-HAKyD^U0BZf65`e3eaitjWq?qH1B<t9sx}V@xP>-2X
zlb&n$u)bGw3@jh=m~!ye#&CdS?kb&yK|-YC6BTXK-?M_VK_Ao0LZky@W<JY6l_spJ
zsp_h9Os}b-IK9#NbE}>Rikg@^)Ill{NW7p3_0u9jL~4v|pWxJ`rk%#7M6!rv3JT}{
zwm?y9cjmnqbB<skCv@8ef;4L?H~XBkdeP0?#bbS^2nwJxiJ&+eX2Wa{$uh)!ZIdI1
zh{-9mWYud%S9)qe5$ij0hIYO=W+Nv4kd}7SslPU3G~x2!fsE8fTVyGj9K$Qds9rO`
zHE<rxvMs8XHW6bqjVNBzR$;6HZ|nkNT@faB!34&xg_$B+v=8AGWwOG=lJfwl`GL1F
z%PI?SWmNekSKf&uWa0!sa3VMt?pYty9fW)*!HiHOM2Iv-h)}O>dLe9XNV|P^iDw)$
zZydaO2Dh#+@tl9YgH4-<!8wS8zkTsReCX_h_|ltC=DD9;N!&e;;W5wKE_r}mqaKG4
zIZy?Oij0hw7~Q=M#L+WnfbK$p-Mfd0B1d0$%;;D$9!vE1_25<5wRJlr2~l?s{r!D7
zO;GO})?a|((J{O#ecgr3{H0v+441~}Ek<+|BE~A7p;C$7?k=JzX7{e$Bx5C9v5UU`
zeqvEHspML>-KVs>L?wdfoOU?w&h1pbb2}pg-SqdwsMi{pC^5ssBaDp<gE+eT`snT|
zLQ>95NF^#TQW|4)Xg4Gt*V|7N6;Xv!xq?p=b%J`u#a)b+D-7?dy%(ILtFOQM93-`8
z9~vD&TvU4p>aE@g!=(yIrBXfS0^m6%FNYd#p)<>(-@J-g+gCA#NfFoa`{w(-baEVa
z%uLWHDbOCa;B%f=3Fc0T0ra6v61=7nGyxUxCgSe%E{@6dgL$(xW4t&!+5xi==@>BB
z{)cG&9M-eDj5v!lM6t}IJ0FZmAk)QYo-}yny&?j%*2(IeaCB=33?;Y9X&kXS@TEDH
zq6BaYK=61kxYUE8OPN?;bY<6ojpnTlk>K&Dw+a~pthN=EM(^I3n>szS<=G&6A$&9&
zM8w*6>#~S|<h@(vqE1?pOQvRuFdJsWY?o`o=pvahFwd+~1lQD|gm!e{*x)7;L>D`T
zI#57-bIO)x(o(n1PzBA*BWA;-X;Ipqib&j15iten7$X6EcrdSEnmNWd^r~sB=9|`)
zlB9VGJ_+Cz#>nz@!FJ4a5D#ASCNo)KH=TquWyTE9At(myI>V7gjY*Xskn@0*fD>m8
z&;eK(an91>5N80Dr1y0Wmol)zzTk=D7!e61rVe@`EG3+M@-jg9@Wr>YY2_#b%jZB+
zVfRRd4}beXUVOrQo^#TnoU(iyH?AF{*eiVH-+qO36`6bVaX3{HS7iIThlzHtW%&VJ
zBr2?3RbgacDLo7l6?)L#BXOe-)3tLw!=uY6Z`r`oMHTwGV%80o*s*bd{(}#v7&r1V
zBPfn&$0}T94E8_T7*?);D{ZB?c_p&na<qF1GQ5fIZ4WXQ@5k7VT@1`AvADm$BiqaD
zTI(n-TS4F4KD06hNEQ%uG3<H}DG%fQ(@07qu<16U=wRqM1m~y%MWbu(B#wtTbYVAR
ziD&%-B}Tg!Gw0w#DM$rXs7QfbtJlErMwTw_rl$*5t{ug*5bsVvQ1BoM#NBLvcmsax
z8W!(gWI<2Fa9LURV2SPhOBq<UlrAd7BM-85=MZBD9#aL(ye0@j#S7&}?q_a~Bkntr
zu>@qwUI_Ct6*F*pBcNhC+M%j?RlAOv3FZg-ur+f&jD=<FEbr^ldw>Ag`=I~hJt`ir
zmZzFzwg0RiwNII2rc%$h<C2H!XQFwGc>9p8xk0V#is4q;*iQfgIMW}r#f6+>4GE&*
zB9_w{7!qUZO$M|RX<|C4O_)xd0j{KdpfOJx12h9tWfqnQZNmkTcMs|uKJi3=3M5H_
zpeT^kudUd62070}F5CV9Z_W`+p1@d-4I@|t((8orU4HLOmejm3O%hGsw>80Z7Cvjq
zY*i7YHLVKC>;B@*=QjzhLmnKT4YOf-WODM0T)NlO0S$o806>ys;LuDDQc%<w*^eh!
z-dY#brYi=}fdJ+<5kW#y?a=QJd)EMj4ro)UfM^pFafLYdd8Sj7py|Fg@N{JiDHC4z
zi4Vt&-mhLE@u&}Z>7*}F%L}xBOpFyDwg{k&6s@#%L&!5ZuntNPRI=U%1+jEEAd*JG
zVJGA}Iw!%DO~4`H9EWrDw3!e(hYR~cgrsaNiHTjIn(nj-Azq1#T>u<3Zv@ud!p>+p
z(SrH(bahdRyEy;5>p1i1IqVt}NIa6jZ$9;09^PKzbr)}>tGAD#RjWDafE|4A6EEhl
zgO&hr_sTWA?lZsTgRef7mD?QWePunbf6h|=-&x1=nonKB`(A%Me{$A|0E`Up;=C_i
z&6lp*$iV(fa9Y6vR1#&hJjNw&J&gnB#=PXBhZz}z?ijXhALaSSF5ut(;cVXVy-j@Q
z7dtrXw0V5#{V(E!-?@#G4_(Z;FFz6JMk^zH^~bmK&adCaw&ZXY&g&yFCKg^{=dMvM
zdh4mY`Pl~mj<Zf!g8tW=_{>i>a_+Y_Q7A@~*Wb<gFIvKf{`3@j2j&Bwm1{O|?nT#f
z#clU9uzUp)Id(m;iZhQaanWDAki!pN3J4n?*~FiG{8tQa*~*dw7J-7e0^8SZ;>fv!
zT=M=iIrX>|q~Xq$Yk1@5e#iA2w$i`fJTCvMXVd4$pYhYH8FpQCJ4lGwwR0OkeAh`V
zTe3gT`OIocV->m!Zib3~NN!6*v`reECYtq{VhQb7kLOj>L<-ScS<L}h1nr%~BjMZx
z4{Dy#0-$A{0+WoXQ|Kp+i4{<-Iv@t%J#|Kw=?xkq6&eXtc3zZMI{}E057KCyncDRg
z>!&T#oMYHbYNB46T7R!?lCad)`*Qg@DTfKI!7DqVJ@85Z?Ho%^)c|7wX(U1)MFs#1
zs7l@WqohDlHBWKQlPKWBxThXT1Rtek1V_rm5>U-Ov!LE*JRF<X;w*?|A(b%ztX*5%
zeZ0({W#5pa(kXTS3fk&sn&};8jWoqJI@9#W1X3n+{?gL8Yge>I?<63zOvovT2hBpP
z$P~J$efB4kr_yMykfoa{MN7x)C18L`6DLX#As}GqDClFE4`^FGqyjp{)}~YO(k+kq
zVB0koY0!dH!AVPFOa<aS0c2tbXy)66B9=Fin%7>FmsEgNfGp&uDtXft@U?X6NlP)&
zVp8pwq{cQFk72bGylTi(RO{!N#*1&}tx5Mh9IG>QSbcp=6epQBtSP|Mh;fB|r*xHG
zv!;V4A{X*p5Cg^$?i1PdokPrIu$HbKceNO$#~mUNYmDF^0iw>C5E45syK#{7{^&q1
ze9P&qSlq=|e!h~sHf&^QL?G$n%Jqx5@^=IDFNi1<9I<%*;E4U1ySaquBMhzI&eM;I
zxcXzSV9a;(@t<sD%kB!Vefkov`q+!;?&;y;t2e^X7z+n_Iri}V`Pm20BI=pP`+vBe
zQaRz=KU&Hc&wC!5F1U`%ZW(6Y{32F=0zjY~f7oJ{&MOe{Fi9meqA}0>zApA#d;kZ|
zAA((5#`ouO*g=c<*YnO`#25I|Zw9${{U%;~;sXBc#iw!1q5JX7kKD%2kskUBSbq*g
zPPlnv%&+hBJadI-)2@Wu*TbEgB5)Dq&FlH<+mGk}yx=76+*s!8KYfUW{RQ56)>8iS
zBQNKzpZ*13ylM+bftQ@t$7Sz7hoLfD@Y6@wuzid-oPGd5|HnV3t1ITVb)!%P&C0Ae
zK)C*c&u8xZ1$^!5ZCwB0E{<K+&pXaIgzvw14ySzRb~bGo9<PV+wlj|4*+*{T2RH7f
zXK@cZca}MBam3lDAI+sV53_a4D0Al(!82tOLLLtfgenb8=Vi}`nRP!Pnq!3d9Gg-e
zJEhv^m{!)WSe}|)rGoWW_>8yJBut`FUuT~ts`w-U^>q_MR6?Ja_H$-V4T?8St(@7Q
zeIT;+>j)Mp^4OS9&9NR22#SEJ<*4BD%qE)H<~MWoD}o1{fJYIPy2A>mf>S`qEk;PT
zOBK6^Ly=JL$#`<H(V!(JXB2(owC_QzeFm-r3fObH%)XjHzcG4n)qNzet4VM!s;1L-
ztRi?(L_H(|&Vx8SiG2+~afo#S883rsdRHhK*jQP>*;tK$dLR#0X->0LP!$x-KRVJj
z=%WZSbA-CZTip=Q$=+Asu>z$EATwU;NL8m?-c60oWgkPO!$3v;+U*AsUq4mV`tb@%
zBli+ss?nIOD4xXHRsQKPM^G7hU}Wh~rfD0LX=YSNeqU^yP@N9Gx-uKUg_zKOKn1bi
z)n3HJ6+|6~0=fs<43P7p?-6USc?==^v&P=a+n}3RCy7u@R;YPbCRorc(<dZ^eAgf(
zA(gSTQbkll?VN$;BrS(0LGUPICTu|NH5k(?KX^69V{+y4`A&0-=(#Rhlt}|r+L(6K
zdcZ}oY=_96erE#Bp3gx%{YbRSpJ}zryNS=aizo4b;yswSv9Cs39Ze>h75W5C%ssqK
z(kxHCM{P_)&^@i%G#N?EM9>~J-Peg82F1LpI1^b9QEfkfO?F8a^261gATA1Em9edy
znHSc;ETU>!T*wR8DG=krL>KLx3E{l{0$1L)otJ+0UjFsXD|p*Er&VL6Jj$<cUc--X
zT+8>ad5E=JwxaV_AnK`9luDvhyizVHxDpq>;RK+Y6W@0;ciprVx*QjLdli>|@C06X
zTyNETAs&WC%0R@%(QZz8_cc^Dm!P8j_syHR=^szxoTn_|vRl^R6L2}8#V1+?yS$G{
z61Dz0Xbb_A#u5-$+v4!far)oi#!c66hOUSUFL{6uz2(SpZLh<4*Ymb>!R0&fi~A9*
zQyl1t`N9v@@b$|dVEe_-;D-CRa`t;~LzeV|_q_BO`&YrM|G0f8fBeClVN5~cpZ{Ym
zcYX3SzVObc@}qmNXT$b{Prvab0G|9ezhl+y+o2e7;kO>(!gn0ayUsd*a(M(iu(QOg
zUwlLryn5kh9^i@}t%3ds)@^3XyH@bQ*PXx#hc4jfYX|x4&mI~Fu=eBSr!L|L*RCc>
z`e4T{&Uwy$K*T5ibG1!EI&DJO`Czy>z@7kT#K0RHq;gu$G9`9|sx}Z_6U-?EHUX|%
zGaJaHq$Yq_6GEtg_esh)RgaS30}D&jcAaWsX)V^WJg7I|sopo{`dwfOT8quS|8*So
zkTx(D69Mm(9jb-}h&)9=LfT9Vr+L9#W)3*jzKMiRT=z2P2Vud6x(7|?0CkXh6b3|H
z0I|RW>I6kdq=Ez?cU5qz;62pM^%ajTjwNayKE2N{AOmofmIcx@I#D8ktWL<j&)Se#
z$@Gqg&Wrh~=}zs<!Ja{ceLbi?A&)s5rXV3MX0N*M$qhD>64E@2N$W%v?aWBiJ~E-k
z;89zEY{q}L|F_WDdK|-S&<+Avc;&GK^?>B_)G$}nX!o^@Fac9EF^axd)3w4U!2_2M
zQ7!E?*vo|TP*U7Rvm(VIB~3s$58?rr1*@bHyV(TUMT~7ls%zyO79^MlO8stPz!eUH
z#+3`#NCB+sanrd%aFL^SDMci%0auYTpv+0l3t`0tFb~kq*%tTB?cuU32l=ntxAB4#
z7x28}7x2H1p2xFKJE|H#@wS9_f9{uD`15tJa2Y)&KmfxDPhK&H)1I`9ul{Becipz5
zs-YD{!nTbg{KKVd#sRD+6Gsjd;_$vc|Kqh(2FIAcyuT_2zjE^kyM{}wIB)<WhxdvY
zf`uyC=hkeVs+Gmt2fpYR8@TCrTbVmvCnv(T?PFZ<?`wJgi<a`*XCA_Zzq*@J+0zx<
z`I;!qDX?H}fmnpDVhjiNQtXZ??HJ+}PdgZZ_g=gb#4-QiZoDd+*A4U6-&o0)-*g1e
zJZ2Hs+`EN?m+Z$Uf3lucckE=~&^bgAY};Dqf*(Fq1+WHsB2*!oTj1aCC~^7q*KyO;
z_dvHorNZJP98WoF4giHXg5HRG?%&NX?%B<&&p4R#zqN)9BLY1Me|E-!+`Xa1wRi8N
zr@zoK*1f&wCs651j7^FFQp+&bO%rgWg_*Ykc%L<lRx>X`t)zxLP15qDo&z&|S5oi4
zJk>1C>hTz;4~eg!3R){;0KQi|-bgMv78ck?@uqb(byz8v*6H}pVr-;#WN}0qGh6bS
zUl9_-KSK#MEka}GlDnws95$-Eh%~L7wv7VHl))=ioj&GC8^mA9J6oxPNC}CH07cZ}
zyg=f?3%>4^H9}lqWJQW5f;xwwh=7Wi69of+Ns?5)fcoDWO1Q68Hsk@?s6}XoovZt@
zjg7XcfuZ`iflsRYjv<$J@TwgT>gae7V=Ydu#%8(T0TI|2U4W`i+wXcdOwkXX+j~19
zn-obNKn+_!MNvTPVE%6xGr7+*BUKT}vV7c>(Ao6<ZH_;6X?bl)LR8CpLQQW~IzpIj
zU&_O*8m4_5jGNP$J0jGYrxLfcKT`x>{~=4A89>TJFiO9<kN1J05JcR~tPt?F@4bOq
z81<kbN-QEM+L$?lB9iktD5>5_{+ot;Cy?q?)!k`3Lwv2VVp>)Pe1&VI`JqfyH(^0)
zEG&n^g>twkoI|y2dR-T`f+LO!Na7#?d}kOj;v7k(!qD1#a8Z%r-sODf7n}IbPd6a_
z1(q)A;^n6-<YTWolz)EvSv*p@j&J^E7+qwTDkBw+S+)>>+g9&@?ii=wD+)aY)^95T
zI-ZQcLnH#g`t2p?E7Zz)=qWlP0kqNc<?{r*Se`cq7E0zmw>-E5dSk?cN9pY?uxrOC
z*WSO4ryseHdA&up4STxWL@K1y>`F|z?CI(&a_Zp=*tUC=HG?Ih{_qS?ecqeb3<I!a
zUN@&5J|BQvt92-b_X2a~6j(o4;{J`pRkjx%dir{}<?6fXlZ|}j&!5C|Pd<eG7tG;+
zg>#4tMF5gYU>#IEpa0o<&OG`^UVOqlF8bbfPJK!@hb)=T`QO|C!wKDU3V2TkLZ^Oj
zdBt@DqD+;}vawu5urxwrdYJ(7n7zJ9!--Q?TS^I_QxYc2U<|9kBE>7-ybqcVPu<%f
z#tcy<3CB#Q$0ppMh=;`LU~Cc8fJFh<>7hwv+Ju>fJ$tZG)wWl*C5?))V^wf_BpX_}
z#vq_roUGt0LhBI5NV|5M=7XBsn_lp$wQi;fx+9X&%<!r>@6pHsikVV+67L}L;0-8r
zID7!H#5wTxM>HO5qXg63V1k>N1BAfhO<9iiw}}B*V2pB)qKzGOi|k`FQS<0J8#>1^
z)y{)V*1yaYW|;_rk`L07-ypdK0%czhGv5Slwp~hoUmQxp-WJp=S!rfP)ns!TFgkM*
z4)XY!H%iXr&a_GQ_<>Zch|(;`KI4o-%u2fRfLLoKfYzb0ss?$<thjyj)zXS~ZdDe|
zxXm=z)M<V~x@($NCe)tP)2aEO$AsOJaAFquRrMJ^{-R>_u++qPmuS`>nMh7*N5VF%
zTUFg4I0SLd7^F7A2_}9nJ=cWS9SGng0w=iCE1|@Jg;fKnoD(9Ea2)}0MAdu(W2>59
z+eWqf7F<ju4!m{@P#7wC7WGAZ?EfCas*St3@ahT!^ZO7jGg?;GZ5ZWKUtP_r@$HY^
zb2P7h=5oGy<$Y*^g+x(}0El!95<n&V035|+41mOIIA(Uf_z)A207m*yt`UGGLEKkS
zG(FcVXpB~pv|RQ+Ng2Ge)ny!bk0hn~?}<cP0A{w2a}X6E8AB=+kZ$m4OODX7VE|lI
zAkiWKRK~#DdqE0N8G`aC^bUYJc5mFtSts}M^AEosqFye$c{l%g-EOY9brsJ#s*8Vm
z)$;nYMg1{X+_aV5WAK`%@6SbFeUO)*dK?h*?Q0)_o*19dq0nIsEDf7Hc!eSpK`tW(
zkWPdZc<kU+UgTW!V<;JuypWYLsXUl@bLf^libs7Ns4~W>PwI@*BuP*zs7feT)8?`B
z4U{syE3HR`OrG^@3fdtF-f04_G`AIuLDQPqqo_6lu_ob}#`=Hq#f{n5=pBf~79g7)
z*G~9GFzrcca!s9*xk^X9DycRWboX9y4ha1>3MztEaKSqv2nim+fdY7(3O*4OaH=2?
zPCec!B9hf0Q;!BlWE#=D-c_g%9<O=u%CtW6e>f}qGJRr(F<w-$+OXHE-3y@mvQec@
zMwc*8lcg@l;YF;}4EW-+VOB3opcRO-Pk0>^Ooj&maMP-kFJfR>L+vTGa;O106VVnm
ziHW^b1I|sdwqlcjwn@3#!Er^UJ$=r&37X$I4+<)KzP>2fzD=eCG%>oO$G|62?Us5}
z)MIRfFwsk?{g~zzV5_1Ec)LA{+Jq&P6Pc(5t%}hS^Ai>%l#_ZH5waRrV1QQY?$<d~
zsG9&v8l4!B<s3rTcjiqn)v}7JV3mUuz=~YBx5G(VR*0OlYrB{@Dpt$jJLiQksU(b5
z3cTWvPG(`(2w(W|kJve~jQNWO=ynOc-Q8>}4{`6E4+2NB{D65N4mGwD6diZ18wKFB
zgCf}a2+96O634)nhdF*l1PG&JK2vWeV*B~$X`C0nsUs<uD2<LG#ksgb1Y6g$v>Px9
zHj+dE_=6<^n>V71R^adq?-*ka+c|A{Klf}Xv16!0>;$wiXd@~3CPj*|V|2#|H?A7u
zl}}y3vUnT!Zkdl;G8aW)@F7k-r4N90gC%~uatMHvmv}DT{0M&k6-0P;Y#U)oaVIO5
z^>Y8Fgk;P^<oTyJoCr}bhyKM)thsL#28!_DdY-aiF|Zt!7;wxfI<{{panXNo<lWC-
z#?qr5FFAEFKf7ZW>(>l3u&5h!X8RGBHjLCHW0#=FL~x<qQPw>7H2_0=2Ep=m&8yHg
z;REB!%$5?=dvpI^%`^QS)7}9RU)SgXZ!8dePMqDRbx8-Vx&XG-O<TEro>|N*tKj6O
zfJ(j`s_jxCr0!PP2}JpEAVkn6ze{QR_2uiSdGCN?cWuVJQUsA!??<O@Xr%hMxqVW=
z$wYB}32o3LB;JEWfms#WmN=52cO@tUhbZa=rw-@Dnu1`AHuc~&l`=3HgAg&zxjd_J
zqQ;OitzkCk-Z2fSTOLdsriY0c&rqLtA}!5y9D>)@AJ|r!b#Im#vOH$PUa4893iA8m
zhfzXo7vYe$9Fqv3dv<`+h}~>??N`q3L5ISu+@l&PSTt``)7T4P>*v?bXbGr#3<V+^
z3{XN))SCw-6J8I@0#bIBl6cd;3ZA#ZzA+a}8^%^n%`AY)%dkn<ILiqCWk9QZ+J!U%
zAtx}V45R`f3dbb{m{PV>nwB(QaV`o`5Elhg2qCI5t4t#+-B#1JW07-!BZ?d%5yiL|
zybyMdfi<TXv1Q{3U;E{H{_;gjxZsUP@wSg%!?ukB(A@)-GHl<%tIj(Ga9nZIAe20!
zk+r-+#O)6bas8?hUU}xxeDb@ual^IOKzEVuc@;kVhCep*H)BTCCm0qr98C8G3*ZzO
zQy$n<=7dA$vD7`n%G=g3R&d09!@TMFC)#~{3am1oe<WY}(H-1;{cmCJ0BjxP&3}Fj
zQFlMzy>=aA+baw#?8?7S)Kdc#qXJSIg4?g7bm*bbwU|qPJ6Hv<{^4~ic*S4-f^FLt
zLb=Smg=IeS#+L$c)!jQ;zj2iNA1QP0%Z}soKe~(iZnz%i^uw+}-f{jZAl>ZPy$ebS
zbLaPP^r4G*X#G~!Tz@mfeXyfU-=Z<zdCt=S7<zau?C`h+i=n&1#lPM(4qzR?7v6Fl
z3kJIRt4r5|2rkqgI&VUVbbzkfkgDARppZs_udWU5s0Rgb4JZDpU<WXP^psU<eVs9+
zLSJQln;K{pV)gu>_2U)9+l0K@51L>*px_lzjDZ@?5fnmR-n3gA4*+Jq)h_yC*MHo>
zE6di-Vk~0Nl-jd|JeR$H&hu>83D-!|4Y^>TZ7`Ry(^K$75VVQepftZ;;~+ClwOH_~
zI6G>dBGu$p6X%1Y5>FzvtqR~E@?tDHao{}O=M6Pe=>lt8Nn#!ey@qrKKviQ|=EVN2
z)NGh~zo6!#2x;2J-OPE?=75pT&T=LTHHJl9+xPZfMM0Xl?wFP^8)id(;MLjwe;Q!#
zrpMbqY9N?4*TDTfWqk_Zr?oxB#)!(Ishabkr77dcd(;Uy5D%&XXhW?lo9F<Nqg;sO
zrhsBAK|xbUFr63FCV1XMElX{sRee2Alf+g<y|E3{t4$d3=1IT?Gh3L+dhTw_vU2IO
znkOW|)$$4Z0wEU_aCwtLiEskOxN>z63y~Cf3Z{e_%G7`=7sVNGg2vtoc@9KkA{T%#
z7a@*NCdNgsnl2QI)nge;25sB9knM*})K}oIzPW}|4(sQwXP?OPPhP?|{`)>wZyaKN
ze}R{s{uG|_<ioh;zTJG}vUSiE5l5~bqb^6XGvU08*KqaU9nJM$cnRP9=^gAEsqm^Z
zk7DasH<e0-fxa$Kp{o!9RG$lPj2Gu>VBPp}^ZaIL2Tlaa%4NUZ!b?w`&rd&c2A{h0
zX8L;yyyNWSiFy|R(AynDlKyr*8Wp+fvoGOauegOfR`1{irya`+Pd}DB*NyUt|5y)w
zv0=6Lekeq+WtZo!hf6%~sfX~JuRV*eUNyqkul9WJ*PFQHr1`w|j3;r+CH;KuCwH@O
zpo@2$a{}|{&EuV4eUNqQM!+lQetjiZy!T1me$h+$><?~Y&88t<d*&(p!7+yc(BBh7
z(XnH&%ujCF#>-Dzzz;t9R4%`EHOCx0msg&34Erx$0Kj=?AIPeqEo>Z0=;@2O<({2f
zdi~b%Z*&wluO8y^8@JRnxwH*+<z_)L;-hVGNi};JD=&@JF|?uXmDN@9zUpyp2wQvG
z6^{>x%?+<<=ZIqL&$=MAiMjh+o=-f4bmA*Pgk3Rn!rE~X>VUp^88qM?wHK{wy`4Gn
z1ur0)?it9|dQxGjPD?q;WT&~REzZ-HfR>2nE+tvKB=@uQC{7g-N94c-Gh!zuh?x1m
zgnq+Dj~s9%E$5V~dop!2Z?>r7HQOM?QU;{hpk@rAmO`WkkXg1&n^Lwp6#&5_VkW^V
zf@=6CQIz@4Dhgil;sB7uL*x(wThTeZ2S+u#nidfh>w{2ZS{aBH7R4mA%R0zx%qtHV
zdmJQ0or<9SG*XDH8-8r?lcLx)T7Z$(X|^9)gI6?aZTdv&6G<D-q8%qK=Vx9si+v>x
zJamfYqU2stZhR8~nJi2%fabsjZ8^1-X@l)r=gG8!ioh%g-;!nItrN)219b0wNT=W@
zila)y1|jCK2!|6IdmPksAxcttpCAKZn!~7oG@lLF!fQi@Oly;3Ge69GA-8<AVPBQc
z)D{9zDj>dbKddrw><|S|JJx!zLj{!9V|Z(?K#h-UQ+{2uvE1+;kX-+3*{$>>;-<r*
znTrIR#;ANguf9*C)3xzOx57EZ#60-mt(~i}6KwL9M!>YNYFiaW6_Wbw*akMS`JB~4
z1!+LxR<e^@X(Y<)03!2hmtkIo0wPd1<uhPQz?fEM3K(K!jH@UBR`?p*DvAS$MKBF?
zAqtTboJzGERp2JF`vy?UN$p-P+#@bV2m%!~0rM#a1?F@`Y~NYtMIXMC_q_BV{^p!z
zyzhVSPa4V|K5_X*{{CC5**%g_=#EGd$9)^itQ$;Fjp&{qbIs3Ia>TkpzWkn3dG+&7
zLV(L}9pyb=zL^{T={QEp5qQ|V(=%FDc8xdy@Zc0GNyL2{$~^E$d5_Q6GpE2MzuL^w
z`9(hZr-$&FcRd$?Z(O~d&;9srzW?qc***jaL<rz`_gC&^(So`B?aQ7@8oqbkHs12Z
z``NX#!n}b3KGBKyiX1z4mHEK8S98JZmvj25$8*czM!x>bmALMR*IjrocRxJB`(J(#
zpE~y-0M=}&@Wu=7<%d^prhje$=Y$_$xrH-^?%>OBKa%rb^9%q6hu}4zzK=is!~Ix1
zuRy^$$`QQd%MZ|BJc4u1IJO$g%J_3_;mbe2g-hRaBrkjR@qF=`yV-EVAjO3}jFddz
z{l!{dcG?22xOoTV&1L2u*o`K1HYCk-umsRHCN8F9CAl&x4l%oY5Kz(7w6{Hqi4Bmp
z58zF6$#k$3#aAN=iUCjx7+_^4N~mf1`2fhPuhfnc@-zv@1PLPU30eoW!lvHmiLcc{
z)inH2NXQAzx13Zfl6z+YBw;J9^{%EwIoAmpN>i9kwW-5-CxFr#tV1SVMIcg1u_-ed
ztoPwqNb{XD)^3~AQ7h*Vd}DUiWG2!w5#Um7gQX$zgz`D0iTRHQoUe_O2-Xf&h$7S2
z)Bt)BKqs73&+}m4uC|9bTl_MUU4>N0J*fj$#`MO(Yn?6+L^IAJrOi62t!{VTgPvMT
zp7Cqs)6~9Z@O#h@b7r>&UZEf@-jwcn%s_oJceU7=j(nI6G7Df$vemk&bz6JCX_|@g
z<jg0{S&^uq(gc)h%ForNa{9LK0cn82Sn2$}Ha4|3;!8s}=8!2RDGPh@ptCf2GS$}N
z>e}SFCOhOPw5*w`?itvUc2-&hn>J}%Z0r~si`J@wHl#o1Dz4s`S|V+lZ78BP(ZVK&
z2#Pn+V!TZTYyVQ_RT8`kX0)%U=3|q<kZ%JY_Bh}q`%IZNYsqSw)Y(#L4j>K#u)raR
zIFPJ}djO6?8pw#W8+*!FS!NCxxfmg6Uj@+02|>@w)%K%21IyLHtH{Nsrxk@~iE3ry
zxKPa}0qvkyxWp@S`wI*YSNPCZR&l{)4|Dhd-RwWNz_y`;`!<ZQdvl56oS1<*#Q;vi
zGv0RxBG6liC`69Kk16rceRpu?pAFG})DoiDvE#R^dGc{(=FE92_ddK0`U-sinnAvG
z<sgMv7?@K)J@mwm(URws_uh^ZnA06W12edyb5Kw|_N|Bb{7)X?u>HH)HdJBlx)BOp
zj>F%1GZ6ywyXs9L8B;#+@w@n!E7oz~{2~u-DzS60M4>yX-ako{J%u^_1una4kRM#T
zm9C;A5@BF&5plw3Dd8V4S;NOKd$?MUk+SEZjiXRe`sNnvlkWccUHtmiogDd=8##DM
zH^tboYW)a)EaCDSw;=-Ev7@&bF}StN^Z)Kn4m+rqo}%M{M@AXlQ3fac;rs4nPG7|4
z9TocK6c{NfY#n6Tz<vOH_v$Us9R=oMXM=hgUstq+2A|}dC>Stf!OFP++;{^Ha6%iQ
zF&K|(rcR2~AuFRaf>X?Us@K344S+lbSP}BVF*7AhQgLVxK4p}e*^*7FvA#|e63v(l
zBH^5zsIj!$Z|6V^mlM{NX`&G8RM`-!sJ6KPi3N>70d*mUaRCFea5$ua$%_K=nCfkQ
zs~dT}v^JsPzZNS^W>m8mdBPGjvoe}90}d;=XgKCv%8&|akN2s`eyw~(9Fh0NhR&=W
zhjvC*e@>IY$kG685!$A;M~o<DF|@&1&uAjk&gby#ePK4_$9l;!sdAoSL7TaM3m)J+
zvtc$&j}h!XAB<Qgc}FqMm`z^6Wy~)c!#QfqCv8izLK=x4PeFsV!9pZ1e;eCD+gcz{
zdE)tuqI(yo($-;>*n4fIWfn{bK^o-mk)SIr$j(OZ4@qMum_|(M`A2Ip1-nvR7($r<
zR2hI3SPa#uY58_RWMgM2;K1Pk%nKkn)>S4ta3F;90^lTq0Z!R-j1}b~oT#y~9*t5v
z=3H7f3V>Juq6m4;)uRDef~5NngmAB*omF%(PF&};X~MVb>5k~`iWsdZcdQ=bj<P}|
z#9fa5{km`h>Xm#LD<_POC0zQ^vsuzV%(7Q}pPj#a0AdIGDgW}G=K=6vw{C;}cxv@j
zr4T!!c|}IXJhwiu8;OLzxiNw;R#BoT%Ni_pIhbE$aA$>0gJZ-+M_*t^sn?dheQ#e(
zB~en1;V8VXV!;v5D^`!)_wX>z2|Ya#Q6xwfOJ>eM?HcPgmGBDPU5>aXs^+O;-=O!=
zJja6@Mp0FYT@n5BiZ};5h7$&NRhZM)1%8CF`)+0KqKJ>b=~?{p&S7r5a|b>1i|9;Q
z=26#>sv}L<S!PxMph#QnAnTI=WFmNCAW`^-H^3dQfSLIj=tKah5))asJ`0~DwJk|C
zR*xs)+`0*&f%&S~<Qc_ztG!Qa=d-IP(is54bpK`!aMgM3E66Wrpy>jLG~|t$#$i)E
zEr(9E?^SKeVNm`3QBcwp98}G?)>f}XHu1$v0)(-ZYMV0PN{wZ$UQzLZag}X<N-AGq
zz_axangJG7j7_r7GZ1tpDx>VR!G25A05r}B)}C7bDky^BTd{PVARg116m1~5Z1jMA
z4g8o1zU^kiYzR^YIW$Wet0gqH7c-y;d7RDS8-pM1dxI80+ZJ`#C&(aI#Q?{d)_I6p
zT3gVi<A$b_s%=jzRi@yH!S0={sD?>jUE$q8Tg>Ai-YaV8R(fI!6x7%PN<L&wLezmk
z5I+Z16J}4DQZ`v}#?Ue_tGZ3kG4Lt{lER%*VRmtd)38lJD;M-u1aav#41}s4i=qII
zK@_gzLfPs$g#B>e$T?I67suwIK>>YyV2JKm#$()a?p2Hg02N{P_A(#(&KkaP?%{0t
z(JT4EFYZBAdEV0wXWqQ|eBhgF`Q7b1>0ekxfUdatHPO}+pq_$*@n`|M;&6V&)7w=5
zpja$`LT}MQ(Y4(R2~dcn;d^kQ&c&X%<#l5x#NAP*T)|05XUp~XM0o}jJ)!Qqc9b}F
zc`x7jz;ikFu>BzJ<8S`$c0j82RDGiLV~yRSwyH9D9T5=_MJBD}k_P~c-O*@Z^O~g@
zlWJCBCP*phPNM1LH<<ewgVao-6HFHiV{fIPm*wa5v=mXrG>?+(tF}Iu$L35>8f7*$
z1#wR(`=j%dG$+QQ0!2tY#A<!f01-Tjqn0N~W8YaK%}Mf;6hl#MXa-~X8HTff)N^L=
z<hOk`pn4Aw7IqX6NZC^gqCi+w()!|w&*(@h*!NOU)WFlUUFLP>%(<um(&3mYVVl?T
zoegcE$+Jv|eH^^91*#;gdu0I;hp4vbx0HRwdQ0{e5NkHf22oTUpa2;i=*G~q%W2|j
z3$sC)WDAIZq-oplymvvXtqHz6(-?gswb>NBYLh`x)BjLmuL*HGU1$EsC6gKur2(v_
znCRj}tt_t!UO|j)rKDcBj9uluqEOFEOlTEvj0t>Zu*)$D)mCjG-`FtVDYu#~2u_@d
zfI9(Fz>09pw5<%pk^oGFeWyf$bwwx_IRnG0fEH$A=%Of`8;)gwFgFpj5+QPtfn?$^
zDwwM#U9nKhPXIr2IQ9;zjHYj1v7Y<Z?B=guxtufq@MKCAxNh|jpS}DZuDEJ5Jp)CY
zGCeGVZpXb3m$~HETln1rBhVFr-**O|ox{p#;Xv-#AiU=*cX8b<JF4KICUic~{_jl{
z1U1uNJJQ(V+ZuXC&#ny%a&wQL$u-841)HTNHd{rp{zw%tkjl*c!tul_ns_`ZKoy)?
zcwaqceP1|6?HCwPCaNHW^SyPsmcaVl#=w-SPKDb$V<xx0iEO8;b^v*`u>t4MCK?W6
z2^&u`&IH<KWZ1s80e+cl>S_2M0_YRt$4)1@V6Na198MLdJ~%HB)C)L=Ck3<w=g77d
z)Y#s}hRgw3isJ45;UBt>qbH^#F?AqiHW*_V;rA;zU{7pPv%zg_S!l%&L0a@t;v{wG
zG}ZS!8)m~S5UwB@OCHHNSdf`J1{w>ifp!*5+Lvi=UuPmCcv?Uz?RXtk^1c8aah-Uh
zZJ2L3P{K)?M^9UmU=6&&gwDKLQE#R+8HNFx6H5gXHnzMF({c^e@YTe2QPkF3vjWA&
zqyiK%eJPxcoPpH@;DSDt;0!=Y!7gJ?xv-BQPJ?&Am?)Gt@G1aIcFk%GCWO@}LNF1G
z%v>;%S~@b|ECs<doG%W9TKPDRs%a9PQ2>?#kwD*qE^fSQH!pkdEih036n2!M7|}g`
ztl&TsrX|enD{$wkAzt_XJ1NXBGIvglPn3Nj4D=S*x~<G9Z@&S`9z^J0XyD)z3t$<m
z%A5Wi;3p0T>hi3sHaW7|P^cXQ)Xbi(Ytam26oACzQ3NIN9z19;Q%d`{O5y=b=c>-`
zNKh2h(t*U7Sa{V8U<LmFv-fQ~wj@bbwk+~cRYQpxMxvpl0U@N3&;ZX!@P-D7AK(qX
zfDhn{_!7heUx0)VZwS<_rf)@8)#($y=nOZHmF~XdvM-srGc!C-obBPa@EzN)%a@sH
z%oB(v{ul)~umP(`uCZD6TRiIYY6-}~m1=x@$i`2m#w%=w^$pS1Ck`tl3L}sTSMdVa
z08k{2y@Jifay9EwS)N7r7+wLiqA`F$l4|RH9xbR5X;U)7tMx3kc9_AdWYRg8FM-U|
z`lMC!T7_|ecK)^<1H^Lscy8rzWMSV1ZWl-6$C0h9`eXO9RxMN_F3Nv;-p3p6YX=MK
zaCafsiro#5T+oYUnEfO|H&%&9)tObcm{C`^d}QzmSFoX#NnVK&E+lOLvwL&b)d(x*
z<+<y*;GPPyXJC=rvzlId|HBa_ka2^ZTN4&hmdr#*IaVMQOPYD}mZUF6ijdhF%kP!u
zN_3(*1z%FyhGN3gjSexW%p@vkkdk&Eqzg-IC@E=|a`mE+U4T@Cw~VS%))4x!3}!xv
zZ3RfgFauULKS%WwfX19wz+4eS46ym$PKp`h+TZ%qPd5G$y!!lyEb8&;XW!_A`~?BG
z^o4&E9d!Hj-8b|7dvP3T?y#>P#TLJ@Ng2MS=WGsFv^ON9q3`c(MF!QU_d8Z6Fr)@o
z#=STh8hcnQ05akx)>M>3i5-!&G5m>RFgXgdO6e>NQjifJ;?iakB{W)LVdWaL2j6lK
zW^fC@P4+ujnT*-fyIxhyr8=tETJkW?<k82eUHJmpPa@=}7y?(wZZ?3^-u!5du=GKz
zrg^rV=5XARB3TH)N-5t<G+?IGJF`B<1kCb(jz)AaM1PIcx+BSW!YE@iVqwKSw3w?G
zy!;p{q_^8UE8Yzc;I4C;iEiikhTxLzab<m21nuSB0b(8QaP^vtt6HC8f9?{whk$JZ
zE@X42JLo6EPVU~}zQ->%e1wOV{Y^@livc?AO=bx(N7D?sT}VF_gqn7bh8BWC=fsdI
z4pE-iSxQgJf>*xRWu%G?01Rc*f?P|)i8w*CG{y9wRrNJI-#CiyDNUvY!17^=a|9Sw
zo(i$2CU9tQGp}@BMV=vtRicIhr2?2zIUeCrzBz1&G>A`Ad6hLKxWa&_sp=Cy{uv+^
z%(i!fOKHw8pJB=E>rbvUTq^(h>ksPw_T|6s`~T#K&iJhLSNgOzV!5o^!75Qel)#yu
z9KBks$!)-<VQPr6$qw-66zsvk8k;dq<5MuLB1#s^lE$$NT&0L(SRpK<A0q!4V0}D`
zGw4;1flivI-eiAb16;6Y=Oj}!7Fbw7O$GOMQNZf#dxdJ}UDs7v{RtfnJ7(2%(%7;_
z@%TMTO60kV#+sI#*vtrwNEo0t1@up9G8&<|0)~i>v0Y;3_4{7|gqTs}ig9J2&XP_p
z46!Yeq%W|>DA{0LtpUV*{^gD8CZ+3YIWpB9MpsD2VHwO3Y|4>wAZ0d&K#>zOsFENM
z8DgH#7C}J)$GItK3?U&sn=BTLQnah6X-bX3oafzm1K0r!Ur+~nQ|>l+&7j-hP4mz?
zv9^WZvl~nI{6_nLJtQ3*Z#a@SR0@XuT6u{@cCFG;(bfAM@^^Hajq2+bY;28IXndUV
zK?B0cBW@a1g(2!nm+5^=uL>05ZtWwuDuow>pz*fgZUFB?TslS1dMKi|;TqkvZmu;<
z(ZlLKw-=KA)<GMB=160h*Yjj*a(Q@^mxSJT%=xWC3H>G>4`yIYXfP+2pWM)ug%xev
zh%&~0&#_Y_LpoCelNA|i#h9MT-|xr;76NiPiG~$*8p__V+~EdGTGOoof}lO9F>x2J
zz{V^zxRr-JsxbSsPi7MBj5)bBgiPfs;x^|o2Hee35*ur%tZ=C@Lu{?d=O~+JF`Duf
z_d~vqv;#ciN_?=S21w_X*j81Uj+{oKf!;8*5Me|3E$+SKt*s$OxW0>&#XC@mM-C63
z(~XSZVH2=Wnsfo+a+H6RPqF97MRCDZ#tO+gt?IHDyi)oNksijM0Y-+OvTi1TDbiMA
ze-!vs(u-{se(CPBl*hg?h4!p*EM=CmGzlllbiYx+NP4Q6k<WZU!!vT~jyD55#Ns6v
zXnhOtnqTlpptMP^+ZWAPfhmy|*Krr1RI=L3-Rh~L-BtkDHYtv8cfs9b`(jfG*dC1(
z_s3Eyb7&Zjfh9n|Ln?1Fl9x4!{vwP5yQicIQ-s>dp%na8-0`0H{v?}F-BEa6M}_5K
zK;dwQd$B>rKOBW<n-zAw^7x}|!5$X%U!mSSCS*U9xXzcj(16fc?c!>+<RN7_h(rWe
z%q!{QN~r_LAmlqQM$wx3j5PE2E#Q<HTisOxr)CB14vFlwK-J)bnWMKh2)6-ZL;3J9
z>!gxc;KP(wdaO!XkMg_%y~=aUR4&kmNpw)}C4+1aW`y(+(d2j|+n?;x9_1h92Uvss
zilM<pSc0&O-V202Z=Mwksb!t?;>-~rVniJ)iYY066p)pIePwB!@{A^tq|6|#(~&8j
z+346wGS^?5>~GJrxJzRTo}K*Lhj~*sa!a;UOgv5U(A>bZ+BP8|<K~bFAe~nO<D?NV
zW}g8#Tbh!rDlbK;M!g|!{jv-n&ITAr-m%i0{U>c?)4@|P#$1eXR`0hk&DpGNo*H0K
zpOk1Y=Q8APdZYU4;a(W8;Q?H|4}c0OUq%C0a&X_80ua+0c9}ce;SMKj%$)pP555R&
zBC;fc%i_(=Y|S#Vfh~a4-1l*Pn!X;2JLZ=cutG>Pp7k=g-5?<yGFrNEfrhqRY;X}a
zssJ;ToowBB++id-Ff<?@GeF`Uj)*J_sG31F<aA<Lx#v9oGz<n8z%}?FX4D`+$^F6H
z#inv|fmI%LhzkK`4dw>-__}UZfmTy^{tW-%F?i_v)l_S*z`Yj}c{|EK$|rZ~j6~96
zlVV-PN5oO!)j5tW)Pu$dM7<$RmSnD<RxAoeF*!VqsRG-Jek+bifERO`G){%sIJ2`x
zONldhl^+v-Q=T$5x1wY`Yck{Z+1Q!ya<7#~UZfNpP<mxuKiwj?8!#_{=K!@k7eyRr
zlm~;#k@#jqSzkR|I%^R}E{6fwcqe!tdYGtRk-4)P%mwwu|CS;ZatvpS$5fw=ixjBE
zlLvW-yh+an-yH>n<lTZfeDCj*{%!y?Z3>s;3~O9f8u5M^R(NA=`fvyPN`{1>@S0H~
zBFwM^bm4U^R0ynEi+jO(9qwUwN}f6S$s*P!8G~eF)v#R%ZaV<lSOh4=*w6UfV45;p
zCG0?yGvxl|ajG7odyz(LDl59Fd@f@ca(ciGgG<*{SQ5mPrT|qXKg_+PLyj9Hwix9}
z%rO8ma~J3~<oZOVBafzai~KNjY=C5LfBMyEW`8hCpI(N6b(DXU57;=;{_Nqiee-Fw
zWUWY6Z#9S%>&jYICH61&NGhv<bpwY8OO0~&@@$C=W@d)Oo>LJOOf;L7vRiz9$zetL
zy3xi|(nns7Dnt6RD$uIb!8=9myeVS}z)e|LB(LT|^Z?yv`sdrgq0upj1_I5OZcOPf
zc6bW*p<-y&f-&r|M1BBBK)1g<W(X-zTT0zKc6p#xIshA=ik4D`XQcXI3SFU~(!tQZ
zYt9$?KJnq!v0|<s?qF(N0Ya+3xrdR49ISD61%^j&v?@hfhgJml?%w9`ak#^29_<a*
zL7>-k=S@yrD6+>7G(O5XYjsJf)_HzoC#!0BA-MfPocVsz6z;=q&H9&P0zo+(Lewy6
zp-ApAtQ1Tm%7Ty&nc<Me9Mx=mQ4zKt4A7+K5TGTNltlR)MSoQQR>8U|X{C^Ti11-%
zTsfr23RB*kw)jnqt(sBgk+yu9sGmn(Sbm;auD_I6D-CG|c&)HLJfFu0`^P`~y*Ykw
zKYsqkzWy{A(`aS~!|2xKALT2(W3ci2pX?w0gWuZU{q`sO{>#^OdEf#aQ-dP-RLLrK
zj6-5lu|-2<sZW2E!HFh}w3K9~kz>)TlPrZ8;Fv;L`(s$KHkcxxG5llpM?4?>w8F+x
z^)k{G+>uUEd!tN}t1KJDwaS{heq?XLc#~7+UR1L8vkt!q&{AHn&kdXR3+Rn9#`$pB
zkDTkdHnd)e=d*c%w^Ha$yKC1OAb`Tqq|^TfrtpbAS1W?Y1ZX93$b*4djSKQu@%f^_
z^20%vst<QFk?r>iimfR{UN(;p9rT)wO-Y4$sj#F3mhem(dkzrmKwe?**|kdCb+`+f
ztIwX)PgzG`RZ_wLyQ#aq9;!wmJe#tgXH5mt*iE&k4Kd*rt+SFZ%)o+~jY0n#KucU7
zLG||1ZIIfw7z($7!9Z3FEcck0Fc?#^2$skUBtPipHX!?Dp%1k_t3eDXxL8<#2M85$
zumG+eBHj!bCRP?q<&``>=d}X76@~F)mq6l(j@U@e_3-LsAEv$yFPo;4rWLW$ruN72
zll_zLesBNs@BiHX^MCuBHvYYDCy_^{&t~ah7~Q!1qkOo*KiTiT|7@^d+h70X&$FIA
z!W<jRGop?Mrwco+FR{^^!RmjAF+m0<#_7JYewqS=vIt8ODa^@|z^zGakTzPH!&%a#
zin$eKhd(Bo#Hbl*pv15#(#Xk|PRb8`Cj)Ttwg^blDYWU>l)_Dj3Rr793Lw2U0TSV<
zGzWv?>by#K=>!gWRI(UW^PigmSYf}*N-p+K@`BG26;k>I`!7Y~M_f<$zY)XgU(w^~
z9t*zgFMW(?tzWuXF(4y0X7p1*S~RwAU92x!=lEg4t8{=@w*)3+;qT+T8OGJe2sk#(
zVIb?5O1uX0bGV~3AC73OA2a{an{)!*F^1ta<IQnE^gob>2(I#U`n8;NUN!lyZxokK
z1vD-{mTw=teRw+5r}#f1GXsi~wZZ1_tU1ZxImTbfJ`TFA6|Ac<@zhC706-iDODWCh
zC!9ujU#lVK1I-4=M5hA=9|BCu{z3YxWGT>HjH*GF0j-D|Vwl4KD7_C-_B*&3Tk$+j
zX#`Bk+F%8si46dc`y8%!5-b4d-U1lwEkn@8<n|>E_V51rFYJH);<NqF|M9oXfA$yl
z)mML_Jcm2njnMZoeX*Z@{R^`n|F`}7fAt&tXW#ul`@cW@4TEou@2)`tG=R;CO%Kwr
zGRw`bE?~eMfYAgnWd??<1D4G$<DSOMxGKO^C~Y4Fa?MKEQ(Ts4NuZU0u!-X#CGBn&
zd89W-Yx8>SWa8pv1;ffcPup(-mXS!FGwb1|hQY~gS`ngMC@sXeQ%)&D=Q*>mt9?0Z
zmMg@<svLA5$0C(TH@zh}Qj;raOI0LO1r4THJP}R0y>f))l3uJgcC0P2K&3(XKccj<
zWMNv9Vlx`cd>ij!6i5)DHW__8?9-&upW~86<)k*)_Rka#MF0Ll?bH2P_7AsZgwc2=
zG=mSL`w9>%L7Srf-C;rHaoYJl@7fV9;MU!f&Bm{qZy57^^k$@!Mp`0w6u@|=A)V0~
za#%8Xk&}|pvk!M~ZRm}HSgZs1Ccle137YYTteMXypqNTl^*WN3a&|JL4p6W486DOQ
zo9aLT$gfGiSxc|MS-f4h7pS#M&Vb~_Y%ng7RU4=UydI6>sc^0Vj8KyG{;@D4%CW={
z_Auou3WE{;1;w|>%}6e-qk()n4WlU$0>xN}y;DF_C{X>*v;rp4h={;oL^4O32L_^N
zYq0p>1<(n=DcD>E%$mZHnOTECD@Vn?%9rQ+VeqLQ9_%gmK~@S8bspm0WyR1#@ScO)
zV30Ur<S`)X=Ypr)^Jk=w&L01ID}(it)hiJ~GI#9nKYy}6{rV5~AOFqI?LYn3U)g{8
zKfkgc#y>Y3ztUiJsfZcuwhl1k9f-&s<tqV}%L|Xj0)B5l`}1Ggzx}J<*}wQpv)}yq
zRkp$jG;2%&+lU<|%e}9QNX)*}>n0+Viu4$RMyU@X1!m0~R!WIGGhj8j0z#$8Gx@X5
zE0Pw%gOLt~kr6V94n~>O2H0p{43>k(`nxgw3R~W-L70<3ll^MkF~`gCrs`(<FmkUs
z=5(?QP>Z59kP8>ln8m0{EIN`{GX_!8pbB$?L1u9ySWG#u`VM=5X5nY<QuhhBhhx%s
zU%Gy-0?*jBUFf}1ZHxh2VUhZmrr^Sg1Rz!<87Y?eZOpMMU+A;Cr;_Vl{&g-6UPSQh
z0&7m|Kn4Wpy#z5q0MT7b0A5jN;!Ktn?@Ut*YyV<9N)fkap%zNR7>C`>QUK9LUFi3+
zpjm>JyY*ayyOj{bhhWy?UGP`g6V%_5)A+O?nh&jGg6-@P$R7CErM;nD7x_gkCmB|N
z7#a+>m?3vlw$uPzYr&h$!TqQxB?&DCqZ{I!$qFaqc+EP60!F#1D;D$TgYsWURpUZ_
zz(6fkj5P{Snffu8bh?Fn3_KQ?rRll3hqW%x4~K_EzC=srVIJE{Ddlr!YCs}&li!1h
z<t~89;YNoIvqit0PM}pVv)pIE%iR=~^X2qzMf6YNhbI3J<+H^3RKIvGCDJIpDiU=B
z;&ysSHJG@okpbC{2F3#PIkC(V?YBREvOoFS?LYkMWPkn3U)z8G<*)2_Kk4Vfi9wh+
zLqRZ>dL7TBSMtKC?0kD<huHqrOC%*{7#R8PTeE-qcSif$U%`I!!>7zVwBAXfDr#{#
zH1+D)LjrsnG+%*YT9K(n|EK#}7hg)8%N<9F1I86Ptj1tbC0QlQg*1Avk|k6AL`pO%
z{3I&|8O~|*ts+|7ZwuS+a7FLN`OGniWN$h~x@v5##%HA^&iN5FZp$ezcQaskW{khD
z@sQ_d2`0CS5WpPw0*H;60e6u`K9;R8&<?i*&|*0rE0O$wcI&o*A#KCjU_?~q_&)mJ
z;b?E#3D|h2vXM9umo7x}mpZavQpXF1M7*-~RUW<QDjirtQm@kAFN&c$FX%JlO28G2
zV2;<8HH%n`8T3h>3<+j~8^+NX?4{%xV|1h`3`sx@$@~;A)qxmD6`RToGw6f>o#cnP
z4GzUwPU}8YdEikdRE7X3lg_FkfUF!CY%GLYE{Qa{L%O|kdRbSAvT`f}q>KCR1RFw`
zS2~V6?T0Ue{rCm;kG@UzSAW)6G==D)q_$QKAlcI*(}GA!Z01|%(TRDrGEx|Nc7lA|
zq<|a%mY63CqD9y|G0w@Q59V`%{WuQxn;$(J&0Mk|W)OH~ENy)IL^RPrn4DK42}A*j
zf>SCAtaMSC^i+)nysDJ0hd+x7O<_{nK1xh*7A-U*a~fGGlnH)V5l2b_;MykH^_6Xz
z{QGdY>XeD}-MUd|X$!nsp>w0BD#}+%mdIdxh6XlPaS@NcKo*SHZwZ*}*c>D;wgd;f
z=z{Hqw1%>pzZ_^l2DQ?@?@{1#_U5vf3<9ckf>_eWB}O1V{N9o~vmGGcv1>tLMeXc5
ztTKN*U={E3+wdLzkOC+^hVygSJer3kmld(g`wQ|J`V5y+@y(tQh#1EY0buPDMF_5M
ziZs~xU13Vd@-6`bYujJ&Fb9&{Ca-_V_mDWAc`~C<o4QD39NcWk8%I#B+uiGpMPXAJ
zC)U+asKzHO{|)|NR+O&?(+VgIuE87uZsq)yo-EI)GBD+cXW9&UnIV6MMK&NHDKW6(
z9ix)@cdrKrK=;5FPo3)cMnfeZEXK<ZX|Uh_w6ssc3b~X@yw=y}6YXI?1Cw*@FQy&y
z&H*d#Sdzf_V)ei?Z8QZOV@bJqwOIt#PppfcDsBEz|LUYbs3@40%#!%4VnY>hHHXPR
z&P*yY$|`_W0jZ`q69a3U{3;_AeOC(4_tAHlI$ABrW$=fJ0dO5r4!AMRp8|#80dVhQ
z3z3V*=__oc)JHQl$@h(qMrxdcV$pzI8hcUE0NQrSh{BnjkjB3Ln;{B2?6RfxO$1<Q
zm>LcBs-H6|eOK6MT(X4raopiZ?gOr{(C=?Om-FqhuZ9ryP0c&R?17=BY*XD0R632l
zhdVT%-vbltBbZr44>m!Td&vlF(zDTCd5t4fGEXu$O9D31!nbA10np(VRIwLh=aI%&
zrg4$a1Yiktkp3jeO)mYO5s}t6K-5N{)BgZuA45+F-KXa=1tZE}DJCE1Xh3FSjSQw0
zQf4_NNFi>5c}D;fvj<Y7UI3-gU*%?A#Q);?7_v1&4CXVt>cNI#$lbxCZiCoX4j1q=
zpjN&f?+5OsE;AtEVX=_K3L-cIQvj-WEGvQ#2u05!*fXfeN?A%g#g>s@C9Q%8Bo(K`
zZ6bA~_#W8D0uVZXA;pu*sfG;P9SIt$uW_M%U{cyQ!juqu%j0vcY{&~5d<D2NF(23}
z$SiRX02I2df}uq*1QEbgn$k%pRS^kHx=(Z1XbcuslGveGRw-Hj7^8|5GfU|sE?K$h
z$4Z`|K3PC5&QPQdd2bJ5$$#bq$IW}L#FP7XhMW~{Z_D4Kr_Rf$$CSSZ`6K2m)fY6L
zxaaEEp>b2k-L~Uxm3i|LhCi-jTmgIHGegpSdAkHm{g_R>PKc8jR}vxYsqAcvm6gJ~
z=0DuBrH~(DUrSO7+Yfhf`y16OwGplVGl=b){oJ9b7;mE;9U=g4y%QZrNMZF`YZody
zVg+WkiV^mARIRzlGiEg^tbdNi@GDq!Kt+&m)I#7zr#Rk3YafkwWQOozQQQPQnt=9n
zi8&4%$fE#9%m^$96#+FR$6)4pgXlvBq`)DQtO9fzEKQ#*8$pQLPj5}Ldj-P5hkRea
zDhum??uG(HS%6YGtt<~3A{=Ijv~K1$<ao#;Al+&mStjv8FYmLYsq0#8q<|%nKt$)z
z%<f?JY+^Ksa4w_e@eD3)`ovn<1}!2vFY2zmdUeb8MD(p_{NZ+)cq5`cfbRuKG;=u3
zv7nDffKX2{Mr=4!gcL>UR52sR88Bjm2fHfD&i?oepf~%+^u>&62E3BloYqpgl8sFE
zg;T6C*<1##0A6AURp&$Gmbh%&FZ;CEYJuqPd*0No9F5!yS|P4=z>8eB2~2YHS$#Sx
zEOaC8vG)b^F>{bMS4~0Zf<aWhB>1{G{Plwfo?l@*Z<q%+K79llHu!#^Mc^~5Kxcs0
zmM=Bg(yx;kTi~1BGjq)@5czVFY>?vHJ9W1LBo7DiClkU`MN(sI+dPaKa}Rg8!#&$r
z2Q1C1)Q1NK(BKUHIxp@n+}Xe`JrrVG=&RNPQP&^-2y=NoU1@yhB7{O2g+j93+<J)c
zp<mqaglXsmQF<UCEArD41Jt1#X@-={2V}+VMIetfx|@4!AR{fws3(oEj<LjGDh(Aw
z%BOqjypm<X!DUI%427U&J`7PwpIKQJ>?$X0@F9015AaAz*mItER}zczNGEoRLo6n=
zOGmWe0tHB|F{1$8?*Kr!Vs4a7JJ=MBC=Pq21S=1a_nj^%N!|oR;!Ep50Q6)&hjIq!
zy94VwZJ5)s(hsC+5j3MF13m?eC<|k-Vp-5?#p>gjKN%2M3Px5^nv{}&w4xu2Io&AH
z!KgyAG18gkXLn#!l-s>D)*H$F4hAd%&A5X;;1}jY<keVolX0MDR_SW2yUMTk=}H@i
z7JfCoZN<#RlKAaO{Z2faEs1x(_y(}e$c=cI$2<RGWUAP*iAv6u1v&Zl#JON7?P$LP
zPnbp09pC?|`&<^*0f625WFH|`IQ9&PL_6H!UX;uF@m$jSP6tW%BI9xlo$tUskT6y>
z_aPb{3y4*NAkajc$cBN}>&ziU>2*;9r*LIOlr@@}PwC(RXfcc1`4Fb(Nt=8r15B}q
zUl45-FeKel$iS1E#Qgws3=%K&9PTb_g2(_`+(&s~p)eu*jsTq^-lwu8b`mTU2&{^7
zbXxDtLK+MHwJ?FWOMpo)>f4JsaD~;dgHF*h8*pwNd$+L#-!z|p`=PLRycv*2fi10b
zG*}>?YlC+aF%ay53#joz%Gwv+U+32+JCHUhO>LpD0-_3-l_=|gBd0{td&PW>DVZs6
z7BL!W$s%6{u>^imqKP>m32bLCqn?WVKY0W8TrzS$EW%whq2+Nxex3;?arGW2_28v_
z<&*NFWaC-l%P?xJ25NCbmY@bC0&8XOFsu1kZeAiIt{P*h$_OE;MO*>2AZR0|?P~Ko
zS+4*Vz^oVCWRpEWkEIb8>tclPMFuBS_+mWkxh2S<i2kpiDUs?&1|vQ9^~pchz!oj%
zkFy=GFrS8lNEpz7BHXX6TEI8-46jeC!HtmtPz-1!Hi*-ZxBESNHNR;mB6Rnz9F}q~
z$akxLr8fU+4k3n3EW|CNd^&&?0~QhPfF<*|M@Z$e7qPBXT(FzQphai&S2F_Ut+aq~
z*`_~XkRIRXa)(1Y(1JU3vA@mz8Pu3#zEg=i=lPg6<}@fpG5VJYj|dTeBg_V^bCz`G
zs;5(G;J2*Y)8@T7$!5-@k|L5)1fL~VRTNeMW>uc9T5XwFJG$Il^Lkld+@x({l{Kfq
zm%G(@EJi~5!iYeFQdxBMZR$ZphyLXWw1QYx&~gKgsHf6mK_Uc{A~iq@Y)jb>(42!=
z08|z_qCD6PG&dh;h(>M@^Q!-uAYjPC`kxO5C_FQ)@-r|4Spil#WNFZg2x8G&1u1LK
z1sSZA<>fu)^ezSKHs!YxAP`ISTo4y5S@0|h)0oV-p)iHy4Om5rJB>Z?3Zt#JpDb{t
zbrF)!Hu+&;Vz@gILTqz|JOBXBBD0j3ac32b%44*YYQ_wkjk?4E8!LmM`zDcQl$Am0
zy2^g(yc%sBQ-D$_k5BRZlybN|rZLU{n#w745}4&HVs#`pt%cA=4Xm5L8_$7*&lGdw
z4FqMmD<AdW;`8=Y9u#QLGx`F6PQ($=EtFcUz>e9YbfoHXl37RP>%TROSBX~hqH%!a
zyIc0t^cy&P6f@~J48~+KB2JQ-G_LS;YsSnF#NFt1!WR7+yi>pkZ$fc9&Sw$5FTF)_
zI~7uKLvjW(hOle;foj1z+?ZxYB#KY-!Oh&^4tJ2sa6&wfx@~lO!rX}Kg+s_o56o~M
zmc8}v?nntFUTFTpSvcE+S)8U>3W>m;eFMkI^Kj^RvSB@~utwSw)({c&Fm+GBh6GD4
zbN9)G(2_JHoxbESKc$mIpj14+VqEzU`l|}?l;a%&qkuReN4ZCQja;sjw3n|ql_?M_
zZpt$SRC!ZZfmGX|mGY3h7`&n}(z$-`4LvezI2X^5Tvi?VK9;azM7-qg?pYMY0(jYS
z2(>AQspnH11q6tsDDVnqP+L;Nr<hk_Xo>|TfXYk?*#$7k+TfVOQVz2u3uKk@_LMTv
zWvVYtOfCU%rA~5++XXOeF=uW_`Q|fEl!z<s<s)v+;Y{2Ivyo>J8j$ZQ;7W6e8|HAB
z*QfnmJ%IBO8>ZCOzb>CIzd7fd5+~x0ImImzhC*-J+DOA@_LOnS^t;%C_vS+8S!)qm
zP3<CHL<2VCdYA6d$tBR}3P4gi871a{!hVHfP?eb??aE{DvJLQXhZ`l?YE<L?V2-op
zW`!t}%on_wh8REqZi%=lW*acNa=*1-0sJwa05hoyh7Bd|P@@sh0#jZ4A^;jVnt6!-
z5CK5d;EPAu74Q;RW=Tb-K$Ve3Hyc=_CI)jtj0P!bUKWd(MFs^hA%HkwuwigbdM?pF
z#}I&)04D^f6?Ccy574WWX_0@rkGjZupy~izDHe#W#<ht`C-S;RiYmUNTw*J~;@|uN
zjjvJ<iT5$^AE&^8`vI?Dz@D}cV1NshM#au!m!7(@)U-v;Oed=WtQ26AA(XP`ca;LH
zVhW(j7!0Z}6^kk{${Ca88#9_ftz=Z%nbD;yXDIn3R?~k!zUtNvmJBa30WQMbeKd)<
zSppYWr`gpnw`+lB(K%=)>=^NI@AO0ho+C|cTPZco_x%6t{r!@wybm-0($2hlDO<Hw
zd;b@<yMMjEgL<C?3E5E`#{mMF!E-nPW6Xy?)s|WtgB09&>M5TU#=E!yQRz2BT*gyI
z`WS7%xYr@H`+0_io#P1)U@#gcI<%~L8rZDDdBqd}`tJ@YMnOJT&_FaNlzN#UUxeSx
zgZ>%LpxV4S`GN92|N0Qw5K7?6m>_=K=&z&#!C*-)9pAdm6`LAf2ZPz*0s!i-fnHoq
z?S%TDTXU9x*3aZAPX@B$<?flYN2m=N7&M9I;{iIDu*jYBdDD8(v=<K42Th`$x{xM*
zEPY0SWcKpnpjAO??%SZCRD!?P<$?jqVV{zl2l{&$-xaP2EY6A8anE;!VpZJF55=+b
zp`f3zo9y=TC2R>Z(jn|cbxUYGLPw>I?y%t1_k(BPaWt<YF#GDzo|C#n?}F}WGjLp$
zK&sgAXPQn5)@nROv@NLTKrxQ7ahQ~=6wDe&Ps1FPG7@(VpaNiYvqLd^Tu}or8jqC}
zUR%i>%sqE+AE>;uyl_35;x2iBHp|l7(2sM+$+%5iFI7cWhJH4_b&R3q7Wfwy5|_sB
zRWFSL0$C)RX`E!gT!^XqJP_Ajrnq^8y9qxe343>Y=udkFa8;v`{s8P+UgUDKau4)&
zeh*9Y;*xJAIA0+>2G-PL+B87DiEghDbA~e@026;DB%4!5z?+EFbqp>>S1tudu^qf#
z7g&PkS-U>Y&!C(90_`g-D;-w|j{~IPp1wjXx?hsAkrD+an((RVKwDJ~8b;4JT{x7U
z_^28Uw?8EJv?P~V0z^tamdV96y|VkJJFY3DDGs=pd7pt!rXi(Zm4Z~tYsCqqQUELm
z$C7)UN(h`ZxyF^dW5=tSR-L?4QQL}qX=ShPKE=KG2-(UfGWPqG;1Q1toCQJ2!Qc-E
z2P=bVE6FPPE>f9?sA-+oUj(va2e1mxt6a;$_h|r??kmp~jOS|PK;0*GU%d{R_dqjy
zkWtgg1aQ$nG0|&nyPhimIPb?090hy2_e`Q5X>hW!(!>q<e;H%AoEyup<(tpY*2cn<
z&z<`^OwjQo0=3Q&8CL&Lj0Iew-7{+VZ0X41peA3K1zZ4&d9KOkd%NdTh}jKV-6`65
zGz-DOv}-cENA!VLzDj*`=T0ZjGehtHr7wcc<Zumenr5NKiNaIZp-rCQY~X(_P&nZ7
z?&s+9P#poIH$^Js{xz0pOZk5P^#}|18bbWBt1uSd5{+m0nZO&#lCu<yDxP`(JB0o7
zNjnf%|5DvWHGoWr;y_U2tzwP3=t9jgP5U&v4wQoQ;GWE2yjDmBX}a;4m`0W0hBOTq
zH4n7BE|(ja<sct&6RGrscpbVGn0s40g~{!I9jIsvGf`+<4#JQTFku^|CN~qPcA-Lz
zrmAUAMvwT$&={_tdpn@NGb0{SQj@JRFTK!F7ywqzn|n$%;ZqEB(tYQ_8dal8)x2q1
zTH3}`TMK&qzd`H?=JW$|@JdP$H<}E3Bq9*uC(zJbd!^ptgRAebqlNkO3DyhMvP><x
ztA?W(=BRP-)G6sP2lkk`Whe`RiEMoC<$~quaGEqFYwGc&k5RPBpoYZ(j9?DHk`I!B
zDC<~279`9+ssXEv8mBM|25)`XVBI|(oT09LQPF=Ig@^NC#YKb=&TxjKwShlJePt9y
zJ}5Sw%#!<zFz9e?v<#$T*K8}M<?n}JNyC?(b6}CV`rPE1Z{QeJqwn}iQ-ZT7fPqSp
z4(yZ<LeB|z6<F+AQILo-VE9omClwkR9HbcjFR3i#1lJHt$sL#@B|ir$2Tuk_P2g5o
z(MfO+Yp~ql94$auNu#zzwIcd4qIp%jeYg<JNVM7yT)D8_*LcWq#_QFWnd|Yp*66t6
zpokYmS-fGg5Iw8OgLe_HH1yrVToCmAf*_p(GYu<YrV(XkfP<(>U_s<wm<w{`Y?dga
zpBMct0I6y7I4K3+$QwiZ=kb2Ujx`9~kVXVnOp}-0bxnd=c|8xZ-XC$z{=>gaTMJ#s
zieeQmKw}I!7jI$LEq=)5;h?a~z_&j_Jm+9|KGES*Ee+^}^3*jhzmvqt0o4As<JTSp
z1l_d}of;aTx7n42Q5c|QeQYHSc6KIkhBM^Gt`|F2Zq4+|G|Ge=E<oezD6vFNYr4|2
ziQL@D#bVSv-q2eijyO9zEbRI-@sq38kI00ACJuvGsi{!HXd36t9va6|NKN;E404T;
z2)Ej;Ne(F)t3(RK&KFwszZCT?CD-_Z?Pa9w2^xDnHq9&Fzvbnm@7LcHye=lCIYwbl
zI5f!FJx#lUFd(!oo-3;DF#RUIWX2AFO*{2!iat<``rnZND>m+V@TpFG4pD&iL)=LK
z76XHAr(xo|%$%K)x*2z#*I6;`CrvXt2iA0MoX(B6H2-eLqG?6cl<@{wO`w(-U^R^8
z082-oK!@QdlE0suK0eiylxF!xDH-AVx~M2UZLZ-372)~gy~m*|1XE{O-ZzjhDPz$A
zx2T2XuAS#a3mIf`^np|?6aWa{KhC(4ItwXA6bG$x{>0#*AO^m7u6a!glkVdMhnDaj
zEkEhI?zEtwrkCQoB;^U^3~vcIh!ea9_!;Ca7eJ=D0wp$Wtqzcq{GZw$k|hrFiui^^
z5ahdw#G3?$te+Z)s1-;C&7wUp6yViGG;BUkam}k(qq&}sGj%NTnGoluk+UYgadap^
zMwHm)j!exwjfNh_;U}AqGk7J8Uj(YHE!q^4(fa029Z2WO12rG$_Sf|e<>e1>hB!MC
zK;>Rq^>(=%JS2EU8wh;7@ixJfDb7sX+CmIT--R@4Ah@N3kI8d9fYK{AY~)Se+yzrQ
z$V&hZo-E1$_B?d;df`J%i)lL7Sk&~Ql)9!?84v%CK@r7e2@ENWvl_xR2?*d|&)7pG
ztBRV64fTm2EA$2W)99U}Ou}3PD_sW6F6Yw#gN$%-{ECw0!&#MAMDi+}o7Wi-Go6PE
zt_9gU-QbkPqzBId8!1mDAfLop{^nh10=Bf#+>WzyzFaO!0Pi0tCHR1qH&b{qB{efF
z&#wcekaAZ6Sa&T?3=9HO@XS^tb9Er#`$*Jd`IAe)tG`De+s{zF2!D4Jnk}Ki;tMdy
z+r4W_**O~tEuI6FbY1k83S3R-l$!}s1{vs{3ibMHJT(n9U)!MfBdrZun`I>6<{CgK
zUjPufF(GdX{mUB9AbWA+SvvHHv&mQek<tGGG36@)4vOiC=8GDCS6dTo`8PW}i7`94
z+X9ihPKZsv%5zMstZJSia=po3S_Wr01CG_1o#6~;$T_i7ThqQ=-|GlmCZ>E2l>K^6
zKJKl7h0BEgjK+RO8Gtl%ynv}Nbpgy3I6Pjj4aClxmdq#q?x~P?goY}RMaGZhDuuyq
zdE)d7c>Z=y(sT@uS7P>`*<=98sxAUiF9KP18?*wjitq?;$VFfnq4^kH4*J@frqg7F
ze(_fmvA3V$48V$p=g73GaIf9Nr$DVxy#CHyS#;1<reF6O=)V-X@mo=mG8z9(K+~uI
zQ~^@u*UQapa2PDj;9d(UGm=d`Z!aJLysBv{>UQ{{10T>p{DfCh_TAMn4PRqXpd2)l
z`;^N_Za$cj3h_DVyXTYc?&AqqM3am~A#J98lB*E44_|Ha)ei=fxz08<)oEZvvb%EN
z?mF)N4u8nQ*I{0mt6WZG{U__MhRA_+qE~158Uf!pFZpXff^MMmrG{}P?Swurw@4v-
zxU2k{Gb{$MFsm%W)%0dzF$qjtH=5G{fz>vc(j|B!)<Q$ZC6#DEOw?63!9c2tfhC5U
z6od*wIMQ%2(?B=(Q0^<u^}6p8MKt@%JWv4*a%%Kj{F8MT@eHKBDdZpXiO=rmsK>8)
za`1FKB&QYW<;H<0Xw|5F0A8mu0oHkf#5*!$nl)fWYfw*$I#@8%K*_aHCNn{i>yeVN
z)4?evZTEc<H#5AZ6}yLNh>o)c)*#~TPn6TiK(qNCPT0%}a7A)e00{UL-8OVvSC9v@
zC&jx&@omth?F0Z#>6QtFI(O2I**FKloP`wm!7uYb)nmh(5;q#eu;gwF2m7&aQTr;?
zuOpu#@}MPS0Z1~}JmedIH2;?4EG>v%&+x>W+TWiC>bSN#xc0Y}H%hPyk4+P43+!U@
zjGw~^YMo&hqK|fPuVuec5z?)y+I=T0UI@`5B;8hT3|=<<*EPK(M#^~KbMJ$|F4R{%
zEP$1fqF<DAikO%o(jb#vIQg(j5`&ux7GMdAlvL2iw48k4(Yz5giz-S^p%OSA1uN<d
zs8WzjiQ9)EYG#!}p@CdcfCKdC88-}|N3063<^5js=Epkq?DLG6@5;lZz+(?$B6aFL
z10vdeF9-5N^X#?&@n>BpqnnG(+rX;N08XUpQkF`rcVZZko79S%@EPgyXdG3u2f=Zm
z@V3cN0#_6xbkDf0I1JEy4b&RR87RYiKXF`LO%v^T{W&E9zLCdDx4sayS|z(r+DKgF
zI#MlzxtzB}zMcWuFTIhBN!lJB{j|{`7(W&;Fy&<J<-!hlJ&_tk9fc@p?9<*}qN+I-
z6zlIoPhi+d<clkgBG>}PI};dKt8<UQ>54U~gWF#g+GFMEFrJ)%5~D>r!^%v{P)$}T
zti9_%wGT1?LR`-G0=(sF{|sl?oFV~8zfM+RPJ)giKD6Zsm@MGwy<Z^5I?HPCgP?^K
zQZFDUI6@!gm>uhHLGB1(sV6?%feq<a{)TuaKLH;UE)zf$P(f&PUbv|kOdRB5YQOw7
z2`X}jXNf_OgJa1}2Gcz71+rW+lG9V4_dRr%3s=h6MD9s>U45Uu&%*w9M6NmWxxg+h
zgOln3=z^Oz<y4B`0%JNe(-XQmpOLP*>7Vmnah&$4AlCI*B#X1Owl4$6;dY%U={wCE
z9!0xr_cSPjJxAGi7|6)^MDr3|?F|EV951*Uc&Y}O9aL$x^n4M#TISF_4M{;M&WkRh
z{E%Qy;LceS3(3H)%K#+z$_sQkzX2Ke-_*=~4`AYunkK;7#)lp!L}h8D+<(dUCizz+
z<wK(aaaN8svN^urPKXo7e_^O1$)o}Q&5;#!UsO0`b3DTdUPWzy-xQ)kRa{JDPGC<u
z==|>72fXY1xKO%;$JdJ}o(D{>SujNIStoc{wcj74H2Fpl49p->Bu=~#seFDjxuYdD
z;&jCF15%tWawvFkB%w=<4FUP|{e+aoC0`}45b6TD=>wG+qC@y+0H3hXn+t<*-!>S+
z!+OO^g2#%k<Qt8N&jB}dxa8iGTk8zomVp)fCpI|L$P5H>(sUs;ZdBfN^C)P<>@tB-
zBL^w28wVMcz<rR}3{Xt7DkE$khjGf&fvdvofCCGYMhDn*T$E{W6&7uyLWkW)z7F6Q
zI2MTHCGAE0jzOF3gxs-+K?%T+l56=wfv!Tk7d~KU!Ue2j%r$Ongr9$&gdDV;_fRhu
zb%L8r)=m}}90bsz+8ewVcpR;(GoWp{1WUy4=f%PoYC4|b3>*|sK+V3==GPJHa@kb#
zczJmW9dpTw%U!MoDDmlaNuvbcr4Y}(O$d{^N|eha5Sl=SnKwy>5iB&X$Vo#>%v>+n
zscO1ZTAw>c<Z083oGt*Y=pAUw^O?~#T6z=5qp^I>l@&?b_5GKRrHoG8{E%g3=6yar
z+DznJE+k*qhT#%(Y_n<RqNyvpzNH8JIk2kjB9>&>*W-_x3q~*zx*yGYjN8i3tBIdb
z6PfmuYLAG_MC%kwXI=%xJP4M6mWcCQDd_c&<8&-;mY6JGdltDJ2R=H`_Z8R*wH?Dn
zW2C>Ee_|>T<Ji@jV&HZrHg8#<_;uZ!f$?0_kh2@Heh=qrlwrV+jv_Wju)@^x2)G(D
zEi89wT)3X*bF`RrP}xCL7VVnlwY9dth&+^RFXoVZyMHM!<<mYZp5hE*i5<uLYMF-P
z${3Z!l4ZRhhosH^pMl#p_L2@UA`QTGZ>%mBh?zDpD;qMjav<+`0s)Yw#%jWb)!o>Z
zT=V5f3rA#Jd!$s*rvVH3uc~MF)Qa@_6W@1pFcQ#q@ah%J?D*jAmEP8hIkIVzk+60f
zJfIJNUE(I+(Js6Ix0o^ANzvp3b7)=XJ$R4Z!Ewb``yD%j6xEo=|HL+DFXpOd?NroL
z+xK6Tqlsh|R@68a+RMmtql&w!0Gi5x<+Nh7eBtkk4lOMEF1qMmTn1!w4@OJ?G9@Ph
z9^#t#sOpIO=QkNWK5Sb<0e2jq5v3p*p3Tp#u^0(A{Uqk^ffB%)Oz#q=F+#wC*NVWv
z3re&wX(l28{IMG|S#`C<4Cw+?Rjg>|f+KISmjT15D5d9x;u#z$dt{U9+$CPdX+y0C
zZ#mS4z!wBdAz$Tvax*6h$?A2L{OkZm4qW*Ta!B9`ADRpxBBNaQxydz62I>1Me+i+9
zsHZY6s+<Q)IE<D~!6@UP5=}20r@m+$XKpMG<L!Dg9fV#pj^pr;GF^X-AMN?X1qm_W
zY%B&p(kHjUQ(U3;>^uhBPx^SsNiW}gZ@zME1H5XrnNo2bVWJflG7$SyB;#{THon#u
z0YQbhY;6&_ihJ-rm;y{00R*0!sZmbnn!Ps5{ZLDM6JKL4b7ZEK$5p|DEj@!8nAYk~
zI>vV#Z;bvk?FXL$QQm2Pk$bg`ShMxE2(G&s0IXgb1{c2f4&31xHtcK85MhBYehWAz
zjd!Y)+b&$1o<^ZtvqR`4UyqBDk=kl~)kz{;P(22z=}|RQW$yzt({o3Se-pgor}-Ju
z4Z^xr4nZ0cR8Z8$gbRiw$n$cOJCuV4;oh4J7)^Lq*_3|^hN$M`>X(6c9-aPaisX+|
zqH<xi+2WF36RPM+8Ympdch=b?Xfm||>0eXG68Bsrz(laCeSLfN32#C^JhT9YC-L~~
zWB`^^Lj&VOW@=<u`6y{DFqs1)19Uma3|w&rk21b01Dw<pka~_HYAz_Vsh?c)Qe9li
zIFPQjHPVROo!3h5p5@PJHCc+b?H(?LPY1nN8mUpvem<5*{hGcYpPY0q(D3On2kg0T
z?tPU#Y=-a_jcR+zHLWyF@-YRC#tV2mAseQ)E=-|_=jLr22<6*Zw$GmtST1xE@6}ZR
zy>+_JOX3&tV3B;GjMG8sw;0jP?ZX-HIr!4KYH1Pf2{x<4q<6pA9z;FE8O{*Q1mO#T
zp2$rFo8t)PWg*OI@dkL}<APtu*C#w!YFduh9F0ZordKrP|Exy}2e8bp6f$vAi44gK
zPUMaN-OJWYBA8GVV!9)1N6G;XL?JEkW$||Gh37yM9+h21Fb7h@n-|_J_cS%a&^~%d
zirwWf*&zv#wdPmhN8uo{94{sJGwSES@1RVV#*1M6*&Q-7T(Sa2=5Zh5@g-S+63!!K
z&pHmw1$VJ}?Ph*c^yp@O25Qam|1{l{c2uAWHy~`fZcyNA9AxIb8t4ES^qHg}ijVxu
zr1-}K11NtCW($6oNdX-k68)6x-;0l~%SkmK^E9S%oJs?38(5+x0OxTj1+$ix@(hY|
zXzR<>^NqmuUPZh-Uo_jvstoYzb9sLum)wDAs<((?-_ZKOzX2GL=QEb=@K{7(krG;~
zCrobLI-KDQCxE3o8M!!ri^QeVt8g?!B)v@!1D8roO7F38&|#A8WNqpUq`N-;3_llK
z1_71-YA{#evqg-+Odk*g;{;CTKo$`u@r4jj*$=;Ym7UX(1;t3k4Y{R{iR#bsqKY(2
zSLcjKK}ArC<_FB*k1cKxtNrX0e<LY7JAo>ai&wGR*ZwATeRiB)ZvBVgrS7=^i;tLf
zu+StSX_$|lolKQU1G+R;HLzF$SR4lRFetYJq3E#^yPIc1agT*E${at4IPtq^TNDm}
z17ajYo1yNo>NcMdjA4g1NYvmtIMT3gI|coEu40PJ$G|sR&n!=t({#&6Cf!m>Lqdv;
z8NLtrHS-Vf5OIKrM>mTR{yiERu{)IUa{eFI#%FdyI0$iZWQT*&A%AqBh<Ld<(q54)
zP=DTmy5yU@B)$EKx0PnVL4h6exdAi&fKwQLmPUN*J32=UokOSWW*N-~RsPrvTRX!U
z&fpr4WJ7jFwGZ~WHwt;xqDa?)_cVwy4n?EUJ?AF5l!|yI?I^tLk=#kHPNut`1gm7p
z=Ibsf++tHfTxs!6hJ|a2@)ILHH)%jI3C{`Mb>Fx?QYH^Xup|oV74r^#w;sEEf*vO*
z@+PF8Sh!Ll5n@f-qkk4lO4k}S)-u)eatYUSJt4{8?VuX-1Uon%G>Y$mSO9`Z);IX9
z7{~&Qh?;*H*A+R8qQ_?TC*q*4lCT@Wy3kDq$MN61FJhn<XYYX`s!4U@#4^4tan)XO
zus;XON)qNd=(!lAFro1@d3o?<a~pu)$w9$&G$V<1c=X7cKwg??l4aSD@>F99b`BH&
z;srxoB#8?(uCWE<KYYf1E+I-@=pVVUw^wq1jXpB}#_x<t_2sGds6xL#Fi_;>`}z#(
z6(%8M={W!&cKXLR?MaFDTRI8r1`8$4Il@+L;0)N|en5z9^XWUY&Wqs;r@zHBP=%7j
zTFH2t>KJPxECytn&m<<yDbdG28?U?Pxm*Kq3bHF+0->O%*u1aru$E=pDOa?%`tu0Z
zk8!L+(ky^e3(N|Unx<sJpG*%&pTHM&U7mPBx{G+6&d}I<t*?}79o=K^Ytz3jk5v`7
zfSXKkSoJ=oXFCNAb|c80@6!1#NjA8l<jdL<dsR<kJz@!fn5G6-`tAUpdf>pS0z|BT
z6zX0HhD+x0kMv^>Ik(kd+Eo)MMVSC9vGk&wUoQ%RCB0^pac)0?$s`&EUePyAG2;g$
z8(c89FJ-)ypKw6vaE>-{-e0JLnV4doc2Ba2uXeWrM0qLY5k9#n9S^!bVZQuQ9Ydh~
zqq-1qk65Lq?&=z_WXszhm#VL90$2bzqHnLoJXd=d;Ss^?z02;`79`rMJ@}BRT-3ee
z9|Esn;He$~pOtO^to}V=f5DN$-|?K6{vvfc4`!x%hB{YM@BAYy`Le2fLI$({1*0p=
z@rdgV)>y_x)x~$^>HoM1A%NL47*d)w4*=XYQQ^<MG8tc08f27AU@O5Q-~lOk9n7kt
zn~~@>7P8O7Xz2@dlmizIZ(Q3&n+tLka$Fy>BRG}Zg?~R9>>&UUUGmD;c?m>c$+N$Q
zWB;SL8Y_A=sMzp?>VpHe0WjizSQRe-D+iTC3D}D`(KIq`LOn0$dC-9?H77I;E#aU5
zmt8Bv$nySrqeAP-z%~1AgI6Iw_(NgDY7b4oh|uWs6*1ZDeneM=+h_Hb!+=!k)+OM&
zxwbM4#6oVuqTm%e7cgSm0k9I#i~;ET<e4aZDDV`(78$>8hM*24xCTEXxlccU<!~Rl
z??{f}%fcCa?z)I%^Ea1#><-+>>aPVYYw%QN+#@hDlgBn_Y3?l)5b|=ZeP(I6*Sq=s
zqh`}Ds#*N)0M=y~FbQ;NRN;6M@`A<_iap~9iCTvdpyB|$K8Xg<v69Y;Nq`^8B1x-9
ze&S1~NH#GNK68YLn#s%(ZK=4AP7N}Ck?UPAUhXgu$=&)|y7Rcn#)_OY<oY@=380MY
z009)}3H3+FXxHull5f{I1Ejo<QIN{gj5iZQ$awoq{{}S&RN#sVRt;(%IB>dt<TzkD
zr?RLN`BSVrcK|GcarTZ<DFe&n^4POqLggBmnNajLNbaL@pRa5M6IQM}h|}Lwu&xFK
z$tqyurXz5@rn=6}>^vkT6#X-k7jFWFi@I3$azvRUT;qxZ%s@X*?8xUPXuwO(YXF4n
z<3do~nF(3fs5oLE*?2yNcLM?mdFYEtcl_exsaPgHHv$GpP;+JPSI2Ala?A=yrrTAX
z6Gfj>K0fhyz@qNcyeOlO|1GYDWv};=Ljd>$q#bf?<HZ_+BwzB)%7u$@B%kW!!Bv}A
ztIKJjzAkgGd|OL?=<AoEbqo3N?0-1DIDEhs*MoHhfWk`E<d#unN&~ycXa#6#pO!C+
zN<{BBJ`l*m&7ME2kqh}-z^?vMIC<v-_ZN^Z4PIt*cB6j0QO<Fcw>D{8%@v<85V{~e
z{0s=v=QSRWNz8#_PFI(^rD6GlCSNE$W%f)MK#LK59+do(EEj4Cc#iIvuB51^bzoxw
z@<V@ZPm=|T3?LsLF<`Dj$iQ&uHrD6kF00g*=pV|>gx`-`zLw`DkTmnhMfmfI@B_~^
zkf`O{RPD<06t!C1Pr@1x^ABQQwo@2-rw|xcyw_4o-<*^eJ=cGwnmzvnrv-qQ&Y?0{
zYkaRNsX6oXs+}P7`CP+_Q#>8)qH0*(1_X+xzopXwU9UIN_8Gt$U6V?;!N}Zmfk$#u
zd2v&V_#Vzk(*;rE0LBaaRqPUcvmYZL0p{$mPH;^tz{OYq<$_E?Y)>=jgvE1xw5}w-
zk?i2hHMycDCSPc4;P*MMJ8KJ04~cuuQzQLVGk|a9yhn{b!x_$iJ}>W+gph{IOMP=%
zjKpHW9BtjT-y`W%F#v~qn-F?oC73N<2`B+|Gi9ILI|&=`x>l8*TNCal`M@rfy%zoL
zGh|h!06Y!f0*crrqhK-U)g}V=_xZL!2Pb~<lo~)2ut1}J#P}G;I}akzwF%Xb(oO7|
zc@xRvgvxcL^@%cw{O_8{P2d~Ve9*M5j1Z5R2SU*_x8QtQPS)<{Goto70L#W&r>7so
zH|J|Z(e7F;V6?gC_9O7>W`iU<E@3>x^+#T6Q?_|z4p8a2TbfccEAl_4z6lGq_5@qz
ze}WO(Uj*-ktdtZ=06*R`0_6u3nb9DV-6Kr5MOQuLmH=BMXZ>S=`}QStu3c}MSoGKc
z8WbF7IKvq>2jA)Dgt<Lcgl(|UBzFngjfF$T>xA_3g`{`jUS0@Q9OLX0PkizvvFL2j
zkOvqfkiu7QX<eli-GFl#!vpi}$|te%LV`&lgFvVaF*|{s7Sl+sc8%~A&uVfs(5e~u
zWoxqlUTh=mUN0cqdPbr^l_&AKE~Di2w<Kz(3_>GJH(skrt)I$?HH_0W;~)xPaln*L
z^BR@VUGswucOwV=^Li>0yn!(XQ?g&UxmmSSmTnU(1d$5BZmZ#`Qu@Skz$?BCUiG|x
zgbdIk7Kv>pf>N;ZOqp<Xmrl1=0v3?g$N0cs_3J>Z=w%Qu(6S?5k7w60lm}UvTpCzz
z76qbLa&z7~50Fd)9UXaf0$1cAHF~%^juXT8K2o0(BYb*Zgct$D#X3B_Mi#o$Kf@W$
z5aq(?%*a-@-M%4BQMm4VJZ_OC!$lP6sZm_W2gUa~9MnzpG2ngkEmTP17qg9Ey#b}#
zS7ILki!jSo^$Mj#?%?F&oewmyh-WW~3SY$?CqiPw`wx~IX*cfB@=ZlbX%{*|-=DRj
z%|Wa;AOEu^h5(uZ5&y<|;_(Bp00`kg+VxFtxvKe~B_-+kO3utGZu;kfoq|xdFZ2E|
z$^<>h<bCiTWrCs2li;Y@SqggH?gdVO(rCk;xXGYyLh*4^cLK*y!Gk7+@Q)w_1{<^2
z1`cq4uArj=$dOBLLF<Lbhx&^i$FhD4Gz2BBBh++yZlU)(hTYZpN`75$-a|`+6-I|P
zKOD(jx&YWt;7<GYag(QG{oTt$+VzgQzaN67{W7OBNyq5X`)RlaS2<=li1o2bc7`*Y
z_JZkd+(gC!jL)bP5CvaqJ4CYgS11t?xa0d($J%7`slu_$!&=A_%O2$?0mDC$lJX2t
zKAOiyHEeum)RsNy`ygjvjH|8ir6GpOJt{g{BK8h<o_1*YOLJke4W4lW`U5uA@yQlQ
zq2<k1E$1&nqwp2*R{|dNXMt$9A<MF}K2h65K_RFMm*yqVK`bh9`Y7h%Pk$BAl8nH8
zFfOZc0;*(i4J+DMLf6uAPlVUR_9V)Sg(*(x&&}{sCFthCQyXxf%1$h3FfsMiF6=p_
zuNX4&Ga3_E2kdGO4QTait<{Qn0tQAQ+mz%xU8Zw@Mx%mE_2W#WUmD7Zz3$fIbMQB>
zMgV%y>I3nNIkXPun;1+EBRdR-_xm7U%eBO?)4&!WCXDR!Z9V>X@n1E-+LGf9pNHCj
zhkbYAFi0jX0*sFrsEJQTtTUWpjV?*3YrM0T)n%Z{{XnkUj3)P$P}HyU76I-4e7Tok
zCvSJ~$$+nt{5>1xT6asDK(K(x^UIYxe(Epi9%`r)^-$z!5AI}z(_lWCg2xHwJ6I+N
z*16?5#03|>mx}`uRE`tcd@KIm>(4t};C|Kg@-=e+hV@Py-&Bz7Tc2JGVDWISQ2}(V
zQIk((?25^q<X!~_YP9Z)n+}Tby6MQJz>{fTnP!xXQ-<U)QU;mh2i;^krpyHHGS_S8
z%px-ojTzuZ6=rfSE<|91{-UNm8Sr-S%`)=Uq}_mA?4oqV%>*!#4Yg)g+lf0Ffos{d
zNP}TlU_NF!sd2Agmfnxc{9Zw|*ec!@hmxN|Uf+oUi0Rz74k|8M@jduee2?;blfiy8
z!VYcKF0W?IR#x<pM-2e1-5#(|8I4m8Lcno`T7jUEX!)GSJdvSWi;NW^ZV&J(%EfUZ
z;!lM$;1~4=<NzS3*|4fb4Ued{RJ{3F(H`Fz)TPxrsh#hlfH2g(q^1RZzWzRzzsff0
zM`ztd0eWp~@mQhB@lr&A@p|f3`IO*;jKIDYB|~${&+uH-`}E$^QPz5cUC?K-?naBf
zoGG^rEB3VfOwY`B8XP{}G}+;&4o|cIu+Y*Qtp|jGPW}wWGv(h-299(in%Pv3vv)tL
zX&^`?S(ll-ooXt0ORaH!o&&{zC<$hUZj!6V3ZPLuKjzP6>8ZwrtN`G&Z_mp4-!l>6
zhBbTt=aQEI#rA{<8t>gJlef<_Z3=j%`8XvE7x)SxVB3sp>D@Y&3b+W?epo!%P+7+T
zHmrONIwxOkj;ngWOc8*FX)toEZ$Q1@ZRAEo%h5Kc9zLpx#gN}I<h_#k7c2K=jH#=2
z72mGDxKa-6E5i!F3*E-mO@moc!P1|-2lhV)UY!A98pB_~+|5Gj5_7^(tRt~XDv8?_
zY3^^KK-U_593we={d`l{;=HdBcy6^PF_ZVS_k&$xyd%3juVTwysb4XG?J@mlQh-WB
zvJM<F6C1NA9eHiVu?}EWj1i@dZz7ogXn5Uo8h|FFMT`^Od7PS3G2CQ)Mv@zlm|_v<
z4avB+*$y8jamSN(#4b>g3mV_{Fdel;qq{CdL5*E+>Ghc&BVrm(J_H$Qy4{-&PTe*c
z)Z}=)r896z3_uc@wn5`WW|KkK3{|M-#~aus21dyQj%iNQHu8F0mMpzmkP-%i;GNVi
z!ej7?mL7NuWyTKkh(<rRV(ph8Fp~Y6SM2Nm+UMf2>sldcotD^ce3GR9^qZy(cv2;H
zL`>`!i#a0Mk)Larp8Hc4$MyF9sQuf1!(;A6kH=@G$3(BE->N1afNsq_CxG>H9@Ty(
z0Cn-2FFq4soxt6@`udicM38mR6hZqVu0^p8r|8Wv2?Vg`vTs!(s71B_azKs0PwZ<I
zxUj8D6_Td@dlS5Z_z_c90IUmW#H!k=*jWgT@74YWB;zIQEd{3{xL%m_c4KG^42{p*
zmhJ;V?6d<S<`vDhIY{L4iuWfS!0sRa+U@TIuR0{)<5QZC9ZPEzjY<3}@QU^yWEha*
z$g7+nxEXxGJ(wpH-an1PHZGbZ2d^}z1iZ*E8J(7rb!~H(7tm_ck-tmxn1&G+a)!Y9
zrjbGS(-9~9C4A4oQyq@Q^DBTiu!=uu8OgKR;s>qS>(**M!q=CLeyHiRZ_a!B&Pi<R
z;d)VAsRD}_@NqZcWG83Kdh1#*e>1H9Jy?tH1-2IX`$Hfb=PM0uUyZ9JW#5?(@Lqd}
zdp?<i?#t~zv3Z+oRJloD27pbPS0itLm1dx6IFYoEmj1fs`CqTK^g;vA{T{INGP_3=
zKB^a}fF)dv(;h!;ZwO={jqmqU1n{G3Wf<HWz%w$;s5Lbp=fgr#FQDg;*F5U=fJWFk
zd8sN%=<<8pb34dN-yHDoM%QwT9aiI=K)6?*>hMR8Y64KDP;20g-@kn=*bq3$0s1TW
z3W07VFb2O&uM~I2iTtWBz-{f98sOC@gM+v5KH*F1?HSH+hMeUCaIp|S8J!Q{=Ny=+
zl6w9sI|rcrKs;K{1}&%M-yiHui26N$l#0gi!bl8_>O+S(VC4_S`l<fn<U$mYA8iB_
zEaG<{qiDOmBD1Xa?U)M_yj%W;9G<Cac{8tb$Dxy0wgjjAlo*c$OAv^{Sp$i5twb4h
z&or{8M6Mw<4$e>YZ=6>fL}d6!nU3{Z#h`RwOf$<(LZ*AWCKmlcr2=Z|eoJH1V^GES
z^$5ol?HDkE57&9TxPZZU4c8IR$e4y?B~42(DjBMPlzIG|OaxP+POvPs?rS>U(j_}n
zH7RfDBeTbQBcJ8PI$81Zq7Uyxu(HV1ekTXNs`v4H@H+1$JfoNZp)OZ>I4oXBFHcVt
z=hvYh+Jaq&IVJtd_c*?)7T4lxBfJ_wz6%T?*8{HjUA!o$#2v20&Txh^M2kHda8;TH
zx+a!deqh=_Cqf7Cdgs9EV=U*=^7!X~KlF}y9w@OHMz4r9kgM@|w^UNZ&T1hM%=)R!
z!d&2GT}TEtUv&9k;IUNau_&*OH<E*XLnkHRy^C=ECEIu`_C!fCfLH~$mC)-9EqzJM
zZs@xR{d~bwbxk*_c9q4+FirrLn*$p6m4RsT?{<xth^pt5yGrw6S*P#Jc1YHRcgp;M
z07S(D(SZ?5R}?&d1~a?WLNGJqLCk!}SG7plai0ZxX5=FEW$5Nd$>V40#>q4h`uB)e
z!OpP8!e#sUL7cSoe+R~Q;YPZC&_6m79*|--*{!5L==(i-@trDhJ9;XI?H4B0mWw<9
z6B$Z)^?<B12Q1=GfLCa<MD};!O^_Ae4qo+X;DLuMey`>TP`R6ucrxM;%amt0!x<Xx
zbI7v$LCfljv?gC)JgXsCVi(fIO1?rSTqcBbW)|rYGK~3FPCgcKfdMKTH31WH8;(7G
zdO3hi+2JQ)7)H7s>J;GL0$k<6$^AemXgqg(Hj<lyK_tHu*I|Ql9pOd)lG<$mU*H|&
z%N#)ryc=%wWZ;!&;eb(gp?Vkm=bi|~!6i|UY8a=Dn9lzrl^aWmEvOt=#<j(9%FAAp
zCHIxx%gNvGuuU@X<P<M!aV^moU*I@~C7%(oKWNnscoS6Oj)P>f_(Btl<a8>joA&Dg
zQD81mZiZXJbeBI$UxW-}(|T)O+zh<(0AijWa1fIgySa#Xr*RGP!KCax9y$i^i>!M-
z@<`i%$Sp}IvA;Z6Ev5hFUJoIt&t(@2^BZ%kA8cNMd$&7G3p14A46lheFfbZCScQm!
z95J~I2eHwrI(0+U1Na%vaE3U(VsPJW2oxY5P&;T0d2DJ>VcMSI&kWpCam=;|X}O$0
zoxY-saL0ATGgImKY~h*W`UH3^6(8cwCje*i(4Rqack{e64`G3Z5~WbR3Z2sSgJBKv
z{S^Za$%VAh>`%{UIbrqtqjk1vNx<E)IebD3=FvHp&iAPap_*4BUZ%7^Q{x?E_83Uz
zo*HF{AeLyl8vrG@cq3|u<UCkL8b997iE_!1obopBha$zh`1nTs;cA+%0J>@iSW(x}
zlYHp$1goxJ5!)lkk)XZ5w#Pi$*O2V4_iYf@$U=ENs@8#I=7h*S2SN{Xs&>l{kA<k@
zW96lxm&QT#`Kn;ba&46@w69PQ&#vW9K8$1DVO2k39iDb>jqU}57#KBJOFh<GJU4MF
z!nPUVhGW<nPIvxL{9camc!fz$d}tOlhC7EdoZ$@aRglB%seDK&=i7~74ofF)05)}!
z1VC@cm1&Ul*%fz*;1l%M(s`Q3i-x=qZyf@^Myn+?7FVDqgp^XS)kGv8tcqd)r;HP2
zxoR45{8h8)<>(M#7#*CjZAG3d_7>)w&wz$$qxqpg@Fv$uU;njhp=i`Ui)YC>6Fn4?
z`fHn;<5B;vpIzqjqsGZhtS)qoCo!`2k!mg|)3r*(jyWG0#6c`CKi#+c*>l^zJ1698
z9_NJq!N3)UACyYZe7rKmpst)UA2g!-Sixe58=#@A>|Yjg-=VYbVe=X;(%@>lM#cb7
zi4=q*m_%g1w(F4ABI6R0t1=QmH(7TPHB7!%0nl2&rFbsr<QH%(u*b|5O%6Shjc*L=
z2e#v#fT-IeJm&`GDaxN=>D)Sfg$M+MdFW|Ic!o0^6{;}Jb@Paxmd)8&1$g!kk*M?4
zvHx6nBF)6o&HjHPa%bL!ZSo}pEz(^=-U1N-tkp~lfp=C(^NUKvmQ^Q5Jz)zq;eL)5
z5)}>z`3SE98$#(8L8^cnH`3yRZtK5eDgIG4cakFS;l6=eh738BX{Edeg+{JEw_~B_
zOEM#8*IYO{cNIB^c>tUNso|D}dW~?LGF7cC(23$@6nzHWn1f|f09OMoO%U$eS~x}d
z)HO4R*YI=Zh*b`t3a8`rtc1rmbYKu;GQg17TBjm~Z`@b^QwJb}(4R(A{tm6HN;;CN
zc~!2i0i|wr$`1{dOqj9I%Pk56k%m<E4(_Ee_n^ZRfaa++r2Ng*?CwE`CbE%8G^Sq&
zUKuEZhxm=KHEQyO7%X=lko^bXO&|zQfGxZT!%5+OKLNLx(r{BU6?V%F1z|sG7&2H`
zC&KcDM9=|nb2_XsMp+*CxQTLlU>RAk3t9{pkruW&a*6G9sBvc&-no#$wV;>AJc{J}
zDaOq-AKV-nVp4~i0g|pgi&34-qyZ|(K>x~4Pc=O3J0S;g(*TI|qv87}sC6)(jeY4`
zEjhl|+?MGJ&3-$y7IoZZ!WY92h%uRFQ@ZD(WQHk_lXezVUI8^3tM`G4MHi1{?A2Vm
zJIf2u<C?ve0bgxp7JWax=8k-nsXT^1KwMzswD~*Wj`!ZFo}S7;)LxP1|DQgbg*lub
zx98eijUtNr9*7Q}BJG1rg^gtMHa8{wDF;Ii5>(|e2x{u|cT}!ePoR32as{spDsQij
zW2Y6R(j1HfmjG91IKDZdr)u)I$z!i;ft0=I^wdnx&Pze&F5)Eaw_`OAgc7jZHKOTB
znSiU&j}532nyI1`bj_qVXf+>~Lkh_zcoo6SCV15^=iCXp>?-Y}x%_4ethIWy2)rfP
zQTy=@=ih>7Xnb!oKhd3JoL31mz<i5QJ}mEz;S(AKSJ2c-Mdz1bOw&_R4v5vcTaW|i
zb`EQqps!fZ;SL3HcrKyda@Gy~?V3wG7{~h`H(=E=iFxB=Zy<X);sCm!<F$j}Rjp0F
zHlndrp4^NX@C;`-gM++|^<vYhfkJ;PDK=vVzJ^`o(9j?5@-%^xrB74-2M}G=L5Yq*
z^WRw50`LYs%U&eK+zq@Uxykdu-~W&DVWcN-D<8EGchfECz4_F%lg~7ig6F<_<X%np
zZora(QM!qpw=|=k^SHsTHI6I0)&MI9u^e=@Uvc2ff(UJ)q~zK2->Lut8k+9`3oVsV
z3ip10jql5Exsm`^6{J&VA87HbnDBLYG;9X1Gu?UEYJ6Q-qp!vVo&w;Wj|EEb&H;Dd
z7kZu#39?Z<FUuFpd7iW_EjQ$0g$GQ}l_tI&HE<UoiyQ=;0LDh01lAP(`GGkrov^eT
ze!tmZ`L($jpz}vU@Zjs;m37k_4!1TY8*0E9cX473Xf!Ru@xj@`q`LsAK<H-U>S^_N
zYJZ(!J9ApsDq_%-?hVK^wXo%LcP%dgDC;H>^yAwLO3CFuyCd2T_ksDlgvZUb$B5rg
zWcedp@P2nh`CNNt3fp?jA$eG0b^z`7TKul)&?h;=wtk@<$Rbnh@Q5h#kwq>gw^RhP
zIA0=aBB+{GrfFr`Saz%g?HDH!VpI)Hxh52GlR-5VwEKwu(Qa6RXR3|G2WDb;N$U#S
zwjHMdc{>b)?}z2WhS#TU%=}{Do2D&N&yIYi*z=O99O*kA_@bFQW?+M+SB0e4r_wYK
zPzQubfiFLIy(Zz(Sjj3q^tp1klW=n-C|)`ijr8XJgxU`TDt--eI9C^N69nKz5DP(o
z2Rd36>vd`~J2RpUO8C1hK+Tyqz}*5?H$nAx{MJBn1+bVwrcyK4#=W4M>?a%(r7+yK
zP%ryDtRd0S#;r}m8QhTgi^3V&<yCqfM0zP3&XK9Wg}~gg5_i&^LV=9Og@8(5rpXQV
zf&)*QWy|y68Gatx8bkU@6ASGAnCh#<;1;Co-%|-z;yXAOoUkhgR)3up-H+<~b#TYQ
zCl&rnJ}DZ9ji~wG6lwfeLft2aBr<DT4V==C!h!H~gP8UfH9x(Vn+LiF!+|aj8IV=s
zxoYwnu_>G{2e0a2@<$9la0glwE1Ac{cU#5W1}~c-rIm$auT#+dH6~j?a&8sG)PP4~
zNCV>C-H!lj<=ZGNvRZ=iIxdo_NP3-nQnt>Dd9dJ|kiFndzvBQt{Q7-bL%KLne;oOU
zT7C>X?$XY3O}2CXqt%y)pk=##IcF4i<3I`$U0m#Dm#*ibXVxbUf`hl)GqmT*&Oe$j
z)TM5}TbQq==9jRM78ciVsQhdogT{TySj<lY$>;*GVh}ec5Yy(svd^3v3D<@R$X*k@
zt<h(!{1V$fFHaC_^RJGkV{}Y0YynvI%XxuN3Xg+>dljV2T2Rz{#nQ+)3^IXL*HojL
z1A>#bmDqj6Kr78l({Tn|o!^QS{S7TUnB$OvgDDIw@Wa@Mv8dig-mHX=w*~O-D`81{
zPT|~28dnuBn5ckP7(f(Y9I>}!f4YZAdrD}$&9IQw3rxS3hB>>Hok#3#>|OZ;*h8nG
zCRZ3H{GQ@<t^pj-%8f_#=v5HicX}kG1J&&>FrUY(kTTg(NKyk}w60<!vrKk4lKFHv
z1K0GTU4U3@0!Nk#p8zajoW0#D5`oNpKl%v|XE?(d7{_F0{JXqN`x<EykS%DV1juF>
zi{`y>Z63^(VR{URRurh;3kuxYzRP>3Mi%Z|Y5dHlNn{~Gf>uTR+<l;M1&BcE09L)=
zUIeDlEO^rIhuug;<L4D}WxxxTsEQV|Ujym;gRowK@ChJ`&3JhrERi|*!veH2?Wb|}
zA}GTEO*6+0H=qitLG^Ex8Qj9{oD8C1)a`PS*~Np1X?IO&gcH~W9c=RFpbV}BW*s?8
z@QSR}u~MY>gjm$<Fd%Th-D1)~YBt%Wb>+YHwoCT*$?z?fO~qtT8szX=C-A<h4DS&X
zGK?2JUoHXVgaH_kbo`jl4gPzJQxAjCI3siS0k$+fZE>^F8M4~ngnA!@d^?3$@Bb?$
z$S+&jNWRP))H0|i5D1*{p1D9T5WKyfl7pyR4{{(6KpF%tM7__zAU{d>TviS$(4aCq
zh4$|wFc6%%eIY6YulWq8!P^<muy}onDvu1f3<D4r8hwa=HZG+gN3;VsGk~wp7bGN)
zo^X@NZ!v!}r=~l{!Uk5}Y|c%0H6hI3csioSrGZv`;xMr%cYPh$3S1Yhz?JXc4_s}F
z7q?SEOPjyD<0Mz3%OG|%CoPGU%etuUXDM={s3ON3;pxCM;dCOi381LgLAa+t%lmdb
z+~Nj}*ECAZZsv!Bf>&;8Sb7!IU5i&_%%1zMW29t92)zyHnk<NAVRq#GhM_owWL|11
zHQO{_>%sVr=Pfo?ycN96uV{T`u4A@MmUkq%LeEG~i-J(yj04@25Kg=Rq@dsi1Gr$C
zK9xIh8e_SlCWh-w`;o;U+@AwOnIByEit5t+dPt;}v-@(yrkp)%kLGM$8r3)le8H0H
z+M0R%t(sNqm`X!lyab=qWM?_<(8u)9rt3YY^}*%50kngr%YUbwTV9q?7(K&DUUI(s
zK>b5Vf$J8bCq`e*sE-iKxUksY(*{>J?7UUPSKcS-Vzzik9=C>)tF)jWCkUm#J8hp2
zrh}}K>kC#F={f+UNbU=?uf>N5-eZ1toVo=FR3^)Onob(e)h90Xlk)bGf}(ot*Q6J<
z!=%5Vk`?hL=&Lr~@eLy(G8|LON@$`N3$k`m0EnZgsh|!MqV(&;KvAtJ8Rv2z#lS1k
zl9&K6n0G;;-D}p~A~<VcQc8^+)3OnIIgwrr<%E>;#+vZw?RehdGVb2;ZfS4f9r>?*
z-xYYN6g2ANfPrp-#V7W!%^|tGrF3dt)z7n%o(+wyhkS^onWK+*x4jEFT#zPSw3IZR
z=K(#Ya7Y)6pOOWdnZykIOL_-t6Jhx@4pav<ankE>G>8;ct-ciHq6Wb_+(%8{V+Fn~
z21ssdj8x?3d}eHFD@LtQ>whsMau`jURR2n#*5lj*TAIp+)-keZpV1>69)b)U?Al8v
zl{1VJ$W09)ZI6Ut31X7&RSBP4mWOU~-<vSKLn8P!q9;2h{PHRZKht*aPjtTvpXC*~
zJhcep+XB4JXKb;6nnfYO(6xP~urRS_iR!1YGc*pwu>ko!q%i+u1-!akFpMLA5r~yO
zXN>_Vn7Y3<yviF1t*63YVVMfof({cR6f$dy?TlXZqJG)cV9*!4k#uHbj+T7B^iU3K
zfZjH~1J-x+6T<^2#$YF^*ZNF`^meZ@y}0S50r}K90q9S}HOLpx@CYuO4SHyg-I>+`
zAJSa>tmV*!ALNY!s=!w3`~mT4F8*%hQUk_?t8H!MxRRGFM21;Cjvt3_5CikcIRsu1
zHlK%W)1DCL`=km!b|;M!>T6QLD^V~@%%d0;w3<3386~qZ&j{N^^q$U{B?^N1z4T_Z
zyzO54ewq%m(C0#t1zH}c>+vuHu|PBjbv6d5;|8qEWrNP^&;-V$NY(#V+<f(>A|#Lv
z@Z2Guq)|Ycm+=YM{w;M%YF?;Gj7by|di5HWJ?mx91!EQqoiPuv|9SCe*pNE`D{7jQ
zKzE-y14X8?sq$dq&<qdFK-7VnZ*rf_$8DFpGDhJmzTI|o<@n%Nmv}W8rfsm)Z;yuf
zxPrkr{!I<6Gn~Q11c0SVBwhEah@-e%rGZrg8f?AH&;_1iKrXLD+=~l%wZKdkWjmkK
z3t_HO)j#I-gGzlvBJT2H2e7pRsMRD~<69)P{kErk*W=#uuwmY8WXbpMht}klnkyEP
z<+FK9QnFl_^S71ed?F4=iF-60&0`?t8n4_{GV@h&yr$D%&3iPHK2eY>zrS#p|K{6^
zUTg1Ef>-ff<ax(VCsOA-f*I~KIB{%q6O@3<BJc|I7^25BA?reB$I7gmLbBB?Lb`Sz
z9fxtUBVV09!JZjL-i?``D<N~co~C{1d9Pe)fNE!Tp)p~%qHWm+c{Iq&^<1Xab@YIz
z-w7`Zk*HO1w7n>KeEV5N`@>^+%%kRm!vk3)%H!QBDe%QyTMIm7?DhW8`3x+Ai%nmh
zpV0emfOc-DdiDLG8!11-X)?%rGYVVyONEarloHNR#8x3`v{$FI)a=sCT3||81G)Oh
zejGo8KYeI<znIXSFUUeav9KgZ`*a)aSjU#v%|ie@2V0o>Cvw7oCxl|%bj`Sb00a7R
z#uG{neoPC58?yGHGk-2z`@=T6k1SUXdjqU<r)Cw*q%59A8WGig;<OpDx|sRV%xz_W
zR;g`85!aX+#qv}WL$Ui8MC%mS-177G91PE|*#|;)z5*;JbWN8qpdsQO7`%#LQ-Avl
z>kiCKO5WFIWKX+7w?UZHZoryhHDBuL*<cVu>8HUw+8B7H=M0Ra0$cENvzFFi$NpSZ
zl66*}$ARA0Io;ArJ)@c9V4mcV{D?Ue7ifgY%FYlFc){=x7-J`P%*M0&{niiua%|P~
z;phRn$&y-!h0I07ceB<I3%=2D!Mmgqh}-+1;hcr_Vsv5eRF7ItTX%w39?k$%M<5C_
zuiiQjff$`ag|~@AT)obWH-MMSkGKGvQWU9y-#(tNA-oQvtcb^Y7)Wq%j{%Hpz-8aS
z#m7}NihtS@A7;OdCW@%9UUDI@0Jc&u7f69^nDt36$}e8WMJ9s%Vi4akyX&|+UbGHp
zGcWMd!zWk7#V}A<)dC<37|;MK1(nQ8APuN8fJwQnMhCO>{Gi+QoR~=>MLSCl{}a&x
zBInq0aLm$?bUH>Ui%24YcmU;=v;_dahAa~XOfCS7%f)MI#6s^Y?Bv8?c@b+1=?rx|
z1gB+W)y$Tx_p9t(zyO968F_M3Lfh5<QYJ8^xZ3X)US;5Gz#i>@?a2sRD}pr5t50;2
z2-+;`O>fw#JyBl)h5}X9?AS5Jw+Q*k-9e3S2w22pv2aWw!c%;)`Ctzx*v{Zx1k;VP
zFFkU;4@@*LomQT%VY~9;)d^rl`1uTHh_Xz-egj<{zT~GvP+WmV^i*2*n-T^99QypM
zznrBFK$7K&0Xo<9^N~IwzJTZVjk=NSb?ngtV6m%Q`AERX_(R))izYPuWu9gbfvc77
zhfZQ>zA+$OI^Q1e0apx4hF={33?fn&#0{7d2dxH~Oaq6(Ik3z_AZ47c7SqU*+0)=K
zP6LCeb_T~`kQore3{=5*tc(y<^Y;45%<Y5B+71*}$+tHPi=ZFwJ;<+SPD>pO`vTuI
zeL%ps?J}tVSMc3vaMjYvB15r}T(Dq51F5v%Ql2XXsgMC!u(S7Zrj?axSVbr-K0lwZ
z9^q-}B6tmC!}%o0)mU=&#%RbcFiXpp<x8WR_B5u2*FA$X|7CqS#2=R3iy`cKo-^?D
z7iRT_r~rJ@!JD{$h-(*9KReO4#}fZ6`Q_Ozr4oPg^PD{~NE>&Z6kY2Cj2A0R<S<Z_
z=N1U^19{)J7yz<80=tJFCy9S~u|79<<C`!QJ1sbp9e*7M7Ij-lcqTpFICouKB>9FB
zL)y$m@<4W|1IC8IUa%-Og7-byfE@*f-mm9Uuy<(RfjB>--zzxcOk0YvC^FAv6bGy*
zyzR@N<m_rTD5R6NQ;$VE{TsmL=7d7my0Xk^hA(=Kfjr*L14%PS+>HOhA%tJIhRQ|2
z8Zu35qML4g0eFSC#Y3QB9>)c!319u@qXJi{PWw9_rU5YCEEE6==XB^dTqQNP^3F|z
zu;xfD3SJ>x&s9ZsXfb>Oq(*CX*9OO!ZsVs)x>2`2V2^*=3<pp7&hQ}(HT+Hx4}tji
z`0u|tRq>~r+8NGpE-xh0W*=B+*0^k83+>4l-S}cp0UW5`>c>pB3hb07Qb_k@09KqH
zQ{yXI6@{zEq{+4&F<6j9M@^P~L5**lHWGEy6~34o$rZj5UtBjy@fwWv{D^g*qsVS-
zHttfBkZx|JS@l4#SXGXKJ_oyGFA=-EA&7b9E;Xx2=e^27B+AX@4M!Pd*1WQG!!>>?
zf0?wmMzZk!VP3naaps=ZO%Ct4udEQ}INJW!g3j*}_Nr|kFZE5J_d5=Sa0M_Q&wDU|
z9k#8Jg$^!67PR;tZIb1wuD)&Zh}jenaP@TPv89S?QJ8@{(0Lo+rh_vumxfev`hX@-
zD3x=XN4s|LF$b5d$Z+V7#{-xsR7+X`e`Md=%9!r1AE`Cv^Xo~?lVwtIud8~#<h285
z-VV~@bLT=Hj}*)?Yr2-+E7Dco%XjT?S6@_hC7fm1Cje`9dn~}K@DyNu9s<7AuK|zR
zUphV$2-y$9K_0es1iTl!!j}NTJGxno)p4Uoh}8g2pA%a#eQ_<0SAHP}nPnJ&1FH}k
zJ~GQhaM$!L0qgPUGI>4z^5CQczud@@)^faUr`Y1>`4wT_pBb2JNtUd+G`WlVlWaWF
zIK7tMwmrbBAoz4XLu5>P6@D$+Sd#ZiDCb^ut=J&zK`m86lcAX>+A~OlYQmJ=P`pDV
zgD;{(pKC!7hgTpCq^zcS&z5Mzn&vDX(n0(*JK>jB%CR~jIxE?66@IFB2A%dQIr)jn
zOg)|*j_rMuTDfh24ztsk1$UhT_Fqur8(t_RQ<DKgXF^8d$yt$*0av4GJZ1bV%5Npk
zi#2i_DC(h5sNM%hP3tPTVyav+*tNxKh)*Ex_}+Sx+3vQykR|-_mjeP2LaeQqh6imF
zMY)r&EgH0e=6*w9zTN(r39QNaR*<p>#k^v8!Sq{5NVnrl1{$LGTQ+*c<$Y7KHv1Q}
z78pPA+J<=1y$u_6nx9(N-qcn2{(-f*%b&4)JOldY;=C6i7_&l)h;ZL`{`PQ&vqW*f
zP@jRumC%oUa!tArI`}1v%D64xqH^zuh7DxL8-DeW)c<xr>nnkC6*EBY?AjKrttD^}
z10DEHl>?RaIPCj8OfR`6MK{FSp9Wo8dodnpfN_ZVMAMi8s5P)kV;q1IF|)$SYoJii
z4F)vnbt0OE8aGU7mB`(CNU}oAt{|ra7n{RL?qTGd@3%P!HzzP^qff+>tbn`A89d4o
z3pu+QJYEO@p8{3|uN3^7npPEDV=JZqwo6jZE76tzw1qaFukLjf19Q!z#Uc|MT5t!%
zuloCYqO#z}57OpgKkYVup&dLJRkW`njln7$lYc5eUTfprvDM;Ls{y`|ho1sYY;%ur
zhBJt8NC_3+)aZZ<kZW4G-Jv<x$-D>SlamY}dXCn=XX6n0+F}iJkL*Irzam<~WwiKw
zfq?$Egr7Fz#h{qxA?*xQEeEX<dn@wS4mDBq0S|9pg;uhy*L%sjK<vkh>fm&W(R-L_
zTR9Jva%5%1>dZB##EIJ_2d`up%?!}^vGjhh>n+Z}E0#q5lDkH;w9%w?Q2_N@q9ea=
z=G@&JjBf|N3^YIXbSzCkDfb$~;LV-S$Rq=sZ#c9(%LxS8;T+;J3~=x&-L|BVmZ_#E
zH#r0cCYgp#Cv-3A7|{CW?12{IJ6C`kv`y0c4L`^=*c~??Du9YlTQ8e9gu`R@BB(F*
z`(@3H!^^kXFZfX|Y_?5^&Or7KEU&jd;%MMiw?1S&pt4X)9n0VX-WkqthR-NTt1OY!
zoQ|z)pU!)*gYri;L^Hy=4Bq}yaAy{XV3Zv<9?{Yr39n$_C2d&>mUz?HtAQ1X*Zh~w
zLfIdvS{_)?3>*r<>=lJ7?x%MkN+l1}sM^3)-Bo-W*+vGG3gR81airhR1#x<#my(Bt
z!a>GSk2PLIe>I*mjDvAw={Ag(t$|u@XRbk5`1`4He&Iztlz0uivcO;J1PG;&_C`Bo
zwhqIM<)Y*=N0Z#o(H6ukBCtX}C3I(a$k3m4cp=0S;T+DbhIFSfh9N=gB{d$C7FHTC
zTucZ`$m%Xu8N<-a&`G|<Jc0&4<H18Tp+~E0V4u71MoZJaw<2D1Mts4k?-#|2aPRj5
z5=({($$>BP#+3Qswbcb?H6cF7H*1@Gf4%Nb&0`bSW8)HcZbJ{S+I@y2b7OsfI0Mkr
z(p)2+115PUU60b-Pm3<h4@9%qOWT>y>pNBDzNg$$<+;LPS9yPA&*a`5gQgY9MqBE!
zls<Ow$<pO@4J_PnE+tqKx*#!Ahsx0@>7sDF*hI%Z1HW)`!($B`<iRGsuD#GEe&rO`
zAp}7|hw-7I4l19+%mZB)e$44b=^R!fbnk<%t)<7;9rs)a9So=>#^jiLISk<4rW7jP
zNB4qV_27c+A;GIi4#~F!Fs{=6@Z>2GV$7_KSjJ8TdMpu_+5G#|z#R-iwgl7o9=L9)
zD!&_81p}p$r?p)SE0_-Qxw&I3UpBI1C`q{!9i+Lmv1Q;#w6w%bLSrBGF}K@XT_+g&
z!wosDA_#Wa0R9T^gB<u98F@BbAdQ*_u$~T`Y<9+Aco_V|oq>q(j{#fk=+6!xPVlPJ
zlPpQyylo3PfEW^8t2(GVn7jg1=0hF*L0e<F9^FAd0|XMjhO@Pp+&L~Jo;-eN%anZP
zH9SQC>)<cDH@{5jaqasF`F5`OM+X(^d{$(wezxl?gP>UhM0v+EW#sKH7}>tiABux(
zP>G^fAa8)zNEt+?juE-%!oqY=kE55tuJ^<3uP%2G#c}Mg@Vjec{D#~a{B5sWfi3XL
z(~!~22^rEg>lE=QUBg7N$ryz@H;I=aA=k7juSrIRj->B{`FDy&reKE8`Cu-&T^_1q
zFJP+*{Ct}!Ic}75KS+hG8+_9~G~&tF*M6E<QXbotA-FbCz+Uec-m^Vt!w%(g)YbSh
zpu<BZfDcc5&ybcZlEl7n2Y~$y`}DC<MgtK&j*>f)-7#2Zm0VSLW6=zC%N|hk$79zq
zK%|m*=y{gEnF9-<BC;VUeCx1ERNg8Ov)OUf%K4fAi7)=gNiNAqa)*H5M8Uj2L~sXi
zkAR+~yNxdV>^R_Lc7GbDr$u?MO!G=q{kBMJoLU87W%+pE2S8-R&Vwsv&3)m}C3$q3
zmsM81`h2l9VGruIVw;PArVqkT&5SuPn)nM}x^GGfM$O<IVk?E469Nv+0`Nx*^^NMy
zaNE9%l{kd&)~S<VfMe*dK5bBjRY0SpuB=%h%v!76G6NC0P+R3V0X_-eByjI<^o4Ua
zb~KT%<rZtVNLEHCyXeae)qtF<`b*4x`ezvDg884svo^q*C<Bm+dgce~%|RmN2VQrA
zVwVfs!=bhPwd>sebbp)RMn6+|XrVye^ovgLMFwU=fZVK8V}S`K;ovghy5AKb+|~6c
zg2@pFvdNG1g)3M5EEfUqi8Fberb0F!J(jUwMsiheN1kt~0YMX-DZ`leh{7RpFb%6)
zS}RfrRpFAQK&r>(J4iGgTvE^dezEZY*&)iR0c!j*>k*(%?<fs3+HC<Wc96ECw)#}b
z9ZkWoZDPj&eld77$tTz)?-HK@yu#`^I0e9bj%Wa=e5``r=HGDbMksC-AuRZ!1*UQB
z@{lY&4Zy{04)1svP+f<XVbYMiSo&a2+TR9|bs$2%T*IN81aS0d%M<8kbEmfVL<~es
zf{-n9ZI}qOI#T66ap4OGP*R2QdROgfK!*USe@$?Gx%QP`kI6(F@3Q|uwO#0Wu3%E8
ze2^SQ1F)GYS~8*uus~x!a+M@4f0^GctqL~P%aA1qM+B3bl2SmfyAgPTcbo?S_tt$5
zTMS^CQyMr3tjE3#0Id`AwuSjWt!wH@mj4@M7)z}M=GS4`*Elk)1!&+Vrh#$p=R7$=
z*I+uns=$f>BIK`VquIFPbyvKde?e%_uIOv|7;Cc4beu4EjnvKaiIfP*NZ@@4c2R;b
zo~TT&NAT2VeTHYK*MYY@7zXMZzyyz`1WOVW{9Onc*_edV3-)9#CmN?`L}Y-zJSQtd
zzuum;;sx;$4HA3GloxG}Twn-d^O1fKi^v^{!Hb3%ej=m23(X8Ns87zKCqMKHPY39V
z1w$y9-)B>P1`KF$T!nbsUu^>24-82}4U9Bc!6>7t6KA<8O$3Dl7@v`t&h@^F0}sbz
z?_dMg**?fJvAsW!%4!hb>@Q$(4Y2hs?ZnWo0$_~w&CE-f3J;$LDaKiHAZZ$nDkhf5
z)Axk;0b{JZC>nsT-?2tVdoSQ&jmMfInH{lX1g3#Be`_|uLwT3QfpjmhfRT=W(nP5=
z(UA${(*?cgr~`WLJAw$kf8L?ap5Y985AURJpbTli0Y^K(3LAb4mmiq{XlM8#autx|
zH74T5ZOxT0&`@H5=y@Q2mxAhPFCMk#`i03n4$XRkr>F@Ba*3$qJEAx8rb_3xiZ@ZR
zcYi0dD)gK!*3z^=tJrb(cg)Dn6CF7NO>~8u$|<Q5FMY$}GEt?^11#B8?r+!e;PEbJ
zY8$|&R$>H^y>7JI3m1?dqw;L<eIPktb>+w!P_F6&vzM!+zqX>7UeV+r3kUG+z{;wv
ze+y`yd?_y!X<3%X_k&nK#E5FZ-JB&W?O`FHg+^V)=$@T_GlUhtkM9vXkPCl+#GP2C
zQ39TZNFCM$&JoJ8%z>aG?DIO=X~FjlXE+0b^nr?Iy)iyTk7^uNbjrf_m%R}dX3ffk
zPqKp3#Ps+SN6mi1_Dap~prG{2!q4o*gXQ$rJA7XQNP!d={+V>IwvY}U3%nw?RmeT<
zso|^pANs}!g1DD6kh?ACE5KHH?Z8G~P{t?5bLaptqGv$wq)5?s<wLNN!n%N}9uZlZ
zF4muhIoME`F+Ma8Y-??q;El4TkeNVP;XZ<;##gLQW6{m&|A%p~ZcNC|58x+Ly*;QJ
zv=5A459ERO7Lp4!4_S#}KOpSS=A`TchXfO1GSCYCybfIDKo#691^GLp-;eWC)5uuv
ztn_y;LYT!E&u??`<Yl;NZe-QdfJVC(N5phv`#Y6o_+TFaK>DQP3_;5za&>;G(tMP8
zx&?UYQ6|-p-FpO}J`IVywcL}H=?rH$19{y_kIQaWSZ$Vk;`rj;?)N>Z6FInDP2(vU
zt_^9afV;^&&H1of1&F)=VgUn4r?h6Bgn@Q%=5xm{4&Y=$2%2CbMP+G-++i~3AMv<E
z?fht|odF-9eMOK78TgpUZYmYG*XD9T3UA9Z?3}1)lGMw*Pt@zXK++PzhQ_c7Vnqcj
zixXym7}r`<*&y&WN8Ov<0*wT{mA+;E2QLzG<}i~7rq^hA6eIcOBeRvRj0B>uMdZ^D
z2crBP;j~tu^#P?9LI=14kcx(Zt2axw-Rd*!hWBBA1&f?lJ?-NQ`LXErwYD-*2Da~x
z`^Axtr#FmDkag9+SyLu{@*RTVx7f)HE7vqd!)-b{zU|HdJkU}p^5e=%68$(~7{)!G
z{|sk1gISK0i=qt50xu1y$@ZroY|0nstA5eR9l|oR-=AU4B*>Rx&Rx!7II!T~^yknh
zAe&#t5Fq>yYG#qLl?E292m%j_7e95gG${zS#5a%##=^y~G92Wg^t8xNy?a|LgEi-O
z&D5~CUGxRCk7*=$=Znc&wXWL=96^iIf|J{_@_c;y?09m>725?nl6}r-hyAy=GH6_#
z@*XBuIqHVTJXa!O@$uGiQuEGtEGV+kO6dSr1$2TEwP)fG5WW`X_iaC0gFe4s9)45M
z<R8-rf^J-*+st}F#1&aSZ_}h+22KB019qqb*bj6?oG3>XNPbzH<Plo;^Jvyib2!5p
z&T#y`MNB{I%M9#2QNKh5>i&z8?6Ctk0~3GTyH4bgaq~fztH_K{i8O=<V#h@s_7pM{
zG~o9(dJnGhg5S#hr)AY3(Z&6-rLB0MWM+y7><M{dUYWpRns9&5h>Yc4El_%ele;!-
zY2JnTz-;CDQdzC8txEIu*Dn%rfoS`E$S*rbPqIGfSe-GKNCZRrl#L4jauCb*L*1%z
zpGB=gGkuHWRD24_Om^CXD4<(H*3K^jkmj_6pDO}hL7ctaVl5yO)3;3ijqB+_?d#ww
z`teR*0C4bS)!BZcKKJ<=;~8VfM-~y4YrWc`FxiGL9siNw?LO%k^iddVKP@!+AuSq9
zVC*w^qe7oB0c89${Mz^a9pMaTfR3M0cZw7vlN?5-+i#lX1`K?n-HYQu)TM=r40W&5
z7)o=>Tzp4mnn`?tGdJkAg$9<Bzy^O-00${h0Vp3tWM4^yUd&xh1rbay_@>?h&Na;e
zk4?;g7k$8SyQd+eO*AkGiex)8G(2!+f^&Q|R?O{CtQr8SyTYY!8-*!0#ojW8`e!ko
zyMqI@fZ5e7Bjq6a+6!p)=c4y!d{35u88$I#;QD|nxh!XL;DTpo7zx>gM;Oz&YByo^
z#s^W>iQ@3)I~QD&t>TdY#s|$|yb4tEZr?bv;3mXLHxztt$#RakNgc!pHJ$#gLrYIp
zvUhRqb(Hy`re~;JmO_4~7hKP~TbSbv;=#evFfnYHt5#B!TxnABUNEMuJ7D0-{SwRe
z)W3e^0F!3oW5@D7wR|9KI_Y)$0_;mRPWyt0>FP7pgRZu7`(6a@sDd`WNWCQSG&8%7
z+1wC5^H~`@LLr2oVAcY1jlbo@0AKD+jKPzY6R{&-BtlR%a?W4Lmi#WBOxrFA74-X-
ztDo8XR{)S|W}XZ|9@67#{)Er@;y5S4G;kow6;LGgFdr6f7p{%Rho>HIJvYQ60LzLa
z6a=lb++Dv+d|8Oplv8@{Yc9`<aZ@*8Fn^oNS}X)nh7$B3o=r#>*L>E`%-kaYLRukT
z&Ru%Y^E=#*Y^2p-C^}ZipDaH!i$1|^nwc<AGQwtX*4TicAhHJ#h>HQe{=v8eO$*dk
z)~ju%1R4pC$9Vk-^@skTeiCa!Qrtnqvu{M{K0^e-s0QMYXcG$*a(TFG6~81I%G}TO
za6Pfyrvs?b!(xnsuF#`298nK~Nn<mTcBC6vn~(#v&>!2yEkOzbcG-BHrl8R-2D&z=
z1EIQ~fd{|<$mGC*PPpG%askok?|4v!!k`^m5nSl;KxLt#E&E|WEEgZkY$4c=!-O>l
zN;v(wcx)PrWL6b&)>UpaS;9JM|IlONEw2@1d_S~Q^NFS228+d3?gw5ukSHjN1$R$I
z#;U1x@HpI4?74rN`!H(kI>`Xs*$ljYEhazAo4;U+tyE>`^(^{zZKbju+)i@UoPSq9
zWeuE7O@(g^jAOCQQS$o##bt?T?ne#;93w!mp&4-J0f%?gfbhj4+bOxU0KYcNKam4{
zJa_F&poxcC8pJj{&B37Y@D4^Ji|mlI;+o7w7GoCexOB5s&aVl_yQH{-QWA*waZOs9
z;+?{?uN9bOiN^3w#O6=504xjlE**6@DKJ1SAQgI@jPyXZsi|8Dh$rVn_qEz!w;5C-
z2+06Y<@K~M_rzi$io07<dz|RInF*mg|1-gya-Rzvgvtd!VkWU>Mjj}{0PiX4+9YJl
ztf%4v1Mhimf($6)S+3Y%@0CZs+PX}L-LR_lbb4OK%`|$RXxuV+p0-0DoWp)cXjDPA
zzaySS(MjBaOj|Ndnpep+P&ASK6+)&R15dsr+iihQUJH4-F*Wk28V>Jd!oHsA8Sb$s
zyrzjDv3#NiTx_=;4wZQDp`OdZEWX=j`S<vl(C?U{U1IT?Gf=l6bVkM6k6G6=0n<MV
zW}V?|tx*AicFyCdibgh<BqsI>asaupwG=+&bb{?3BLZ9vWrv0w;NaEw2M4fHBuu_v
zY4jD4BBhu>%wrB~WZgw#dzj%L86@y*232txCpA8yrITgPg?zfgO0F}B=D>;+X<8aC
zkO#n;ix!N7;7jk^9=m17r1?Q8Yz(-z#%#hn#g$$xFsqsBE2*Ha`EUjT^*25wYV`$U
znI5d^qdwNiiD=oJ4~UkeZ}nmmaRw`Bln@b-Ai3;$$x2#TuoCX=mMui20HwSQfrH1F
zKvuP9MZzGOCo-)q-ro=JltIq5HUU$Z0jrdmEFzr0wGUNcN78pdwg_e%ZRm7n7gq96
zq>X-bm^~BfW#0zIzTJsO)Vt~hX?n~GI)Oh77{);+6A0|dut(jn!aN3H{~JIglEFjW
zM*?Jh4}LrVUV&rrMFDVgtEj;q1B?e@91a-HaE6ns-FdLuR5q$>l-RN~r^!Xf3hKeS
zv{Wb!Iq;I%J0d>-b#tYXh+O#`{WAs3O#!T!e<^h4uBd}w!tOwPKnvQ+%0;UR>iL%f
z*0Wi4vx<$Ll!Ig-Oj`ioA`J&pYLnt_nqi{XmLIygsb8_8c<=r{r9npVoPdJIi??G1
zu@tg~rlI~8CWUN#vqn8B;}AfNxI&65_|x{6$7TUUkgM%rjB60TbD1UrVi~+)U5<`A
z??-L$D(eICm9_dam!_e}c$x6B8Ar#!i_m6$j{}kBV>ktt?l=z?^Z>Z{aZ#u69tcC0
zP!*q>bb^(2yXLpr54=irT8FiR*Ed>B%Y^xTE*bXu^%Uy!ecMbU1Kbgm^IKpHcdvJG
zo`SFQ;D_?422P$KVSper(?l>iLcRQh(6~)F!x>JDDm7#=f(<@26oL;1>OKa9F@85K
zEa&TsW_(r45x_ADwiclo#So8%e<t#Yr(=9|rzeU>0S;if38c7}G5eJEA$X@Jk~+aP
z!qa0@8)G(Bk)+$8?fV1!l7mfKXHZrZOh^{LKsf&)VGXaH=KCt;fM-R*_lF!HNCT9=
zDncm6-NW0yaZ`ct77EP~xWyaHPspTqNe8hqt}ExDayHevIUEZ<mj#QvIT?Qhk0Lvt
z2RMq-uMW~R;H}O5QE++m=i?>QH2ZBg4LpC=qFtg15(0PzUfH=KUm|{IHW;X5e-RVU
z(THbLO2Z{#ND0~XrlFOAUNo>v)4|^p^#=^^8}@_8vXpbD6r2ZO7`+Y#Ud1vewv!JX
znCcv}SGTZ>K(h5=`xL=)O&izV%_<$L*X&&H;=Mr=2o4jR*95O#a1`*0hxEV)-D(Td
zpq<BWMybB+4bN}}=vFG3urM>Ma5$5ZEWV+c&7B<~kZ!6L`Y@p6qeUrpS%@Z=4$_O|
zGf;UJ`73$`q9Hgk4L?L(^BF4m5G-kE^Z>o!)yA4wL@2V#0M`sv75p=JW7IFb5qO1{
zK`WqFJEon#N4q9Q?DG7Wo0{7gi8I_p#f5AAGk5>CS-vRQn4oFrtE6OtA#L9-Q}D~3
zyLx~M+-#6=Hp~!sH<VS#8M8DY?sIld?8uhQG(i0%yPgCKKnxCKOSyuf41AEK{$uq$
zfPO6{lC}5g|DFcwTKh;SG~}42NkFmUNACl+5j>vqywk_rsz4rn(U1&0Pg@6)U&q)(
zDi>NMm^rqz>Yi4l{R2OVinYP3Jzy6e%}*KhSGu_&`@<;|BlAeju&{CT&_8d*m-*#8
z!x>!4h#Xla#)(k1Z1g;{EqBmCm3IyjkXgXo+wFJ^g528!I02fD$Ddyfz^X0{UGENB
zH$q5ONeap%37}J_Rur>1_=Bt!xcUSSr`mSYWhz$_ddU7&TsN=dYEWa{7Mpk8nDF)*
znFBQS^a)qi275ou>ERku+E12cVVYUiv8OZ)B4$2#O`nDVV(((+!K%t@_lW=>z|v7g
zz%cI#y<RbRiUmeVel58`Ysv%P5zRWqAXMruva^f=-y%S*AH3r0T2~DDL~n%TQ&vd^
z07>&}m6b5OmQ7lQ<dc|&saU9rp&G%SOf$ajfdvo@PpJDFtdFlNggDqui`W}b!7)r3
zI-lwcKKWc9z{G}d5stW=ynQ$)rDv-?!x;{$9f&)y3b=ENLpvGTbvzahxVYED?{D{9
zHYsFK;`oKocInOXC-=$-a-hlQlmXx%Vg%6Ctxp+mtnky=GmNv?uskI7iYO0?4vQ*O
z3hUfEO!+;2XYqpY^q}F&>=42kl07m3BH8t{XqpyzTpK8pS>*8~d|20s2diU%cO_^;
zC;$sy7ZH{wgRFgDgk4gd!vVMUhk*)WVZb1!WtEj99bm{ww8`@Q6ghyEH%gNT5}K81
zxQq@ivd@$SeOgmZaDk2Zp0fz`r*)6|S(4Qnj`(i2;#5_1V-p}kaa}c~a9~~b^7?_y
zM30qs172!(;1qB9u>{dvmKFs9o7_lgK!O2hWnigsWtBK7!Mmr20=KT{p47ZB_5>(O
zTZqA(q{v*Rqt$T^!${~oN-j4JqjSTFaVo@jP9Y|&=6yzssd+bUX8-2ZtdWlb^l{Z!
zW``XE^M2g(iUeetMyh&?C7Pt1ULus)^qH@akppqRPI{}k=5=4%{SRwv1Slh{?_XS^
znMYY-5qWrYMb3@<W3%a*nY_dENgdPhdjF5Cj)9#VFHs8<Ing}RCdBO|-|j#ByLtKL
z-&O_;Otg+wXJ{PcmOf2!i35_4Ny)v<$D-m`G22+wKkcLC`rV8+?a%w=Z_H}%>oTy<
zJ+zF!G0=pMFdzqYkQ9Js)sRV%D@r)^feCq^0G}gPtIw2Q5*rU#Z_~)6`{;kF?7OLX
zvE*80{@l#!Hlp-MaKMl(JGXG5H;aTQ?qCRf$kPth!X|N2P#9HywZzCck0X(LX_M$T
zyyXWO``6g-`f$`Zvl)jYu$`;bq#sxD;_4lQ;I(Y1>2O#yl;4kJY7uX)=SFmJrAXA4
z-~tn^j<o9&q@WQW_=B3cNoE!}cfr6cR3}^p!RUsBDGjiWkD`7o;+rESJ+B@Mo%c#R
zHNOrB4f;8-0~E7(;AH?y(|Y<f`KH(axmKU3m!D$gd*X4L_ILAiFPbW}wZ<IG0w01`
zt@}JQAJ&-4)Aws50lr^uPP~~CviC+vJ7t3R`$qV;Dgx}}rD96Nm+m0dO2}W&lH*;@
z`%66-P}k{bXzTMZ>ilPruO<XK^@sR!A}m;pmeb(w3}@J12irNXP>>h>39h>39wi*~
zJQ67$Kja|eC%!KiKXl@6raR;=137eCQaD)rKG6SJ;c`hY=Sgw_LAwM^t(8HDwoVLC
zS91jh1P}wZ|B^tD1YK#Q#p{ZqM2{18jS6trgdFXf%P{KW0aTP<jPy@`P4mia(`k7H
zwEr4;30g><oJ0{Q*_iMcmE{BK8DMEskMBaZR>tej>H!4sm41Q8>yMkc@$GsK`gtZ;
z`VyE5gD#)v{i>N?$j7T2i|2dnGk~bAdnVmap*|$@LI?x4(jA8!9~De2Z^Us>D)onP
z;U@B(VJI}$QiBFn_AsaF?{~LnQxDvE?Eoj-m~5@}GKO|q5^<CX-_#a>{08m*Q#=Ff
z?Soh_PW`3I(QYr^u93HIKbHD+u9Gzma7}}=@txreA8OXdCP`jYqkhsB!kwK0%`}j5
z+lE{EL64IPI5Nppm)1>jP#$x<J%0k)*OngaxsSE{2X6bb1vDhckX1Xks}@#aDES7N
zJH8(EO*Pflei$GizAabdbjYPZ+yT5LBrO+m*ex&tXeyhLtfmc75eEptJP~qMGL8TS
zh623MyinMd3ytGS`R&xCB+*^2TAnZtAeGgk=}74j#DfE5h37UlYuaXfRzO?rHGz6Q
zYRmyGF{8%cwp{3^4AC@=QQL!fUW38cbeF)WB~(WxeZRNO0WN&BoHoc)uq_@FErAHr
zKL@Dh=ZRnxGIH;v+lzs(M<dBVL0P9DZx8+?L!WzG@T$FRvpg?U!BekCP*bGlySf_-
zvR@yNdHEh$aIQbz8PGDbv+;bHmm=`<_!Z>Kiv}&}<miy#8P2c==&-+2(OI5BP43on
z^o0R@nQX3dn7<p>9fRR)HLM7hF4FyuI`;Ee97Dg&nF|re93*HZe0+1jcC$oBY#k{<
zhqu4FFKsl<^gNB{0S7r(LYu|*S3|HZU!YF%4Lktuu#)IVUpdS<bZiH7BS9n#6n_kX
zgC1#6E-WqnDF&*jEA9$Sze~;;L^41&eh@TKEUPF0qV=jBLUG%LZUmKTbbw?Xh_8WO
z6$c<>Q3u;~yW=cb1Eow$i8X+yeV6-hkGJ@T0x(tXhw}kYsFXuA(Jxl@DxfhC>qcys
zmTv(BV{k331l{-ZOO~P9bsS}Po3d-z29=J$P`)=q<Lla=p`XeZXV9t0{mb}U__VH{
z0XvoBX+CITY%7yViyh8e>*%5_)Zr|{GaMI;C4c!VwuIMI^a<>u5;&@9e|jdDs!SqU
z{C#q4JZE@}#Coi~Wl$Ya(=NJU<L>TGa19pRU4jOe;O@S0OK^90cW2}7BoN%)-8sDV
zRh{~7-E->d{8%+L)2n-WX4a~nS>4YwIE~*CKsp09-m+CHPVI<EeZ+`s*Iz{S+bXbH
zuXTo9=(h5(s1#4Qo3L1aR?hQ=Zr3}%`J)Z1ecnFPW-NBZM(=2pXxh<lnHWU5?6rD^
z@~_)}GH6Z0z}|=KBbSpB7+QG4m4|^ygA_~8POXTtK2eBeN%nChCohz!C5hU0jgi?p
z8$$BX0y`V5tC<kw6IDqpOl2e~G>kEdqU3+lDhEpvBx&<#7(djYeE8y#awzDtSh5^N
z<t-o1q{ia*=uPgegj9N%t>5_afGR}=EJyN1w2yr9!s3N2tMQ6gaisjp0aef=nFvh*
z%@4)5Jj=YS$)Aox0Z^?<418riJ{0}J$zP<?%>;xZ`GI01Z@7mz!q+|WalN7lRm<eD
zcXzoN@RF!~c;L<JP>Lwk*x9MXa`&zYb+>ox<`Js!c>Wk=fMp@u*?r=2ae-#^ZmiIO
zn+4gANeKEN>_-KOh)<}<Zh6W&8Q2i2DHuJ_PrpOZLBMOQcqR?BUHRf~mluB>`24i~
z)fNX#?^E<II8zFuMZ{kn8f4c7P=e<K6H!7V1SBRnwTCwP1E^=t7qON#m67u&RvlVR
ze=^zG9h!ZDAQHZe2C>kHAnp^=Im^JrWU717Cmw8hHX6jFol|6Ikg)qzM{20Afqw6f
z2k~(HwyxjpmrbJ~vnFs7L!df(x&cS$ZE`0#86rbl@}D25d!UroW*XA14)jsYDTPt4
z_3WsgV6v|e<kE&z_Dg$m>Y1psgO>KCvwzjS{`>p%Ap4qxIkrQgb5~b-#ufLYTV5{X
z0?CjlW+eM(*1|3N-fQacV)AEDs@lvF;P~(W^&MHBhcp%g_aOgdBNaBS<%1H|+^CEa
z9l`-}wSoI4dTx7Ur<=ij7ku1zF1mBmw7vhWmFA7|npV3NGHgsx(|#FF9DEYw3qUZ+
z_66zV{^K6Sx$ex}x>6|2(AKSNI%5&(Vr~*3l&r??WS*E8`NGdkiom<{OZMC3g@Ki4
zSt7S`V#^o%x&<OmCgskUx98j-;eT5?JQj@^$ZMKXs;+_p!|t42AOcXs<C9GCqKkzx
zHJKpnjysLV$--6iU+klM4`_JL!XaY~SP81deTI9n%V*5(J9&TMiD+;vCwEaH2!|%E
zw3V6CZP*z<+bAYrtkUNKYi!9*HElmQU1SW5v;}O&9_jg}Y$Wl0DsoEi^v75~#(q|d
zeYXV{-M3fmH&>r7Y5`IP&?cPk%Zxv1LKvLOjJQM5Qy4t{1kU3lbX1u@qPavwK~9bC
zuA`M*kdI@K#`)BdHbU_B-5Aa(kaV)w({cLJm1L`}^UfER3!r?r8MD;n-7k@<pB&m(
z$O8QnU)&mD0aoG~s7Jxq;r>^M@{=L5^tv@euKo+)aSJ_^oN;dGqpYkrAmF|eKYUxK
z$^mIFY&)R__t2Hgo=;Y_>lWw~@(#S??pZBl#zn|bCxedWSjWaF5FWZFt{v$oyVFJ4
zbR@Ihoyuc#Lr^~iELjDTnJdG>c}m7w817D50!dMHkI-+8q_Jy@pwI*I7Vyx&#B~(k
z=psT28Cwy8EW+Rwk}x|~T*JXYG%QuHh|H!M#1P=x18J*bFMvcTNdv`Ik;;yIKu9d8
z7G4>|XPB{AH1ZJAY)RHHmk74X2Hdq1%QN@eXJl0PkS;JgT)TtB0s~e5{+t(|$VLjE
zL%wW=0DIJYN9)G=3UP9LscKdJ)UeT2B78G8`rI2x%ZglPEUQK^7=E_`GioTuZm;tR
zH^2s9`@#s&bw{7yblhP4r-i3ZOl?6jA6cUzo4ww<BR*OFg{S8(OHLelyj4RBe`jWx
zp$|!ycJcdY%v+bW(6%ePumi_3!NC0sRwHRG^2o2D7kgymoj)s787aFy*D?_1v+pS=
z+hWL_&XD>Vja6)H0apEL+7JQdz&4_R(67huZ4daySsQGpsQq$5*A$l$bh7>f0I*yB
zs4rWw1Dcbx*qrmTxvktOu^Jl`BFDRSefcc}u9NHguvLrH!atJmhv#oFwq`mXZsvQ*
z8S+xu?yP^wfACORo1m_yX>8%MASv={+K&ch{{5O}1pB_dhu0<}hv|qUl;OmaCq7tP
z_YWl>VkkfZ$qEeHawwhNS9jSanKWD{kz{+s;OG%yk@9+5PEIlep(F#%FAr6xYWs6!
z8p<AZ;-yqn0<m@=GdR3WHy&t0vwPzDoeIyHw+%!(p466JtnY4bCrztfr1#NoNnZpJ
z&J8VWLGsPENM$5T7<*B8I<l8gee!b=#|~wfwt~mT%f|E{DeF&(dKCR8cv^-d(vrOy
z96%SGFT3g4%8L;fp**IAnJ|>i26vAz<vEO*I3oKsv`6eX?NBs>U2Cb1MF5E|B&5D{
zNQjrX02S>^!x!k&9b2>_%|9qKcz$dJNH0y>moFgHQ==H_8v1gw9H}^F>6@;WtsG7j
zfqwkuC}x`p6=f=dzmAQe@iEv2(5v@ott^WgF4G}Pc%}L0HIibjG$8EZ&4FQ*+kiWn
z6<_q922)uhA;F=!zjUN(%i!U1Af<e~Y&$3@lzyO#TN4vxI8uFud3_F`&sA(iu9TTB
z_E6~q&kE<$vz=0y1|J(jw2p%Ul;hoh+<k`rlGvQ51e9;n!CDmKQEjYR>hsXKmXZcX
zP$!#Es8D>)YwA3Vr$d8{!7wfse3GoBp3A}M4Iw1~)E3wpxo@it?^SyHR0aRo0`CWR
zn!_g+3IQc^OoB#y8s`i`U%?-Y3>&hnPkQbHvy*;4O81+qk073R;#D0Bv<@AjuY@Kg
zOjfR^W|e{aTx<w0o}2?e`V!X6zphi(U$aXgZc5n&Oke+z%xMZg7%A)wV~^FH#9WOq
z_zZxl>8*X)BHRi;(BctzsU+`hb8w&?j`;~`R!LtYi}%xuIqYp9^eyqrt^Souh*cvQ
zs&Cu40zFqlfwU?VwcwJqK!O?stK;(y?-&Z}+8S$8JXTfx;S_YEYi$MO;(#gsc<=fh
zjQLUQNe<ZCgR_Ibca5-zp0L&XlvbHm0udIp@F>QcSY0;<0<#^f$)j-tlXr$+UV^-A
zF}rNdy5UwW;Z)`cTYsWzCu%SBSqI^-jje3OyZP#;z?Qy6pS{ffKmet*?Jjxv-Fm3)
z_IFqQk#fnjE&=k!8Zpwlf$&3}Kumj8OTvt%x!;|VoWUIKNqe-qbh<WyCbrSHewUVK
zZuPJ8-6nev5l7yW8;@Be`{Br^FtvgYNkLs<Z|}o<_6M3xj$k5s!`Pqgo7WS^iIOD{
zL=8Ts)CU}&g`yD#Yz6sJT)$Z&QDZ%4W7BZ_`l!b$#a;4u3cCy{ik6#|TS=8P4pX)I
z6$NXUqRptzSHcPh(qF%aTt;@gts_rS?p_gELNyT|-y%j{O0tKq%)wlr9C#*YO39)r
zeg`xCH2_a)xFO+zesgvF<z!#*#=l51(M3R8b2cvGMA}K+3m_+-3_{yn`j+O8xgYEt
zu%M?VA*wOXFpp&-gxAJ*iAdx;o1yF=O7b8?F;{6%^-b>>(~h$AkUBXqOk8lsy`g#a
zEH2hmuc2a&g2=r-i;q@G)=VIGv4rz%7>Q9YEv+bs(Lk3hNsEM^<=G#x1aU)Gl#>?w
zB2ZuQa;oN%Q|jJYmI-xf6uS-S1(rm|ByQJjhjfv_(*Vx<G})jL+1p@p##?lHnW*#?
z28rH1(=&T3CUqsd^QR1EhgwphH;|=Y*rL*lmI`J@yD4N$@!35n#`kK82t(V^!>0{U
zKD=`0c}qCdPA+TgVG3Y~FFx|NVO~nnU#lfgOo|`e!XLFz3mg*tptY&KTzoZ+fc!Ty
zqu0LTo?7<n2AZ?YCiAq@_N$&pl*66cNoObolgJyWB4T_JPUb$MLIYKbItXrKpjS3>
zRiFm`NJp8oem>8^5>a^vE#mD=v^_RBafMz;muqHZj$_S9nDy_S8=p%*5FCkNw)ZwF
zv8g9di+w_Nm4_${YoG?`+hC?8ldOMRcZEQICra;AfKISW9@>tJJO~3C`}w+7(w}ht
z)6_Rj1BM4ESy7YA$?M{J4!r*89mdHmLe`BJ$_buYI!a!B%6c+yasxNX3SQFO2RU)U
zBHCEK7=gUm1S;K*%Z`D6@{_mZ`tg4;q*&V7du+c69jS~n6<`jL`dYY*^Uau1H5dQb
zds>};xL9lmV^MQp07M~ghG-MmAQ&_G!wT%#^=&83$T6)QU&HUPX=h?YB5&bKR*ce3
z1we5>3F!vquO%e@HN()&WVvVSFwzI0?1<w{?8v6fjd;n`-^M~&@Z}3%5K9Xm?M3>m
zPB~~|(5J^y0KaVc=n~@fJA}9_t#T-MT}-)F4Yk^vJ=GeR7HLET{n>H>68V%$gnTi_
z9W(J?PXSNTWswCo9~pnrV`gBd`wC*%(QI6fm-xz6G{43fo0$pPTkiD|3y|d0uUybt
z3wGZBxrzusl;5Vcd0Kl|D^B<ip#UgsX4IP9SWgoI$Nv>Rb|0+Qp6+Wmrk;gdqzXjD
zM)|pJEg!d0@HQIHslCpP&KS+7fV6C>-3H@v_Hrc?z1!eSB<-G;h6RlyFPsctCc|RF
z?MXU3*75w+9W5IBSLT}C9N`9U6)HL}?NTU7obnbDqOusiPzEdo75quW$a4KmFLl6A
zO)s{@6%~<v{Z!iLw#r<Ua1Rt^m6*6w`KR0(9-@GRTgbKz2{%WbJ8KR{=V?8vubc{Z
zjh=tLK#YuyL3UNfH$$`y)dfwLO@g<pniUX8tKDni{cKzpcOYw%PT?%2hmNXQazOkj
z*qlVf_bDugg|8C4v(`-yt)ugg_$97SRz%=oQkyH9Gc)Z2v`R2<f&LKD<)W`=V`;5U
zUhe8f`gnpx3B;L6V@{eq4n}KH@=bB!TPc&Dr*6vvptAgFWlJ$Q=l))63LCMlzeQPL
zk}o$rwv7dv)cVlK?tz}K{NoprH_Qk{37QnDu1Ex=aGvWuHpDmfIzIJUNwd!J2BJL6
zk$}_%Lgt|2JheyV6*nqBP>VOSSeLKjvuqDYm-Z`FUd|s)$y4u{l0g8E`<1W<;ZB#R
zm|vZQw{D}u=1Y{1ygm$_bMc2kR>fc**5H*=6&XC2X#9H~0<2b%hz7vqfGld8FweGq
z{~*I2LEyJV`V=Ue*+HKzRT&$-5<Zw6$s}%SK73ux#CuC<8uMY3;)^~)-N`dyB+B&t
z3!6u-0t`Xa#yoo7qbRM2|4Zw|6F<OH3KdokNelm=L8@mxq?HH_&UGRTWm1Yp7#u7_
z3Xq&m4N=D9+d;^y&%VG+jKQkCzmWtS@>+Tmu|_t+!}%gUpOa37kfS8sAZJ%@xAUW+
zgqVw9=`<X*>&0WVl>9<O1kSlA@H!Pf`Q3JoKfsk+x?T<}yCB$NxdX68c?WO&+`O46
z?YKQmz%V0(`hq~NoZ=khMOHjK8T!nnK2TyG_jP}Z<`>6<Uf7Cp0;<30qpg=uV5O>E
zJIw>(l@$;X5yLEgV@`mNo*?z&NAiL%CjlD!J``C_JNV_?M^&i@Hrr8O8><D~a0*;B
zx0VB_RrPyiu&j3=<fnFQJ*=DIytmyE&Nsr{F&BxEuwoRfF0Bt9>x>rHniigWtnayT
zVY*nI<{>*GG6AW85|z=B!I}W%{0-b&PU0vg@mN}?+_rl05wFpiohwt6%bOva1BMQn
zP6V9Ar({0quoezB%FwYl3J+`rH<Cf*fR>QL5>0?yaVpI$%>@^N-EVB|_u)eI2(yr?
zq0v3zL1mC4F_r(9*E#+gL{?zZf)iBOL}%pFap)i37bZT6{SXFizOJ^v<F9SyFQ3#w
zsxQa^yZP3DM(Il+D;^9r{T%1>FNYXA1xB9V{(yy!EmT%NM2`?hKL$0Oh1OvHcM<4X
z0PH4vEjO}76@{h(UzSGgRwHOyz8w!RXn;Obrhs|!;Y42GB(_B_Me-&heXbO(#0W6<
zzj%}o(C`AJAiSiS5s51jKU7ZONcX%29(|@K!L+R6*)YLqO*%6Wyv^4En_DhSqW6E3
zlH4Rw!uY^-^M(km&sD!WlEh!b<gOE_&=nuNN)Y^Bni4PZv%}m<b_Fn5aA6+|BC8JZ
z5{r4kHY#JX1|1RHJ(3GM3V*X9D`h320F>WpmCi)kb=j31p*L6X&Yvg+ps0vI)Pjez
zOwp;s_dN3lPK_3S9&yHeaoD^25~!C<*s0$v(%}{xkdeU;Ttc(>Egb)rFX(sykxj6v
zPB&d@J18qOVFVG-b8v95wGQmnMr1&4r-m*q&XM7FfGJlk`xdIpfxzIs%apj@nbly~
z-egJE#?pcn^w2-)`9*7MZ!_xEMBu6dt(lV;D)Zg&VpEvC8^Z>&8Kx#ZFOj7+xa{{0
z#Sh4D4B+|xd{gO1LV2?i_-%Z*0`>e1&xtS>1!)Whi@7gc@MeHHuj!Z_4}2T`=qIk)
zjzDb&Pjc~M-yr*au3fpGzrRe_DB<W|Gq@`vJ?g^k34iQSvC6=N#=eV`F0Q{1fEcD0
z13A*SbvVO!#}|?lzbgfd^3#yRijyy7n`kO95LIaN=Y|KW^^Ygs3|B*@<5=v47QQT)
znEPMa$R2BJ4HgbY4#7D0ARILVm4f&1z?_KW)6zo<xVsU=eB)~YpJ|;s<M;ivh`*ba
zq5A-hP1Vbt>I&d0e}KDi(_!<`Ce}XYPYRwU*hPp80SubLiCZ-M8!V@o;4EJ^q|Kc=
zj;DgKjomX&fI$y*CxO<E@9}})F>KwYSrA{YEwu1hIba6AHRH!ChhY*Cc(Iq^SYk7b
zB<EQ`5Nmh(>1+$CI<-%9`XRXCgqB(d9dD6&i+#2+WjxW%jw`|Glny05v<K<+&5!2s
zlt}L$S$C>4`vO=SDE4meQu&)ZggXFNgceCSWA#kiO}GV3W!9!NKqRxtBbd&RNscQL
zl86X)E`X6%er}&ig*pVTuYxjb2tD4Zw;sTaQ!tanNFboba~SE$*t5h|mw6f!ebH$K
zA#XoDvXCDiq=;|irJASR$*6q27>hayIez==4F=$DqlHCwKKAdrx$`n9&<iQ*C4evW
zc2@^bvy0zbdjGcLxKRFM?)`+sXzf;Mr*xxtq-G94rIg^LJT6j6-&XWvgP%|i+(!1N
zq?t>Yrgm3M4YMBW5d7_!kNeU=Z2Ifpk7u8f3f8vZznf6K;1GuS7jL^)IS9IgY{Q<v
z*tkJb>x<4R=%W<qtklj1{(&@~36yGIYsEy;i+p$-qRB4~9pDlShz<c9Edp_L#0ES>
z7$@vJ<VKqwNU0U?ubK2ws$rLJ&fI*Rg;#*vKEgw6osQr?s(8O3i*Gb}h0y8K6$22y
z!RD2W3!sQTFxk(@Yy_g^KB}{0sW)!X<#%HZe1X(fXffOT>G73NrO7=e)1=ZAm5OPD
zU!g3XQ0}IVKn<g79xmpHK#i$(;@Vlzzg?#%$fy@HO{1GD1kWB*3Z~+j;}F=Ij5*-m
zjhMY$3$$2gNN$2uYUh>rON-v}<tCDD;Q=<&=#F>k96za&jy=pC8pzsfP#L@?yUedm
z_~ekX6B3bm5uPd^^l%B^8OLCJ=8vd3gxW2_{q?n67zDtK1uN=+{sRO^g~%Zaa5Wc5
zMrl>6lm12^)nmrUjR<m|ge$<7Ps9RFPRGF`jrd{qRbId0OxL|NH^W=_o|^@qxqyUu
zTr4=1AJ`81OPN&8Pin%oWV@n+lwrc**|PO-QT&8R|F8t5W6%I8cJI5O)UqQ8SUN2Q
zm9YjO5zYv%6<Fc4`a_;ahY-6W^=Wi+5Xi<S(5fZ?$@^#F;KD5T-%JdUT5VEEwO$-o
z(cdbf0PSE%Sfp<CndS?W812)f+RsnZjV?Ww(K`^zs--JAzVOKzQFZzmfx4LDOmv?O
ztI?G9d@;SRS5Z%Z-P~GO9g)e3+4Hs5#3Gko>_H@IkS0&zFdeDMipe8>JMM$uM#a{}
z(Hu3&OsmS1!?F0R`D4=Wi_AY4q#%R=Q|`{YHcb0^3O{WXr+`q}4@CvajqaBiz0}xH
z|5&4u2zv6!zY&3i!=(m+DX|k0`WX|me3TMWX#4HZtS~4sU=GQ0HvOV(UL|b%j8vH4
z*&GclTXzQpLhYg0ym9bqcJvZNJ6mMg%t#nNgEBkz2LRsm?->(@tVp91M&bOwiM&5d
zpSWrKe;E#en4O_~!GmAYE)U=XQDzn>;14KGGtrOxGxBGkO;<u3&}zw*ppkJFo5$eZ
zo`gGNbD^QvEa(N=$*dnNp1VqJMr@Ndk3JuCLFtZgiM6lUQ={lEbic7JWjyJhI<uGe
zHv-MKMVEbZWW65Vx?Mtot@aAM7cf^EO!`egVnXc!P5nq0*0JePKH8$Ikfq>1*XnPN
z3rIuD@p!T0A~6iBtP`MZqS!kht{4y7t-q}I^sdZk-ODYrC`1EB526aUjA~nUHl{^p
z$ZyQky=XYIa091)w%@<Uppj6_lWBRKPRNtM>3sZT`(tJzxan9BFn_PhG%uS>6d--t
zyI-Ztk3?+t&y;92*k@#TLn%XKW&_By08OfmM&4HCOwl7{qp}3(!>9|&Okuqoczo@T
z<4XVA!+Vw6+yuWdM-=bYsF92j#+qvcy_McY;vTxU-!j+wZhxsSbDu8#8eIY{8--G0
z;`)@x{@WGo6VJzFf+xn-!t@39FY3;AKwO_1W!?eB0R9mMqrJaw&o?$(Ls(Mm;sg1`
zp29t8zU1M+YO;O%m%lA=uzz`ix=17S`_mA{@#oHUbXG2neZ8@w(`Y<r4@#=Gh;Z=t
z+$AUZT2SI4<ZqCr_pLa+m=Khtg%;mtY1ZFWGSLGIaO>6CNi^Q731ak5<2?7QO64GZ
zAulf%*4kklV=eg9i>Z;NRnZKQuFkDIGL>o5VBFXYe?7-1iaJ;9-W$T0Qu(qUGGnEJ
zSrKT`lz)4OtbY-#%KI({LS}ar2Sw_dtwq23{;f3?xc7L#<+&?2k+u#rP;H>u-@U-_
zLH;}Woa+j{X?~}cM=(lI<!SRl@h}QsM|@jf`gIn&`y+ed89MMxEF&ip+37*D2Pd6e
zP79E9(HreYoXy3KQ5pQCg-a6eq+4V(@>Gct$_Z2-Ev@6U%~hQtyyu5B#AOX9LlK-u
zp}6|@hx21e@1N+rl8|m+Z>7Epn*;SX<bx^Uii}IRww02imnsNieFwf?_7U8S-1^yr
zGg8HQ0}kj9+%c$jUuxjmk>O_4_$kr?)33oNh&)0$)r(->7#?h+TBuPVr1ULu-)ap!
zAs^}U)iS2fFXF$@CIq$BxS~)q93YKv=L;)TqrVu2Ltwru>JDq;<x<p*Zplkk&`<fA
zT?j;n@Rp81>7nBVBk2Ba^rn}>VUJhzCs{>bFNrJHbH#_#BW^t;z~^N!giGyTiCPFW
za$F*$I&OrO!h(D5a-P*>ZJ$X87+dzXhKVZR&(~%i@@gi-gS5S1+dJRE-qmo%+S+qB
zx%(H{%*6f=D?A&Th62BG<rzCD5vAU8)eOQHqeh%S$nKaCdHH&etc8ksd}u8%ezKvK
zX%L$(KE1Kb%4c8X!k(TB3F}{$&;@7!vTnjlC_(dRa}dm<;I)At;_&{wrk`|@y2iJy
z^*N0RtNIqO%SWdQJSbLSPk*U?w^OsuhYyMN(m`&1P9OQ<5A1fAMga@c_P#`8MQeaJ
ze-!|#aXA=h9XpbfPYWhz6tyK+lr{f0^Tv@0_<Ny~^`3>bfF+T#N$I?BHG#!HSGZWS
zz?IBRVG`$`^eFq`_fE%FU%!px(TMUGX~z=!^(B<lz1$u$Km&)54*@)C7WH+1cviYn
zsE1x1`A%Q!#~~*K%`&7Ho2q}4FmfeDm@(H6tV4`Q%zc#_+{pm;7H^}UICKlvS+G&@
zX$_^?TaPo!CY%R1EjO{8RIeG2#=Gp_+zIxh;ds$~q*OlG70Q+(uGM`>yxx|ahz5Kw
zm{HO#6M?D(!)?h!2RC?KP-a<DfP?aryiQ6F+H*m=pp=dsZ<N({e4X6yDLdg_e!uz%
z*E34;&4wc87^oSia5$Y%gWYL@M|rB^gVe>g0Ukq~w#<uv>%Dmo%fFgV7GC-WunKdO
zZh)2MDB6yozE(s2zU%w750!`MLo1ED@Nb)6I0GG<xM-LsM?9H$mEgtH2qNWI!7%(Q
zC7jIbxk{q|+6}s>Kz5_Qw*6`qBg<!fmAT<s9x9;%=UfWb{`&&u;}aKlcJyj-)>dHm
z#78~%8<=<<jlm%}ul3aY*-SgF^pD66x(CzcEH<srA}13@t<XZNaciiXswtXb^J0p~
zzS302BiY!2m_p8)nrZir^iQ{^dBK6liQ<W&fFQUA_1!tlydEHtG$5=HGGTSXp_=~B
zT}NR67*xnTdgSF-W-EZomv-`JKr}0JV{Hg#vUu{RKg&kYpJ?Llu`2{vDNgn1L!E4H
zNMoS7n=+;Z>!qPhdu$PzGo?*$L(@_e89ppZuCyApzLX#Wc%I2V`}&fQ?4NI%BV}u@
zurSj*d!MTlfEm*wX%4W$sMu7KS-K{#uu$mWH_U(+6PbqZVuEWi`obsvWkW?CLK1@Q
zFE9MFqW439{x8N5zH>Io7oHP<2meK|8)@MC!PS7j&V<>8ho|`DQbJq!u%9rVUzI=a
zZ#V^@=5EIX!?Z&)|K`ex_HAG`iQMBakUVb=S;NU@`DN)2cPBqAi54cqx)7ZR6f6ZJ
zqhTP?9e)4OoD*$&GqnDM#1`#%S0||pJMA$!p!$3mA_t-vG}%j^UsN}v<by;87c8m~
zVuW8xWhsj!x9EV*LyOJ3*KgF=3Li|dR_LIZ@()E-7MW@6?14b?n-J0`kZ*T%E36%x
z^^Oetw4NoqSi6I?6MiZWn$!HBc0g9KhzE?%D?AE(?spQyoWB}`wd6!dxxPPoG$<RK
z^CA7=`v!k;`Npv@fETc^1G?CMc;xF!4SvLk-+1ab_jLML2>H|$h-eaPBO_5BWm6?&
zv?UdLSnyz9x*NdIl`z+9AeE-0(027;))1o8{qbP1lvkY@gJJQ<5+-LT+$PE;iW%zw
zX$_@kv&cJVR^DuYg;Ns#94jK1dVIa+!GliowXZh6pZxu88J&-0+Yu9I+0UPFD93zl
zD{@5YutKnPA!5xnR&kwS>SsHWPW$h5k(%{ypYf-8xbN4ao*QNke9#_IEViQRCjC29
zH#7zDTyP@WF`kplK*O>tU=5&gdO8?vvEFcJvWf6W%uPjaf?O#20$Fc1HdM^+EI%yY
z5Q=&eJY%moTnv>-Sh)(<!gUsFtw(QI)I(6@qmh5))F86cjj!jDK0mpR5eODHmfjRD
z^_O&tC2fQEP9ZPDZ$Ki0X<IxE&zD5Y4Pc^GK>-tyuJ*}qPP-Soj-2R-Us?|5o5@UF
z^EiV>t64y$b2{)|Qx|D*H3tV#C_L%b-a0jiMWBn_>rDZ1b^I5=_uk$1^ed+%#4;*C
z3pU!a=}9Mp|9<v2Q4*EST}W{h#qyO$9stRDKk=VK#p{QlLD7J+Le2D{BwlK1Jk@sj
zgSb$awKhXg0@zvy)*u$XBEER#_}I@7YR_8imt|y|oi?So6fDCg;3D!>5Z{8bNuZI?
z)d1eE#CuJG`>Cq<><&PJ)H#OB6Bu%A4jH8fJ>?jv$q#+J6zXlO1omJ33`7h19$o%Z
zUq!YXYe@Vs=os>kk_7=pWx3l>I%UF|{rnk%;*0SWGrd6ew??jeDsR4k&9O%Uh34h{
zpf9k@g_@6PS@V6x3qNU!w^Mmst!`y+y^M^pC(92kNEqA)IN<Az*#Y&jy}AYTf`XQ`
z34cFxjw(tm$uM@_PL|o$7;;U0)YIuD_9dA(W90>YheN7<-;}*cbUYUhX1Df+cfO&6
z9lh2Nn(OpX80eG<6(MVRcFMDgD(f&A`|j#T6ag2`*q(|U3Y`UOg4E&w)eHR`I>LD<
zAo;2_{*GRTz<7sgAM9Z<+-Lp@a@Wy;+pl#~jAXy+;zzE5ybRocAsV5uWsNe{ilBqr
zs#+KHLyx==tD#(hv=gD*Kq+l|LQUcL!Gr*qONR{Wv9}1)c$_OQKK|XTRO&ia&ppZp
za;RGSyA$tkpeUV0fI=YE>Nh?<`IA>W^Jk*`Jc1AqWaAvx;YZ2?n;c-|tis+M#U&*v
z9T~nST951%lD<vQP8B^+aUvqfRTkw2@#a9h?&aG&TsZUHB8J|5T5KF0My31F2kt_Y
z+md+u#pKFELkX4{GAX|eYNunkeknXWP-%VTKm*{md9f|I54Lso9!mYQPIo0^2R4P2
zPSDJhQR55>hR?*<Gh!;slbD9;n(7aWPrR*3rOpY+I7~b5=^XGp?VpHCG8LsUO`nBk
z(wx0RL;K>I;w}=xT~>BEpG#&Loq;sc&nE!oGf9oi$m|3ub;cmdVm!hqn9F|$NsLON
z53m5kMU($3`~8$Yno}qF)(R7pBTp2H?%;x938^7IhT52LBBgP!cK3dm%E-1ZCX${0
zz;dk*TL49Te8gK)^cGL>#==3ID01y11#IVmV+&CIUTdQ4EOONu!v2d>)FVxVZGF2+
zaPMdIydZ)RM#~sK%8o;uA;2-gH}03RA0Eah^8aBC5`4;I7my`&uw~e0^4S5ZcGuf5
zwMUI}^@~3fGJD>?>N8&@q!9tYK2tguyIb3$)3r-4L*Bve^Z~3+@!s2!Yd?mRvjl84
z<OVdN12J?jS91-}PpLLMssbgxXJfhWEUqxCA2ZMXRE#;7&>N1jOTNIZC5D3p*h58b
zWy6jvBf_P7D=4`T%}MpZ%7fmL0Z$%pWq8E<Rid%=$9v$!JX0qRbdWVfJ|k?cwq$lQ
zldDJnkfBdlg`!@a@JT5j$~l=R(=1xB)$Au)`9fbXEyZ{*!ap`ODDhI?tBMOL7ik1P
zuE*uuWy}WPCkH@qaF~vU82-?QzMYt1R9zM#RjjfpKl(}o<pyh`E%Y3heB)7cicO9-
zVsKGmZ(oB^n+5ZuYB|Co%SWQ;HGXPP%WjK@Z@4UTsj8gEkD-cp4xe69^@N;IpbvAF
z0QqU0k91HknTc!5Q~9t6&&UE{zAiQ||2QEgMDR6+DWG=Su=h0jiU_?sXB|@oD0e3N
zE269w@DNJ@xn9z1-%7$4b*!yS5~Q(^gUw^UyJZ^Tp01A0WtdF6`C@v@EXB8xcox4?
zh)>-gyKs6z@WFB;%QI0NsFo(v>sSO%PQ#CE)ku;5X#1<dD#WOt4X+r;fEk}2>LLe=
zA9fWVIuP|ujqK~WWf|Cf5eFm|+tD$a8=!(ztB%=6y@F{85J8*4{3%H=lqyVx`s1#&
z`n`>8tIJNFP^1wpa7bP8^>A8ccMDS)TB9fwOKZ9K$f$dRMk8zhMLMU7iUsM#S65SP
z?v2MMF-X#OBsi$=_q%3qn%39swm(olW|^a!#+OUFc)Skk0J&C%uwS(TN5p`)-a^k1
zq+Hql*NofemF}W2Nd2JV7NJQu|7_g(4%wHEBcV)i*rvluOu4@GI_&CW*SW)09igLd
z{RXSXC4djkACnD$N;c4cEIQ;Fp&BkOF)wOEx}K3wK9cn_%UnxPG|LD;U=Td$f!t@d
zEAln{6iJh;-2e~DxWG-Vw+C0Zn)h<^?mhKg3@<dFBwd`bqcl5t^P&<6%blSmu{BpC
zLMSg>Fpml_`bK=D-<jW<ifN20QGf|gmSZLCNf4QF77?hF89=Y*<$TktLIa4Q2s-qo
zcbN`a{6xl1Jo2)Aq#SJOn;3}YO?89K`t?L*6d7-A+AdF^&7M~z&ko0OGu$34hH*!g
zoa;FqXa=T%7&v|%*ZZAtb|U=~m{+;rc(pa=3T1f=hn1Rk&Q_|`hLa?J1j&Qd)aj(w
z^4#?;r@Wm(`R`Z6E8>2~?2kx_0!}LqgN4d3FDZDsY9(v4b82jVaw4f)zyR7&@g42)
zHw<*A+AmAnxTBy%UewfR-kApA9YJe^VIZ?rt0d0C&39QfqPwALGp@6adfZM&L%je<
zVgf>{rouTR;Yv7WLm~2PWse&8XQ8ScfWEwcsBaG%O7QNb-Rjb_?Y+Ml5j>v5R$<qE
z)(s(o@2kq_{t9sV{U{0tWeV^%o%-n!QYViA7b1qcD~)>u8DD)sW?K>TGvek;?H0!?
zXVcV(2n_v#vk*4GF4~9k(x`6xGif(@=0|GAC7Te-4W7)tXat1x_ES2}XO)`qi`SWj
zr5Rt!9xc{`1>H7*e*VB&b<y55{j&|VRB}vkvq?I9u<DjPIO#K03W5O_no*Yn@+YGN
zK63~>xq7$@`9lVupVUnX+J1deEVd{W;!ju)b*mu=W{+$78a$@6EZ9E&u#k7cUgn+{
zgBqa1EsoacG^#)s7EM?7?u(|xSyw(hyHmD6C!;XMz3o)MU^6SifnJBLX_#<w24aCc
z-c5@;%OpY-YQ3Bq`<&8zG5h9NQ>&`tw%xL)Lrt)>CFFJhKj&B2quPMgl{pK;K_C?j
zkqRbgscE>_?t;Z13N!dJ+U299B-X<V{Nla+CFa>}hM6CRz#>F5B#0H4H*d#m3+W5~
zsJ5W*l$FhBwLuVV^wF-IPs}b!yX!ukJ*_QcYx7Y{XpRn-aB)4NA8sh}*9B{sKVPGM
z2GkkzlX30Bu^}kI$8C%?6QL1i-N+sqrdWIb+s}p#L4Z@pz-&9o*{4iY9goV?4SMnP
zN12P*=;!CRBq;sK^~pGbHCPtEexP3gEdqCnz5D=6%$h68RZpBn0mLh)BXu$zxB5WB
zBGWj141^t!&^OLVkfE}7e`XBP4uJc^IM>_m);(+LAY&Nh)$nX5oIq8t&p_asyq5%8
z_@;v~c+J1b3vFKy14$-`yKm4+PrgNqerJXG`dU<KB72**S$JYu?oDq_I)tR$hJ!<d
zBnS36c|8|)GUdKExUibzb=R0r%lQh2|L94c7O<1MXLLQU(|{7Vm<CA*u;+0PofmMO
zZFv6+@KdsuaXF4@{w;9ZIACFCX6zg~pLmJ1@PR?`fNH*pF#mTXd?JoHMIkmb;}(5H
zud@FJuV`$o4#$re^f4b}YfP4!wuW6}ki}CRkb(L>z#7CKtLsqiY!LpQ6Tr&GL<v!Y
z7&t^(6oB)U=kt#dyH{7ZX`49-6nx8*x*9l+Xj3>fuF86ypkxsde`K`=l{+3K_V+Ub
zjISq&%5GM$5T<Ox2pKq5z6di8u)&007HD#u^;q=<ZE)3?_W{Us(tbw6;AoTH<Yq|<
zVM#_kK)X2VuNgjL&GO7x0MrpNL5$(7A;{E0R+hObS+#T+bpNNJl^;NA45%A&4GEnO
z8`{*qS3<;sy)_{?Ec6t=9D|Uc+>=M;sx<TsEJ58Pd<nIP4~O`oPF={$Oy0)3b;qM{
zP~8%6zS2NulpCl8FVj?aeGz%rR70RFJ3}ox7nlN}ZFSvNO#CsFxbkH(3hUo@=aBoz
zGfmjy(BqAVFx#j@q&U-u5ppZwFzvlM!hYc_UJ_*iks5u8$R})BEq<N%lz?IOISU?1
zUCYfBB>9)1%exTMbb%M#T-9c^^4tM2CLHLHwx5q8_sb5`QW`4y-&y6FIGH&O`H9kZ
zoejiIE4)_z%tob1!MG%{UJlQ(&s&XwqVs!41*8=p;}gk}^-;GvB{{7!=?<az;EIp#
zynyusu<j~VOy1mWNuMdA>CDgk`_w4DLR3hW%1Vh2DEL*R2wJa|2tp9)h>M%n{|s>y
zmc5y`y{P}eI@F2b!IMC)kdfxPLY}PvbTm^RC@j}$e+-nadlGD7D<G+;Uxg(FW#p;P
zJ$J<EYK}*)62XQig|mD^><i9?oDsUS`eC#Sn{KGKih5MJTCv!+Z&2*Zb@SujMJ{2n
zLT{<*lhHMq$0tG`*{ZNRlkagAaIzY7dPH(&O69PjUn}dE^Rr{|yJD^v!QV_H#LR2w
zEu?DK4>sUt<5cZY^7(I&(gWdtF!{;a;ljwb)QM<vN=)4M>!#)JpNz~YUN!VYU~7-R
z_m5g7kj(OSTUzdx#YUl~fdYaMyM^=E$u_|VElI<(!PldRWW3VV%TioB^YzJ&+vV+m
zesCS@T0y^X&<xyiiAxJ+@>CaOd!e&bD>H@P#q9cQ081XwJYg@9c)m-H;Np*=uHJH5
zxTYZjVvMWtzF<DpIsH*rNn`82Z$P=<9D>M6|HtgZ9@)q-1SiWM8o-x6cMHY1ne@{?
zrbk9{vwRpKHr_EP2_ySAypLsjI~73-?tj|3$N-$Cy?NC~hwJXU@WK|GWs+nMd)RBH
zFTOwrm(fN%^ojY$fnXLZv$Y@%&wq7fZTE@DXXS*)QOBNuJkl9wh+t>mXl}H9(uC~L
z)fwI9>02zIsEz=gM|1eH+!RL?>ax4*%yAk{a>-YAcWW5=1@AsZK98iiSO*m+CHcB#
z+_L**QSqr~84E(P?{X7jb6etQgj`pJw)68HA^LhRk%q<eX)e}_*wv7o$AFtkp@i3?
zvJRfiQH`+)jBvP6apfdWpR8Oo6fM=t(?Y1RfWCQFn5Dis6Y@`*-eQls7p55$>#M|&
z7r&*>7^TUI0M`+>QRtKJ#CHxw5^+D@0mj<52iQBK5c0@~J5B4@?bw0k)1I$>%Y8mZ
z#*8FmOu~|Td{CyjF*57=dCm;7>K6R)SuuyZ2{EugE*aMMwhK<Sg~2IllGc&}&4RRA
z%3L$1$eT0`eewwE>k7C(q<=Y6S$JXkNT;9!uzWw)pX73Y9`)^%1QaBTy)=pkA>>`(
zDkiy!Ir0c>J@}lN#pemlTQz-c`dk7j#nPYnrPuQ}QOD%pA{H8GqGq{$M@;LDuc9k&
z3(SOAh&vCwSn3!}v&UmA)6w=t#T=A!R9qHIJi*<;*&ql(?VyO@KZU{SF0sxc2u-O+
zi)x+?bk%HkG3?e7G8%bY46q4}kko9oG8IQzB_b+QU-&FLerjVhtL>y+nIN;LIYboG
z%AHpjIiN7Ep{C<SoFnvHeiF|9>ah52MxMwb;`;(@TiqeWk*`nbWY9Jcgev319SKNp
zF>+&)g~d0CSrpy|nt1!pf;~%*m(`kUEUnW1m~%+<a2B~KR>w+Z?s12NLVm7UG7@&q
zeyuxJXA2a+QthVEy4NGk>4Hih<+j)xe%HgGzzc<3xc2D6O$Ve25zgslOGCG)Lnf|$
z>p<CaWYlqH3HY<P%=(>%3l+vin|MKY>IP?ii@~DE^y9!u4IcWtgz1%sQ+$iFx2?d}
z#cyo`_ij^wC>s-_H(xSTtpW4R`PADVO?y+q26|z`66Iv6R==6=x30&rnx57(Ip(S+
zUVJic1H)V=pD^V^j;W?*zhc+Un-*scu^}#|%QiZ*W5>{yiYL=im>Ei*D#9ibz0SJe
z?WVWbp&as9n99l&z<)>%2m+OWt0tR?#(Xp!(M-S!Iyc)biP&~}2TcK5iF%&Vo*4h2
zfI->6!tQd%a(R)g20T};mOd56G)T@mrmQ?5=o9vDqRZQoc)?HIx8&9F$-fm%fU536
z<CVW!ed>ue{aL=krXL?sUL@(4R1Mogk6AZ38AZ>fJmGC<E+BZ{l5jCqDw31${t1c{
zuYZm7$C0HD@+m5uNsqcCcqT)^;m#rw7p}NgSaEE-Ct*_G)A<dH)iY<ys?V?(%r+e)
z^Hr+;Rw(sn@|t~`6#h>$<cPsvw0jdQ7=AK-<G)(R7diz?YP&7E9AF0cTrrmXS%q+x
zl^!V!KkJy{Oz}h($7-*B3;x|xXDSQ*3n)5TT65a}4+4|R%{pBhwWNr`oKrRvFz%;z
z0rq9b<%w><rrEi{wKp!mAB-U=V`2e<Tt46AnaKDbn`blu()NKl2jBdCjE-jX?(ur1
z88mDgr-s759VqdD8Ab<Rr2{BiPC-BQo4PoQYiik%Q+aF>RbfT;X2hdOa+Wh)|5Rn@
zlZY2)2HDLQ#VQR4_vZ^cK?DhF1+#Hy+e<ncUEZiycRkXDgDmkRZN0b-T>mxd<kw}I
z@R|%YZsEkt(v=>EwiJg+Xle!w{K=VP5Bar@Ef+M-77DVmBSLHFDtF@WNN(BQuJ7*O
z<f^SH`l?U(w<{)@EW|u{bzV2GMjuq9p=ju+aKlu~{GnfBP^5b~rmaxNBam2wvZa&D
zcuFWX<yCM}Sb>i42wF#M_8D<K21vK{8BbYpx~if%l)f`Q6JDC;gB0OEgV+oXX&9os
z?}<D#rSEBX?u7|QLjt{o!ke0O(zt+I4x#<P{K^4t=mM^x5Y%a=)>{AGApqYqtjyt9
z*@9vL1)TpkGXGExpQ<6Vu^2#0{@Cu3%%*yq3rHL9agN>bn#Rpy<77({Qd{Vw=i}nT
z94#)xmKkdTPXcD2K!_a$D(GKbcqO~VO@uUn9q_#p=~Z+;j-&0gbY*Y?=4f#i>X&tA
zHYRj365E`OUV$uE;Q)Z~PhXz}jhC0;PBMir;i=c;yhpgM+Hv;68h{SAIFl}0M+3)v
zTGx(xiCSMf>7atO20h{6J6xx3D5tKS=<Z(ohjSZzXv+9>V-e@;t8VeziG4eg(9y?h
zOU*i%`NJHq`X#lx9~4?FX7jx{=BrDrse~Hf7Qz2Yk7C4%$RdrmWP~SWhc4vk;QPwJ
zcs8f1Uj?TA^btDnY<za!^Chk?KjP_zwR!O<=b!>T`yltMtW)Xo^vJS5n2*oGffnA6
zIk^g=ha7c!LnYlKd&|@465-_4Y=R@SNS!5^&a)%`r&c8qRS=%-DBWRA<0uc30<eNS
zw$~(}zN_z^1C1WS2zvxll^t|#^m4Vk&Grn`J<kL=NI#}QCqf;{3fR5Lx8JL@k{Gn)
z{Mg{qook9|zmsc~f5Y1Mn`~+VMM0X`m3xr#w6K!`&wR<gXCr?66^#9y9|QrZoCffh
z_Bv#nHzGe|5jksZPUY4~zMTa?Fvh@&>hj<|clNe%^ZW{$J$&8i5s^Gg8Fs|m+hAS4
z|0F9W>;im5cq4S%e!w7b3hlYFu5-woi+Xk<iM5}{9Cu-!+d61#omR!#loTlk?4z(2
ziS4|X0w713ASw;lyB*l5JGHlOT5uoH+i-FNd2qK}Y%;>-&rUXaKAIgLH=4NKTUb6`
zHvD^bF8zl;w%_^RH$I5N{CE6U{I5RV-(KurHkjTw?w%b}o9CVW!`~)guhov!uk>vH
zVf<n#o#K)p@<G}<mWgNRIMkHsXZMowizUf1^P$N`qZMYhV@BlwOrh<dLeNqKK6(U;
zF2gBK4B#yg%_Cl8iT0E|OkHEL_rnhz{`2EY8;sDmIC{mGMX98Vz6#+I`A)H!GnQn2
zI0j8`^!Vie-t)eZ0Jb5E1~Lm?;b?@Tn5{%uotX&S5x_+uiNe}hXrQE$e?@fQ5SbN~
zu#_C>xFBnb$nkW{+|i|80nnw~Fd^&WE&5zXWI~DP-2{x&On?})US@C8Gg8!&h4KKT
zj*H5?Am&U0OZEw_F8Dy@_+1z1N>-{hr4*Um&cYlBOJ$KObFxqwtxj<7sN&3Uh%L(M
z{183^z965n(=Z!uz;N$!DTLO<#Lx)1OT#IFZD^$o!)T0>(qiYJ9Q0kLd<tL~G9mD`
zqh`u;aiMlZNp~k0iZ=p62vO`bYsN<bg47v&ar#7w!8$3iOKf>C2i&<wR-i-#B`?U%
z4wQhGF<xW=1$2jp-*7)2=~KVp05CT}>5#ieUYX3Y+u1Y+n0SpJ?RZPvXS8Q3rv&^D
z;xCbZuA;DS1yUn5q?s(GGOm1MKL_f_0@eG*I)n%k-i$F*6hI^6J`d{D)gMjovmzDA
zF_+{=j=)%Bqr~iqGl^`#T`i2^)0h*LV+*Vh5{N67&;xA%+z-&w8fa<iG9RkWKV&Bt
zhfSb_t^VkGvd~w$>#G9Pjj$ef|JordSOsriHBU2uxCWz!^m<L>($qA>?G~dah$tfD
z%=^HkZPq+N0_PuO8&5b4ZGyQTyLrG>PBf5&na<4@2FUpfCgvj_yHr4VqQE;%m>1uY
zt3#jDf<?50y=eFyr>i!wmPCOSue0j_@D~lhC<z#+z$0O}{PBbDxcDKW-U6+(Fc&*-
zjR;BLAJPqGn^=3HN&$6(x~h>D!W#6Z2Ihyq+d(P}01ynJ73e<+G(EMzzU}{~2>9G$
zdGF6Msp}b|`!9Pk91WCBC@s<0SXr-5TJ0ank&uv}_}MOj7GErAmIBD=S`Epz0}XR?
z=`6@vQ4gTFqLEw{p*R%&+<=h_TcJw=N!4psAAdu9ss(?b)&57lFc|WGwg3pk{~Y?S
z7K-sd`~M~M-$nlyLjPU#|FORR>hOOs`rq~aUzq+sU*G>XegEC`|7}-58~6Y?t^eFE
zGQ<DeTM!8Pf3^Tfod2BoulBzS{clD8OXz<m`oGZk-$nlyrvLxe_y58b@c#bK+lPnY
zkrC;M>1nAt99-O+uArcxy7qR0qMvql%>IH22?>tw?zp73wzh*yOIm)uzP{hafVIud
zI9**`o)0)UIQi0^)>2YZH*R(|HsWPzX=$S!Jm0<%D=8^m&Bl-lUH=OU4K?=m=Kt(f
zUyt$G-;*#oIXPdep`qc4e{o<y{Pf~Nir&-5=T})-S!c#ZkAKW`a!QJchX>El@bJ#&
zCfOJcoECU;QsEuFuA_s{+}vEH^5*8o#ojNbqN0M1tE8ml$mR*L|A5rErKP2=r6t9n
zr@K449#B{{-cj4oknpuu+R}R7u9(5zf!@>KKc=9dpff5gEbQw39*4BBO8!7GM{j-R
z8lbDMU#vH>I5;SQb+WrlWh?c(p7fEYB|4{A+%?hhd4;b^IeJ^C4-XG2&7Ut}d3kw$
zTN|%|tE;O@<?`~fg_Tw0r)RJFMaA9Sf;m-nb!^>!Z!Z&_-Q7d|{bJqv`uh2&ptT7?
zt-{8pkQW99hJr+&r)z2g0)n}Jb9VbZLef99mnIwY_8>~DtC>&r6%;0Wo&+^od-C%s
zWaXE~U7CHSrn7T$5IfS0HD^DE=H^O^eaJ8iKOdi;6A+M<mGwCR#gdZSSX;l0A_H99
z-AknY-cY7iRaL1FfP}V%pk~(Bvug~1!kU_z-G0b`Z{NN>eg1t$7yZvrK&u4_{o|is
zDvzX#CS^KDY-Y6VP3C+IK(!4{4P=UKj-{bekbVh4i@)wg9s1(7fqOq$ZwZ0uX0({h
z6u7ozLta&eQ@{mXiP#JY(};io*LvU{PtL+}(cPV*Wjy(sfIH&*FqzpV<L^9`*5=Ht
z+e#LON}9~{qj_ZLH=)^ZH1YS_xrb-pKS>OlyCZRwsy}{Is6&3WU8eeUGUf9{eVfvB
zOl9pUtFBJIzIOW8?pi_g&1>O6EUB&L^BK!VpTjPlkY|)A<@}Wmd3$>^c6opG{MX|z
z<fdjRIlM7DD^kSVGqf=?L&n9$W#w*WR@B(sJXZCi1xl~SPp`r|t-GqSGSrVPA_x{$
zRzf1=+U{T~%jtSorp@=I`LSFsg;_>TEkPrCt<#f(bZ`G^XZVdzKC3^aEF9V$$zL&(
zhkUVG?<UP4G~>K-5T&|baq*r9%kN^nYpHT|waFUy!67u+V8{Htth~I>?okF>x?lgf
zpZQI<%S*lT)36&`M0PgGzZQGa_vCt$hx4`9$rDf2?(&uvO#(u~GHyg~OT-@JoT#w{
zKWu^gYYM;Ot?4qgk_7_}b6BtW!6@9TqfN}W_Lus{xZ{VlR!6a4?HwJ+7e@(KY97)#
zziW<9PWtWoy@$@n^nK({x0gRo96T8qGQjoq^%Sh+mm?!1vB-qn7Jz2+X_Bk~%^H0L
zOGD(q&WK#d19A?IgzHltO!;Dh37eJX-){6Z6RryTJQ1J}ux)Q3biLo3*ZcH9bu*)0
zJJt_QVKJiGQ_g=JMka`6St~0mgX-VoM#skbNQhw6_;Lg%A7#L0XHmE;$*-@k5Ea74
zU%BUKY-2t8?fwT>=NKeOu)Y03k8Rtwc5K_WZF9%mvAsL9W7|8nZQJ(0@4a8%csshH
zqq{1qD>LhytbEQdPk!k)TA@s*5yycfKAp(sW);%V(N&D6GmV$4SM0#|{k;2EYjZf3
zIu_F0+zh&2@Zsm-(OjwBFht(_Ld^xNe7O6ag5^-;7<lrTlX>!Ogg_(gPGc4@Z(gI!
z0tSBmT#v@`w2Joj_Etn*4(kXbeH|TK|ME$o^{#nJOT*-YVlmWad-pejiq_!~&PxEj
z-#yyLA&&7nGUKeHxw&|~)o2oh6JQI+A*pj{_^05DBRFOCjr{%H-43NR@mesy6B-e^
zgH6apw$vGRc%2noKYXB!tZbXYoB>iR5vN@Schn%%l{sU9PGN=Am@_6_K>qG-z4`dW
z3j$Z_Ed&Gv-%n61e5oYkmP}uGE^WUOgq5g#|Dy?<M}Aiqmxb%DQea!b(9_X%=x}J6
zKtznjMdb+@15Jh1`_3#=z`s2-EUfPCH{$T!;kdL752YjY%1a&rh?;FCyLHmQ@UX0&
zUQTF41YEo8F=BEhq)y&IXou6T2&Jh;cVqodC=6O-F3`c_2nO&qBeRz$qaq{kV8=S=
z+UTzA8A!)&-x8P}@;01FKvYLYLci_dC`CnhKxdqwz2jdFt@eTT-4?*&9*<1q@Tiu^
zXHynS#LX?X?CqH#zydA%++^7ZcniP=AcRA!KnnryMR#?6Zte^=r5E4hYdnkO0}}5l
zx&uN09kj;EqcmwubR9mVT`NqWbp$yQD2AUiyalw5)?|b@GhF;+28$?<fWrp2%my0!
zKf{*;?ASi?etFO4JG^c@ejoM@a%fcPU#D#Gv9SXV7p4AdBu?`?sNN0PJHTly(TN{~
z4nqS2M&K|)AuOAR92OJUSRLV6KnuJHlxoN4^@t@X_t|+}C{v~Q@dGzprB88HM@?;j
zKfZ(G7H#!(>dNP%_3vNmeX4&jYr!=1h$mNCihC_D-4Tcc|F{;(7YCxyb}8{o2~dSz
zJm{_VkoI_gsCS3S`|bSZRc)Jk(aW^_5W6TbyxPazA9ARPAtZlVt&7fwPcD_q1mn8Z
z#es69yNUJEc#!?JdFM|}O_ev&)?Ni*CKu(Cf*x=LnTA+WL~0&q>?9>6xh>DPyPrez
zxrx(qaHxkP5ls!0OBbi5VLD?~NZF}ckWv^GAy67=j7&IGrlg=ZQIV5}UT)$lwZ*8j
zhY*7CP`YaDS!HvMjg7tJ<pNULEXTR0ApCvc3|_rD;~8ROG!3CYps{h-n&*i+Kv&wB
zO$MOfOre6R>%CFwj4S7q4KjBSBO)v%=VA!Z8&iM%DiB@?28VL0{^}nEc5UPGj-)ri
z+2rRxLqg29I=ycY9qyhLSaWRDYNNiSSMF`1Bpq^iJ>%bZem3t;O&%PWc?qND^h*51
z^6aBex?s*}hJ}NBWw^}Pgi*sF4<ZQ`H<8Z_$6q-~%?7w!;1UPP$;p{b#O8kO5cW~g
zhwgV$7W4M-!Ia$dgKAn?QBN;8C9}*j-ou!ZjSK|%=l!Jp&m|=deE;Cmrq{1C3Dc$y
zORSx{5&it#=6d{(QmdGr&-baa6&BM)u;ya7XEKjJ``w7<Bba8aTf4#Hv@19`c&sd&
z%hBfmi9XbF<!6s&t2MVk;Fn*L?!{HebM07S_R+qyQ;g-9361nCkLyt{cfb6bc?3;B
z^AydIyY+!Uz|}C(AO3QCQ>JMUhdcP!^e_-V6@!}J^8Idt=H}*)NW8~$Yih`nw+V+O
zLz=+i#U2?)R)hk`WMp;!kVZ$s2_x%4U#a<#P)8O;hA_dSqKi9gd;aNI%8ev`eAySm
zdUhFZo;k!nv7vOebQm4|cAk=Yt3V(jB@KC36f+io^wA$F6rUqrkS;p!IwEobG9!1E
zrxVa&sdL2I$S@(WVIfj>=wSM6i#8lJ^ViQ|q(T)!D1TJS$bV@3t3IwnhK5z6#}pry
zCg+G^fi*J74-%WSP^C^o4-%B!`z=wtdyfDKzWb;+(RX*^e@kDOBo%9nr}jq$C92e=
zEoU1o8q7SHxYx3jjtW)uPcZ-NJ7fCz*`p6>tqLYIUucrhtDnK8$NGI6om_Sd(8c_?
z`Z7@cV1X)v*GIC<(yc4Vu-(OU#dyA<L0Bj`l20Nxw$uPQg7g~N2!3Q_kx(Amm=Xws
z6<Ptu0LyiA#hFH1%3`1P&b4W>5h#|bMqa5{wrbKjVy9;kfk?~{EgW&(p_#Rkij9*X
zQ?|Ny<?fMs`5K-*;zma)!Y)PsFxa)ohx3hVb(F=qxrT|#{l+5qKl10+{O_gh$p#u)
zo59-VSzT1ca9P`B@zNym68?-~Crn6%gmt?o=p@E1gza@k=`=Fv_ejU?-=klU*rGa9
zhcFTlCpmZLPN<!x7*Zbe@qf|YbXa!Qh3<s9M{>?SZYZ7bl*GSm_`{P$nzTQxP`b~Z
zX|k?^f9b7NkqU{Rc~9vY%Axc(FcsozbIytTAwc6buT>LIL`-Zz@ac+Iqr4Fw{AI<L
zsj{HH$Zb_!thl<!M05dL*#iT4MO~|3klX<p8$yH})LNLPPftz^VoCoL5(Ofd16LV&
zFr=%X{%Py{qx<09GK1}SLa(}i=bfDDnbq}Z!V|G=`nh|0{cAJfmo_mn@+9Ub${!Tz
zGLTOdGv25WE_(~_+dc8b0`x^f!2rK8QtFV0qjpg$Sc>Sh`r0!*Q-n%cH)%7O)d(vM
zl$55IO4jrtiQJ+G(!i}`cO!Z6UoQSv8$8OdZh^TXX7Y^{j6oO@PvZ6A2zZpZY0J6A
z$vXjJgDFHl5@QjtWNvJhQz;xr8*Vk=5kkboWYVEsjGa4wWip`<1N&JsQy@7-j{e%I
zE~~z&cv{(r_eQX$q(Iwf#X6>zn0*aq?lft13V2*-ZAZ;B?aHrKE)`8UJzcCe?e<43
zM;leuXF8?PM<^6NNDis-XDGWxt6&}qvr=aXNS=F4w>Dg@P!KvmzDGT$3jXjELV*UD
zalUpeKBrWvMsa~sQG+{JIG*K~Zd3a<Fvge0K9eql5%ZZxBJoZiuN1WT#q(eI-dK#=
z)v}llwIT)#WT!v8C1(zl^fPhyfYkr16vc}SNM(9wWMDZ9o+?sJDXf6)%^U;Avw!PM
zZxd8U2;*ZcmP<>QtDge?^Bai~1Q=*Y1cEQ{5ul0lS6FJ10U(Du9@n&pzAIz4FjTya
zq&O%jRh-6pmPfyXJuIir^xoafshisi|A#^;A;8?|fLVlFH8&(!h}!f7J-F|1Rkw!S
z%{+Y!_Wn2(f);AwIHq<9_Uqe^h-|<e3NctHXg*|HB7x9<)$4vDldVJsMX&rOWlkt0
z(SSUs^}_A+wa5`&z^$sjWLRESO%8_quk%0(_TDWkb(ONt-l`ic{@-Kx;BsjEiVe1K
zHcBm{+*O#S1Sd!yw>)V&Xj0_c3vF;i5o~CHBWm4>t9?+f%0RZaOBp7d`X%ord5UcV
z7mU`cdoVcP2qIlBe8wOll$pRHV9R&ez}KEul~I%*94@fb_X7QD`;C8{bfspc&#OVX
z7d6&c)K@V<yP3QZxgWsJ?)aVGQV9(Z>4gP=QGP^Oo!g7l(!_|ZZ`g;P?Z)65mlw96
zxUkx#h$p)2SRGKN=O82Ei-v*rDm$Zdo>C<7h;8r$0?LOhPI7o{jkvA#=y5e5;}hW7
z_|4wHA=Po}_fOh*i4`4zNgG#mxe6=b;iG+`{d^F?!-a^ALb)S^9Z{x4wU@}KA_{B1
zQ)0)9PBmYUk6+)@m8Dl0fuiq4UtRS$&Uo*1JZU%8-H!N2l_I)jk`V+B7NZ{V*FI6a
zR+%W&fX}SAf*#ZeXyjODCV{SG_<L=>7T50f<CsxU1U%=|b}tDsbViD%<GzuL0mjxq
z#04q;#fs@mVJ36}_$}qTvV`ic621p|^+abB99yJde3A9q)L_h8DyqW`WxSmp+?DeQ
z$)T?dvC_G3RhR0P8xt5p>gA+F9lT?G2Z2`uAg|b87*f|0P$@+GpN+M)-s|8mbhbv~
zN^0q0TlG+PEKIoM>`^w=Gm8*50FhMAG*qgQUNYLQHD_ewBMI%_ighz4VjMztpE3_`
zRR0m%XV7(pO%S_<5Oe)qyScI&qwUx?6L<pf)S88HD*G3|Frx3cktH7=A7Q8)_vA@?
zlCTt#KtQXl4!BlJ#b{U6a+o?tl}SI|>9-yT<h_$mt_7TpF?NjgD8S2AwcxfYBP}|k
z*w%ODr;58wcVuh8gLmXR=NTRMesr#msE3k@2)v_E*~Cvd(C$t09Sq@qpl{d>RdFX9
z4Q&l%1L!wGxNcPwM}BfSEAn<)6FJK_+XX^K?{vgdouFd&twE5`7TC^1fd?bkf&~Y~
zZCR|3maL9R)d~Ngdak{@o?CD^W&<%JFawS0GaB&ia<-gOGJ095Or6BBuQUsHHuiJc
zZ?_xa>4+*`R&cC!_`x2_Iz8apQ6C#BL>x5jv}ArLuXor!!{|6xiAvq8D<sA`so0DK
z72A;JtvZ@hZ-3~{3iEWexgN{abwmYKL9q3Z>2PPUHC=s`)GI{nm8_rc&9<H$;26Wz
zaDx;|C#*>^2%z933(m%N|9o6tK8ssVg(!*regh%uTr=E4zv#m6JoSC=&(1siW^jZA
z`>&^&Wrhra2P@m-48SuxM94@^WkUrH-iQ9yj+PpLK9>2(9M180r|>P5(pnTBBuR9M
zF^S|_>550TzRE4bNAu-zKhymMo0b(z+F$pD2AC8;PNjsY=ezs?h+C*1&hdt5GG<pR
zQm9WQdHoh>lSQIiMmrtO_M(v7LbGHie$H^&NiFxcxuI0(M)jJ{Q*8^BLu`M52MY$7
z>Q4{J^Fp|`{w9v;Q4#!Shj(PR_{J`(U0z+bkf>!ogLo?lp?=?XJe@zB4XBjZa#PUl
zw7&G3*J%fIMtxUy-L<<muc`<C?@ng6njy~SEe-1b%_&H5StKB#{Y}3t^=W}guQfA<
zO>-tX`1e<CueRw*iuh2azFBp4rsC2hw+V41;OODCK70bcosd2Z1^~vL6f{V4!%OJi
z2=|jIQp>ABU~hwbLBT6om5jRJS(ee2(RF}Z5KvitN4a$bZ_}s;I(4o*D~JqD?QOcf
z%i1a4dj`;Lwj=S`-(n}YDam%QN$0xd_%iOOTQ5iaxb4zEmj64J{RFXyVs}1;3=Qyd
z(?kXf?wu(Vwci;iA{P?QG;+Jy5e`w$Du;kaJ!HU#%RYZNowu#}<(tp`Lpv5H|G7O*
z+w_1{3TfFgW@eEA8;@Z;mgP6Tlv^zZwk+jpq{tIF7|=)%0Vsb_9Z_RbzIWwSn}h=C
z{w%#<MK}$}c%gA|9uk?eiMf7|?H2&XFrxHBYa9ebGg0%3X{yZ;4lh}rLbnbkfo^XE
zVQT>mLs5MUf33@xYm2>)8HteejS9tjAQGj?dcGv}mU6vvRmaTMy9V{U7pQ6g<T_}K
ztVgD{njrnO)|3ncbv9^hU&@7uk-;>Gk(tBO!O3OZA5Lb?v>N}N&X?L&XjHMTGIQXC
z^AYBPr@kYj2dxZxn+&kqEAbfr156o=IdHq3C{@8r#^WdQFRB0h$B%bS|HJZfX#tFK
ze}s9z^~s1vju^RDmGs4Ho?Y2*5mu}MC_~xk<rE*ikfsA%81btpX;9B$6yiEhIr#D#
z%FFL8mVKX4Hsv1c1F6SZtm`l~G^YYi_yJ&`s*MouH<Y}8;ei8R+0Hg#`RuZfq!+7&
zCmb>_t4j-{BLMjlTPcq}fMeJ`T~f_cpOwrt!vmEeMqyPSe)CHn){2$OKb@JE_Z48l
zLeN^lLPFml{F-)7q&(+KRcOYv7we6##|nt5Yhu7rV-i)v$^s82sVRPy2zby91u6O6
z7CbKI_(1(?bgTVldy__}{d)5vP@i%Zk5yY{W>*~9!`}*czm%UwlLzWj>6T0V2;1Pn
z)M2w)1dh=gHToTC+=dyTPRF^PlzI3ZHfm=`&^*!cisl$jjnQJ?kLSzT^@GN?v>zQM
zc3{i@qP*In#n?BZe|8}FMo#Dp2l4wp{l3_;Sn2lnz3dGJf2!Cz1l|Lzno(L_^9Mpt
z7RHX0t7TtDw+HUa`sqI9BF(uUDLjXrq`r%f=AHX-78!irtXIxe<PR6yJw3JX&XZXj
zOR+y|ptk_$TXm+AsBc-u`$KVCuHTyJK^V}XzzvY{F-ncRnP&WlhD9=@pIkN4)&1pW
zckN#oT<SRa&;21h$4UeoR`M7lQW0Q1v3|nH`IA_%5XwbKhxdKF-rK%ET~;6v@^M=-
zwi%#K)!%zgax5=6v>m3Qr$U)?0hPbhrb8WTe#_~+sw%BIU_J;KG-+8#2`=M-&q=Or
z`a^vrT#2v|l6~Q|wtN~_`}?EG(U&Zs=<=?ZIIty3jGVz{sbD{m!Qz!*70P9f;`|qw
z(Q|sBI0lm;sVb{2Z6>!(Vcu9To!h-X9AUtbFM`+E8MV`~>v3rfs4|+5{Ya2vgf0kn
zb^*Am1uRu+hakNStBLykq!T|S5UW_=evRk7`UMfp+cA}mKaay^@!K~Ts6U(J9!GJ_
z-)nXIwV{&Y*n}{=G)Us1LV*PX$GfyYlV4Nn^Bg)Zo7YB@sUW~^(3NR#w~{DiJHxM?
zbl+eg^>#$^hjS}5Ylad8==Nc!DdK@+-@NTq*dyywJ7xS#HbZlx)BLbNr@|l_Le5y|
zh<)SL2JRerI;Xy^%O8$gPW=c?KtmprX}}bYO8MiltnaxyNj}72(5Y3+ZVs!M!#&&m
zD;^Q(xxU7?ygwII#GO~ZN1#auL;fy9l15(A!qBE6M;D+#xFUc?^`RCC6hw)Tic#Dd
ziJDeIfUW3WFg$IUrXODGA|)pqPi49~>_k0MQ1zzpH$>!Y8`xj7G{{#(5<|0(WP`~q
z&CD42+()ZNvq}b3vl^C6beb31r6M39Wkdd$U)QUwtD6PpIy${%Tv}T@TR%TL^Lw9|
zi2b8{Gu{YNXKln`-c(suHp<?sBPkhC_G7fXqC(!0o85dsP9e3arRCl@pQvUc4Wnox
z+nUA8QBoo1a<w7C_co!tv9i2;ti`r~6C%3P(FIYykC{$v-uEOyP!M9e5}7A*OTyp3
zYt*TZ&&<kMzbC$&mL3k`>;!2#I6;s}UD65ZA^-d5v%D?pjonGi_Wlzppl@%l=v>U+
zzG`%|PDa>P-TW|%@_4Xb2<q+ajT<r7ncv#h)-`ty4`Mak;mrdgl|C*+y`-sTMspbk
zqIniV;H#ws^3Br2W9cBHAnIbj)KC&J4}&x!jB{pE%(oS5N*My&{*@DAO%AbWabcm=
zfiBo6jGlpE*0IM^KD$n&@rh*pw84-Gi6`l#<U3{FT6+c&S25d)yj|}56>sx5lMGk}
znCH^m+#YU6d%MlLEHa?nPLiuGb7QF@B{&$=ZJNW%+<dTJsbCbSP0#*1(7F(AjK1bt
zpT%Z}V~{C!m*7Fn6@uf5cdg@j#hdIsdT_;nmo!9MR|a)e?Hz+v4$5gp-5g+CT+?YB
z=5(8X)R=#ii-Ha0^iftmY7p&d-5MH_SmQj%TRG<Rr(x&+_5QFAj6GFCZ*cj`xF!3F
zbG;I59%xg)+5%s8!)c!H9i$<|D;o(Q8pwb#Miwo$3?Jrlm4_0#Df62<Vg;6zMGr}P
zC#PS1dBXUmA@_dFL^wDs@<@#))TZY1^YZ{N?g&?B_EyfHT~OH|YHP8@VRbv<!R46r
zahR{{>N>N8pQZee#_$A??nD{Jz~Im)wt_A^n)wrIF*O18Tnd5e)8x9YmR2oaD^{w5
zZeU;!&As`c(qWi&IXNQURGDDM)RclMMJ8`y5L@_eAKTG)M;Ac2;Ebxf2CxUCbgj9Q
z-;4Anj$Dde9>OY*(zvx{5HEg@x~cZ3Jn%Yow#B5t-)d#6%Xhv#s^LHfl$nPo%3<%p
z+0TMlpDB`<`*3Y(V?%F+P&)d+pq0r@c@g4@8Kb_lQ*PVa!<q`+5_;022WtP`Xk$k}
z4Mho?dVIlGesG}fa7&*H*t~WoCLsb83dEmO+<(tt*9}65XYQa*AlG(0l>fxW#TmO6
z3OW>H{50actoVn{-`6Y)cE2L;cdZ_$uENxci5o*$;JTuEl4Jo#4(g!ZR?H9Z<eMpm
zWma9R{L{<1&+QiBOlF<XBW-a4fdknX=iqW#Da7|ge*AZB9G2L+*ZX3;=@nbGHgk6J
z_STsW!h?Q4!h(^!y=)bP+&<};OHeSMJeA|T&m)I8@;|Lh8#r|HoFJ25CBjX`lixfR
zJRvXyH3f%=1e)za5-C=a<GQ@OY)!|e6|M?gI~A%LpoeD~^fY3V*foAZ^s{@cEJlDg
zKye#99`Bvm<xa|w3TbU2Me@2wW^*0`5nGkJk`R4^C4|@wjml!!9gTn1&6XXu%0*H*
zCRsOAi9ec>@<-|57Ta~ym~uJnOdo0iKfbIlx22lzpWNSK(*<Cg6Ta2J<-7$A=7UeR
z)1s?@QAOH*r-4pbQ(c%4kg7^Gt_HU-Bpv0YNA^Kn-NXXm(t?fXKU3kNR4;(DvHLB=
zd0Bs&ThR_X`N7PL4m?pv#m8GbATcmLUYz*mm6VKjC^#&pmGH4T*hx!SMU%8k&-J@=
zK!-pZK?oxo9qe?P;HQ}9#Ky;~JSmjSPH&n6gpqgbin6)&$st?_^vi$F%2x><Ne6F=
zAp<~zSwieiC<X6lvJ596Z^jmZQL7fkpZ}|7P*u{hzb0dGigh#)?=<qm1;oFa@L)oS
zjXp(6L{*f<7aeFaLi*XsO8zmYx^STagnLsY(zcDph!<@s3f2U*71RDO&{9H&On$F+
zn4*UZbI0xlMuT3HL_*D?{qR5*W=ceBJw_)1z%ndU4LW+9t@!nbc0O(%Afce}91lsO
zVEt2por*@&IvmCxp2L>JzV6aPK}l@#$Qf_~9p~9U;hxv&FI1ul^9V;ih>nbmWhqW=
zbtz5x{mh8g+Pb9U?6jcsy(UlkR__U1{x;MYJ8Uzl#YhcZ90JG-)z&&eSj*KSlR}C}
zk@VT9Q5r#O1YZc<s+<zi%N5EZhn}3g8fO(C>mKtlPaqmVLUx;m-Si|q<QkSRi$c(U
z;KUR~+90$La8oLt{z^hv#D+E8HF8dqR;ki3<)X0)yVJlQ4rTc3rOaohIZrluVL@GN
zo=JYq>k=LUjj9Z1g0%tlyLH3?m7r|-Tr7kdMTO>rM~!?GwvhZ5MYt^nz)xet`gl;_
z+NPJKRFWZz!>UHqAeRJf^6T6ZYqTf1QqeP+Yt+Z4>B6RCQ=wiVDN>&uH%^Ij;`si8
zay#?X;ZBJVUVOx%CHq4r2}4A>2p~$BHNm?2CQ>Mbm~Y3AQ5BpGk@VZ3CcROosy6wL
z3eAN@ot7MJDy;7hrHWK?WhXn%Z0R;V3#Qe{+I*mdeCqb2u>1upsS;VH9$WOE_sCrg
zc~qAf*Xs1HbW(@(EC(JrU1$=yH1Iu#<?DG5tBXGb`f>UdW1vFKB+FDsj;@Q&`CDs6
zo0<l5EL=-!6zq=}4IIVY*VR*YyXw`R39e`OtKZqe>I7RZPtP$h?d6n7^t&PSe?X5N
zD8PTQ59t4)H2=juK*0VB&iro&@&D+W|91!Se-V-Y?EnG&9~|;O)aHNe2+02!9L&zn
z&VkQQe?3FP;l)Mujm=H*GT(rJ_~GH<5g>?As>bH~CH^SrH%&xHD4@z)71JoOg`b|D
zUN$ATz5n>g5smG`Uv+u$A?u%5{II50qg73(Kfe8$_f{ABp42G$+dJ>4iWcwby>!=o
z+1FTZlb5e=_K`zYPbQCgd;RC*)bTIZ>299y=(o1#<@Y&4AcR4Xot^FM;eiS9YjZnr
z<YPK7P!_t@$laX-_@Gi;Rz{PRon8Fr4~471j~`huG%~Y5r|;(OE-oOipfI$vV?+*w
z0A|<Mv!CC<!NG4)WMyTQ)zvY$xVUan(9qD7RaNgT{ml}hqoXtO^ApI!3dYCBoqc?8
zN7vSL)HF1PUSGZaJkQV1f!GC>AQF)2u>Shf^m&w#m-ppnq^7Hj2L}fy?y3)D6B6x!
ze2A~FFF6zxl(L2fCXg9XwgOh0_4jLnp&kw)VSHU(-N+!Y&&ztZ9y(^|)za3E0^%ps
zn7|M%3mY5Sb!Jvp^w7`{@w4yt<|Y9G0)n-?c|I?YelW4MrIVQjavP0JP3A}L-M_uJ
z*VeLL>zo4v1;@t6ReKJ*zIJzw<3As}2L}fyw$_%HvB=2Clno7ufTTdC<rE+F$XDLg
z?bVfo@X`0nix>H6rV%iT1Pd9^;7TO7jDCnI^eL?rN_tFc2_6CqSr1A<=OaA&w*VDg
z7&Hnj1R53^6&*qh859Gcj0^xMPn^y@ot5iza9roGG37%E{#sQp?Y_@tD=qCudur%7
zX86;orGbn_spr0^Zk{a9Nz?R;I)U#_sw}u^VXsszxL6IeXu(X=!1nJ!;{v%hW>m7m
zk1~9}n?4AK?pKSN^s-N9HBwc^u7^1l&y+D2C28|Au?97iQZ*OttFGs*r}q7L-Z520
ze)XN#<9w!dy9W8T_p1&#zOR@4KhYq6u4>aXd1+5+OY?keUbp)J=k4<fys5w=YScuu
z%eAx_J8%BgFKXzf%G}6cXadg<<IwhTH=do)iRv`PbDXm2x!u)U)v~2iZngNP1()eE
zN|By|W#Cm<X}4ff@Oa)60i(V^FG=L@ri~JL$$L>N>iu?FI!>yjxRr9*yk4z_Qqig6
zbeO7{<}+6uEBw`;tO1X97KQ8Fa+^k#?}u7r<y;<(ZocWhY=3^EBZ?6|KE->zab&Fg
zYu;nSS<(+43+?@N^WS>lNnr%$nPDHWklPo#MKO#v_zlq-lh4g7CNXLGSV5^t+s|9R
zj?FzPd*3X>_^LZ=wlxeb+X24X(izOVgWpoUS<Jg<6*Ugh4Od?&jOY#>7xl7eOzppf
zuG-HTf4h!4M&cxy@vrXt{{9W|C6MQRgad|1VouqnEG2XB2vEfNX>#!&X~uqOfA9~|
z=fcwG^R^%x&tmat6@rl5IZZ4p)Rk$h)Mo**SspZBbuimBU&8{y@D+dhMDEwJ{uOKN
z?bG>aHQ2PkJ3VWo*%V4pWz{<q)+4(P&t4?i82!SgT2yURo~E927^$~Y?3>em99NpI
zLz}rYsJ@~pc5>65Kbk6d=<pi$JiQjUEB5Wgqr0b5Nsy*uVd^lUZzTX_cY=WL<EFpc
z5$sCf{X$iNdlz8qaOF}JU_;fD3FW%?mbrh^)kOaL;d5pKo5*lxs5n7D2aJ=TBk(lC
z3D{=oT~BKjLfeE~YgS|;O40UV8cTsUY)@DIJ00gWJ>47L$GLXC1|KGt+KSmQCRTg!
z*_k*UD`nT`QRQ<GC=T2H&kP0pCTW}zA4!2I$>?O`|GfB!><xip;D)R0=Ay<gcuaM_
zi?-uDI^y&jBv+1u_dO?m&@suh0rmYf)&Go7F^|tp(ahl=AL_jCZLTA3c77sdy*E$k
zpSYTY@mZ*j<dh0>Z8(W?b)PC;P<sb`4t}#W7xJL`4gj1@nM?3GoX0Vo_M)iLe0+>G
z`0z38J=X18Dy6-FKP9~<C8zm8MhiIi<jtKN#d0!rT(#S_z3jzI)^V^R;YcnSk6P}%
z0c8qHgT{Lm0NbAKn_1qzC-X`F(odvuM>|d_M15yDurve}JnNYReLTBb;qiTfT1AgB
z1It0h513`ViMk6^&qKH?K@iR{jdVJ-$Z?Z(Ind)^D8ikNC|yx+2|nbW)zUcCuOFIH
z&WZv|SBOD@wc2$v_|cztVgWsR0!ZWbg0`$@J-0O|W?hFy*%v=~%rBdk<3W;NXe=Yc
zqTq1yy$TZ=_KG=(Fpk*5E3-K+kF)&Jyi6}w>EGcuO7l1y6AOCQ<OzQrSK6D{5y8cN
z_p`(joH6-&i<|x<H<HhA0%{#AFnDsc9{3lnN4&z5*65|qPuqckA>wd(po#kj$%>f7
zx<Okm;|%E+Pcjlxw*0i0&!NG<Xv+9Tao1VmaT{+VEGmpz-O*wXq4X2K@K{d-p^p_H
zjXZa0`3+mycK??sVx26DW^E#TB9r}@t$#`Z#Un_ja}EE~O1}ae=-=G<vG{T4VFJx~
z!LJuo>ZGVhD14`&fRp_hpV($YA`<$7@6uck9hiE~$Js=%C3xke4NMXv?VoRvBz^NA
zWPc)mf0<Xq=w3|d>1yuV?L#99emH$vBH4{s6Po;Oy~VS)4lL=Vx^1r(C|M0KB$Bpr
z)k%=^gpuNTS}|=heXf3dOi@*!5$4y~v}+-BW;(BIi2rU0H6%*4YsO`15g<Hm31wiq
z)-8l<kg9z3sOmn&`iD+TbTQ&N<UJz{MH3`yQ&|<T#xs76BGr*RBnME^DxnUD$^caI
zKW{X^2Pa5us9dxok{}}U=Z68>HCRx6v5sHZw`;%b+@K#>HY^ezS&TgBnvshW?~kw^
zQR3<!mvqzLUc_J?_Wu^g%h0<gMNLm*)T*GLD2i!5RmXuN@zt(6`!{+wG8+c)5jhBE
z1HPsmKIteQ`??23M6h^|TMRa}&bwa50|!i9hq=J+{~~=z;vLOe-WTl5GJWB0t1!FA
zu(B*24^0x;69e`t1K#EG2l#FK!}anvPC{+OWNiJ0a4fAf<*<k_1O;N`YnvQM$ftBX
zdz!k}Qm5ZSlD)<`S7Y97f$N1T0gbA5B`;)lW1xiW<TQdKO6oB0LS#FqnU!kvzM6ya
zc2Q^Bb((*vo^E0E@Qny1k-<taFkAl;=!eG{pI$(D-I!d@zSbQ&>~*h&d><8|2bea=
z?$-@ac9YUE6Qq0p;oK;=;@8T0m~5`nb(r_;*1G&ozW<1e+e5ltjlAgI7hTfgyRwIE
zg(7mw-HtJL9faqb>RL&`MpnRD$2vc7Z62~XjA1;>w{Rlz7&!hk_>M$i8;m|c`@Z{x
zV{9#O3;GVV+=YFkMnaZZVa#8g;?BP|?exF5Hh}uXT8<5j`XqxUnlJ4`fU;HmMM@hJ
zwbUC$>S}^WhE5TFzY8ozcaG<lH^q(bcE=WO9gnv!^c!)wMe_Q}qNIKX+6D{0K7B*A
zK+Du#U@JE-n(m4{=W0`C_uE(fI3ry{-QI1_mv;u(OQjz2i1Jmo-jz?$bp;|CC8#aX
zI%zr~{5#5b+H*)@GaE%oQG&?#te8k~jZOOzxF!;<ctO`j6!=tV`^Y||Q5k|f;9}om
zIax@8y<q@4((J?`Qez|xYqG-00;pzSqnfC2!b{8YT$_#f9xKM?&_m5%Z|Aav(!Zlq
zCCb6XWRqaYIfe@;0+}Nu3BAog%~n0d67k72JCRu+i3=y}w)KJmDZUVqhTWQGwq&M+
z;H0IBq0J3bKj7+=UfwnLCZ|fxR@Wf+6ZIN+O9D6Dg?iC#kxhOIQHPM`Ro9Qv>VwLV
zPC2Fp`Fo*b28-yq*q8$QGKWDvWMuxM4AM}7x5-t@{M;f#!Brw<n9(N@cvjCy+;?b{
zv1$#edE%8;PH<OCf#7YDJDMyJ`V}?Ljp|*?)6%xnB&1944-@AM0KM%$MbbCY9F$s8
zvv>Lsq<6`cL>uQi+v^LJU{-)Y!`oTKFyd=U^MC;-Zk-(c<SFkUib~GPgn@req--!h
zwb5(Wb`;s$nBX4MM@Zm8508oj3*j^dy67dE<Nm%0hqC<*IRaSEnoY%E;ADeyq<>V`
zM@UWM^9~A5DHnRpErq}pIr@uUe&u8(X<}=NWH?#%xb0OU=cZ=BC}mVmK@W{wRq1VM
z#;V`_BnC<*oXMZINNnj1<=#jpnv%FpFO>zf?ST#G@~E;^Yb;USS%96=yNN1sKuz0G
z))hY!Vf(NiXv`(IxAA2aftdrwU7hmNRaOoq*+_N!Svj{Ptkq!a_wew9Ehj&#LcVw<
z`!t|*BD*s?#11{6Wl6^tg<TbW{C?5`{AsYJs;TWnU@V-9`i!)?esj<iwf3L!3e^t&
z64<a5{w`drfyq9uZ6ykCWbaJq-yp{oy~{VSb+YCGBCd5iwr<?~L0-!>%&9}4FI?dz
z(_<5cmDa&FVt;hceLT+NC0)lZy=!(f7SRiv0M4KnuJ6d6NYFj^msW2XzN75Bcs^3j
zeWZ`s>*G6bQ=%ZA?8WYvpLo*`hTFqEm9N;Sp0@`qI{|l%?>EZ}tb6v$kdcZezDuz;
zKO;n3N_Y|jBLMVuik%3h_gbb<d%{B!tuhEG@2D03h&H&M5V)bU53zPJFHEJB^t3*f
zp}Z+?;RAcg{;l3Rdwi7lhe`vV_h7W3!A%%;&^&(4cb^y^gOSLIoWM~<Q$t9hsz4i!
z^pF>9lAB$N(xPTi5H2GL-xhgM`AM;oypsqdW&AdRr)ftgt4<7p@D}?KX+;T&ApFmB
zn)pBzHNBStB)I2U3Tv0*UuH6UCL7G~l%yfISop-ZQXOxFKdH1-8(5_xB>K5@K;%F@
z1igO~W3<Kd&0O9y4@!aH8aZyT{s6Mrea(y1Y*{2w5D+t^LZuHyCM6HRqK-}cM?!tD
zO3QnB?SfixF^9G=Vb~)@=>m3Vy7g{ituQ>$jNErs9GcYm)lZ+zf_Yx9q{vHxC{@rj
zVk!yC0KxPg8~6KHoK`SA2@Yssf<7Z+a?l|FGFy6sm^?ga2&+mTK);O^79@ZB3@!Ki
zuDaxT!s5VNb36Rv3aEL(0;_6;=2<L7yclYTS-C3+`tw58ZY`<{i&~V9o%T;f@IQvK
z`ri38=zi<%q`*peKbPzJk0nq+nHsa?vX@53#9@oKYIa)Nr5_pH8HK&w_1b{vw9M=2
zMF(p@(jNlsm)=U4GwrW-lY~huPGi3<US|wynI_9zuv?V?`P*4MEZuo77FB$7*Eimi
zqbVBdHkB#d=!m81ACvsShXz~ONRc3vSZJVwJho)ZfKj*$(vZ@kX|iUck0XIs!Th?-
zO7ITNm%**re*AcnY+C<W`R`cp=}4(RUVs4764djgjtx4Gsh<DzHDeORIgp~I%8@&F
z{E=;IW2QfOc4;^*$rju1;hxP6?G{cuA}2l)0-r8(x%oj@QjxbleM4^5Ll}rmI_$zX
z@1Q(#R2xH63njfDqgDi3oyS`A=LJ#3FTgMN(fG5u6vc4r@~fykC-?3}@fe2sh>n^P
z(kC9as{=>n$Ag`t_DzxD1|aJ2P_ZV|-$*U$NLXliRzKbayHlHF`L0BL?>hK?Ia}2j
zo^$tM#3%69l3f0==Of17gft8F|5WS&yVWPe33AujeIX*zwChhW{r+q^)O;JvGlZ1O
zxY_Gj<*h*8tfq^v;nm#S-2AigyDM=n37HnjpQceMGNl#uc|o6g;XP%+APHAmT}mVp
zwdm^VO6B^y#i-B3dFpvGmlxcdJCJ)~g6jRE>q&*DVR!|)P!tN{juS}HX7jj~<QuU9
zfyiuN<jcHLtL|UQugLv1``v$GX)M4{Cmt}An8ODQI*c+8IyZi~-tG-L)22>lvJF!z
z=Gg^Dp;2YwL)iXIq7Gn<%JI!VUu&|J9~vx?%iJ4gqjNTfZRBQ5GpmUs<X=l;)F0E!
zXxX*}vgc`i@0BeuIlYbk?;hhBKnNOmmCM6;f&rbtxZ$|PM20brY#ROTGx!9?NbNe1
zm!&sdtv457qM)_|MiCzms+VpLQ?&84o|Q<T;=F~<^GX|?gpc9BEErsnx!tLkru0m=
zL4A{#2e@w(j#^fFmQ>?*<~eMav>-o-q52lKt~wii9&N^ho^BZKlU>KRQ;EC;mmmyZ
zS*B!koMGdql|d7)1M#@ErK3<)IcAr;T@GbbLsIHK+=waqcD8qv1^NSiID#BRG@0wT
z8ZMzlULz3wD5wAu)R>Z1Tx00I;FsXeE)}%-B?FE54{XfLM&)T)N!W#O6|uc=H$F!^
z2b9-5+vd}=pcjJeEqAP@2r^r{#sUd)t|4WxI01nW93?>mZv{01l8O#noo&Z2g-oqO
z@dUOQGx)x}I^ZXoCphmvHwpvUG^%vWX{`qM%jHdCR~lfK+knBzdiaMVRA=WiOy8jR
z>c->7%3tEg+3-*CpA+xnguo0imY?e1&O}E#m)0j{>L(1r?yQg=cpXso*ez=?4}kpL
zuei5gulN2>&YHbCT2!vFw{!_t8*OYgb+Z=C5`@Wc{G)5=dhal!ushg9+d;{bkdrmB
zERI{9a*9?duYLBQN<|a?aPFdPP)AqY;up6g1>ko<fgphmSU1ofeBj;Y->IEOOgB-j
z^|29%1KlR;Ji!ch^zZSpcWB)^k7vBC`OA>*majB5GJms^Fh`p6+ba=?+$y$32}();
z`YRSoef<5`uKcM%o&U1qnk7bIvVXYSEXvP>p(XKXBeyTI+?p4_nJ(Sxe0pzHC?$g6
zKH}!PH;-K_G5bDU<Wc37-<aZY+6i6r*e|5!**Bd3zz~<$cRW#XgMLVOHEz)obeY2U
z$H!>caCj8ex2)uF%Y>yW0i@C-Vz59x5q)NT9<IPWpf=jAtxLS_49K{jBS?SWe}Y{1
zf9p+Dt<BCH#`15R%oz8Eha(ca{V*w4FcA}(1*Y=?FN8s(JP@j&T~~T=IC!vvklbm%
zRl@kUu-Jdi1M+Zva9u%~nk@Kgz)hP+tn@gz5F)PvN`(dmS_<|v7G;+|78VpEUXmQ(
zWOvrij95KG7lK&X23Zgr%yN)NK9wO!z&8J53ECdJCLqllWdZX>XZ<A>$E_?JuHD2)
zGE~t<$uQaXOoLh77dRKhzJ${fm51Ahn<_Q_HJ~!03El>=5+O@?y#2~4yZ|R&3v!C#
zIVgh6I!zhP65qe_tPIMty!BN_EpviT%^Up~<Ewu)3^5iW0X1~bYgf%ljQwNuFiODv
zy0?SprMz*Mwh>3cO({YZpm2l8mv#tC06u-=<8I@Bt#(Sj^3<jA2bX_&sN+U@Q`ErL
z#bB20M8&N8j`bQTnrP3}#}1_1jmkhj5a6BXbspp4uP}$mKgho}bd9&8hPxm}2(3SE
z8-_UI%#^+0qj({mYW`%9D+*bQXUsOnU%^=M<M$bBbr$(G)xKV#<vD*L1RqSG(;<%r
zZ{Pb#iosj0<<1bcF_P;Zl+LYyTd3d}{(`r~8GZFf{xhb3rg^OM9vdJX5T2){(gHQS
zW;zW;;G~g_>N4!B9uBj%qwD^aMR?8P-siOkFVvGL4CP*x(Y|$qwIllU_m0Mc@XMS?
zL__BhvOYwB6eY_3kczK3kl)znH+tUTy+Z;TwFztblG$HE5_b10rAp$&F~uZp<q4NB
zwe;As?1}5rpGI;7TYdNH0f|Irtz|FB;zA#pv^6($0RXqZ0vP#{;b$2$Ri%Q4$TdxI
z2@~~DRd?g(9k8e>XJ<u5^IB@+oHW$6Ei-7j$?nbVah<Jyr)X45nV+JjS@LH}8JEwH
zhqg_&Ul6~}jFKuV+3s~q*v<zjP2M9FGswD`zDzf=+Xl8E32f{5u9P1SuTH+(<E3^q
zw{bFmYFr!WFBi%hxt|2pACC1hS9GmCyr`%tbg2{!3(yBS7j%T#s3H8WU_-%RfJcQ*
zhQ$r$-FIdxIBqBl@~!=qY~`Z|cDR8pw5wFEj|nc!JZP!!d|oF+i_R_L@RH7CICVJH
zKv=_8@SVMLzVzKb8a};1dEsgoq99;AW$+58<XyTK+}~tAjtL*rlg7Kc5HE{CJ<V^m
zr=S?FQwh_%5rnnl1gsHIBug@QiUP1OG7SXfE3<;V)da~moCgibuuqbk`EQzn5NJUm
zQ$+^^EG=F)l7i8oX7cQ2ht0D^nkIi;NDLLPL~pbVP7+NlX|Y<3@-MZ;ptW0PYMoON
zq3M9#zZWZY;KSi8Fh|fg&NDmO?LTrP-9>PM11_dVisu8}r%!4{8U6A>Q+2;21P=jN
z(h(p2Uhw?V5d_knsHFfdpV*M<0%(wM_y;4kE;^?B=eNgm1T}-|f;R<->;c-KYpH>v
zZRiCusTor$`O%MnH+=8k;DyUCGx2p1W5;eyg%J&mp+_fpS8Trr7&)Qa1_I0ogt3@d
zV*-YkP70vLcdq5LIl~a@62aKv*8fQAxz32D<GsgM@Bb6%(1$)roUN_8LGoMpja1gz
z-@@<C56adl2ZA$Ws(u6SD?<hImdkUrGn)MELr?caxehOoz$i9#m*EGwDQzT;90||;
zeMaryLgPcu@&mWl-Qn63Y69Fh5?)l)DvT+Z31G<V=oRoX8~jO@8T1jZA5P@HBYZf2
z(n<1iO>@4Y=LK#M#&jAK9^q~U-x<zV-0>^_Vz~WkZvXcZfPd>EDvDa;#MyBEyHfP|
z7qoMrB-NNPmq?ye`y346D9#mDfYA%e#PH_;te@^tr6`*VD#G^Sqk>zyX4h|U1}U)}
z#iQ%l&87K#CL=#P*_vD5QO6Nk`LxGICi3?J3h~7DmKVvHlp^Ton)ih2{kdQYV>E5L
zT${pmDcYj%oAlXpa!zfiw;o4fi0*+rsD}*N=l(BAD9k5}d^}!h)a2LO+%r`Z*O~Rq
z?;YzsrtRmD&86>?xix#(xL;*wiUsc{E^uGH!-Sk}CpUplS4EOZWYGP!-*FV<P(=2b
z#uNYF>mFZ#E~UJD>1i+>(YldWe=##P5yfyIt<f=lyf<rQ;Gaw;V^AycigYVw25+t(
zJUtzVtsUkDWoO*jZtv7zD)TVIoh>2FI)oe8n^<O(Am&L`ZBl`Ls9qru{Q;IUHq-q|
z5H}NQ<2aClh=@a1cn~>iW|wKA8Ru4AFVR=QQ=u$wz>u*%J;?MW;qyKb4qI$^Z`3V{
zlhzA(aWDQ(&u;n)z2v3IjnT4J$E$NjEd(wePd5j%914ik2jV&8zeY;C8mH+O5=gt4
z`vub>XS2H7S584}2BGEK7<Vly1(0}fVk<4wqkW|JDNAfqEwf;WXs&m?Or%TYH4_BQ
zifeA0STH$^4ZQ9L-kzo6`8wuaMwTjOR=wd)Tzo_LTPhDZY)e05MBDoOrHIT09WA>j
zI5*5vP&(o6unwbyTF48e?wFV7+!u8|HGzng9o_TjC~0qAQ%)9K@JOb-L4?nKn7(&t
zXudTH1FIbD=4&1XMm;#4Fv~#~SV}@vWabe&x7zbY{#R{nrK9>%7GH$==q@1LdKl|H
zP_OquZ#*|k>5RJ-^#ae02aVUka3OFT$soS$%zNOtXRtNihluy*xSNYz01_+zmZR%r
zf;S+>T>p`+UG|$rQg45_7Nq~_FY$Ws(_*@SYoO58mjDMxsy{-be)pVQmO0-=`gd#S
zhtYR=TRxJ>lI*sV@{RF9LsuM6q0*LSYuAT{=$@}1x{pNq#3@hzLz$ALJ5uHHXW4dC
zm<Ez=v%z@H-Go=jZsV#WKF`-N5{sl|@$M3XL~K6V=YV&ZJsuf7`826Tl4-!RoN?QX
z=l)H{8r5(m8<mMdkI_KmDL?<p+pW*q^gpmUx==1Dq{@iE&l?0miFy9x7fxfNQFVa<
zk9}L*3${x6Wz)UH>%mg)BC5TmvJU>YGJ`Y4d8o1NoM`!oN!jyr>k<=~bt$5<^u+mG
zyOo1@p1R71WFM%ta9QjtOsfv}GEg1_h3<$;+9y@TTEJt@9UNDA9W(g6B(AC>gCJ^0
ztAR}r;gEYk6Qn<8S9<!;a4hcTbPFe6fK6!E>BM%Hp&Rp?z~>&h(fd+86T2SaS^hyT
zk99FFc1CB`&@o5%3B^}hMxo+IU*M>5C#`=bhcBgn&h_6ye|UNylp*rScC98vj^P#1
zju;rz3L+kHO}jr5GjiM0plTWFZpcijOOcNLUG5Ku(<^WJJ|hXnv9oTzc!5#2?|-3W
z5YHfhGx<8??ZBM#R|ZJGqPxO>A)^{FyF=9U_u9e~0oVUAhL{FxY@WIGOB>SNCH^p~
z?5)YIRTmFyr9CQ+eX*5e2aT>bS;Y)k{sbA~EUBdvF?ax>y^Cr>ASkT-g)@yCG|pR?
z{c%7ThRLk$iU#tRV~DS&WcA*byqA;L-s=P8cP6F4G*sicPtflrs4YXo$ir2iXT9XV
z-pEw1pvZ^QYj!~?Yp!8B^U$O?UNxU;wZRM+M&da=IDtoif9PsV!$REWS(oPNx0y%%
z*n6@KMabYCnDaSW5nUQP{Kq4=pfVhkJQP#-OC(S)dalK%?)6IftFF&6zLQBT>)0N-
z2{v|CV;mG&k8i9$9Xa~kd*WC`Ia%IB*)AA9?>*~)BV>fmbmc5{XA!bb9OjBoMK;E(
z!_?2_(yr1i@xXyV4qQ7$(>zImmG`%~CAJvzb_7a2lHDWt4UX3<!hMi2N}|e9>_)K2
z7LhQHS(BRK@JBzdj{ydP^97~n5RMk8n3;6UW;;6{%SjB_>-XxG$6h~C3xoYK(T5ri
zBS++|1^ll{+xo!8gIfRUfI6hT(0~z3UtRxe-X#?du${IyLS$_}?>dom+~S%gp_<NG
zR4jI1DI_T4(LC)g8M$cQ2sQ51IHbz#BMm`sloLW+nP*+Wa&QxBsG^{qahA`}?MqGK
z@gvA*EXRjAKlRcsK;fu<3E~*IfTJMzssh27z^E;=lk2PVU(sws)760&jf6j#bIfn&
z5N7#Hk+Qcm3WF7`1ape}BSiOV{GeBy;ca@hkDCpV{9WKx`0j7H0h3-sf8_P+7@iKL
z?@Daiu@>3I1Sxt38Zz)JF?OEzl>HO2>JAbN25^Ojs-n^|$D0nWodmbnPHq=Pj;7;3
z{;1mr%$l$9%uTz63C!>?5yaI9RxVeKTUHs|_I&PI@>F}QtY_q5H*OJPFZ;Yrz)9dL
zAqCYUJ@r3#3KhdWh6!GBH1oVtmef4T89a!iEh+@Lpa14{D_<U34&)%8Hnh$5M=t%K
zKpOD$H3~ZZO!w!NkSB&MX3m08U{g1eSxzy*eJ<>R_6SxBCicLzKn?%JXtl%X2pU*C
z!PDWj{eE2q3!o3eti790pHYP%_et2#=yka^$|?bb@tKW-=#Zbk3xGNlqH3?R{{GLA
zdfjgN>5`rpzi94$0*ps0oAuXIK@ZC5@B56g>*=-fCM4HoilKoAa`sO=FskMO)2w71
z^SJKHoneChFU!b_<+XwaUU)D_5aR2%<Gtg7ktGSq`Cb|h^JSq@dTU?svk-A?VniZ4
znEnQn$<TjtCm5kP!vE(J>%Z8^4%mNL5xxI{Bfu|9=kE9k!x?2C=N6S372NsLEDTTY
z{y<(vstuBL`qZUOY`r=4T@zT49(|SxvB5ca{XtHVu8#G~J*d?E{#|6#4Tlzdx?>XE
zr}I_AzWv(~|J3ti!RM=I4xP{WQ+D-_{*|e1L!0AApE#6y3H8swKkuIc3v(Biog6I<
z!?iu7KeAmnm%V6)CmL9$+dNzJ7>lj5XztV=8(bcmJXs}qu!_%LJvt_z)cCz|d#QY%
zYO;io2b@1<(Z!H&LDfEfV(MsXX>ZcKz-xqrM2AI2u4!47hLEOVLXwb3k(1EeO@3vu
z)0ouZd)DSZ?Ko&zSb97KInq1l$ovuM*{1q?^~@V461-{`uCLIr`g_)jI9DOUrYTyk
zRCVvRb&0SiGdNm{e#oSbm^y8oqD@bsj=!_??v>BN>-)Y^i+;|b#e2Y_fh2kKgnz?<
zYwnaiqCa@YW$Ks>ST(LE!-^KzX3W?|;Z$N0#ff)^T-8$K|2#Uxm(DrvU-7dioc{QI
zep;|*{$4&e?mu*aG5<;!HudPpW%_*f=|YW@(5}+p`*+VbcE}p=BUiz!L3>dpez<r~
zeG1ht{w@El;H?m$N+U*%HjLVGk!@0u<DZ;ual0mMYUP1@%Q{7(6!98UdCidtyz6SI
zPc<9ZciE!N!nr%#Bl*X|H)S%6ar5@|q9!!X@T>9ig)%Q7g!)U0LMzh5*w)n2oWg^U
ztV-($5>ojA5wnOG8=8}_cS|HvvQ{paRJ?ni(d<<e48<fi{8JsXJ-+{fe#*DTQVR(&
zf|^^+dX-A9=`$C*jqc~c(|nV;c4QGWkhHTEQx?M?W|ntVECL;$oO8qu2h~pVZ`zis
zPVY|N2z<Mk!mycQm!}@TQ`8Ib&QpE-{#jnm98U&aUQQ~ndeV+4vg~fPj(Ohqe*mFD
zUcTy;DfaV#1h#Fjwe}(FzpiW23pP1_B}qb(BrpsEOPB{qn161uA*@E`fjo(m#w*J*
z_6~=ggRAX9*L4vD0qbA?!Cl!j4IIZoQ54WL4L^jg6^7wyj;MoMQ54qCzr*)^c%HXH
zKRG^q-(wbQabT#sZx%suI5?bl_U+}Tk|GKN_#eqe%_L$%l#LrUlCW}N2yEE8Qv`(>
znP>o!Fb@d`Mg(6lgUCY=P-JF&zh5==tE48C?#?uhOZbwT3k_X;>YT5>Q+3a|=eGmv
z0$W>KsX`Uodc*kmcvxOu4jBsz3n6Zn!|v{Gs6qvJbaXUKOiYB6lao+F*Nw`3Mm$^_
zD|O`T?d^psPESu&)zf&Jo0}mcCe>6Kh+p-qUDH8QR`I5%r^E2@aOwhRf_u!x-*o}0
zQpW>V$k^H031eepUWJX#*x%n*Nn%%;=iJ<!?uZ9|85tP~tE;P_3ghyDZkg@v?NCMB
z$c2~;lMTnm$2w$Ebs5Ab9%KV#U;4etHWfB=<;#cR@bEAk9UX<ZfzesPhy0r>bK-#y
zjhz{~*YL&vl^7Zt3cbC(0od5x-5nqvsKhC~gZRzP&W3m}PcdnO`&1%5Q>+Sz1s>Np
z<yy%RG0KPsz*McBnVG@=GDduDjyQ=UiN6q&eDX;=z=tZtiVyi-XG#^Gy|}m-;s*fi
zHI|AhyUsNCo}Ql2*Vh+1IyzGPOLTU2;!KWzdSz6usjli)$Q@X!uXu7M{?GwcTK=-`
zb+ncK<Qx1y?^sz`5s#Yx@QM$?I$v8`Yt<k3#1AcXDc~yZH0h_f;fW3?+R&sg;-<>l
zsKaz7e)TNzVt#&}J-Dw!NnDM`-qh_kFfd>qblsTVX_3xLm3iyK^{i<$gy!L1t+R{<
z0lTf&rVcE8&G*Kyt(5t|&+Nrn+~lu3HyUal)vl}T8{G`8{C@<P6CYb2IvX0bg7(D^
z`}m1XHO=5_T-eyyC^f|Oq#N;|X&zZmoAU2}%8z_cTk%7FEOWQ}y?gNqJNU`}FD)&l
z7-zUQevPnE_l#}6&1larrA^kDF~yfHG|<nG?Jeg&H8mCD2LUPHwE&mJUkv^Knd2*u
zX8+JioL^sGFY}%I(thbYBkvvMK<l}yt4nS#xyW}Z{s#vKp#;w3khLzJG_m9xKN}P1
zg0&z<_+mWWmSw#BZarq;vTHcg#)mrE?a$A(Zn6)mC~cvoxIH*Hh<7ddqP~~(47nLf
z&E%upJw#vWCYU$-ianQol3c*IWiIh5wLII?H0MXtle2?{ici(fQkQ%Sz@ARLX@AX5
zz7{t=De%z!sxe|=7SH54b1V0QeAl>##$Osu!)SaPJl{Ek{qkB9*w6pgh<!ZmEOn6X
z&_LtR*iz5>`}?g!d&^{7Li016Z}>o*^0RQt8H*m49I0KC&nG7*<s!WNzvqz)T;SjP
z?3`y$9cL7T4}1U#3qJV|@gMjDb}A)+LrEYBA;HEtKtd-#NUyTfdk;zElHPljY^QhG
zN|T*=Mmo~!$}6vwk1!Gv_u}1s?>Td3&ReeQW7A>_tE;O%owByJ78355n3!PKogeR}
z>!@#Zc6Nq@EfP~xQ{D-e`Gictf0w|-nZVA@;NYNl?$x-2CgR>fPH18hI*J@J%24AF
zy}iA$va%9DV&>;)(iRCBU5t#3gbXXM51B`(K@Ev%jE#-O%*;#_p+%L@qDrWl3<;+{
zuSC_SS^#6~>FMz<gc=?Ht_f9?L6djy@+~bbg@l|K5)<#j$l&}rG@0{`SwiN_&b05Z
zNr*qQ8v01c034^exjBz>etzCDUSD4iz;*17EiNvGzE0%R4l*3?{v`CZk?88`;yuTu
zudgp;l2Hbp&oj8ECK(}vaQ<bI@PhoZQ|B=y)GV?4=G__@ug9#f4aV8P{mD~ZU0ujL
zxz6KN0}$im<DtcwC<CW2hK7cSg`YVvFyJ^RWXPdObreDVcrRnC1xv>SFkUzTm)PCZ
zgwR|A<dB#wFE57{A<41-y&3~};@tH2_ZK+~Z+s6KF29ol$1<U223`|q$5aiE|K8Hl
z67}`<m3FDsq(^IOYqYhs!8P-@h`bMVo3Tl#i8Aj2@dq{6R^kt1ruH}m28ZDVwMH!X
zK|iQ(V!ByDZmC`Jj7IQ#u?EmK;z%v18O*qr>JPclM2r(P<k0-91sX(s@N9BOZn#HL
zf2bRMwF^xrPw>%PNud9X1O0@jj73ePxwo;g0sqk*YKd|4H=oREZ*NC;{ckj>3N`TD
ziyHT}-QC^P5dMJf!k?m!G6rhRHKj>^l%b)aApl;Z#f<>?0-8!(s8zU#j-a&w|C*hh
zjRNoq-b>zB<bQRjIp;ciof>_QPfdFy@CGgF6H8)-wlHREM*=<M{nU!->FEH(6d%D;
z$tN`jFG^6^AIT4z3NO%gPFA4vK#Q7wtp!fv#JCs_Iff(7=j7yMB;XF7k=~CUEG#U*
z4fw@tbEF29{e{ya!^6Y)6r5r#er981BPRm6-s9CIENjEO*H?UeYOSNAqg0>LOYm;$
zjBD{&O<XJGm;5juO$O0i>V#O3Gjm)EUW|j9aXdC7$Qyju#FpBJ>pp?i)YKFJk0-ux
zkvb&4nzR<Z46Pu>)I7ZkIf9>=A72BSo13{e&)_=l3D42w<P!NIm&JaSnxk&2@S%t*
z<EIy(_oL?EH}!)qmi>RCaFsDpYxE!4qm=qZ@{kze&%~Mg)6*0=4hI2sld;mG7PaD@
z3~*8kuje)KL$~01<}r1NxdG3E?|2V-Q+5)!x}H=AHHDuMb7~C@*J4d1s5NSiSdxp>
z+@iMgOf3?I79Z)e&6xyRQroYlk5SWbgB+oW<V+h%#DM$rY+}W|iynXu;_Ez**qM`M
zpf|-w@eJ~f2WsKAw(lTc<QuKYJ_L^EIJpP;p=PXuS_sRN)5IQcrzU;k`%J()s26+*
z&!y+!HJ?`tpv1)aP2e}Y2WL`?;Slo<@;^E{igy36`N$Tw5dX1rmpyVETNr@zgB;10
zOmQp+tk`iJV`4jr!_2HOUxgJ?n3<VDVP<A#W`=w3q@I!9)>dn0X8n2hNS1eJw!5kh
zz6ZKT?*!Hune14wV1bTAGu=}jwdxcn*a;O!)hR)td9T2%S+lC{g(;ij+^P<+ceWr?
zBgN@d6D|uEE^H>0OhT35&_U^%d2a!-MoHMK?zD=&&$7O*fo?R){yg8G^XPKVm@%X3
zrt4-+ojO%jzuWzpJ$rVy^Aj>*;0(Q}fR9djj79gX*=HGDuigoulQVDLyrvT|XU?2z
z;;RIgZYMp2f6JCF)2&E{%{}p^k;}x16RUR}6(H~YP1oAHA9O831x$6jYrRNUaq{HJ
z?%j0X=FgvRU+H4$nv-|a<y^jexjj|gM*KCkfJ$;S>;#rBylIZ?iw=ay*Ca%*cP|tG
z*4z{6(kx!QIQ!O_2_I0ib^%IF#}RMsm8_;sn^twb3i#<1@X_pl`t<3(Zzfax&IUrI
zFkt;=!eH*)xt#*SI-!!7x+dKs*OG(3&BP2o`j-w9>f5#SUYSf)EM2;^Qv!Q6f#tk;
z2TcJ6)%7}rc$kiBYXU2_G*Ex6>HQV>i1292lquc&hYI+JoJSj(K8&A?J<&TI$4nW~
z3zJH8KAq!%{>P+;clMc(YE$kzZrr%|Y@~Be&oeE^-r^@SC1x+~9Ubxad_p?#d?+2&
zZH*rC*Sfr!aN>*OTiHNmrzMdyvBmxxy?0i=59#DinluUD(z)(AftAS#u_5mpG3^z8
zXKKm)VvG1uKznt+0)$<c$<2}L|6syv6Oy{pmG3GEN`7S<l^k@#$B!T1<pnZr7ujcW
zfDHK8P)R<zlK{QQ_0hRf4C)&nb-KOx#-vcFBzxqXiML9|e&*BD!Kb&Su-<%M62Y$A
zQAvjQs%r8B)-VOogL=l7TvLjV-Urm^3;#*RKJzntVUPAFmeRLUK+6Jjhu#N&w23c|
z9YqJ|OZ;75`8uEP{e65rdxEFPBSfe0X_S!(8}WmTD%?{ZX)}QXV|Y(yB^$9U{12Xl
z-GUW@gA#L0+VPc$PKr;7m5G1WgEJBT%vXl&!M#i`4bX=+IoF{5^ZoY6$7ZV8e)`!2
z{pPpga|gx?c-tB1WAGIl;$y-ic9zK&`k1LK`pf6?W$eUy@%`2a&M1Y6@YOZmeOh5(
zJ|xtdLLQMn;qM1f_795%uZ17+`$!Ceiz<9JVZww4^O=%@uR{C=Ol3+am}VHfN|&M&
z)q17CRIP`XWR^Hn3XXK5^2y{O9t}hIBQ8|a?)DQqq8svyOiq#Ck|j&%S>iYzRTJNE
zuKTuSM$W^Kcq1R751Gzmi}E0!nVzy{rb}~fpXFTkQ|SpC<hS9P70pNJ(HM;pRUEwq
ztTB=RaKM#w7SQ4xQy}nnaqe*@oRvV&nFo*sKzjs0P+YWVkz$raO^|VofFj7I7{Iv;
zjMi?CV%tkKIxX;V_5e=+2eK!?64<b&^>RJ|EtEvcz5tgb332?2Qi4&R7gV}m3L0_d
z3Mj_eE9Y&W0oqwZkO97cUV$#fC;O4igaX#>CBWPL6vIN2ErB;9*ZIzx#`FO@2~5CJ
zn*>F{G?d^Qpc7C=zIk+0z-f;#OAr)`@^ia@6=0HpDv$zt&PT=xn(g2jegQ}To<J<o
zqC+WsW*tf05He~V5Je9?g5_GW0`ACHVjiAVfEws*gBeAFP+krjxc~?BFBG6%I(60-
zgaepEbOm^$zauVSNdOQX1xU%bRlt%^C1DNOhY|5!1uQb?t3P;#%0!WSRU_i~5U`(O
z3;V{mQAFg7mwYMzg3o{(JC6;}A-*pB&UFL*k3uLAXN@+c2mvTcKtf5D*qCA!9VPFU
zuG?RVtnFeCU`f8tQh{l<mExN-OCsX0=tv&B;VS}~LmoY)_W`VIJ9;;Q0v0=9fA*$9
z5E}?tpZx~dr<hU|pYs{{ME?i-&%q=H@<aTi>+wgjICJJq_9p)E1?@z|HHpD&M+^hd
zqeIR_{#DGDaP%o)Y24&Y!^KB?Ofr>3G(?ZY+2{cNheu+NB%(_A`Brw{dW4+5;vN4b
zdGiR4B4Mu=%=06?;)}SH_2cV8bWCB4e!~U!n?zj!tt~(DuY7!~*e^MBMs_?>`6i*l
zi^|u-7-X6RJ$A=Wk2YdUd_*YCDEyX`qcn8zQz3}IX%)p2gF<it`NJxBpJtZp>3Z;E
zNPL7H;!pV3N}u5rc%_d%Bqp|FK)?O7Wj-tGRTztX^dPZ7ktKMfU%X%gd`#>y#4h;c
zV2}6{cHYJV^cx@W6pn#ceV=oOFK}=g!p;ScI%8iR+4IQ#$zak9A#XC~U+EJ}rr5%F
zDG=IQo4@>C3frz%(6KjXbp|?OZwO8t2CwFP9s|VxeC7<%2R>J!3@_~^`II7z|09#0
z_*Wib|NICUl9xQm{WJ*D)Cpz}X?XBE$aj8rJq+)9{8cE#GX!7vD$FJ>mFe;PnkKt_
z;4Qx6R|;6cnm%Knk!|uFjbZ#0|M7c8^O4ANjK=6+_U<#*j-!eL_yya5!2yG@9d{$!
zvSouD9BMJubWsE!gOr3KkU*e>rcjHhy%(j?d+)vXri5OV9%}Es%x|Ut(=giI>s9#n
z?vbwSw|94E=JYdj&bj|yIa}7SXrj4#_3AoBzbi9ZxpL+IG(2CiVns?hq-l3$9BbFE
zO&L^DkprGr_T*pb&F(jrd%I`$?AbE|O0T5;OF5P*>itDo&W;>8VjgYTljmJe>4Y()
z1WVo3xK+8CbZGNk`pMvJ+qTVWFupO}3#2|9TS=ksT-VTY2#j6hEKNvPty)!IGtX|m
zK$>weDxTBG(!7#3zf@AOWy_XX4I4LZlwzDQx^=Btv!=#H-VfZX^a3r6A+6aM?ipN%
zd)sSh(5^%Cb*aMevu@qGSq(dO>`-c&InDhE=R=1MNex!wB&E9>vp8L|;<)st(Zj1W
zb!DdR&3q0VI50G3_@pgobxjG4)Oe}L=Hoq5y79C3d-q)08Z%`~@R4T%cuwlK)N0Re
z-n@BM!}|5>mr5L_LODI06~{qZIvnCDbBsJ&V~Y#d$8^9L|9IaZ--8x6WY06p2})1_
z56W7Uq(nb;xF{JmX_(vb#qQm^^B7z!Z5q`-8ua_XZ7Z)Sk)<optcI;yw<-%!R)t5q
zch|6e`*w1hxsiib7x);rzShm92DEO!Q+7cnG#zerMb<?2*a13i3c$1X(^DHZY-r_*
zp2~$jS(wWId1fxa6M0t><NwwO2PI>~xO9cJwzh>Wa&PRW@+EU|Ej-l8e4wGps7$ku
z=F{3o<3uO6_R-pXGFBjS!AmthTX{Ej=%n;R$&59^CH>+49vHPR?5FRI)6N$@v$h)0
z!noENh@CA#T<;u|yeOAao~fM1^GcFRhT|xG;VJmA&f1@{UZ0wNaI=iSn$f41*U%fD
z(kg*3h)3}PJi~GQ9(t>#Kb+%_$ZB*N`fb{@skO~Y!N^8<xAm#aXNVt^aJ4@O6J4$>
zY-s-R1zJCEtZ90ySLr-B8nhS6weY(!S{XW8fEWG>|46B$Rt&}{*{x*3xV8OPmg#<_
zjc`R4mC$uR+%pX0`s8Q<os_L<2~o>r$-IMWrG$6`-C8?Q>sRHRO7P&C{(?jE?|7(W
z1&#Wvp-=1$yQWN?Uym;F-NR>PQ^$Oi(2J#v)xE1^QT5Woe3UQdho{_620~NU+4>6D
z-Hc}qN>@`-Xs+}y99et2h88?;j8=Bh+4}HCc)U-R%s)PXQceB}Ut6hb;>XGHNS;~1
z0+u-^EFgv`&ZiH>QC|z_g~E`ll~<3f-k)<#S-0<G=qSaKAwr?6EoW%D9u_5)d<HyM
zP8jqK=xVo1hJre1_3SY^QC0~Q8HhO8>i-!Bb^hwwyBcc{XO{8OtECM#jZ4X=H;Xx_
z8&~UIPFp&Me+Veh;H<`xwYE5;pgG?hp>pc7G)75HH;>%o+0>-h{l4Pp_68GmkZc{n
zt1<L#C?|)E#MnA|jaIu3AM5342zUg=73fD6!;?9Uj>&*=0QE*ecRf$^5AbOL{TN+F
z-^LRjO0OHgI22m9fhvRTxz<?%_!94ONW8C{-l0hx#6CI>$pf6gN86K%<HSk8!=4qq
zw!I+WGQrhU;6!_`egVd*oq%3ki~uJDuZ{4}IN!Ip@mX$wPw}CR#hOp`!73$Nbub%R
zr7zYz{gaLVL0%zyoJ0B~kYL8VvXRw(PcJ4IiPPTF7UX)*eXTx<jB!xOggLaj0w1}L
zoaO$>_KNdNj|f^Tura}z9+L&*PU8P5U_&l_kQ}V&m*S9yULmIf611v;-uHcUS;<0T
zCu1+!4*W4jgBC*9dG^t`0_*lyFVmB&mnYf{&34l~&%mReE5@}3y<P;?_^=1Y><c?c
zmm0_4EluIoJuO|?`PL@U#r%i9K+V|v75%LQd^Q*0&=`1nkiIrj@k;R1>c>_`E;pdR
z$Ytw`(R1;|Y}~?Y$;!|l$HoYGg!}qE=-<8r?a(K<4R3pQt0VBcjbt)XA4UN*#GjGJ
zL4Kew8qiB<bpGU!+_gGUe<J;XjshIwjoJ(AvZi(ncE;w*JcyqZdCbNQJ4Tktab!Gr
zBYXTaJ-Xm%|Ni|B1c&<KPSq!K{mGp>caljPZIMlVw%`KKp=XN^hl^+&y9|ePtxYWd
z@(<~MwiW&Q{8e#KYxmF>f51<4u1!DR8z(W3Sin1M@Y@V?uU=lgdfYt4Sz@T@9ds`(
zMS=tCX>~X}hMs%?y;B`}21nLmQz~mf&msT999p?Ucesh(%~-WuCRQV#dcTo#vccBs
zCzr#y$??c!SioWfYXJ+8UBF-*Ja~}86R2wn*##6e<n-Dp0cSV{T+pHUpA9OIX6SJ^
z8Gj0oQ}3M&j}zR0u{astC0OyjO)q1maW4lonIfgsN^?N>*3HgsT6n*vhYX#~5X#s5
zG)s(e`+tD>GXjhx!^U76Bg)?R3?v62%GrsKwc6Z@avybmISc4v3<f2*Nbq}EfiW^i
zcy-EFpPFk{S^6a`1(zehq0nSpFcSl9&azTsgxixc-)TZzH)iD+q=CJ_M#D&Sj}z)7
zv^SuER~dfz7LE7q+lTfE;wIw?f5A-}M~8MAG&|w4UO`Wqs3%Zzf|^V+AQJ}9A1&Y~
zO*!!hnGFBqX@A#zAu9-;2LMeq$Q<OKxv&5@l%=7$dH57QIi`N-qHnV=yfRn+cm_{%
zfLq8|nxZ<*4Uh*i;PlwfrgJ1^5!8)s%_|2939?%-AN&g9pnDhSb2QBp?Ao=9?ic*j
zd@m5>c<1l%*W_$B!IjOB=%NI7rSvB{(>-)==0wKbL*}ONzw6O;bPmUTP#3T#f?M*4
zhU7dAd`rI&*Xkd5Kr^<GJSV%7y$W6NgkU2!GyxYH%;QJ;#F~5UWB!&sq$#!g0)kfA
z0kJz%!JMOeykB-8poe4|qDv3R@EEi&zC#DujI!kLWgv~NL$~mjAHCoo_&y*Aw^=~m
z`Zh*w@I{7Y?v&D7*Sk%}QYtt~-|<bw1spznm~QL%F93fwwfKAv`q(e`;URL)?#Fh;
zSHiEdN(1<T?%BI{Z!H&|<L7n!6EKzr*ck)g)b>)PfI!`580g~%W8td?=FVT%j7+84
zS0JM{BV>dPz$ANNBh@$#nrj)dnZ_o}gZNxFyc|+n1AR&EN{>W-Q}jY~mJJ#{buxe8
z$oJ7Hmj&S2#@pZ_T<PD(ma%{4X-;sSChW5P>Cw*a1n>`Clo&y#RW^^Jb8YtEO~8ir
z`Kx%Vw$Gs_9<xCex}y)@Hax{Aut^5+y_kn@itqZe?aj%Y!~f(5&&bk^4p-fgO-y64
zD|jL}!e96ketfLgJYw6jh9N+E_^1;V*ob5mn!kC``E{(uU!W`LOwYEqh+g&gRES-I
z0~_Dwzf55P|7GvKTBW?AFphr+zknBVK7?Yh_TGE%z4wydJ2tT0XcE*EL=by|5)=a>
z7Er7u*i9i=OOp3@@d)$c%+c%Pg28i+duFe_*0a{ybHx8NSO(T>!vg{(uYe-9Y11a4
z(g4S?9V#HO#X!Vy2uB52FCay{72K?FQZRZjlCTHxPpl7@0xJuE5ZeHJ*IHot@Lv23
z_!Bb=lO%x3@UrZUqk`js`GQY{S-`gn<^i?_U%fV7fHUAOU{hF+mxL1pzGx3Iz_)mj
zVHyO&7%l+@Kp@+JmWv5KRX9$#P5i_az!0!U;Jo|*69*L)3x4Fx3<C<!0aqaAxqJ_|
z#B;^j9-imCSW}o*)mUEQ&0<(O*fB9V#rOzw3?qOa*bZ0}&JF0vuRu$kGrSr3X329{
z5PZcR0Cf~ge&7LA1Akg;jXiNqFbu>j+zfmTTmWarjPdt;4F3gth;|wNg)=xm-|02{
zGWwvYSOEOE3NatY>}U23_ldsfN?v^(zC!%RoWOqIzdVbP@52EpeklwVT9tt%&X@;f
zQ@h0*Li%{ly08|<gD)QTF8*aP08qLUJFFkM6?Yo0svo?a@Cd{<M%UsBx*5Z}vp<M&
z12bB|CrY06OnDBZ6#Sg-%KVdh`wy-J&5JdTR@rD17lQsg^gjI!n}mfy2S|*UBCozK
zF6kBUY_(W6nl9duVKjwt1UiggfjgoO!lCjZ6}TF>GI%0kq~T|%H9b&Ws>k$-)Mz!s
zouR=%oAF&RlrmfB)$4oRux-RXJyBfrG-p=p7)H(%c22$ePyY;Sudc4H=11SFQTkVR
zdWl}3Kg4kO?4w_)CtM}{AfRY|_}+|j4rf!pd}XP5z<pXNaZ@sX^@Eq4k7`<6t-;UA
ze65H-zZqRcgJJHZKbCXq4&b?BVdn9{xy=OUDOs)gl5^4y4O^35s^*+YKf+~EJ7!EE
z`TP?HzWExHrq&0WnA>8je#AnK>dkLrQI3zfqSo}=7_HK2Lo;^-xfBocNc`kaPUtJp
zX8Dv`YiUzH-5;3esR^}1!?fV}IDg^&xCex(CLiMMVNVRU@K@85@g&{p)VwvcWxpDF
zs0I|T>OUO@+D=pYj9RppJ!_abg3%PVV14sKU)Imvm(q9nQo$h<2c~zI?gP2|i?O+5
zPKb>@8ory{(QtU9Vx-2!#{6@pG6U<C`UzehbEhtTSrpD@*^=|*Rh^gbYq(Y7A?9J?
z@;^K_cXaP(oKN1&FEPhi%AKm_eU<i{!<~x;tdXPiT)L41TF4zt4bZ-|{Gwy?s%*&-
z-}r7O(U?EWbwx{Z;w<Tn?qQi-_M{hU#3*{n9(*!8%JVHT!pYS8%vtp$hT?#$#q5ba
zrZ>`yy=WnPKyjld@y{&sdg7D2#Y?^)ac2(0PW}GR-d(N85d~oY&co(DA-5rfJV63c
z7vk>j?(W3h-93C4KQsk9XLCJMu<UGi&#5|fs{WFN>eP$<L<1TOaUYODlL6usVTMd*
zP-Kd%4C4)m7`SJ!q~Z!l8Za$T1keT1Zcs8*R#7i7)uF1^_r?zeytnnFz)A70Vc?!Z
z8Bj@bGZ2uR0;v1mE)xFM>8_!GBeMeAcL6rplN3lyCAJCPp3B>}Dj6u80G#zbtDx!@
z_kwN$h=M>v2N)Z~m?7-s3T5akT_)%VLV5d)eT8xjUjZzCds~QMi;>TO%;=?(y&4i3
zN^ljhLv+O+l7J@((LAG1^4fnViA%950kB@0IP@V9W;n1Si%n>dD0rLA0Rh+Zih?>M
zT=0)f^vmY5H$3qU5B8_nRx~<~1mM_q{?4-+Unz*Pf7h~?oUcTR4TW!&pG~n-Iw2q5
zLu^_RMDIh9bEeNinrQqZ0X+#UTVo4sT(OuvNm89B+1aMg&bX)jq(S9cY&XSr^cup8
ztZbqm33kyLJ9Xa9C*+KZ4-XrEV5DM-e^t`Zkx=3V3-L~~w&H~~*gV^-gRm7>h4`)Y
zgHv!oaiGBSnT%|?yAIrff58t}%-8r_{5Du&&}(xzJ{t`W{Mc9*d#y`Gq|lQ<cYIYN
zg>LDPTzKZJV*gG2jJ-?B>8=-9pN=*C5?g~q(IG4|d><+N;1&uW1uv|yFW6CR%$|L}
z`dNv;?f4kE+;c_>dj4GXA06>`HW7j$uF-SFf282Wn+*01N8!ESg_`lDD-#>k$g@8E
zu)DkvfxJG4;HvzB4T$><@{IG#`olh7x~TfG&l)S(7Ci1lq6hJWt+8Kr#a^N_804Jb
zA%6|NC8jEx<wu@(KF+nqzF=%#guoUwLJa)IyEayw4|(_`-*PrErezP6ddZ*sIk}G}
z5}a-iE3eqxju**?@WlgGWY1~*+jDaBnh&@ZKa*?mU-^XQ@KAY@&t#$_v7zetzwspa
zKrW3ba`hlSMIU~;at1rHm*Aclp<&YHOHcMHFD=caX1<C)?95)+n`hIU(-d+o@+4ox
z&-LcpsOdvo4UR{@e*1}?kj+~Dfv(|J>lSCkmQ$<M`@T=MO38)o#~G7>-{B#j%~`4M
z$QTUf+b}t{2G`w(>&SC(Aa*^>dW4_GH`xol{$uZ6ULlI(FpSHermWo}3!!XTkqwb@
zTR1D1Y$zv%u(5GjDkUTfiLh{qg%t}D4Lysg*-Ym&(~;))e99j%7PEN2zo+@ZACm)?
zB(7Xs)`9%5z%c9;BT0+{yh;cSS7%1>!r_+dKI29P82A_m8DdHvH+fylAPjKr=4#F8
zlT7kgvl&UkAjTAiM}~`1FuL&Kh=V}kP{VgFBVHw7NT)I>M6Ezkk|jo7Y6u47K*<41
z5@{Ey2dM*N7WolrM-oX6SmX<&1R>#d6xl>RPa`)VcgYGV3L{oII7pB<ky()0kZh1z
zrz1IFk=lnrR08~!fuez=kHnD7jhv5qprZaqWT}k1Q52CRlIu|+WIbS!_=P@T$pK4J
zKDUYEI4M(sB#|wUZUy_<$#KX8$y)H=kph#OkV28Wq$7zuj06s8N#t%Mcw~O$bCrgq
zj(m?|gWR8-FJq+cWQRpw$4L%Yk|arzBuP@P`j@>sX{qIk!Z7@i-zta$K@=3lfjUsp
zi31(jHi$ZKBBBVQC<uyz4XE)(uYKR5vBzj~)`Gfl!EGv9<Q$Xt86A$Y&!%eC+H36^
zY-KP2000000N@v;2><{90002M1{MGS00000*uVk+000000NB6+00000000|Uz~0`T
zHa9mFk~*GMsUzEUeSNLCPEJm=v9X~zZf|e3y1J_8=VvA5;^M;QY^QB1z~^^-eEg~L
z&E4Id&EK!nTV7vZl{&^(S65d`N_0<B$Jr{bqoX6Oudl})-|mTzpJDu-rH<BCfX7kl
zs9%q(c;d%rnt1%2pPwthV$1*M<>f^mv9`A6<44cM!NGyP4&2}0M>)vyO;Yji<8*a(
zslB~jlarI4qyGnNJ@j=kNua(8!|Ca%78VxX$}wKYEiEnS@bFLxvpi{e&hn=Hw&&4@
zhX;L-t)spc$B^Xw-_6ZCJ3GOAw!gn`@fqC%uLY8_ySuCH?QQ)Bc}z}EPitgkB+j~M
zwYSH(+1lDl+xl{LcINS!R^j-J4{Trojg5_}sHjlL&CQKUN=mf2xTv@W1_o49Qxm&6
zFDfe1<>jT4GB!4*+}vDm=t8Qit8Jd28b50Oi;Ihcn>|lYPbw`f)y&L{lHr?X_M2YR
znW?EM_4fAaJv}`=cAaAvML9V+nwy(brs?nR_j?!Mag?2%t>xuqB_I%=$?ERz_F^cc
zprAlQLqiI%*zy>Ae0<bLl$V!le0)6mtd^D*8EY7to0~lcWGr}-P*_-K&#mQ~pW=UF
zVnTg=egC*PudS_Bety1YXJ>s=v#zdASy@@$@O*KW_oL_O&HPzaRi%c82Blm2uTT6J
zI!#SY-k^n0UwJKH`P3V>pTJ(4c+D|CKmS&PYky0k@%A;cwY4>R38s~m70Z|Qy}hKh
zJo>3-dUSMDWo2dhmqhcojk9-Su%n|xZ?G2>mfNG+%4?0Jw6(RVzP|no=eMxV&Q9x#
z?8S~h*MFz7vQopt!_nuotuKRvgUZXxQ$`5KXBhAoyJpjpKo~{gpXWlvrHWq*K?p%t
z(#l031TAzOM6_z9_zT)8xDX0gQS?R8CuBh%i=wB)T?~P~F{$JT^XvwOcix$~ocD0g
z1-=j=A)07G2R1H7qY;@*hHkfuUnE9UDi!>o#u%wo3YlN#g(gx^s)SNCT$IaY+vhCn
z3kHJ$>2w-3IGBXeJo5QGYI-p*WVGy={eB;T3<`xpf!|Q_f{Y-3P~#6x;-GYopdnLa
z|IUTdFx$JDe9VHoKIcz1o3;0Hp~TKvU&3ljH8%DCDi(`$Ivs>*fhH&s42MHvv6wwO
zxP)jLlVmc98jc97e@$f}Xf~Uu8O>j)*Xu+g5tPRN)C5~68jYH!Ei=_>m0GQan5ds>
z(xHh}W@Gukk5BAeQC*l$xe5K1e1qw!CXE;;B$vyf;B)K-1u7&G3Dck%F<%gm$LaNY
z-nI17JNu-gXj+D8X}8;^CI5rBfAc*q6iV55okXM2Kmnasp9({m7YYJQN0wIK+?d~L
zwOaV4R4SnmdEw`ayj)Op+FhS+LPEaTx38wDiY5-=OU~(v4?yt+xZsW(_#zZlC?W>R
zM@8{1R76EV1r#s_L<Lk7Q3O#G%wocvbIv(nde3jl-kRdfo-N?^bk)|gdv>3ho(})+
zp6U6g?Z9d&zvAYVU%}F0lul)K?%bI^j~O$jZ=1Xw^wq0Zr|W}b$Byj`88Rfll9t9?
zvt~_a>(;Hc>xhE}4XSk%IK5fFetoAZqVunG1h_KgDw#R8#Fo}nyH2G&-D!{$Cmki@
z$B*y19-T){lbs5#Ter?>i&N&}_}*KuHE1U$16>bsebL`x!-jQ6j~<;`y{m+wQzbdB
z{WNw|?BBn?){brMh-|%v4jtOPqA+;y;Lf&f+nmIi2fyCC{*&I17%>9RHCZ|d@*8W-
z$#3x<M9v#GZgg5={2I^nWbI^3*1f1o9BU`3Y(@u=ldR|ftC9n})w;m&M0eW!@ohe*
zklFV&-gOe`a$<kx&q)`X|If&0ub%d)W5ZgFSME&gKfV)SeD2z{i|%x}7#H6~d(NL%
zo64OnTeh$zt?9|Oh7TX!#D<O>^3-YK|9ko$o<@!w$-n4?ZPUenC)O=h8`k_Pbp@<l
zyB401XUWdlrqf=wTD+zP<LKnTfdhT#r5E_Z=JxE_<8x0PvK2PPC*cG8*}i>y;=3QQ
zXISl&c<R)t9Tb?eWXY1w#EBETm|Sh3!}jFwn>TMx?-AKp+sc(I(~0lFg9ke~u_f5P
zYSk(y*iF}gbr<SxC3il@Cc_8Fo{U|mu63yDCa5;=@R4_o>2!qu>9ud)KA&M<l2^5f
z3oF?_ndPwquXGh_ZzAi{#mGKNouK%m54sd%;a)Bq*O<fyzG}`Ie!xfaUa?{Y-^@EC
z`{8HU2dweE*yeh9O+IAK&hXKM|8PQQ!MJhbbTzmh<F`%m%b0A3jOiDz-WOvE-5Jlk
zx|fU}gzp$9=f|_iJFJKO(Zi-qn>;ga4bR942InzYR~Z{(b7a<wjJadS4tOjl5pQzr
zW>4%@e1@mSE7(y>GiT1EFaA)Ax6`Lj&vQz4KtGYY6!Dkt;EWg<n8C-zOW%vlax*##
zzZf-Ylw64o!5jXW;}^R&cP%EcmqV}^mNeO?=SPBXs4?I1d+R12V^5ecA$Y2h=U&-Z
zwY9+sIBqO{!hi8jhFR>RH@dR!Qr;wQkGutz@arb*hZp7|b66>F#zXCQyLa#QJ<QLs
z5Ozdt#Xs4KZ}2zpEn+iFgE4GI{43%SGCn@cD~1~{2yVlCxh5Gj)LcguU*Hs8VK;k1
zeeBb-Vr>LN#Yj4li~25fN&aF<_(Ijh5Z7eQjbFZ1x?1Tww?6XNa=7-{Of9un2wQ4N
z!X*(7(iRJR02v_H4h`@H^%5yS=FOWY$xgvw>C&aCXqz-?QWr1>1_po?a1(5_JSPy&
zNdbW*4BEv3u8l7I*hI=(o{d$VpeX2y*8~+NuGj@A0?WmV7Yjb!D}REIq`O2CUF+Vk
zVFLiileXLR|M~dHW{UQ6>$Wz5&E}sgT}VP?1CX4JN3P!EzZdP@yI0~;EQpbfD{GU`
z3DAlI0f#OG1O)*ZDL5t8bfI9vV~{JJRi}jnAqC+%bLL1sqQKHhZ|rVxuR7}JIO$~3
zqD3hI39>0^Y&?(=eJkJ!BnZ~7tSZKg$HoNyg$oz@ox~B3DR>6anV@M5i7P!WSg;^?
z$DcO%*d!B#*{7=sbZNYNe#wSHv8I1K<w;m<5Gm|kVYF7)3fU+7s8RFyWJZ6I1NLL1
z!5WH*6I*dLAqp$&;hX%4Y{;4&@}UBmpFQ(W$qfG^!{P>rt78&0$);o~idu4RDe2QS
zOMm$ezhZB6nEO^2LlyPxldYh@xavffOj9ygod`=v8#k}uiG+~O;fHIjuqG#k89t21
z{*AAgrgzCZ-{?m+-=|EO(wR1GTJ5{ZlP61D6_b3=RUFvdy<!fR`0f1p^Ucq`6_|V`
zA0HN5cUsr7Wy_LJmI&Vp0{%*7K9j3r1*YRcoPf=NRSq7^Z?nMsiUW9JlRWT1(M1;U
zQUR$5;LmaJ5Qi4X^-EU@#Th<fF1l~Jp5l5re>NxH=qt!v_)}~lxaao~Tkr%+ty_#d
z6yNYb_vB39@O|#wxlu5gvk^a$@!2SODtKVOVjlTSK3?RZz!zV7;J@|6CYitNjZB;3
z7hhmI*2orYE)}th&dCO^>;?A84HQ}krYpSYCMyO#iy|xz!q}+avr%|i!)%*l#tpm^
z->nTU!bGvOmv6F9m??hogW0oZTT|p$?3Jv^2foAALZRByj2ScJ9(0%&>&d2O&6?E-
zvhe_O`MS+=SSn`<qHngv|6v6G;P-UNHtB#Z!wwsn#-bmEH2aVb+i0O%IKYR)#*8cW
z1{I&7{`LuL4j12wn*sRemw{J&mF>a;b}!~zTR#%Zay!Q-e8v}Cl0!I@Fc;bI3-Sw+
zdwPba(jj-%=`D|eDRO9eV$VYrzDqXNE`K3Iu~hC7n<C;btmESd7Rrsx6<7vm;NSA)
z%RT3Jfp2UEFV>A0<64*ez2_A__{)a;j*pWqvN0+~%Q5K+pYrBHj%EBKjxR7ue24dB
zFP7j3HQ6VhL249yBDxbx#29iA_sAhO2H9cMHT*I*+2ks0OAcAxhDaNCL2@IqrayQ`
z4zXc-RQ4IvQcM45=PZBZxPl;_Kgo(MS!XM@mDrZ;I2Rq*NgQ;Tnc>2qFmn`UW@ct)
zQka>sQ@@r<YCYYoHurh!i+y*qGY`6}tNTr_TL=djKmjRKtZ?gJEMB}gTjUIh&X_f8
z7Ohm1zP>y>JRBmm0B%8Ax^!uXm;#9OcxBryEg+w_a^=bZBKcUcVnrzN%IE47E+ihp
z5DCWIxpPCJ((Mg-jRI<PL4ht`M+c01&YU^f>SyRQCT7f-;kKz3j6LV2;2J=IIp-kq
zZSSA0ghN9^p&%IsEm#W{Eb#StZEbrK@yEi23qye?CIhb;i}<60d(r9zSS#8({don$
zP~Zzg0V?OLpjBVP4+Xmb5=$XL=#~$+4Y4O~dt^^??ST@Ux+mG9G(J9_^8l<>oxem%
zD9M@hm45}hY&TJY8^HJH)q5a85(@COg*Drwlz<0d&#*`A!B7(9mQ`$sc7uEl7#$t0
zV+#q_oV&zL0138`fQ$+S?T~N_ATg3_p@5t%TFaL&&pofN$t%H(4)nag!RM6_Mi=zm
zL!rbt0Cu78CJF<;V&7;(RKglY^&iG8F<fn-+E@Nx33UJo7}m>cg`H*lX<~p-vXHiK
zj+Bs0dzJ_epu%VFhXihI;fRTe311I4*q`h#@Ihw_7948+F!))*GyuLtn=8J8onrsy
zYb8Q(=Kq=><Lw1=9KMC!xi#6gtYSbIv`eu*ZkeFHM#X_JR5-!sb6r}fsFQ2$SYrR5
zHf>s{xKjNiR8$V2LxNBe6BVpYZ5PKM@mr(iPsT^w1B~7CaqNI^S~&K>E%>T|T`XF(
zh!$k;TOA*E!uXOWfC_IhbLLF9IJNwSpA!GvA`QnfUbwy|fBNs(9rg#887h!7rgnWi
zzApY}@7zL2OFQ=4SNwucXr<%6jH3%mpkn&;>DkI`D4C7<^XJnt#TwDdlQwVYP>bI=
zjxl%q!LiDFkZq$Ctgn(?+i<l9T50*&Hr(<n@xR8iY==?d)-AmFpLGQO(xZiN0PIEu
z?*Qg6__VfU63<kSs{Dx$;R~saR0vCrX5jnSv*RW9fqpPQVIO>s7JPgI{RC`7*gCCt
zfHrFGSAnjAcich<9|3%>!#?d>ee;{g-@@bP8Ti$_dGkVroG_T@?Afz(9b4Ew(P}^k
zYxYr|&swxvhx_v!v<ALqjcC6{D|v0<Wb+z1LaSSdAIWzu{P(f3F~;Ms0`dBDAKyRM
zuj(EZyz?3WKj53_E$>0gZ~UJ9&|9Qo@PEbz$F?x%vL`AgStrG^Wy|VXq37VY+Cm6-
zIlq`ve9=Jy&q0&c>)~GJ(U*PF_ULh;L7BUOMuZ39Ip#>tW9@2Q*TI(e*SU@3O{nk&
zH&;&QZ`{Y4p+EcV#sCBSJ1AfcPy<*BSc?Z$;iCdFB9N$x9xW&;AVk{)7jkxAJ;DO<
z+J0xtk|j$ZOhkVMJ)rhNu6Och5MUuvlW`VXdI5q&^q4>iY86hT)PfQ%oCG+DHwc=D
z-uC`Fg&~M$a4{UP30goWfK^asu+b@P-lv5{I`cFvj0jHs6tD<F-cti{&hNdR?HZC0
zAP${4a(|uB5R}>DOvKc7f+(Z-L!pxd!y=Qwh3(Yf+Or_z<ePgTgjf@jt&x!tf<FQk
zVTwTG?-qINSteWUdU>sNI*2`CTkH+RwG5mU6egLYiwgwu0tB=Ljtf{$K)rt?RV1n;
zBwd1|pZi<fFz2449$%wqg5Ys6)?gfr(M966_<^mmo;pdxW+<{y;B->w0+x%*_-{u6
zYXFj4wPplp3y|gsxDUIfP^?pU_JAUWxr2nGEjD6bUEg8G{vp;WN+FuLH#Wz8Tu`V5
zENlV0ok{_V@%L50LgXS$>mh&>4Hq>?g5VjF0sPU042nEze<P+?c(<@G<6pIy!@&gt
zync>n5Fgs_`oPxN7q|+WuRdx2>pTFkD2L-HF2em3Y<hubkxY0U4D*j#TJT@<c1>zo
zOY=Pb*u`(GI~>W+BwBD;EueMsC-K0=8`i!6TQv8#>qCOt#s6L-VjuG+R`e6Ucov6T
zo$;^oBz$Bz>4%e8Gsf210&}hhF=!XYQ^8)7G`4o{0v2;6p5b%Y9`Uvd_$={^F_9c%
z_pQEy4{Xm|*ImFG06%5VeE7xw*5nqxflt)_3%?{Es8fK%7@P2+5jKlo*TSN;4M{h)
z>;q08pi)HV+1{V}OzhhSJT3;*qKUPn3s~02UG{0sHC28yJbrWQr2GT_>&>X11uU;U
zKI%187eagZNCAbMfU)x|;#<{K%*VL`{=>md8|PSi4$<I{jFCpWPt1#WR{;0$dy2~J
zBig534{{6k5)OoCTv%`U%`waWqKDWYIEQ&qaPC#W^4N(DTo14FdFGGJps~=2wSYC{
z_~HU1xd!%vZK+Fv^~vX`Yr|TkU;AXdJexhjmt3&(Ub4S%Y>iXoGS$BLtc$x88<|fV
zhtc3@apF~f_SuaA2KbM?`wY44EaCuu((H9xwijHtvb%0{b(1X7O=53IL_|m;M6e)A
zNVO5`2bIJQQHiyX*n1_#LTse>X79cCc77k`G7P8O<^AXxxZL-?_nzlGXJ(%Nl;_Nx
z{~X#(G*KxZihA<p%a=DOmu%^K;=4-934C8~|6IIyu~H5tTau;CiWMuGOiPz8Ra&PU
zLU~*6?c=j@f?B$wmU>oBvuV?&W?oX7;e4pfvG*y3=B!sm<x!ni@J#tuJ;#zIOO)c_
zfietbgn9g~@#^<oGV1$%?PE5`Bc)HdzfF`S;xjT<{7*?@^h}Az^!tCiv(;?dwyi-*
z(v%%3+fn}LckRwj(>f1L7bypbQc-0U=Bh+bIZ%{EDzPAIJleW-Yt!z;&*nyVDpg*Z
zqp})uq*GP)wO>#j%m3?mQU0g2X4R@y&9Y_7jAhPEp}EGd@*5!Mpv%fss;;>{Ji)I{
z{dAm?C4ZBRHQNTddb2ouRIj`y8pa0liSLzeC_%w*GJy}R6Bqp>;3-U~nAlrJM_-i6
zL=T_n1J?!sb76zmytH!V%FZ5lfeT7RT8G(sglTXl^TE1Rwm~1^iFb3I=}_x{H*40c
zQA(gh0Y1`2c+qQ{;7w3mKT7|DAA$EuMwBR6qi`7353aZPT*pMp_cm_asE5j|G{e&v
z+q)AwpT@Un(V{93I1#0D<Q|`c*jzGJ{%I~s1AFn!Z<TQ1F&$HCw0-+_r9ODvi=WCq
zqcn$%6PXiPb@77@>&5>aJ9gyXd!NUCnHLNiv*Su2&8zYOrt=l}9o3Hd?3MdZInP{}
z9M{Zl;SsFIUw%%T5Fz)bkTpQxlmuyMp!^3uEAyc@wKv@e)=#u=-#%?3lqXrY@KSHA
zCdeA0!%C^>2VJsW+6{u4U03R+je@c%CB1Y&+0vdpdxq?-vB<OPoN=9tF9heS?vQaG
z_73Rhf#cf<(Nn%aoevB=;8?)AU%!5R^)vV%d94p!Tks&TPk$*qgg<c7%lEy!bImm#
zVLP2uc_rNPeZ^XH#0&OU?6Gd$x;}r|eED;*)O;Kdn;btV*LWf4!7u)A_OaSciR>#Z
z)V_r7E0v^=p|9`?=EU6Q)=xG8c3E%Hv$9RxD+|Q?s+;)Pbsgjowgtbdyn>&2v|#<5
zXrd{BHBk*r!Wol9s5Rf5h)x3vtQaKC7_(C>co292Zvd!wMSGiQZm#Hijsj52j=Zse
zqT_M{SicQ`9!waZYS8o|sMl+bJ9q9J>N_)<R6>j;{;03dNg<y(*mw|uESl5tslVs2
zGg^If#jnAHPIbD;Ad{d~?~k^`hpcA?i2>pON;U~RgXjsz(OmVZ;AAp>i1VoTiU4x=
z?%ho#zhkh~&f`<`w}^nGEfHwi63@&_=LxxZRe3tD8dippehMtZ(V6wN5P<L6wJY<w
z2BOt@6QD5k`ipVyqQ^;Y)Ldz3{OYWY26J?oF5$=8wQHN8NEXw9N@TZs^=bibc0|a`
zni|Cgdc;AQXc!y35E;M~y*YwlT&y?F9Qj*YumjOi!LoHA5u8Z^C<427=ea=<5Ev&r
zmgCqkPLflSo%)9e_-f;Mj{g4r`)3%Ou^4visnPC6o9hg_^##gJ%G(l|rY)0eQ1n8v
zR@-ulJ}ewd0+>hi;Na-%x0JEX|FT}w=|LX(9M>#3_KKcW`ovgM5<}GyhoP}<@&gxO
z+J+4q$ciq&kBp`83(k(=n~fY}>q8X}s1Tg%qoZ%3?>g}_<^yMZP9)*QM(W+<JefZ*
zxex#8Z}87?jv2FGV;e#hyZ8<@p-cB+m*cz6L)KL{2Ae47<RXHNWUKd9JgfkZ*?_jJ
zsXl<jb?Lnm^V4HSZ!dim@w@t26P^wy&?Out73iMiL-wm;L&_S=eAL^NKWcN1Zzoai
zMHeMb;1ZuBHWEWFb<GR3>722$ze*P+;^DS2Gj`CqK8zjJ&vAU4pUhdmqUt~62fofj
zacy{P(<G6;hT?%3yUsBl{*dK@&(T}gnEEK?eqi|7mq^1W_?!K7c!yt-KCaUo*{O_m
z#^fupJuo7$vkU+EZm?6IQFbkQ`LQ4QxG|i<dp=f{yCiJZqlMZRx+|H=x6bl%9`X&D
zjOr(TgkGCpjAzqBPc6J_s~-A%o!BVpiXSUp^G)eY_^y0}1?cBQ6HQIrCn|sxj%8cc
zCwR#Lxt(4h#1M66@CD-8C<#_HMU3AAW<ft=f}+X!=FOXdF@pyHIUY^>=yvb9fuh|8
z2E`o=^(h*2-H{|HVt6%K4bn_q(^`N#ay-h0p?=SJ#Zx(QV@*5=qg0)qI$kA-AITl_
zj-W-8Pr+>8@#c`f>ohzJ2Wm@V>`vyulJV83GxLu_B4}ZJ@GJ*}nlp0V8AHyYo$B~n
z18B*u-oRR*CwU~;WC-`}-5Uu^cXi=qHg19g#<lXk@-zQUuZ%^;8uaGIz?zdfZ=6$r
zBJhYO9%=aMxOzSYpHnUP3}=a6^#>&5<Hwq?#)c9}5>(cd;Gc69<JpPS+?yVD287m>
zq(N?Ss|hFGn|Icw8r+dBhn@ozI;IIHC*}W?s{YlrW#`n|;+W>9*|9z(ddZTG=f?1K
zwD+MBZ4W?A|2cwjK8;*8j_uX|`UKIub{%I9T_hN2%W*WZ&UOG!3qou}z<oMVlP%5z
zzugg(AG!g*BH5wAYj*S{xCJ&fIbW}36q|#bD<=Upuh-BV4&*WOdZXuopZUqLNP}ed
zD`A^!>BKe(NJ&LONRVU6+IWI*{ADj;Yv4BBAY+7o1Na7`C7SR*0)E#k0Rsd2@KdlD
zn+Kj6m>cg3U^D{8hsqzpV;}y*zu=$i2_6c*#_Sip84c25t?SjeIQt`X7r*!q5^4Mc
zWPM0d;PsF#bewU6G>6vIn|zRjhafWPD4W$8Y{S;JlnGB}31|B6oHe-(pCz;DNIy*k
zL&=9M;bkUC26B+_&+@Zj5O>khO@3qOCi!`X(cWPctg86IzOt)yJ(5g(9P7F5yBYqT
zq<em713l;ORD7~FhxK!Qd^7Hle_-DHIyh~EEjMO|f0A#5_N*q;+||QRv1y0sEI%VB
zVPRnQE7&N%lbooVzVKwrmMu+?I0Ik$eDJu_jhq9E*a+7K?_dmD<THFhWCmOLmd1ri
zW$jmdqX*^*H^UbrZ^y>m$LtaxOMH`Y%EL<}vU5`3Yr*z~eEDEO{7)M|coUd8uYQ`N
zV^Lr|e-+LhfNsWI-KDAuBWw*4>)8aCaO5|P>E}32G|~UqyRVk1t|*M-pTtY^B@E<7
zLJ~B2?Y;NjP48Gzv6dt#Ca731ECDsBNl+1cup~iLL`5{g-c6gI@W5f_%sA%OcfsJx
zoU`{?dzEKzFV26$z-qNttNe$e$p645!lwfB#TxP+JibLZBsB)yitB(?VjheDtR<YK
znD?8pi0~}%I4}e7TEf`C?Z62Ma|oyqH_AN50TsqP2TZVmVFGy$jzSnCm<YHbI2?E&
z7*zGRL)MK%omEs@UASm*cXxMpcXxNU;_eW%xKq41rC4!ycMYXjaff2TU2gt!&KUPC
z56ON=c6N5wn%|t3y3kT6<Se%_;k05Dv#aoX(I8AQ1o8$)s34Z1FCL9kD96zIaMTbf
z$my`LTFwd1DF-wdirc#hab91v-}v$H&_1mQD6Fj1I9qLlzJ|?nhwdbg#eXL;CO1=<
zd40U0kqaAIPQYHAaED^5=Uje5%%7yshi>F?%VFI`h2b%ZY<XeptETtKBu5;8AIij-
z&dSOPlOA?~Xc}2^CvBH}8%iAT=OFLHp@X{ongVdAy83ZYl{-3r{uXZiQUXPirFGSN
z9L_*5cJ$5dda&iU)9G3()^J}F+@n?hQkcYS%J$GkgagKMHfQFF&=nrpttnG|=xDax
z!U%gS`5)p@p$Go*Z*TK*GuS~t2;gFc7QJ$Ci%0sLYyt-edQ18j!va;3x}*8S57S=I
z4_0{ZkGssOdbDuOG)2eYU5Q<@3m;TOLEpWFMd)w$e04zdzXMyP?M~pLO~Y<~`w>;}
zUn|&~F+wBXLW9Z;rkB;Bt$D`9GS42^0g1<db~!wnY-dQ$(L)TYTdx%7><f6W7%6P6
z4;70haof~LOQVi3`N{j}@Kr)MzKH<)tzst^YWg@s=IySBr*9hD%I~-nm7Yh)G>ewY
z`3!V}PRPhqrQgSScCiWA)sUT9Ld$$P?1%_`^My2(gK(gINW%QW{skRo3l-Pj6dH7p
z^H<ng(SBIj<dZjPvcK@vkgwbcZNDc;M&jz(-f88J4m2;dyt95>v)Yn*48=RNcAX20
z($qgCeA%E6uDmSxx2WYWV<}ms`C65mes&K0%>c*^5@xT$46cGdk8;%CBve-ZCx6HI
zD9kNbG}SBSmxUs)q|U2dB%q~wMog~6a(tY>x!C1@We%J-_4pCt1N;o+!EhBN^Rg}D
zK3V{H$AWSaW}b1G=frG-I~u*Ij^(=W`m(sQ-$$D7h)_LMUESZORy{Ad3qL(6kCzV;
z@k{?WMrC!W-6o=f6br4EUTn>bWb$hMkT{MN(z1J(%p4@qSsXS>fR<p3MyG>dH%n+O
zwSRAZ_JXf}H?sji`OE8uRqf@9Tn{$ATkko7)~qLerwX#62Bt#IQRM1|iM1ubO=h#_
zLplA@ap?KxcpWY$3Y^7=aMM><_Aq})z8=W>!LMsz-V{M|y6kaF_ysSk#@_bFbY@-T
z6+0=VC%xMFo9}tP<{ZfIKL-##5}S^$$(N2E;|8ragyoMq1EL6;6}odRJ;a!ul_{N$
zR7MD8I8SrpA0ALxwt0!lpCrz$@U~b<jH^2^s&PJHB)8n^lkqz)b=3V2yP#5+gX6E1
z-eq~y#Q%tjtL<pNxDX3kTcFF<3K~<#ARa;7Eff_rg@pW$P(cijNQdca!=FjB#Mbjx
z%<+U=pR(h={T7RYN9JtZdr}W^5{6pS%^Cec$LZDB0o7RzZ`wM#G1<xnxshox&wD=`
zlrFHBA5!S2`42<<ul^pLrLU&FN%VIYF6L*!>m4_5H*jkyT@XYV2N61ixKXUH#v->e
z-a{(Ya#M<$?ZF5nt;c!rw<~nMD*9S*UAsP3{uJ#eun6TxQgiF(^heq~@{=+7*67xh
zWXU$k=wm;Z7bn{T2-_j>NBV@~pU;k>uLP$XiFG@Nc%M_>j-ZR6SoisIimw0#9ls?P
zT3qQ`Q_+s?1N}asIi+m0V7!NOq0fFhXJ|hD_Nsg$rt~e@<ng3UH`<;4TWfYryKG16
z-QlqF9&tnVQ>BD9M58)?NE=4|2zs_$!bP|wxBw}h3@E(le${u6nPFrID{Zh;=9_I~
z#+UVH@+Djmu#7oJuKoPRNY26k3G_fm$BA|(5uAoO4>%_koVE{<wR57DXHXe4EUJ=b
z;~dG(3kt0i57~EOhR45X#f0~O(RZgWJj~upSMGp+C$0~!ikN=WCSI*LtRxM&u`KG3
zbK}Sqzr_R~zs5cv(G>dJh61l&8#JFJ&q=SHN}o2Dks8Hws>Li+;AQ^GAH<wvcHM{r
z`R9)~lHUL7i^H!N0$Ems+5w2dBSwj1?W^3>;)`TwKy~<?0MB)i36Vp6t1$nC8_u;=
z8@5;E-h=cPg9O2A?Vxt}Sg&Ql^RsO}-v#|`XX_2lPd)t*hoBp1(U6a3hDAud5)B3%
zFvd`_QwvcPAX}p04z_+41PSaWk+~6oqm=$zbDkYo;HUV6wO*kE{G6dFP^2YsWOW*Q
z6y&aC3I~2zyZ;QkGj`O72SjYRAcG}Z5Hl(lS)q`z2tFmhltepbbj}oRV?kA+hnFA$
zF$f|9^jBYJC<>HlO^uCEiVAmVr@TAJUHxaGO^Tl#5&UBSI%o(8L-PgufqrYdgz3U;
zQkRThQ+f}q_RY{Nk^d1)?)B_|hnqAdf-#S`@n^U7mKqmX%(jN<DGB_q#SB{*m_AJN
zmoiau_WE5IM4B!<2=T)r^M(P%)IVl-U&F%<QPGEIZpA>LC3Lv|4hI48w(vi(IPjzY
zjlw}d{9pYI0^)zeaS#v^VX!SmtY5eY!TqwT?35IA7Z(=?Yinr`2z0tKIvVBc=XcM)
z>8cNwVFU&T>$1PTzUu9BES>p)%|8F=p~AYmg~4P}l~L{K_RjOOVe&ph-YnC16{Z5U
zb=)`^@1P)-`V()VUph>I0Rg`$c=A+@Z%rQ`AALcz$H&K^wn<=y$;H+6^!8SJ7{<iR
zjHw97oT(Iik9Wo$CnJ@Tl5!J&cINb21UK?dezDnshKA-H7|4X)=;z_%L%XuOTLMP7
zcx=EmJB{ik9x$C06$N|m2>?`so0(um&|2|Ey;O+>aczG<VBo^tU5l%$>*Dm(R6Hv5
zFiy%iIIMgpZfs_z*J*+WCw@0OJ8MYsYFeT(5pBFfyd43H2hPK_QG)w)>DkV1ZquMg
zr^s^&8&A&#)LIq@Pm=LE6SfMuQp$S!_VwKF-x~|LA=>6bYL~zm79Vk<77vlG0Lf)V
z$T|fO2wa!kz<^xVFE1}|>Fc{Bn=^7_%v1v7GRxhfLyqPqCW~Pmz$UvcJ$-%FMPf|h
zjK}97u!-oj`on^w(txF$65=Y)RCqZK522JJ$gL$01B;1*l9KZ8SJuiFN^jr!x7MaI
zy|JyKp*gf(h<#YF!ElV?<h2OAcZkS&=DIxdM@ur=QeYc$%ioT`QO|OnFL_^M<-X!<
zt+<gT;W;Q-tm|#jv(u*0;EI%#!(lzkgXCE$xBMg~*+t7@Jh1nO9eFtQ*RNF;=|PUb
zdi&hys+KX$lPF6SLv%;e-2k%S?Pj+{rGdv_U&UH8+h#(fkX1XP7jR0`5v3UsNgC`Q
zLvXai9_Q@NI2J^5{H`<z8aI?4Cj7x*MF7_}$uZSLqlooT0F|4xCBNdsARsjl0f}1i
z7xx0Wqb}hAv3#LfqC`k4>kE$TU_E$RP+a)&*-7`i9AwZRfGS1!JYsJ)DDtX;0!9;#
zvKWU@$Cdy`Sat9#1w*`cs%1k&D~0cfPz0=IV>Tg+_5(<@&;}HIyyd0vHfA`9xDovL
z_cgevsqnt-wP*pY299U~Ui|OQU_>*g^_T&rqh}3pYGmd+cQYEPP=+2SX=4LdH+W0c
zdAl#z&<vp|Ot&1HUTszN%NK!*4e;Ha({iaix;$QO@{8G8Ca&=-FkdjeZU1OUuo~Le
z*|4|KX&NaRq)+cy>s?l04W@gh!9%!dyznjp?mH5`;60wj`c|hE+vgEo$1`vkyE#lZ
z5M<mN*y<-&<O1KmR$f%5>mkoAO8?Rhc)Vm`_xC;enYkPIP5o;_)uX^x+Ezb!jjbDy
zOG3Za^d*7sCD<Vos5wz8pW>KOfbLuxd~Snp<`_DV<p;X@+aKBwaJ;m+QVDJr`U3F5
zO)frd_qP}~vgikow%R`L$QC`7yMD$SHy#qc{UWy-{Z>MC=K@})JpYo}GI?8j@VW_J
z>(FA+r{rI*H+Rd-oTVaLxJ>E=JldLedH;U!CSRqsZk^+<-MFToV176Trqipxux<Y<
zq82Gzk{T~~5_CT8NC^o%YP25D6}6&ySX~J2gI}WV^A+r}183#`38Q8_jU_W&Qyq~w
zu#K*Rv72V?3bkD+z7{Vg-@Q0YP6NSs-B6K^apB^LeqSW;+s3xu;b9#wcvTQ2Wu&s!
zNwuvkZ!{9nr;rLBTvcS*6%*$0AXWS0+k+wBSfd8O`=}hlVMD4L)GXV$S6T7BSOdqf
z?0{sTBvVm`6$7yNeF=(_O@85?3XNRsyce@5M2&B)C!m>c@_8cS&I|m5CL9fft2Jt!
z%9ZXb9zv%j`(pkO_t8|eu_Dh~durXoUUW@X=*iNH^gfW}Tno4S^&wU^h<R>A?s%@?
zY|gLehuCfS_AzurEV;$-LSqhi(m3IwlGQn_17Re)DB-Opy7`*`0voQAGtQeiy?X=6
z4ss7ppN6%Rd}UIrV}`*WvWtN~Wqn=c;=5kY!)<Sa=B$$E@$$jVf0)f-W`1D|2eHd7
zm3fhR64KY1bZRB(XXl+Db|%_gcr!|c>>`=SRm7P#A__#4A4C(NB!BUGj8znCs5Vns
zs-|Dkm2VkM@{OA`hqjVs!=nHxt+f1M3uyZxJz}hT8z<gb7p=ov(y>hbz925|=p;e>
z6vMhixMu#bSoZk!^*Y=%{d8-tK=`@z?yVsde3D-$7*S^*B7SB$o6i!O$gaRHvhk)S
zt^S%Ts9a;hy92Juqp~lNnT&34tzg|jUR9~{ngv7M<$7SRNA(*)6ol(j>0g=8zGy*@
z@w|=kpEi>)w(4(J%hP%IUeOv?9j-}RhmqjLywLJJaqoOgJtd$qCWl*X9KPQF1Huu>
zBM{q%LBtp~+cM(Oew7)!SZ@b{che<TVKwOoyS)D`+}+NXNNa~1^#uheQZO^b8V%kj
zf>(yA^l9??R_e{gA89<JgLLUGfsT@xW<CBMxjF=*fi05ORDDz!LQ<q077|#G%z8Bv
ziL+}178=*m=gt;GvtGEC6i^5V>A}=;i4>mN;qZI0_6sp#Aq*OtBnb3W{~28j!Do3h
zEHd6AYb1^!v>KSImro)(G)(r5=1@r2c%DiPkDHwEma+SIdsbACv0Q6&A=WIUYmyL0
z%|Z>cDxOw@D<6(VorXgrv7aAuWyLc9UDtp?7;L&V!UzwG6&jw`hYMyjoVmrKqk;Mt
zsgo=A5`Msg^Jp{MXKu!QXd`X;y{rnB2V?{}HZ&L<#7}rjhcT1jq>YtNCiy;c0fq>a
zrN)Zwz%3C%6e6Ap3Ng}Ss8Q3tkppVt7#DO>p`YrCG6%xWY2e!w2Wbe53785HUC}`|
z9^!qPfyXQag$#u76!FS|A#P#Sg-r3|!{w$iTGmKz9Q31o^(r0OvyKW+Y9t!~!(?yt
z=eG@XO}g>tQ5qSnTj^*N&MHfdaN<$XZ;7RQ!fz&iA`_M*x-i=q0agiNDUf5}{Ti*U
zL{j19k*FM%X9$_HIMfgRoU_F$@THcq^K0`#PfsfPWhU{Hk#YJ2Oe5pNC~6(&&cOH@
ziYK`nM$-rAdk1{zS6`=oMflFc=Z<9=8O%CD6i74d<Gq4lcLuZH_<Kg7sA%rMzp>^n
zv2S;7K@#gN!U8;XjoG2$n<|m&`2w70OV!z36CvLK$qc_pPif5ec%OBJ%9EW&Vsoi&
z-Icv8)En(J{)@uAm7@mb<HZ*1^);XUkWJ9)jzK3c4EhE#Q2K!3I~E^UaR!l||N7X~
zyGS&!K<DKM>yKYSi9Q^TM8s|q3x0_$8_B+xFty}wJAhAs^3O3f&31w-fy-^B_&8)V
z)~$y<U?|}7Ib9stzdf2QjmRyCy#@g1+b0|@kS9Xhv`SwdLF~5Lt_9T?_0A~H&Yo^y
zIO$unGi!`0OZA1oaD`5_dwu>8GoAZtdR<A<6{ah;*FX$Ueh-geP2p{dh<7MyVA=<Q
zXn5(>lHoNn&hu#NyiLcCUlmqb5<UBdf*ipwcZ*v={5B^Pp~6aAj{K?<zRq!Zd%@1Q
zCdGWa(KgLTVf3p~EPtSGGRQ`ti{V;+KH4K7Thf^<Vn6VOm$Xe<4zO}6el1$fd)RYp
z(;arluFR%0j4w7fMXs}?245zgJi!o*&wH;)uuk)$p3oY+%1kA9M-*zS{Kk?I%x~Kb
zv&f>q<co?X65<V{s32fF47n~P-xcBohr<HRM;RdDqTbN_S25y~e&240wV*X-AL8e&
zJf=sD*lEL4h8vzbxR^sXJ|Yo64c;ScWF(IT5(w+!$1XvyRkU=ljxB2X^0Ya8g(G?*
z7q)vQ{`VW^`c0dD+C5u&PxzUwPrz42F{p8$B7)?9c%h>nB=A4Wp_%;l|EM9Nl%B2o
z<Mp(Mh?TA5?{?+jro8R=A?6U@8pdCbM3xlPSRScJyyywel#i;;8_mqO7Z7-h^A;hN
za%ifQ;KQiaS4*l~zj8j3Qj-iEt3ks3%AsQ;P?!@+4|PbkQN8Oyg!l~ti<+{OQK=Fm
z63GSPn+uC^8%v5F!P?|BK+$_HAV`yjtXi)&_a4A&@r-N90rogDky*N*%g~TXBx#ey
zXkwyD|DfMaA3#TpKe@bQD=G+ZeLg8flAf!G9IW9~S5Y}27(6)mIc|6G8$HE*H1!!s
zO-bwTT2FjC3dDl6tW1rO(d2=$PGdlqrlROiV;yD)%l*jr<6W|>EI!_-G<54&c5E0*
z9YBbqOK#>fHRlCOuHfLLl8gyPmcTr%G!+{}5xp4-VF;x*a~P7nin_X;3ef>1C)`9h
zF0)>SV5$c<7Z(=RB&1G{7kEsHYyGBE2}2w!&{DyfE4xp=u3p9!qF=tw(;J0jYi@2%
z1DZTZ!qvlkZ=QmV=7mI_laCM25o;=F&LkrzP9~398j4k^(!=M{qeUpiB0GTMca~FW
zG%HH7WnMeYo^f)FTxv1xxEE?TQD>?mF)dABZ(E5iXBYTmBMnFu%-&$dra-x|0%x5l
zZ+XBk;<O#$9vGzEA@kqvgfOp~WH?UEpRwMPI0`;$p)4VD6gn%l4nP?P{`V`B7;J58
zOSiwM!JSFM=0$H5P85Fv0@1Hbx-4gu`p=>Ir=Df=LVhS*YI$Y#w164pAU<i-x?{%0
zyCd%G&I(oHdf}Cc4Q**sxVJ&T(GF1!dyiF4={>8%DayW64hZfRtzF|*nJlJ1EKxam
zCt$0J_y`K9d{aS0Y?boto(~}PB>Qp>W8r)dQ8M;Lay;6`M5t}YW_j9Yre{KEFak9N
zL+E1{c(V<4MYsiB1N|&13SWrqXovba$J;KJ1`1qTUnh3lQWCQ*EHHK=F?a+E2RRns
zhUD!ff#!rxB!j@9)Ni{6!2HZk>&vKqle2<|jR+@fcK5FVtp{jk%blqAKkHY1|HkCv
zv!ax!FUH=%?XSe<s)fd&KdHrXrvn*sJ6Q|b@Xbv5I6=9b(jF5Za0}^<eXR%Qt4j+P
zH%uM*KQ1I4Nu~2_8^PwA)N9-@A<m*L>bl=uTtA13-N4Y9>LqmIq~Iv#b6;OyjdV00
zn%7p%XiYat@P2IP-I|6I7aGdt>}xF<r48Aa%4dTB&p4FMCSOkYy5@UKsc|*W3^ka@
z-Qz!SQD=a}l$2~Q<aS!nqPuFwcbw=%pXHd4fiq#Z;HtsxZ}`i<>pl;%JGJRtmN#D*
zYWNB^S7g-H(Sf>-Zg*e7J0a&?3O!3f>Y_@jC@qsm_ugvhz!0_4B)$)GVgr|!JZ_ju
zSpEY$OeISx8)`Mx9>dD$m>AX&<>nY*ZfesrQ`oZ&^-nr3G2~9FU&p)+CQpnUsZ0lT
zq-uHYY|F8kG#f-F=E6!|L<TsV6Wi{ka{H&pV-%9-6osnGbUrWu7Yh$@WY$PFS;9uS
z#-Ek#NF$_B1E`XJX>MnPpeBsU9JHV)CyWAIF!|Yr;EL?fz#LAbIBZ&{ZPF3+%0U39
zH^VZ4ERGCvxsgn#KQ)IF`0{gO?}>tJdch%ROH@}sO3bM`td+|Zi^1RivF%!e?394P
zoF_8_m&kR5N~y>)FVXCpV>-j1q>VT>K5Z3|)6gK5p*7*K(Mh)=$H1X~khY)o)WBiW
zvw{31nya6yl#<?K4|~9Q9o8WY^Ot2lnMvGwVtJ@8{x=`SaSgdh_z9i(h7BfQhL*!z
zCkUS2=)B2r-cy7JN<>PHcmxiL=r@qJvuzehVt?4k3BQ$(SZOP2`^GCePb86$-!IlF
zrQr1%aI+jF+e>kTavZT8(Jd+-vb;7xHC}~Us4lQp-h|qH!_5=O=btxtBs9w|2jc~O
ze64cC2E!wwMPzV*c#DX?E;IHs>=EO}mChN*uw!KderI}cP?Cs?h>D2cj0bvBkat4<
zD6^k^z<@(`=d=9T^>%5tGyEE8z)@ik`ZSe?I-)xZE5d#qPdJjF4Tra4k!;|V_sFw1
zLgzIj#0tT~eFUge{3Ca%`Dy=T$nD5%ePb&v4V_?TIRn?Ycih|<zB|}8*t=L@TMS8C
z7zfMu*dta$d#!CA0l*x0qTn#7DyTu+u-u<I8{R0z{Vsj8kf%FSs|s<`w@8-rRO96U
zg&lf8Xc8aoLCQN1Il|flUq4etKO3G1NgBmxh){{`P6kJ}F+ecMilQ~n=u^xm`%Y#n
zzE5$?36rm0D1SqQ-B-6hl4ngAtg%esnMxpwzC?lFL1$v&pYJZm9GH@%)WUS+;xeOI
zEy6}@aN^WabtGT--QQx)Ajar%ZSkucXUnd50f#%PEAB>uhvnG%8<pLzxj-6#^D&2S
z#zz~vn#b1};hIZbgZlo0W{>4e2^*t-2D%qLF#Px@(B8;=)uc)iZJ^-FtJXM<*o(Et
z>{0R{A63k=h39!!`;O~~0FK_L6=I)_U!nIhr*RHog)nDpMk>s^X1_1~a7iOmO^vYg
z)B*Zyi<9P|%vDE`W<j^Z3h#AOykjaWf&hsrQkmn0!JAXuK?);@$&Vq6IV;H#OGRga
zFnCCzg!W@F7<dyxzBteGel+d(!0bQ6pYquCtNK@ULdoa$TLibgvT^))ezhE=61=rX
zOLusRx1V2yd@`j|@-;t3vW}3jFeOtk0xk|C?jr@-_W?Qz6bwjtkG!TM4MgBzLC^!)
z%&+!#{5h;j+?wj23GY5)Ve*SqSxe>UQQ>|P5<9kUu%lr(jfiV$<jk(C@)Yv(C_#b;
zkY>>LSMOG{k*IH|#}miH^$l187@tR+h%#_n5SBZ`L0feg2J|!tAyB}pW^$TwPD=xr
zO%B3|g8g+)w-2^4QY~3GHt)u77jaj$%zMoI3D>BJe+aw}JWvW!WmaPhq{>JD^+ey3
ze`#I}W6UP8iABQ;;-UVDK$ny{QI;hm5WlY$L3lrcQ|IJ+gW1yNy{U5P?BzV>sXsv=
zKD24JzPZXBKpB}>Q`xr$OFYv+J@yGk(BVnekIPXBZca2Bm>wAk9x3L=GchJpPW;ZA
z-AVuad^A;YZvDr)wBQxE*QJ%(s{dA9jMb<y{sd+%n?L=?0F{}z>EZw3tkDJw|8x7)
z<$X@e4PKMvm3#{72JVYB9EEXEb5YJ3&Hc;48fAmmAIaCapK(dRQzf6FU!@fl6&+c#
z>a0p5A?KoE=rxVLz2hVYMobU*kE6WzMUNI#jxuIWB~%zXz+*Abs1yq>3<3gvoavB~
z54{RaAtT%gD+_Zrp_4kb!+~4r(9mnPF>RI^Od@E@a1_ZND9W_;&Xa^iy%&p9$FG6T
zsxVt4egS5GZrkF6BJH2I$Q1Y@^+HZ#hScY|1K8R;yIzKwL~82v4t)lC!A+AL&_Zt9
zn(H>(L;5nh2l-yLZyUu{seX#S9Uzn!=qEjR@r2Yx&%T5W`1X9G+LyekJl-xwd3a-7
zV42b?uip5m1%JSzc)nA5_d0$0(pza+W|oP1&Ud^xCc?LOsFh&#S#$fX5C0NgJ0f=I
zeihll+L$@kZbW5nKxM!A`Yz<^*!C4seCgil1~Cn-HzHmNrUc}!E2Q-Kj>%M2zFH(w
z{iyQVzxG~65omoq>(luBc{%(*AqfAdvXb^eh-a@VjrK2G{8W5(9h9?76uJ1yp$L$X
zO^}c#zP?CrYdHje56?!YxMTO9LdyWwY(4I^u-%LX2yNimIb})JQL_eq9BdVZhDR(M
z77Gw7>1Y;=Gvn$eaCBhUeeQ2m?;Xnd5@73A3^*gg&HmQcOpk5gQ;lta!=$9UQ<#Ag
zFO*4{0f<+iXv4{ta8`ybU?Ok987kx0mK~isWxgM=V}w}zl?#LC!*oJ4<*xUzLA>hv
zF)9r#3yEwhK%_b=*7<TcSP1pbzM^*F%GMJ!jL%_mp!Ix~yoi>O+)u!2U7|!CX5y6T
z7>6^#M5P;H6mxS^qe7+;P{S;jHNrsrg>{1OP77?r*N~2zs&=+=BrWTj$;Od~>#lG=
zey1p6P@Jq3)RAzs)Pt<@E&0$-a${)pi~}k+A^)aH{x+`j>xP5?8$;UZs5)_FycdDt
zdgt-xd093XscG`|JcclCX5V62hpBST<VnkH!s|Ix{wIT8i4~=e<M&mK3ne6oHnMmk
zTGU<%!C4tv^S)EO5p%t8&2pTFSnE0dRv1E!7gN?a5_?BSM;|dA?u;MJxH`1IC{u)a
z6VNkW3EJKHYO7|dM4;q+^zd&OtP%-@02!w$F3~SZ2(=17Z!quqPf8amJiosf=bTL>
zP&Cx^(u6aNa*mOXeC5WsE3fUBiq(<E&QR(kAhz7o7oE1(rejFNHA=YGJmfya&>>wa
z0!@onDHdY3(h?hmc@~UEUJQ3|ITjxUq-ZXi@Q=uw>mQGhhvPcwq<GaX`=w$p0wNRM
z7y;Del*2>7vbbRIm_uq9E1{!|Iyw^8VEVYLh`G6gN2CVYucbqVezGx;XAU`+L;2B-
z9bd>y@Q~O2W--b=O@>0i*kR;-|5v*9Z%JRaGnh|Fj0{;k%__}3)ahgnin_x1Sb)4x
z)4X=bgjm!SUpBx^gbnk5!CGYP|MZ_UOdSn)(<`343d7jqw-Pm`LDMha^7q<R@_wPl
zuAUgrg;)l$!2RaFA=HA_aQHspu@&K5|J+Ak9~_gblVgPWDiw9@fT0rbQ&YW(A5gEr
zbtYXnxp>rL*67)bJC+h?|MWXj?lSnnUR=yLeL!mD_?s0d*ptt5duwQKyYUKDIe0xX
z>_s=N?NlGb(@Lwg{~!>zMbtANsFbUg+`)coTIUexh0$;l3Rc(2%p9tPn9nCfY%Px~
zORJ6vN0J#m2=~H8B~~)mxcUGlw+f<+bVn^A{0fQOE7^7<@a!$nMGcGDjW9(8bc%cV
zEHR@+5n%5zA|v^z=A^^z8Iq-;(N;xv7D*hVFz38(Mb3+^NYT!FQ+l^=W2W!T9{)Pk
zezxcZ7i~LkORctXA;CCY6-aWGz`z(Fzeg9(&SN{He%g^>NeVQFzetNC{KGSXmE@-6
zqK(WBqkqsGql!ek_&O4Z-+}<8F;2rN7GZBGaY%=afT6?44}ptgTlpuz@;--Htyo(Y
zx*ibfFc&gs;x(;!8(6F~kM<F^BYTnxqMAcY`bs2y==H}um0BU29fb)2&RmBuQU(Pp
z8^KV@6Umf-0VR?kkR)84g-L<_j_U_-&jdGgZ(MSRf_f~0Lxl2n3OFimH3mP4z1N#V
zD7l?5+%Hg&0+<nr^YZoferk+N#3Sa{VRgD@`Pm(Ag3oih_B3U9#&LY0mCDzTj0JN)
zlx3eRzvnPFFA{5qLL|deh)aZyA$K-Gu!^6mrQiaMNIT?MSR){VebJuvl<QwkkQEti
zXn>CCoy;K$!{!t_;m3?zN>wz-M6vKaK$?*<LSw06g~D<V!6Vt-?xq<#*Px7!AS0Wh
zDjz8~Cy4oe$yPbV8aDGY^f<!kR|5w#ck&jUJk?G8W$er8tfc<gDOJBRX?uS6%lz&A
zdP5(=Yx(D4L1TGiQufP0OKd6^Pm%il&_OZLqMh-xHtJ$+6d3!Ha_>OnY}a496f`Id
z^mF8BXCk7$9h%d8oeh=&#(3UhFJpdNTl^tb7IVCZ)B0~OHK$NDr#(8jqR2YY$T&wK
zuzI!f8hIJ8im{v#U`QPv)Jws#{A47q^O-{t*T1?Ric~CV>YwHAYalOEbl40m_j?I)
z01fwGNC)E%|Af6Y0$sC|V_yd*l3E{(aRgj8MIF@JDF;N1QXDU`rvsL;;95g2L^1JQ
z*YKa3(@@Lh#~16SwMW=$Ttdfk;wI$<Dcglg{>es8ECswd0kex9bb<%WigGOZu%^Zz
zoOEyZOqQHRRD<qE^Sut5Z%dnNMA4v|PeuN{X|DrvMD*n|eRtmt*`{AN#*T!)J>B6Q
zf2p~;^BU8?CO(Sa!ZbfEnyV_DB#S_mW)bP5E_dD1Wzj_;w}bq;78vL_-KpDqQxWp_
zrso*+q(na5(?Iw<8DzjlKKX1QN<e+>U6+QO6EGM1mYRSw0^_vx(kyPpD$gMT;xV^H
z{|z`$-@N$wLNuluB!?kpH_c)6Jd$%=dQUetiHf4qOC4Y%KGLEjGTH`#&XxVfFSEDg
zd~~pR-CB752HLbNv1(YpV9$I<LS81hf9V;1HgmDi{el`)E0^<l=CEw$7k%Xn$yOG_
zZ?%)~tS@pZa5g4_Ee}%J9<gaVI`AzsUt4bbj|#(Qu4h2n2~A-i=BO8Yriuq6VE{!C
zEC955N2bDo&}ISY^c8N@Y@TLSRSN5zb`oScI6nSvJ99e&*?Cd`+UQ;RdpKd_r!E=3
z)MSKrgour+x4^ul*4Iu7i+2QTjN3-)b+Fx#O0bQh>Z}qT6+XykA;Lkk%BNH|vs0;M
zA={Yxo!j!4ND3=wcf^mXw_vwloZI}zMS}2|+qH8fQ5^b)1`!MmA_<eDOcr7mGPpW6
zcMZgELt+-5Jz6A@Nuw}B5T!P4kb3mD1Rv>Z%UUr}U-szbQpgLBy$BMY!peN{2&iV<
zzz?;w!$<8{FtQ>YA=aVv0TvmRP3K>tC6l6_M>K{FSu`LlJS^0|<H;><TcU^qhRdot
z>94Tt&IcXEZ=dB{boDIagjs?N$n8!9A7Z~an`>_F1sedq$m<})!GAnC^TlqS7koF(
zv4U2$v=2B;Z$7||=0WN?AY>{1H8}(GF*xXqaZBA`VfmS>WzqOO_zfGdDrhI;BWsGO
zr&pt;)u4)kOX$)cL~;EW1)q*AWKK4*npY?AMzon?>bkscNL0oCx#z=8M4;4&yJ7Js
z6*1FsbA|prpOUn5oqvT21CSXhf+$Kwb<{9JT$2db1^?_k7HYciP%xZBX{#D_kqIuS
z0!`~(BW+6Xl<z*#ljoGPO};jR&_I(wCLETzmGX4><>iGbDw7Ced+PDF(=+Nu(Y#b4
zGvY<(6z219KIPRUa7I$AdRK8aYBG6E&?nOT{DE*!rPtZ!AFGb073POy_j{Gjj`nxZ
z9&Mt)`9V)nCMW|cjx%_9{^+U5++aYCH%0tk=3p4q%xfTZ;+>P@&`2ZDLjMx=2ufCS
zX?}hupO~}_-TLV}KmKTYAgmuR7cbvKGc^*|6CL~=W&pBR@0=(s+4pb+=8rhlzCgW?
z6{Ay8-kd@p8X&H-QvQe9{F&GB^?1mvw<hZp<TXXnK>|R|Q|i5R;u^F!YWNehm>XV}
zC0KEHdB8i<Ye$y)aVhALZzy`n;2co?N)y%P&%oX~9HOf{=U>-&Sjfu%tmMEDvZJlz
z(I_t#Pbo;;8gGK0<yr9V=%;sCaE*NAm@QIoaP`RTnWX9&Y5LuP*^L<lxYCQzVjl^-
z;r4r649FP^4F-OAs;aGLLsi9Eb6_#Qq?+Y^LCXN9-oBJ{#4k)1RDsoPH5}~KulFT8
zb@)eWjA$2xybk9nUsbl1)$yH98G@cz%QvihZ3}U6`JDe&qGj!KF!!1i__bN(aOsIm
zrqI1Ak1qJ_W_)%B(6tJ1maSAD2kqnuM~bBxp`lMrHZjc+4vcj+XQy%9+C2}b0e;<Q
zIO4>1<|Vk<fpl3kTi>U*g3pz3hb<tEWW#w=hH^zg1JUpjKOU1W!I&6erTwYwWJQ!7
z%Xn--p)_5<<9s{0Ky&Wx?|d{LyT|tY9c?sU3ynV`%$U@mUog%R<u<KD+O$bJ(GxCr
z@aQzXVu2NV5FwC6d2l1=>2<U@?Y)PfLy<yXfRWFZ-P-5<E8B~ZG13%`GM^M|uz8gN
z=LwP_7EI56Phom{J$3o2(F?!ei`JW>$;n{2e*7?97ez#0f|G+5j?HjIsDAiK(ubDK
zeYo~|xJo0m*eXKw4T_!#JjZxs6P~P;w`i-IbzJX@p$!t<E_hvT`)9!n77-W!_dgrw
zRS=Ft)R^3$Sjcx;nd{CmN;2z|cWd(70f(#6I_|xMu?ZnhS*g8wcE%WWMET0==OV2B
zQsR!}%~cMuC4cMEA)UWx<X7`B(`(m0X}@Ck+wEn`le@2(-)*n;H!z%b%00GUVK@D=
zd}PSDhP+>5(f3T3D_Da8wY9(pKnK0`nQMkaRqy@xoZNuxWKa8w+lh6)<)c%%1GnHf
z>Q?$XEW;TG^4Q>smLpJOl@-+|hHTv!S;#&tvLW{K{R&@tjM|uilc~*~^lW`c0cmo&
zq=(3<X}C?#YT2Rrh)5_EGGS@A1+P;h{VM!*{WpSN?C;3|n&$$0YyNkgCE{pFxWlBv
z7%U6)HNQbdWTkGN?a91xngNEw<`&gc`1H><yH(a+$2zRlV%U43Hv~>$MP%tBXosVt
z$>i72XJ6Mxdy%)Ui9@BXeLB&5;#0<QjsOZF=f$d_T`4B4=!KkFFR`I$ezPku^w;D<
z11l?NhljK5aDqLN?YLO&V<PFSPtNB}2HSUJFxK7>ZU-%FjnykquN-0}2R3gM{<e8b
z?_Z=|21p8bns1E)TS5nvmm9LYVDOzS-V50GZ-?>nW%_&loFcqDKG=o*5*H*e#yoi7
zRYbyL++RiICm`=o$OfjS<YX{flq6{5Fl=BIaXw^`@SU?PO#;v#;IxBgK8{{rZr#IS
zZNetW6Um1?-6|B6!sFe=<WUt&Q-8E|EpAkqYMr6Mz9%f{uvC>IQ@7e6{mf`v`a-Y6
z)K~%mi#K1-a`WCa@}48R^7U3QL}I-yV9&^W>K9HCti)+Xxr0_zhMXC)jh?EHu4#Ok
znV<<t@c>lX3fZ53kPr=g6zU=$f)g`~KBl&nSRB<*NG$*HS^`1MexSNZ7)^p0^Bewz
zVp%25RRl8(Rvam$>#yxFwK9_WFq$5cu)>nwlCsE%eB1Kn4Tx1HSgIlF&34^{S(XAI
z#s^7$l>d$e0pUMS{(l@8)c+hE0wN6Jf3l7L9|!vnoT^`0a%@#`G0e)HEw9rAV^n#w
z-lR2p%)LE53}BFpEQJ{_;d|HmMabKv&Li^lp;noeBA5>I#1E4zExGou0Y&Uz+g~z|
zdmP|dbZ`DLU~z0;|MzMkK=Mn2;iQlS4_UWbS6iJf9e5V=kDMtpzN+F+71*V9pE<m1
zF}D@czoHHeiDyA{EJ5KO5DEZjcW?6fbeib#<t^c=Oe}yNeVFHto8LnE1A7ZECxgWF
zIS4Xb*4Lc*$iuU$g2jr!-8OHKR7t9X{|CjbOX=@QwTko&Sa5$auOv}<Cipw>*a!9x
zihr-!AD%ZU+fXozbyVkx++bD@#?xm0)D9Mp?{iB3WX_QU?eCX{R1aDdgQ+e67g17%
z0*#8x`a?>+I0+gvxXhU4EmWW!_Qfzut16>!Payg4@ZmY+=igTIC6p45u;KPY)mQ@*
zCOl2d1b;~L%z6TSz2!uDqC~Fc9thahzisD3A;KtlaKtD$N8?)+eb4!i>{nytm{Oqz
zBOWt;cNQ=O8Gor2u`;ysqsT0F1<+j9J(auahIv$%ecrL=72$_D#P-@*rn!Fo+7n-p
zg^|Q4<~Jr$M)-Ct*yXXqpovpbZ}C^!Jk?^IFL?V_SSr?%;7TOLgG6u$oCM7p<xxE^
z$rySJo|EQLl_rRGULPaGk(D&e%GWhr`ROpFeiSg~1C9z)jR*_dt!e9GMeagjA*}m-
zz<*B4*kEExLjL`V{8eQ>R#QS619K&qGE62eUb27#+BE{{E3u}g#Nt4~zlt;^A<`?k
zA90f#N)xDd|BOxVmyLbY^tTmipqc43^?eN_AHINFL&>P7qEb&kg~u^}`Zjg^Bx#E~
zb#!xet<%xbnHU*~q-crooWtw^yT7=Ted#*0DZkRt&?q=M{;KQ4!NWU!0@uK-_Tmv8
z92|bX4qJouV^&z?^&Az$a@#j~tDI-iKW?XKNeM|wGt<(rJkZH})m&23(}%C!LrUgl
z$9@s5G&9+*oG}@zs-nJ}YzPYp^>t@9fyHC-@$n~Gx9$HN^w%aPV%J7{->m1Bx8_cZ
zxAaX+Sip|4y##<kiM7(ZhLKU%uO+{`D_U-DZ7wb@16)pkV}e_7aBqhVBOMr{d_vEg
zm&9<ruqY!rcSki?cyKa5`C+YglB{Y9Nmy9XjM`mY|K|Dw+-3ZCaZ#3(_gsxuw}Wlt
z;GmeBn>$a~A904;zJQ8~s%U6PC{#&aQC>bmll#7zAU=Azx|&l*^~KIk835=WB?#oM
z3r%S&LPtU2;6I1L8%Ue0Ehz~Pu&{n3+e`7+6b1XzzJ!E`IggKjo)i=0=jEkmWZ-b_
zhUyJ<6nPMU9y4<W#w`dE2MnDJZ-Kv~klJ6yuj)yWpGR=xeNAp|Zl1JFfOB(5T!Mm=
zInIA>+Do|T3fS9>kl@1{yp0^3Bw_`R1|C@fqK%R$Vaj`p<Dw*p?dj?_x3_U#M={A)
zNCwC0o%KRwE|=c<Kj=jwXM+q43@AR`*-47?zhz~W=evC^Jir{Qtghx3m%-g55Whmq
z-oI6#u_BRA9_6cf$s?Eg!~(AB)hj9~N$IzeO3jVHB@U7cPQh%qgDpaTf=)LQt)(x)
zJ~?@D=ZVK}MH9bI>cA(oDXLh|b~7t!zcv3+nJ-U?7v#r7)P=wkA|VNhjhge>UdW;E
zwBVmVf0n-}B@G5}+$9JXTMq&GbaZtM`}9zrq>{^sVe-SVyEuYszGZh*w6@~Tgpr;(
zYMyt((z~B|L32t}ARouEj#5C?bHH`xJ@Gc?qSx&NdO8|p7fXNnLi;8$<8J1pg}sNK
zZ#eU&kd4~K$H%AS>B+U7^r3mn?oTJTD<**PQLK0V@87qM4uOVRA2hJaNG%wGoarGZ
zCgz<ej1=vP(u=-4dy_ScyfR@2BgoL$Sa~+mG-J4_smc4JP(xqq7#k=~OFp=CSq2+~
zvpjw>LQ?8$G}O5$Vxk^Q=zG1R9~8z~NgV*kxf=l6pN8KFciuUwCcyWG)&Qe7k2|Nm
zO-DzEg-*haqP?y;Y(+m>ew_!1vnCl8wUo#AYUo1Ck9=yk!}q@OtG6(BmN7-`|4JRC
z{BdiY78GVyT_vtRf___UO~8VYw=>*MD1K`NbO86`Mqu+HU4JhX(RXHa89xv7p5FvL
z_h;n1jnA2WP85)6LI6L#n|y3-$30LQ3r09c6oc?>ZDW30#*i*+=6oOYv$U1lj{2?0
zbpKrPQ_IQL&)JklnP0uBC%53Ao1c$vul|y#aDO=OxD~%!7Q6YDdOj5*Gnn1OO_d>n
zM<a>FVg5GBrbRQ-7yP=hShY^t=yg1&u#kk4`^}0LJhM!oX!LDQjO+Ip7_Owo*0q63
zq6t&DL7tG4ab9hpOsk}VRr_h51WupG@}Wa<Ie-Z*VJcX4oDJt2Bf8$Ma9l+^$gao2
zKf62^U?ddM4p^9!$*ezCrCmWKD{YgO`2PARA0MkwVj1k3KuDi9VvUv957va8C9#y}
z2l|If;AwyRF?>utNs$(5jg_`z4J;I0CSl~tpMN&NNenn&ZB)3%U{s+(jJi0F_!Hn8
zhZ6#xBNpOAQP6Uam`Z9_kg~FNN}_2<=nBuIq854@Jzc8a2YX{&uW}-uM@yt*PLGU#
zLL`EXX{-GTgC{yu8>Oiuj^s~h#J6Ruy@2*VlMo?8F*Tzb+7=_ZyiQbcHELa}3|f)0
zNRZZzZa8X1Vx-`9j87?h8q41>_1nxa9D0v~3CunM!^NgAi3%PA_|yrT6GM|pwFcmM
z=${>k0-+yoUmw(WF~E+r2NZhMZ+pUMWFix2Z-4EmWWz<{aEc+#+ST}n6aVr3SO+j_
zP(?)tjBND+M&-?`pKegRY!d`L_GD}%2?qL(GNpK$<`2%S{`O2&T%`OlDdJD|A?9Zj
zpP_st6%Eu8+X23@X0e$X@q3RT^e5o-Ywk1~x4R~>Sd9fy=@k%kbJC>9<H-f36kR8T
zy#dtrI**~QL9GgwCSo{$H8AUg7@B^QK4;eDz+BVSlYx!(z<?s-f;Taw<x#iM%;zhI
z>u7liXK?pqvi>@DyJDvu?`-GTQ$DPR-$|s&v;bls?;&mc&CKjyfQW1_!F{fYRiSfI
zKU7m}WAa2lCBbv+(1ew&SrSW)HD|1)myhwn@eJYW$lBjop=W60z|W3;!z($wX#c6e
zzw}Mtu~T6qg2#f79JV?*BwWWc3!Tnciub_89Vb;@<P*^AU~j?}7qE&h;xzjZwOMM>
zXErUhBF;bjq6*2EC~_B@42Ef^jv)<c2(i`ki0k(8-!Nlj_};Fnz>^UsWXf4A&*Gaz
zh0;CFYb}T=39_6qZijhYQFHhghNE$h`#&K7F~H}V)kEx{Lh=c9vEk!vR^zd8CGJtM
zLg6WilREFXC67c#cvp0P_c`o_xN(BrqiUV}Es`vprDaw*@yghGD(*<@C2NjDpD0}~
zo%|#x2i6lK89(OEfG-E{(EQ{4-AY$v!N9X7ASXMY5#COdJ*0OI_*bv4DH)=uI)^iP
zh5nFOXihx0>ZZ=0*W8Iu+!w4zBpT@tw(@#C=nP@I>?9ET;RZ;IFqt~KDSG+Zdm<ac
z`(q0j?ODgWL*!K{YQy~M`uWTp%3<fke37_5gUmmfvfl1C&Z$|<{G66s(n4gu6Ix6*
zfILv-U>joP>d9!%+xKqGEN+Y)0{`JK>s@sH%t_8*<F%CkEG|Bhy*K>Sy8V!(+8f<n
z`?o`LB067iKUI0TsPwba=L)uuGx~TM)XFBfVWxjEHrLYnjyE1;T32tBUT@TW4Cwdg
zIdZ}Bdh`1Yw@l(i!3tFpCPGUiaar0yV}e1#@H16aerqA_d};-lYXr$lh6M+tp}<g~
zRJTpVym@T4(VJz`Fre^MEocmv<#F<qiCIZS#?T_7eGiyu<d>dV59Fbtlhl+(xnn*?
zst|!ho2QvS-~c9ngwXu1pTuH~9Woeb%f&Hc$6!bUKtoxG17#XQ*t!=3?LLs=>XE2i
zsL%wdOh>79ODZ9KoB2nOGYn?6u>iQRFi9ggvWM)nIxm4YEp!97BHhS1dp{lqx)A?<
zsEkxK!cL%ZQV)C;d<dqMiw#Q_BMbj+P2t9j5$fDi`TngH4&U>^$j$eLzn`7r^+p~R
zpYqIbz-;;VvE)G(#~wG5Vbb2$RSPE%xG`?mm?v78sk$xopu1jv*TT!uFHwR|P}}E?
zk^@;CdNZ+6WTCl6Z($rox#|bHP~H6Banm!Qp96vExkhH`=0T#W`xVEMvN)Kch;IeJ
zdl5F@QT&5{9RgHurNg)Gvd;|>7?r?SepvZ-WaF^t-!<0?D$pf$l1r56xd23Wc$Pv_
z4DNUcS@c+Q&gGI~Eu0yI+sfVn>8I4%@t`scW-+qI70dXcaC9AOm%WYAVBSR!j6M?t
zB!MVfQYd?}#uTU?ua?Fc?PjTx5j&)1TUXc+iw(3531c0!#ndV74+e&LoGs73p&aqG
zTQhg20oULe$?csLw4|9mUXz~=P9Wrm*!s+|U2fBA#x7ojE;g)$(Jy=XZ2R(}zW?G2
zOMAw>uJfL<v4wD+@4%BU*&v^JtX%RN60;G|p}w`q97Lx<T`eb1eECiNqd(iMZqidB
zJMM?+%EFShbC%xxo#(uzdify9fq_uH6F(|b8_R^LxA25lMDmXk-V`P__PCU%L^$kK
zZ85k^YZ9@?V1j#f^NNk1k~AO8;%kpmz!?9fw^ebs0J%Xs-W(BPo`|QhoYF<Au-9Lh
zrHW&ZFJ%yYM~|CyL9ORDB!bnc{GUCx8%^l_mE|V9F^R+)zJGe^Z8M+TC$<Czb2?sr
z+|vsuTG)O3Ig@_Q*<39?l?G^9J48Pml?N<*_^*l7{0{d55_>8hMhPCF)(9REC>m2&
zB2f*^J9vvb&>!GpZzb4!&oM(fgkjc14l)qM>7u4KhU+4Fr!~kgx`tEsG=|eY2f7@=
z;bBH@I2Od#QrAmj%fGiEK>FPfmaKXS{S0g1bF!<)f}L1k9AErHg=okb<^0B-Or<bf
zg+%b9U;6r}1zD&O(3YNJ#H=O55HA_YL7l%qjrCI{Q7Gv;<s!ak)#h|tmr@Rg03qQ?
zqOesyHg9t}<_+j7Bl&j*aB5R{fg#|Z#p^&ql()KYMTOCWkE4FHIavPAYn3uUtWgnP
z$a(oZ^Pt}l2W=HLaN;3Lk@8{iQI0?%)m5ysD(J(4K|!0gy28!FGH#41Q?g1+Hug?Q
zm$-X`YFVTBcW^l}Ho#ObM>=Hh6&Y8-dayY51U6!o_%`lGoI&RHro{<tLJ>V*Ln7m2
z_*>ch{`Q-kwGGmheB4Hrpk{=wNKy|?c7}jm4BObX#G_Au#v8;(E-%?Au00Z?mC%io
z5E?_G-Rv?~Ts=;X&(ol*bz>y^==Kc2OcsW--jXL|x$wKN!Jm$PqSJ?l^HRe&fP917
zb-dK55MEfY4#tC=_y;KH_`CCV9_pKR={#8zY_f4fc$s8^@>EFBMqvtS4U=;XYUpG{
zyjbq8-Z;q~`S?y5?EdC#AEq}ZIm8PD=wX<`s4fDy5S!^nqL2h0XSqMZ631k|Qz8A~
z<1bblUf=8Ioa=OYqpr%qsTU$7w$fu8*7N(GXOlZK)IsT52EP%ML(PouIAEM7-Fxlc
z;`&?oAdUYZ+@TnFFuj#{D_H+*D(>8Z5BpHY$dh^AOlQt}ak#F$ON~nOs>R3c$7jiG
z!i!4e^Tye~M}{rI9MBeA^u!Ofxq9&DXybX#BsiIlo1A2ze@xV}x-mRTdQpMYTOa80
zw(xY5eVmJ2w0B(QaorpQ_hfM;`{4JtSbUh^klGr0+DV|9$Y88cH#GU#8{9aiRM6h}
z27bLAxN*`Krp?no^BoQJHm&ydk1s~>V|>eW+(gd=5+c;a&$6mUdF4K3(^;>{uxk;D
zMgqD;vTREt!gzBtLRdH3A~Vv+o_J%ks=K>;#w|^nF1>TR8~q_g)t^4#xz7(2%zaE&
z#LaCNy)r;FOt3JME&Asn?)d$_89dAa#(`C4QFtNFuiHZZZkrTQ&(5zF<v;4E7YO;J
z+M2^Tgo!H{qup#B+PH(I6qdy<fC(oJ;^_~^_t(&cpNedc4sJtsOBfCP{bMCPM}0yX
zTkWt9f$QD1as%M|PIw1Ac+?&MNE@m3qL)s+ki`Em5DI)NNCx4(;tLV9Q^qHa__T{H
zFE;)WT-+vulz&tBECvxOAp6eZLm8xnQ4*pxS)XW($Y^+H@g7&EoQ<X>0nHACSH11d
z;>xgvzt{)9UVts1X@_)z{J<k49L8deZMp+!^WEe0(DeKR3PJz&+&3v{?+eHSfzw8x
z$t9UPePqc`R>OGEA#ZT&!S7yM;zDE*X?*1Ya^N>smsc~WmmfuT^JRVY@BS$+NMjQ0
z-3MGY<ey#VW`7F9TB6ujh85zxc<C4WC&-I^we<5S^B4_)_l8+4hI>CLUw$3wRLp9x
z|A3w#eU*T7>MTbu=)x+x5k)4@CI5|8>$Hg&dhoZr{|4o)2R`@NtY3ch3R5!A(#}YT
zyk%h9GNd9-*sL4=$^x7wWP7|Xu|NNFAbnS%hqXOY=(f?J`L^?YD}*?N+jd4nyiAe2
z_%iE-`Q(SM77@hpi@Y)JSlE_LSfPqd^HmA0QwVw2@`7rUhS~m^T+-%*)+$bLn>S|=
zA7QOW;%d}}&uKRR9g^;*e=U-j<YYJU4%SE5oz?mn%($b1$JcmkMpSBng9+tHI!<cm
z^>Vlh%vEsJ`t^F_3?br8;=cx0rAccu7B$&bMYS4Bj8tk@Rn4Ckm+=1|UFRHJ$rt|V
z*tX3{Cbq4KGf5`4t%+^hoN!{>wrx8To7>;t?$-Xbw{CT%QkA}4r~9V+ocHrSPnIS#
z>I;lJ6}&(rJtTiYteW<sS=O#+YK3Jt?tbyWED7Z?kI}|VEL0GY%Z<Up^Lz;{FGyFi
zp!x2hM`i4;>j<0f;L2ZaBF}?foDfHE1fySF0LlV*?u@AaR*{wnPZHoD9iEh)N}#l&
zkWYE}A}4=TxT+A2JgAOKCJxi@pVaG0C`<D^ER;NKL?;hRJQPD}wli)N&dvU@9I~J{
zojN7wFZGc+&4K7ZJkxC00A&|p=g4rqP$H23Jp|82lganf>j`3IO;}+R2b9MnDR6FX
zR_fbPUlt_|53PHnK|hqUv)--LpHXc$r=yAVRw+Zl6NOMT&f9!Oaa_vXk=_7Ecrx01
zl3Z*?T>_S*L}QCDf#JiPfQ;4}BTdyJp`w5cx7<j^YVFp!uY?LX9~qCszI;H1U11?W
zZ+~$R-n3J`V*(0S@J(pcU0%wU>(yIM)cLIV^yIb$m?z$9V>kXpQO(OZMZ$3UE<7vm
zK?y?co3KD>J`G*j{2d3Jki(otNcdN<xoGo><gGdu7}mvnZ1EHv7ABIZ=zLU(C^m-n
z6r|3)^}9aMGy&$Bt1N-BKN*<MR-Ow#1^~fh1WfT0)u3ylU()d!)Un-*?;;WcfzG);
z&T|#egS0L2Yu>VdmzA+6pa^4_Aysf#1>cEJnc&-gHu+P*q4dWxGR2j@4BF;taf6)M
zls8xyhAYtfA>kjS1P(2MP_4zAS42YfFN&#@KCR)JzIomWZ%0(q9h9dv3Y(YhlcAdE
zD>uQWt}Q=iw9H|>CQ^qp`=ry~F-GXy>EMWtXn+5K<Q&%ThxJ`E$y*upy-<vs80(g$
zOyJ2Ur)v(st@N*p4o&7njr76%6WRdCMW!bj?R|DdiVdA}<p&W;8!q^h!6zr$H-SdE
zFj$3JvUf`@$`Hfx6CS>|0f)|0JlLRyH68kr7FYQi>(x3)+dt)oUGX1E-jlnCNSo5-
z>x2437+#_=tX3peRAM)Ug{@pHHZM!m9<{xdX)wgQYnY;KX7BsiXQTQ8au;7UUa|f3
z12%4%P0Ke0sQY_>l2@L5u;ux%{So}ykC8Nz-?^;$y{8=cy80d-i87B4Z+={g>oJ5m
z3jLQ6PGGW_DL(|2sVdl96Ih9kJyaH5s2$YMwmn1wS{BQGqWW$SI%HIlp8(Y2Ww4S-
z);yYSINVgweBD_ns_6u`C$$yVi#*D10|GUQgN%VOWqm%s#LNYqSuy|B{ufijb+v-^
zU8i%?>#V6&6Q8L?)(B>A%)B6kY5Y&Wb{_<&Oje1~mC~K?Kuns`Z5gO~*)2NzF}82Q
zHTp$?$*R|w4L@+I^tyEw&GQCtxNBjFArRL_*+9{l6J*UdK)jem1^(O#p--E4Ykxm(
z1I5aL(Vm|>+VHLD`|;!UW-t%ehKrsBgIatS6&Eee0{{Dsm~u$eL6C)J83PWc)Ih0F
zFK0s;IPBAy6&U@kk^WEK69S<^yl?V5{`hz>L$eb-E+Vh^1D;SiqtV+bTsy-2=3?L=
z-Dr|-7T}CBT`eID0ph&{5Jh4sP1z~raS`cl4Z))kQZ1H}OeckD6V&=H6y6PFV76<s
zMBeNz8%_EM7u6KZ?i8F3w;1j*y$D;yHeSZzF<cH27x9C|{C`yLXHWI5F+NPjA=1z!
z5=@P!EPfp@*bpCp8?sl#Vlt}fo(*5Eig_fd7c9j!9nI3w(eY2~9u;bw>;j7@E6lIP
zd1%xh@dmI>b5qFk$&QplcHYMGBEyw6;`lbW_j!%dplm<1sQ9mpX}b-&Ul`aVJ<BI3
zlx9K*jms(avmY_8P^pWSU^~~QYxdp9QH_GZeS4eFB=h6GipJ&Eg0@{YA<#d6NsmiF
zUap0N3WNK`A_-3;o!HcmL|Ktq+4rk2Q)VDY?UI$EhP#)5NAh2X0*d=S(?8_zU^1V#
z>6hH%<7IJfSavI8mGDMFR}FH}42eqb$JDEEwGz*sbuzBkeSXOmwcp?AyIOM&|2#T@
z25;h>{WxEd+mkUQUzAG(`D5jSELrkmk_k80WKtVMQT{oY@6gxSRRJ>BwRnh{JJ(;4
zYmup!6*LN+>bBq^HMNhyljxTH={jF5_xjhUB8+a3-~~fXe@;c4zWBCcMS>vR@;%&@
zoCr5%L$W{Ra;`dMYG2T&PlwnGvCVy0%0A{S_H1Q?H)918yKmUjs=jm@s39LIkgbmR
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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-fluid.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-fluid.png
deleted file mode 100644
index 5f49a332f332252ed8135536ccfe256d397d5fd3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 209039
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%0A0Bql7v=33In-Pp$kB2_b$j9wTd)zVoOqCX|Db
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
Tn+3~m00000NkvXXu0mjf$0y{D

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-justified-nav.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-justified-nav.png
deleted file mode 100644
index 3d1e233891ec79b11bd4d0977c96f3cb6de20e0d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 136021
zcmZs@1zeO(*FR1yNGaXjjWj4FND6|0z|u>%fJjJpr?em_C>={TERBMobT1*@oeTd9
ze4h8c-{1Y`!(KakT{CCSoO9;PoZ0W$h*zo#53wk)kdTlbDk;ipAR&RENJyx`80f&A
z3WvT+Bosm_C0Xg$9@E>C(hrf4FuHiJy+TpR#iz|#w3RL?ls+&4{~IQT$Up=C-p!A|
z8xl;-4087wa)0#?K)ZW(e?>wkxvM}1{@?50O8>0dA4`pK_Z;b>O;{$hC_oGN8-o?y
z{r#(~g<AYS_y2#&=-PLU|JJ!HoAf>c-BAWz=;OXM0U^y|a@~Kt=L+LrWxRVn|K9(1
znGO&Y64KxMK$-4zcRN3l38(Y?_IoKQ3r{_EV9ru21Ba;-axMXJg6wQ6B~Q4%O0+uB
zYr)-i9~1S14DsaGZ+~^dRGjG2*HYgt{4z8g8}mF`Eq;0@RUGJ@Xn}uJuD|c!k(BR0
zE1`owav>0igB!%v`T4=JV{aHP?eM|H(OMc7*@I=1X5&_G%>OhkxeXAo8tjTB<}~e3
z;m)O*sdb174Gn#_)8xKq%71-+z<9bdLt3m;9-GXm)04ocV9IfRgYd$6^eAt6rp}T6
zo(v9Duw6A%6#r;#NbSojS6A29T3T`z78Xxacnm23vQaDjsrf_LBwXQI#oFC-P42AB
zu<7RaE=egVJ<;R>rf0ize8ibgT{(p9C-L;_-o)hP<&jZPVBHfp_y30Z?(oldaHY9Y
ziGCdqwcSKn%*ocoQ6giA9?%K<<aE6=;}>nL>iOpPN7)a+S7&?KZ;8QSkEkOXT-JJ)
zx}!#}ad2>g@1?~L8>YpAV&o5IOVRrH_#AAG6~7aIf5=p3+@>0WPp@4htXFNVP9@>_
zP9tTjLM1NfnH`6y@3lu#YHI!~$KF`#gQNUg;{PFq4aG2hGh2_}jc2JIlblLkDKb7$
zZp=tYLqp?i9&92ZAt5IcXw@(`lCPHA)FkHV<u%fCKp1jU&+60WalmjBQRfKn33`CL
z^gCA}clSc>Rk!o@B;V>|G%z4sHDd6^?4*3Q2*+$%Dxkuie6?&-@%1Y}n$e%!u2m;R
zrq5lng9Ad2<h>pV4?LcJaAx^tQpK;?T7m4xmB;CJ`c=q(^mDw2!sYAc=GJ39xg5~~
z1^4tCfrqlCaK(MEMIDZf^!5AI0t=3JLV;dX`w=8O28z7GIUhDVLa?`Oy5FPl34gG{
zsix=Rq&OB75y^i6eVHLFr?0P1^c?<Lt^((S*IP#!k)qr(g9ZY>{NiHH)7?2ryYUkG
z_#7WSc|ZxOtIQ81>?gBUbMo>+E52?W4fi)THdZI?&o;R5k+do~4`oTrh6x|5fx9bZ
zS5qqlVg=z=Ls>6fUg7M0si{eRm0<PLE7ciy{=uGy>}0rdDi0q#I@_liqxzh3NV<*c
zSj;p_?CDc7D_`S{>-L}r%Yc3GQ3MtNVjtmY!<~P!m*9uG0S~;_8!$VdNKuZ+1IQ#_
z9uiB|yYJC>J#+r*v;<f>JH|%=t49HHdT%{;rfZPKUV#jQ^+4R!CWIFqL&3s2<wghx
zT&@l>;SX!Av$s0-JVP$OXoos{8nV2!U%&1G3^3>0w{O<2L?&2fpRr<`f5o0wuLxWj
z{I)97Tk;*rdudh@EWlN2t~$(e#LUdho<@OfLg|v;+aG#)a&p4wbNMbSp#o3l+k(~U
z_SD98dBLzL&in1?)GczC`KIVK%Ry|;B8&^m!OZU`-knUz<{L*Px>eSxR~A$oGpvt|
zTL-H69$n_Bl`YPT`~BX0GVkhZ6|%?JW;cD<40?a>9LOOy2FN7s-9Ix#a>-JBSAGR<
z(gb31Bpg2Jcr>W4`y4EjCe!zva@T8Zkh;iuJ?s~g4w-s;XRH3}%U6iblPAZfm<!>6
z_-MX5?kYFQaM|Rlp$M0KDT*j!4lG1{@MvG8BZsKZpxJ{DtD=__S&N1+07pxy+G5#b
znjfe)%&x=ed~4X`hClr~C9?AM`?2|Xnz}c0krl5T<i?1GRFHb8_(fu3Vvg0|nP!6p
zC8kutG9k*;7h-#HwZ}tMcwC371(wV2t%oKtbL5-dFLP|87h;?uHu=g-TGvyp^0?bv
zxQ`U}yW5{+WjK$dxP^d?`cA6*z4Cvvy8J-DZU~HWKHy=#n-+j8s7K*KA&}G@>vX=o
z@hSR<LH)KqNyJ%={vj4>36%#P@4=Pv_S}#%u`yZifs~K{Ln-W~pTfFE1c?K~?0S*b
zw*sPq;~?$dEEO>hxfVw&Li;emtgYG0j|ATHypt^gYXcX~HV3Qkv#P49p34-zmwlEX
z#^5x|_|X$n@EM2cC+`AWnULd;MBv@h@^V6po`SiCaJu1caV1hSEi){QtpTOBR@QRG
z9Qt|YOT}AdWo5)PQJ22lQzapL0d6P<iYf&huOm9m1r84i3M#|nwlbK1Ind&B<(Ap1
zQ<!v_68K&fvN2&4Z)y91m|@JjyhX?*A-JHR=|f5n^EZM{SNhuO#5_?W&9<1xRl<ao
zIuaQS`d~cZA`1yo3eZx2))g4V#$Ywenml`!KKg3giwi1yh({0{&9Lyi55F?h{&(HG
zW)d$iFJ|p<{sjF*lqjYV)^yVnR#w)ZggBhGeN=Al?qczh)AegD8r1q|+e&;N6wD_8
zC(~&9y36qOG%Y6ARt`e6MLogmY~W`-W|;{nC2(`K{LwfWd@3<=*z@vu<4J%;TM7Gn
z(Jm`HJ<}K@D#n+U4D+%%$@WPE1)t!-65^7QyLyVWqvN8-wEvg?-@+h#KJ{)GVn#qV
zNKmK)#2v8G0Js%bGeu^G9s${Cj7;>Lnj)u$KAMia$oe57@YhsHCAQRc+6|w`u%@qd
z7b+xLU9Y}Voz)0AIw*a?RLoN*1@|z?*hXvO*%_C#9Sq9wxhAM=hDF2|cWg{k=8m>h
zz&QA9xXhd_4Nm)Ag5hM{t2-e+%;%Yc82Glym4$w7VbgJqvL{-X->l@y5!dOr^8er&
zGeAx|oR>iNIY~skv(gYF=ht$jhEA>kW;rK6zcxzgl6dNQ7xmY%qmoPCWIrAx3w~sW
z_Tj_vg?P+f*?W5^)d;BZ4_bA6(>Ufh`86wt|Fhi!n`_xoj$SFGnnnOE<!WYTMpd`^
zf$fVEmlm%x9(ER=p^rlZ;N&F*$(Rtcox(N64s0|MaxIs-x<9P+*4yI~ALAawb@<$u
z@y1C1!RU8QjPLm`rV`!OK0?4<K9&?&R-q_c>+1z}2Rkz&LrE|KB|&B=QGkeBWe7|o
z*g$Y(px-8P(>Xw}h(ddU3#ylo^YqE9;MbavPoF+Tgcobx9Gk?*ibter<i9Xaym?Fj
zW+LQ!p8(S+w|^6`LWgAfLO=C{<Un{96>W73zG<b~ODpC3?ys!^1`E=ze+7w{Oz<6t
z7zKQb%gcPrPov9F8qLe_iGq!Y=S7jN20mXRdvLjN8%uW|!P(X8#wX6x*$0ZQE;Z9d
z@RdI@!^)mH7qy@iHnyRgLKwlrQ!$ictZ(|7c5pp+jTn_ijQ|T=&X8C750LNY$K3@V
zyjaNq&9pyjLmOXQG!c=PCH*e#fhXMckX<M+>GuO?4YVoNsQN^+*0Y-rM%>{%C(y66
z?7olQc3)u#5UBht<%_I+{P^)%<@(?!F~nLR5x?pYX?qAK9+>&KXtK4SN*lqYp*q7!
z3}(ve<Monx^ic;J?Gm%Aw6t^=*g_fpXQ~F{1rV2MK^6gj&V;8c>y1ZeYm~tEN5Ocq
z#g<jVWB+s9n~o$H3OjT1Aeka%KDPE#x+jcF#h_8d)tPei$)4}^IiFH)>HC63Cf8vJ
zw5{)C@G}>ELqk_bvH-1)pI&2_BX!5EZ5&XJZ<V0o>FMeE*yM__d80yDQA;gt4s>=R
zYckNsIon&ac&jId(&rfbPsR)(_%do);_B5IlXS(+I$u0~D+kNVsV9IVJ%_lVqiPzr
zFZ9iRlNRREAv(iwf5s>t?7HyFPk;7}X;JM?d}M7PX=hcE6G4<qyC5hbGaw$VtDj)7
z`3j*GptTXl$;mli8t2<wZqz~$khh!UHErW~6FicP$tCW2tf>CpbjZc^nSXW9jmu8&
z>Z;{G4LF@G$7gGt8($3pCw*-6t}W^{FF_cuu7QDl7C0=jwXj+Y|LGr$#bti<Y|L1|
zY~0dxAX*&s2VZf0Hb%r`jV_dBl<@5jR{BW^dR&%kB@<<T3X0&HGZCrh#<;_q-&e(L
zehkbkV*3hg<2WtnRZvIsHLplWNPO|lK-qkW&&EeYQ&Und*8olCJ2jp_MOsB3Y#Cqe
zHavX@-LnfPQr<b<d2-U$Bl`V!{Wl!~Lk3t+V638muicY*+>T$40h2iYHGT$YhsvnS
z2Vd3?ea2|@exw_3ZIvbbZVYH!a6T>p`=2ak&&$3qF)<I{=Be`9GkAstGeBkE{*<A;
z)H60_Z4sY|+dDq4&gfu|R_zmD*&7+^Pkr392XAw)!b31`Dsi*^mYr69p6S0&k0YlQ
z5zf%}(T9`H@%r)>2rR%Dk&POt{RT?Bu3cYWX}`;Ko1QUC(5~4#X}S4!_KDDH7hfmq
z>iWXP<x`A4QyK<$VKVo8o8Mlw!j_F;jC!_@p#DFM<pwPrSLoB~i@M^#KMdh{cvFmT
zx72<Orrpp-KQa5~c(oXRs&>U*Ds7q-x-g@?1gZU($Ud!?yA#SQ3{-WfAGG3iJcCAX
zHgQS2Us}UtXHW?p<iKE%uqrvJs{P8#q&Dkq;9V36+?^dTUl;$q*=$#8s6`3fdInn(
zxdM~p?d@JiyN3?lMXI2`q2K)#?>?-121B{8dUr)a#{S>y->QEr-Cre7ckP5eP)By`
zU$rIh4L-42ws%4gqcq#be(<v-^x=a+$f{Fbdfw&LqQacuc*rEP7WZp@BqWsk&VY#e
zzPr0l?t@T(<NKb02i+4B6KdTIC|t+bq-1vtAl)A6K7~t3Nl}8pc=xe2P&p9EZjz_k
zz+h}14zJtV+H!MsmAk1eO!shc8R6mKnLaq+d%~NQl~sFmbo7Px!J{lID=XW?PRORX
z%fYWW)Y84}Pz42rmebSI+N^KI+#oOt*R>4?`6EY1M+Zm8a&B(!n!>_DVM)n(78aK2
zKYy4ml#3-dU2HAiy{qQt;=)1X^t8XVvdVX`x5q(<I_=NS&%epY$apUGXuCN*NPrX<
zA^Pib@J$G~unpJ(pI%<-eMv@A_7Cw5(HU!PYpVkSSz$4;nbozmnSlY7ZJ+Fn3`Rej
zO-5G@RW-G`goFemZsee@{(faI4-aeD=Y#9(SsGee%3rSh53G35OZL_&!otE@=(d)Z
z8HdJExR6OMTdp|DAM!kYY_+E1W_&W;-QCUKmT=48bfUp&AyZmWQBm8}bTxOiFy_1F
z?nilCetSE5J2IkK>p@A2z%{tVEZ^PTJ^X#X-d2UUWpZ&^HC@j2+iJQI8}qBEtxeG@
zS@=N?2<bSevEZ$ny4w(wzam}&#MHv#TWMKYN(0;XG*327)(VtgSWw#!thcqUK^aF=
zqs$M!PbYt%G^+VtHsQItFwkxLY24lI$I`;W=TDiL*8;FZwP6r=UB^H9d41IpM^h<B
zyyB~b()cGCjBgwq5-MzS<}XxBUxz1GK|$bmLCRQAMPw2{d5!P0$|f*ec(liI?xl(j
zPEAdH(#a-P&QV|VizAG&hiYFn1+(z&xf7aRjR5C^#<jYl$A^yk<u)tmI)*opJp-d$
z>m0V$lk8u9((jgK!qtdWh=}otNIAmU6kome=Hv*k|CMal9ut_8gMk&O%l1MgC2+xI
z*(~AQm#3MwEfn=-(Wl2f8v`mo8=Tg&HpSfY>{NB;o*EjORTCa#NTH-O*!;oyd8%N~
zJMr*rPyWp>94-*o5UkSQB0~i^N>^~8KsxDJa6Gs@XLjLWxmVu(xq(0FbO-6r9#fWV
z5Elu*V6^u0Dg!d{^i+9$WUsSb>VJ`B!v-5Q&!MC^d;oFXsK){{^GtfQbgP#FK`JqV
zI0wjYlH|DRJN0b$6(T^lPTxt^YieVDt+xa&i`{rE*`-7g82m7liiMLLQ~&|H?J1H)
z8Ex+n-whbK|77`m7fvmee@+7Bf=sdK!#qzmiLvV$pY4Oe^ookjo`-)hNpnq*NLWWD
zO;cpKWI1KIEDv>IZ@pRTWA}hoRPY0C$dlG9_ue{xiz<JMVmX*8dWxkn^Ad4RH{ie@
zK97%=Gka)U&5{D*VkQXvZJR`Ba5QYqnuNyXGSWx>aVO5-qKtAE9z)g8H#vopg2ttf
zjmBj;!L&41Wi=GN+XKeOP9SWxHgWebNA9;~wf;oUS|5tW)d}^tsP_}W!3GOsgVV)j
z3VI*Z>?VV_qI7z)WlIjtf|F6kfu(OUPcd!^e&c%1*}if>>~`Rcm~5lIW`@}8cRNqS
zAzY4A{ksEamKwKuZ+783@WPvWK}^4fz33_i)>bmZ*tMbTDBO<$XgUPQ$`PPf&y6dL
zLlHa1VQmBk=xW=IzT0r&o5>6jM<z&v?{;=^8;FbM%yi<!%<pXPbm%+$engZQU<^VM
zXmkVycwaFh*rfWAO`x3-#ZE9_CT}Qom(TX#e?DS>R~r{^=GI?>@2scFUrS6>BtEIl
z`{KjfTEoXL#@Hc<>x)E($YU_;xyU8y2g}~unLS6p<Zq~~G$R^;QEIVk{k~63Oxt$%
zG*^o+gpvI)!JgM4%Tt+-KN5l;JM1G^t6H?E-_hP`B1bJh$#y){*P(LpTEFqRz8Ujr
zzWDXj4;xGZwI_jY;_D@GIlG7Y{CKwwoJDZ4{8(ye-t{yol1Ik2_G6%~t<_2!J(u#m
z4!`BQ5MlJyY?b0u+BfGYZ@8IZ_tgsIG;de)HA8>SKP~?G^wUvqdFWpDz7XThD6JGR
z^leG@L3KL!#SKA{d1K0E0qs&{av_)3jR*<!(2jOkvhL8p;(V;{wt`Bb<l6wki`CG0
zW3TUG^C>~x$MM_B5LSN4I?RjbK?Z^uH-;!AW{m$~ngzX!ebDCTN1+OvkvuXgs!_pZ
zndYbO56!uBE13qfBq$jf84Vw+j6u;!9(oJELh)T2{509%Vnrq9#&x;}rv;{7%yMsB
zFL2;<tY&&kbbEQSRbe|;RPVeT`r!lSbETp6b+$IlHscSoZpZ}+vVlzPKha*;hlPeN
zEwl&8Wz@OtOi$K18qc=+WE`>5GY8mTo;V$?{sh;(F*IoPPM=sx;q!enOiK^3n6Wf!
z@e~5;YgH!#;bbhMLTuN@NdEHhH|2xH&ajkEbs*xh#JiJC;5d%Gc&DmQ>F$71A&$lZ
zsc2}EB;JvK*${QFq}+xElSN^&!b|};Axt7AUGr#1ILy>`1DoUbhIa6M#Fe{cFwv7~
zz=YXdZs(;x!^gopzyXu<0xSUB=IdiW3H@TNwm08Wd_dLuauG-Tx9C2w<x3J`-tCQ}
zB{$=D`^+W6qxaVwPxj7_H#BD(T{-h!W{?P24uk^|qkql!ijANE*uM8Bv1^(F2VsKa
zA4B96`uwx~ekfTwBqS+<P`emYViS{E{cf|6Bj)qXnBFv}PI`y_;D)&Vg5Zex-FOdt
z6ynq_H==&Qkn-4=29Q~h=BWC`rAB^e@?J;(ho&P8<S5d|v79<(AYqn(b^^W}j<O#W
zfH=CZFOH&u^?LZ0lA_H6-(rKQ(V1(3gVBn28^a8R67SYuap~7`0SAI)z+4{P6FYU+
z8P0H0bha4%avjdt<hG+%0<K`-F{r1LWR;v0z4%cZnGtD+T#P!S()DGk%BuHAGAH)&
z>1hve(ue)#^z3XTHJtHsr??)upxhkFLfAI-<BwYU(q;`h<=y#k45i422T2XnPzM#C
zqW5J(6DneFRGkbz=tB+*MU4UOID`vmvjwbFkB^UuL>jx~ocBiyHSf;NE-&PFGS3Y*
zG=JVErD9a+*V->mYl;PBU!6S)5JlA)b^BoVX0EZux`~8aFX{NeK2g|$3ekM7oGlyM
z|MM0&I$KYRy)A69O<OjNX8o>N>j*cxQMq@GfOkZ3cT49Ma9JH-PzO$S<q`S0oU(a9
z5Y`KHPCmLEB`SxapScD^FooD%EV~~!XQOufw&(i$eMcyJodr-)<(`m!zeswE!S^~E
zhv@}bJdqMP8D)I%+aKwDU)WHYBiRToI)3>bU3>0$PLx?miL7j$dF`I)7i*s#ZF}w2
zsAanvW^YxM)$B^$UMJ$!jKY1dejW|ev=6Y6eu-vuwIBNV<kL(A%1eg$+XPH_90$Z%
zrE@fMM90|2)oI3|j$G;NQH%SKtXsQ`Hr#WIJ2-M=C?PBrg}Ar9FEArgUE@k@(Cw=L
zzed91w@)X0w%yK`m8V<qzBqRoB7s9=bZs<YL#fR2Y3hx+_mA*r7kA6uRjL^X@OC&W
zbHhvB=Uho;rdQ{^W*EL?VN+sw314Ky9KN@nPFB|yJ^G~9d+r<4i;g_4E&S}8uT$6A
zLl7Ao8F|KK&Dt#Dp_KsKYfqw9eVkaF%lB|C+mFQv^APQPpODsuqQvS0Lb-aaxHI>(
z)8Mq$Vc*91RM&9k7l<fikD%atk`nBPsvV&u?v#9uPxYMV$H5G^{_><x^-e`EjhM&!
zm#|7X;@hM0L0x0Ahg<VsypFHKIz4NoIn!FNcAIc_+iq`yy!Kk$7kyulC0wX^pRc4E
zUq|^_u2nnt)h#FT63FXZV_DkQ`7s3Em^ammJDNVoY>MS?&GUl?QJ_27c8D1BC}%qy
z#a?&_D7|Sp8D~aq`fzLEWy?s}czQJT<h0*?N=o<==!`LmJk8yH@?@&9V|wavuGUIy
zVyU$LhXl0ly3JjLfMl)+Y>frhgnhKY0<)^ZE)i#NaxE03&IS@_{9O01*4vw_2kx`Z
zz3l*pzD{$l6X_hQPw>!5toARr${)+XC>@)f_t$gdXbfD(v~G;$rCQIIqL{(Ws~_#+
zNpg^7Ix2WhzNH!wKzJMg%h}1xlzRcPVZ;JcP4gzZynr>Xr0AzW><zy<_rLYLSV_gb
zIbV)LqlJ4P{cNv;`$iR{d_iHAzanM5SqQ?V@!oHL5QSRqeKzN=?0*EXO3Fk}nAgCS
z&T}^FG8Fi&?~R?F_wjFq2e{(<unz%8eT;GSgYto?%QU{{Cgf&$UhmanopJL%Hl(Z^
zeR7|-iELNg8x&v&m32BfGubV*@yfGqhg)U)r1<Olzxnt=_HBjSki=Q$Zx3XWE7pP`
zT)LD%&R*E>z^GnYKks%OG<C~m$ds@AnTbSmWlMSMB?k&lT;30^KsgVsNfpsB38o96
z;<i_?ZfM|gf?Jxa@1BFKJ(dv~MW;#PPZe0>#cBqw<n?}Mkn5sYv%W4GdJK`M&q}fm
z2r)0Q4J}2J-YzgRzhS1sUqxH5S8kvGKn_^X9@c3!{Vy|-MTd%@Y`>fL<j9y{Wqo3g
z(0=<|$%OjRj=j8q4aU>o*;&4qHmI+Kq$fXMvOgysKOtRncCc3;f>p!$tEzh+F!4tR
zyZVs&(G}o?ofHMy5fJ0NZEr;`SChP8x=Qh1@tJue<=4sF99kioBn+V$H1FEqXx$`V
zqS}wE6Cp$15)C??v`P!&7B=?!WOjKbu`Ym>(HBZVSNgj3`mjH*NH{+IHiY~p!|!Kk
zqy<UF(Nfgo%BXsJ1E}#i@^z(^2gd+3&H{_)=B6+|%X9=nQd|9Hu8df6Q4k)p+>=1P
z=3TU92XkPO6h<pyhy3J6D<Ncr@LlG)<71O8M^_4Jqa+QaV|43UeUgI_aB)9cj20Ml
z%0$8?Hx55UBQ=0xXbp)U4J?7mT2A#Cbjf+9-KbE1s?&92M@Xz?x`5Kdk4z^4<r=iJ
zXl#4t``0L-r2OU?Y*S|rMvh3b*x$&{)^mLMDm0z}J&-gOuE)ENp^wpCnbQ7JWX?SD
zr4RmTcqYCPBF<Valb{;&2L^GUO>n^HBI?}Mz#``T#-&J36?cQKa#AA?WZn4Moy%}z
zMJ_7rqGpjR(Z~3l1mb8V5*^G0Q}0mzB#0`B8%E{6{KR72!558L4U(FcF~WSH$U1Cm
zjFO5l5&eC<QwO&^J3a~VH}XTAIO%F5H7S;m%HkI-Ox%nwS7OT)m!HoIF-+#k?Mt_g
z*Da9aTPja#O)_1&$Ff6q(*4nJopMX^NjpeqJIWo<Q$W|H3Ej6phL`%W1K-pyqMtr?
zHjb}dSlKFXlYDhPSzO*q(KBU$Dlf~H!<N}0?Dx|Vf8db?#9|rEYMSZ1a;9EJIMrdL
z^MpEm68dv>i?yYbHOr%;ris*T;&W&#(%xmx)rrU;y~_+NtTjsQ9Bz~6Uz6`4(s$B{
zD+MjA&$I93HzJY&CBQsGx-icda!=4?WUr|#P4q)|I>@uU50xA`jeR0M`xB;F{1RR>
zn>itMBRV~1HVEp|b2~fU>upY<moqSB^+lXa?5aO>d69nW0lArIB0bu#LzmM>%K8+5
zEBwf4F{;!w?t-EABX=jVlZ<#0)MA=byh?3fp3K$I-UhXLA2WYj#B0!<aP<61_BmRU
z)w51#s3=;AZl1qTKM}MD6CBRg8BN6Bsx{-lD2`Wv_rT7g;T8+U^K{CJu?tOGamzG`
zGx|E+Dr-tI>(e%O08>y)IC-j(CwtC^=X$k<Z@)8BA?HW^iDrX1LpxvZmHp-k!0P2$
zm*#>X^)#F9X-E+ikZCzaB5C+T86Iu1`{E~Nk*gCTTfanYkE_Mr?W8|YV!=ruip2{J
z<lMuQPY99a^^gta9E|z{E4_N|ZBXaWYbD;-bYyTWM~+{L$v@B{<f<n9ro}yn-J7ly
z<xGCtq8uZX;wASa!!t}+jYTA(X_SGsIR+l_j}Ow439r_Yxfwc7mgA&UA$0OWyzwm~
zWwb1K)_p%1Rv-6T3G6i=sgjpp2Dc+ms471Dbwb)M;kE2{CP5&qugPa0Ybg*R9|kIE
zUG}>$B3Ik*AD_w#e&}Hif2#UR?wx7XLX4q>9hyB>J7EvxC3@s3!dki871r$kNKFwI
zC=rCe{X~DzQU^zd9E0#W)#ADJek&FhS|kV}tn0s)HMNO#wW$|@Ik<fJX~v&KN?mOG
zsW?ukD}vh5`YGZSSVzAAzQEj+QNO=kHPjI+T~gy;WAAnJQ)DK%eA@DsAM;{I2tL{x
zz$Y3+oDtr@uRqxb@|EHVBHi~A#;>MA-HTutY1@-_z{Emb7G-WCtc$HH#r~c2aHT5w
zoHikQ&iwhqB338MAsp3%jcud!(aMsGOROy1T+uRuQyg^YT$b3Z9jkq%%l-gM>Zgar
z<22gnUdG<xWN-hwklq@=7+C0`;bmTUpPN|G4TOnNOcLxE2vIicNx(u&em~grxu)2$
z2<+88ru3+!?XV5r{g&g$XDCz*S2vEe!lWs0K70}U@ynWl_eWbrMM9#tG(eyf7;Afb
z`)OgVz-;2AZQ3{YD4d@DM-yopVNkdnw>%dVKmMwwG;)pMGv7n4h}j>3_$uF@v3bF)
z{c?hy!TU;Vcn6h4pT}bo1quX*vi&A1FRRj+7O6bEJ{nR`jW<N$K0wxvSt4MhV27XV
zj=R#%mtWCqOq5SJJPH`f^U*$5KJ6<g+GhVVCd^oP6UHoEjim|F6n-gY|2e^PBxB;M
zsQQ>daJnqIsD&{mcxnLH7~rRPj!SZsMR5m91XJ*xZ8V1C^$B_97$>XCPx7PXoYZ+f
zVqDNXMfxIZXyyX)wp<2W{l0Bib{o?I85QIT*w5!eU&`tZ6)a>czE}^iX~(<59=c8}
zK?+RDc`5qg;b-$slh>!Ta89VBpKr8;ivLS<=1Yo&;RhVv+1um>D6tmbd+0NVZVm$H
zOMP}GTGm-D(#gs2w<~^1<i}XGm7kvtUMMz4&{A}_9lO^Ov<0ySq2#F^HSx~-YmnbM
zr4%H;lKu+G?k`Gq2qz2<lQs5WUycNK`z{%pq(GmMb-SL>qwqTCz&wG~?_dv8+?&pr
zP1P>rBeV;*%7_2Lsq@;AFH4%<V?T2teCX$+F&ar_f7|a#{NJt(f4e)s6ecHS&Rfb~
zl0S_%eDhhbxhxVf`L<d3z<~%@euV^}e;tu(w10>!Ry_eJ!{D&Jg=V_%O6$uf&uF5j
z`G+mqGCem7<=qIO;YNzZkfGLa&V&BfXkQ23p-f>_+E!QD1AF$Pov?Vi+Dz<(&iplp
zV{1#ujvBf)<5r-Whn`p=h>NL~&iHp*{9tC2hEtdm(Rxw<8Y?CkgmH_#gl|sHjUs6d
z>e+!$17A6HkeJjO7cdqytX@7t80#zI4sW-r+-|P5u3_xZyq3#m${|oOsnih0()d0O
z)0@(eLL4U|MfvmScP+J6N`gkZz6sf!)a?W^h>oB~*QIDVu=I7f=o-bGQhpheyrOer
zENh3_K_6=SSbEKc*^Tg2KFp8}AxZp14)#h3NbWPTfhxRmkTs%X#xUzAI3m1k@ng`O
zV%mQJvKRuX#|F`+Yuc9~ql@Ci?JHFm;eia|j!Mu<WZ7#!P?rb_^+3q{vcl!<M_4gT
zydgmk>%$P+ZJQ7HG4;DXaoh4Dr~b;WX16}Z$t*{XNDruCJzLER*Xm+QcXbMWfHAq4
z3Hxa1fbZ^B-+|uui}4YgJ!59dLw&w)V@c97RwyK~{y|y<T>I|Ai7#1IOM(wK;Afv%
zP+Cr>?Y3W5^flt`bCV-KzHUZTYF=oh1#<h8b7@PqSXsg%9ZdZuANzvQNfxUL$N06K
zBgRe4IJ*^{cwz&D(p0a@VHP9W2RIXp9}kAo1MZe3%XE}+W3DA0{}1DvVjYS8YQo9e
zMH&|onp=hb;m|_gVAMas{&LYWAE>LCA^0E+a5(nb0y#q^h`U$Toc#TWyFnsCo(M|8
z{8VtIaEQ9br#9Ab;@0xY4w;kQ7O}<CVjR$L=8zpov^Qm)%th!^;>(&=@v~~~qs)33
zTKr`An?NEQ2F7XE=HJzU5C&3$5jEn}fRJ_hNDNAgaJeiCq&}l~wB@YW_9H3!9c-Rh
zhI+5Kq2XJ!K_^om_S0`CmUue3x0kGxkB`1C)Z?p*hRC%OQ;|o6a5AHCd-+Qcf#}=h
zZMJYR!QA_AzLK3Tu;ELSaBwkp+H+SLz@19@ZGIpHD@*IijdT6(=W9{RMqLm<F5V7k
zr9{cLL&ipbX_p|>q40y|L~^Pz*f&TD%5)x@$bX7)3t|S_QzQ@g=fQ18T<qITh*Q-U
zG%}_}v{JU{k&B~QO(ne|1d?2lj<y*kL3Q>GH%QAnjOQbM2HDRZT3Q%92@7Pjey(4;
z;fQ!9BS#zmDaMWo;vjzO)79p?b-@gYSu!5oPLh5lnS>i^#o(>kbP~XCMu9=+Z_6qc
zAx1&xz>Z{^R?_NgjXI9m3e9?G`S=8X#A!=`x72g~5<L_D(Q!+SzYyZ;;B?RV#UB0;
zq0W9T6q(TeLD~1mM^~Z^KIibfsHIqtS`NNZ?<o^x5hDYI<W>z9XkpOS4z-MV-KD-w
zH?Rmp6v$~(`&0%EuFNi>iFWaIsacplg1}#&0UMjYn`l36e2Dqt@rasK{dQ$P;6-NT
zKjZaw^Jc#rR*G@EFsdcNk6IQf?Kj;fX)#Z#4zm~S@g$3`X;{Dxki7Vlc$NIbT#k|?
z+%b4yz1$&C)ZuZ?q)q;(P^i<>Tx_siZd*Sx)fIv`_lvBG`DbGz-94RO%(-!pBp7kR
zGahr?YHfTC$^))?g3)%(E)?>LY_)b`>DLgDSY-E{Pn`Hnn7_YlQosr|y_Eb={DVC#
zmPP7CIvP5L>G&9}h3d7v;<h@BvZpALoy-~=)Y$&<ugpjL3fwvR1-;bBD&z3qgXujn
zdlqr%L#gX!dHS<#9XPkp^`cvh7fPg{<)5B!q}GL3IoV2ZN|Vj#-#)W7bWBGn>pTq<
zTXV*RPBC=z>hBBrOFYqlQ2^h)f-BK6@=>^jF=%j5&a(@;A6F&p+k7;cG)atJC$z%G
z7<V|V*iMHO+iOW`Yio~?a^oXq2OBa=?=&9`2C*8zPVllYP%x3US@DZYIIc=Uj3-K^
z_EAMqno8Ol=DP%D7WMp+zWcizYo2c>xbJzK&RSu!lH$b%g*hPGk=+uEW2gba13hKa
zg|aiLu{Yl$(zwZU+CJ^7M0=qF;&H+=M7Y0Xr}h#K=v7Uj`A+T-UM(bBly14-*_khM
z>|#=V%Gg3g^|tlFS^p|=E>w;`a|+KJS0^}T?Dgwf9va9dy|EpfMDMKR+@m#Xefl$!
z{)^Yd6L?39;d7n37RC|zlj0u9_&x5One9mFc@O6+Gqy9Ok!w{lJ|K;wHh^@lk{y~J
z@7ev&mdDeA4Q+os>6u#uXCS|7EHWz*U4Eui(2j1saV`$Gk#$miwkzo@J{FZ(6TVKs
z11sstrDxFw9=?^0@#MMCnw_gYsJ}{{%!uEpI$DW|Eu#<U1!ydAG}D{u6*t`p*JVh}
ziJDd&Z}DEdx~PqyvOd0{G_JRH^_ET;hG{J0n|6y_9Se)}RwT2&3g6=D!AIBaUvKbi
zDkQ^x>;EBd7qV?;sLg%7=kI~ihR_&dJ6kpCK$?*k4<zgwBP!-U6GwGZOuli%s_}_l
zU}>&&4)oIHltlwS8UgWK{YWucw%0s)uqJIVqfJ6*-=1qH6W{qZ9Te;G(5c_81Pv>g
zl*L3-3_5+b`<}`Eu+27b(OQ@g-D3YBd0#Fm313S%oFNg@jX<=;rFO8Dn}TY7s%pES
zaBT3)67TqEAhGBKjUUL$Y18it6STuB=5NjX*~-x{Xip#5m#tE4W5cK9caD|I_Bq9(
zeS|_3gn_g8<F^dtzWzG(mb2{=iwrNrTyZbCO8T2^IluwKY{_xUsr&4ERzxLdcD^9h
zJ=(a_H*?tmL$bCV%~)bkEMsU#c4vZnwqw~Ge}VHO@ShoKLdorA11GewJWDaDW(w<t
zBS^I4uiNdQUeBAd_m^jg{eufR(WS5hQOQgR?kEng8C;af2bPl}L##ANe%{SyQ`+Z5
zP2jc<4h+0?DT!t#9POhJ&I)Ry2)%6%8tmLpGtTvvRCNK@^=wVpSN7ubwll3QiR_S<
z$aX2fHzQue_>l1AK!LN4$*U4x(O{Mte%MyWzFmLSGZ;ffmfDVBOs@;)n3$EB)SoXM
z?WYZ%Wp_tNdp!IVCv(p8Z5s^4w`YiiD>^8??j!Hw<HYgH&+44HM!_YqaE|?Dv9Suu
z?i2g0x|332tY|UI;4>{(H3j@x{Qap@?wR?kM?w0*99&j#g2)c{r4D)nM~I=}UeifS
zt^3lLt38qE8G`K8yv|<;B-uF_i^AEWnQcegY@tv$E&gNo=99xz`}BsM+m!st<M+u&
z=Oy-#_jcK(cI0TdS+s-k{wp`~`;Vu_U%tUJTJ~v~q5ih)cHvfUh;80<sgnlZR0ATB
z?}*c~IJTXt{?O3wYe(TyhcNq*6vT`=l?ze%sBhX##}eC~vR?+u_}}#(6JLKeXu7uO
zs&dW;KW#d%wxDruVoLpVC(TuCM@MYSWqP$KmeHw3%^{ixVzFL#V>Gecdh6Mic~CYj
z85SG$?jqX1DDR6RZfcFpwLOtL@i}Q1ZDU!C8?Ir0kA$EtX*=15&q<xt(tCNQ8A%Gs
zPNk@Q+K?dVpN5i(-*9Tpxsy+xqqXDuGn?3U&C}(3b<l<zUqNpc$N`~=i>x<I$Iv6L
zLW|UEL-AS%Qc3r*-07(fD@4)R#O>ILWCUJKg<bZvUbY>RxIHEq^*r^V`0kA_;uc-r
z?QN(b8E$ctQ|%jfz~q|X&rfr1-Ou5tQz2vA(e~7YgZp7SE{-k++4?)Nt9!uq_&!=c
zks`H;m7aNy0j|1nb!d!Hk=hum72-efyS2YjpJS;%Y8dp)geo;_unJpIH()hh)PqVQ
zPIUAAvR!Gni2k$7wxoUyi&PxAJhNq=d5L>`dy5cwBCWO1)ziM`U0X#XVxLkdR`F!3
zPitHrC1rc*KkdJAaH>)r)1D3*DL9iM1?}B}=?>!jKTu$S6kk0<CCWtKVU?p=`e;U&
zSs`eu8;!liSj(!K1Ji)$5`lAIw#i*f-vd=)nG2C9%CZ5>OXoar<R)a@2NiF$A?#2t
zEUpWUfRN~jc+BRZElQ2G75C!F)}1yxDG?GmJoCVQLih85n+inZ3~L5H_<J70?25To
zZ9M(4EF{78s`r!{?$DNWnox+vg_a^0z--I|75x=8`q1h|pgjic;FGOrR!JUUA^goe
z3oS*LwAY;-6D<X$KL<vDmJ&{Apbm*hVuIGrIJiM-TGhG^42i%b_jG<X2EY3HrYM!n
zX~1l8^indR$2`%D<3cb)Lr~noy}@9f5gOZTwsj>-1^-4CUs&Qt1jgc0jzPg@|8hrK
zw4E3r%?1T1$_9LcRSN1s4!Y8cx(JXD@zUZykp7<<cTLfNvs#qmnVtEyqbE{8G(s3t
z1k*76Ue)~L5!Yehc?njD3X|++Xo#j8uH}FD5opTznMd^V!h5xAeVJvqZf3_<lu8fI
z3JAE{Uq$Oqwr$+dON1m!lpz=+VjEWUf-B(}OCNfUKvQ{NEQ&Iq5jLnS5g2ITKnRZB
zxaUFyM55o=yL{kN0frU#W5{I{8cFs^XKagOm$)ZJtPPboBGg8$7Q6lk6B>}Hj#l}V
z7`yvaUT{ITX}3sqrBLjureq;gQseI4b-wr~_=VSwf)w-{#J~{y^U+8iTyLF3hC@iT
zcY{Kb7W@>kcnDF=Q>v-n;-y8)LlP)K+W8~zw|jCjRaqf{_#W94B3}pl_p~c~W^S#n
zQv1=QVLtrf%yD9?0)Xnb-elWX?wgXntF*bD^i9}FbX~={LP+Y?`Pst{=1$uh5#FJq
zpH%ZRVOB4HPV3$2!8^w((P2TMX9}80ZN@qd;q~C9dUV7=aPtGrk5S62h2~6SSwaK*
z3$uop3L8rzX0Nad`^$co2BvIF&B&prM<G-8JxaslXJMkP%6!nH$i%afZ@QXQwKuv}
z#egJJZh4@U*iiyxWM)~Pp))(XTPK&!@*XvM$X3F#Me%VQ-<2ynnL|t47Fz^Y+fl!l
zHYBlFCQ^eeHD3%pbwPEbx_tFnYJ0XFD~Oj!_V?}Wa$Qn@I0nNK3;F?7ef2x|i_jti
z_{qkh*!arjCxwI8T7$z+G|$?~alq(YBr#wgN)wXho5K}^fn?$x5Pu`zFgvlBV{cB<
z8nzUITx_f<g<DK&eh1C|@Xj_fV@}u_W;&84lzIZbN3MUOShHMCMvi(Il>C?u06U4V
zrRxBMo36r=@9|f>_lPI|zgR4szZpdL*eRI*eS*<HA3y*MmFQ#z>K(QVN&03y$bbwP
z>2JQyvwJfCEc^e3di^DTUxujttJ43|Ae>qZ?~XRop`SxA4v=H?u;eZei2@81|4&&6
z`oH)8UABeX)&G0{zvYhqq(5OC*3tawxX*<8n>&Sak3#!L*<a%R!(aZ9{#8c$SA+k{
z^*_7)n_u;pg@2d-op<%O&foj@`Bncf*Pwr-RGt3)@Ryx`m;ar2_0PsYe$}(>$$&dq
z`_uVtN%KS_A^p|izxDQS8T?Z=|CYy{0J~yasx?SMoRLK6&-%B$F*KP8bC;jO{55e5
zez056eTz;@i~mEY7%Kll5-B~6KfyG(!u-a%^r__!U$~}5oAHkJj?bW;*TjgPnjgU9
zUtFF)(qF{jUm^Sj6#li+zYjov6U+Yb;6Hdk5Ez!awzig*mKOfy%NN1%9gfug_uf7}
zF>nB&M=~-p;(FTyVB*LqDWk5gt`_#1T3UVz@jrd4SMUfO9UVZE(JkZy-@@m%wY9za
z6cZQMyT9)wE+K)2)a~u<-F0%}N<~fGJwC2oQeNJBc=&c;V4&;IAM@87$zU)z+_r|o
z&d#o)rG*;6{5!vWOR%@MchF{JWVE!j#BhcUp!zBr8z}%BA)k;?a(P2T1K7YIIypIc
za&j^p0D4c(&BYWK7oW>-R*X!=d;acN`@XOMF)%Vh2T+PqD~pTto}QjLg@x=fu1!zH
z#B#rUp^uG=Tdo6|uDEXi=<+QQVG$7pfQ8xFS&*O6n?Dqkl(|5@jUx5e=^rn7uSbW6
zHHtDATvJZVo7LcRb7)9XF2255onKm8TiKFd7_WH)eD7*CH8qXUWb~GmmA!i`p^Pvr
zbysOQlnT=ZaDq=Dn>#x%UDi%!rl*ISZCa*jjP=Fl)P_dHR!;z2<g!>?T--+8hGA4D
z>xR_(T|nMQl2c--uk@ODW7jl7Wp>Z5z9ng(<8&#aCw+)WhzLkyV~>moNCMzvWg&$)
zeO+A^<~eLc{CKE@E5iHU2>A4g>r=S<sh7Q%<0Zm&Mdj3J@4KDE&}C^&RtOB`T$}BD
zWo1S8#fwPa%aWC~HO^;G14MpR*VQQtZ!~yM4-XG>F*0@nQhL}b1+brznQ6bVu~9aU
z%G?M@4Sj)GZ*JmzeN&?U$B(x?8&y>Ts7U^|Rt^p?^O2d{smO^aDYu@s+6{2?@YDin
zTP~fQok1tZ$6$5!gy7^qNsL34RaMEfUUO|(`UgvG^{uV700eU-r|ib~QU!o_I=p#9
zapyJhz_(b}SmRIg$k+fNX-ReUC;=fMJ{Xu=z(j@NuCA<f>*?zQV9<f7pGk>{W@u<=
zSry0qXyfhe0m(^8U~B7w?%rNyFoL5Ln9aa+$B++5&dAs*5eM3UKTl3g{dTjFz(&Ew
z120e!Q&Un_U0l2`pV{6nd8w*eG>-u|j_uvuK_F|;-qUk>3=G)2Eud+1<Dl4WEgc<w
z50CmD71E_X5fnQ!vrfQR-%%at*o4AR06*~zip@2|Co@KaL1buX_yXxz9E0l_BmnF9
z<|Tr?bhS8*2cRxUVjVE(x<el$K@kKyYi@1T)6z=*lN@EJ)=CHl%!xziOKv31dq86V
zMVLDQ*cO1q4)S%(%;+D93=IuwtE+z*;{}n>L7%O!vSYIE{5Y;<pVC1Pv@imrb?OQH
z`ju$~xvYl(F=vN^lASwq_3n2Fw)2Wufb0AB8_n2!e0=xRd7nebk-S9$z6HO;3@PJ&
z)TK_(OjzW1FK7%z*}IWM{r6v=dIB`*j6hcHZaW{w0&Sjwv<(eEx&3+nhZq<NAYeGK
z`$~A#F+MtK?kg_>v-WDsLJdGuQM~hxT~V~)>Xwoc6`3B!@@o!gZCxF6xuE=(06-HM
zo3~ZKw>*$q`^oBR&vp0AOoo=Ww(SEF6zsJ4JMS4zDixoeP97B=eqPc%{KhAyYP$QI
z-xjEy7Hzz@H*9QteDmxweNJan8Bye?1_x*Y1_F8kVaMZa_{D8>W9sJzck#x%V}`B(
zq^+P37KyO!SaKclDzp-nkPrff<^KewFfUKutkEuDh5Z;n`j%6_)_eVHC*YDNf{{4L
zJ#tq;ULL^oh9F{da~XYl7~>7j$|rO7bZ$3w;NRS3pH#)l7Tp5r06@<G$Jgx8(bs|v
zU%s?o%NZMI6W}ppU~oZXP^6imdU|?-e80`RxAMLxvpfNEn$VHDuzAI#q;zQVya#H;
zhf(r-#sD9=wYOK-(C}ntauT|-Vv&)S1_d0~*3ORW5A|6%d}fb~oV+4F9&h5p%*5o2
zX=K%}>B&iJV5ZeJHrfJsY+)%WM>8`sVNp?Q2M34R%F4idEAnqcOJQyQ#WAjPbaV4&
zY-|i`aFg<0FlnHavV{qd5+QT>%+gYh3wh7-axOB`0gB47LX9f(SA%SvUmZoUYe4ep
zlyS~wS=n+#mX-+k1p`1no%DXXA}u%qdSnz>US2-!wpOmwu6ehOen%XZ56Hyd1E1=h
zySuV%!yr5-C+Bt3=13IaWxu7w$1mt*ZAgIi^oA$?(!nc1QBLf+y!5=X1(p}4{^}pV
z9AII(TUD33asL2O8KZ0wOZc)St`Vs7XU2n04h}N>suJ?9=*U21#(Gm&3EQfF4%sUr
zH1+7uX}qkwCeON|Y^#~wQ7?S1DK0DFss-s;3-*Y`#YVBC`K`^(%_2V?oj7s<d558f
zzUk>E_j0D7I9jO}bB(Uw^M=JUhMs#nPsZbe(Sz<@^ck33ECUomwoZ}SFR(oU40%;!
zk3bBJAN<Ue7o{J<JL#PeL?-I=c|2>mZZV3*P;DOo_nBW7Bdqv)LUG7DxT9hGWOpx|
zDHX^CV*tBnItKvYiz2j08~DFuGU$r4HLpj>Up=G{^uJcBH9%{vYV`LG!6G*Qk;E<!
zA;-CUh57}+I)1PJ&JFvD5pO2?z@AnRU;{a#9fK>V9daZWn*%@sZBe2=Y5_>N6cNXH
zMgIDC8yYfCUzHg=Nf)w9`R~XUjp?8mp!9tJddSI+^e4^T65#S5qe8`4Ig*A5*$m6h
zw|KFBUpQRpKOe-z2Lp&;;k$v~z06}_!=yt7wf5=3JpgvinXS+v{s=_UEd_7$dko;5
zQveiX(+D*ww;mIKD0Im`jHVQcUCJ9&&*C!+9Y_~Y0MffRV;7~~t;Z|-_#G^Th{>_0
z`m3mBOTJ{uvODUEAhg(?tl$U0dAe=BE#h9M11KM0hdmMS1{c=L742kJwXAJ(Ng%m8
zUD)B{z$Y;s?NUAFtJ58q%gc)+tM5!enk#!Uhn5B*7$h-C)_Hqyw5HbJyo|0e?GheZ
zC#{Ox{7|pbJi>miaV%yC;P-{_@>sFX+s#q-scM_Vy25pV9g{8Gc2?mDG{2CL5K~2}
zY)PLETxZV;hZ*5D$^jq+Tz_f%4A6!}M=)lzzVF`lKnl0M!L7K@rJ&|1NFSyxc#Y&r
zjy7$I5d`2(`5qKseg@#(!zH=`ws|c2sMy)krKsOtB)`4UL*hl>*QNV93L>d7#ibIZ
zLl3%FDMksI&dQJEZ<_h4hi7}nm>3vX+O?CC1rJr9jEinzmH@a?;MWYqG6mpehGMF1
z&gO<=MOuc>j4Dj!*o|AoNmcn}>D!*O7-SBt^Q#qU6^D+jOwR&nRdzPEcp<y-z8bp;
zCgStMm8eYd_rqvxKyqWu)>G%DV1pJ<t)=#CDL>JdeZ+F5hE2kQ><;-qt7&!jt6V5Z
zxxn!!AQD*^0H;p~x_s())4V-hqYR{Pe;6JJ>W(5+hPV1KKYkoHz(i$|Z*0+@VuAhm
zP+@nSq0(JSr%(e;Y}qz0nv72d$k$)cj(dKWz5W(Zb@*X}$3YGbjd&X0=M6Kg6aH}z
zD~zTBAOAArdM9aL#3gfr6Od>-uQ^s1O&fR$<nUpHyV(CSj%FQmsRz)lJQYso`zG7?
z?R4$pwV!VChi<Kc&Qnz|ZHdN<w3HiNx6lh$Hc2c|v&7#s06$5PBI$Fv?>mVf$?Zjb
zx^uA8xtcQq3Vb7}U+?r~w#i+sFuS5WS0Rqz>nhPy#3#L0?}p>830$uQ0jl4)+Zg<3
zPlE<7sBhQKd})GSxxwv53leb1cwyXn25r6)T{$?7LuBECRwk%Wv~wiACI1Tw%C6I@
z0)+4C0QoAiy}2L?8sgOqewib@RS81pmt1;qN}zjvgV2xkS3!jDh`H}lc?Li30&ATh
zAHC`feYgT(oF{F6UXhFi1otr>yPxkb4vg?2=*%e|a{U+sOzH~`*Smwh1V&Tddyn%1
zB>+vS>#GthyH8jqkPPMI7pL=dsdRNfls}pb>kI~0rb;Ce#;J!?9{~y*iqmEE8l&1Y
z-Vx$LEI>4S&8u1JY|+;M1R70*xLyIXn*bvo{TO?YK>CFNX~2tO?NTNZ0OQI7;Eq|-
zn4r=u2^dN!^nnBREKqCQN(Nr}M*tq_K{fS<*t4)}Y@A9fI&tzQJT1_fIH3Yri_EIJ
z>(CbU-V5U|F5Yn^B=4Az`eLQg*WWt7&GCDWtM=B;frg31A$FP+wAcrlp}@?Qk6Drs
z@)-cH%*QiPRQfMZC%85bnPgVhFn#o4(F{F^D3js(OvrZvo1yii;5H}q>~c@&1;FIY
zsQw_j{s)vlu6VQFOF8P~4pMuE9<0s;zQLswj^3sU@s)2o7ng-gJyNA*A;eum>OgLh
z9-m*8|CL?f*+msP(17cLE+s%4|1DX?hw)uDAD+!%2l{8mh)I0!hsP{=)Y1wsQhBJk
z^{EfRb_!|wU?;`zfm*<CN383NUGchCk@d>x;Pa+1)Wo%}no`+b1q|gXtka|}`2=nF
z*9HB~3gAkx;i64I14)*9KFIp%?G2>O^O4>AdS<}Y+dx*5#vW%XvY5vl!E9@XLNSx&
zf0~!jk2*m-98s*bot-(VLSdeWOCf3Oy%56ZpTj!?mdl*e1S>ytOVX{7f2n<6*|=HN
z>LG7HimU|qMrH!1Rv^H_)N|@tb~dFqh_@Lh00Y0(5jrWYowXftwsZvg1wv`BYpA$e
z672%nj~RcwD3|ny?Vd}T%YDR2W`d>29j8iisj6PL7L-}*lp<OfjX-O&+0j`T5HISz
z!VNR??w0TK!+2oO@w)Hq&;jxsU?fqc7c$SZ@>IzCs=sdI!;joX&&X$RM=)xU551?C
z*I>clU(yl{lbF}PnR^Q8q?OFwoD-2t_bl|Y?BFDunj8O3%WU8j;U6^VPM6Km!p_qn
z+1lcqtLOkl7wzB@%CRM573zh(fd>FWJxMW5(1rjM_apZIW9lozs$93O7ah__gEUA=
zcS(n&#G)77(o#}NcXue#-AE&nf`Fv7bc2*Md^dZabKdU<>*B|{;Cb$tG3Fd&N?c3C
zyc`df1v~@le9a>%{}m-*L>dJ0DDPtb-kG0;iD|ak&ACH#X(l{(173b9U4pv<LLME7
ztzZA~aL;iO2@_e0zQjoyRvC%9kByoGd6RiH-n0SIZkwq#gb^k>RHjM9`&mhtdJ+0o
z$VYT8sg;jNPY^xXPw3V{ymhG~7E7~4v-BD_o+5CKUkZ=3zmFOK?pf&R0?PaM4sp9v
z2IgNq^DA|qS2yGV<7<9I)ta<JeIdPxqZ`H4SjT|6yZQU<hBfAu!7mMantbp2;c)3)
zCuc`4T^>ZjbPe-_VuhAG{TseF3#fsEjg@2T2tu#alsQHkxi*875}AQcLT}$STlA;v
zWk>NIKS>U{irgp%+kv~tUu|C8fwhdNJ9|l^7WemOEZ02?BigK(W4@v<asAZM64D$h
za3vi0`aVy4d>cXjqyHY4>8WO@JX6fJ+{2YYcv~DjS9EYZtz3dhWedNUQ6`^54~&C2
z(1IiBDg2ZEm?w;3JdWgS?#M)m+_Qpk5||jMkSrZ#SXYENFCrB?mog03Uc)n+z#Em+
zmrvr73Q~mHtdS*1hRUivc}GYtGnPJuNQlV1h7zi=$RMT)`9=ueIE)BC8}FyjpvxC=
zp(yl6?xDm=*4c`-noADm)r$PfTZsX24eLE`!MflYIMGWTAy8`xOPKK(HwA9dGL5wU
z_8tui>bgi^@KXFN##IFs>W4jiqIqFzqrvAOra>(?psN<pe2+vm)&8>rNZ&;M=MbnP
z5`Mi0tX2!atq@Qbh@30Og&)D0KX@mKfEn0_81wo21==u|A}n5TB2VTC{4?`1r^^XR
zW{Gj92m=N*R`gI>%HEWza>nZCFeQCzV!ZEdG!pi+we&@BAwr7@4rF3x@2&C;m#K!S
zlrs1nzJEoMg;|7k<pprTSjext{t8?(QuGL}z1tr9gh%|e%ChaHEyt3^65%z*Yz4GN
z62j=RDG=DZ!fO6zJhWbX!j)w7;v7zJY7CW?w%R48ORx1UTV(WQL+Jzu3HHBH#ix8+
zD5A~N_#SEvlzT)x#AU=E3IT~%sO#x%S}ORx(Qt6o52HANGKFyK1TR}nBW3guAlg55
zdqbQC5d(V%y@gJgZ_rp(NZymb3Tu;;8}k}K<4Tr<;FSYi6?<PrtqNY=ub8-+P^dMc
zwl^B<0JDlIZCnxMxT0mA$2O(6{9S{@?;fr`vX|6rY=#am-~K|4n5-*^>EbLxD=&Fn
z#FffaJ3l^-Jv=o`ZLj|C&d^jtr8n!CDG5!puWkSDE$->aVkSd>t5GVCDhl*dGr~1;
z;5{wQvUvaS{yjV#xkZ)&yxrKxmjd{ovV7NfRac)VJ|FA!^76_eOd^DjyfzPDB}X4+
zZv15-9JrAyBaBZ|^^0BN4*i-2@?2nK2POs`2<e(|j9sTfn6p9DCPgcM_|@8^Q&#!{
z>-R&f7;$`Dn7kL9`tir0-vu1!)N0tW^dWTlG)C|*$3i9I|3n}z6{AuHJ)_yB))@Qq
zwF&)ODvr#DsiSYP;W%D@NnNXa{|eqjy<lY(wKCi!cOB;Ja5dN*PX8R;$veQwMU<!_
z;92>+t@Hl6EK=pew0?M7hMS<Q^e<YE{a-5_FikX86ihdK60T6geTzzV+8XInfiMMl
z7PNA8>guG`=a?vZR#b6h1=M)q(s<DDo+#RCfz>}(Te;jAQnF>a4dJ#GhG;Qt8c1Jp
zxgtnHK)1f~PB||typmql#O|E-*gfk{^{}Tz8q)c2-64tlN4Kpij(3yXCnD;&w&AbP
z0~-J{3z^Shu7`>FNOTd6m7;P0bFDt4O{2Bw^@$?l1|S9rqW5{0$~;^d@x~`~WzfM7
z{qlO4G4iR{tN+TZOT;<xqOY%SpZD7>p&5xhcCH`dG^PLT%FXthW$0_};b#_A%r}J1
z?#T~D-wqbt>NzWZGRnVtU~}O`E2pcL4eZkBPsX${(jN+NKR=%_<`0*qK`WOwEyRQ7
zncIJiIven{&&#s132IoJ$FchKTJOA)_!W>6VCv~rLoEl<700h=TC+BW3f1*=R02b5
zw;=O4dF6?hDmA9=Wp36<)6^O7Uk(Rc+~nw*sX2%Jn2|tZ9rZeDzsSFH3j4nB$^(8V
zD{+boW#xSjYL84LA@6vr(0j>BRLP4fwl-zLL2YW~iosR4YwZUknei4ylOqsA@rzP*
z_l|mF$NcGh;jb!3jb+!7+`)X|H)|0i{X~%@GX_!H=J-&p>(|8`N*n&2P0Sru`!9uS
zC{tHEpi{{j7U*ROy2|!cc<l05#Iw_Et!G5FqL%=^QG)a63!B5w@-U_|)xW;}1SRIT
zgfEO1pkyFFaNM`Zt1|@3LsLkvF*(ioyts?Beu%W?O3`AzG=h)cICR`ME|hC?RQ@i$
zD1~x9PJ5rtK4ES7xQ-LiU!~WiUrbNN))OiPK6Fh*V*sL9<kCJ9LWiMO_%j%`fRnXv
zoc@5@A{75Wr;NV(H|TV)bpCF?+F%nzt{uXFK$GNm{!@;Um*W-u-l7L+Oyx!H<XppH
zTH09`9zRxDtZ}M0XnyyC@$lxTlk$0BZ<iiOU+P>o6wL!XvJVkc8a9R7<dWJ>7`JfH
zX6e0T{1n?WN=^5sg-K-dXuA9Q`^hLUKn}k|F5+2TGqMB-N=!ENcyVhucYdecoVzwo
zxuQPWr74nUsAK-dDrdMtD}sMV&OSH-o?xp_`#v70{EHGMJ_^+G?Y0Rxa`96YqBsOx
zeOq*w;c~;6&a1;B%j}_cL5qf%6b9PE!0qCgUz~>pWMu<#r>!8{-URGFOkY#>nF@WK
zvr-lu8(vbxX`o~#I5!RYGU5f#R^B5$$pG|JK8It_JU{kgy>j0ImkctyJNqKqlt8o@
zq(_!}(-jX5eLIkr0Q;Yq>aAZh@*^20Y2DHezXSeZZV4jcIG)K>E$4W{?2=S&sQb?T
zY~3uZ#iB*$k_G|jnN=jf-OPe!U6b6jKO}oIRdTRK+pKEfWTw4y#OfKvz0Zmj=<pO^
z^myDET|ywUC@L={<_)Ea03<_hBVq~MZ^5VZiZ*G8gb3+BH=b!V6cfMOCDaP|R4gGB
zTF#6oqc;lJk#?x%)`|-Go;-Mc<fJ;C{m17;oNr$&3j>=Gl&7gPqMg=uY&gI&0+)V-
zn)ek4r;lmjWm4j*KJl;A7sj&FXRltgxa}m+9Q#!b+ij=kVUq0lzMtr~!4ejUx(6hf
zW;B>NYB>$%((HoLQSw}V%Gis}+wr&~z|Z7!OV~~Z1Vk6C==5`Sieudzue0r+h4ADC
z*QF7!^2n5~Gh)K{-z=nYoJ`KOxokvyAjj3svlI1@#epvSUQigCikI80Yh+?6A8z+n
z8_5U=4B%z!ptS@XVjQh3C1XXHouQSZZ+ntdc1Cn*8przWBWNhkVwjMqow|WkRyp+J
zXT2l4Gg5fAczL?OWcguF_(+5`&7ozvL;CIz&f~M435NH8I~1|9ipYAx$`q+m9-;tq
zz9$|V2#>?x5yfS-eRlTYk##4kG~l%@NeA}NDh^SbI^RI_b@oDLVic;33Mp-8KOCEi
zxSWE(eJG`$z${`)4Lj2KxAo*BDWh=HS}~!ZL<ciMh6I7L0fFpT=71=eHQ8SEgbiyx
z=EVnWu}iAmKXJ4!^e1M0xKMiEn9r>6YR(raI3-NBB|NjmF<EqF>LQ+h0%8bpwPlQc
z()%rceT8G5)RtmBq|R8KUzN(<62C2Ej^ef36j^n~Bqa7UScW0KJo)1j+rLlta<CNP
z%gErLq{nc)t#Tp>2VKc^I|!tZpMxeO)v*VQtxY>Pwu3Z#`l7jS@L#6M(<O8%(picG
zYN@o5gsAsNsc-R!L(HYWyv6>ulBg<X14~1k7Cvgjrzjd1ttp%CmoLtEKa<7v>BtZt
z`qNvD9$kJ8Pfohx1uo96rSpkkwMMLn@ov5|ty!W1jOl4q7O&&f`V<h1nV*D2By^Hf
za#6bMMmM=pmgwI7j(pMK^kR>3-OWW4Fi(Ho0+N|B{je5Wpp2}gIU=E8(zqtvk%VRG
zAo))`fJ{Zo?i8oX_LbQ_O`a3#Yr#9iUY!$Z-Fl7>o!0aeryc4;asJ6TIh?1uJ^VZz
zSAclityBJSErz(u(8`znAKD++K?@fe#(*g&6l6(Mfi1I>f3fV}`JX$d0K3DUsWddZ
zm7|TcZ^Qkp!i<6t<cjZQ)tCIb?h_t#u6s0Fn4kR4JSIzzyQQTIaOU<Vh4ebV-j-r>
zVStlnzd#b8p^8Htc$}sgD(xX|uB2dsF4snd$>+GVfB~UT9`%tyXG_#Cnl=<PE<iTm
zIY&`XN1XnR#(FyPQaiF}**9c@c+tvW`tv!?^_%=2KoWX(|E5;{#k`K+?Qwsh@j|D6
zZpS#mG&F`eP)00|4&JcrjULgW=8oQZwc=VJACd0U?5#N3N5@+z92nfgi{)lfwl%@@
zug?X3_hAMOcVtuobul(@H0}I`?c;BjP@yETuyQZJ=pZAe2`muSEy?_Sr*BL{40y(i
zZoz=%?1Oy~g9oL_VaV)Sg(R@3l>E6Fm%%F}4-6InVvT5c%zCgi@@r8U0~D>QK4H1d
zZ)s3*^Y)?cQ5ue6E1q+?YbiWvq693NRNOY}91ZEtE<>A&Y%(z-KVzpuv9C<XNYBUi
z)*Z2-ZkSh8xE68x*RM1|^dauNF|kRw$+LKdm^4Rs=heI0;3q`ju)^E5;6ry?#%DI0
zief&84*Jr>%fqvPpFJ5{<6p(53*5{F-VI*?8ITo^HUs&y>(6R5)^#$3ym~B0U(QC7
z4#SlhV}IV*N{&E!uHu}oQpPIce!WtnS1;j}&O)&w&>OT9b%e+<Q8m7Hmo#NrBTCN*
zxbG%4;6%XJZ*G@?jD;bPfU&wezDDC%C?KpbLvop%9jo-|iv00kry?zJB}UpD;Skcd
zXF*m`U_F`SlfF2S9F63?I(YIO;T<3}Rj@Z)-rlN;-z6bx<3T5~yG)1X<zxu{)-Udu
z;9mZ3tB4q1MiFP)OzPTd>F)qDG~O@mAVVX6+g8c>jiLG}jOeh!CsRIfI<+_ecsE{(
zz?DP91rcQ%_(*$VJFas;A?4%fMP&_=4rg91r}=cNAJ)bt=I01<>>mML3Tgq_ZF1z#
z*6`xm)!-~k#N#iR7zb?q=mL2K;D?0%{4o5{+CW{9a{APd2x}Llk8@%uXav!yc_{Hl
z2-E|Pi!EB?4RY~ac(~zFCmk!CO<0p=JdRS5cu)nHvIo494La_RylTDVyfIO}e@!u6
z;Q4#l_>O9SXSMqAcb2MOVLl`=hZKr~zlR0rLtf%QCvX8y%zFO45F~yJ;GjPwxycK(
zqhOI+!vLx_wVoWtwpfCUiU<?P4tK4#{E=ZPA@R$(n`Ui;OyGwC3^T4vQr-!xwFhMW
z`I0j@P=}e$<C>i9tx}%1W_+luhAm01;-YBfUqnLlR4N{Twq_*yKT$Yc_3GGmaLkU4
zhj9J7^C_K7z?SFzzg?&nj7%urmG!*4KDVTKcfC^-<=vyCPfJol<v@j2PNb4^%yKHG
zg~saIf3*pXm`;ztLi?aTSI#$G@I>tkNAq?R$nAL%LN3fjLYGEIDTUmMNpPgwf)se|
zRP}a1teMzFiW3-Yoo6SEND=j?;-}!WPEdZd7(xxlz=*+L=_B3<L_+w^{8u_Vmy#MZ
z%DB3WDp@#e*^fs@0fzL^%(<#Px}wJOc$MLQ>r6=|TogV*z-b<D1PVX+*<1?PCUi1c
zhRBg|J9O3eCPzy~4%bTpF<U^9MB{sN^^0{i8g-YpUvvgI?9Y={CD%Qv)%8_ogBmr$
zA{RTHo*SsqxKuhQF@-)|yYQKEG`j83Ew352scQdwT9Q6KXZJ&}FU?G3)JJ5L`@RgH
zQAK`!Ts+3Z(J}z(@cG<9{Z~tO`G6!-tGWQ4*#iI^ub%PqxbJEr+fVz9lxQ|pFo%D+
z1%&Xn&w{+C(!=sPSOHp?T`v9>MAymam;*dqTa!;x^FLe2c@e1lf?{{cBU<vK)hfoC
zH=v+PEKJQTW>m;`>K(#K@dkoQal6$5@r4Q{RsaEn1)_~Pi+HoxSJUWXYyJEwdH?}B
zQrC4VkV1=RP|1R3aio|H53E%s_nGKSTh-?AMi?5BMnQ&f*P<Q(>Awi5W7uG;OChz{
zS_Ty4e8^Dlld2P<LsEmAuU*mN+$<RB@V(*FDgo7-0EeY>d#nBx^!t0D0%BpDGauum
z{hbrF3m4$ij*xP6NXjurBhWI)=W@ThcHddR%zjtO;UoH3))=)Ce*y6Y?oBf}N6gnY
zhNH8dysLJpsi6Tb6ltu=-J(FtwXuDxFREESA_;*V2ykFOOB08OA$6e#oQogK*2&SC
z8^#xYQhN^3e*P4)$EZ=)BbmJ?4~4b1w2Z6f$5n-q=l)Qj)cn(205=V!W$|$S0EpV{
z>SV(WVAFJWMeXf|Uwtl04N1I7)FtoGs~2duqSxkPu@ugULPslifTF|eV7!VRCw|Mi
z8<StvChQzFlS*{I|EzqIfo%|e+57_c60VvV0`)`r{Z_*!efRJXIf7K^YH}yteZVJa
zvGZCx;{?F?8d}$v$7UHEChxZ#1p{O#C@56E|L}@+4RCk%&iFglIrsB+WelS+MDl9)
z8WFr4uQl8>C|nd+Ke&7ds4x*j3zmedmiz>PivI+=Q*d=@A5%9>^?LuJsI?7<Yz%N}
z=Tm=Cje#mb$~!v5Wbq{m4#V7(urepw1+osqO{$`aucJu%GQ<Yt4Q<c^dQn{;#=Z4O
zVFV=!Z&hL`gi}h#2NM~ipB&5$gu5*jl(LU5%kLIQ9>P^~L9`jhm_)lbrYrO@1>arU
z^+phsU=gSn>MmFLO5^wfR9CA6s4n}Yq##1+cx?vas7chJ(Fkm(Y0XlTseE`}ZH7r1
zL18?W66Nu|(jX~PIKTWm7xFcVPC<Q*=_xpt=)v%?skp=k0sO3qta{F$&oq|9<lW+z
z%ZYfdl=}`qAc~L46VRKk(WG=&RH5HgDCoLrO?0u_OiUA{b1-CWGQ3AL3WsVADJw*T
z=7gFQW9m`BoG-hKj!d*{I5p&>(@hO9&W6%b3t6u@Alg7fdOqfvsL=V}zlC@fuRjY=
zSEC1Pd<+fA(TT|T5g$RH@zmZ%H{g8b8_LdDUQR_P$(|pRMC1WX88Li#ZQ75QvZ4U4
z8Xndl(&c^m=ac*U1I>vyGvc;-A&)!sNexm?YU;^t$^BVfz(XbR`obf8U@&}hwR%39
zLJgu+O0;GP>PWp<b$p1W=r~F7g`6<B6fx%oZpO9^IBmF^C>?bfEo*?{%J@cUe;L*t
z$DZ0m571)oI`ML<-uD<auo)>whXr<SVqn?+4UeSJWl8aKv<Z-TVbms{$f(LUvu(HM
z<S$*H(f^f(9!1(xa2C8Xq+A;r%I8}VK3Bh)fp#|c6yv`qikHrPbc^^^vrQ1d4^^dk
zfC30>{{(mQD9FpP5d#X;8u1Bb5ICIjr8%OA$+Zsj_<6fbQMpxYI3VTS$M7suwa@hd
zvdXOT+%{NATp{z^52cHl1XjY!WAQ!d>|nkL4yoFx;~f+Hb28YKA8w_V-CAGt_2R;O
zDI`)_M7J~WWvW+&xJ1hG*?eD}*OUqFM=3}-1j>e1Z9Sf^VBen+-vF!BbN=5QC(7Wp
zBSfJFkczleD3&si@l)-wIrWdK^2XE&Sp|749xrE?i%{~Sf5`JK+4+_S=4kJDLkV5=
zv34dn!hWlr@q!QN;N%DO5n8pqs?e<q;a*^d40*bgxZ^|0-UZO#`E<dt;-Z45T<h8>
z#3{`_=ZB;`Urj-QO6yb_aK=Qr$E)4(HtDU^d&L_)XA}QtaS@@rW8u?Pf}?_i-2Xk&
zce0?yQVX+^L*evR%@xZYsF}t1Eo2fodewGKq>NepX1U|QBYSDx81gwmo+VYxtV{ki
z0!sESuW1iz=X??*@>8eF#&<$E=v5IOm-NsiC=Ln;vmsTteTaP~3Jf|fH2krk7{NOq
zJ}oxBH2Jzr1DKjOfls^NWea<-v+36M2tWC)oB5-`UzotCr||jHzhOz;5a@<t(mP1G
zA2JkV<>xU|S#l1$|2w%twx*Zw4jnmMQrYxVtby7%;c}MbpC~P4#R>RwGX6JVjkq@J
zMnmvgIa133T61F;^YLcpv%dI9RJ%%F4XK7)dFZ=bj>!1ziNhdIf=)y+EI1lIX-a;?
z4Pa9O_=2SXzffbw;dn>iH8`q|hWwf~blT@AAPQ6#3ef5EG&`~R0%Yj)#x0Z1rAmvO
z(YCjZ&ANT=`1w$WhcwU$>VSvLD^$&WbBG!+6$=4xV90A{Sc~)sK}bGcy+>Ez+aJok
z;F9HK^Cs(s%#V!&D?w4evi5dSb$oc%;G%|4H;7gD#T_W9n?4fEt-044)MiDtB~rBj
z<aiWe?>Q#;B++xMV;p%r6$FViIb1>^?^>nWLGa}^=|)^Gsj9uv?%d4<XjK7MJrE)e
zaX9q-LVTO0Jfcu%AQ7O+=?Z;3z|!M2WV^=kf<X9LQELa>t-Nn%0D3Qf2gHk~8Dj9?
zW)nguMJGL`x$o4q4p?35&uf3JlO{oi!arJkH~2X{ZK;A4Fy#+X@-9bxb2OsLj|3#-
zGynIF6uaBo*4wE5A)7#?Qt(7~=fm3!pkFm#53yV64vxYYopEwgUFiaCBn*M>ps1z<
zo>v+C1tpcW>*#!=omfj`XjUe;n`hD6;=X%Ne*nMXFigVDUe_6U+G71PPcsCIT;QWJ
zNu%yj^F{Y^sg>*TYHwk4y`zp!YJC+13RfLA94zx-`5_npNjfCH>%J~XU8O(8rmHA~
z-_q@bfO04oRwOFhsclV1DpF1UVdN`{B*-2Rf-QOFdw;8YCunB~P9Y*RmEDl5@+<Sf
ziGS*YP73XRZ_gBwb5Fcg&}N~=6`6mg8IA%99CijS%(*R+qBaEmXQ^YCyg`Gl*6z*@
z6Z+y-DFliesD;<HibEoIcmpcT;oHE`Kf0sncZ^O$fo#3o`}_Mz+8Mkfkvs!HKEH?o
z*hC04+!`bWGWCw^&|)5oE1(6R=QrF8SG_w1avcp150ANapC<2s@x=<?YX!H`x3{m;
zHhcmwemVma((LG<UuaJkMJ_llLINqHgwqCckuDK6^5vitqF@y-*dO3O=C1#kgKKP`
zi@&z7FZ!Jq9_oB*ndsTc6V0#$DOca)$>`I~@&`G|NIqYe6f6ikP|Gv;XdsZxC)gVt
z<P^A_u38nTdoolvO>B2~Uf%AvtokE!Dr1YYk9_&!^4X)qIUg)7MYGOLop>8Vz@q(h
z@;yXJtcr`;7q1PT`;|86gHT%lFJZ0O-rf#E6?o`xg5vG=XQJL`7d_*O`Ur&gsTgb&
zGd_4O69HW+2L_qS@YYd>Ae4QKL#AFpra|f{@qS&5^_|1|Kz#819Et|d=e9}+bSEJ<
zDm2Tnb(OZ`RHTB8$<OrNsR}Fexl%v_s9>50YzSlg{`0m>t#mVmAO-<8g$4qce=g|c
z93&EV__VkRzk%!R7xgBZt^|?Ax;o<%U$3_q%cW-^Qo7jphKFsC(OFoqgoJC2h*OYN
zJMHhQb%VYQqUbO=Q_wZ%^Gb24a`9lf^B)832Uq<}?45P_&zXeW7h%26E1)8A6uHin
zkTQ6ZAx%DjNf$O!Cy5c69><(#@1#P?T3hEYvld38Q9c?5CybUGP@z3W&Ho<0Ie1vQ
z8#)4q*EY8&5}lLT1CV!RfoBbouU$d+Ov_h-7<^j)j+bLYAOz9wc$tU!r77de6^Q*4
zE9r)$c=V_V0zJ8(VTG^KX`(o$0<`b{dBS^0br9EJ=5|ivOHORXoNg^U5cd|$I6%sG
zrMN|BxR`vVPYuC=_D6)C1eX-1>8We$C(TsvuCK(f@Jc?O)qh>!Bq1b{n3^HVmr!>5
z7qEY9#Yk`|e^6%9vQUP5)Vg=k3xd8R+x24yOa;7zmj=@Lg~bKflwz0S--ODTKY47B
zfXKaZ;1QN05s69Vn$>wOVLkQ0+Xe3fGFt*jSpyv5vGy?9jH|<lmd*P;kP&*_Z-_P#
zbY0&ZrKDvHZKdh6BHXGq*Oowr$P3WH2!XP4)=UhwcTY+uLomq{9jhO0!@pZy>;NG|
zrS*`>4Z;;-I7$Fd+rZqVq0T;A%{9Bbzt0L9qoA6Piuy?k!3Z#3)arGb5~+lejJEe7
zx?YX@EGT-Fpk4ZV8>hl=M3F>~iWlc={n%YHyk!{xnpr+Wx#4*N+X-C>oDzqm<e}(7
zlqk(GuqlM<$3{q}fLdZC=-JtGjahsPQR?0%;kJA__r2Z*6pn5^4i}o+^2`20PDT<%
zBhI5isEu%@i~uDRVU8O+EZ-g3R9KSHdhF2RwEx8c;e2%QY9PU2d1}iN(EAZ@wV$ez
z6ed_WhAXS11kZ}U4x(pnti;48v1I&}#nA5VF6k}cpL*ir03>}{JcLPKznYV+nXNA7
z^t;Pk>f1Sb-409pyDN<iHR`^;P`%8pE*wJkX^a3Qf!$DM52P+z-vFdHwp)GYtYHPQ
zy7ty;E<BvtN>v{l5ul*ID`6&5r|4dNX44Py)VD+O*ooJV_}lBwDwqm4kw_`}pte>e
z#{3YvPpW4-JP8q72uUhfToRZ9lJoiit}8qfazdk7e+&VLW|;oxPcWIZa&TnR5JdEF
zVS{iCPg!P*xj2(rixqvZP6~**%u(ZTA!W^wCjn|5*(<4uV-!(N(al<D!Buo*Q*$ji
zLb6uI*5|uZy#a6t^>Tf^oeuYFor(keEJ0&^k+RNV5NHK<by(_?wWa%#l@<{_&&EG*
zhfm)5o~$cyf`s^PxMq$Jrkg~<X&Th~IluYC!xNJ#wK?WdK{II=)D=*t%e-!f$g#vl
zWL}qwB`2fo0qZV9kiqYmb2B~y-i`=%eE(Opo_HrSp?+31_kZ~kuN%lY)e8GcO<JrX
z6o7JjlRgQ|Lb+O5O)i>LOS1&@PNm?0{Y``;bXe}l4$L~geaZR^JCcx%`T4gm)5vi3
zbf2Gft%zzjsALOSoEUoC{P8om0g|PeXw|PS+nXTJJ4D#x7w2z&9o)J&Lw?sJRZE}<
zFr9p~13C+P!CkAjxC$UI+Fv_Bt(NcLG?UsDrPrKPX2wetN<GerLi=%Tlq87c^-Wt{
z;nzaHXi=l1nIyp<_(^`h)H~M4=b8rXdc(=@DC>jsf4Jfk;5;TvkFmS0{5`3xR<v4+
z`3Jk<G|s4~6eQ@0^s6iZ&Z~}gvKcU2qb?79P?XE_53CDVaeu_>4!^taVYrHG6y|XH
zeY}^6pTW2rOE{jJKOf8GyPtL0BO`I>q^|V3c18FXdTyG-u_7;nJQo3WjvXK)qEja-
zwf|Xp_w!Qn7WLK`z>uCOEE%_XssrIe!YF8f9cabr{rK_&@o5{PUH#TyI4G!JY8vwH
zkRXiF2UW^1!F>?f5jOIk16eyGiqRiM<$EK6qCF9hLxZ0m-^m4Ol8M*NH8qw>T2_L~
zxptqud<+k}LxI?VL}=E_B6!r>@4qQP8J5FbeTl5@aXs26tx1p%5>A3#0-)&D4MJtM
zaS>7kVOv-Nnxw!CWq?CRZEt+QKJ?^?Ii!|OLuCp~qIqSMc&KIUUcoQ~x&heMvj(4r
zIc)s8<7U`p_jgP-Zp9IjN~ccJg$xxQmC{`U{qlcKZ`NqL^;YvTsjss5gmJy^%<A=q
z{luFF<AYxeJOb3_)oj29F;UeYi*BUvD$PMHk}()xrTt!{6ZM%Xcl;76T_T@x+V12F
zDI#~!TA!?YUg)q1DX-mS2uNKMv=jMzICL!h|JfP+0E>+nl(F0dze1x(G&Hk<4Y+C0
z;7UR_h_B4jK4Q@;{yIuMhd=tuO{$>O`X69zsJik%1Z#th(Xw9}6chiMUMc0zs_DD@
zdKuqoUTz>~fwrhn`u*+Sech#mr7AJaC7<>so#+rw_{FHL{RMdpu?zN+JJ3n{#K_zV
zbfv~niW`vw$Zq@ako~L<06mCZrG&7Jl#4Bk*U54~sV$0wA$2Wdc{i|=Ufzx|Kx;E+
z+%n<thyQsXKy3L9;;RAMqKpbHuIEEI<LkULsUuNAo3<ZmPu|Yy<nWp$1kC|FCdEKM
ztkdI76kp@y_rOUtffl|U(E$YHb%o&v6oqSc^D*AN#7=gx$54de--GXfSxx7!rK{>G
zE0su@$k*@0YU><eQNZ2W)|#wB%?zHCRl^-LV6sdyv_Pb3pTSp3q3S%MP}3kcs;549
zah07UTeIbMe|traFf5%zoov5wBM$lT#{{*ww0FD3<H!iE7TlDU-z0s%odMM&=l#qE
zD4(9|=zC$iFPB|(TjO<11<<i0SG)9Qj(_OpJPS5vDQ|w!hX$jY0g*o;1bU)jQxy|$
zVy}bVE+iy0_X8o)^L6P$u_GOV$(@8XyJzC_HO#bC;tspPEtEfA=9UAO3{RJ#aR;+H
z-V$&eeKE%UxSa~M2ebE)Q5BuuCze}2u3~FJ`M1}ke_DazmJItuLk80WdgGj<{{Fs8
zk61+TztF=x0xOqbDNWRvxx}*=5OEM+{5`#`)pk%85b;=|lpG6yFPrJ+@Vjt>!)7;Z
zF?XMH=la5;z-;d#3Pu@00B*y&+MAELMM^n`_zl`npT&Wr_WEYPhKPQcGjN*Svw*{%
zSO^2rL_6jO$M}6fd^rwF-!roqtJfb)pQjo*CI^Hs^E+%;b>1`Qi2FZ-lp#R~4con^
zI3;E*rC7J{SJ~wVRmtwOgl$*?&i@|hueH8SMEa)W#BDQ9cfs6q<=^e*yB5SYB>EPB
zbEYF%f^+c~8A64ZRernPzKL~2D<HnuB=+TsNm8=`sZ7K5mteLhxY6v$LPcxDqrNj)
z%U>MIYrQNR{(2n1{RiwlY!L`}kWzg^M^6;f8=MszpGANxxFOjc{F=Sq^*KFX0$DRv
z{Ask=05uK$Dm=fmqUh;?E2o{fYSqQ!X_KEFo87^2#q1J@yh8>1$z7w4$jyeSs^J4A
zaG-$_I(X11O)STaY$-OmD$r3~kB`cVgVrlxFR-5bX=joitJJjjtvnICK^nm9>1m?Z
zdQ8j~o~P;SpksdSALM-ro05h(56ecAZU`m!g^^Q#(ylZ}XO>X^YY^0|&WPb<p)$s}
z*_hiWD$J*a22n{mauwL6QjdG1`)u#ck|1iicvRPW*R7EaAuTrA8W&top$(AP4A^G!
zEy}_IQD4z<3l=Cb%fY4ZtsB@b=PM-Um+8+4%wcs5$c#l>SgabJmXG_A1vKzEV(`-1
zR*54L77sDPSHkX|(@b5HDO<kTIL3fyK`obneWV4SAIZ>I(*&Gpw(?J6sK51AvbmuL
zx&sG}{EAPYl+QfS3Kr!oKr-$%^VE5x?melQ%m`c2FDy44C@&7w3G|GvZ7n5diTe(5
zrl@E{7<c+nixf;G2}rQfLIh;Swa?TsshUusr_#$vfxH~3tZK$#M%1e2Lzn#7ZR4q+
za4sLf!FgyX4}-&_;GC52+$F13A#$yb7Nsbote9}4t1bH(CXk7YIphHp`|TRCyS&e~
z<2!2AwMOfbifYNocGAXQMyumMU&4^!5hxx%4FM_V{qS+6t%!3AiD$Mn%;Gak5obdr
zak2Mp!!|*Kc)llMpcZ~05{O$XUeS<9VJ#W^-z7)>NeQ4H{Wv<3_E#=WXR~0NBY1pI
zT2(c6uSE_AiV)iMohkotG<>qCVMroJc$)WwWr_?LK9Jtsw<ioYFHkRE?)xB1t@Nmp
zj6KeoWsJy4r2}m>3?u^s-@MnGMcVa$uwHlXL|pTumOmb}z?jERcKT}K_{v^Xw?$L<
zLDx=TpC(XQWu{z}Q{ED1jkoSkyYNMH=0;Bd1!M5cl!3hg{Coo+N_Pr0&<YYY*%Vos
z;c5~oZW@I$uD{+m{k9G9Hql5D5L@C#Ef17}ZMe&Q=cSNBcEKzV3S%)x4mIN3_b+O6
z)oV@ff-iCuN{&lp*Vv7vt{HY!uQUe;no<cnh%Z7%cnS~bs>>;_Gv77v$V`)yig-Fn
z8u{J){lPu<8Z2=j0V;+YBKUM;3Piek`pMKPkW<KgcM>sM7WNf{#s}lvg?h4t>k}C9
z>@nXu-X3IxG0R#F{&EfT1#f>1E|U!%dYMZE1_{G!07t57{T8??P)g;hjxTdikULI%
z`NpqAf09mKf#<FHY#S=P9RwFj0+1wSfD96N$rHMG>lGyNdrvKBr8<Egi7QyN9xCh1
z9$grGHoxOD_>AGk<eu+E6nd)UZ%vkFFbZ&7cJrsP;Gblvy>e7ClriOPHFoW(oNzm(
z<`sML&rP7hLDZ%iTSR<B=art!U+c>T&>jmXcYQyv7I;oxUpQ^<Y$%%|hQFHY@exoH
z*iAqFvT@A@Q6_Sr7Iz>L0KF=+jCO_7<D5-(WQg^-zQVDU4`~^S@s1G9k_x(*djt1u
z%azrgrYb)?ii<c6p{aJk6hInq2pLlkd+wsj5O+hPbvjs+v3!d5)-B0-9p@3@dCY<V
zrXqNU1vH^cq+!i(7)=4LaXl!!Eqq$GVgBVt$wu?y5R}|X&?JJ2Y2`gEd}p!XSrVCP
z$_I4=Rah#Uw+#uV<n+!P7(aBO!?WO^{<CYMfg7lAWO3y_(M3l~S#4E)Mq~ZrwDR7p
z`e13ML;pZ8ClTQ*i9YCrx(1<%_;?>OCaI>-Jq81o1rGEaABu_|BxRvneL4bX+-R@+
ztwaK}<eTo#+syDQvuN-8E=oBxfQ>59UIif*Ip>9((K<f<hpt^u_%iaoeIPpxicrcn
zzzryneykZTD*tKX$5@1gef(;GUZ(yA&i#FqPfeX&Vv&@IpP<axwHd{Cv*k%kEUVSw
z1+jORPPTB9oIud-g-;<HA|a?nVZSuPEa<eGnD<qU0JGbiuaDP4=fM#L8;XMpUfG)B
z5vIOYxNOb6dqW6YZuYzLE`=M%jL7-A9HChPxAgT~;I7i}3`4#MWS>Q{D`Dq=z%(c5
z?hqm~#ly91_S7Ybm@kS2tLJDyHXdcE;B3**_^#&u?~8P%4ixwTnSs%g9ED?7c4#%#
zR5$?1zObY8h(=^^%Jp4}ZRs(;M);lOI!rv!M{d$@eQ^{*PK{Num3-Kp{;S=`<NEsC
z&KAY*{x)6O6_9DPpAvUVi__G*JjFVJ4_`M|9j&@re7K|K>c22}BnUO^2uJ&!P@JD$
zqw(5Ay)L+7(|B!|N%~S}JUuzb3QQa;nHuxYduyLG=1%U`3EJr_bt3@RhKfHz9>Z04
z<w^y`%KvAc%%)<FvG2qT%U<HGC?YM*2ftcBno2CdeaV+;!ZBa4iE@+j%gHKzC2mf0
z*5uu@byn6veE}AyN>7dQioPHjgV*%6dHbd>&ir@mNek6${h2CKPFAEZ31ZHwnLN?I
z!DPy02V^b{lt+?{_gRD;k$C9+6GZq&>r4?0`sEmS9XCgFkE}Y$q$WL{o>ao^GEr;n
z@1F17+o}M$e8DNmQP(H8qdYMQJ*p4^UiZL6x&uj02NjMF@ikSm>XwsSZNy*XnPr_T
zZIYi%DxztA^qwx)wE>JW@|_2L6iYx`Lpn0zLB38ck4w+nqkUcgZA85ijJEsfs*=ga
zMj_}zH-#!ZpC>#};PbQzBt49y^yB>vyO4g0!Oxc2dR*)AZSlg<taG!n-3h8LyUWcC
zN-3&b2M+_=;N2zwT*d7?^_J>J`USaw6V=WG8a_il(C+tH?uaSa;vYRRK^4Q_pyKN1
zJV6h7s9N;BlV2u?X1bFWTW<H!(U`#CWX~wxHUfmUltYI0%EK^Yp*qhP>Z&a0{0a_%
zuG=oV>9;KPiAsG~H2wwyDY3HyyY4p^b5*0g;TPAmRUVre&8g?%yravTM{~uv%C+u$
z({8}gn7=O0#`$68K;X^~sy#g3XV%wW(`Z^NmX~CPj&>e=*>|zww&DofA!IR5GmMoR
zM%M!TcMCdJTYiT(9#<bDL1qyrB~+{JGfrytLAu_Wz<$1w?ME8tXZc(}ahnmP*!*c-
z??#^)n3V&<g{jBstLqK<UutmAjsLxBsEDK?lN7y{kEO@_BI>kB=n8pc)NeIx5-vLG
z7Gfz3T&yMvt9WgUL5YvLP7#@5yuAh4-UBabBgr*(s^8uTn!NRxsv{Nmdw0S=khHY4
zM5nj{a`F;<s*RKhwv!#O#0rW@Tm0gbBA#*5#aFM+;9SCK2~lsG!qS}A`l!7l$0r*e
zLEtw*-X@y~sCA&MPH&giphA~FsdF9l?2~GoIB2|3(#@r!2J=C30SJ}Aa|?Pj^2JF|
zd9PnOhzos7^Y*~BVQ>En9D$ge-_O{FA<As}Y>hMQ@lfS>cfL%?iP7sE<r*N!9~5*d
z5-9QCH;<Ue5|{vlDrIt8I)cvvIG3-<dDP{yc+~wJm)aCGDsY7SA1IVOVG>e^pWT`g
zyafd_w0%DY%KjA`j1zmAGsbv^-pz8R@PjW{>@bt&29N;g-1&gL{^!#C^KTF{FwWf`
ziEiM3Yfa`$mqkt>hMC95Xld>#cxO$Vg5VWA%%g!v{O8wgcKKwDPB}J8Uf=7*r@Y#q
z%h2LZHq#?i;@qvf{eQLkYri4m!00-Q^H-OYW~v!rP3VQi4Z>>Ue(m#pP}hBjkonb|
zm)OGM4+#dcB2#nD$k)TayS@=?#ln$(7oxd_GhPP=2L%7jboy;IIHwE$@u}uk%Y0ET
zqR~~RR)b?wO#M5h@AqU#(B@|z-rjnUN9BkBN`@JH9UYyz_o*Dk>eiD>OZSVZ%`P>(
zI;So_4knfpBAuF@(%;ZPB!H$w7j}JTr!nBRM<bL6$s!;iBo8?)uK+a#kbaT68`E!p
zZ?ZbT`A3)Hj}-WtmcPHhva&KSdQD+b5lf=JE<ND8S3ay>UJBR+G>fD;?N2Oo2ny;h
zE-nIcy6%4-X!q`}JtZ}@tg7n8iuxK3%gPK8mY{g{Z2Iobm)F_H2MmkVPtW@<t;0}C
zs%i|zT@wBK&Y`Vez7&s)jJ)FUMU;+ypMR!i@t%2OPj?IOtgC>agyM^-(^J>py*)co
z5fROZxzUjkTPrI@e4U-~?>?u((b~kPBVWIMRRja69|vV!A_0X6d<I`cg=pcLlc?xu
zEl_s=iUyhtrIwbKw$9EqKqk=E#-_y5$_ihbo>fWLN3yuB>bUiU%>VwjBr!1&9`dNY
zaf=6p9(eirQ(;VHfs}ziQ@hKb)>yUJ0?`979eF%Cx%;A=l;PL)W#@~|&tM`SpvePj
zJrITYGnD_$_T4)XUud*s`R3@%hnnf>X&`=3*3{JWpFcfb76b;VFv*X4FZbt9iu;~W
zq%SCXHq_LpgK>aJ|Gq{q7%^q*=hp!^=(eV&G;rhMnJwQF8~PA!QBY9+{m#eLot+Xe
zUz5dR2W$nC%ENMDjo4D+eR+`elP6F9w>9^*9-XBTGU|}f#54@O9&v1H!Ve2{gg;?_
zklrCDioG}GTG&#<=!iuosJG_uoT>hvg!T=?^;_4)SG29J*{eTm`weh@HOoh40_2;6
zfnF`Jk%8~Jn#*`~E<bM9$}~!(-w+MI#z-A1VEX`Oslh?IjvSiiiKAuX>xxgFc4?G6
z{b9-d;WctaC%X2PQAh6HI#Y1-o4zuzywD15=Vk+V$m5W--?3X}zJ7jv=3H0JKdPXt
zvY*t#T$;(fa;1KgMa!D+e;3fIn)$3<Cexr7jiE)-$)&xKd~vm<)wvvd_3l}-)}Oth
zA|M+9cJ2>0d2GJ`IabZAy(wR2uct_iQ5DhR8-BeC?e#ww3&_9TG<}}fkrt!GK<3O=
zF{^?0c(=zaz9A}_U|Krz0AtsHB+I+jnLUEoe%d!p`dOn}UyQ1pJC|ugyTx-=KcWBg
zxIo6`UuhP=bBBO=asS^CIK+R(w*CA0-yv|9op-P!_Kyx_rD6fJK+v5gB8e(G&`p6E
z6OXXiP3Z%b;d@20{DcTpMdsq9;(&3cMW)5YO2^y2FJ>{khhjceJ|oS?&zA3Fo%?;Z
zmg?*(nk{d)3|yBz*P?e)J8v!K96RsE?{AKBRYcDx-DV6u3XVyD@cye7FaTm4NXcjD
zoyDL~zT;Q~6CHLy2fs4JeC_YNqw1Q_;}8tDA-1OchdW36$!Xt<MXUYQ)6cPD8I^#y
zat6LsM0oc#D`P(MO$$@|>4>lmkJDa7Q=!jcbJ1HrN}v52H!zN(plQjQ<s5a-md@QV
zs}qnZj(o>trf)I%7rOrP-2X|<0bifYi+H%d=)5&w6V#sJmowP|lM!~@4jN_(0i%Si
z!MbngMQ7H)-_ucXO1t;jk8Q250nn@mU)Jjx=KpZByrX1%t&stHk2W4Ee!FrOuKJGV
z>i8j?A>(;P!?fN@%_zsqAC7*BB1HWT^~Yc=MiCh8!OxksCd{|!Ho*gazyJ(yCOB3w
z8pEdJYEx-VXxhl<fai3WoAH#B@N&ATBe^iw@A|T>|Cvudw%?x*;it2C9=ChO4~lie
zTuRqtp<+pe>6RHm#pIa7eDn4;U_?aB=<@yFrU@|gfH>Fx@*5?C&{jBOj(of6lGm29
z5__{bDRs}4J_fdt=Sr|NXglm9E9o6GX^WZ%4bEwLQRL6O*5i4=)QqA*##|BK+cnAy
z$Nt<whD_F<hF00`+P3Pwm92*vVt;F53mzNFqmkau*%Y0DRTQ5da_*<F>Y!88yHo43
zNHt7}nxcHT?59HT75g24pz+_83!#k>piy7t9_Ek|+AaP(j({x^hr=Eg@o>8(Zj<Z#
zSK&Tpz!cKQPwsp6bMS7cEs8H{hA#0{f{Nfq5>JQO=V(5~-0R7r?)ZRF-$U1z!%^QP
zIKGT>(pIPFT9O25y<2i<S{x6;S4qnO8rYM09^EjYs{YFOvYTjJa4ReE{%X`8xmjo&
zXPd2dfadrrbNSZt`m9KtBKL8ciS$-+&o05p)~qb5^F86W545o&Txj=N@QuVmzbwLQ
zfhfLM1F;~LLELSE3YZ7-RtW5s@O_qZA4z!U`#)fDMud;D2KJ<|MU(pAGaWkw=kc_p
zA7QA`cjwyTPn`zoQ;AtlDDx{v#qW<}|96^#mhTQd!r_g5&!@<g;<SvZUm(6|T70Wd
zn(G8cnlSccRRn#G_6M6Wc$wq58gBCrrGJMz_v%#~qSImXRtPr-yBV1EqEt63c9Vt+
z1*)*lacR{TOFl)h@78G@khCc;=a=tO$}7N07LVpr5k9E@!d|SVm5c<74DHIxb)cA@
z$_4AsBN=wuMEs20d;3$k$Xvp>>Gl^euOh)&3ereCi(Xz*n8EDOcHCDYbEGDEH>m38
zGR$0E*>SxaH2m0-ji2SzjW!+Ya8}{>T*qEGHAqJj=KC9gQXYlEP0bc$CrYpeVpXaS
zbageq-#;m&4lsLWt`kWe_!<}av|SE{1nw0JV&IfE>^u-$YE^>yG^-p}aMvF6<u!_H
z?OAkMf(~9zA0L66H)(2)Ru1Ha`DRs?O>e2HzoWtr5q4{f*CT5GbIkVIV}VH#Ro?`&
zX}n08&wQPS!C04ciQqs7mkbRA)aS{cZWccxM`U!*e|zzyST)LwEHj4LX4xc^V%##*
zA;s@{BA4MuVr#G%&*MG+jGa7gmrGV^jPs;p!g=|Q!eb%c?{8f${l)r{iuj$|%^A!3
z$5OIn<Hlr9ZT+muwv+EM(XCZ2yQTTg9S+`oTUGvddrq3gPK{X;24%=(8g-|}x2r@7
zon;P<vkd8SkWt~VuJPge#?>x?62)KUiOS=R^KZ)F2g#$X3n)mO+YcJ&*_pq=vfZak
z=&Ln1vw<e_VB?Ga`)xV#gpK{@_=;nL^uKJCu#j_N$tU@6bsDS>UE!6M8TL@@g<T9?
z8;00h^PjwE<8Ti+)vt>F(X_Y>ERQX_@S9d)pxqpeEjj*orQ=4nq<h}3s(k=smiMs0
za<?>9q{ys|wVT_03TJt4&STj(vBCXvCG^G~g9R@0o@yD`&NZQ6G0#ot+xcH{{tr!<
z)f0`#>uwZ*8^I{%GAV5{$4!;xRXJy>1RJLl6;~o@a%O+pk9=cQhzIXYH&t*}(g$Q}
zxT2ySR<Ql$4@WtHnX@l<XdHC)ob92y%(M!xnb;~yx@&3=x*hwp&KDO=c6IX=+b^y#
z%{1Z+SV5unnu+tly=i^N?5Mp_|9jU?yH{K_)cW={NEB-eciMP~L(r;Ed+2uEk%rrX
z7i^b9(=RCkUoGo?uKbJ%m#wLr+c&td!(^`C;KS`Pt<3+?co4g@Tg1TWE7Db3UDa{A
z!R5l(L}E1IzPGwmg#o$e@4(GCjNQ7~njJx3?vIRZ(jj8#v#r~Cks8SNVa$nfyrUfK
zI8e8sh;a-V-?UDcR3~-glq;pn0CjMXRC!67s%TNxx2(yPS*u)S)b)zSx$m(L7g~$u
zB~8=#o2J0$tv7`zbMw0+68fmT_-QizM0oUw3`6Xxt`+ugV2|rZqT~0D<t}sF|BmXp
zhzkbxGKO`Yeu!EGJ~21S5OdgWBE{;|ib9{|?q<v4>@#IKqpR7%c|A?jA`Y~|e~P5C
zw;$E`cl9@{&yK>CvtxA@hU4zH+ZVtOJ4GQhGvt!UGI!YB=rw|C<cyld1ee-(U`UqS
zdAso<Nh%H*1D;+f{oO_Dva;CC)kN-n(ur+2n9(DIHb-RW_Ol)g_hD3S@O1>^SBmIZ
zu;OoC7u5bTjVu7JfDaAp-2<cel|oaxbARxv`BUFQy1g#6V~QUKu1-A`A8-V7OahSz
z<vX^F+R=~$I4^ug%T<&7xD!=`Y%<JZ1iODC^~HT#ZS6DbCD3^VY_96b6^rqeqN?&o
zrax2K`acBEzBsE~{I0WHZ6MIZs6vOwG&;8*XZdznHipmR_0~84WbGX8dX=a%4fz9{
zlc;D!ivAlx*UIB!*%^~pp}6n}qH_W%=Dp{dMBd12KLYvWfGkzXrkD8j&)7ox6liyr
zx9r6TTFF3=)$avTmi}R$iC2T1;6^#QV0cLwVf4*(-n-Z0<O<R?uDg6k8pwL?YF@dS
z<*KqZt`i<uB_Q8;tjEp!8$&n;;k9#+!GzHDNh*jeh|=jsv!u7Vtm(>PW^fh+tnv2e
z#5~HSKk>gC1z3O``@>AoqLuG=MFJPjw;e~p@O`h;Hcy$$$`ejH{5F>t*c&D_!ZCIq
zR(;+_s7PeQQT7Y=5y$(RNq2Ddv;kUybL_NZ?3$xt{F>33D#_I81j%Nss}*K5zsnEV
zFAR&Kc<r}w&vU3ZBVx{GPval3VrqRZC@y4m()ke^K5}KSVvA`9Ty|WvkG4#;EeS=s
zVlYsWw}R(l5DLaJGzlh<3}tUW8y5`k*_6RnSSE?%9?VgkD%hLv+aULAd*17@s85x+
z0-}#!SHp7KY9~_Ktw@G-hb?=3?Fr&rScX3ZaUxQizZeURXHc>1L+)%@QQ*RVw~eSy
z8;)8b`ifEdS&8JOt_G;ckb2C2oA4@k<=PWjm+bD*bEAA|J<ciSzecufUHhqT&Q<fa
zkarsTO+?Ste6nq9`OK%c(d%ot1R?I`%|12Bh5rSsJp9WnpH)U;tJ?h|^T=3^6vULR
z&t+t=k@9%Ot}74}<m?NCHXq+A3lZadSP>>Mz7KVmf8lmQacRA|#MxnYzr)f(X!4Vu
z4to}QJxa=He1=BC8zL`jXUY-STSfQn-E*N{&mNHpdXk;@JTXL16j;Z7_tV|qC}UnK
z0vsQ`lwyd8n5ue!Qvcfv&LvJt;EFqsyhBvrM17BpGTlN1*Z8sO{EcLF#d|X9S$aIK
z@Xj!SEQ~HGbKumqjusXBTE=uTuf5p9#P2PBl(R^IYUI`6G5W=x*o3%B!M*aj1iLl7
zwK#ebS&<IApLkHVJ~%2@R?WU@Y_(@m!8shI1_Gp6_(58TNQ#*xXo`y$brI#BA0j@|
zR>7O{FvW@pM+?LS|MevqrIzFy;*5{~+D5cgD|K}h^UAKEKb#e^B|608D#9e%$99+;
zFPFo4!X?T4EDEUz7SLvTY3AQ~Jb)_RFX$MI!(=`r7)@@UjxZBu$Mp3r+xOfLIe~%a
z{DA_WbI6FXA}D8xwnlQZ&3bIgc?8|r^W%>L-~>@WQ0em-sHv}HadG#Fj^=;ikLd{^
zd$Zk4@+X4(!*dPg<V0z%-h0at*K`RkuEO=#^t~)qZ3(%fM<kbu)6odR+idPpoL-yc
znVD%U=9TB`*L|X`RwT4B?fbTgAL##R`RX{Q36iWcRsC^tyzl#ijSKGyhg2lYzyDr(
zFB0Ej!PQhx_Qz#2KUU-svMx*%dsv3ERbEUq)_vg9l-+kd+OjV2tbw18HZR(?a(u2c
z6;sf?_AXGR^$BbH`m-(~q|RqY{RmC8<zOWuHON0?s@5DUh`;@N?P&SS9Xn6$-5j4q
zxtNPiIQ`X&S2%w~F6T;c0xKU3|NWhGh}>2>gNh+l_$wI-g-HM_L#ALLy@WFbf%LTZ
zwzRi=S73ggaG)O_BLW}Ix;ljUMl_6-{>8fLUt=oUgX=7-;~kHF>b(II_91x+|DiH=
zDV@5}tBW6K*_QU(O<bmiF1OjQwM@4CM@8c7iC<02Ya+#`4VLerOX5gxGEzonjU|@E
zeoTMyy9Ghv=~r}JUX^Pn*<`NHpmNOkdJ`Sm+26V@2@_c~xb$Ih$%270egjIFzaT9#
zNJ>WGIHP@yLaGd@l`r|XzViBZ%aStwjq{E8s4o-lT0+cS<QC!#UmKYgN%bxbmGwey
zsRiPzX3zbSvJyl`%?5RtebQ7p^9=Vd4OMCPCYH+!3=S*YT|*42k(nKnrQ&`n&EB>;
zUYC;LMJ_pu*#+ke_-fQjqa^U=L+0bEl<qSiqMhQW<o8ABDf?cak3REolY5J<#R_c|
zrl$2|wJS3465wp<I%5Bit+$M7;|u$CAp{6+#i0amaVhTZ?!{8Pg%$}?oCJ3(uBAwE
zEiE2e+$qJiK(Qjl9nSpU=UMNEbIw}%kW4bMy|ZWb&i%Wt7dBc(j$0Z(-8;vnjrM=Y
z<8k-!x-!)ft850nzdsd-C}NnC>xuC#6%0)9ug_nK4UUwBeR(j7+|%=5zD^p3=4o5y
z>3E=_)w{;ekeQP3dXmck<#9LDwL#><%R+G&^rN+3$6znk0hK3W+9r;1*sdP;`)!Da
z{TP@1a5U_fgi*ma<2(cPZb6!4y&~Cwu9|>?)3w_%6J>Cj9!GWY;&$oJH$&q-&v@Oq
z`w(PPbzk#ItLzw=uc}FT<713rJ$&${NL+1w!yKb-VxtBXqzu+^rS<)r3Pha5cLQ%e
zlS7goyZH$>SqWKUD)QHHV|=22;%$4PYMXwl<9{0Qe(K3rJn)IFf4L+3_VWZup?E~-
z1bXhuXAYO0WR_>YMF&l%-*y8fOY1xEI?)dUJy@g$TfE~Q!)LdamRQ<-8K=u{f9$m$
zKo7;NWkM9s+FGk6K)d=|Riv<-TS<-4`rl_bpZB1Ag_R!tw9n<!okLt+9OZU>wz^rE
z?KBqYs@Stz7xR}&>>3xyUu#|7DG*q{YdLh<b9bsy@WD4A?Y&Nl`Lc+6Zz+qlc8yst
zw1^?vouK!;XP$uej}J2CMu=8i1GRki#%t5Nf4^GxXD;4Lfy`5A#~u`3@R!doJ<cmc
zmKAc#D33N}cj`hiQh@VXRb`fhvQM}|LU;}q+8)EN+Q5OdPzG<Qk>1P;SJ(J&C>oiN
zp9$w3EkzaQqV#_kla?o=<XxEZ&<r0HzgPq|zE*3o;03Eq<B&diNEq2eyBx<NphU1n
z+Yn4<<@X0{%bZ2Med&vgO?YO!mueLBG=%?69T8HySn&`8@-K9=`nBuY(b>D8<-Wo!
z>zH3WP`msC=&Vo_uJZQgUk54S`_39A5cMC4e_!OkX5sm*8uw;flHM)FSQeIn4+GF;
zlNf1oS6kowTqeb$o|9Air3{K)K3?Jr0K|^=_r%kFUMwX&sw*ep-)1U6Po0KBvF2G7
z^)VSw-KALAJ6^U?R36KV1$n;pn``t6;jTJl<oKb&{J)0=syGDZ;O~9x++cjE(4h%W
zG?ljcpRsa^g>I^+XmY)V<dZq!_0&S3SjMv4WSTr!;tR*iuU+?VhhVjm8-Jd1n9-$)
zM}1_p%f$OrnM_SNF-$|5Q!ltc_i~NTLAjGB(=)EhoD9KgZq3Ck%vQthv`0o4JWe;R
zudr~PP?!`-qDZseRKAqg$S%>7HLhmeFC;7bRO&emqzXh$OdXKLa59}3YCl#z*^078
zz2>rA!L3uaU(y)WubxgSV6!0;eaxla=7Cli4isCtigmO5*Kkx~f!>Y9gb0uSo0QRF
z-A<6x_Edlk7GDShllMxz`zcz4l8%aT1Ma0m5Hf0)a`k%5XD22zl5k>Nv5=BH_mJp#
zRhOiS6q(=97n(`NW!^6Y#h|m_h=UgKzKIqRfI?X}s98ei_`NGn0>^wqtCb8VbbL!&
zlfz0HF<CIduRb-5wT58X%r>{S*Cse}In*bgi!p|xIfaDGUk(@;@_we-@yLmPL-e=n
zoz|b`6`@<!x}D%tQxlT6)h1^=^skpCN|h;nv6_p<I>qwe(Gh}%TmM<iK+LM|GO;)8
zmu{eSNdj8;Mn<Ne<6>I`MN}Qdo0AF!GklT#!n5n<g+}&Ih}+Pw*a@U|Sp;m_Jgme@
zbu0<uBI}K)DOz0$^ZIn79EEG5Q85Rl1hNg8whwZ(;F*6n+x9Q^u>X!Wo2$jrD9XoH
zk#p3&e5}ZJ(!HN)>P>d3bCx1C{c}ZvARo-*nDb2gp$FxoIkt>VN4?=Mg=`zZW<(H5
zS%OTK$RdSoHwSwcaFSdP{)ZY5ZQR>t6`-)9Q7n#8rIf-RG<;-x<U<xmv=P6_8R9Wo
z(75?)*h=vq%c6dWZ_0CEQfr4lO3VBbS=HdN74&-{P8(gI6x5Vd5>aSI%z4`TTt(f9
zILEd8ciacM8ombtu*!2;u%c!=QyURBC!Mc3mfZsNJ_(XbPymcWoWRu3Ae*wav5JQ<
z$~GByc}L6yYH@2i(}VV7_K3AY>xierk9kQoJN63Rjq5}%(iD+?tmn|1nBtA=aCYCL
zg)I$`$Rj#0?n+9(O{&DwAs(4=X`qE8v&;?b6<t-2G*2K^MF7_n<SthqQqoYe*o=Qs
zH~#iv%*c;Fid!7n0gY6ThA0+rYaEh{B)7;1385Mpb-{`E#HMF0alUF}Nj`QRKA=i`
zgfR>2T@FdA*8L|#ihpp6+Jw(`25&Wh#@G0gQVd~0EmYh={anOOC4pUMK8vLnldV<E
zIU`ZlY4H(Lx|vhZ#;bT%s2K4t%!%I|Z)4LGI1Hssh=IJ2+=WuO;hg(}QZr`d>v+c2
z0XYH$ISZw~sh_i}i_u{uYHwBMr~nlc)9>Mt!D}Po-u|sP0`=y;Qckg6efu9K?)Kj-
z6i0vJB=Z~%&rbKN_@kHqEv>kd>D7$B+99P7!DfF#+^>Mb3WqYTEc7|yGLhhcWab_I
z6wlM16&-ViGNDaUEqCtgLF?|gpIG#L{~Nq^S)Zqk8GpZs%;kY_b=1e1A6IkJ$)JBd
z;Kk(oOh*eh@Q4AwOpfM%_&q{NCpo4`kLVQ>6pm^l1xw}P_SKlUy?6`%?eYZG!e*P7
z%dJg-)HMp<){~Rv5xaeGm4t(0r;M4rFt>B3#E}YhP7krQOWQ6Ub#@CwgvNGkm_(be
z+=Mg8=(V1U$=y^vLq7^dDK`wtE+S(fN)X0pm?0!D7Uh}e4r~{lvQQPmmqxG3<iW=_
z+RHh|Q}4w&j=`dI%{&wI2&1Qu0^No)GWVpW97Rb|C41CxNsI0m`nf-x60jZz-l!zX
z%EjfYb1-4v64ZT>o3`13z=b9>+YZI;X1%~_ADOXNzBzN_+!)zSq9aq85Jngc>b!0j
zgN4<G5JGf!?VatwUrQKL#SQ7pJ2NfH>Ja6DN{-~A)5hvPRA7>h95PPi`c24}RFh4d
zp<OB4KjL1tT8H18FVta^%yx1z-$6@>UaJI%-o8l_NL4~`Dq8W>961Y`fL0fKe;un>
zRz<^StV0BS74!Q6w5*0vU(p#lF+A&{kQxY=2aF5)SBIRSnB<cxvALVLOBOp`vLP+g
zK=mHJ--m;m0UDX9F1<WMG+)O@JlVsUj&NNg_4Yr%zRe>wE+;DckX;!hrZ+bq?qp8n
zwD%xf;*6elzqM)yK*Ej#U<!}#f!GM6i*c1$l+ERi1NrgY#{|F8qh%RdqQ0*G)A#Ue
zdbd0gj3lOZ@eh$6cT_jRH;UPuow+@f1>f|u#F76y@Vt|ah_f|J&EiQ<=P)P43@aqD
z_!V;6n+fluCVQM6NcC{krIL=3fmCUJoZB17)QxM9uBqNFuA12~h8bCJ5Ai2_%^OI;
zNyh^l+b<S3%#(`B(5$8xelVWN{q71X8AlryMI-&Zq{G^L`isQW&k=tb$3Ds8D+6d4
z&bL6)^JG9o-~*Ydooe66otx;{kPTJZZ4RZDxR^9KNTZp6W;5@{*km=cXk4HRzcU(X
z-@TdZvK?fQ0=qKxwD<R)HAZ5a;ixqQigvscUA{e2J9OJbuzXB~jogV@Z6DXx;(66B
z30oa8WI%nx`CzUzHee0%(;xXa6R%-}<jIpbV#M^u6?XTp_=nv{)Otudq{{Rt5Hzoq
z;nqi@)cn*W$YOX2;1ZIkHA7H%H(Ew`S@`tb^OWG1tMoNL%8l>CP_$ecF5zB^oy?*n
zFQ(irf#oV@OQsM{UL+4ovlln<MQ$F1d3>}vMW`QM#jFu0O9NWs6qCyoibouTstQmC
zoeYenSCEV{fH+<9u1TJVjFda_t03=55k~k-yE`CBJY)%gF`0RC8jq?NssEykMND><
z?Nv6UicDBx=cPvcDFf=A%7Bq!ojdG@7L4&I4$clzOp`H}`%2aJ{?w6Tu90k-quYaY
zBpW)#!N%FJ)w!$M!<S<vJK%wiT!7XI_<FjuYc2TwM256a%+@4&4neBkXQ^TgaFLF*
z#DXdE7SI+A-<CM!_*J9!`eYaY%7m24NTr9%Pv<R}8UAGph5yc%9_xKXzIkkj5{De+
zGH>$0b1h!iU7>xFMWs`<t^Pf8F_o=rR9j4Ejge7`;gN04nWcTNkLYFiyWW5EM?*Tq
zfAen#M}`JxifiH#mI91G8Uw$b)CIk}x|7Un!$1}vjdTx`>5L9`)SWp|@75p6)f@B6
zh)-JnK4<XZ5NHMcz!~~gTdvc5tzeR{h!7U?x7-MFraInWhcnS(0WJb6be31!`yA+w
zrm6QEQFw)g&+}Adc_39UC=(jz2A?uta}bjcU^wNQU|@PUTZwTZ6Dwg!7!^fpim<_f
z7pEHe^fC*9B{k2l6F#!a*l{6@{KUD|@;6a}G~08of)rWYw~gr7;RcyOimFJZ#0XK6
z3rwkGsYSay22xWx!?6-u1r8n2wG1$}7}i=Lvl=itJb_1|8YmgYf+3}CH`~I9^Ck2^
zLIe_~zV<JtuAtr4KMqCp*MDw9^^o$nXt)*abxH-Z*aWd@f?Y}do%||ZQ&8D@G#M{#
za9MPl^H@iq-**|7HJ+qT3aln?Qr~(%oTGi2mFr_K|A}g^VEb(S$HUO&>o%FGS`#`1
z*3JOR<@I<~Id~S0lBatI;c6Yqluko66nHme6*7DTYn^vu{Q}A3aM``4@yh6N`bq?}
z)z>>FsGPp#0?X<ZCS%=|Lcp_P(i~4Y<&$V)LUxcwA^zynNt+3ng0yP)G>t>#Lf<*`
z4MtM1`6HPb%Hg}o?e_S&f?vu?xmyv233%qpM0WwFM`eNeWDL8WLFA~{TbV%^2)+>}
ztT1PdC?r&OF?Z79BZRI_2Po-&{;EAXMP-)1{Fp0&`D9~3bev9JQyiOfDBOL4u5!pd
z5gSYqIv40b?yE;m*B{zgkC$(EY+pD!6^-K1R`7z2m<Q*#`RvQr71!I!FsR?bJ)=^4
zzP-bbK(j3MQi3Jp5PE>J56S+_+#5kx;+!!yj1H}6CH@-xBvFl{V82y_;k*%siQXq5
zEJ^6_Uui@jV5-xY9>j60ZEi)B|CZjkjEbnJjz`TD;x*IGsVq~PeV8&)nRMKS-!<R}
zCll!4aAg^fl?W{gjj;7Iii-Z5iMZn_L`K-g;(t?s;Rx6n6pRG3W+oN+oQ;=}nT9Ct
zc!pP4bnp(ibruelx`6D=e8ZId;1G2Z9IfeMl&<cO^i@o@m$}&bSxJioD{&IRg-W>3
zhe1n}s8QKxDpg(9!Ue<a1?Fo~Qw#xx$hq3LUHl$+6`z(@lM72}Xi1(pGPsX>AFe^D
zJ4#=E#QL1=w2Jm~Tza2W_5yq|@h}#k5dgKIY0I%)yQqJ|;2(s($+E0)^k7Y5TCr=$
z&K)9K7gVABCKh}$DfCfUJ(6zATsRsG&#9kdJ_{~8y3<anK<p_5;po3rQJ-MHLlT=p
z7W<m#$=Ct7;I)-=k4|x7>r>O^hi0}iDJ@|D3TP*}+-)+v(sEEB)2}U4?8+GIjiH7O
zPxa@9R2|nM1Lj_zyW{9uj=fV0i_{hNX<M<3vQ~80fhm>Ud|iI}m4U=@J>zSyPbgy@
z76Tgk;I1?OD0>+HQdfD1=y&`=SvxQMI0IH_;Tq}O=eY$shJTt7cj$<;@lwH;l@Bx(
z0#sVKJcK3&mYcDN>mptEF#BTgBD;zzn&L+|uCSS0*RB9(mWJGmA_t5#Rl49l@gB_$
zh?B*k2vAA~6zO70_vkv(QQy%#p-C(}p6rK+KA%<Pi}*Gmfu|{o5O^0`sKd9lgR?D8
zE%TQ%NiVQ&-XKB6ozDb}ZJWh^0R3k#if8BVL+zfR=oJ#T`sia(_|~SHs|$U-ky#y6
zYWkJn_{G(X8Ne3FaITs)0BOv3oX=yL=j-7R98I3T)8HkC`-Y+#*bk1_Ppxs-{Qo38
z_%b8XfW)hNHM8f+AmxI0f7jmjE{Va6399Rh-X{J>eVN_F01Ifp(Ej|!51ibEJS%DY
z98CU!2)aMd{pAvi*`NZClTr^|A+1yXVq;4t;}y+^o>~ouTix#cN?s8##x$oht#WO~
zOP8ICt7_kdh%W+)A%PgkZ&%ECisLV9)pb*e?)xd+!Unu9+>t`l4mqWVq_mUPtD3O-
z)Qcqv2-n|Oi<k897b@kN7<^yv$}k78Z#DXKin$(LFndUDO}wth3uH3792@-wSjp8b
zjh@K-aQ$!088}e3&J?*FdXQI-%p}F%9uE7<i@l)Zxrsy#_4^M@j%B=X_^W^Zf^;^w
zrskCEGGS>^LFXPm&e~YdE7g3{-7&}aun)?AeRo%~<SYk^55_F%i1-$NClvOXiv32X
zsu3FUH&QM8>Nq{P)+<Js*rxdZ_A1<^`CUsicGKCbDc6(f&sOM0!nyoyFFbGFK~$ev
z$CMer#gQC?sC{=2l!v)L1Iu%8B=MVQg;0Ch;@0=07-m05v<xYKQ}&|y@v?EW(kI#S
zpKBaRiQjJfR;7>B8@|pr>Z8!<y}~^w^Zv>>31&5AJL!(q1k{NuU0}b&z|5Nfp&hmG
zXsC`_9qb&d3a?>Ms;1(jfHz^p7vAE$!qYc8RM^;L&tFNlWI%N<R{X8)Y^by@;~T#~
zMMal4dl|6a&l{jR26PcIANE8IpOvtE&HeKdr_dzM*{<j-B6#Td7FQhJv`2zOk)fIN
zE0EiCvcdJ12M2xV9rqa#<jWsL`i*25?e8G38oZS@E1O<oa!1X!N!9I)mHpT2v>)m3
zPmMvbaGv-21h0e7qaN6qD}IlG0~>~Lo>jtmi4~qqtJ9LF-t;=jzLT6Rf0)hZlR;h?
z^`f<4cIj~=+Qr80JzGBon6Sv?_%Q7m8x7DoIV-b`a-+5FWKJu&#qQU6pSf&R%T>${
z?DpQ^>i*rn`I}J<rt?}Ecy=u!bF*xEx!~9@<oTn*67@RRufOV)pl(oAaWe+(Q9fuV
z2)!oI8i&i@_Y1>r`Obs~9WhBSo5eY|VK}tT<i7vitaE2JiWI6IFo8`Px~dJk2mVah
z8X}qJT$SY;h*Yqe!CGwF3+i6m%_K5&Fxi=mg__cagAau2le#1p-Tiwcl_+Q@=s9iX
zI-C0fqJgP{0_S(?!Q!Eq6=9Wt4~D|!#*AH_=|hvf?fu(Uz^s*US$XC_>8SOy=wN_}
z{;NN>3$*+E1?;Vd<c}69sLmqSj|#O6>;11gI~psuBra_K>#AOWkSEXym0g#d-O<P{
zM6%I3Y`cG!8wkz%*`FBAJ|I+ZJG4q6n9ZqXwej9OK!gh9{Excsm6+m(L=<7_;Q$TB
z&@(vbZqcZa`%{zt%fUH1YP{`==kJ55?3HCp1z9Nnbni-j(9CA=i1^UQR3tjeDtHry
zst8njrb3N#uPKQ=`1_ekRQmb^+>n^{_0!?^Hyg|Jh!;9Yv1f$%pBQafe+=kG5I>ir
z+4!!@2U54jOc(p^Mkb(8L%#Xm=hAM;ZX_cCTLJn^Z02VG+}qCRKChGfFh^%$_6^Sw
zc6erEGo7pQN=KD%C(HMc!Izeprg33nZ5VQ?*Kk7v*t##>lY6}-gWVR{kdIHE(JAwo
zaTVu#d5!`l(o~AtrU}VzpT%S=U{zB6alg0b_}lv}#5guDO;nt!%0ikPuBde{J#>oE
zK=Usd9jJz;-Jg@wtcb{ct%uvS*ZN*Q&9!$n3AO4jbrv=7V^8vhe*#O4BcHBFq-kzW
zQ{B<~LLH-Y$6CZxX2@;WXXjl7HZQ_Zx)(flmWjkzTb<%>wtlWIy7n*ayzc((VaKW>
zIoQT_-JiQ~`(V{YGJBo3!oZk?XLolORNslyymYyH$Bc+SPJY-;zMW+@yVysfULIba
zk&`U>j?)r9TlhL-9pb_}*@4{Od5qn#TuE~=bDsB@^=I&lBZO(}A6KLj)8_`AY>CZ4
zqp3Ib7)6P>9`ZN#hg&v(b=qJU{8pO59pJfl(%vPRzaYlm>hl`lx=b;1AnFLc*S=)9
zBp+egY}WzVHtdLtXO5=Oix7#(&MfJKBOJ3a6#X|(iqyDeP>plEr<z-X3=$&=C5Q_p
zXHdU}p_(t@E%U&@Lxn6KV6LinoR1rM%dqs)*?+wL-_C>Ws-NR&2HRnpq*Crp{1=-7
z3l&E{69Ln%PUC28KiU>YsS$?NXlY_P1~u&N*6lx>!+8IM_ATLc5**ofy5)RPI#X+&
zd5$X~mvw!+ZORm*lrqU&NhG(CU3zO@Yw8b^MQ+s<PJqr^_=3SNnz3s~wIMX5N-d0L
zKj%@QrYgEVe6xQ0`m>aLSfkb<07vM&HN(Cb>^G5LgLEP~C8f_36%!MOBiES!*&B7K
zI!%~AjDE38KVX5M@ks3YdfxnQgLY{f?MCWQFd?OF7kBg<wul&x=J0mO!d|q0CRC^^
zMUE}pYy^%LoZA%4eI;XrkISgsEgvS&{*7!3t$TO)mT=cf`d4)B#`vwo3B>at8OHFq
z7dOCYlVL%H{W#M>JiE2Wv8%o{n!4KPdm)(hK{onv0$35k>F+mauk=@bd>`B(_qAJM
zy{((rG;}<afQPRvlPYLl@sS%tgR#ml@>@j8vV%Ga1iw<VQAXfCEmtl{_bm70jSroy
znZgi8OLy{MV?J>5C<*giTD`>;Ajaz(PJVTzL+zGj6-I~A|IAId9WRoc<UM*1HakzC
zHt`Gc4@_kV%ww{CCVd$xfshz8KD&Ue#YYcAZ@I(~<PbMjpQy!;=kfK9Jz|Ees`hJ`
z5EE(!ImHH}KGc<mI_20Gu@p?-pLYhOm?W%~S@nX(Tg2_5A(Ijm+wrODeS*r`=qk0M
zDx3NxiV5!5eiQ>Y$<(tgR%@+p`b*dd6G7jG{z3V{+-%OvhKIgRv8ODzoCA)9QaSrj
zC{yi<k(&{08H|P$BQ(vP!;_c#%Vy`=0l#RfH-*b#y5)mA+_lvmGA!n0YM5Q=9%-k+
zyBbQDZd--mvI~B*fdCqIl~RZ3WQIdMSk(pGPIcyAk$c&_c3CyB#F`D=_<gr%67@iN
zt~0S*u*B?10iN;bg3Ip;In#JN@Sw;4DvcbKkm5~7x>%svaW%mt*A^|;QWY77PJg7-
zVK&xDvHR34SY<%LG_y@YK(dar{pejjylv?FPeIU|*$EY)DK5yrgk)~N@KGt`i&m4h
zWT_FX@&K4f^%ogWa{9Z8WQWszwIf?s=-`}ecc1nwbZn$iwgaoMPdU-jC_M|?_M&qu
zH-M|Mog|KfX4hI+TBXUqj<S!~d?RbW%m?K6vo##Wk*0Yz{rkw2c3eBjk#|#7ElZ}W
zJ}CcB_By+&=iDVoW?bQY9e>+{=9ZTcV_5qu+PSHURSRZQ#e@|mM{rWUFWCh}QDTRn
z$pz9I<QY(bZ0CFeB?T{CybKT((3atW9UK^Ropb%&Gn42_eA<{mO=}%Xper_6*v8;{
zLU^Wi23jv2cxL%SyT|)#qic5<gHdpw!LQwL|6h2#SSNTr;5X+nzoblY8Pt5rbq$-|
z8a3Q;HKF=P>n~1g|AMl}F}+YYcCp@Z^wZmImtud7IFWCa48+P?GotGT&}ADFyx;M5
zp9&H>6#F$;5`({JKlxb@tu-LjaK$tk=kmwA9&fUDrZ)(C5E^tEf5mUqwVyBb8h<m2
z>zfI6|JVNinGF!)A{xjtb<?fE+S#^}V<zy!cScdW<vmVPA%#r#J+Tg9>TO1t%kDev
zkuugs`g`}!-k5!?t*SYF=kuY~*Nwpbfwf`NYO5T9ABFmagEVIvJ{5)f2n5)52>ye#
zf9NyGV#}!sB*}el+eQ8%lhc+mcNO6XB?K$;%DcV8-`pCcs+#xN<=<%K?jOM4kgr%l
zEpBzq${a=Fs)rTc|0B*-Kha6|Ia)d&B$NG|xtMJ2b3si@C3X`drEOhYR2q5trGHM_
zf4_2bTr^3hQtV`;=02nXg0A5lJlE_R;dN4#djDhz4}48Wdw&%8?v};wf)`||KzMYB
z>Aw)L4E@lcgW1w0B`lt{v>;f^*t~pyxNmg2F<!%7SUg-ljduMasDbL_UPxwO?&xNF
zUS{=o0drcC(kj?iB>gaR>B@u%)z8Xc*N%}ga1?*f`HC>EJ5cIV@89EPI%+zQGvAf1
zYN|%OAa(&x0&*mqS)2iv_1A7Z9~Hj*lL{)$l0gwUU8bB0kjpHWkF?LdICw50dY{AI
zFuAl~9a{m@7gE)|hOzcSwv*>R14VKi(CY{68iAt0&yLI7cz*M8Ae~T}bm(K+na8{T
zwmvAhY0mPanGL%t``L<-!jl7iG-bPDu792X^`1I5yB~b9)*;#HfA&(3TL280b-^>u
zOmV^6?-v2-1+bDpRrS#%nl1R+bAJu~`>H>ZIX*A>ZD=<%P45Ul?2HQ6w}_;P+2y9w
zDW%HwQxJ1#27>rkY`?`{&QhJkeCe!Utt@)hTeqEpV#ae|gw{b2QQjK`m2XBc#{gO{
z;Kg7QC^P?f6`@ab_*UU7xJc3MBka)bg6V_o8z#LZuI%QibH6nF&Zh0;T9xae+!Y%d
zEoZta>Z9NY;-Al~f9wLWmkh6e)DyF@ydQc0{`a2$`_O<$0rt-a#^JmY$%y#x#{Ybl
z|Fa#q`p~~(hBB?^LO;Xw@qrv3Qdl6{+BDpJ2-1m>n2<wa;1)K3aq{s!hqDz=$@sse
zG=6H%p0$72Avh%k80U<pr8;7Yp2ZY7fi(1<DE;5dBsl%Qt^fD(|GHc61)}8t-uM6A
z`~UCm55)Zde5P14O8{Vuk?DOv*#J4(6q(?lX+a{%fGb@<(Zda7m?%R4RG0=}fBMhk
zQgkPE1JGcD$}DwqMHwGTfN1N_LOG1<ML-c2(d0BKFW@-F1=zGwfjm((P;+nH8IX)i
z&M}b5Z>xA6yaFiB0CQIg5IT!G*#@8tiGtn$7*6|%5}9dC5g5<1)iXKx;aUaY&~bMU
z0xGkTS3e?7jyF_rIGSDNnSiug27oe&A^iqW{3xa1Nc~<R0JG*}2Ou{@(4mvvjs~Tg
z$z2FQXCoT;4v1=geEA4K)W=rQ)io(NjWtu)v^W^^0Pv&6Xtt0&fRbCc2B-i$)B<)%
zRQxuozz+6+_d<K3=8AxAIE|AXfKHIGo&m%W?EOevjnGg4MUmsqQG9&zM?*yzNUo8G
z0JCBZAVO*faJ5KrA%>6MKsGcX03ZSJ#1!FhDd{1@5g6F&?eC8_fqhAH*IdHzD7CG+
zg6NCY1hH(8Xsm8#ZQj*}6^3g0QvPf)&Oknj6^MhS0Y1FNN?khk|2XO=A^@TXy=*+5
zK}Oo}@8iw+Ukn$2)A$d}Dug(@765(Kw+}#=#Ri)-IVHmnfY(tveyaIyrQPhq#1G)x
zDFL3ZTev=%+gw;JgC{RcF%#TdkPArd<|-R(`V$UV{1wm<d#eDeYVKGKKrpcU&pVg*
z0#yQJhZIR)kL!o~HZVCJC68x{Lz#9SsS=JFPE}VLkO34Ad<Re~NY!zKaJY<Nz0qVU
z01tuf!T#50J&V6pJ^D+HZ>Bkb#*PE99jZ@QKf@NIi<Dv?e2ON5AHA%U-u*0&1`F=3
za>TIJeV70py>wmrrU!5^hkm{;NGAp&k&7)`008YNwh$@Xg_nf)zFPv2CWp-N`FDE#
zHFgy00r-6Zt=mAB`CG)zx2jtJM4Bb#<sbwY%2+y4ozDU2AL{k_^_Ljnar%Vg4oJ|>
zY;D0Tcm}|OCbM?WFjzDGhi}?;nytx8MFEbvw9`wVMVC8YHaO4nSjpL74Hzumv|yiX
zuSpDL0>CcCC}KGvZ0fZ48#ldRN_t=oz;IX`)o8+9(L8?xB%e~A{53jrpQn=VQ37t8
z+VmD|l1@|1DhXG`*Z};=Q3+!<N%bF_h-<_7%{+i}3-Dw8AY7s|sbl)(7+ZEVnSNXY
zdN3R(d=VbhtK-uOTbRYlTN4kuLG!<!@R?+9qkkWtQMhal!V_EcLiJHEdtwrD-G`qB
zpqa~>!#L+MhAAaf%xyQGMFzGl4aNs47T6Z>wvEr<_b)cW6Z$VigYHBReqZ?R^6p^O
zy7=|B-A$U^JQ+{qxn)O$b2pkSGRjE*AoSCO*^g!$q16onxSY*})g#~^OdLAz9H=#E
zgJw!*^Ol6Q-7se;5HidF_$96ML{#RJdR9N$;oAwdUj6AswWU0WDw*b>iJHzc_6zk5
za{8feo^NSWDXbbS0ayQ;x{~X?##}GigZhm>n$H>5bvwQaC<^G~WWcF-7`{KY7A*++
zGi-{w?qmO94T(GcyE|2OMW0~tpM<1K33b3e=N)D;<LmA6O(i(KgC_RL^Y2GH+?Sqz
z;S(~+GB>9=6O=oYO{})5<I-%>R5)B0giUXgW#o981ier`mo2=^7&j2_{_hv36WG>g
z1h@8{k#hq|w72W4SOY#6AdgZ>&w-raF%sRtzS`no{e;8b5@4Xk@g-JW|J+EV3@FiA
z^okTypmLxKGI!d#Q~K?Vy9OW`pUIz9?HxxycXqV8>JlLV@G^7X9v)ecaT;@-c1n64
zEKIjJ0=h%7@#nSxvkoK-$h~|nutNyx#WVetV<|?<9|2Bi+=j~hQtJ5gL^#g=QoT(t
zu3DA=tHwuP;W3|@0!iP7Z=s5G=sF*s={<`K4NGghB##5skcC-=)0KD6WBo36r&J!m
z_$dHGDIFL(C2sSIbqcHm97cA8qa4S>0pTLE&YnWY(z~#wPbx$g*8J$c01+`aq#hW_
znm7+s%}O;72d`oOp-=K@&6wdT7lSFRwgwIvweZd1jB)%<7VL7@g{Iem>YKl6t*s-7
z7<eWc>@|jp^PBPvE&x^~ST%p<v)+##!keKZfC1w5bq_Og>KFa|$Hal$wI2=uta0Fn
zts5Tz*8-k6R_z4TK+6XUQLFn|GeAp?=9gH7BaRN)np?%1KMnZB>9IMW|5=yu!V{-1
z6krIL<r8(R=WEmcsxTU^{vl@Dhrj9cm4CKnp$+?b4Kfvs^YT60RDafiqW4oPf15uf
z=konp3|n4tzyWOI?8XeCM4Tb+^@h~Y!AJw3Ir);0;~;S<xCS~tcaaTj4W;4DXZ4V8
zd*}=)Cf0>FC33pe_@0BxGMq)7h+JsAFczQw$KRhLJ|k-TP9p4LYQ@ioj#roy5ZNv|
zA(hVw<Yd`Cm+b>c6<>Ts^>nW19e(ExsgVPTP;?cF>zoVOr|r%CKC(ZfX01MRo~+%H
zvZ{+l!>k#h!ylffR+)b#^sOgF5BykA1mB?vobzr+w-mT>Wv!bdi`(9o9_XJlbD@o9
zFflCG4_}+CGF%TJ%%`2V1s0oSdVv9`zVRLV+mOyjXC*9Q%xl|AO>^c;;Gw?e1R=``
zgbtFjGXoj!%i3s-E&c%RV={1io>?g-OnSi!+~;NI%=WqNae!V5bfXU2B@%7|fZ)I4
zZ~488n1lL+J;OczsRUIkD`RcZ?BjaWvnPsX!1wv%#N8QCGV29c?-w?6w&gp)t!OMg
zb<br(Mv6(#3%T+${3eKkJBk#u`gqsH=KD#-{25hmcsrjwkY3s>Z8!o4hkD1FKHG~D
zg`<({9g0Y6YOH`eCNsS<ZF)fpIDMd$Qp}SEKxA`Fo<aqn9@7~WA|T+2AW$o^_RSp!
z;bxC1a@A#;UP9JV>v5A^eCQjNw|=en!9w3rNyj(#z+^kPEL(j&Fvxjq<i|OF=+1OP
zSUOm|8j+){mxvQ8?YvVgP@}otCU>j3H|ngvG^#Wfy1|*~4D{dqRi1jRFv(~)JQs3U
z1Z4cI_cM<-CV<j@ZIOTUUMh~71;hDL64Lnx?C=EI#~Fzo(1QS9#B8MrQO;}Q+GI(^
z{5cQvuK=-0TdeO$Ui$3q9g9h)WKcHyj`<mR9n1s6*FEzg)Dk8A?7t%(3_FtH)1Yk6
znj9$-g;$n8eoe%Mzuqi}5d7hTzenX+W7g;p|Kyo&$oPTJIzkFeRm|Ux?{TLh4Z?M}
ziko!cCB$N+W8CZE5?lTHdaCb_6_02Y*wuwftx#hvfjQP-9BoACSF{~wH>=unESygE
z=iQg0`mk5|Iq0coj=4CMPes#%keWliD8UIp(w5T-=L^Xmb;r@BN=i<ny*980iR238
zx=OQ$d>6YqpjOCrJXAxnYGuC=@Z8bOg*zC#I1V&1qT>h_|DufK1<sWM4p}H%R14Rt
z_?d@fhvZ=WLIa6%Npjh8Nm4Jba==f}8hTpRR^Bc)_a-Y~jTCLX$l8n}@cLo)@$Cf0
zSof<9_~AAIh!Dw_tD8%T#94^Vk|4ERN|ejqh7J^3x~;fB<1nsr>csZ%OLA1{np84=
zk+f;n;V0BOE|l;TJt=NY@FtPgiD9gsUS%O6sK-TW^`pT~qdTb@&B7yB$R_3BliZhQ
z$=>T`<;-utZ~t1B(G{NkJ@>KejMD+VMMjO9j?;gJ0{bL*e_5|)Q;`T0R!?mFT_UQa
zjv!wa64vvB3%wq)^8S_4V=d8_1g?_(Vui9u>fWEzBOS|X97a61S93<^Kql*TMho=T
zCGI}fqK39&_Q9Rk4|m`;_nlMM@rlUn>tTU`%Pgo)dP+XDEy;PIdh{lYhx7!{p0u%{
zgKXqcAuMI9XW`QRCg3t(g1Vm=V9>;_*;&svk-RIJ;(J%9uI@l-)?c)Wwb4^d`x3t}
z!Uk8DPY>SfWDW5vijk75qGWd8E=6YJY9H=_XzJr7ux?&<^6P#sM|p(t=;?agMBq`}
z3s5>H(OK5PEufrg+F&5Q0}N6a=TXE#J=>3SJ-nS)@&ydlK_#D5nOH*C79#fUQg2^t
zM0p(1JimF|@!9ya+}9)dqHDQd6f#r9i6jiFf!zM6fs&k;fU%@R9DEae8jgnX6#2ID
z4ZNs>pT8F=J0qbl{RAOyHf`vC@88uiMRP6AlIP5-F=s|DR*u{f`O@D;qan^-XS)q{
zu}?USP2sy)zL$^rciwZ?CLg?{;NN+7q5*C>e#M>(-OUfsh=M+5`!AGqAQdhnl!zts
zcWHzl<l>l`b|KcU9&p63CzJFBc;0Tbm8xr8+7Caqd5ZU$`_^taj@rZWHopAmc6LQ$
ztLWM})k#{c87Z}xJiN^t2<Hyyaik6Q107vS+*e3n17w<qF`h{rzoB<;#`|Uq&aAhH
zav+Jm`9T_(ov;-+@doy#ul!nsljv(1qv<-<^p8v|U$ScXh)9GNdazmD`<iJv6)E<^
zWoJb?4LIh`<W>w;zp*nYo1Dk<OLLqhj>|WHckTNrIO2QoNhEFQJUG}fcurfKi*1ea
zmD^ikpPe%j1o!e0!clVdi;HTCGDjkWB<J5~9i~6nWDn!pI{%oP43iO)uJ!4vG$rL#
z?$ft*0;{`%v&YwUbR+1TCu%7#!Of>Z+?{#7I0;*kKE<}4%1g=MJwO)sk)E;i?3nr0
z;L~q}W2aJY%@6DcX0pa@$tmas9ms3DUnh!&6uh9gbNJWHI{kIYgUs}60N3w1YGyfo
zY!6#5jXwtIc3fb{iI}4)hWor$NamDz^=SbTomSq1n9d(_M3!9MAx&r_OaUd7W9tz$
zT?b#li7`fIo{G8Yg*9%$OiC69unFaLiK5UNBX1ezx8Q^)N=(F97mEZdQbdIoQJtDX
z7>pr*O{@c1`M{FKcC?O;Rq51AKu~y43b8rOjDANj4?zPZ%i`vdPRKB#;AOOEq$$tj
z4%ESN4Gl_7m}svtJgJpnMaCvsWS)g&YjRsUn7V-pXv4Rahm9<WA5f41QmS7eD*+b9
z1ULB4#Gi$HLuoKn_tDI0@F_yj_FT341iQ7-Q$dO-i_%Gb<evsMc)}RD-YDPbD|8bM
zJTw=1E?)OMv;@f5JhLBOCht}$TDQ<)%gd)5japvgfYD|-k5nx&Fyce4|BSEBMGUvu
zSoNDve^Xw+#a>e*X&v6uM$cS(`rJh1gHk$8YSNrilEeZ+(-dJ2Tip&An#7e6Kct_l
zdKYc|rOoJZex8^(@%Zq<K6<%~NXd|-*ENeXmP2NiQQOK3Su_;F|LUVwpPZLr^#>dO
z|03Lu41*cI4*SMx;$Gmk&gr9bJ7F-D4Et~Suk!CKKg)2uWJ#D~nuac)=&|Tlqlyf+
z809OEMRE){x$RFb_nhU=CTn+`3<!$5hOVHK^F#;M+-l0%eos68FdKI=7OOCuTy}Lr
zc3-Tq+9}o%Bf<RbNyOML>|(oJbDF_N70e{nF1N{c8NQ6v2$+Pc%r@B{$<TrfQ}b8W
z#ocdwC4Y9eJ91_iIjc&33mun+4v<B6lg}d*=dZ-yFI}=`#6V-$P91e#*f~p#gsYwe
zusBr1<RJ}W-Et-R&!ZJ^E`fr~UYtH>+o|MMykjm!J{x%7*IRj+IPOO#esuquEsKg%
zV)MkFJN4~2p@Q9I&KadcEpR%O`nt>1?ADRG<d4Rk1MaU&;2CaLO0KpwqC(lL7vCps
zFAc0l>d<|EbPC4hK-)m4b_x_JaW<(fx<&i&`83=*_68+oPo@PsJ^O}@7ih2^#R4-t
zxw3Im&7nOhjsdoRI}&sf{~k3Tu~Fq!?-6J=0-G!TzHg}I%SkqwCgOK0!b}CK<Dq4S
zQ#+9ab=aBc3v!0x<t{Nlp74QqLUy9}u%T)>ZLC(F&bWl_f@{x0Vh*9E+|*P<O_(py
zN!f9#42f{vn9PC5E7s;~PI~7ROez`B)>J8&8qSKN`+CHNh%H%-yo!39=I(Q`lVW&U
zA=i<E<PNT`cobB)bp<H+5a=!uTf`LJ4{!N(&V65XimayDx9A(UAPKPVBy1)#6%rAi
zrt+K(Bu4N;>z0UAiRM>`y`vD`<AfK&VJln$ouGaim?s!hc9p~wqSaODv6fS6-@B!j
z=Uk4jgcQ1%XgA3_eFxGga3N$(x)0Vj#2lQcY?>z~lezn+;FIO6kHf>_O2%bXDuXne
zg@%+u^^AOw;(p_Y!W!em!{v7@e*!JbhMWuz;7C-%@u_T6WR%KY+<l2aadPD?0}osW
ztS%CHZnk3H8@0;HMZv`1r_wi*_s`lb&2Aw~1=clkE&^1;l%J7z{bVyX^#8lfG>=iK
zIvr@VF(vo3yhw}*@?vm6`O0mhp0TbXQ8}Ga^lD4F)UJB(b2Di|wb9%2q^cO%Z(NEc
zt>Z>%-tO3eit=R#cVW`2<)vY(4gnGxtS_A#T%mO-`}Ri?`_O3FS{+i;tXXDh<&e|i
zl(hdDC)+KF`DDq_gdmYQLUWzNx<onRTmI@c=u}1eJ&kBBY<O`=J0YL(`y+JGdcc`z
z%4CWd&$(f`^=nz6-aT1+F|6M(&R4zB6{NpM62UukYl8Pj{;E$m2TH&ch5KR+*`ZMF
zeav1pWA>3jX$@HUxANITObuit?n)A!qt3<eUzkG64}7SUH{A(6A6Ms7(Z5lkF*Rhf
z=F0NQGs~R;h9!S=U+>~tlzvNT?MP(${?t3vV@UDIThej4Z+<2kLIU2WE0mq=Zg^@f
zaKGF?xSkYf1l{knGu{*r=0hgfL3n0(d_KT`rF79^2$j)%S`52x=*>vxR3dSKKqp4|
zZ|d|pOEnm^&i&LrMkZ@hdaCD9uXY2a3J%wO;dm)4ui1r|A?%tEY3~}Hb~O2;HB2{$
zJ;maCC}DsxIK6W{=c30eKWnJOa8Z$Gn&C9onm$bH^YGXB4B5a1x_S7{avC@tx9a(o
zG5Xf2cbAfF0`V($nwHkb>%t@xDV&Tw-5>#fOks^h7DnW*_7(4A#X#;B@pn`ksvbx}
zA$dt8Dn7Mdx*afrG^V?7nHxeSj2?8r%2H0MwAXQj{Z1R?;Phkpr#_jQ_(guYTzX`t
zo@x@}{(ITp2L8i5sZ=_oB8#MPiuwFvIxtK}zkDAFS(rVchE0P6{e^%D&>iYAUGSDk
zf}7H=NI(2<hcM5TP2E4&)ALRJ@)OR-ku>7xQW*IuS?RR^BeJQcLP43wNVOz}DeaXO
zX8I5~Oj9KrJq=Wn^gOPaYYi%EPCx-ZozBuaK=;Hn9>0)5Rck)zgEWFc869?J&!LGf
zaby&pjQ;s7b#|=wUOs~|ey^&MXuQ<2@h5Re{`J2SAvZm1=j@<dLswQ!ARkbOm@orJ
z$CXro?I5!MYH_&CUZVLi|3!NW9s7yzUriM(&QAMKJVCw5`tv+1zC3=}s@WXv!19ZX
z?MMXvLDOceRrm-QKA}+tIsRY&4N(%)g;18ipq$+1Us2Fc#>J+%Ro~Id9p|$<IQNK9
z9Ch}1m_03h`bqTi#((C4BBT2$Zj}ta!bVG2%oAyK7*1Sr4~K49YK6SrIC$nEpT1$x
zlXg%yl_mWh;rE1{;qhpc4eu3)c*Ux)-=1p}=Ek5g>G-=8Lz5k%B4k%XVjTZWzLtd1
zPQA>2R1AAj(USi2pOV<GemAX{09wHm0z`P`oAkbt2J^P-<Qn~v?Q|8wlbY+{&cC$q
zWS+X%eTuHKcp>!9T@ACD*SM6P#bdsY<ojre6;^UVrWY}uAF*BTav)V}^hX~VezVyw
z!d9|SNXE19k}ZiMo3UGM;S!$6KeY|)mCi=*g;@RoRMLyibgq-|yV@X69n(o~7NMtl
zn9ETm@qIPS9IxVHu32lZHCcEWI_lZ`VzrXFkVNr6fM4WhO0oBPQ5K4cucWJfz8OAQ
zv*n4J0vl^VPonvvDk|wh;KSS^2(Muk@(?04kaz;F%FtYV3XD%K6q?Wc>R+4e6F15v
z&$r8lFmxI9UhKm07Ox&$Sq#Hc{qRqARhZJLZeR#B%|wxcYx5^vuABJbqsybeiCNPy
zgzKpI?ERxuO36^CV){6m^QIbTn3SG{*{wYz4;~1?z9rj{*xWD!;psYu{V=wi;x<Q9
zBrz3|U@a8r6XPb*`%NuN!3RqWW#_CLi6uZ_n$nbg0vi)VapnD5mCbp0vDJ`-jX6g+
z=&31iY5(rBqS+8_=f{GK%lB7EqL%DJH@0E0^VVGxb~=A^(<jTHg>hElzm#XlnbNQ8
z(bHex$d3FNO+3~!t9Tp6!}gjFV*+Sa&#Z?TG|k=~MX;GS1?aQb=y2b6j^}_75tP1E
zi`Ux70%xnc*sp4-TE%QhL(x>w$v-pqKIZ{xFeysZveeDl9~8!VdX<!&&9;w`iXcj0
z-ehr>pJbw#n{{cg7~a0TzZ%I;%$mJ>Ch<+d^mBUvIU@X7IoNoaESk_~S|dL)VAq9;
z;hPD<>-^4M<TqJyMbJdoR;c>hw4WS#uxhPfsLB<?_%EJ79w@K$eet6@lJwfeYQks`
zJi8b<DKQa^2dNqhQfBdbg<jBT5R~+~;uj&AsY^~vbAc)@NqxCI&49>8pDW{n1?R_g
zAC2Q0mO7YwpzX@mFBp!Eoxt}Dh8Nx?DTJlj#&}fQH8BHAA2qi01F$VZ-qX9_=BV~}
zJOVxHV4MQ8A5ukE^eOmDYJ8!>jXGlpZnGl}S1Y~@*M=zkXM_46OW>c!vjnMcf6{YM
zt$%E?q9JIHpV7{84-%jvZ+zRK#--?blbCySkyQ(VU<x!r5>r{^$O-_Y#bGQPr5<q6
zUJsJZ(sIU0`96*~KP*T2H9Q_@pav~oA~2uzM2`;FqB&|e0fpAvQ{ePM><}d@&7z*g
z^C-@BYi)nZ52G42Y#=-chE*c5X~i9y*2e2xd!kQ1_IKzEVB-};=j8RrVr#56Qd3p)
zX%BxeMaN<KbBIHT$f-(BB9G2AA&bFR?3G_8{?xDof>-X%@>)r$fiJe~mCn=_FCbjS
zyNa-KSuu53eL;n?U8_+A+WvXuTVliKqnCmh6Q|(xBkf|m#iWpw4``+oez+ls9e|pA
zc!>*gKH70@R-CYFrw#TIL)c%Z3)j(4b-IF106lo_gbF34-(LUf_36%Y+9Cp4^Pu>L
z_sy`FYGXvp8)kaG**OcDC`@qd)Nd;#SiRJZYr{tlNpNsQw=g)p7$pm|pS3K^QXrUw
zW<k}&(5gk{i$O}{oyp;R2X;H8_BDftad0x(!?5T!SO|`Z75~UJNAw&x6%v0Xvv^x!
zGwV9=B{#GD(GSGgsUl-UpBKPVP)#)EB51SAEE5eGN}0ifa6RDGl!gwp8+{>?OdP2I
zCpl_?DQu=i6TuV#YVEWI(ROEt@miCQ`%g!10i^8A;Z|`P-2#E*RZZCI1Cg+`Bs4rm
zjsDWN1cud>-y6PKXx|G{y0-jbt9$3$#@B~WqAL`o|I$ti^k$5hk6JN{6NV8LzyUT^
z6_NYLl3qQXT4p!jkbK(i{sL_PU3%(K78FuN1pMaCW|LEuz-qGPmk<OirymkUYT+t-
zS7#=u3seBwZS=F$HFzEX7@I*Hg?LEzn|ZPChG+tB!_>YS%DVt{@LdWpMp($J%Yt;L
zio*8}Vh+oE0ZWn;-yGP%VuwUd1UBW!BeQ1D6cjFwQf&h9KB)35scCuu1nh^y*ez|L
z3`4J~dEL{V;%;<sI!|o6wF7lA=zF{e8$$vSLW`2~JUyc&;B@c0V~L_fDT&P-n6d6D
z4@k)?H{^}V8ZNk1?CcFFHh$_7dDTHsvAeb{54)!Clpny`YEut@^Op%TOO5`0r6X}6
zxrt35{4?0hiYh?ZLSb8n*tBe)ef^0V)1=VY55wkhFa;uz#5yu%%q>zFUp~=D!iQ?P
z-NFBiR`dQ1NCPz8F*?O#g$R#Z2K2ZvKD%v;?z~Pu>#;+GSJVAgP`v++?nNh!HoQid
zIqhXU6>laXqtUs@T)Jo3QAJSu|NM*(n35=ZfVm};Du%@#))w+e4s3Dp_9RXx0!0e0
zO!8Qj<Kq8)CZ8{g=``1#?v{i`07XBOnR;yCWOTKHrb~O63j8roagx^315j&oK47T0
zIt)E^W%a6BU`qCQ<#-GgTYtw(Vv0^CP<B&7f@Uq&85k3H>tOvAOO%<0<f$Ws3pW40
zW#u*wW-h^1J(odul(0505k3)s9fxS6tCY$GMbcsCYLl9ZDLD<XIkbD={=NkUs!)Pw
zBI}+nR?%ZHWP$GuWPCpsRF%#`gc6J7oKx5|V6W3pD+|UtuDL^O2XO(xhT3Z6ml~ZN
zmQ{{#wQy5txxfiIn1U(jNS5sMQ@$J9;Q2eyus+3uZG+MsoIrh?)U<+Vj(Pe^B{$~W
z-0rV7y3xlhV$<}S$zJy$TsP;!TR`o5L%)@c^dq<IR_(tt5iWDAy$*Xmp%U=jGGJ5?
zJY#l?L(6zmsvg)w5Z5GDlJ@9k38$&En|%LXR-0>u-S@JtV^crf)(1>sfwNtKlz8R_
z!WT2DVkL>N0NmI%Dm{!gk#aj_{ARxwIU!t|F8{!HDm0olgc5=EHvH^)KBmTB%!DIq
z2aPxQadOyOy#MEj-&R7ZZ+SsHH*eP%a!xFIpvH#t69{2(_NZ!q*^3YKB9=`roIk01
z_eew=iQ5-Kg_xdv_*#XjifJQUsKusUF2uAu_{l$6&JvZ!e1~nrlvNsm+7l2)o*J#~
z2nH^`rLo3Ie<TIO!Gk1o3v-4BlfebsS%1J^-W@$b|2Tf|7R^aU1BQcCz;7WU7KtYa
zc`v&Zsm-L-3Y8dURG+r0pp7Jhkm2Vs*U4XL!!x;GIinqkn855^pHNRW+mP{LiIN0w
zbJm?mr!AEuf<+jN9_LJYs2bq~;s~YM<o?5O)yxYQ%|&f8)9nMe)R*eTOmkf-34P$S
zq{2r1-z_dE7CKn^Coa9zDb{_6^!p{LDdVK!tN7V}ZJUw^a;~1sYErJ1K%?j$_HPX4
z7h*s(Z&08)z5RRz6gaN9V_4At)eBjt4qE^AsQ;R}osZ>7W3u?7mNv1e<37905zYNl
z{N<2U<H4Da5vJlco!zhXH?wb4Zr)K)885Q$XBym!gEY*qIN85FebPB9OuZbjf7d4c
z&t=2p@<RY4BCVcYTV@Phe(MkJsueH|!1)-+U-rg()345hakiB8Z2qPwj`A_}4eIy5
z4@uENa%FqE7XN!9*PF6mSeR$KUWYjX$tM?8eCM_^zyRb|LY+m?HS&!kMt@RkFpGXA
zRBU6|mQJQ3m&C<qCobYvZLDFL-!(oo6Cogf0_L07rNlw|hQnrmbw~dV^we0faAXRA
z!I#K@zdek}y{>$C@@%K8=JEWa^Le?fx!WN<*OV!JJ^lKQVtPSpBenu7;?9~DQ$hV$
zusKR;tl4hK8ESik{7ApcFg8jx<Bo+4$!HpUzY7<?a+}M~3#sOr|5VGa=q7C6fW{1~
zVXgzmkQ>5x1l;;C{_$Vjj5UZ36YLn)$j#vXKa9O)SRTvLE{waoy9Cz|+%>qny9IZ5
zcL@Xw4uJ%h;10pv-Q8WkN!D8X-TUnCz0R2*Lo-v;UDGAq(@*tXoW$Frv;h#t+0f;s
zYL0|onZnCKhO=R>Eg8w<^vH!!$^45R;0(NC`G|Nwtc$%7VNl3_(}ECRRo|U?wUEqV
zJqvGxQK;@uabxeR-hS*}vz5^Y7hHIRaIZPZqjN!8g6>*FjiR049n#}$%XuvVr|bZM
zQx4Fmo*QV0?MUp+@#hXC?5qMyw+Zn;)n#EyzIZCPS*B-$3kJqPUDP!7i3Xc*KTX^D
zI=6z@jpb3e1I6kou5`TiD?O|{B7e%lG-Cx;EU3$LFm&vL8DP573L?X_%63e`tdyvN
ztG*eVXHE9#<2t#<=%YLf9GBn0D$1Cb0T7QLV87uB*&mdt&zm>lYwu6<`bzM`e10&*
zZQ?T+)bs3lt1<j}2!re8db3_F))Y_jLj~+oKoag($v#bWoL<4lO8Oxq@P*H0>PK-L
zjTKdsW-q;1xZt8yAea-lV4C&}x$G!d;RGD+Vvb~}BdSfGxk|@;LcLQ>rqq3hjSG++
z;}|hmGe?my*-OJi!L<Sh_Kr=+vG4p+TS?)nKcEN{$=X9al`X>lGNOx292N}j#GIgm
zrRT@p=n_vve~oH2pQ}|RZgM*=d&u|9M0U(_$i)X-vH1ygj``|GlyAF3%Vx#IO<!%D
z-BcNdV>_)M-D)t1kcxsHC;1LY)-q`ajRUWp5b;fTTRwYzOa7pT?{!Q#?2)6&f;^7|
zOJ}?5<rdsJq~V#pcZeTM<Q<{$2q1bH!e99RJZ^q;USt%ht}h)&=<{Er1(ia6A=HFC
zI#Pb6cx2@Ag;^UVtN-{E*2DLfMa$Q?Aq4lNyYyU^bMK}4`u;#L=N|HLkmzCMy$z)j
z3e-&8xk9fsv)DK4gCExS7>^X7``M2v$-(l>r+=;aouMG5<c|Fk0i%jd1=mo4V~&qz
zvVRw@tV%Kt#fmdKlMSBfBVq9CQM0W-p|)@+n$29JCOg`N+`nzGgfWPohjAXNMJ<I8
zf&Uy9;t2T0B`E^+AAp=Y5D|EUus|~au@@v%vN`ng`Be&<6o}<-^HV>nO^)idkwir0
z9E2zvw8yquHxTr!jBqhux6d532-HVt6{CcdN<|BnBxZ}s9|Z=7DFyveD+ipmEy`KL
zWE9xmoY6?G?B6R6K_loUVK9L#B*(WR9#1_#WoB%rH_l{|!~!+|79Af1aqb?^u!{X|
ze9s>e3{r4~7n-^7DTV~}Ms~*905T!5{y_gL!N6x#J`Wg(mGjus(vwmwi1RR0t?Vq0
z@lG*uB74@)MY5-$l%0rKx@whGhJB(u2Ptpl3*i?GqRp}&>tw&id*q!JE5jrZ(W2mk
zZl9b~Egp%H5KbyTwS-lvv#5xMV551HRSv6zPFZDxWb9^<^z+R4&(_=s=)U*u>&7Xx
z!YI{?-Ix=2tSAdLTI*9Djt(%m^CvN&<Xg7Wxy_S})ut8$mb*==77RPFs%M(v!moe6
zT^Y(zYpaYs@}N1MndseKtKKenm7$oT-^-kc%B8D=!7p5VG?+06YiBKPB^JKjCxy3(
z+wP5|5E`FA9b-2?NQ$gSY2ASk8?&RW1Xh)t`f3i~`DV?X1()c|P_DUuGJD-4N;jY<
z&si_PzYP7ri6gU*+sm*{pW030l6+>g6o<(oOmq!=gUIUUmww@ApSu&tIdgN(8TGK+
z>PVfK(#leb@Rru~p)S6`V{7lWK33Y!d<*QIHybN#@LkT)kEvibSN`sp*}-ioz-Cqn
zor%6|6FY^Q)?I_e5j%=!J-0ArKlLFI`}$=gY%8hmLQ3dy!tZWKC-5aYW!oIsJA1Kf
z{b3%2Y8vUpbxbqS``m{^{E4kE(XVIH%xT!1xp2_cw*^(zu8;rTGJs`xhe8-$@4f4_
zmi~T_%0)G({Kk^UQgG?ZZrjs^cAY;+g8I^~{#Ynw%rDxBEv{?6rjKX5IrCVMhN=(;
z;q!S;oeGbWPAa-TB!%h)y$EIO|DK9Ka6;X3Icqjq){NkV(<r*cd~M+gfGJ6lJqWBc
z(Z;Kcy9eX-zdhs?k$XQT`YJPKQoyqrGBt&~I#OMbKg0j+lZy2L_QK3!dp0!8*^NLv
zYbv=l8wsuZq&c-{s`M_*#DuLH6WhLSyd8**+h(jUzo$Kj!VFppEjfsukN@=5OGtr|
zlt3nGXF2g?i!#Rx18cOYe{>;82M_fRWOdIvQb$M@*7(%4@tnN;)f)b=(F(yqcUekH
z2(4`L3_=t~J^zn)Y!b_F15i7wGdNG!Bu9N3#CMOa0>$&p0eR-2K{LLMKNji6q)c%f
z<kv2uKP`Y0=F-LB(0SII)9pw8ba(aj5I2XfLj~dBsAIZ{WxZn^q17C2pA@)Rxz2h$
zNJKdu37u;H(eB+w$_a&Ej5zYbVLW@#emlEXCsG*Ti`@~;ZJk|6YfZGJzGU7L#lpe?
zQ}qpb<(2;$*P#%s`<d(TZpE&)kk)9}!S`TH;BC6N%>0i3)$_&B3srNsiK_y+=>g@*
zW0T8<ia7LKb3{aXVcriy|2x9X>CMW1dArBisn5ROoPHl&3TnR2+FPaK4PBL3p+1Mk
zaO*W@VBAaoR!ruNzD>qc#$KPzP89SL+A)p)Sm-hJ@m``qKJluE*idwx6C&}%s85cE
zx@(L)KhpwZxA)zr0hO!fDcGFv*RtMU*P0(@N0>0xR=ZzaeDxom4W2vst+89#<jn00
zxa2;JnBNDqW%f7J_;KOgsSLxAPmwwdCYb!F@4WWiSH3ayZQ|^F;p@LD3eLL-mu>p%
zv*qo0r3w**6ak|1wOKqPK7j;Ua`^fj>GT9V)<@-~4!pw~N*t5y7?B<T3GXPZU(q_S
z&42{C!cCh|Q!Q4{;sYb;0AqCdGC#-+vdhL?eAeLm{jvT~_Zu=22q=In-NANfcL*9r
zG*FUE@aF;mH~j}L`Zsbo$R8wi;LmSLkUucs0G@d^0Qdf%*Zg~92{VAYm=T`d4&vdf
zU1%ibaS)*XJcI)PV1s}d{Hg7)vwr|2aOJNv$iEZ)Z=}D8T2cqt5&8#5S6W0-`yB}0
z;%aAZN=4rp!n(M+QsvM_awof>jfIHWdcr)yFRys-uY=Q49v;)u!Wk-r1tP5k1`3`h
z1~@;k^W=}v#?(+`-@XJQ3;1^1wKWiP607*qLV@^$0k8G!=1})!t^V_*9BTJz=7WdC
zUD4^`t1~g_HipAlf?E#M?qiAvPhM6lVWcq#$U6XW+kcR$q6MS%ss8&kok&c2BbxH(
zX^sqqrOXUX;ek@tJ!+PfZ$&a$iRiYAk4+x#&@@#bAYXr@bMM?=Z{=%M@40x?t2Q)z
zDsjtKUa?MXnq_dQSSp0ghJ5P2DR@58-DPVJ+|^!fZQ5C_xP1uzB7t|k@#F=_1`ZID
zLg>rdQxlhy?ssK|ruvEef+@x!7L&cCYQhf>#ty=_a-y+qL*BdU^WHV?6)jILF8SIK
z=~0JS$CG0(e6PtUf7OCwx+5(#@>Be#Tt{(`1&P0LWD^gS4ak)EbZ$Ou?%O-&c9!n8
z_QeTN>;C!6?_T=dG|EozuG9ON{uxbXQwIF%p!=r*^Iz>{I~5W}gnZpVo6p{Nz*CGe
z)7I_`3?LwazokybtL>9_uTgg_{Bc(4BB&XsrV;9igw$Nd4l%|r^kLY%O`yNo?q=&f
zo-+{)@OpsO_``IUS@uelneMfMMWHzEUc6DOy|~N7T_FSY{T6^=aBfPimA;x6@pP$J
z{xvzzJTxrV*7uEzG3K0yVJ4c&!#*R=?cY`XVPTNA(#p{{z?8w0cp>aaiiYoqdOnQL
znExu>ud;zq*(IL^kx}^{VlqU`>~B=sl-9pgtU5`8Gd-TydLs8m75}+E$WUpNPFskT
z#Jc9($Px(gM3QUHO=k4F;k&h~Q*GN>hRW36O#YVmI<lAfD~5VX?}dQDw<0qJiT?D7
zDze<%gQA5=#Fb<A>yKzI;{CWT1PxVr6N<(f)s-a?`4A!lR+2R$Q!6%_!+8+~>{e(Z
zXox-We35ye<O?tlqdt4GPmw>^4e2ZUzFi$~yZrooHOh6@cIUfq*ZTD3Cu46$h<}}U
z%rWBJJ=&@jzIF7=Le5KjaeL#MMu!njs38tk<?nOogFXcPiPih+xup$@x=HL$?KD2U
zf%gjd%L8FsPTsLh#1eNIr!I(>AGQMl>VG}<6RFn@L%8`PqIol6ELItFhS5j;s;~UB
zM`<ztdhAmS)YX4BhFjr}iDdrd*KY7ZJH?e=+51<r?>I~B*acVHa`BUF12@>ik>-D}
z_mfd91MaIPuH4y9)f0VwTLIl4_IN@eV<g%K>H~aJVq|Q-qZ!x3h6|Xz5cnP6JM)D*
zk-xsaeOp^FDzp}zzBAVI`zGLs39o_B&5Y0uhV}c*yoFt<_6{sn7mL0m<p~sPpY4_D
ze6Wh2uBgJTW7RCcAqzA?n(V754aDJR)o_|A(w~dL$1$#G3dgG#{mA7pv4|+VRC&HT
z8rA*;=y*9=lt_F(MLY=FU}NQro&^f~Ae2pcZC2?ywQYp9Ch;03pDhV{<_mNMM$Pc)
ziP&Tq!6y$BOBh-B6)*fsj{Iu<XGZ_xtJ1&sH+RFFkmbyp-sf7rC>d3q5%-atGQVEP
zhkFm)ZD#T{6a<K!zGe67e>@X63P5exSqt38BRBgr@Ve?zt$jRDF5g{?IU!lf+Bsp9
zvHvqZJaHjjjw_KaCQ^Z=%A>?JY6;<G5QpMN6!yz6F8$ZXDSbJi!7h_|JgKj6ZGGQe
ztLh_+URjvuiYGi}W?i-{YPyt6#T~O@aSJV{v9|=o^Pd<T3-LToxD5U%5G4I?H8SiY
zH()?c3W1L^owOBi247@-p9qh(;k$&W0}6(VL(pSAQbGDj2m#^9h^2Mr;^neVYrUkp
zOVcFGI0UnPS1L_e8jE0tOrmN)k&!PY={=V<^^6|%Wy`xu`Z^l21&BSC=BaqKjA$R~
zyN&0NtH$D;G09SS0^^w8XZ6MPcNp(~mK*U=oh`D=9<X>#q2q811b>&PC#z?L<3Rp?
z7dNu+8>Q3vpMBg2Sss3A4X;sORDKi}vzC)R8=+U&JFH%mU-9N7iJ*rosvL(eeV1zF
zGWXGjuL{@q*7;0G$ALZZNY?(*W^VMPkRie(;9=7$kGY+k7}!w}dS=WNT^Cvf5qHt6
z?)~ffJxkivEL*a%@|}3v;pPih2_oJQK1K28=)ME@oDlk4xi|?9J{gZyzE{SGkEun`
z9gjiVxK3>tYiAh~X_3i`qM3M{un}I`fS7fK1-}n2=h3~lII-+J-!U9sOF;Iqjc)g?
zo^YZ0NuXDTMm_Kd{fKY1c|M$4OnR}gM@;ff7~ER9NMLmT=ZCm2&6``QuSjjLNlq_x
zRC6V!pi#et_P2GKd1HK{_xDVX3<g6Zq*}%xB`@s^Pewy;du$>`<B@lR>!d(5v=;ta
zHZEAhL9k&h!ZP(aChiGY*yyN@VLU~wWApt`)iOpL1Y8Ca{K5NQlHWgysu_p+;cvU~
zbE`wZt!jcq$mV?NsXfFod2br6T8!2%7Mr8^`Qt_JE$3krgJb@4ei_-tb1YZ<yn_u7
z!i>X!b8%cG_1k48q~<9?f$GqW8As96TJH9kl-Wg^RI-En0nT8CVg^`i$;-qCqCipg
zHD4TS1PTtwY1yCUt1<->O%#f9TG+@tu;tR<0vrp}2A$ZSCgas|0#DnBVD@3l3l@X@
z-;?EY&tTHpa8X6YLK4EGs1_DFG;bcQu}aj1f3ZO9;SHKDEN`DNz8wpCj*0Q)ZQY@f
zbk05&oaRm#%947mb*bWts&|UKDLm?$Wakd+&5|<aK;D5Fmfli}J9o%Pd6SKu@R(yn
zme9lhPv<jNXfFafEv-tys)5h;vKed>GabuC6|1-?ZiT7bCyAr*xpaMX1}0*~rx|rC
zGPsQu%eA4`Zo5nmJ<=wQ(3j|fp8{6ob@`g&v#%IJmt!#*BNNoc)lGONen4ej>40Og
zai1skBwgagkl!mpTr*LS=*kbRW%eVeeYp3L@hA%Is<p0$lS5tkpT&h!@B`D9-{D~6
zprnvLaw+#Vs-Z~-#}VTGP<i&8WjgOTd?J}>YJmJ8;6cs~KT~Z#Wzu<#1&yW)3zH=P
z`Q@k8{?%4I$>xD$ozbx?g?f5CgAtbx$2ZNFOt_*;2n`>z60FtOlD#@+Ed2B4y-$Ho
z5r}A6VLT2;Q|%HOdhh6O((T>LlclG{m^zWiV0&wyHE?!igVeTF+HpP_#ZOt|*M$~E
zx|dvvpk$RL?Mj|}|LG@q{O#R!_K7M)`IlhDy-BJH)M!(v=j)A}ufFPp6lSUdvHE<E
zP87+9EV@0|uiKv|;^9;cVQRUo4s<5)M28VYdN!G*Z1S6)FHVRwk0Z760=Ol_+AfTU
zP`L~nf3AxUuRcRia8rN+aBUiwEuRm*4#Ed8O3=-!52DgJ28+BTMv9i<+R9O+;O6?O
zg;+`(6*gHAy>gjG`C5sQb>+Z^_&U&6`{cbAMKr%+>WfWJrG}AKr2OqB|FXL@2N(_b
z5PwWh22kk(I;@_sMV6R)&>uBhlfBaMX{|0;>=j|%6DDE?ywdr&RX^UT5ZP~>3nE9Z
zGW4*k54*`DhA_Ydyok{)y4G(#f7o-_d4}<nzs;+x2idqP2G)hb`ey|KWBKg1&LfB<
zud`0NfB2l``nd7%6_Ow0-9+8<!#h*rE#F)cp1XKDd|D^?p$7uhM)dVH%ZS%80<Sci
z;<<GPba2Aw7=_{y`iZ8$s5PU&onmx<t|#%U(xwk4^;l-l`8cz<Xe;$-rl7|WD~>+%
zcxvl56#DCi7fO~FH;^ZjcRA6I4XYVD_s*HADfTP~NOFYa?FoVwBoZ_~b3;_`ca2q@
zkttarpQ{g_sl^WI_VOfWv($=+J*Hcr6Bg?mNHC`p%z%I@tQ1M%Ix%$OVv0w>$lO)e
z8^ZL|-ZKzV#`!d(ncTo2VxkAZ&v_d_Z}9#NHlo`9{b0dKTCaB0`DnJ>wa*H4M0OIN
zyWbgOvW*|6gX#puFlBj4Z}DcR@HN3vUrH_=uxpO;nE#s8tim@?Z#zfrv#1L!Xi|19
z979?lv|cl@-Puw=u3abqzzTQk=C-jq>1A*JfB-mx!(<40&qSJP3a}}C$Gp?;T3@<V
zS+H6B5{y4&YhE$!V_6$G;-6dXwO2Wv@eJ60iMn@jph$ff^NQ4XYu0fySo-n3WJxz_
zI+UVGoNE0MnbyEEHH5Umh4Ig@YWP2zvLW12?XeGkTcBAk9p<5ZN#bC#4kI&jAz2}<
z=)IgCza~HtAz6zUD;gpr-=wdT@32x0GpzN(DbA=H(sPk(%*lQZ`>bMH+GBU+7gWrh
z-Gh1YGZGa>l+G{K*DJXm(rmg|uV(aq(9+#vC5WsIs4~iYeC7@HG3=>Sz}o@m?)wX!
zu-bAc^;%|#;RWol!(*3aWQszW#3dSf6Vh2wkJts5`z;Almg?b3l^@UbkTHrfX2j2>
zUBRvy#Q^n1y?~rCM&HoYTyh-6%kedEa`3c+U*cBAWVMA>+iEmM0|`zN<81Tb0z+Cu
zC{>bTOj#c!H)SI*CFE~}1t*%Ik#f(Jh;NXI`20_mS8#rE2R2iJmT~hNWDSRxg$wrv
z%(Z9K1h=>KokCfJaHgwRi*9bZx6nYmA5f5$7*o{CbF6_+h+@C=xHT10|0ZPU1Nt2P
zrGz7r!Hy<n?xe?6RMo<;B)s>f>@9Q%+r;oXYDnMUO<i}hi4#dc>?EYIbQ`MW+!ysm
z{w6ChmlsJ>_F&T6qS;u(118muDNOVVm1)M#l39NCMet5r6!(8T{c~6=8*=2~{M~(-
z=ULpH-i*)Ls`;mu4@at?VF8BoP&l`y2BE!_5sJpH#>3xGVc|AE>7Z?mj#eV@MB0GC
z!Szu_dSQTvuY;k+kd?iA_vo|Io+MNo$kM>B+VD+4WsZ68`rtK7Kj*=ie`bXoNE8>?
zZ)6FJu7Ph_t3%5yF%&tfLF6lMy3f5RfkB9I!CH{b>|gVuLxT<hM+Nh|zued&Xo0ZG
z4F93iLT@)+5X%rQ={&*R;}*VB(=_DbLFjzIUR<F-;8f}ouI6qykXs~C06nrVziA7D
zb114UP&Jw$Tl0s;#S5$b$5D*#4@*(0R7x`KXzhNnOgc$~4v!z-bJE??7t0QwOqFk>
znL)q&g0RQa#y7;T*nav{m8Mf^FAu?)5`#I;%EH0#hA=`_6P`f&rb5KYGiqx-DTnA4
zglIj5cV^><{=Ids!$aUsSA!~6TvC&n6Wg~9WOSD8XPV+G?kfEk1h?5S?46t-r{hVM
zd-JEu1?yVT5gM@&DTj)nsgc*Bvu6-F+*^B@hVG2QB!@N$G;yc;;4WH4q!}pfXZO=u
zcB~l6aZ~H{c$=Z^Eb`q`q>uz{w@(`}&k^U6P9E+umdAZNP@V5bV3+Ve7Pg#eL*>{Y
z`(~y_YkjX1eC_nMm(%47`2|@al42vWvvoq8_q_ozv(Q8OYdCwDbQAfil;=^K&WkUs
zj&hc}PhuA3UZi2cvkq=@1eU$DN`6f<dZrz+4`RQHSE@0k%~W~i;kl#zs7`6IX~L(2
z(fiUTYJ2|SY$%B!LSnB)>0uhJ5U0<0ogOvztT#{F*?uS8bCY``R!Ib?A;Jc*e-Z^k
zr2fep7`SGVPEl!rHF)+c{My(RWfJBRNLfFF9gyTX2~q~}(BV-*@79vV0}1(bsd(>0
z3U_-o2ey4OCi1$<TmDWHX$;}RJheuCK@&tKE@aN8AJ*Fk8xD;LU)An*Jn<SU&&N++
zceLO$jR_3U?pV8McO_Z(`*q%-)30Z3u&A_nn_=0Sthy9Sqv0yrt;^@UVcX2n84}vU
zp4qr1vtyGt7_#*-J8UOyz)Dl?nx%|@6kp5G*q~vYe{>7ukQUiA?|(RHwBO=geU}B3
zLE*}{kacVQIHvg)aCyjTzk31~WO*zgX@DzL#v+Kt16LoRb}r)-g6QSbppeJ|&7>xj
zVgY`qg1zs^ZvU}TLbY4SzQ{zbE9dhwtSf#>@@GToHw4=}D7Vv9p_M}JXpJkfT^nT3
z;?g6sX(&vBq?5v@vFpB)eLsVpfQpWT_9Y+^kD@6q>{4t~X6Vusj}Hve<zYSeBojW$
zooz55KgngvNdV*&Ot*pO;^Qf&#t{RhV%iCGO<DrXDi?ZY{piuT^lhkWCIO}k<~l|8
zv@)S=5%$fVjs4f7IDIZ|lFDIYS*ghPE*~~DjuabBxGFO_yUBlHlB>5uERZQ*uboP`
z*?s6UgBHdz58U5URPseG=;9U^8f%rtLpR4&`V^<nC&$+8tl1{N{y^Lmt7tHS4krCO
zcO)2T<zKlYpE;zXu)7`k&^5d*l~Zp^ll^4`(0B@CDA#dfsYFoeL=@_sS6L>o^pkyJ
zbMH3>VdtqdIz`T+>$5qQ588uZt@T385|H~U2&7GiF9kUzI5#ZvDLDB@b7B=0nG7dR
zAJ#EuF*>+@fr4uK#ziKj7T|6j|C|VN2|2P5pq~pFWyiO<Z!uptvhTV7F60~o9_4d7
z%G60Cpe@eU_{`>Wu-rHT3bULS;@AqQhv0*hFCuH<<kC)wM=zu8f0~WI9-J~3K!Yw(
z(*PYb<$A^KT#nd)@qQ?Qo$=5Flb<#lYII{)<XqArfTJ54k7@!8QEQ!O+&7=FX-CWA
z^CRLmr9rv?FILmW@lMTpV}Bz_JuO~lqcMv@pSFQa{hJ^XuTpyX;B;P;6!9p&Hg#9`
zI<LuS`NB=_%~FS^3RlifcW5k~F+-){nx}o_D8}Ul+bTTfnlqEDpB(3s8uDn^191m`
zA08ne;d+bmITk)VW|{Qdc-^48)0dsz1)nywdIz}ZA;e(hq{N~jiOt^lJp&eXsLvtv
zc0*wCis?vl(h~4}W{@3v6+PQ6u<Nz;bzMAth)oQ58aAvVU90Z)smHny8SWu0v&CwG
z97hIq0kGwP%zvi^{aezVTQKEy`KZbH<PNB5xrFYB1LyhbrM&LPzAH~5qo%KqEMn0J
z=`#oG7&-KzM&xghe5DMwUy${F;dWDE(XlZ*_3x!=T{5<<Ho#>D$wGe(=jboUoEvwj
zL67T>Y#qATY-&$X!9~%CpuIQ0=V$em{YK4DO2?TI*XiuGCisxxI2@i1dUZZ=F5}QU
zp9#XbZ_8ZF3z2#G$l6H3twb!8&Yh~vU?MHM-mU`gQ%Y1ks<LHvCyR4n?w9$~G?zKX
z1gy*%i&H`?R`9#JqF%Izdd+;X-IJKXdzOHdZ3Nq<56g*J%nWZnR5y<ooH9($Aez){
z9TD@mND{3p;9E!iOES(~aSX+s>6tvJr!=D?z`kpGbPaP~R1M6l+{vZ$r(#MkZ8=*g
z^OLrja^j`VG31%5DCN9@A2^xzR2R=mJ`|{PQ?VV+4D6QK$kzv55ZlFK!~r$!mc+-J
z`g$~<nBnn5?q=Jgx_rbe8plDdyI@9mt(#VZzasd#<Ll&ptjv9>;jF124pwa;kjpr}
zn3~BMcLRQ&KtL?plY8O&wU;yaVl5f3`TawGi}ycf`H$@Es-2gNG!S5bjPkbLgiXs8
zSM&Pos<5*f*DGN5jI}!cS6a{(j=T?CiF}LB#EI;3o?eYboSPwaW1C6k`X;@-FO|{B
zhDxgt%R&O4Po7nEjM&;oP6>WybeBh03LPH}jX{<CB!#?H30~lGc^4tzW5AC3z4JTp
z$b4xj<c{-_6-3jwPV#6p-1fDTIk56y<anYn2;TWy#V|1BdI=h2;R5k!g|52=A)Bsi
zw)TfjRtehekQuQy9l<RZ^AnZE@g1J&u;olpX4nh8nw<h!Muoy)W&7ZgU`LgT1``#}
zvUJ&Sa!WBB+tX%OEedkcg_XG=G}MWx>X=a%8U02}3&QqYAB8v4M8T}T61OARHBxY{
zZ}%p(>l>Wlp=ju6OyD@Esh8(zx&~zve<?J>w+_imQldvqF)X(uKH%qG{3<=s@u6G#
zTaMJrBonmU8tsmO-<7YH(thJCl4gn~v(n9#kjadR(ZwpHd-FM>^XlPdO_QX7hZGn*
z=}zZ*G7(efP+3klwB}iW^0Wd>8IIH8RRr&w$Q)@vA<F;hOZfvZ(`=J*<O|Q!St%Hr
z?A(HCNWA#7_1QBy>_2bgGJMZ#Ep*oQKA(KvtNQ*;5{)~iIsI6nD+xCI^!3yA%3+XW
z9i_=dzCn%!VlxCKfwE0*^yjVK^}Vk!b^iL1$SP7CL6BGsFYp6Itm53*$=~uR-M&G(
zdc)$M2o+9hchij^qIz|WFD}82wj?q$R!9ybW(Vw;*$4WiGVv<wqQ;kip9a8`ra_8j
zM&Ei=%PVe%*oEfb7f|?i&7+AX34vLwZ^>!&Yp@0s;)ajVO!&rkaEqQCvHGkV+e;{<
z3UGebW-^|R{A`#@>?6PgrTyjQc5-;n5Yr6SqkyK`nyqs|qYbp$g$gGJo0CMfrCMj>
zXD1<WBz7!baxW*%i0sPX(h;+RTZ6`cYZpmn>`M?XK*)^-*bL028S41@JHQggRE^+K
zS}_6u-VVRQD&y4iu3Vw*vC~lA;HH1w;w0tgKN>rMldPG9K6s$UQ|Lp!wmoW!CI<&O
zwH@*5{Xz_M$)p^r;-c3?BH&oqbUm|mzI8Q{DH7ll@GaG=eNK!aKZ&E%wu<a|fsHpx
zgX#|sNH>zN8Q+twl7pfDlT|sm1MQFdJiiA!(q>D9VBex%8Pg#0ls66MzJ4qbc1f18
zvf*t(%Cxqf13Xq3cGnxyn5eqNR7<YZMX+)KU+Bm)ycy+iaKd2d#}Xr3i?RI4P$hdZ
z*4>SCrZ=!SQSAF74<Srr@F@>+hy82P<>Tg%2yMNfg(6f9ou43?*CLk8x?EtNE)Gez
z?j&71lUt<r_YZm!zL3X{d<fu{gVd+uTTbhFxQq7_={j|{Pn4(V;+{owm1!DgK!&6~
zb0->Biw(9e{~{_m5Nlu`%R$iT6!rSi_P*+=R*O7Lvji58>3!gp*u)-A)ka7FWiVz;
zv&EFVZj%{_TrmWXx5_msr`KUy(8FAjf<#$b{6#8<gIy`uUVh^N4!;{tOXA8qCXNh@
zN*xjjS!0GDD~;mP=mK;vFqyk_BbAwSVLN!ZBfFP!4*mKfZ*h*+%RN4qyRi1sO33ej
zP<*SOlQw2`8Zxi-Xp+x^)=4C|sH)vYJ;@?G*Vu$g+9AJ};fXx5yUOmI-oNwr5;WJR
z-sxqvy6#}YI~=-k=WxeazOicRV^sRJy?s^kE#cIuf8oUab!lVZ+bD#&<%H3*&jRy(
zp;zbJdc+<ULVwQ<ddbUB*5_QQ%k9m`?PQl|NTXQs0JaZKNLEa<o0s3QzP#*Z9KO_M
zzjXqWW!WmVP!Es)nk)yl-D{V>iWw9>R151@AGqubyZE~K<X|9k_AD8Vg`9O99G&!H
zU$A{eP!uGh4PsRRb!o&qx|%a&ZpL@*CY?={BIQ9-?jfwSHt%w*C#XhYi_SI;ouAZ@
z!qMe}Yv#0mm%pQ-fQmGl`zWF?=0KLvW%Mv}?}Ml(Gt0T<x#nWef$<~Ew31+#o?~iV
zah(2Ayj$M96SfQ{gmyF()7qORf>uSpBviYRZW+5-c%)$RI<a)U*0pwXrlQ}tC;Br9
zazZCx7b5gG<Sxm|S9k>YCw*^C{-?H%$ZCH^S>xygh}qh}yH3ltMTDG?Rr~C*9;I)!
zI(AkY&Fju?E?X~%XPrj%TqgQogotcn%g<Ol7hI|`BUs?)`)KV8b}A{l<xT>Ic;D}g
zXYQPDmBhJ!iU2;643&UD{fI--{u$aqf{?n0b<xyMfzQfL7PFpY%>BsqEO0huYg9W$
zRd|b(Z8$(Q{*-1u^FxM|g{>WA5QkZVk?~IEx<AcNbi?hk<BG5ATRck$9Hbv@Rx;qp
zO>cP48|*@b{K$|pU*10%2=rs+i^v!f@#0lfeDR+>n&i~8Y!}WrFUwbf8Jz4=JquQM
z>f2O%W2kkh3#h3-)P9#|0wa0l6*%@begn=H^0&qR?EoO!r44?mXH4*myp|&STom0Q
zC+8j&@K-Bjb+Ahj0mBbjg)3e3@_thQ@u8pK)s7jC<>9A3o(H=Cr_w957vZd&PW*2g
z)}kuG8yrvh);xCW&fS*RH`f8mb6W7W-$L(%YHFx#eG&QGK6MSu#Flv%VW)&`AxqvE
zZ%Tz&hA3OAp%lNF3CLxA?^}pMWKQ(qMvrx<=OsEc_Etk#{8ZO1Y3>GHXV(oOxAOpp
zQ)*c*G_*6c?!0m$x)TD2;?ptwJa(@4y0o5Y!3Ek&h1-mr6Ts_5`7^<wdENn3{PgyA
zYi78LBJEgHukFE?GP<^|uBPQV+{=d~R+k^{%*4%|;-|u=Kvw6HHZ4T*7}=P8tFuH$
z_f{m`*2y<z4tb*+!caW**$OmxI&$W;t|`dMaP}atJhq`AXxh;;g6T0X_J(H&@=|K$
z^$y2_j7_o2@V*9C0-rkzZ_BBtzNi>x$4X5!zZvy!7jf^I*6WTP8a=P@aE|rPHm(<@
zj`^ENBZkR2r?j9)Z)VkG2ETw{x03gc^!42%Bo5$Z;6k{yUQKzwLhDNp!7$7L5%Ryk
zWdeX8=s(WeH>YEeB;Y0)NVbQDUq7J+v&xU&JbKbI)~eod&}}<iH$(PlPvM=&XV5kg
z%wZ}okS;!Ffyh4{%BmFm!HGJ*HWy-qZ^YuvPQq3j(I`%I%H`1A3!?BqGQ5$Bb7N{V
zPEjEvOoRb?;eGG9^u?}e`2DlR&&{69xp)_D@Ebz&@y^BeE~D}$XOs<|y{>?)J2}U#
zJEP;E+u}v7nvla|UUl*QtS!}Zlbg-hp0B%}h`pL~dQq8Q=o#Bfj++}l-zdh7UoPN$
z#tpv=Wwj~SlCMc{h8kIKEXiqTkP~usp+eH*_V<zXVqqkY@7<L9Sry6N9~Po46<xP%
zCA5^qk=dpfgQ$8WS^Kkxr_$9q8NZ*CC(#I2VoPK6Xnb}p^h-T)g0rxE9{sHayDLX>
z5{c1GD1p2{5OQ6s(VDu<>`B+gP*~;ZI$nuUc`5OSR`eaGoz)%A*DIFDgT)i;<l^ya
zly@4#GUXRKiGtHC4<*rwTQARU3ac98cb$%7ONEr_6((_o1Y(4-6u5^N=KT~qNAF68
zB&K4hW^Yw9TU^2Lkt*_I?gh+^{WdRI@Fc#-7O7uV<sxni3_U<(5+W`c5}H~L-w`WG
z8u-xty<G8+Lw2W6#b6A4_)t_U5I6eufgCOZjw;?lEk!n&azxFO(i#DqlO6mcu4QK-
zj1=OM1!P%q!5cI@h)YYP6!f?LA9tIH!4$#NUUnFy;4WLoxh5{@>!c25ysy?(xMN)X
zJPJ=Tp%cd>aTMzFl^Vx+-}m`$NN3F7lFC_cg>L4#&^TpY$N9LaIVXJ<d*4ZQR5g||
zCy26@Xe>`NHfIy(TfZO%86|HM>uB=KDhW&zqpME~L<Jr4^erk9X|%Tpd`UMYZ!Pu=
z>hGYNh&gOJpGVMRCn~pHOp1nmcNi3dKJyY&Rq$kV<B_WqEp<oCSs`^>kXgB)%C2TZ
zLlYC^Q|n0b8g_MtVJ<%>S<|Oes!N4L!!f8>&ae}%JJd@sb7OKd@1vwQ?<De4t<kuj
zx7SPkE6CTB)uIN=j82@)M;?!}#%(z72s%5WSbzV@tjd$U%V|&e&sxC0?1u<Qk)@VC
zUQMMNxf_rtd*Kmn{O0YGCB%JJ>K0<%g1(HFX;EXFwb8KjVfI4Kx%kK@sdaxIJvL|4
z@I+a_dG%brR{q3YfyejPY9B|Vy^(`gqJ{_BL-J<6dgR=ZuO1N>6o21*Xvvf4rRDg!
zMhS6+sJd(H<$3tybv6ZlGd4Ge%FEN;vG`3PFR!~_n^ZPM#c}GA!9Dd@hjkV8>1taT
z9iMs{h*JT#-};q&&WDE&X8&l%KWkh4hEkyD8g#M+3)H{9Ku2;c>?!t(`Y68X7w{7n
zFK7=%eI_lWz*X0-2&^eF;xGT88L#pPzLh(c@ofFqx7YdG@$!%rx*<;A1)YKec_dFp
z0rd2uAgo2*FABC3C0@bO1`?Q$Q=c3wrBoHv-&Z*#cE;emKNK%nC)^hv|IXL~2^ppE
z_@yOjUdEC;cO2sQ4H{XWN=C1GA37`S*PoaoXUe5_m8THP%^CnG;G3xoHPu!Ki^rRf
zs#dnID}@q*bRJrYWpT0JThp5OX^6>&suB<$1qlRCohSH|L8d-A6-VBYEqRq6c+2%t
z%Vj<cpB+7ma?z@1>n7u${TPzD`6dcy7_o$1+j4kuH}}Hf*q~_O01Z5k0fb(CEd#Tz
z{N7Q0I59(gvS+2$pS1?Wx;%0FEwWH*aZ_&%nVaO{pqAN8ugPC;JstVtf5OlJVrKr1
zQCh*&@M!3$9&BzTVY2&?`a`?g1L-P#%=>o$(C@I84o3KL9l@eZvw%YEm64g*8T6ss
z%&k`Y2A7+@SGPZ;cXg)?8-?-oE$g@dJHNwlK=c<r*g~cfQU_m?Xc_GMt1;bQEppQK
z4uUz5Cj2ZtwK08=^*>IlsFyPHD_l+p_`-gN2R&)7*oi!R9sXB@&U2wP4eTlrN?9KE
zd~keg+-XCujzZ$t9>m{m5vOZufi0jvdK1-{pa^@Sl-WpHu#jA-o&o_mf24Cy>+MdF
z>n!NEnEbA{MKj`|y<t+zCvWd}3{Qo`-I4*-J7jfYAQ<US&=!B&>pfZifwH6TLpgs2
z^+lsYt}M(#(Ee++jR+Myx+Cj*vYa*_jK9O3Tq~=pa;?9mCK`W;+lRbW;R15)ZeVHl
zrv1pq;32^F*?ghDN^f7=wRZMPF>-vKRg_ZO`|=d;mjL=#YlPn`Dvp|N&1KEb#s+d1
zz*$py7{ncv&iW?JZ)_qKHs-H?apait1Gs$NJU^ajGl^5W=a2?>3Z*ZP?#5>M3wpZr
zZ%>HC44L7&_qm^Y-<QBgg?tbEAsSxa6ks@*t{c80Q)Yn*J9nQOo&s9M1HDSQyy+zg
zf>H_M&y9NI%-hGC(`(NgzFLBRQjVHcj+>=8G`y-g+p?<MRJPGbJk?8a8z#{L1_D73
zvVLP1EFZVO^2W%~o-xpVso}#^_I>#HJHr&;cfZ-HmnHGu&*~r~fcO;!^a@wV)f6#6
zy=Q-Nu5Hb@kYRzqXn+VRv6-cqrmOM&7&!)SUP-fn1OfXi?C?(nAwU5fzbgP@?)?8m
z5dJy;P4qvc*sjNdzezy`-s(_URa9p>z5$1ofhutPclleu|6Kp?vMPAl?}z`;0A)BH
zSCT(fZ@(?V-~u=BH2#y|--&;hq11lY{uj-Eml4bVhX#@Ucs}4y-SKbM<R&G+oquQf
zzghe1RsO}=@0$K$^H2GG<?lau8bJG)|Jft|&GLV<_U|nJ2b=%SGEn}fM@R;89>w6u
zK?MKEhXim9fC>Cp*&i^vf3E*i{w+z6-$8{SAi!4Ie=jrhxY~mW!axWyzbRlp!_zed
zqPi0cs6!I=Ab^0Z|Ea3uPbet}65x(NKnVV5$X_==e)~U=zi-$Zyv%3Tu-5e900@PN
z6bIGAycu}VSjg9_bY$P^sDMjSiHuR<HKh&)7Xw<-e~5erAvgat@voW;YK)<OvkxNp
zS`ibU`%mYp{#!@?|CIj{;$JlXF3^83|I>*ef7I$PVf@wUf5fNyzm@+VS`H!PLHW%y
z$fcicFv9<vCjJre|Gnj|SVF)n0>?u;hj8fsp?$yA{(o)l|EgSu{YZfS2J9TzgheXy
zkJ<jW4gB50f9U=HrRB>1Q;7dAi2tqp-!1>Q^}%`V;To%6ggStxh#iPQ6i6~fO_O|e
zF8Bz01CC-P`HuLV5D5&ag#!3TSu70$&3h1td58miVg1yiYdp_0_`u1YyPP$Oz1`Jg
zy;I%z=aFAm(x2v6yv#<2<DZ6~_{~qF<ALQH6k!<BzfK7Be;0mVGBJStpZ{<*HW?i5
zPIaYaWNL$hA+)PaA{cZU$FZ37Yyh0q2Fc|XkEz|UoUxl9#{jIR4FGF=`~2W^g?~*$
zLlg1Z)Ha&&VQluhwt46C!(Ps{fc;1&my^xa?g&-zIreWrVb2DOi9G*X2JQM`B0f)(
zghu-futh<xyU4h>1^_N_LE!D)4$tTLp5@EHeeg_AZ7sXqDXdNn02+%fd=FQP+<N7l
zq!H0b`z`Hax>T9N>-O0H6M)e>H~T}^nm_oSCy#2i%_qZw!qtt%T}LOAkkh^cc;$hP
zOTMSOvxc-Z9Iv|-HwN_|I;roi)t=6~kx$k;gRmk9d0gjt&RV)}l3fJ+0HCMaeqz70
zHTU!N0M#El>HJWSk2|0BwU~hby`neLxmxSF(O{HUGA=IQcbPS>v(^stR>=f1Mxm&l
zNK8837?|Ym3b}!;-Vc+{eZ5iG<W`$i#{KjFj$bOJbZW<YVBY$HG`Rh|mI+`#V2s;g
z27p9k088UMaIVp7_1u++CE!YwLw~wCGVd%XC_rgogLe4dYz82qQUUJ*m3r1$LaUe;
zj7g_9JeW+gl~^e+@G=d6`&uPP%F5OOVsUJxdzz3S)&$U^S7;&Hh5Tm#AZa><ul`5Y
z07B<?pQl@_;h8dZ1`dwd7%4!63_y#sHRkd_7e@ggf||L)A;(Gb{0^Q9jrN95$2DV_
z5rh%%t!KX?COcJlKU`|QJl^<N8tDFX4B-m+8PL`w3gFf1VGaLEqD~jV5pkZPZ0HU}
zWCPyu{$@^}0l@I=$=nCMz;IAiLFUsm?EzOC^w65Dx7EHP2Oy&*;91@d=#V3(EH~SH
zp2`9J=sDdlW~**{d-XyG^b>sO4gfh0|1}1Q0l-wd!D=p4o31EdNFFcLgcSrG(Hsp|
z9L|(I&30HVH?l<F__#=!_s0@WeeWPE-I1DyCid=VXY4=&UJZZ|Zr;u_`IWdIAWdO4
zU4j}D&^xCm+4im<zB_|rv;hjs3Cs!HXC#R_?&fr5DRA8oHdHVC)9uO9Trf%-*cH)K
zWEwgjNjBM!$i9xvGUqh*<g41A2D)Vcu-kBFFr_;)ui`Y|ARLvP9;Z!d0FFV1PhLPG
zj>z_pk^SmO48W`d&{8?9XX!Hl%-NUct1%9TO;PQij)ky*75?fNobPA?z<#HOh<)!#
zzh)fGRRDT|K#!||i?30B|8`KEvuu4hUCLqD1<}B&0T}b|d#sgumVgESc|H@ca=_BT
z>71Za0n-MI`OU^4i_59c^>o=1fO^ekyc0ce`MSK(9ab7etuVdA(dm7$8DbjR{`R`$
z`}X3t)Z|iDw)gySMOs#d_ulGy7LlGKfQsw3FL=s=6`VS~sv><3TJ988_`bixXzX2W
z?ASd3i@jo5S<zi6{dwFEX-kl<Way+dQ8Sz0XYfG1Hq61{#*>){&_u5zs96AU_yFA2
zzz*k{d#ZT&71*c<y29&qTMkR=ZES!#<*5}WUU_-tV$5ztUmJ_<(yEpzmMNpj9_Fgs
z?8@MdOuu>9@X5e|SpI7Ky#4iY2;j)h2_?DsB|7G}jia@(RZ32B;x&qdAq8y52nJW%
z+zv_6QJ5#V-yY-k*VK?Q@9cxSR0)+x(@Uq&n#yKy)B!!Q^wVjN><d4e*)U0b-rID5
zkl0g+07@pi^=vfXk1jk72vI)I>&jFHZLPi0ES8q#Im1B1IIzWDU~TjwL^hqZ7o<A|
zag8g6-tYA}8urD0>tW=>8p^tu%SZVnDp}#j4ydooQE%o3<m0;|8PKO=Rnx-ZZ}kCU
zMxAp>3(Cl?l(5@uv7d}k5D7TP)6WvzpYN+Esi?H>PFKEvOrfpKX&Q$+bo89a6N6_D
z3#QF;=$(7zj7bq4n#u&6&7wajxO=64Ju71cdnIRSrE;;{Y>_N}u{0t+M=j9ZVQJDp
zZ`4(^Jr1_&H+<3s@Vc`bkP-Z@IJ%LerM_#`Evs7r0Q6`VxxD~lJ<eM^KXac2mo511
zwvkRF_KPV(2+Er+I2{AS2!MYlVMN3shCCtbY<a%kshBR$D;XUZw|6yG8nI91fTtC3
zTcb5-d3ArW^&2Z4RsG5jz`?u)#sMH$V4P9??5j{vI62o1cV0j*?e~iI*DoxB0$Gfd
z6coYNS?*1M_y4itayVTD7&*SpVr@iq&#&bi>^ouY3FqCs@V*(hHJ^T(_yB%pqS_R%
zN$A>k>$xAZO)f`*yqU?#Cchnp^z#uERuT^SUJU++JdeYeT=cqt-bgAcWsXdWfGfH4
zJl;;o9j<`Lh<KlZt^m?rlY0QkQyCfko%ol}-U`U*Y&VsilrP3zNZ2w4q7DQsJ2Vo^
z!Wku>z0TRt1(NIwWS42W&AvdWKWCg42nW`!-$}&a^$tQW4!5>k6eC7QG|=#Z;@BdZ
z!x`01K!aud?#t<+HI7fqlH+KOeqdCjJsG$f-oDne<+vm0HVB^V%vRu0#V=_i7UVf+
zo4rwC`&1_+RU#Rio11zr>^xEko*fg%7MP|j+d*pw$n7;;%;FeOiu0-!I2RU3rV|=~
zVN7J(EL5{#S3;BYjg=wL6Qzzb)h<p^B2*gWM^_=vG9)U!BHw2@2<<frFfl3aaHH`M
zxdu=95*4^F$`cFM=I|RJQBhMneKZ+(>5suT7Y_fxRyod3gdpAx_|%C)3q*S7)G?;T
zfjSHA@K1R@-nSD}!&UajtF0O6W)rxFq~hd^z=*sSk>e3}YZ#5H9`<BKvdg{L#R+jl
z#X`Tsk~c0poU4wf0Zb1pJPh;%KljBFS`#&VTFI**ZF=u^s<TvS7{o(QPDK^!3hkU!
zk22?|o5Sye&}AXuVAI5J&(xQAc@4T!4!|xCy!burU;`rp;MVj%RHkjGhij~eZYF>E
z@?|2*vAn=2FlMl$%h`z4c+w;V6`doAF@nHvOMmbRBeI@(0YKNK$)^UA#*r=L5+%|f
z<|3E#la+3ogTb$EWv_mtPn9m#_LwP@#y&Ix+toUAH(TtX7#mA2j)S0TAs+28>IHk*
z)6*MIVASk}$S-eLj44)zpk0o8a^EG|`slS!KF3N_zB?EWAS$2p+vdv*%wLjeQu>pm
zk)w7G=gFONnGNHh3%4W$gp`UViX`@`PjnqnQK8ZK!aV1*RE}%bf-ne=jn^BjY@fA^
zS<%X1*CL?Pbr+CxaHIx@c{VaN`JW~TCdQ9LFNTDkZ|=LI@wK6)eZs^>MroNr(UEQ*
zXIK==D8c6wY3E%*FgB<HBQt5oKE&m6G#RkcmSIj5m;a!7qR{MWdn%Cynw5`y9rvU}
z-Nfm%D>D=hq((?!_FR<LFD1|VWRzXS+9}=SfebDSb72OB^+oLYO5pZ%P4ydjB>26)
zi6ynh!hCpERb@DopFdtFEtya>Okmbx2??4QSzdV2xP_siCAk_$o&hOTxvkzk%v%4z
z=<<8V6wFa<MmrB40QsK&Da)zNX*3-e8Kn&IFN%^rE(A5&rTb%EL}u-LIBtk3ZtY9o
zkmU{hZ~@0yBek$nV9K;1{89;ifgW2``c5l(<s-sX+uN2#Jr-zbF97y$0*{h;uH096
zW-sSH<z*vvhYzQrbT>cv*kPDWgWvuOhPh#ZcYM|xH>h4y;(12G9UXad1eme7=6|Yj
zNHAv>*ciFq!#%G-M1L`DCH;yC7a|O+5%Lp~K1wMQ0vkNv%_FWR{x%5=3tIFsEF?p4
z$0-`w5?6@@$fa?Dfr&)2Vd-Nyx5_9N#b!RLp|dhq*t$<{l%ay|Qo)O!8*bdl&yn-6
z6(@kDbgBj2$EN9x4CFbG$;q4me04f;6q9imnLvhrN^g#ksb0Y^`}%^jM&$f=;vsVc
zLZik}z_c}k+IV`l<@?yl&C%Q(FoEknj{@yanEnA#E^NpTN*4%=MA{SWj()eHb@CZb
zgDg0lIx_}FW$`06Fu@RTzzFL-TX=H__uBd_Po@Rm?nIEb#=n}(FEagEJS>047?m{2
zT5Gk%enWT(lOGm(i@BvjAP>E*Gh^~D8XG$u+twVta`C3~+5Wgd9Y|%tnb5K!>(u#6
zrzGs%j5tKVlhu*e#O(4bFwx7&-fCF$MaMK8-grf;gbR6qC_gV+du3gX9;jC7P(qK-
z>R#>4@a=vy(_d+H0JmF2=)qj=&fpyL!Ls6vfapa(wa(-e#)auhMN~j-=wU^zMvWxP
zT!Q%Ius@z_&y3_Gf7j2(iN3dP$r~o$olyg;acW5fYr_%12fd0BLhL2b5)mYJBr^6Y
z=ZAVWeDYnpfq&#=B3~j#pmhF`4zx_+U9!LGeG!-%Ba}a+@8RH&M<vjs%bg)I@Y;)?
z^380Y8Fdda`=dJzN$c1OvsDOq<Rmj`dCXoN$#79uoW<ZB31p%;z{!}!bC;t_MT1$w
zxhLQ!EuwjlW_7^StOV`5I33{EqP$o+YlmJi?U8U4lnjQG%nj(7(YOs4Bc0KPh9h1-
zcF<z%qE@~#*_o;Pr2Fr<U&Dx<24P3gtxOBPICh*<8A`kq-Gaaw+j=B*Pk|SQgJXW$
zYx#{hZ5=RuSpbWtu2ctWC3FtpT3dgvGi3y&>q_QAC#*kjU2o(ZxM!oeuzkVGnUNqv
ziXP&IMC3H#<X&?Ew7JV0Oznqh=0PM5APTZ!(RY!E_dxoUPgVw#Z?%}Jq7caT@QRZ9
zt5@nOipU&j3tp&M^UY+oOW;xG4Hxcfd>3^OFklG=yYCV%f$C1nh%+!m+n|)Nv{(C=
z@&>96zZ^qPXwR0}x6ie{|JBFtJ8}o~Nv^^>(6Vz~2>K|aJV?*ack~9*<dvMJ!ryW6
z7Z!e}>9F9$QbJ0D<cbZ^dBeD(WTx@{vELL<i_}-yQQ6B07T>GeBlH!?AM!msPq7Kv
znf`=<j|I<Xf6PuA9v5AaVV$0iDJJOe?;|(Maj^}@e=LCPj<5kTemBfu;KOCNd&f;<
zK*QhWuq7TV<F2eSwGE1tSso3_6pj||AHoD6vmaH!&_2(d>;Yc}?gVS)@NZ-gV3w4k
zm7*P+DA1+|{`og7)(~nO_@aBaB$1INIX~?q#u3Y@8(EQ9kX-%yKn^jqh-(=D%}Nsh
zga06RVRoEZ2!@pqf)kQ)6D2*GBOpK!x8~rE{&ruk(k|-w3xPy*V+5UAj?>moqnH^?
z&0V=xY5gki1uz1WyivNUkHj_N2BtMa-^`E?A-_x&xHh@T8IQPOFX`YD&}kb618G?B
zmBkDI4+YrQnrz3VKy08`g`0<bMj?RFGsdWn#W$gzi3V@u<xoriBeS?*p$Fw&3FSv-
z?7Q#d?wm9Z+`(MXnT;?Sr~TuK+uk6XDwD*3c@O7%wR>C@dC9-;Gh$A&3)OdRCcAa$
zL8~7{xk@)s80)-K1BA&8Y`k2(&LFxlgM(p0ujKr=5OTM)>yB~+s}0{``B}%y+no2Y
zuV!+)4dd}f=04(TlG{jb7*6!vK2L&lU#uN<><@X29v!e$*U1qH>dy|`4%%?&QQj8F
z7nQJR{U7lOtUnb;a(c-T{MH=i9DmFu$T2{Qv5@qo?#Dk&VAkO#_VO69-KXA8f$7Hu
zh1fXG8@63FzSw)QcW`!_x&I$wZvhln&~A$|NO1QAch}(VmOyX_ZXrQ}OK=VD!QI^*
zg1fuByW7AZZ|6VfygK#Xt-4jz6vHsRcgrWcdwpv`9c<MHA7>1`+l7+6zkIWTPLNgM
z`XXb9{LP;;C;Q37x4rh)7R1m!MTbB#|7haj%l|CU&v0dF^4m>1v;~XW$9gJDc@e!!
zgh*P~PkadF)j1JgtQ2M4i?68C72g}_{GC=*geM~PiyWkgjQ2a`o9F4<*3$!>04!_O
zS^eZ374-hlIB5H_<1~iNl^>;lOT!;?v0)j9H@mohjm+IAv^zuOAgV8>%qL`PFZ|~u
ze}y$EG+#m}mjMrM9)f@ng#uRws4P*P@#A})UeSy@7R&h|cMDPQ2Ia&SDN&#(uC{x&
zrqB_k;e-vO3V}vgJS80_Y(7oj6hwv(@I7UG?i`+ia5K7XQsw`|)&JN*G}n2Pl*t>H
zVIm%&U?C9n-%%rsImZj9OFH|W+@@wsF;h6=Ljf!kx3aqmIZ02%X&K!5ZO3mOJuC4K
z1rj=s%k`E4MDPc^MqmFhu_#r8V|=KQyBvZ#h<GKRQ<mAdq*p&C`s}^NVLlzV^=Hf$
zPG}!MPY|Upd0sJ|XIwI4X>0z^P+J2-&F~$h2OWlAXnc$#PEX6{B$bL&Ir_u>%*=d4
z+<Iz0F^qjXuRRd^8-f^~bQrgc(rrw~F;0`93`%H*549OpST(U*|0oa^7YeEz4iqz!
zKX=+2L?%5Riz$EVS7tP1&w}nI_NNp`dU8ma=>1796D{%Y@@%<2K)H{E^IhT=uuTE}
zF5hXN<o~4lBToEGV!aopKN=Z6RNVRspog$+vCZ|ubDepywQ#MaHQX|W)*zyI4%DQ{
ziX<OT{m<1(-}?v^nVE%SR(Swx(cRj@8MZ8su3qZGT`D`hU=PCb&m|~#cK=Wm)AO_X
zy<I{NQZV&&tu0R+P}J>DEyivl!@=wTvfz}6sY{v_HFu(+*Y`+Tt`>k$*2!~Vsuk>~
zPX6s()qkD4E)#jVow>{iXw~Sv{%dt6dK7g@!)_qm4QPkStYH$D>pao_Pi$*|P6!Oy
zvPtwpJpGFO8JJOl7i(BN^52}DMzu{WZA=9@`OuNUuLKx)+KNhw3l7V(k;DQ7?BYXG
zjII^D#F=|10{IgM96ww2B2zMb5Ll6)%b*j|dFe%kfPFvJ6=2?R`yq1drk%2Z$)TMb
z4=ADkmM|e4QwRN&Y^6bm{=G6$zi$dwRoe3aX4vHg&v^Eu@p>=3BB%AQq@6$kJ{?|G
zE*;zGoQu$YMzT@%AC`v1B3>TMWIjOsr*25a6A+S?p?YZtDjdF=<5x*H0ir2+K2Cs$
z8n@?aQh|yQ5yG}R*?Igw7f)wMoua~ji4`oI*v(CCh-r&Qp=pN$I#O_*X}VsCjF8Hs
zaQ=mUP?%9##Gp%atk7$vLfn&Tf%cA<`?)U?d+g#%4run;xT6Ns9Jk7<8*Q_h7LMs*
zq9tBJ0*nq5oHo->pa2AGBx*xkFFKGywPBdI4p>>t@g1^Qz6+mv^bCbmZ#=Qrcy_hD
zqWzziz}aH=wD47)==(1EV??dUCp}q8Wp7I;6N+f|rgl|8bQ7cy;d_gl8{*32V{#qw
z*#Kx5iIK@rufr?7HenV|F*C&_?r#WfPpW>aC<AZBmgv@4Ubo#iup>Ap9dRVW_0<g;
zZ%gE_++^2h)#8QF?iHdc?ooO}xj@XNOLgc3>>8CnLKBC)kD#;yg6hhD$)OV*Q+LPM
znAPzX&K)S9!-X#nOtS9yD?&u<g*Hba=h2QJRV7`S7RTZPo%6Wx2SlxE$a1}SH5g=@
zbG38aOj*_bwNqtueRX?m@%nTM^oKx>x%=OQ|4WZa6*{qui6kg;LcYE;fcY(v#{W>a
zm?7X&v7q)*T}85mKH#Yas!=gKy$%x)VCy&9t11umk*d2{>kEnW<vO0A4+}?__~+@X
zx}g*PaCaQsUm_RV8GwqJz|5Fcz3JIIfT|I)CDiy)0fs#1RYyZZ*2gOlkwKKh<=rrX
z7LkZUhWTwfK%lY#qFrh_!RZz^>Vqo-wi7EKE*>V{IZRagsO|jem?VXa6l{GLx)dfk
zneViZwM5FY^v^`tfhjs07QR7Yq%<tP_)a|huIK<aklTlA%tg5n1MffKRV2+PzPkf6
zjMp=i7#$U_)j*QOXycz;67a+-5y_IUO;JuGHL|AU*fl6uN8q612Ax20%SSxYBpBo#
zF>U0LV3L3K??!olM1;`THXk%tuLv`uT-*U$!MC_Ox&J*s9oEGzn2Nzn6rw>n5l^0q
z-LVY01t?<g8vQqTWtfyzo3J&V$oLV1Hg7Y0@)zx0=bCuwR6fWYv8l9Brc{Re+yN4P
z^g{j9{F=uU4bPRlZQXs=x9a~AJ|tu<ioN{xEwv77ZfpT-Sj?hxAjt1O>m6JQx!+?1
zE{}B;$0_w3tsyWy_pBRx=d&cb`N6odKG$(TC(v<Q>Pi;d-T@kW!eQG^CHED2tysk;
z4FBV3wqTi@k^@LA&9`c!G4=6Ol!BFeSt#PARL(#qwHO1kvaYU?S7*$@Z?6y=XK!h#
z)h^@lYSr%?+fjZ!6scbiLX<c4F}*dUI^{#Z9WT2^;vkwe$tK^9>YoHDn+w<fOV+iF
zK#YBZc3Iq8g_+*3+E2scj&$oPYFY-uJs}F#LeOfkOuBx^wh9MzLV<@@(^bK(?8{nJ
z<e2NXOkmv>!_I8XuFbYG^im2#sUlTInN&$Bf)6p5li3n!91e%xX~3bxuYdNfq18FO
z#m&n`fy~lL3wwm8lqpONuI1@T4ajw3_X0!$PoVK2@~QCXB)3+FL_Qw{1HZIne}*&Z
zr`+PBUpk%Bpjz(m_SSJW0cwdCH_uXfS?&m9v=pH=57+p=|Gh$Gfd2324t6-E$lq&c
z1h{y%VHqvZuWtY~ro7FF_?ahi(Y@j}<P?W_-2du$Ac?sFPd|GHPv@@ww8GNdZcbCh
z_Ou92ZpKbzCz7*&5tCdR%xAwFT=ecYa_-1W_^)`_ve_FBO+K;FS^^mVeuvhmM>bX>
zK(gas?{qsUR&9%(8+2myKGXm8<4OM*jD8iceZpsif!`q5ogK;<gPkXd;EI;0W`%~=
zF54Q+1*Vo|K$O8E{cUi?*A;~A&m-l##W?XT@^TspQOl5MpL@F_Ou`y1oSaC$swX|8
z@!v}B13Zn;)^D~z7hB|Y$LTs$sK4|avlmNRk{X2Y?QXBnzb?p7@gvPY@RQ?p45NJU
zo;$b-gw*X3szlWZ$>#2*2JiQWa_UiZ+VYJ9Dz#Wuw$<2#LNbz`6X6F}G%=xVKZMKl
zV8tht|0j{?LDcFL#iTaes%85MUY*II;qUY_&kp0w(+h=%ClW-{p{V6GdJ3-X0&O=1
zOJ1fJWp@<!rPk(pcIT+>CV{qV*glZ<h+AYlXef5dx4nA@>#rd2F1kAP!_D68hd}8-
zXLk|lgt%d(!0us0EqXsif>6;2o|n5{e*;A9jM6^p_IG`i9iagq!bELK3GUbOt}M3U
z#pKysGzR?)mPGJ-TWobtXlkGf->E0<U+!ih6_t$x%;S$?X16rfM^dt2L!+2!ihyYO
zXrDYxE5H1}K*JcHeCO`w2cASO7j#bZ{=YcCf4$mX#_}DE3LkJx=)0fYUEiPSJk(y6
zenxztU&|9o`{um=BkIE45sm3WDi1g4Phd49;pbNrH(@t=j<JWi2Z0T7_JB(;kru|9
zQsVRPA0It)SZ~9Bwj|(9BXl^$yyS39NlVyus^!t><=Iu-Eo^xSn+Mg%SX!MA(MZ4?
zXj{Sve6M1!Zy9=2O^t{e_Eldib1J`k>u%CnyG6-Rx)pJE`1R}8cl1;fUN{K^a<sC`
z6<hISTOyk6Cz~lb&MFu#=W@B>UJ;PdED;SJ=UmF-uK9NDCYzl=UiIzSY*VAgIT07l
z7c`Owwk}Acd?qlRvDO3MV$&BNr7(^A!yTA1EI#!gZ1Cpi;Z{^uMy*an>W9seOl)MB
zfELJxvtQC?DlR<Lk(Av(aX|(2cDUVzZuQt239@P7l##OBd+aX};Dn>sSBoQv1kSFp
zpP4)x=<7RkR$&_~@D20z`OdAVq+^Hlr22>U|B-$i|0-J~<>czR_<0+MB6Y#i(^`tB
z(_`<0=qO{#oEK#>!noxTB}ag#*6`MTQ^E2Z8U746I-(a<uB+$gRiR}E$^C{%ny{&R
z2j%acXiS0o1CBESncPv@TA_70sd(k>9TitXjw=w>fsT*)7~M+Qt;b0}YkX%jQhn*B
z*w=6{=loHnI!w4JJhPq3f7*Y2WL^<GWFA+Xm@~;w9cNx+5{SBAUKHfxJ4#4MSU#x9
zX0PVn1dfQ7a=2)Aex!?}*-sNM*-$>X1ID&+4Qv&;CFW;RDpp)<bU2VitoGF2lTSCa
zCHfPu4NOhNy!XBJC`#p~74~}8y3vrTK;@xXtOJgL;Wfb4Ojf*Mb!v?cV`3Dj6X#=0
zlJIN{X&1|FZEfek(WO7}%@4XP7J1Rvj&zzM8u6C=%<pZM)gO`L^1g!bWGZ-$6d*g{
zCBX%?wVYvuCO6^zJg)0<!D*9$(KBIj19?o#BM`csVN({<)fcAq@a(P!H?NCczH^>$
z1fEZ~L-oQg8B!`25Uk`)U6Y5%Hcq{666l_z*H^F6$AQ5T;^xqK1oCI1+wKb&Z|{z|
zc6ceQ#pL<eRj0_cH9h23`@v6V0rK8VScfzbHAOLQIhMHaiztVvGJmD;*KQZ?hzvgF
z=8Vkpvvc1-zZ^N$80hLwYCVmCOh5Tw5fc&7CFpZu{4lDdDFI1rd@pzS`ysN<FY=f0
z#n8dW6X29q51q)^aYiU&&1wCS^`royOuj8I6|X%<OdJ8dpl;$~;i6{X-Eq*FYKz*}
zoZen0tJ5Qou?AHvKSevMkZaSZF+Y;Y`}%q==Y3HgV4K^b);7yJu)^=Qc^_u{eQHA-
z7%=h1+S(Z)LXWx<O@EMa>`U9!o2#Af#ZzQ?vO>#oYKPq3I_6~wxi4!SlVpl`XEY?A
z5k1%|EiCzf&DQ>`ksp_z<tae^V~;)^#K@H!?XOD4<VP7%#P9qAQ@%Le;Yl{K3qE1k
zvzT^>A4pkiHT}kT<v*Owo%uXqG9c~mNLYS$R4@qhfz(qgNyA)vnLf7jn=}G>3m<I@
zy}Q_LQUQshYTbewJjFqB5eI$9uwgL2iT`g5aUw19(MIwD?!+%P<8<D{*e*+_{lz;J
zY3-qZk=Huf+t0-jjPx-G3+9bVQ&j@;K-qiy`_dNSbwJBZPfS9<+4er1a#PxuTb1`M
z9Yhcc|0xQ41-C*})s`c{qp;IS4DnzX#sEGUJ7aq0Io~gBpkfy1;n^ch=byBnhLxRM
zapXF|t~dLi@x>8te*ej`cqh&?*Lc055>Yq&cD)z2?2D)8IK$V&AEJUKfnc=$1rqhH
zh8(y2VA5Ds-e8vc84T9K^Wm>MUY`E^A-_Vd&ikKB!|291yOhG9gB>>f;vjm+4ddsV
zJz2D!+oLELj@Y-BPxc$5Td=0NSq_=6Qo3bgTK=m%&r#t-2|-Ou7<m9&rSjX{=-{^>
z)+y7Ur;5>9v{U3oaHAKL1p_d)JCVr4otV_VYh{nx>$B55&)E%hoS+p5UEkk3|La4f
z-&GFc;ZApVH`SUWop{=BeDZ)xRvjH3ic)!=_<~JvVJd}2P)l=D6K}97DtQ2Jl{i9@
zR;APf>zb9L`JY$dsVPpZuo}?yMd6><)zfnV%=`6XKOZKiqKT1_(L(>|BlqMa0BQK@
zgE|gCKrTtG<UT-^mX@|~PJh<>4&TxY01zGfvU;o#$a{Tp#a-EuP*0k0#SylQv>eyg
z*PVg(NGehR!EL?&`iK8Pm;7fb{1?#VAHD<_MBw$m-~a3NbI<<={qx^wwf_xt`rp6*
z|ABY^8*B5w@ih#mYjDv{eN*oYb9zHs<1k!Yl*q(aVeBZ+Spu3qTm|s<>cup*Vgk3E
z{N}AVr^7YpWPWk()pB}NQjT6R%Evi#eZL}fFb+G<B=NY<)3HQyS0qypSv?T8?s&Pk
zd}!TxS)R#!y}fUq@T{<g{j~vEU&sLW(l*3AKXklVPq@w3E)R&jUNw+BZo-Q!W&q#h
zzTRW?ZWel)iu&mdS=o61xX|%B_xf_--59~t@p@Oe(nI=sdB1ky)o88sIN|-uS-v41
z>;1e#dd430>l5VETx3OBd?MrJ)LhA}k-4|&?fF1t<?Xf6WUaidHYioS{WhPqK1k@)
z=uH2iMYDBf?R=i((g(ioK=6R??8M;BZ3W@FfTyikXoqm(JLT3+#(iC3J*(GMn6=RL
zxl2cD8@P}4=Po7bqpbVt4#@(=txN97IJ(!R|9!BGV9pD0HJcUX-c-~Bp0~>&kvbXS
z>zK0-8(`@VL)k$j%lhDMeC`_Nm;K0u!`E-|N}k86XXNO=WLpn}F8ChD;Drvw&VXKd
zLAKDn7r9F><5@kA6jtW{Ed1T)ii@JXJUIdGx?K1bXtBTH{bMJ*aOYbkVeQ{DYa7dj
z=5eQGY8JZ?=ebgS^}ox?kA1)I#WvnvA6DWrZmGa?-b(G@DDP*J6^-iyk+)`{J$j`d
z29V{2<@xACrEB%3-AeBl%T%+3<j&>Y>*a;^hO?Rxma}2acKg=HF`M-Y_qCITF#X${
zGgw+)u~x|1#k#YzSbO@JmAMY)W#(l7trZ~O=&cha`$@^UCXS23F!TCPp_TXJh{5~j
zs|XuGzT*g{ji>p><q##0?fYzW&mwCjkn~UcxYW7`D(|P6%;g`74k`D*1#2Q;yP8*i
zwpw!<-*9F=erjFaV_ERJD>bMmrho4Bg(m^VhOF;#Oz2^?cI~!+#~Q#CxwLM=u`Vh)
z=3svgxEyD3X*<zd31s!y;*Q;T-sd?Z7~t*yqgx?!zhs`-06A}MESpOncPzkb-sh@Z
zLgPQoYKYmx&II@F@^n1SRW_W_%g(H9yxv<=4go{9<2((p)3gDTq^(Rk;o8snb4C)U
z{}HnBw(gv#`*N&l6GUV$yHZB+Yo7-bd%MGX!hQXwCLaSQRS`TabibHu{keIUnw9TS
z+kR<8zhUj%xpC!qC(N@nhF0Wp==m)LfhjOMm-OWjd))QZgmmTHeFLJ%`#PQ2{*kBw
z<|gcJBuM0W%Q=uy*NEb_vGB6hO7YX%;(##s9;e95ky2xEhfAAg+p)T}rR;6cU%*Oi
z2KeWzmsx?a=N@6=^sOI~ikI%zOFwR1zhhDS4o&nyk1C<Xc%G60AHQ|6Z<!(nO8C+j
z-Rgs!PjI>zl`($vpw#a*?G@2*owp8+!3Nhes(oO|JUYo)U8UK#EpItp$7OmzQwpez
zJ7nC{!JzSGS!?|2Le`&DbShC*e*rCn$BI8N)+oRD=gH@L3faFwHoPfN@P?Kqyqxvg
zYd3U*WF;%@<4eOCo&|C@ZeL5bPt8~ylCANO*MSAnFaua!b0RSf7JGU~s(NpDZN^<$
zeJcJhE&wX>cMH|JHbhae-QIGT`KMi&bLz@!fi)xhYq^c*Ndxn)6ssGio+v*nm2`#Y
znPrs6?cjx#Od21FPT~)w%@r{YZz;S!(Aw4twKPD`Hm9?GozPG(h26zBZWsBVvEov2
zze(K)@BF&hU4EU7ed5vq(F;3lX_}6&_^6I`ZlBm%XYjm@&wL#~D+s#E*IR;MUpZWM
z!8f|4ZIV1R4a`c}M_B6Sw%w#(SgF?u8eD~Hs_i91K_<NJYq?_qw#c@#t0-@eFy3jq
z0fF^uy<?R`i-nf?`U39V5rfz3bN4>HpYh6>4mKTcFBkY&T9FvScg0G$vh^LMqhyR~
zQR>c?2Z_fKp+TmfaYxe%ofq|iCNJv$b!6VsBJR8t&){)bv#i)eurqj^H&gFwF%%*p
zU!q1Z!*9{*G|^s4tW&tA<aHe<?RYJCn~hFPLO$D~AOrR3;i9sk_3cnb#NNAt2UMN-
zcbED_nK5h5sUWgmVC_h8Mhm~G6E2#}k*vHw)@!G*<)CPNn$k0p3>;~ZyOXj123T8m
z%;*VFvanwlRJ{E6d5`shnBRD8#<QT!eR;&??+$S}{*4hbbe*@8n3SVQbx;^Ek}X$t
zsS3T&B!`(oU-%ry%%IZCr<gNcyl+M3I3A?n5B01p9iJ8YV#lXW0!78mBiihhZu^K{
z?ppp?_ypvZX283E>+f9oPuw+g*0>5AZo5@Pg1w27LtP=@re#DR3={yhs?8I_wIkCV
z0AOr<^}u+k^ol{xL%#PnNOf#OS{r##uUcD?Jv36HsK$nTI{4|@^I=+tUuc$nTgVjY
zMSAzfH@<TiQ(Snhx>etWNV9VLyMNA5p~%aRw;Gs*q}L97VSf>JgZ7+8ZQ%uWe;_K|
zoPFbIU6TB>v4!RmY(V<NX9oqcj#xr%h1@rGSPRj#wgSr|oOiq$<<%^k_1)&9m-}~{
z2=k4;J~xkzmt_BwyY?->AJBPsua8c|F!FzV90k7MaX$1yeco@QnC>G(@@p3u{QjGC
zAZ9&1XA&^rUHR@)3-ccLHD1v&KAE4CFpdf@u&fXjHYCbracDTITWL&Iy~FG+emD~m
zasv!<qeKnT1OyHR@7y<!A1$M})fhFZ&+b6b6&6&qi5j!3Y`g#J`q@3U3F$=e;@8B9
zK*=FJ<l}EhvN7f3xJ$c<&Ecyf>%Y*q@(st?d7m@$myw^h|A$p5mMm7eV5ji`n`0{}
z=W;{?Z5QI2_139~pK9!ZmV^TkNB{9!-}vp?B$<grnzp@%`2ZWEKbz>Ls0PK@<%1=c
z>dz7Ni2Yd?fSbMum_Yn+>WGt3H{bOcX637}a2ghL1qto0#3qt`FQ&{VFI!w==A$5)
z6qG33P_8bvDpXxBz$wLfqwWXjt=iaXD}DPVh=hfrn7V&+tl8oA!z<=jXDT6M-k+Bd
z%gpCp+D9~#8_cUCk4V49?Fe`AqNvNa5(HtlO#wEL6{*}`C-jOQ^c2#}9+_!s_hc=C
z)bNO8Qtu8tU(`NhFHON(TH^|D3BhBIa2w|msk93RCU<zsMf8R;Q3BtHT?}oRixY;K
zt{>?!#Z^+5{(KJv#Pe7eINmpePq-fnlp=-3Ik2^Atv*3plKXZcrtMPECPykn1KxlA
zENMWHCJ6pe3GI=|oKHdY1qUSxu%KTFc(h@%D(uN$%@Jw4eC<x57^-Z6kkN`>5&OQf
z`5i4cs9iN}8>jQBD((QqoL7Qq?)DK`?@;{AjMaVVV?U6H{X9GBAq(`m6wcc1@Jv+Q
z>1Fio8{!wILEyzRv4SEc1C=oVpr0>~Y_tzBlf1^J<#C-_1||r)K0bH$8@(;WfRBUQ
zUCZ<-hxGII9Aia0*X0tUHi>?eb5zUlJw9?>Vbs4uN(Y1j6t>;cc8F*@D?_vPGkipM
z<RtB*K$`v7vf*dKdK>M#&n++P@F9u4q>Gq7aOzzKvF|PkG_#;R4rA+K2!iIQO`rsB
zdtVj>tPhgIauK167h;fnlBhPEVC`C1!9R-8d=+@$8uV91q7^(6&V&B2C3teWbV0xa
zBEq(Rs74`v`IgnBEn^wKH^+opGx(+uZ)T)3dsl@g?R@U5deC%u-+6Mt^8-oDn$yD3
zE5+%!r4QjGlwhmUgACQ{AmI?v3aqmdke29B&h>=!3IOR<{DF$r!e<4;z6bS51tlsa
zSl3+qXV{MKZ--_GEDbw1qIe%_2bOoK-^-1cH+qV{e<bSI<j0(|?R#gqmQf=YKkWNL
z<_HF8-aEt}ju7?W>(;Q1zq`UNLaaK4AcCp+$nl-xG|8MbLFw|`;Hu?(Jn{63M--tw
zo<0;W&1x#UkXH)WMFL1p$2_-Q-?|HG%Q3$P(Y6<rEQjUryT!(f;{+r3Q_1P?o=bZC
z<Pr407$};*4cvdp31WkfU8C%#gsr~P4N9l@_?NYUYW~vunN{QmO2c49ALXlpAg+nt
zfUs=BVXP-H_15<LwVklBkd6YKd1U%Q@1hKa{h083GMOX%Cv(JBA)a>}Wl`SS7O~b(
ztVgopL6oPcYcW<|-P@Dsc$*Tqws^{$o9LC_W7<1P3l^}x9@f^AV>v<wN&fyOD!T@<
zs(Jnubnb8M^Hd=;${u#%A;L4>{5!&9lpzVOKfU@lNn^fw1Q3`Dziupt?4_o3=8#H(
zNwlbkm`A$@$PA;?JW{xno(*u@u@sJQSF&a9;fFA`BsLYC&6Tz^!BNCaH7BKdXBLB2
z_w>>|A7URC=Q%u(Ke(f!ZB-sZi*Ot##3rF%sf)nNIF`qWWSZGjz29QRLECOzBuNVn
z_QO89OzI_!B2@{sIk>PaB>zD1T*y~e5T<?=v*F{E5Zq+(R?ed*rb~V?HXyV@xm$2o
zqe<@pyFw;WmOF8y+VkAag+Q#FbbJ|^r06Zat3`XIy;?`pzb_H}t*VJPWU;{CK85_1
z6fvEH)KZD`uw+qI$xkR8ggz+-v21@9N{v%pY~93j>-=^ooM~EdulcM+qph@I?w;(A
zrtpfN%*tx-NwE5IEF5nWT8r5n?C#9EUbxdWH`H~gbi3f4ivEIE+SjX^`7|rb=in&P
zHg?svpSG|`R~-@6aPcfC@a+APMjxKsnX*SGVOWf2I|xOJm%gLsbQ;*BP%lXaZ+dbi
zL<}F$vo$E+7!Q?XLCBU-qTWfbp+C@dc<3uHu{^_9!<(Z<$t!`_NioSVId8%t%hy!`
zs2-9)y|0n?D|iy}&|;(=qJN-R4E%&K$-Aw{Yl}A5rj0(4J#-Lq*J#jF@o|o5NEMa<
zHp%B4q0lB$5(C#3_BTUvZpru0>!4pI$ddDU*uK!Ru~kTA^9GX@@uxmhf-w0TCQo!-
z*x;aElQXnGoy{8i#@0tBgM(D_#VEgTaW1DT&JFlkizg(^eGT1YeZG;2W!1f#ibL>G
zIG8c}BJc*~$loDKb?75gkM53}KGWB!|GP_rLdQD#{D2ULpOGqzA=&f5m&;H@ZvRY%
zR<@ZciCoVO+L)$_UwO|w_Y}WNjJ8c$eAhh_6$45`y&7ANWFxLOnRwoWHaPf@P6Whu
ze{T|{>+RaB<o8+aSV2d4@~qvmQNAV0XYgrNu<|NDzOzQ-%0aH^_e5t+#vnp~LqLQM
zYXe~{Vf75+<j7CzWCY`Cc^UPKo708MtxEpT=+hS>OXHxTU{*<%>(tZgP}l*F8Rc1*
z<!bMt>f`DrbvZHNz>e()U6E?e?KenL4m4{>aFT$I^Bc^YA#s`NM#PUcLG-B;telc4
ztcz^#$f&C}upE2Z#<s(uK&IIk6}GX*nPmRRE&B;o^LYr2ob|IauAV(t`yth45T#@M
z1xbigc_1>CL^~y)^M=qPxi+4TL>j{(xwn8AY-o%SiG1VmCqrB@+hue90F>Ps!!KB6
z#^}?y{N0*eZV2j0byyF^j+bdy_7UKpE$A0`Mva378G<Ua?1kVU@^;iN-%CHzV>=Jn
zQD`wA^efz&OyL?m6Pdq}qLU%9-S#aBhrHcc{eFu-F(pU8d-NJrL7jfNTX%znpMvDW
ziaoz09qeF=iGFp=@7Orzd~`C^yiC8~)mS(Xz1*#NhF%(1x&ssk!%6N<9@-Nto)iu=
z?>UHrB%UYmHI;7-u@yCEDIbkpJ-*Z<x=(1<@@aJ)AbS6_sl^NFkkxH+=Aww4dxm<4
zu+N@BfQvXERf(Fd=A^q?k7jJd|6R40i~B>-ukWGENQAfmQ$G^jwuy(mEze7RW$h@i
z6C#5N9o7Tq?5n7Vcu59FSHhof{Cl({#3l`n%~v-j4Jxf9yQET-tQ%fb3a=~#5#JDY
z1lGa?50eUydd08fksQ?{Dpy^onuN%q1>Ox>!5peErL)N4yX)Tw6HUVKq{Ic-ZmMFg
zFNe0EZpQ^OZ?ztWRaP`z<1a9}q$qV&4~8(=*)Mz)WK@R~-O{icogqkHSz|>vK)o@<
z@x9mxP!uO{jwLzrP{%#G)H(HQ23WM(D%!DwNXucp8FR48IaHYNR9K7ZH(^>zl{&O?
z4R_Lx`|F+)?X=ZHPKR_=Kgy|0u=bY;5hlUmZD_s-z3+pVq0IemEWDfog_pfyS)duS
zV94I3$($IYE+$>ToH`P2!hNB>i~a6U?1l~1DebG96`T%Dq<<2^&V4~*4qb|&#i!vj
zx&;%h1}e^X`$Q_uy<cC(O1$T<rg{c19;OIwEQfJAmXfKQZy_H(M#2bEdVp@XRH2;8
z(|J8iHVq*yWDG$T^2G)Gk6*fGNC)&cRk{$=sUIz=RQ1qW0k!Vp`<ExrAH7AlTbClP
zWYP;{s}SCfh54bsaFJf>1KOPGUL-#>UeGp}<!aw;i&9^JaU@M!$i_<Xxr<w~@E-;Z
zeoZv(AGu3mQO-nQ%3=Bgp0ov}roHrT;(qXLCJ~(N_?O<aiB=M{Q8uV1pi9--g;|_(
za*q*(iDn#p!Q!sPemzn@MxI_OSr)s95;fP&;`k>5F4grj$3UV2Q(qv32Pb3()6|AK
z|1|D1fx;Hq#68lH-(?D78HN`1k9>*w50L@rp_kf^nEv@-`9hr5{kT(lh+)UJ0RqNb
z$GfTOY^YuLOPKIgY%IntonDE3&5$JUFvIgYf&uwYN5}p~4P#%l{(Yy78RcG8W_hy0
z-dMxV_q5VGGdGyNeF+N^hF!wvf!@T<#X)4#QgHs7i2YI@8Cu9~{H#x5-VV4323p8?
z2l)}0s+kA$A3gaZs~^!?)*&CR6h0|`)cgI0PeNU{;MiD^>m=R6aC=#Pw^-sTegQtr
z=!|V0OfQ)<X|EmpB2uo*TG4|)eBd@p)=pt+L|KUYbZ!n&by|IzwBxgIWV8I9ZUGw6
zE#txBgVoqBx!Cn8E01J?49oN&*GB&fSVa<scH@3>401+8jF??^D2Plx68SW^)kNNt
z`lnHGnlGDGx=PbH^m1K*F108$NhlNt*O%R35_2Rfhpcm%?Y&xr%sPb1#LjI;n5ygd
zKDoIJpwTo&K3EThO$;r+&q^9itX*Op>`zWjP+=Hq_vMvO&94@SOukd^XPdR*5mPoP
zt4jwUP%b`WZHWOT7+P?P7Ws`de&M~|v%YWvix=;CB@FYiRIzQ{%D(2Res=lO+y51;
z7|?z^C`+w;9s9E!LrWC2rrZ_+yNi%j&3poNsx8r#$buFb)#N?Lc_aNKPvNvIiwCNl
z!_b2IAiC#X%?>4_zDyAO-LRiTBZsfWDl)Pf<U=UocbfbT*wjhugx-&%(w1;<KSapv
zHI_A;5@=`M4P_}`w~@CvHLDm{2!GkPhYpLJy{IN#pzHpIfpji$9q)~a*5agkr^gCN
ze8RX|!f{Pl7`a%L#!C2f^um+vnfora3(OEKRWi);JY}B0ua?Daj^eVi<ATK_{Sso4
z7w&GjFuw|^r(9euBY!h~c?`hx&F35vZc!Sl(K0E2<h=5j{Xr8_v}=IC<mKxv_l(S5
zH7YVd>n=jo<eJ>ZUeG(!&Y;qlIcMIRuM-(1?K4Hc=5tHyu1`IIIO7?Owt`_$N?qlV
zNqo=UPct_2+{asOhUrUPu!w9&Xg3A<>^6Qu%L42;Cv}Q{%-=zkizm>Hs?AsUMc<x-
zzWud>^p<HtUR<;q!cfi3aR|mXcvRA(u$ov8Z3AorGCq!H^qtp25+nQ)w>#mSnTmYT
zRmo89at($Q5qbXc@}LDLtn()K3RCvzxP<EWLT^47w$^2lha|bJuPgC=IBS6Fv5Atd
zg0Bn@mAA>OV`=Q#ATlJsG*U@N+Hgt4QW^0x|H299b#L30h$$XvtY!B$5~ISE2$6Om
z>s2~KsHrW#2*OH8Ts@}mI-fB<G$Vn}TZx~p%A{_@V%S%z-*Ih`9^xOnK=WUI_63b7
zEt)AAl4DVZ@XZgucBOZrUsKq@$7nBzjt1gxB3lw~-C(;=8pl`;lVeO@gG~PGS+diB
z9QIEsw!Ltw5w@aos}r@NkFY4GuL^ZLme!A>y(XVnH)63QTURL1!L%=yn6$bPz3(1B
zl<~_RmQ|~$1d?rHfX2IwTvfzjaC~QIu7lnHiUvhhG%2njqN26{Zp#yt^htQu7eeGq
z17u&gFY3@?5(fCbfqA7}pYW49Pe~4ggd(Y$XRdO?x`<%W<vtbjLlYiBP2v$5&WR+#
zH@zngyn5|6QQF6XW;Emqslq#L=j_&pc4|XA^umCpPI{RjfgyovIOjF=(FZZcCtd16
zEw(^Uq~FSDl<p?Khq8D}@mX_um_$U}yrlaCM=i{VIm$_M8Uf2^%;F)6K;L5INy(Qo
z8{^wa*qZJg7>(m?;wiB^Lk>0cKC#zy2@{1%-Kr%P&5CAop}lGVe7VRaDpMH*tAXVq
z=ObC+e0N9$MG{8FznIZHpIdUvuoDIFLyo?a0TzGjC4#6il%E3A5v+EFj<nzw<x+d-
z?N<aQsc?Bix#0OvhSi>4IqQ^{EXupczRvBnH0s-#j}#>l%A_n|WO6QS_7NQ>GgOsR
z3O7WL@DF-%RYc?{zI#uYm6iP>lon-C;2d6ZqsWT)Gs?J9gbsPMTtDf3nuQJ2Jj3{|
zT4TfsX5OAoQ@~w|vV$??SCuzpSZy<R(K}+NEm3{@ERUZB@e@y!sW!q;lRvEGho!2Y
z;<lE==FVeHISSO^R#zSSJ`6Hk;)<wcF7-SFU}W{&dG1U<O0^f`Ss$84MjXBBU~Y6%
zdz4r@ZXa5C*x?fV2(HwfxjSk<nKdz!P2Ic(b31E=jn0n{7)xV53BEU|=B;Mf^?uHD
zs!z0}sj^q0oJe61cL9eGWmZgZjl#^Hn6P0i(?e-MFY!w){04k_>fH&P+)>8p*dn<a
zrH7zOF>Tc#$204>8hg8^IitGFc566kdS%qJkCTKU^~6xjof{FlutCJ64n$e0A<3Tt
z>FtNLdo_NWVr_D$h@ou*g+}PvE$wG`eV!=&-VZH?=qIdXZg?aj>A3~<S_3RgY*s=e
zpA5%p>;fDHC)#1MPz>s&!#LP{=9Io{n^J8u^!ioh!Xkj6_<cWpDGo`>6P6Pru|I^w
z8qY1l5{ZfKNndyQLIe#*j3W3I)wH35iIhbdWbb{<BI(h;!cEKgkofv8C5Fqs_tdXZ
z8-N$|<d%c8m!L&5|LUJ<NRAP}J7_tt&Z8jPC0I78d-F_<Xg0_|WvrwjM*&N$_{$N8
zW<%*t2TD#n$>$x}uBV=JaXTt0Qsq~p2@kYj99QhJQL)L}c6aUpH7yQ!!%_|7HkR)Q
zgRyv)sJw2dhinyjmC%`Wa5GYwaVW+1OUMu3Hej4#G-kFo`59~~C<&%n7eL#GuCQd6
zZa&(bMR?W=^2h?VL5q1dKJ^zxzd;84+2I#ou|}SYd_yfoB|u^8@QxVX6)?}>5wBY0
zfZ#|Lx!uc0$qF+O50XQ1Ua8Y`p`4rfly=$IGrPBN)FDvn<=gql>#Z~DM}m!4D~^~y
zTG&r!#JJFhp(a)yNy8>qBw+F7NsybLkD){CBStwc8+5WhvXRxq8M;VUfo{;xJK~tz
zjTjb4q^#)pL$CJPu9)qeWN>f43rGlZ!j;b0gC>h80MN;+X?p5g744KxUI${Hfa;)&
z)g3=xS8uCGqHN>G_<D{S!^~5nTjOimdjz0XJp^C8H*pM@6gnC_#I~>`GKkgk@fl26
zk~q-|JgY^u3sbU<dTv<EtEDnkB3V4~jQ{2(bj9gVL@a?M>4DKP;+@<`&@&LM9m_lf
zL##~}i*(g_gFhywyIZ(za){Nj8mE3ctDEp-e)AjiFU!@5+#2{PT76%1qAas_!(}z@
zoGYo5pDegc#2rz(xYu(Ktyg3%H*DY3218@8mMSWipw|KGE`{w8O{jqsOYVLK8ySJ!
z`G@scV((``x$uc7xJ7{n@?@utisW%ZXNCqcU!LsF1U5?XnD%b9V2_i6)=;$kqMVi9
zlo?F#dkXYlg$@c=xF1ZApQB!Eh1|lm&`8)w40>51wIWulT2i`+B$O!O@QG7;mDQ>;
zW<g-??bh?uvlLaYzuzXWwjC%v=Hm83zXdb9^*MXc_L){gT@i~A=;Rz23#^FQMj%!9
zT<x%Kxwn5#n?A!%!-fuH4Ss7>97J~Kz<QNNvDJGGH1NB+miQ2odYg~+yDGfN^rr`}
zAnAtjo8fsc+H0VQ1le>gMZJ&p=q8VQP?1ZfvHKee)1uE$f|d1Dn?ZUvMe`%1w??ej
zO7Vk7BL31&MbbsZHwkSI1CPiDT!lw=FL@Vy(xdlPOa=-YV-xGs-j>Vwg=x}TmA!jg
zF%z4n3)nopo|Q{H1l$v7A7viQ(2rF6|5V<YOj2G2m+z9~h*ZP7&ew+*?@U=%h>gme
zTQFVqr2VzI2w61g@LUj{Qf=QjFb6nvwYj77zK)TD<C<&_V+-H+!g(0R&Wy1Bee`<M
zO<YDg<`NU`<^wJHVH*zubn<=G$orxJ5G*LzFkjxty_*;C`N+c<yrFn^cncuzxY=1h
zssJbP#ei2B3M~sc;D<TfcWOpIi8D7$T~Pfi7g<^5w0wJ+Sq3{5*qmux6JE_vPQRAM
z&o$l$k?gP1>uRPbcFZ57l3%1-9Q-Blbj`Go@7B@eC3BuqXl#FA&CrA`BWg(Z$zqBm
z6*`H&z*;@om_RY`7hd0Vi>k##X*|dz>h^dNaE8R%Sp@yD1DQb11fZEH5-M)>kR3&{
zV8kh95gUA~hP^0y4t*luKa^fyY>cKWHsiHo{au3JwpOl^v}nfP&AI!iIQ|A74ozHv
z_!0RuCMBGlvn=dITx%{8MFyw5zS{RIRHM?S`uJ(Si1Sy0fK~h~*{IbS8tgT%dt$9z
z0a?Zt%~JQPAGfn#zdB^r%Lr*B&CW;SKy<7}Gmf)jBzu*5GY$px9Ecw{t}%<n`57jo
zF4l8O*Im$a4agm>+xri4cdT5uz#gmy2tGk+MkhXIxNgG(@2qIfFJaEv{dgVqPK??a
zwqiHHW|o-Ow3URpC&MKnN=hxVKYeuDi=*HoyJ(ZQcr0nHtY(Q8<9g}6;z&_JaZXh~
zll><SJRP`#mVK%5rb#!%q~&s`hGOZ`@wO55N-cE+!ochhW|Av&<ACbNuU^&8yA-vF
zPX`#S&xx=dwA2xV_NrEwdMC!{M>Q|GN=uCVKO^V04*bPc5sDf5<6!%2DCl~5cV>FP
z=g&y#S0#BcY0Lxt(RJIpXFfOWCS4w6&(J2bq*H9HUbVvR*u{IoPRUl{m^L>GQ;&V-
z?0HWeI8;Z)ci(6oap<e?Jo+BM6(SJwtqWxJ+dq+gQCGhxV+DE}7LRZE<BdMITg-tI
z-a?eJXhRJhKWrJ8s)HF|tDXGBRulP-8RWZ$Vn&`_kdm&_U!}58%mmvnsN456<(AN)
zryxgyCN|_LWy~J}L=yC{&kGpmLxrx%g?@6pV^VYaeSw==PWZQPKbm)*ol0r_fG0-0
zM=NC2@C4IAf=nB^9SYN21j}78p}XDOs#-6G7aVEB;SD!q1{P8AB<?WX2*2QeHe)>>
z5(0-uew4{J5^euf3(6d$EsUFAUt9p|R5SY#0ZJo~7_w}C+@;!_a4?KOSRj9HFWtRy
zhX={KsIgl3_9eGvO8~HN+W*=-fT3l~CTL;cG2f;$5Ul&#rg~tX;pd39-wJM!$<6$P
zc^l7vg1uNE%)S){|A-{U_GP1_N2UpBa27(A%@EiVy0%V1G6#xCJE$IMvo4<kv{&WA
zff*eut1yqD&sfoH>VP^Om$y&qlX9GMVs^psMLE9It#}&t56g<>T=uC`Y}uVN7AU_>
z=ys=u9)#_BR9PRJam0PQ;GdA<s*`HgVi6vlDTLT~Nr#qoC@V$na@Kr;-uwKmL;Gca
zu@Drlb4+_UA>X-S-eBqh<u>OPH%8%}FvvYa?ByeLAsHLgR2UYn6lOp)<{MGIU~}z$
zTIX$(6riAJ@eq~wMTKj=bno>S@ivJGI$<TP?Bm#>>?y4?_g9&x4Tu?mVYycv>q5SI
z$efg(b&F9n9WHtmqC?WlK2}Hb`!!$evlBc7rXT2ueXI51G9n9MHcMak)!2JluHvs2
zWlaqke?_&SI68XnXri3FFyr2rs?M&LiERo<dKwI(z6*Ql3K{8_@*;CCAsu}Hu(eT`
zPtT{a=8t6FI(~0Q*KF`3LW>*fNZ$Acx@XYUAG=?i&_Wc{3;PP&!J<*vjhK<Lm5Xz9
zXzGG~(F%g^mx`PSj0sO9;J+>1{yY5|wO7MY$0fE9NG(F(+b^(ZZL*k{U&_1Y9MSUO
zjpvJ}Cqsw&0*VWkqccx7OJI(Bj?K)q7D(M449ew-C0i?r#F1C|MyTMmrEq7kU8EC%
zuHKg@JH|1>^fmy9peblefwW{qqcMDA2=enkz~(tcV*w%`7(ageP>Uw%uKsd#F3q1O
z!LNq%<tQO?$HQfR^ttwC{e0yi!8Ph;>@@sz<>d{M>3&}9e*XSOv2e0kN^`vyiP+4s
zOh}#=PLwvsNDDN=79QOd!yS1d7;%{js*9gN`=ldsw&X}a_-eEeA{m}5OB9zQl<Jpd
zL_mJTvLy>UkeIprcEdI>sSP2*-*e?K;ePI!!m*;(8v+wW!dHjc5J->u?+oA+9~F3L
zWJ_Eq`@e0`GNSY#Y5g`5RGpkx6sW-@ax|PAwkGJW{lRlI_|Z?~Y0!@JKRSzLK4$+V
zXY}8%8l4<~zTyA-^MCmmh0&1kKk9=2=WqY}I4T}M^$sU<n(qR|T-Ut3u9sOJw^K4I
z0AEJ2c5T6IiTX$zK*d45;c*ioiU0a|Kzg)Tol7L-rY7DMfQX$3Fl;~rNZdrA&}G;k
z9(`BN?r562+4U+%@(-WG{vbfn0n2T(&ID9%y0n-Pu*c{${xsqtU3tIO>`?ge$F!uy
zLItya>*Kh<#UOy$qi(U?9mG5>sLjka1UP@jHM+Y4k>}nCv9stlkpXbMgkTP@XIDag
z$D+;}vynWYV8NJxJ-Jx5P#)k7G6kx7v5>wt{$##6n7}t=251lD410qyrz;Ia5MkL@
zgGjyTXq7U;|GYfj&L~kA_=xmWZf)c+qLT_cPS^rOO$4|$AFY?w@R+|+8L_+Fem`1i
ztPFtO_S*Koc<OHK1~@!Sm+O8g4>R&R9q(R?_EbS9U{c>-Y_KlXnkNDk?L#|;U4C%a
zs}2)#cgJ&k0F6*gl*nrm{*YFkeDD3~(oV+CL8f=YmrDS*)NHB-Qwi{=4Fa&@J-MkG
zGld_ERYqULOaYP`xb~NO9l0d7?A0ba2^312nxAX@L+JvIx~<NiN#J+-BYM`Ozbiwj
zw91Jo#5I2J0_wQe98T9-HN`<SMJoBBq5xUT9#E8?NQ>Af#Z5sWAMu`xN-0AS8mBUr
zR*B^|rYgBz1gS{7LjOXA9%FVEP-)ikcr>rl=5`1Bu>z$RD0ra)s(o;3D9pSWG%J|c
z1A!S9=xDItlMkt=A_S1PUeCti3{0_wW@9Pp9^~U*SAF>T+O^-Xklug%zPat4uT^c#
zQUHIx(PU>5!US+{MgxCn7Ec4r>x2-F5+Gr+-WYD)P%H&%WRyIX+C5wIWMjmEdOVu0
zZWfs;CcPFlENXeGLZ!@vB6|SSePG+;n{L~oCraRDN`M0N4tq^bHjXC3YOzYp!)3El
zx0&L#$?dLWV>|*VG2(|Wvu&drq*IaO4!Ht2kjPqc;hr|aH}GRCbELxDT(tZX&VU(9
zt~A{5-cTg>M*iwtmR)3jFixzmpDy}M?2PPbcyCLBb18dysMq<aV#(GJpXU?tKR&R(
z_sf=thI!6S{$|^~A+f*${^B^y@hxLy<Nal!%_4T_N!PlnKoy;1+~7O2k+}?rKk;EK
zwL(dnwu5pk<|~I5Kw6ax66QcT^rnB-EcznmxU&r~=6KBB`%dJ_ygnOO3Hx*5T-Ot7
z(LxW<O8+q`&*cP}yuYQvaI`TUj3#GFM{`7X<k(CxWv;heQ0(?~g@W7{-N8e!ao5z{
z@#8xzJw8l<lleA<xIuKU0e8Rl`P8mbogcwBZHxX{mA;XApHnq>dSTWito05(q&Azk
zoBi&U0PcoAyms4zK&=sd`)82dPJjH)KomT+N&jftlS;7)HU3*r--=B~x!(98+70pT
zP<%Kc=WvO7DV0_d<9vMO20P$~Bw^a0ju{DgZL>aQ3hS-AoiP8}iQr+IR;%ZW9XOA3
zw_dK3`|ANXkXTj&VS0d&>!Zc&AfKI(eGH$&H<VEKF@QbI38((YOh3;r`&R9BGAe*O
zOE(TORYP0@Jx}WWycK?6)A2$xe9`eXKHi|<_7Sl}tD3?j>&rH<A5I2vA~A*pK-?3U
zw7ab+%@fnADdSl5T4c$1*OiODkPjtu7OvPqo=z&)ZfsVYlnqbj%THnLKQ}7;BNvM2
zY-(5n+RdooB<4A5TF<5W$%F0%-hz)*<8Mx+Q|{KQ1*m4un|(E0OeG)E#NmlsBTi{b
zM(ISa^v>u0{<=ZHci`QYvx_`%1t`{%8JWw-S@kO%HaEQA?le26q3QJ~-&1{mKzb^<
zsKy>)L6;J67PpHA`5R^^9N@p)GtcMroKo4hS<IEdowAvtglC>`47BXzIgC_P@LaCd
zn1!Xnpf2mwTkN%5w>Y0M0Nh5jyj{)HKL&Z53QoSySdOL(BocEv4ZaVKem-_TRUx<B
z?S9ZpZNd~Z@Oq@~1I-h_K|8(^*mYhl)hK6Zw%;?hK3P^yQg95vh{pL*^}DU-{&)n=
zq}F^Q0U$(qY`AN+q$~4w1hsaBJ))_Dkk?983nN|6j?dRx(?5d&WT;dWc>;@GihC_f
zmHT<}AK)rdXAvuB#9S7CY<xkj1<stC{DFW&$nIE#nHS`+dlU8mS9JokI{CI+-MZKY
z0jQ1-Q;>S=m4shCUhF^jhnL7NFf)L1&m%zrfyWsokuA~~t~KqJ`zz8i?E_Y^jh;qB
zRwJMyO{GGY?>rFY5*vhk#XtXacVfab#cIXc&=vKD+UlcTWhi#Xlih&6_;DYU{_VBR
zel{RroZ!xA@yti=8ekdH78pgorWv|^`t<Nu|FK-F+V8|dto!jCh+<bHJN8d63kKeg
zPcE_eXOiJ+9>$Vr+n?t__NHFd4kT5~z0iZHcO!17JjH#l%73>V%3=UsxWj6Z^DeG5
zl7D1ajchqr%p17^lGd<U=qw3y&>E2YGdSr;B6`5dFLdL|R5c4P7<tz0b7l1M#OcD9
zi<D&pQ5Sg<j@$LpkT#b>Dii~rZ9Xfi=IVJ7G=B#SbmflPrK-gMJ$Kc<>$lUdSzzu}
zFyUp;-+`tf_}PkBrAt8u@7?k%XVdLQ7<e?<$LqaE!G@lp736zA*HFk6;XDuf-v@_5
zEwkHo_lshY?ApYKDb5TKUqI_n@Y&wu6yj|_v&04{`SD4F-{XpBUH7*;`}n71j;*)m
zien~r7`KqIec@5ui(Dm^`A>-~#J_yKXvx5Fn)<)`9ud*Ou4_$*bfodDc8Dj*kNd4D
z3Y!kIK`{pyJJ>5bmOkcWK}L~NA{od+%I%PIfsXrRW73=MiEt=k)f;ua!ZN4#Ft?^i
z90Sf-BZv4;zc;>FZ$3m*-~0rUFxSwnMqyqrF|01Mp=fdmSqnC`=M1Qh^j&B$K!;T9
zPfOlOW;BUF!VaxA#hyX{LJ{mI*%|3r>T{OvM)syuhWQ${1V<L#duRkERF#Zl@4vhr
zVZBLJB47_C)SbbFodr?LMt9;0{{h$!t9nF@LiH&6#izx@e-kxzD6IP^azs`t^KR<n
zq<{tB5CSi@>kz8wm#cLops)`Yk-G?Yh`Fr@*6;_D4O7$kUn42Av!q<!N%7P21X4vz
z7_PSM7%SFy24c^4Z!562?Y7?l6gV7;Jmy2O)IFU$us?cSe(RDW2II44w2EM07;nZ9
zkJCDzE{;En!p175K@Ty>p>rH0AI(xWZMPG-^!mmGfSC=Ii;Pxr9R8xAK4KhVLEUT&
z`Zm*QOR?})REd&2r~AAkCfD`^+^boCIAP9a6<?@CXU{W*CXu(RK*=cmLY}P*`*s*>
z`{u?^W+?syUOVIdV^oYJn9tHvv_zaY0cDHzG(`?@od5?Sd(a{E+q`MKBF+O}AXj*J
zJ(=(L4T&6A7mf*qD4U=EFDd6meynqV!!pa^kOvXrDIC>FuGLS7EZF4ilH!O$c}5(A
zn?N9dB-RikOZnrK__d->g&g7uwvd@HA+kyLyLaLXIQ)Y)W6Iyf&6lhUJxleZI|#!3
z#_g1DGqxpx5E%p4(no{v;3C$ryoj&w>Pr=6nceeD+?q!W2gbu9oDYV)mR7bO`#oJw
zx?g@^2h(`Ky&~~phws=pu93sfGqeW=;DJ#%`kjsbAGYoSsEsac6mW5O*Wgkdid%6g
zR$2-aw?c8Z;-290wLq}~EmW}Jt|372qNQlCQZ#6Q0C)Lk?#w@P@6IsnWRuM1>^Xb(
zoPGCsbz4OuH{=;%FHuk7u1qMwCI}aXd{Qb0d;c6;(41g|uAOD2#Abq_qrPuk3<Bg<
z5Nb3-@MzvS4OzpLlcEvsY<8D3aU)=BltTC|oK5y+tJwT~eUMkH&*n4o1dO9z!+K_~
zNki+S-pgYwY@?j&CWYz2p+|8Hx>ao%!$U*1Cc8Tm#oPJOW?E6L19sJ~jNBtqmtA;u
zT1}xlGKaI>k+;`dgLixH1Of$46j^P89v!f=j^-6#RW3nyE>D_+!z_x4i&Weh<r#Y{
z>75r-;NO41(CdmF&!&e5q)v_pNEr>qR?DgSzg|IQ_n7_F&B<U`LJlkz6LYzPUn<My
zaBq148Bkp4ZO@4ir$ukIS<^PMHFuc2k4P%VdoLSBk>k%egrk(KRt4HvUnNA-*;Q7N
z<>xjOkkDRhtQW6)k`~Z`%rAoryP(jJ3NN3f%m}9j2Dki2GEtd!LV0+~IU^~BvKcQ^
zbe(26Z=D<%Ys9{KE8Y15*4V<+NgU0@U*5_QXz$Tc&ZWZ$WV~DH?J{S5yp#zYgT!Un
zg3brc&$=u&5p)6q6GQxmAvh94OLNhM<>d3#G{s39DOQ6)EY&YbqHSi0Pm+E7LCCFS
z@9-_~T;kOc{q9~rQs@5HW4I}LvK&6YgA_XqI`XCV&|lqfcK9fKeQ}WQW4i`<nU4K&
zLa$3Vq6rQ&Z5s%gK4geQ40n7k`6)I&s6cgp63>`KAUuccw<WIZ#ZyyB1=AB^yyh#9
z`FwMG6XfWqr71odP8Lz^_hX!eqtS{(WYuKhfW>mCS(Uh?lH~<hbYqh?uG)>m{vWC8
zKm7V}_EPXuvaGK+JO%ii*yfn}_`0|hmFo3Rrz*7nnR9<2?vneMvF#!TnI!o1e2^L;
zMOrNzLpI9UZmIH%y;>EL;QeBBLCEn@KxbO#(PPoETmcBVy#PIvyd0qj+eyY<)?fVZ
zyc&`6TXE&N-xdh6KE?d~)sy89`zlMA6;4paVWMg?D$}>u0NgUAVjj6tF{%MqWr(<l
zg9`TWQ_7c@IEf*3dZsbWhacp~{x!I=T%ZiwEh&Yd<fHX1E)~xTc=`kmxg0WbQ;DLX
zfiV=SvCg7+NuOwBcu65S_`SrBHIrMSlO*BosPBK-4X}Dw-;o6lR9z8ccf4ZHGD_V!
zB<Ectw12_w6fQ>p?w(MXjX1R96MY|n{mgkXuNduSBCL$X2d>MfN$@KebRP#N@LFtL
zWv{Nv^L;rP;A%y0!O>L8wU*JiPzQg^h*|ySc}@+ZLyQTsz4~QqmNq;bTcMf{WMXWJ
z9*Ty8L+H?Hp^+4X?D?8o_B%>HyVFA6*zyy1{RbN57Pe+z5oq~~k<WwR3g*J`a#~6x
z))yOE`tu~|ieIa3MQ-Y6h<yvG;OWBcr8Yj*reOEY-Jfg6W8&>8Ml!@Byq}2-Qo;T>
zBwvQ4cI1;Re5fiL{q;`0#@5>PEGz|AFjLF2#m62W&FSYx)9~IfuifiM@=xxy!6ba8
zBsPrDX5FJ1a!-BgHn8XW*4osTc}H2?xcm=XC@z7)d*S>xZWj!L_xi&fGEeQ+T@ceF
zjjlJm0vV&w`zYD3=&v-?j`c!Vx!^f#xz$ENgHX1>xG`wIoUFR?v_dTVN6?dEc+^!B
zrYXZ}XST>f59E&zzrk`1JEs<@{mNjCPbITw2UhH>h)@bW9R;f*=l{$_6bawz7o?_}
zjj}DBXP|SXN^a&m#+d&p!P*=S=3!@zfm^4#5f=<{1KWPkrjPxH0P+w)ztRST@;_Hb
z#M_R2*KltjhW9Xr@ntv<i)%ZLl6|dJwWWN|LJdj&YVud~Rf97}e&8Gd^>DkD<iRBV
zTSHO&uN=(Z_*CiT+p_4HYhrqMV*C~P7{hc-3N8cv1F@2Oo`cyti7B}>@qd?ae2qDJ
zUl24?E&O}$gS|P5;}?S_<Wr|dj<!HZ^+0joV0fjy9&|rba%ZSxsONhyF`@3DlkxA6
zkw<kmygKfp&Xh$+-(rI96y?)}^O-Ak`rOcjk!d<vN`CIJjWL)&8rQqwmdzhuP;ao3
zWnQ7%@8fC@DIi%r6xnoaq%i(ySH%`mNImAyR*<6UJ;31bWe98Zd)l^&_$(^6fN=cZ
z<`_U1IW@Mi|J5!K8OMNS*FzyTmztm2O{?x>ci4s+zSnGXoE9)JdTS^AXVzncSnZ%W
zl2L^|*F%N%WqQA{^$068qvH+60ByW*ldWH)h1jUlh`{ruK;ZE<{2)O2^;TW&_X^fY
zX_fZ4R#}fL9{-g5Opqxtm<lw+9q19%qErxlq;{pFMOjpHsuf|EyWy*_X88%9vjOtE
zFw`p9k9;sy%x|@9UY_1QIDX1Ws5*fXOWV^&F~EnxIh`k01ZNft{N6fhgjr#v+e7$o
zl)OZ3*GJGMenK%?D7{50qzd(BQ#quY+F||Y^Hq{cgqhM;Thrjm)6ksN0k{RwFqn7M
zpwGy_WC>-}X-Tg;uCeFhBv~$J1CBCzc8+DT8<z{Fo#w^~JV^wZaT+*RdJ{+ArE^vB
zG#%}gC-Ne*qu=L^Z{jmlAMVnu1-^UE>a&c(G_)W(b9KTjiq$_Iv~j+cda1S|Z)GF%
ze$MXkK1+d2-wratfIj&9s{i<!$^53$SXHC$kMap0IO$^6aE$KeW52)VDVYusUASHd
z*5Fzu$rb_6@NW>dtYmG$wDX+4U7-_dC43FxN+zZTYT#d40?*<^h}8cj-O^>!VUU6M
zFxNP(9-xL|&&ZbDl-wW3&lNP%TLOBpr%?U?(_1plEV*rP@z`or^z6g{sA>tg5B+?c
zym`Da5HsJaK%5@S?KtoGS#b083d>BIb4-U84_FtXA`QV@b->EXCCxQ&IEc9klQ&?k
zQF(DgI?<IJ7nLDt|4UBSySpQn4TFa^utgZ#nT{6~`C0F6rMl*%fI%T>z0G-p{hRyO
z$tNb1k4oQg&{NqbfU6%ZkO&s9l8|bY^l6E0c3M@xR+XBI!~dnx^&|QfB|g3><!=%}
z2OZ)i2D2Z}MT@Y_aZHb%*d;J9X}mmo6Y{%<Bj%qg$72Y+>QwGk%`ym?4gO71*`|k2
zJFG<S1_W`E!k=U8FdqD+hz(#&fNP3Nbzw(aX)K417h|*&eL@VR-Q&)`Aq|ZE)!MGK
zU5x!&%OD{UX)Rw1K2?hyJuEkQ+YVNb!<-2R&(a_=TD<V2Pe1gC9>F!xq(#xuQ|9ja
z$vQE?l1v2SaplV|6C9cC!YN-NJS1!Jg^$yCVtg<%i{BFKIj8?8%DewWemgtJ_Vsi{
z`_JkM`yb1G9Xd1BLf66Cb~BtY>S9xWS*06rsdLr4=?8q^>cmvVEyt6NA3{@J@~w*A
zvCJQKN;-OOaw`n&i+!kK*^6Fh`A7U~HwrHZO90v7m#1pMYWH{JW0YE|(N%4lzTbrV
zFA}bZ%@2vVw5%N?-GrN*SR<BU+{z1^;!Y{5mV>p~(<3_7A)xj)2~xiV89%RJZ;{%c
zjay=?v2gW*5BHn;nr<?~N35~E!&1*y=6GYZGGZAX>zOFL>3kfv`;+jU+n%-?WJ&<*
zN3OV5i^*k5KyM0#L>>ZVyE98@mERDAJLef8<^^k8_(HYmh1O1AE6zuSc-o3t?q)O1
zye=2`#ZwRf5!nPed>9wMb18hkgM7<#nb-Bc-C&-sYCd^q3$v|CpIj~n8ry$ND|{Y$
zY}_5vL9MkY=;P7#cJBmRi4G(Wi(~$Ky;LmsMXav|uI(w*J?*f4jgJy1T_mZrA5-`l
zQZoL<ek8b!G@&qb%44tVI0VgSQ$D!ibqU?3l*BTKcyvX9hj@klO+}FR@@#(=h0T+3
zLm_`Spx9w=JGBtn+!#tDp%gSUu~kPbh%AVvDQ=h=Op)wj6HadQt!M6X#k92R8aR8n
zz)Ix6a*(d2Cu)y=Q}U;T*ZjatgbmZLCzBEL<<h0Z=ei?Gu1fCwWhk#BS0OJhZJok0
zH;*v*%d4|@f_ef^vRnu4BeiIJXU-k9oV#ss9EA4O`$&ZrY3$|kZ#vscox4-(Va=<`
zWl*k+=r;uy)r9h<ak=XCN~+q%j?ZyaV_GsFEytEh@^Rg!af~4^#OmB!Q>Yb!_<UOK
zl8nkTmp?0tz5m4BxZLyX5u{hHR$M1My@#R(A!iJJd`PBVYwx$pK-EpKaK|wsmlK!2
z=NwgZxYoA1eD>B^w<0Nblv(@j@7;z!%}izie7RW4WSxe6ZPfK`WU4V1zS6?PG-9nW
zlVYB+gSa15-%8i|gZFViKuy&lIorabMY&4@3{y?C;)u7alGQEjcT~~O#ZG*EVuKDo
zCik)+yNa7BGF?itd&2odsUZUIY#_+5)9yIJ2T;{=ybTxW5Sqsfv?V5yIHl0l`6f4C
z1J%|IyrU)vS!HCao|gL1U)j*O3?29Is`;TXQ-vXxIUi=T-b9h5*h4HUTy|k8&Cxn0
z*v*N`GHg8Pzet~(S<X24%@34HH2cos_6Hv*fzf=;gyYa<MD29<^U7e#`|3!MlaC@{
ze1>8iu`xPOe|uZVYCT$*b#&w5GD@6&8EzTWf5*pI_N6hADzL2306HfORJS2n*t<{b
z{@p)Yk@57S#NTWirC|R6iyl=uEv7%YUF0`i_Jp~p#E3q?5W$NjV5L^v?P2?xtU=FB
zT(ngDzjt}Jm<4Y}|0;#7>8;9jg^t;-&YMP#&6rIlr&csJ?lcBx-GzQ$rB@oQeU4YO
zy2}#iAK+xM>KC3$G+sO05CfT+*r2&=<WzK4lcwT6JM2vPVqY<CAUh~S>o;0`d%3$d
z_bhUadrdgKKd(ZXq_Wz^GeCH7gxFK<!aYnpoZjz-6Z-Fm+>gI2lA1FHrs?F1Fws?n
zmQp8Thgk63>Rp7@eb*7vV6c+ZF82_ZmK5kDfLeb~)!_v^u_J(w|Cy1TN~L=8aVxuZ
z9}qY<1Q~Mn-&~L|QXu5X<Xhn);;_urbiZ8Cjkge)a>AvMp)B%@)gwXl`H=OzzPy2a
zQnS+&WP4jEqHR;>ZP-?r0r0)XS)csz&VM}{Zr<6-6M+#R4&#?pO6L6L#@A8cvrptB
zXegDJAPwm#&qfi$I`d*8H@>P`$q#L{vo;*Licq%C?;@-zJ(kdP(3&Hpt-(J^AA|0i
zr>`8}8&fY;+a#u6M8HJ&1y~RIv>D-1k7|?Iq1u6Q1vlM`@0}<qG~lbq+|R^Jm;bI=
zYJzIdLgsD6K3i~!tzTMpvw$={LOEx^n0|}NhTNfk=IdTc>4fS?_Ff&!B$mr6`nlP4
z^Tz#T9luO5yB%HjNZ0RexRB+mMunSZXbq8yopu4Em%KSV{rM>Be8FfVPsg5D$C6RR
z&vs|@(h~1w#@oN~MeupK0567-Y86XzNc9vn<z|fm3}Y42-4vsxd;?)qFw>$j*xmYL
zKQ!)RrQAb2AQ5QkV-Sh|$OfSebqqIMf~o0Ycf9sV7qPfk&ux)W?KY$bsW2m~=J_?3
z^EX-z-6j`%lv5rTxZH{|9lz_N7<@fA7o|o0uGKezdYn6Vxwz5Y3NlQb#G*9aCZ2FO
zd%i|9z>DFjXH}zsFyfwnTTLG@zI#2IjF@EX>6~llsE^^>n4Bn>aG+?D{V08!J2Yq%
zJSCg@&Hi~r|3;GeeY!(Ry2!?Wadyx<w9$$T2Gqma!=T|u<bRP{JA^OhZKRWAE6XlM
zP`xs3cn-To)bGasjN}tU`YqUel<?}J$AhaHtUNDzMg-2YMjYO^;~ly6j-~A&*+N{x
zOKOUla%N>(e;&2vuL4~aFcbMpeH7P^Eh3Kr-gN1WP(9@r`KZPsLioBBP251p(r;Yl
z7pt<#jQB>%`q4!1m*e(?TvHKJ%wx-F+jb0wH}|4kHkLiM0ODw6t~*C`2rYWcj!q3)
zs#myWi>Txb%bIJ7s9xy?=L?e%g}LcZ>cEX7d=%k$f4PCXp|xpMviV|jc%<!<&HjmE
ziWWB84XH0$Rni=KrljD#i+%mo6F+q6PyNxHx7*i+tIT<Z<`ffROjv18O!eqPhM2`W
zk&=^dwsn=nG*_luIub|1MP)ZLUs4hAPJOi>4`0_G9BmQ1yEP&%FTWAU88}5$(`{{V
zUa{IFy_Qqew?)sBa9_TMnqtKu)2FSnmwd1snD0SV&@!ah%9fsT5UZG{pT2=-<zM5F
z#fdHT5bL|)(F3x4nWBj`o723smQ80lb@Y&0KpO+qMw~MG&k@t9Tvvevy~R1U65(BU
z&Lr9Y4424Lm%otzRu2xyXLBCrMm{4Zucc&(InQGo=KId2FkEl{EeA)!f!W4~0-YcI
zs~9(DlPeXxY7kdA!$QH_TgJIYtp2#S^wCBSr*!;#(hqG7TrLCui4aU&n)E}SA4`;4
zBJlHw)YT(37i95w1hmhxn$!(ve(%01k`akE><|TmaW-5oKYAN!M{@~YNz{g|E;xOk
zCCI4F^!L{lO)r?1<hW>?TU_S-nUWdQI78|l_6LK*cd0vsgHK$DKq@|$WriwOdE;5Z
z?D={Z+JZT+c=U&!!2GHi1vZ>J_N%h4R{@xP<5TV7gs6Pc1S*S|M!I5N!}5H`kAPfg
zW^rZjv2jL-V@-^n)+3*HIP){br$OnVH?8U-bIY-kT7s>3gZk9u-6i9ah04{v;jM>T
zVmR{$N@2eTs0ApM?QF!h&C#AB{DpL{l+>4fWkktO5Yuu*ZA3I011y;?5k7HO&~1ry
z@kJV0;!JyP)^m9nC&o&edxxuVzM+PxcR0duX9WYSt9m%&n0^UMrl&cT=~Wb^d<u;Y
z-O%roRTEy>o%oU*Fb^^}opb7NNnIY`e5pMCe4ipeIJ;-CpAdt2TY|M_kBmnYdyB_y
ziE|y>FVeM`qOL0_<7v(5^mXRo&mfsm9@U=LGPBTv_NBh(k0Tj(?ozrqS}ec2Jwt94
z@J=qjNue>!b27a$jo!ZAz`DHBLa7`&?vL1<;C5yEjXGQkH&tSs9{Hs?vsgycW}JE#
z_|R0y*IW#mzoQl+*)Shqa}ZtHxx73dUSp_K@e`n}B!H*K%s9Osu$SvqxGK16iE%Is
zn$y&1=UB0HVzyZA%E|M(U0+3Hxv0(Ky5UYlH9E!;c#Eb^m*W`tvqF1&GHWDWy>-H!
zoJP6a(&pI9pYe%OJ)X2nIuS6-Ib3bap-Oo@g#GDYltl5(Xqa_G+idgYUUJhw`u4Bu
zil9pAoqC<McW<rSuAmVDWO;6<yR2JNEO6%L^%wbd!Db#9d1fg1(T!!R!rC)Gp?T)s
zu#a@eO*vR26sC2{yz_G>&CBnX<@~NQ=WplK8feArpBWuGrl5J&x0<rkaE~4fMCT&-
zwX5GAX(#WznP&?N=#s~2tkWUav{m9ORpq5rmSx%bY)6ar-gh}Tbn~-(gn`-_ooIBl
zdu%4Ix4~5(@~_7vjgy13*xW97<=g^2wOW=s*u#h(2=3^iIG~|skAoG*sE6TL;dPBa
zZLoYAy~%77s9!xGmi`o<f@fl<WJ0;SC?ZJOi;KzW<L7hg<sGKlo1j0cM-tL}6o-Bx
z)ZJ;9?=LUTf(O=Lg`QevY7-k^T!8w}ok?;;!WjhTHpp@_f5W3={q4el<5zCV5sUM_
zN8)zkid!rp!$;kUn$^QH`+LUG-|1UaE|HFw_fM3cT;9mA6i&?NobXJe*nvBoRff3T
z@tn8bEk$AX`rwg2erx1Qr#wjqqtdA6jSBtLp!xsCRNx5D;9b`v^Pun>$8g2<w>C%r
znz#LwaUH-{b@}>j!Sv1(jeo<tXkP}5h`$V6d8Z%@ioQWoh}ffp{4;OD^NWM-=pQC^
zh?U5(6AH`8qF87-TmuDhV|xc<P#4<qm<Lq0&dUa!G0vj&#6`4df4bXqVgH@8uWjQR
zRyr%;-}m;t9!ac#NGESMtPEKvrnf4olG#sqOKyw@k8DMOYada1!N@7CWF&7CIXy9M
ztf3~0Az>a_54~w@?^<(Pco!zC#_2PHbPn-A1%nIe-aQQk#02c*AIVY3uidkXb+M=E
zg`~K#Vzt070pACFL$B>ILBhh01M58tF|LCx$^Y5_Y=8JI|KC>tlJLlOIO#F*n$tif
zSQZ198diXX8N)!3^a;#BwJqp`qfu&4`V~xRENa*D$cez-AlL7apSsYW>szG$vZ7?r
z%IM)q;O~PPSGU#t*6HS(vt7Tg(}2|wmjAU__5Az$|16j$TK~^NS1b3wmTQ~!y@!th
z?;QNs2f!>7O@pkV4G$K>kHL}q%kGQDn((UI2W#R-%!8VAAYgO#Y`Qyu!shx{&LYcE
z@ZbetZ<H3A9zRG*z~7}?B&r{@2&hcAk}LPcfSPn*v3hM{k$?O@PEY6g90~B{pay`v
zxjV?|M!(5Vhy)CY|G|rH0ETFCTpv(&x?KQ_V%}o#U;h!X)yY#C$Y0tpi_yil^4j7@
z3;;c)AN;Vnb)8;m16S5O?Dj!N%u55=F9&UV)g(%ntrJzqy9a^9)&6QRuDR>H>cBIo
z{STM4(i#TY+Xo>?Gkoc$7_gn@htVfz70R6ljq}zX#1CT6M}@F|-zu7t9w;c1;u~P&
zvh7Y`kY^3R2L1ULb+r(Fxy%Hz&i5Xd-2oTQ%{)fVnRXy(4j!AfKKlct%K7ucTiNYn
z=hX(wp?BiNgF#hAu;28@)8qd3(#s9&dt~(l3ZMm6VAmea%YpHc(rr_zixgVSQ*v@`
zQL|G}Le#^9?ZQE=BaLcgiVao5mOx2(0pUZz7BqZ))$eA1XtKTD@m_SPXk-aoDABpt
zp$WS?E%u`8{Hp;mO=7!Em#No0j-l)L^q>P->}e;LVsstHi!?kKDF+WC#Mj`kEdiTW
zmayaAgC!W#%5g%%lYmMku<rK7*RnKo4<D5Ie4EJ)P<)FfIDlltyC_)`GFILhKmod0
z82osC4ji^Gg{Iy>y0+$It9^T^H{jRT-I_R+T8jUS4gk7F%Oc+!2;-8Dm+1g-C(oSL
z(Km}g&1e@>S-F{8k;}6I>?gX$3V@^WAa*VaaoR9^ILa3B0X_in6!C&hdEbuA%`0TY
zV)0*;{;)1k)eaUM(mmX$#^v@Z0|C7${C%8c40S#wv<vX0#%U6z7HnhTS_GjFD2~Tc
zHS}EXvnA8>TfcC)T_VdIK#ZI=KBz<b;RDTR08}cP_ufrQ6SfTy6zBpplqcA(#L73n
zCki@p%_~W<&>20?q9k4JfKRvpa!w@gXPC2V7V5kvQqi3Lk1YDZ5reOV%WHXWFs-(9
z0w7goJKrJncxtbHLaE)O>9-SRAY7sML43FXjIr9ou&p)%oflz+{=ak%80T9w<pEZF
zPX-?oZhfTa?rcn7=Rljw%gc{@l$ZEgYGgcM8RLoRxqAHkNxhGgaAJkv$vZGThh&h?
zcGvX}QAUi=`WwM~rs=m#)g!ws_On0(_3(S)Q6rMA^or>gs96_Y{=@({)og+D=QY+b
z&=5Oc2dN!HDijY~2#GIz!<Am{^txpiW5Mb#bd*Q+dl%$*5M$KG`!P0`ZSz|b*S5s&
zjj9%L+&IFyx^BKxg$`0@_s5MXv-jHBH}v@tg3>9!7r!-CDfJcM%o--{0YXq$woh#1
z*u5LNX&i14?wSrtUA%sP#XghG15T89kmQ|+JE-`#W48XH{OZ*>qxA3iaHncJS)Fd+
zSX?%wO0SshZ_@?ryPF&-rqn=w{P?f?@j}X9t51=K%GV!@vAQ;jxIN1!q!iA4tf9{%
zowu}Z8=IVeCn?@4{nLfyU-Nk0ZSpEJB>P+&$9pQN@UgI9*;GvyML1cz=DVK(AY9Ax
zd3Dfif?K%LlgQZ+TPogcTy4^i@}7)23d*>cbKCh|N{lyGZH<=$A`xPDjkUJ<1+Q!*
z4pTyMZ5H0@_gT_cL_oL7^F5#K7yS!z4;mF49938r{$OIT$qEO}%)?0Yvkmr4(@MOm
zSyZ-E=KRjbT2anuzFP{alz7xVP$?&FW}PJQ^sFSj-c9GHj5%*3czKJ%>SW1t2HoA4
zHyBR0k()&!C!yB)(%aRK?<sUUj*616cS<k5Aw6E5%HJ1NcqWmg*nM$LP6Ddm`N1>O
zwqHMCZ1-fh*)mBMl~20GJ(~`J)A-yw{PZh6%-j0@hnk?&8<v$3^!rVYX2);e5urbY
zhyE2jf3efUHaY)1*k>6W9{9(BDQWVDErEL$tBXgh!yn0sdhaRHgVp^SR`y`b@<N#V
z4^CcScK*_5*+X<)PN#c(M905ZHLlVvy(Eico`Ln{A`u`2jLOhmx^q|m4~bWBe<0vq
zb^JbP2P~y6*bLW#@?RA)S0&wrlOokHR&Cow6Y%bl8t8gbr_{%MP_cQzKDlX3>W}u5
z?6^&zNAl+B5ocvgC+7fK*1)hDQ0>RUYrHS4uiY=?6{35zTO47KmA&!ja0iK1ig9BY
z8#3Ls{Oa_-mt>%;A+5y&ugIGO7=0|&i|DT1oXEwCul=?3Vn^Hjq9FN$hL;a0(MnHR
zGUv+nVp__wlSUK=$MD<@oau(*QI6cJvYPA9GT-OxMdVK<?`#vvkrQFTqfd)Ls2)5i
zkK-@zDz6?|n}qdg)9uBdW;)=sdO+LUqLHngy6U!nwDX|IxlH7uPJj|!K%G2*a}hk5
z^|yrBn?s!G?&#j!vE7FgFl{c`-67+hS4uU}ZlhY&1o|n{(BuP67C5Pb*T|l7nxRJO
z67^YWTP)qh-FZxQ-8o3F<iR{_MkYRpB!IOPYQfaM0i0?z$?H5VyQegn7&ZuR$9Hk<
zHy^gmpK9IC*x)R}E?LAP0dej>$w336gL1j@?&ZKgBt%wjJ#K^|es2rH2808W(%)dI
zB-}H!H##lP4*D-7rz6#r;{Qu%;cq%{<dH%-dz=tKp9(gyrYc|hRkb>Wo?fLmE0jU>
z4T8Zg`@MJx!Na=NeRpAckypM#-+9Al4uOuwUd&|biNM`Nc%6}o=W>2og~Ap;#rZ<)
z!BT$Vf&dP9Fa)OVmMR2mgz-hdGzB(=9j3cGFIOy5J{Bz4i&Ws$c*hGo@oBSNN7I;1
zpvTYEC3(}&<Z(t70X}Lw^C{TO2OuHC5oLh?NA<_e`jpYfc<H~yh5uN1V3Eb)7h={9
z(}~=M`OMxu7}u~O`)7*$demaw=(s9WO288e%BtxHL+k*!P)NUQ%oM|hY@xx5=b5Qs
ztGPWcr3HL%Rn3l8pl5Io5B{7>G6oSFj+`4M#2I@)6P=0%^q{lfCZ4X2)<}8z<^LJ#
zSEuiLx$Q$qwkaP!;Q;iJ->!6-fQb#Fy~*3Km2XD3-SeG?Zz7g??GKID#Fe~+%t2uf
ztfd7zT?;Q4-Kn%+W`KwxZzMx@@I*z5M)78ihQUc*VhP{(aHZkq%A-xXgHYq(ydIm)
zpCukydsSlL8%!-rU!ydJaIeDY_l`9jd{ZsI3dxdG)+_vDJSOrH^4LoZreuFngfzFO
zwqeFH(pPH2y)p_jV~!3%@upQ20v-64zI#rhVi#}VwUtuhgMfy>w5ivu+L*$$>7of5
zu=ObL?jtBee<n0rqy{ap$DHS{qMba3$*u=>oFV$YU}#%<BUggZ`&GrH50XMoYcdf2
zxip_WEYO6r#|x3sNJRQ@>UOS&9XHx<ROuAf{C@nXnoezi?IOU?N7OGXw@mr^VCBSs
zP5OK5LSb=kdI*jnGL+c<nQK&u&GMFTP$usWuc4Cdk1fsQ-B~YF|13cSSXiuj%+uG}
zX~zK<O~4rEnF>w`?HO-78D$ll2w$NOoPoq=*}I>F*R@mioP(}an`&ks$jbH5O!K84
z>^uHI8V4#&BtT-ev?d02)C^^2;JDl4Wc@G;N*$zJdtVdwWtIC;Qajsz5XYSQrjKEq
z1_;~Zwret8_zC+u=6CE*wV4a#?t{?;*t#m>S_Rm~pL3VVDIwaABykB$jJ8<~^0hg@
zO)*49s+1Y7*bFKexe!|G=^&jUW^Gse@-<>YrtbD;wwn9tsN*_FVB;y^o6e&sOtC*$
zaiu^W!PBaxS>sZd&y%e%PsPzI*bZ6l85++s-Ysd{`?9b@gqY7wKg+v%xbMHI7(usI
z$PzsMHrhe?ghI5tf~~e6M!TKWNuhorU0tyB+<Oz27^3OU3`q~pD9x;aD!<?ixhV*7
z@JcV@Xfz0hvLj#>sJxhK;Djz10~=?RpDeoPjfpysCT2I=j#cFH7QH}qhpcaCXQ`5*
z59Pt+V)0a~YK{*$X9Igm-cxKS705nPou>C`d4{InEzteub?;5<-5brkt|zqZW-=ty
z?kb4MNhME2Ns9k{cZnC_w1kLhJ-fpZ_QsGZxXIKg-pTJrjB-lFY25w0G0u3IzC;en
zAwn;jU3EYQE5x<J5)TI0`Y`HPp}#`I-mg9m44+#x?#TtklXqV*q&I%nkNC&B(p&_?
zh!~mAH1|Un>?kC5!=3D-P@ab<ISf^%Fh6^T?)EfM!8^{BIU-*oP9!M0U~h^!f-8;h
zXR1!-I4QdSXkSgC2^T;QSR=Td*$(H3ZpiZ*`-?}r14@symF|66R-bcW-W;3mVSjV3
z=dV4a{b{oZ8N>Ine*`sEep--?1*?0?{#C?1)Bc<?rv*Fu1v7_~nO1ckHU5Kom~ZBI
zOLe^TvP6tzIA?Ju9r0zA#+c%E*>Fl^l_95;O-!rztz!NAh?W|pHK04{QE+&<yi{1%
z#deJN#P`hF@P5E)K505kuY2s<CC$~gK<iT*9*wUz6cnfrm@7y7L=Y{wt>*wk0lVeE
zN23|f##xgv6+t?t^6i>UDy1*_2yUDIBo<Vxn>8!>ndspzqyl}Bm2|SYU64X?VdQ^R
z(JYn%iS!jv{tn9{Yunq`^Vjymx_2LS&2l)a>h0LawN4d%hec#k3)=LKZvm=@dJe8{
zOE<zvm>jb0Yuw{&weLs*ha-w)>l4OWn;=j%AGb&I<PMyo?Llz_mQU@*csF&$25uZG
zX7N)FogMVk>>Yf}6>@T%P7K|s@XHZ7B(ev2q4yh(NkPTP-<vE;uyAjR2nC$QTJ{8a
zb7d5Rr)YLDkP++%(R{H*)%7@M4a=U{lalpS21=kC^5&3})s@K5{Bif-JVYVS!3{hH
z<3#GX_cT+9>})H4vp@?U?vdSd8o2bsam<Q|P!&kMdNQBTA{1Q7Zzsr)EVy}MLEDK+
z%xp!QbhG==E^QQ}$dS|=g0F91*9dDWBF)1K(<ykubFrc8n|hUeuw-gYurS-{;~&9S
zPH{5udDFO+&i!l@VS2)CWZ=FnupL`CBmO_<D8s0yoZ$g@hN2VWS)XjutDm8@L44KU
zP|<Pz-*l~9aq5K3sQgs@xrH^n+1}1)YhY%nQjpi3@gK{pM*Sx@m34uoqZN~taa+mv
zP3s~Y*Ql5d>_J&uNI6_eX`#c5%|M_^y$AJoQ2W?(Sjm#}ZppOtg@UX>^|9%raZJq5
zEyQ64S($ol;U?O(c_CSo3EqfkZ(6oR{E#(2N-b?7`!8PmOkse#svecqkWh-tmRpt%
zW@E-TT|UU<izcDYR;%qs5c_~{5A1OR3%OlB<C4Etb>{v=`S@3j*R_{4IQ>~0rK02L
zHACE6_NhESbq9Q$*ySqnpi&#K?*8X=B)5h&I0E*`85mP};Kwr>;Zqy#t3IOds#ze)
zz}@5PQ^#2~N+D74CvaK2bjN#b2-ft71;I%JgfpMVA1TxVHJU@^6Q6O^yEwK1Mv#?f
z3vZTL_a5AQILs_GFa0TnP6{3-ErJ1@gK&a>U@;Ms!=6X84@NgWj=-icEZFpYtSM$Y
zMz%(stXey6YFm}02<Ehxp}nVDL~cqiK3g{fDckafYZyn12yDhIIJX>ve>NWB%XF*H
zK?Lp78=s^NoaU&i_`H~hOgFK4)_SS;QLno9*r=c>yr{v^X8VlK&vLOe1k|a&b7&q8
zicm&kZp`t>9PkE_s9-w^K=t?EXLGh`%)I!k>Ah_#i6`(B6+&oon~pEyc~Vj$GT-=}
zjjI}7K|TG7ImzlOLF(KsmkEYd!CY5jU(c8Eqa3hKAw54@YM8JV2~t$VMvG(QF5j!=
zM#g(>i#G)!aCyI}enuCkaw3G==g=DNAMvWQHwcQOmxj7zRE9-H2pqVc@m4@Bwu;b2
zhQj=|ubbVOBL42M4TRhCcD=Y_?`A7-CP8XkCi*TKjrR#~5Skp@?a3BMty!R>$ga}H
zzM)^T5|H_)+W|At`O;!|o1U`Gn;b~DZB6oM4z_>eYrO91_v8d9qUvXH{Tc()B_K+B
zFjpB9mJ}&&?Yh$~_e9Ee5R?EvX5H65Q--I8WDr-XVP{LZMOUV*fW^@v+Hi9PXp3V*
zE*BKdKH>Qy^#~@Tw}<F7rZ*(NKUMdYpt<oVgY9E`;6G3qmgN(OYYsN>M(y^C@NBA$
zeY`l^J$^*6l;>5JEM<RoK1<fnH7#i1t;aaRbk1*UZ5!6Ib@VW_ufijD{73psUk3AC
zJdE0RZ73AqG^TVdi)CQn{~2EtTDLSrT^RF&tvuIOR<*6*Th40sUuvpeiCVriu+x^8
z++|6O@oFT&6r9wHr;jpcj==ot5(J-nHbf|Gl4jVWNn7cLvRhIm9Ght&U}}!XE<zzM
zh%q1}FFxh2W^9p1*c0`EV$>ZoHo>NW`l<=4X|BJv$gFkQO*GQ?*SJGmR?)l3FO|?`
zY&hANAe~(PmN^(L=!`Dyg&-9K^G+gcjGmzE)&3LSYf<W2Y9Vxj5Z2~|r)!4&BLCM>
z+4kQon;=3Qzi-+)9MU_BWM_E2?9_3NY*83YbiW|B6t#8zl^NgfGA7hzB&)?RbR#*R
z;myrH!5GnDRu<^_LH@Qfa5hCzK0NBHSvq0rd)iuZ=2J&O_G;wLR!qnU0YnV!jLdv|
z4DqArr|2y?9x0c#FFxOr;4h_Cc-25#hIKb$L-Xv8f^MOP+=G{Rl%+HmWivpFfMhF{
zA&c+Fur8q&_1pNw>|2d%T-6xLEQC*gqeP`{lj+StImS!i_b^wtMFN)g*)lVQ$Txmb
zQ57ifpRt9U@6>yeg0W>^Id#1hHDPiLA5KQ+r8e$K%Dzd-&F4jAqh)lx3qOL+C9ZVP
z>|wZQxWcA<%Tig90=aIb7N!|?B{kI|EgohC_trp<b0r2MeA|+F3(r3BzN+56mcl-@
ztN@$bYv2Reac-pJYJ{IytU5^tsuP^hg{%;}H*%a0dwK>WU0bN>MmG>fS5w>%)Vo~i
zVl>xb(lVX8VCn&FOV}2Yx-R|7QaYk0+2|DCY<txi<+P=>?=_Z2XeLF8Fr=tm;3vPq
z=P^J*E9@2TEZHxUzu?R<7w;IhY&^Nki&!T(|4-6$gmrFC6h1-(QEZ`M6+K0224eZ(
zT;>iK9#22E1+u4Q)i;`{SWeX>EhQ?Z$X;fOoW%;MbTEz_sbLT$>QqjN_!N&VD0r&|
z7~H8X^g?Dyha01>f+B17ZaD5_N0fX&1v(E%2MjD-6&BXvqFk1V5hK`<N`2e?vOT>E
z?2)gmx?p~E(H+TJ8>oM!XsT%y^kd8q^Goye95EF89ZrQjz{pu?Y}3@Y${b_x<TaF7
ztBH20qO6R_Y)=VWZSxx~Mqo--R0WSU2PT59jwkwQl7-5!PJWLLmI}{=l4%V0B*$*_
z<}RZKi*F_i@>vl#(QvP)qBvmyUP{y(ykFx^(MWb4A|O@U&+?Ya&)o7Z49R<Yo<%-f
zI$FoIRF<|{{o|~Zy+yi*g817yfgz*1b+7cW`BA5Ze3Uq<-xliBw&JowNEYB_tmo8>
zs`L~S!9R|l-y}b&W$JsggLCyYV}I0H|EYE}c79wn>W64~hK!?f`+w{#`0-XH_-5!5
z)<)AAd21!0WkDl&aIxKugK84vex6rP;c0w}i6P@iK;D}#?WQX+y3HlWF>l_`;Xc(?
zom5~n8BSN)hVqEgMmVnwqIuoEcA4M^4#X6`I5jsM(QusHK}8@4PZTZ*1UC&W(3Ev<
z$!ACpTR)s#@fiB(;Me($JqTX@8S%*3qLmT3XM)3?;vlg8%M1$%HKgo-99uWyxll0m
zAN=+~mV&?ES3|THC?c<je_0tmIiW&YWJ=TC)8GT8HmAnQ`Rj=AE(`T$WzPYw&R<g>
ziEyA%>r7nu$#i|xHFwWPJ7IIZrB18@Z=)$zY~$D-B-<=3_?2Yl;0f`iK-O7U;Z(w+
zVBUKg7#yAk+~?Q3XN)CZ78S+JicW$xacu1R(FF?`!FH)sL)02cSU!T<y)LXMN9;-k
zr`Lq^Qdt77N~v#qcndAJi``YedUxadon$n!Lgn04nGTD?96LwzyWOjem7N5T4W2T?
zDh_uW#&#aDhOaPmJvaJ&brtnJ-F;(}499H3JV^PleUjYCd3M&6=fZ#%CStp#4i;PI
z!~&mV6Slr%#n6plKi1z!L@(3(Au0)(4Tc|YCt}hba@^$+UCl01=?<_;v7~ZWZzSSi
z^DoWaEEfM%=49Ue5fV)~QGW;{Lu-sSd!7^)@5|Lh4dghVP;ms%)Fv=zkx_u$VPG98
zQh}w!PKCRVH^-}CZ}8vx33mVS2S;sf${KO5F<EmST7(`Bborftu4Y~8-hHGxwiQb^
z%$v}77}LT$+$g%4lf9C+gPKMd$wOU9pBP+{6Kyfby2;>e%lKKz4yxK94y~tc$7j9v
z>1!F7h}}Ia?X$<&c>f%;v}#s<9IkQq-)bL98D2Q%y~0mCdYHd!BU6`)(PTR&P45V;
zmfvK<Nn7(W<;NZ;DD~6m@fF%k9^2!`i&qV-1B<aY^9OU0>!>1HfqVtIgS(|?L|<c^
z@dNJu{mG5uUMKuO@XI}$N`pN=ZElevMdm$6K<?*dX)cqPEb6_W{l7JFU%;6e)TO!v
zX4-$2Fh69QtkjfhZ?oe>EvNMqFxHEGvGw+KONtt>4s`uj%~4uTR`z+26Zf3Duywrp
z+n^N1kEhXFVw#t!HMKVUk4_ks)l>dKUA53xn?DK7;?^1_gx?EN5&k2+`Wh9#Q1{X{
zXPA*7<I$}K*a_ckXo~}r_C8Om=LNlm1q4Gaa@aD@K|a?3^FwLGwoR|<J~dCsjQFYJ
zom$J%s$veqoQ_Z!1Q5=Z6pP+V<_{8#=EZQtKe;Io!2Dnj3$W(^eXXFUuwm=tO2ED9
zA}AH^20`u(Zr@mUeprxym8+?(_K~J=zlT+ARo#};I=LR<mI^`Bal}FB0-Vjz+}I0i
z&z~&ng9Z>+BjaroGue6wOZ4JSy+o0Hsy<b0!N241gqJviArOzP2KEl;!^hNGCt6nR
zaooI*sSFixD`e;iVTke&6Xw75OU6LcBEqp+R(Sqt(Ld@vb?u9<eA)}Ggz{*m)*siA
zG_?!V6%5;HP;{dlj^Ld{dei{#m5R{#g6y8L=Nd0i0J4=n^+mN@Z{ZgZPC^4&p}X30
z?8<_^eu;%Igev=-CZpW88eqp_{61h5$Za#UOPf!sV$Zt@q|Kd+!L$M4vZ)%UnZ%P7
zf9p$lsU(veCIr&kDBf0-?ecV#E8Jvc=3Uh?8@LbaUVDN0;pKm=6M7LbTCXsYKf!7?
zFRtSfv~J3QIhI>2%rLmNI?&}HtrSvGUytA{D>?d4q@?E!A|^&6N1+#^`peXgOh{X!
zd%cwcC(x;L)yMWPh(CRpCI-eNY)w!BVSe6Mkx(e5ok*m<xp1{C_v)<d9=6GLSxopD
zJMR{i8ze0+G(hd3`QzZy!q=kV8vNFMIqa297}r$g|8zAN8R7%@_U;ugppT#G;*$gA
zn6Z{2rt?(Pq$Q5;#xm-dP@OQkCufhKLsstJ)hTv2HiEt6MO2HXx1mpketS?B`2P0r
zJVQZ)Oci0A09$i*7`}YRR+q%3HDVPjO0>f7&Gjt)eP1g_T>l1Ul2{yHU;ax{LKm*5
z&);LKaGY2xu742ek+Qy>50ZKX-pd($b@sByP%J~$ffkH)Em2@`KnxnLx7dhNCDf7P
ziuo(gJ|Wz4rM}2+GkU;yfecPqrEzBGKZlZPd=2DQapbe9-t`eziqlRAHeri`Kc>hF
zwWn1cDiaDz3;vXTT?umEm&@n~b56&mBNxfk+R#5a3#W<0xX=`*zV6EBifppJry+1Z
z+$qs^5e$%izl<_nG=2J)%I2JJ^7sr}-uQl}?3&(Y)8=rmeyHa1^i3g}K<uo&a0u*r
zEgGdns?!Or6;cTjz8`jDf201oN#EiyedhG#hQF^D3a1j0)P)Nscu^*k&Xy^nUo~`o
zDB_vx)}>whG?zflC3bmXu|tSX;YBa4I(5V|{9j~Upv{r-t2Pcz3>|Vk_vf|)O8wAH
zN2e~c)$1f}mxF8fsE&XAY)xjTgkQ)NaoX?lIQQNkIRkUBXS!l<g=)pRhe77K4EOan
zNyN#{gmIs;*3ptBl^9o=%(iqFc0_w(&{cC|YFvsBXISjK*nitO)H^ip&il=-OtIMy
zMprVe6e3-UNfZ;dK@@m-&eHKt_HiMiQhx3$zl}4gruyA_ZNrBpu8TyfXhb$8{6s|3
zi`v8j!`IW*rMh_WK7X39>5!N>iL!LIT$6L)QN?+^K|x7#QBA>#ithW_(MpEQn%Ip*
z1k>;rX7TJ}U!_Tfa33TmtCM#9Q$oD*?NBnkZ{}%GA;v1rR7x7~jc)z;zT16{A_X^t
zhy(xg&@@^6g~DC7R2CW7VxPLbMY&{R_jQCo@oOS`<@}Vbnq&I={Jkj|&uS!jnCeo4
zFg~Sqwx4SR)H8?37aIhY;q)YDL~$97F*<;J8e%@FE)6k0JH%k-jeHc_NdQCH21gfc
zhVQA4W}cqnv2y%8HC5uPHd~#mZG=U*?}jtmyWb86$#CB}S>F~6?nb9Sw0@%FXQ~bv
z5fswPs|l4dY>DQPG8HYtxIdGnR$@4aYx8fo(#8?I>t5Ff)Vwy+O=HCK!#eiw#eU)-
zZwX~TrdG+$*M&%R*4=5HwkzOnPs&l+fOWPl3+*=sIfG@R-;C33Dldvk`3R!p3t`7+
zkrek0!xCdka27jnC`zhmwSU)xZ><~kNePj-xEV_kQ1CX}>pbyOMLNO}=6Nu%5-oQ8
z!zh}NZj$sqH^v=2B)x5-Ky&I|8f>UnZ+%R9mzN3#|7lsuLMIKq@i3b>5tSbj+rNyw
z7~g)iEuGRI`H1j02e+VOtouS;o&68N0|+?vzq$+@dBIA)&mA9dN@|~j-T%wV;i3-N
zS?aDHaQ-=6<5E7JCoyelsxPx0W>d5iahNmV7wN1{T?@xH|LhYNq9h-$3vN*>)nJm+
z!D^3+j!O9s;_Jbe)3Kh;B(E4QBjv*RO)`3jMN0qT?3k61M%ymhbt2$|_dX%2eqf4S
ze2ZztyMc>4x+mH@ZiDN$A#fq=Sm4=wVH?MirjGz=r!ml3W4HFuuebbBmx$-y7&g#k
z&E^bQZzDf#8PD)~u41{1JFI|Xz{c*xn!Eb6))BArmhEL5k+$pU`2`n*;s8IPBe5@&
zO>d1iFA0Axa6RL%xAivX#!s<4I(QLw2h+ZArrxCaghF#X);z4mX>?kZ1tXb_g+g41
zO^V4#7$Ykt&q{tjO13Xe=Y%|^C4y2AUeJ9ip<Va0AkqI(xrOK;@3%G7QmDHqLd)&m
zl4)Ms8}BaN!G5nblF)8Dx{#leK5otb^tt279eF!!9P=`UB{TQjUipe)M<)ip;FMZl
zlxIO{r%sziLb;6pg!(P?*1x<~303Gn&hG9=5+_BV>8~PMk{=iHh3}1$Z&4Vx;$C2e
zx6lH4;Mn5Zpf?*#P@_3X0y&s;!$!Y?0~Y@i4p+x;q#3iDbfE!q1fQ841nw*k<<pRW
zur#UL4YnkXax-D3u=@?8MVl8~MD9QsS*n6=)!Y#kw|bO^+-@=iL4@Aha+ohHQhY#_
zz5Cjns-j($^$V_ql4)w|f8x6~OasTEAz_kk#Gnz>XFpt@^hS6nA1>H|x)9ampXKDo
z;~2gk^y^yzM=D2>+h5#b3eA!%5uV<hW(}Nt>J;faRv#g@6Q2nR34{n=7atl^ij^V;
zI#44PQK{xGd>4&eyGIU2x2Tk0Ao1{zk*T`|PWnD!<5VS*QZoz6ZZQttl`x~jSmZNa
zhh~(<RGP9&yAS8$mp@OC&2%@zV!7Rw%KJ(_(WgElFsXg4DIEDU?P<w~0Rz6z8#fld
ztZ)%4Pzon9>gw$V(I6A`COtG7735B{+AjyECFiWOoAG>0u6(TfI`*{}RMwu{EkSJ1
zOOwlhRrRj770lpHOu5QY4%>M&I8ae*f|6~5E$ZYrV3iWOB}r=ArQZHpFVZ3n{i)mv
zirb@2gB0s9v!&TeFUTyvg^^Te7kpyB=xfP*dHG*4dH-v*-M-!n&Nzo02scU|UPDyL
zVo&HWu1GHM4swLgJZ!fxG=!GGgISEHAAd*-fSq=o7Nc1sqBo4NGTRfB4(j(%XGg1T
zgO{6UFk>{?#VCDwIsWg@h+P_Z>R3^Vj(X?jzpAJ4sKg@|@ajNBc1;s3?d$s%;gf)W
zO4}dWxG<$c@Eiu-^=KkD!naIO5fM2^M{A&E12Y^t>%UzI=_vBd`R4fW`9>WZ+JpH8
z`FPYFT}u|Y3`-V1jBDz`qDcKu*?LGZrEGV}DH*uH@?d?A(kN~R;`Z13u1P~P{b`Ky
z^Wuw>=jww=U_C|u#mND|*=SNS*3dGh{4^FhiV&{!!)%qO6~yVaQz{(de8Gb0<B}9c
zJ(Lu{k~tMMro}qH1?84g-Teys>qN{k2a9`?K}@P-L#Sc_?5FzwT`+Y2@0$AmclCe0
z^?$8m=q411*mTVRu+lSic)D`r9s2Ydc$oP1_NMu>JdpbG`{mJU4mbsb8lLkq(90!E
z27~!*hyU{hvKD@na5nH*YJo<eQDQGj|GXD4{RgDp<n9Dir7z|UZ;d*`Zvy`gMjown
zHad-cBn14P9{`IqCyGR0owh~XzB}(vWs-JX?~6YNw2P0Pq|7qUbw3Dxd-cO)_UC&6
z`I=V0ow@b?M51E?(;Dll`5GHKAiI5i>m71)D3ept0iLo5NJOcWm8NqCz=P|$?>11#
zjYhyexxTx-nM}V25_!AcUZ3LtziHD_ty%UQFq`_wF8TpK$`#029{*Nh*?qOE6R<(d
zf0)+X4SHp170UROE}|B!yNwfXE|2CH8{HsZvYqakq}=&r0{6`T7Uo-dwtUdx44_AS
zH@!IcV+s&a2Pl>k-^}4CbjWgBKmcI1d?fA)zmeicZq5EM)rhzUJR(Y?o~)ug<wzw0
zhH;P2ZNe)ZAuj>QrZSNX^x+I%rj_mrI6**)@WB$$J>Wsj13y4uG+(;L0MKdrVN+#V
zZh+M^O9l{9Re%9Otg$n`J(iz*9to74T+pFqp<-xLFuSXRz|$$E(2M=Huq)qQz(@JG
z2T~?K=QAN=RWReSDT4t{4$(S^%8Pfgagh^6iol~4%6An8h2H^CBtZQ?KtP#2_|xo`
zyU-aL1ZX3r*XsbG0?0kp*VpH6`qI?VBRL{9$#f!cXSf#vbT6&6(jHXfcY6W~y`*$?
zv%2?DsH$Y%WNVWKmqu&&GpN(mieu^OknERJFY^ls;Kw{o70sgN@2$jT{18J@>ZE}~
z>ia1(mhG1|B`*aDVSzG|vE#D){7rFU0NP7-fBZChOg6O2`L<~FDD*xeqTBi4z8^>w
zxEG%ag!4rzh~ISYmgkf16C=YO`>cfQ6wdGrJ|wH#8uN-c?Zusb$Z7VbKcTD#_@A={
z<bP{w2{7iJOy}zUdOmvz98v7KgwEf7@mCM=Vp~O_hrjv9Z|@%>3^fMEGegvYtG4>h
zRf99*j0HOq;0AKBso}qtJ2D_zQ5*?Gmz@V^zZ91DgN7a$gIn)``<burfc%N(hWfqZ
z0oHB>cV5DC^Bn@BV{b@+Jc!+7b9SlSK<rscJEw$rGz7>m<#h$b4*B#I!XHAfh_ZUj
zd8m7}aqHqBtG9<i@Rb{5y;E+7>)0VelGaO11_p~PLLjWKn{+dB-YQ7wAp$bTmTthj
zG6?6#hGE^>L--`(^JH`P?ZGVk2ssF{c}QCLdn`|WSzaBh(}fGGFr%~ZGo)G?5C0yB
z^r5YQJ+XJs_UP$=?@=gkvT!8NpSe}}S*B*rmy=E5bruk>0J|*$a2D&7JWnhFGiauU
z<W2|_AHQVZxO1E!>;F$4h=ETYrDCewX^BdOn!>)E*9P&e)OIGazWe*!X77|t3B`6h
zy%jB#vD{Cl{C~(g%dn`TwrxvENerpv42>X2N_R>l(hZ7~2*}Xg&46?&DBaTCgLDs4
zO2<ee0}SwPpZ7byAMdk%4aWd`?X}ms@4eT3?(1ro|Cm&I&}Zz&GYIo+6?p4D>;mi7
zoD_{$bs5|V{e0jvc0DTK`_Y2$c@0Ui{d~}Kts(1M0PtvI);e%{M(*}0q^(_GA-jv#
zZXE!T3<H46!J8;?3g?&E)+A33^~lv*W!XT#F!I&lCi>^ziHIg=yMGo*e-%qYy4asM
z<_!!}q;-o3w~{y|ixP=M>0S1F(%%BBfq;3K(JEl%811>|Y;MDF)e|RPem#au(=_1~
z9|vKyezC2h&mQ`3Tu1&nYBtOai(l~tW}X!XdPlA<j#mVpO1q;0C$!cS-Z+=lp$6FY
z3^IYJ9r=d0{O#yAYABA&Hr+JFrM!Ou07jSW75LJnlNL3dtt9yKs;^!kD)=m19W64r
z7~gRHgN6|AE-?apcfAbEJm&tHe)?h*7v!FDY37x5dQ{8gIp80xU~Tdwl(@{}`PI4S
z``e^6gD=&)3YG@#&CI#jj?SsK`?X?oo#aLtY8{0FWnIHe`z!n{8T^p{=t8oGyNOP3
z%@>DzPFcONZ-W;Qy*iu9XXHcMKE=F7B);AQT;^8o-Y=6($8K%+3v$uZx3N8g0*A);
z94}DI&zhFMbT+Bhl5-9C*I5^yt<JGX9o-Vq3S%A!%Egx||1bw2QiPS%yLq9lf6J7*
z=P-t=N<@VzQR;dZD8cj|04&s>^~W7D=sm4KpDTc6Xj17k4+N0DCIr4aAU`2>x$M58
z+`YspCE2>^(`K7)?z1O5wHJ_}$t8m{ZyBt*FaUsC913Ax?_o8nvwv%{YZ<!aOz^19
zEM#YV0|u>s`Efe{aMgMSU_ZW8;w9ApxJuna2Rey((Qf5E6>Dzmc@b9p^bipE8EDUG
z*AB|YB9no50K^-;gwip<b8HoWUpKd3RJxc+Nd5A!Yq{Fa_9RQXw74iUc((dt`yXi*
zYQ293V9HFY?EuMX`p;LD=U;@0U$Lu9%p)G`yqGshe-3%le&|u1Qo=&w_H`y#F8q*n
zdDG6R4&tbM%W6DeaOyenZ-^wnsC*mz>h50kJ5%I0ip;bv5z1USl|#{Teg-&|S_k7R
zKBg^P_;=E=ClxOqk8I%lGk~P#e|`iYc9A3Wp3A>=6i=Jj!WT5BY~CNbm=TPqFhToW
zSj>e>U|FbtK-^@y@{>Hk4b>|S+ek?&#@a_huZxn*#dm3mR9Re+kM>AN%r<g<)Iw<R
zu$G--9%NX~7lIu714xgtlb=l}lfpG!VW8aX5zSZrS6k`4wmeEGy3CWpBmX1cScFVK
zKvK;RMvUSnWu^oGQJcMQKN-Xc0C4F#5MO+?39lr>?%tPJ9%H0nC*WRdj;grq*Dqd_
z`dgd$%(kyH{_GzE?uvL*gmUn!n(_hQ&xXmFf56*-hh}h;K|xTl@<x`p$rTXp+fk3O
z6;A%qpg4l#>uiCuk7BO;<VJ1U?p(M#r-sMz4?t`2zkS?Mv&B*kQ5{n3P|+>BRqa02
zhlfKJR~deoTR`Gp7*3Gt529hk##-81a?<3%CwNl_^Ne$r@&xh+8C$y@UCsN;c(7L0
zAc)pcVk}bY%vmZT36z-JMQ`V3@8`~n+gY$Tr$9o1MNHonPf}dk1#r^bD#Vwr^oye2
z;>Sf-)%PipjMx88!BYm$)c;~`d&9#~>U;DK$%3i-*eT!?s<!+oeKcCK<OTdx`&Mb$
zJDyRNC~<-*rQoUqFodmre^$Iu$W(*4&<sHLkOXvZkA9|!ME7H!{Tf<LIe_jnUL>@?
z$@_R-pMT4(D_?bXUF)!l;4xvMbxU7Eq-IPGt`fai?p8*H2$c=Za^Qvqd7S{M4+=`@
zmvOtAjFkH1Kb)^gwG-(;aLK~esKLJFg&n=%8I=a8cddEsg^bkzT25Mi<EEEPt-LLp
zWR6>*^9~8;)pr$|r+tlDDwZ&!sF}#QrY*9%*C{0!qdE!6YxPa|?pFZ({o`R}{OBUh
z{bF=2a>leW*A#9?bd7h(W)NT``Km&vI!S|6jcKoJ>VS9mhtE}t;h6Gnh%<P<jNITf
z-OGx2c)$m=TV8BG3^U8bYN=^*I9!js7?wO0cmjJ}8*$eOyjcK~7N;)UVmle7fe&>>
zEvJkpp6B@Q#lzutaX@Yja1Z|Fb0B2k*hGBa1k&+W`+M$~cV4c%gj>Zta~f+ncQELh
zzYn<#UX;#CSq;`4kg+iPE%_maU$j<Il*Q!l_XmqHC#Ruw4OV?hmbpsWPFy88Bw;bX
znCuB(K6X{by<$?~;upJxOyb30>bD7#T>xgWf<4NRXD0;QA;g${nuV6E(L-5n)e4Xv
zgko|Op~9iRHaGJ(!MFdckmEUZ-f7b<QnxRe&Chbhc#^gEgS#8e<I`MOt=y9z#6@@4
z35SpVgF5jt=_y3a5*1*6f}V$^Dz8nMUQke0+2g7|pn{tb;;{{RRpRqB|H4%5@K$S7
zsiC2DQ{<SFplus!iQ~c$_4Y_=&Ogi9nKjh_8?h*#vMNUxd(Y+AR|tLySf&;As!5S&
zB;(38;=OWwDr5qU$~%d(d#Al?0Hbz&(RGB=9=MC52_=9yrj$^65j@84eDxIK>$CqV
zzYJ9m9f&yU1TW+&#UUw*oIWw2t3FI(PXb=DC&ZT$B43p|8E&+ZwY6sx(iS$ZNpT%R
zc{#!Y+YcD|c<+91;?OD(z{Ke}R*C1T17+n)cY|pj1TeQ?<@4EDN`I7(Kz<-;&XZ=g
zl7JR@gKfe|GY|Xm7A9d4Gw8ipq3w~xD;81v$8e5}H9(HEqlTJa@f+&VTA`ZTYY8*I
zlYtSw2VID0$@PfsPZpe$dnK=M7_6e-Q3?1f*^C?f0zhCw3uSb2JX?;F;4!)nfyPx`
z<?Nh8sUH!z@Zk^h4o+?Ta|>5=+MsP(3%Id<A0sV%AZ|bbCvE@s0H^V4)K1EMN+R0+
zJUmYPY*b(|%oiafd?Y`7mgRB8{5L*wl9?o2(!|crn%bh~?PNO>0n_)z$4{Ev$Bq!{
zMAA%&PC?INYd^l;*t|QXygdfx|1pQt=U3wAkrs|piuo&B$g1<PCDr>v8kinPzJ&}$
zy%A=IGkU9}tp^`m(Hl+IHbl$Mi*?Tv)8{+=PRU0XZC9=Y{$+kK{_0)#eZq3!7Slmt
zD0CS_G~fYsPOwgw7=4S25V*0vJnj0HH37kLcuzdX+lJZ7vIEw?;wF2*Gzb3D<G9^M
zlGKNmUtxKBebOvW%T{Qua5bfhdH0q$*HpkFz{#0Lptkc!>Wk+_{iUYF4<RWV@`$)C
z(~W4#AshhKe~~6IE>if)m*!*ZX<y`)j$@Hlt0nEaLZgQMxvfCGF?nY9-J-f^rP$22
z-pMD69~N-J6ZKAmzS0%3R4lX((ZKtaiH39IT&pUOts`lEJXb`mkVgB$EUn+b?Ny1-
zL>9VJ$ujzL`9&o;@BGUM=Lb<Y=nr4SW-dUwenZC00b`NK%GaZB-K}No2t!4_Sa`5y
zZ?zpxZHq81_%Sod5U1Avun@lukEazS^e$v`G2e$-Q+#>H8d%yk%Gs-Ce(p<4MeZz|
zEU)E&T6wGCk)QKy?O3*JrZfwV-b2uA5{g+BI#}Bv3_o-*dNlHBiAkrCtgJmg#dsq6
z-11R&9r*5QMXY1(;e*>!X%uzK61u=d5&>AsyLNsjk#$tRPPKrKW}z~O1Ws1G28BBP
zIGYTI5&{-E^1ln8kkl$gSQod%=31AwKcgz!D^J;zF+VZ#e%BWf-z_!<j)FX7`2$r3
zX@t~#(W=vXm+w9<8j@(OHK~U^O0O#GxPy9DS7Nr<d2aZi@&RQH1s;JNPPWZC!4`ot
zcjqRyY>nP|aDRaeH=nl|6IaiI7e^IgGl5hwxS-cSc3nW$ngY(=YJOa~oA6j?@}XmL
z5zeK`XE5X?!WL1LzdqOwFN^q^n~B-7S=3^`LckesXmi=Bq$o?pDHM!Kmf1C!QO$!{
z{K<Pq$4aF5up<R0Hw@}$CV$6DqG)|hL?9R+A*59U6Ac&(AmYM&irAap)zX{gpbFU(
z-6`bw{)*6FX@=AO;h6&7gWlO|c#js2Fs<U<YnJArpVU)ajY8g&_%s{SvSD+x)mNcx
z`XJg})9G<sie4uTkVAWxZa^yug`U&YFpWkvqeA#Y@XaQzwZiE|^_2<v6Q6Sdj$IUq
zE)|n~KP9|zrT!?Qw03HefqIhiiQcaL_eBE*QL{-M1=bc0I&oIA-Q;)~4eZ6uS1_)q
znXClzft?t;fiEHaH6|wm9*elypjf7uJ&Et-xl$E6>YsOln&l41k8q}K`@)ngmV+%d
zvc|yQI7`IilPtE&30~Kx2cCOFITOO&Fqnv3x#yMLz~z2vaho(M>2TaJIsVKVP6%W0
z_R>$<rWw!qA?blv@ytfEP817ufv3EY9LKjZaC5;B@~lMB03RIo&sXkOW^oG-!d&wU
z|5^wq1f`51N&;a4G}-GCx_Ni{T~V~r;Pi*K(*DZobl)tXO!^~~Dgy<B$3|n^#}N0p
z;}|;O1%GhjyOJC>j`zvrk`C~<{<_T0#M{a)*3jd&iE`GMmQzyeM@&3(dV3OP;{I-Q
zGU@Bu#oVC}P2y$VTWg4^^6bC(J6Q_pv>|_h$sen6>MT@fNY}&s&|nS6hqQ0gC_wEp
zDQ5ul5-QDq54<!}@-3^gop+IQ0_rxzN!}^Xu+QAc*_q`imW!?5FznzTi_}pAS5$C$
z!}b&u=&glTqCmM+VMl&D;+ohK%1yI}{>0GJM=jAfkX{S=?6s_F58Q@CbMP1MbLvx0
zi?c9!$7pPx)r#$E2krxhRcqefHz7{2FnH?Z<8`gDOd4;QXGUfbmRz_7XSIE9)FQWo
z!pRq%S2|{FTBTfLj(I3{3valRf~1jl*AK4s8pLoT$psNR)g^}H4_+q{Qa87aPo;*d
z+dZ?qVEh}?1}QloslojZ!L2FxlcgE0|G6jlM*0XFnV`3X@##CZ^w2Q~?~byF<paJ>
za+X3!1oiI+LS&fy5t8p@UOpuYlliu%qkesoSIgW%kwM0w7e_d*l0^W;`4WQFo}jMX
zkKG1>S~HolP~rG?A5Tn(tePF?eDIN-vFGWjl8OHIHddWA%JNbLGp(j#MnVvia)F>o
z^BrO=TB79YEN^hujuQKGn1iYGM^=#DW);XVnYaUbU2Jzf_PJ$BF_Bm0DUGDcP*vsc
zk3V0Y2+4NR90kvvEGfR4HJ~#x&=^*@_Tc9cO{ra%dbgj1(bH-+lki5|>d$s&tXZDZ
zEJ;^E<i`RPSO32Pzu-{iMS1L`5dYU*!{av)U9}T4$lFT4#uPD{UH_g#!E#6K^V*%P
zJtqZ;l06R^<`(8KA+Me+iaA+z%TOUG<!5WSt88QSF7MkYGbhD9$om*_Cw+{n&z2jV
zb}swLL^zFbwzFXd{230cx=V!<QA~LOZHWoqU0%%CE(c6A#^E2H5Ro@2N70JsuV?f_
zpG$9e+8SnTz=*J+3-}FD{QS?Plvisx`O<i!C<(5Fu}GW!hR{{*r!QHQ6sj}S^wB?-
zeFQO4<<?!bTQnO>n})14F`v)(e}d;zT!~`PyO#`Kr_OPNW$vyxzl2DzBQRQsD&j3h
zL6<*{oS1vxub14u&^2YwiKh~;Y>DT`?l0?Fnw8yFPiDfzBc5@&(&H)pT`_f<g{HS3
zF80gIxuRV8L&&ZJe@9d=Wq-Fw6i600vLacgH#5X0bQw(SpQjmmFp#$qBrL@I4GS|X
zCrM?1{hFOzcu!z}l2*W>+X&0U$7ER{N%6r+d1j#a*If{c7%A_fn+$i|YX#%8l#KzG
zg_v}9tgsIkEZHA>6}dMJ&{$U?%g-0kc4UV2`neaCKHrJ-z2T;22e(2syccYuu}^I2
zr!2>Xzg=R}AK%O=yIwKgPB9DazzI9~u4Ca(-DHBMWwFU?;^)wF5fKx~u{p!k>}4xg
zpN-koKMAlQjQZnDf7{1f3Yeg4JAWxW6~{gCSVOCf?_<~HDSVM&S&aoDL&n0^^Ss!L
z4;GS_z&l%W9sWOWNk2Ld8ZLyHCXIg!SSqo@k|f|No-ocw?ke4u9?CHp-$xM91~-5V
zDHCY?@#SmxhN5W|aZbxZ49TUmEGeD1#<7<)%Ys(=@wgv#ZEH-eGi0S57XB^^TEg!>
z<mFRQ64GBOBsV7r(GGE0m~SRHin&_7M2m&6;H~~aX^herkr@x698s+JvSu=A&shlu
zVz);QBSno|c4w0cDwAr|rl~WORz=?@g6qyKE1_e8!{@A!Hr^K6w%jryOtsJ3_sKL0
z9Gv@OQ<7M9YJ6Y2YtuASle#XS?)yjfV&BNs5q)2h99lqpSL>3u<TQOM!RAA!JN3pO
zrc#7{fFUGeKsCfN-f3}MGb$;hvmjS}c&p3#JDb?Fpn68)Iw@Q5)*X`WTL7#>rVDB$
zPsD2!p3tx~{0&RoogfEz{)+)Q;WE|yY-nhUu(djhAqjYY`F!%T+2T}<?L91YD65;v
zv+g_tPaHIp^T~?K@2l5t!*eafR$wlYAc`v7>RL?4Z=M1ycoj%wt|%&fG?j!$@ps`Z
zCT#{$P>XE5$U4(x@t2Qz-9IMS5!htRECPw@VVV&z%4w~h>Z@1FOw@4WM^PxE`Okd(
zjEPx-6Ex;^r1`#n%|m(;G#h*p;e5F*j7B{)!EYp_I0msdz`C0m>&C^R61}DNa~w(!
zjO?->S;x)jk+0X}UPZgj(OEF;e=^5T6M5aq5Je&CcCScWgX5FaLcfQ&Sh4w{0b!@G
zBr~)H#$y1jVk(BeULhI_`#fW-+4wF&C~O}F49HvmX|!yGCz)~rNGq7vmU&JZM4GE&
z+q4+SJ|}VKMb{l!>79(V4l>z^%q_B>*?JD0EKGGHep2@Jt%Pu+FTzXi!E1Snp>O^d
zhM!MP2aqO(+=D+xdP+%(i`v=KATKY2eE6-W*)YX7sQuDi9veIxq*~ClEXC3^T#Lb9
z*VGn|8R(qG5EY*)OoL<FY>rsJD~=jnyk+wd^q0Hkykla2>(@B1A|j*_HM_wMqhK~~
z;7PKWduLtgio)-86AJt)UpuDC*b%9Wx7C5~9eG>Zr#d@nB>LD$sE2LS;W4|+0Ef@h
zt{@F8+63prqg=+DR${)j`yG2Fu{YVLF;b9EB&6Q^gq<*+hz|YwsxPf6oiSFY4HKH+
z86WJA`%UDdwp2+|c|jSQ*(q7*S3IsA9`6w~Aj4wzx9<DcFDD9d#h->4k0m`|iN5W^
z<GxJc_^A=!Kbg}YE<o6<YRM@~Nlq3hE*jFxLUBF)`;{!9Vx{}i>d#t%j10e_UH{92
zN1gZbeD5PiQ3AEz@p18g5FSaNC_n^~hRiiAj5rCl59l%2<ims4iA9-JM~@zyNi9JF
zho57DPV|FU#$T<CJTLGPpF-uT$8_&|`9Q@!8#2#iMp4>oed@N}h*^(GKxU!$nlV!(
zD?o-qtSQ}0@<jWeuPZYkjNxy!6)rj+nu$Zp+N&oIKZdtR0YEFSQWXB?C)3d`a(?It
z8)spZC_Nr`yfXVspGQoSBjcV1oKlp(w1T>=+x#Qp4t`Wxls|-`Q@ZyV&{VKjCvhUg
zi}W421emcM7m`{KT3KD(OJ!a4C1v6$`g+&;zH-s;ccM^>Q`&hv?vuKq=U{238MIAR
zs`T|;GL6+jT5*zrrcX>LM(Mhb#(B_VZv={g%c-3nlTcK~6APxHeAvZsFd6iYE)-#<
ziL7t#G4Flg#y4$EX1H>seJkv8HuD_kPG*M&k);uUHAl6|zC<Hn3nxdDT^i+&Duew4
z$D9~$`bh5UvGv{RKT|W62!7j#xT=#sf>HbBb<U7KscBFh6oG+2Q4eCCe>RYM0<S)@
z*JZzY8MHbPh<b7V@tI_*{EWPi*_u4u(*W4PEB1|Ts87%-X2O`iBY-SPeD8eoYLU8S
zwE5e3-mh#2=^{f?M~O6AjMNE{XsYBLi7k5BFsJOz1l0ORC!6G^W{O#52l1%xmyB01
znp~}j)6iD!XW!GhX1^kz>eZ)L<2p@_BZ~5N>|jaAV$)T>x_b89ZaMQ4LRYg6sTVKG
zUr5HwRDEuD&eNQ@l=RCr{lnlxLMxZ+1}&>Kl=|Iqs`j@hqQBh|-5EG7@~SJP9|;aW
zkP8@28wg?$oxK5UGk|%_$)bm$to;zbr7PzP{5v7D;Y}ch+H*N|8EpwY?Z%O13lf5m
z+7KQN?WNnfqFj%8BLWy%g>A>#ZiscCz+{4PI&yj8{i8bN9?p!H>VtZZ@k5fe;!VTV
zo_8K4f+(=$LLRZbjEG7mNF%sY3DVS6#U#LRKdeSBI;ZNfcsU9w@5W|R^2~n=5^y<y
zRS5FO1Rk|0$rif`;5shApJb!|IMC8&HY-_DqChcO?1A_i0-^1n$sJ{;?SHb!618sY
zB}Z4B1)MH?;B2KdPk!X9^BsoO5m{U4wu@Q>)kRCmyXPj(>FFh>n7KMGm~u!g#ts%g
zEDrfhf7<z+{^jxE=f~x;mW&@2l?L5^R9v#^#uv8O$Kgt>S~0xBJyZ+K>XE;Q<*2N2
ztt{Mw5>r~Eg}Q#dSY_vOw~Ius73ysxmV3h@s=L;wnP~%%?N8q`lL)<vQ3xl>|NDdp
zmp>z6Q7AX1Z9V>o%|PtjP+>RLN4$l4YKS<2km7=};tErm!jZx_7jIY}bQO@uP3#xH
zGO>-PL+}SRUo^RA?6>_2Svn-c1UBnaW){lDd~N_BZJru9xsG0lrf<wl)H+t0G3PS*
zDJYqWXbAa00929|dP%Sn=`<j<z_ku2gU{yF+7$~poFf?4Y;T~yg~U{nW8ShqL#1X|
zOGrH>0bgAaERK-VP}wm5w2bfGcYS+6NglUi@!Z4Zl#O=5SG|v!r;2q+<?AM|@Kqcg
zQ-T<!rG$Ia6Fwc{yp0#sq#L8f5&3`MZO-U8<rlzq3G;c9;r3>|wZ6?q-R{RUAFlH(
zW6z&BBp@1TaIQXP1c-aX+1j<Xb1l!sB{ACyT^ym-LpG*|(R2kQ3rZ10pJGv;JP!Lc
zd`2%x`?r)6{~ilnZuZd#yDbDI!>(#@PlEi+1P&NQ*Ch9(qi{|~T!X(E1t{_)Nt$fE
z=w#HWk1H_filRRMHoWk?{t~G`ckCPZ6^33kux(sBdkxItz3|%>_9yj`1#kBg!8JBe
z@Xk_^cI0)%4P**ENsd`}B+MUB>#;R59iL0j3`gZ$F^}Jr_q*S%r(88+`1W3>bs)~4
zyI@1Ig&PkB2Jsip=ta%^SZOaCtcDu5!lLwBA+*q#bN=GzR`Np^ehVJxm;ew>Ww6wo
z_w9ul?Wj4HYv5mM^puG8x0dN(l;d5Hy2*%z1Gn%SP211<WZ5y1<Vf`Z8C#=JA2TOe
zL!7W24`VE|B()YTGlec<ESc;B>-6OZi)JjeW`D977wMun*YSH_j&TuBHleihKq&+6
zLeU7#`N61m>cF_qjYT$p3#lF*YC-X;qxbVNEu5qt4*?q{0kw?yq8Eg2`1Ge(2h8jN
z!AbSP?&}*WJ$~@^^PvA!Z|w;*z8}rNDj;4OXO&isg#@f%jRxB%Vo$VtmN;1k45DjN
z*ahrGPS&MpP%$IW)f`P2DMWW<+$UbI7@vjw(xpjhQn85RDUt&*z+Ic+JN!NDKnk87
zB%$rp8)k;hl6ECK04(VrdbLzKUr5i=+gKDfVH>r{%G#4pgUkwRAZuV(WAZ2Xo0^ZY
zvC|)>=LrfVcdU4+dVC2f-`QopAO+rdf49o=cv$w7OE$CKyG41efqyFziT6>Vn1Bi2
z4k$@7M?S?g<_f6~aq6|H8H6Y|hDqpE)bPo4&i?w|*3Up86YMMsp_WZ`cBFu>-Q!ZQ
zCqr$WOW-n9<IER+p}dv*FKR4snj9(k@C=E3o=bU~h<}MC4%XnZ-4jr6PXChk>?!~C
zREDC10rpejN()!n_gNj#h_S>@N4U_Zy*y&BRwl2?H4$0a0rmt!QpNdSQz1$1Li)(B
zxybp^F4XH?&}`=!r(16`!Bqi*eB^KRgf$^!%!6`_f@*@}D1O&IyVy{u<k*TMa#S)F
z<j?n^V8Txz3d0Zj1u;QVY<6a}D`l(jkg{P6UlkINjq6L~v~=T?zrwc0pfMdZjDr*v
zRqlNk1fR?pq%siO<LgNiN~pr}S*WS;JxS9#Ba(vobF7YyNG8vH>O#Q&7#2EKW+ql!
zdib@JoBoXEtCi2A_0qjvxE+m0!^A$D9{QY&zg-AB7-OYiUxa3BI9`t_ZwmS7;zrp?
zk<T)rhZ6lb88_vDDa8CJ(|&SuJhyq#LL=vD%6QZCtoUHP@oJbJEhANf@rqvPfYC$E
zm3q3tHGzE7#Fn_j8?9FHnJ~<P4`zxA&T$Zk$VFg-#lw<Q_Rz!_FW*Y8Qckfic+w=(
zpLx2a*|4it;%}=Raz2FTTjvLsE6(Z9aYSwXqEQITf~ZfHYrKS(tlE>uRvwENsb6g7
zNN2Mpf~y$y*OJxFR2!q>(eIhWmAf;r0u9{D0^!CIg!62J#^Od*pM4C7)aLg=*P%g=
zWIMeroLtw83Voe}Dkp;(YwKu;=1&d$gME_;#SP=D$8;+9eC~g!lCP&r92NUEJY?U=
z`5t~gcsVc+W?<DSKKeVB_>m43);ih>^Q^+3YmTzyFLV_8?wvA(W)M6mILIu{c{IaF
zT(M0p>?pB8m7k?`9d5)`-?5(W1zxBZ-!!4^-@@ciBNTQ*;8hUOYGSEmLG4*ufqF2I
zuoE;_#aIibmTRo~N|!!(#9#+|m4QkvQyvA^S@qr1kak7!7A^nh`Om5^;uWSiU4rmZ
z<tp&o5kxh_Z3hg#A9~*cpNrGFPf_V9>BTg;WDT6nz@P3%G!<+9ze5V=JQaC+gt%?Y
z2L5RTk#FyYD?{S>iW<-Z5swd;(+0v`MfSiK|9bSVi~l-i)fb3pI{+`mxD)<@U=#B6
zur`bLgtYx@;yo*>A5=fE%K$${V3V1WvAmO=styRO`25Xr{KM&LxOn?{Syq<7jnm#8
z+GOQsHRAs_B}*Z}|7w`!pZ}|Y42k}4i|=-L_g@WLU;h6#<{BCr8lU4~_WV!(=#Mwx
zK9m%o3pD-w-N{zEMH-1Tx~3cO12XgbYjGBMHuhpGlthZ-F7~)57;ts-lG)3afJaEs
z&;)SvMKk*UU9|gZHTlnBg@e)mTqn4?^SX>ZA|`kJn@uRjpkTpyZjKxS(QRlPf;jWm
zko5MNe(AF1Gp@r!x6-Y-YLdWz&Mn|ya|RaAw4`r8eqI7b0vLlwZ0&$W+E$MHIOkEv
zrMW$d%EYNw(a0uV=!eYU53XucC?G-wbl7z()gUeNZB}VFA#c0(H{jFhVcQXv#^iAy
ziN*Wo-x2&G$ADT_Sw-7n>zjgKf11{KW;9-ywH&q{{0O8q54^o_J8apZvQ_D8A{A)*
z=}^v}RD0Y@m@ZE&S|s?$I0rb)8$fJ}`vV}um9|%$-wAHH2NcOt0d1#7iQ{gpHy<od
zhuL|3k+sTCIJ|&!8JT^hWd?Mib9z$x5TH(ap?N<0rKilY=Oc$O`cQu~fSRbZY$mJy
zkm;o~Fx63dY!w#r{TjeNjKAeVf6BejeSXw_mX@L^w&%OB6i#i9;H~uo4nciw`f*AT
z<{(`b&U*3Vp9<OZ<Ro52#67haP)r}02>4siv?%NsE3{x*&)tbye*?A&#-ZY%b!m6C
zfBe09_e<;#)JCGkFQDZ0%qBtf?QeF1Y=H@hdXAU4xIA6x(^Eils^t+y``Ng7xKrFg
z7g5#;prif`QM!2iEX~k5x(+aaOAn5FVwY137NmLjEJ1WTgCCGpqHNwuGx;I15%&sN
zH@W*y2m|k^hiU@w6uaZsJ_Z~CQ>T;}JC<FC=)eAMqb5KkgwHb)epv(19*#z7L+U6J
zab(RYz*p5hVgXmq>f#-;=Xrer$b>Eqhe}NuysV+iXhNRmf=QFWjCWt6f5_s}7g2r3
zI#5=$EHxnQB_aamJgTRuGD5QJdcT}d7|_hR_bs(bhySA*+<;PiDqu2KF9X)WYt@&$
z`$sD+S*|F%iEn*+6|=(DW9GTCm9bu3{^v5efs$;3YS~c&^($17DG*sZM1Tzl$VvZ0
zztS-YTK}O`k{fq`0@CYosT-u*-q-ZByW?p!-U|v50GK)&d6RCYkLfOPG5ac(@;A-q
z&RubSfKO@4juNf2p1!H;0A^2NqLlGykEw$KFMG}hxfVdiM-411eYKgAb$e}SHaUa;
z<R``~?0JpJA+VZw3Uo%_N4C@0+#Q~nMekQOtv;;=wjzVG-?v87!P|Dk2L^ykJyYy&
zG<FsT|NhVjK)<@40ZaG8UE`Z&E<pN+Qnl`*W`6bY)bD8aJj3^Ge;ReIk`@ywKiHJe
z;_qk)&FM*&yQQe}<FD<)YEN)%EptB36Y(DzOGlA*!kkYz#psyNayHz9J~kfo(ET9|
zrMQizgvOqnR8WZ>UgbhHR(uXB!w;|AwQn8-w(jKl#+(?6cI=mxKNOT@l(uP#(W@)_
zP5H2P{L<+u=?Ft0`h>y%m{M4M2Pv0x@knLkeQMfmOg;T%<t-|&Q^Gw7<+AcFlRO8A
z2kQpaUK$etmy|9mYg!%0wbL)TQZ<AZi&hn_i0M5c{R>w%-9zw|90#-6F(iOOaWQx-
zKN;R0z$w40nblQG1w`_iu#r9JE%7$W>(HE@F5o6Q-GFURo(D9<m4SO>O$(n$=v4f6
zo@@xqNI|7YJgvr&wnb~@2u1929WNtIDVzTI#T-RTyUBb2qTfhr?#FrO+aRzF`QggR
zV_Gd!4fSHjPDfJ=6JgI^iRY<?yhBk9=r-PEuZ?)Oy!KVTg~<+A??H-J>N>NASd<eI
zXK|*?5yOn9ioAhTv<OF{y07eYUV!S~zVB&n!cY=T%Qk>ir5sr=OuexkgCew>Vu{do
zg@^s*uKAr?7%J`2QfpotM11{{t@G6YF(bdv7**YcT95UPA3qxwJ1IK2UX=Wj-k;dL
zqw!+p`zYWVJ2*ac)sb)P;uClO>Q?(eC|2B->vG!am;2_IhYH%IOYjN0{dR#Rr+QY;
z`i}SON(L9HJFt%C&ZYNllp9I7du>%Dv!Xx@vKQSiDTG%Wn2ifp0Y-ylwh4#%C|<2v
zjB7FjbW|Ji37N?l?@0$k=vjQB5>jwSL3-H5$#FfJod*yNZ1x%OuG&-Vg&18#{qj21
zf-CtDZ0bsldji=fcy5vxn}KV{v9duQ7WWo-%I5$1t`I+`Lxo*q?vcQ#C07@vw(Pe^
z!AxL6#Lk5dP?=PSOgK^iA<G@~=}(b11>SZPtagZD>1zDU6r*k9=I#bruayZ12aU)P
zKGS14<SfpqGw5poRv9%*=8aJg0+_D8ly&CuKY>^jd&HUq1h7J|Lz+c^w@KvK%=?lA
z6R0P`Dv}>Cd`$)95gSK=_4THrcJOHyhhmxU9Y9R-=ra-nL7%L->osE?OSz6ReJZyv
z$dId|Mh>6lg^j1Q`$<O&d+@V1WZl4WM;`y+V;c&e<Zc#Bjm{!Q6>Hm~Us~&iwlKvX
z*yQTk$TAwwWmjh%{isW(*SiX#GIk@+noJ?Z|47B+sjtctO!a^=BcFzG{-jsSDp%CF
z=d)YY05zT#TUVzdm=ZrpxD$!0{qjeJ)y_4K1v5hILHRrP2}#eBjnt-pT!YH57|i^C
zFp`|6t@Qb%JQto1tF=2=t&ZW%Cmn*0x;29P+S?+L*ZnmoCxf(!?R%+r))p#=tZv;;
z)3oA8_7Z@YAZ=iFtovy3+OwbMAX>Lhvw)Zkip9g!bpgd%zHdo(<hB@%t!>mxe@*YQ
zF<%xcKD6ZrCOgGn2fI-tyIe(LTk9Js+P~;Lrd7|uH-1jep+v%#eUc|OKq#_V@{1eo
z=zVFx$%e}UUGu+`lPa%l%vwVaE&G6!VkGM>JLED)VNdO);3z=9jKY0D-*u+_k1&L!
zvtO8$xt3EL1@Gjo;}%Aw-*Oa@8|)1Upt5da>hHPkFDg1^x||$<(d7Q<aFIDi2ZWvh
z#DJpf%vuj{>4)-Bd`7ixaDHrkX!!PPB;pfl@X{9qn5m=ziN+EX3M7m(QidwE+B}ir
zv@1KBXEq<>M&rZtd|~aU`5PbE-^c7p0e3o6ILrA?TOvMe0w*QpraPINn|{~icALa?
zEKUEEN2#d#?-)X&s(rqWUs?;$hRA5zrXSk#ScjtUX?R=HLJ^p>MbvkXr1j9$(p$Nk
zZf<9iOSmky8kP`@-Aw7Iuj|9Wd^Lc}kGn6s?={L9T!bPD`3O%a<Wee!M=bOH0l)+$
z_`7j*dwq0rf+ZwyQ_0^=674|zby!7lta$rJjeaq4-w;1d^{o?ft)m9D-CZAuA4*8C
zv-#3aR+CPb=hQB~&8DpTbq0O*^UaRSo%HgDKFWUW5B(tJW2;lDk=gtXxaq<_88aNr
zoqvLzIPeuN`1$caXaxRyQ_W(XN&H;We+KuKyW@OX(nFW1vFUdNEmeTxA>cMM$`5g<
zFV7^3c{8|P??)OEDjkzZC2-Z@g9G{WGf~oWx_Z!JY$NaVL5LC(bU8rK`6X|C$S-6f
zGi4*Hy$YG{7q6CQlkb!j&s1kMA$ck2G6B*8ov#NRf|A(VZW9l1`46$qS>|Kz2idji
zvPl_iop?4&nk;D@_)p#QeoC}F*wlAb&3)_Sq*bwFu|oEX{(wtNZo1YWKt2893;U^(
z2K;Z1vM|JrPT=kRY}gv)&)$+BD$a3Or-J1Lv_$ztGJi4f{x+7TZ_Nqj2SSp{89bBG
zT<<bX8z|gOtUNQhjPlbp@e#hIZKHedDpwiDO$6^2AZvmzKHi&hHyc@7WbXP<)xzBR
zzp)OVfLGN_F4>Tk7$?-`u}82DSm80=O9JkJ#-qL*uE!lbC6+Zm*CpD*v4yMI@Qo3H
zs$#(m*dH+(H*PNSAh2&!l$MmomXAVmSTI7W`aOWVlZcP*9Wsk&BywEXk#ue<Hfk70
zISJKIAsT)zsXb?v<|^wk;S`v_ZPq)Tq?A}Wl@OV2oEY8VkxNL8piPjUE~(mgRds@Z
zh2rBmZEStB-QH!HlL8LB-5(eFNVzbTV|ys2Z59}xTbyB60hXMr&UuP>pprCra6?MB
zy_+XA-Q2=}F+dCtTUBE4wpDmd!@Hvr1Z@4A=jGGeZK@ASPS9CLK}^%v%^^E^PWmZw
zns|DDWekun>r>y#V-&pO&trM-eq{8f!WHn1^>miD|ITW;0i{E}2j2r5uEjxT4wz~>
z*6IWdoxyr;T45&os2u9#&k=*#uKPxiIEhfrSC*Wla_F~;sYkVTle=4fjoef+1WMs=
z;F>nfCYw0?G6JO>w%Me&JF8hAgsXNRim~^R77<YI#F7_S>8XpoU6_BM$SZBt6o3*F
z|L&tfBITIpHxvLDs(xLs;~LgJz}=|1uvr{Le&26h2PM{Jl^U-a_(NbXas55N-)QVh
zNXB8ew^PsI2;yDSUG~F{h{4gzsELZZ>+HbOArwKj)-rQ?e;p$CAuDO9U`J39=+%`!
zI*tU4ed^~<fB^Lxw_|ztN?_HF8cv&50RF*lYFbzat)C-k%Iwm^+U=y=lA1LKX-I}p
z%*Uc*rUi>K-6?kAfMigLpZ$9p=8YKMVfl4SxXM^4+rncvk}F87B5ATC9uZ%+q#1RK
z_qVI$;BSdY!EZ>UZ{odq7hx$RB5EMIe4S$rqd{KL@~bSXUFX}L9?5}31V#4lCi~{H
z%WXGw_=i8{*ptQn2%#{lSonRh^sRlZHg0Kjk{g(jHrsu8N?<X>G*`6VOgN40bv?(>
zmeG2l@1*^DqFv0<lRy>Cwhs@VCedxnT9BF~vG0ON=WMYYw1pEN6D6rd?a9!s04~M^
z*iH#?x`hMdTT(5tafpP8ed)E4v+k;Xl6X%GQnfkaT08IT{8GxGu4~`wj=wL>Qh&<O
zQQr*kLXpd)RD((M33x4<*B&H%;KmG7d7e9Hpww0Xl$y0#j2&BCx6tB7>z28*xyv-{
z(FXZ?3eIB%VgB9@|3oCIG*~7fIy9PoWuD}!?IAyF3(hPh<WQcU`ENgNr-Hc($Y1q3
z1ZC~OIHC2dtnsXa<~w0?)!OwB3D7Z~41d*z^bILilGOT(%&5Q%>&GihH@ZV3zo{bn
zsT$<n*s?*)kh+h{LP36~N3oc+y4lf^82%$|*2ep9g`A!-wzcIHYU)%QW{@9kNsFbD
zV-0QQj2dXZIx9Z<&3<SvfYSlXysFRs&x5bbkeud+($6B~+SqJ8MG>|!aTu!VK}5-h
zf|?=FyR>sTnRgFaXu_4_bC@SNov>|#pY@ph(ktK~z_yB(BQ>DIAIJY*l|G5Jna-k3
zEk>|O0}0aQz#-V9D6@ad5}+8~?U)DFv8SUTtAhOs9%cDNQL4YfkLynLozg{hFvfTw
zu84|>#J(`<!x}P7&E4@%CAd9L=DmF{g+sDVm8*r~qgnUaxX?`+j%!j*GU&One2>D>
zAg(>$Fa*r5stHR{diq>Tp#-xVh2ctJLTFl!ul>=1p8^t-(v6Bs2`IBejE^1;_nwLU
z>E53Ym_~DPz&qdX3i_Q_!w%hXsk}Kblkm5{EWT3VU<%bN?}4*oKUtCusAaXKSi>Ab
zr0n3(C`(oE{&-sC7}UX)P+_~B8Bjbdmn9eE^zwI}`&g{$o)ShhcbE)p)DGTXmDIZX
zRlF#k$-baBfw5CR)Qk%uI4-pSHVF?LpR1VTs&kTs&~|O9*>CTLSH{XxemRo*6Uig@
z_QZF<#=O23b8IN+ndd<lXN@Cbi#%CMvHVP)H2j^ry5@5OXtpcO3uznL;2Ve_le~iI
z-2$7t;hWUgF*!Kv*>A@Z*vp%rgkp+g^YSyvP(6u784gKE$>l?1n%P{tUwXv1zr=_(
zTd!6!;Q1YyXTgkZ;H;%`i!@gu|KW1wBB=@OV-w22)B7M@WUuk5MH#NfH%W(OL-}I(
z?@huz)N>eEcp^{25L8+i-ct+2+`=11*56PO;F=V{F@0od2wmA{WK)35<7f|CVn~Ao
ziFZ1Uiu-;5Qg(yg1wN5PFG^J;=;X0H-;4tx9Sxtzj&;RZtkfWO`jH?KV0!d$YV<}@
z+iD@4o)5#QR`~?1?e4I<`0&XOXIL>^A_b@(6FWQ$QsOxTlg1QpBsH4)iYR0t<%I&T
zJ|yWTJvJpLKBtf-*?k#6BB~|rKM;xbRdW&{j1NX7nH3Dq>vUPa@Qr^KQL&Ye@ujRz
z^hA*G$(oV$nT9u8KwehX(GYu*3?8vcyPFmsvO?}~sJN|y5v5anZ>gfCy+mQnCC=^(
zT6VMQnCv}5l}m;EVPV9Lvca~Xw&Vp;d<*+uWL_>fpoaQ{wLuX&5<PY*)n-|k5PV&g
z)_}uwi_KCEDbdB<Bm%WgU`E!akdx^zLoSo*A(797=TD<=&p0n$T5BHiF37FF2-HlJ
z>l$v@b4NW~3z;Pi_}@$p3Tf&#=n*#IS|!jAH_l&Ut|Z&s52_ZSDxts){x)9ELf4}@
zojNHlE922=3+}f6tNU1OJh^gkM0mD6z&0FGen&%3BoEec_=t(|>iK+z0o?KF)n%DX
z@7Zz^g?GY(ybz1&WJ~8QA!Qpm0+kX-4Jk3Fwa}}M?O!jh!jLoPs(55+?v$gy0tOE$
zQ+%X2<K%QXxkvjP300op<LoXF=n?S?dV;0Lo+ryQTffO%rj!y&?uK&=bBq=D({Qv>
z@Y@@YroN~Anpe3CJ3f7MR{aNC_KUX8?8|+lv9R6XF+(D?b=!Ix8@FTb@`9Fcn5RW1
zH+&@dLZLC?S=t{=r;1UBiQRJNMNh^Y6$l<_I2Gs8#(1CYzLAgdytb~++hD+JZ}oa1
z{GsZhxO?4FGV+vwMOwXQe^s^$@I`AqmZ*D;&6N~V(R#M$6mB;oi<Fg(1V1T|X{{}k
zB6Mogf`=iW9`{i!IZ3oZ#0SYIqXr_cBH1uOQ@CP_iA+y|w=!cqYuW$yTFfYTDHb{2
zzxI0Qfrit~c%6PFonLhQWw=gPm;Wp}8%`|6ODs1iQx$#NnK-s{f#)jZs&7hB+^^9X
z7WOi<A2(i729=Q*sKt8B&0nlFu}x@Sck7%$x%qS;01tl$4m*9|O>3jfWGt_}V+0g!
za3KS`0(@hK_;pM#Vwq_4;<fN7q>vXmKQ2e5+j7RlHFRhUYB5|dI)(zFKgL0?X*lqv
zWn!&V=I#KNz_*jxMk70;q|wzMr&e$5)a)XZ@2xV$r1Tn6(K1}*vq1~Qb;f@e7om`A
zw}=IZ!dCC<%d03mFk`<|BnH%QPBxP0F}xq40<lJ_1hGGW?`wxPI|bX(CY97?@TGN5
zU+Nbqy&#2Bi(HS<@p4j3hZ-@ZI{GWV*0J({^E^k#Ny!y(y?Ag(v1Z9Ioj2Als221N
zHO3V$NqbmeVRNWx2|2#Pu4A@Lcfi6!`0R58Ol#c6VF$zE0yYcYLPTWu-28eMvI(VX
zZIz5k!DfJ@K$&qPTg@yOjg4W<`}9=D)gsPd0UH)SkjP^JLF!qAcPDQwx(^u~))zj#
z8bWjb`tf@+{PAU`Mr?|;F_q~)n%M<spXV=A(?hC*flkskD6+N5&MPfrkYSe*p%8cq
zG2w%ClHJesmm1W&BhW#QcEg_GAlo~YoLP_1B)*>M8%lLpI$jv7_fTBwwLT1=D3~c=
z9$^N?eAm2^Ty`3%`Y<%}t5rsjP<vSSgtsYpH3u?<-_xu@s@mPE%JKVY$b*niVK0AC
ze<;uSKC{Dgs;^Cs^vzT1#hB&|TDs_mxgo;hp_9u5Wh@$PSRpJmC5Wz<x~zJ#+Mm#@
zq_0!gyYX4bpp=ZSc`(gin>gP-wR|0~^y80=JlQ#h>`7?SL1F*VAx&Lw=Z`N>>zo%!
zzbn>J!A=?4R>-We%eP++=q&NX@l8Mbtq8|S4k`GHpI0VFo$J{}`S{P|k)=UOw*&Hg
zMgpSw^i4>;s7GQlNB=1qGk!^KFrKupHSHh=Dp!T+ml`w<%L>%usim5CQzl5SFwd}*
zXlvRwcB`=;ztrTi7Kf{Qtl!PgFep)jzo{$@OUaIF_&Zv7brFF7`68r1c{W~yrK*4K
zutCLuB?WF(!Ss4iruSt~Jp+j7awP4h!YmXb7pl(Odd&bMB-52E<7=Uu#KvKYuSM&X
z1Tgth<4JZYh;-U^6gBO{D;mq+h5czVzakK};i<@m4tJ2=k*ieQk}{4~UW~4(hIG9D
zL#kAfo;*~1aJhwUHem8Ui~i2E+;apocAVy+YkNq>|GjpzM3{mLA;9>JUb0}ZD<RjA
zIbODL)pequ&N=-#Zl}!p%kS^~R%kidYqrYOM6TqePQM_!165@zI4^OfRwU9$8IJ!X
z17v>&Su%lGv|5!75vQQutuXZZZTnF|Vu9htQNv!$R|Rl&y>w?P$*uF<nkLTWFJ^Rr
zC*r3Nmi4kYM(m$K>eEUxp*E4l-@y~DgC=*~RHFuG`KSfhz<ixIxfV+EIdAeiRm(O4
zgwW?-*BBDNsnDbJ`Od}h2vQ%-93f`&cS{=Fi#T1HztDP7J<*x;7q*0G6OP}!#I%I|
zLe+nMvCcmXn138O@7U-<AM@%14mV#CksJ<tn~CH>B!?SBid>)fXx$f&`6^NzaF~ON
zk<U>Qf*EZ!yYLLFw-<iiWCyX1pGN<DfN$u8jQZxPY;zYS9ZT+s`$bgkBX!qri5PH3
zG1PLHHSZL+^YZI$M*7W*fnhGoC+xM=a%S&51;?xW=U>+(jHS@ml61RttQ&}Ee<Ajz
z$Y#Jd^!oO=zc`at+K(-};cv$pIx~?gX`NLYG+-E0{aN(Eo${#l{h?JmiuX^tFN<Xd
zEu$1dlHxrV-JT;nklOwGJu;|~II5J=Jm`T0hU34rr#w-x=cPQ{)us9k`}t0pC|eZD
zC%5m}^Q8nIOfj<irX7zGZtVV^`VTBj)F73R^c!5~4@JbBEK#mikoBNRW#Rjxpx4u1
z{hOYy3rs!<7#FqPy1UHF6H4m-SpE*4wIYvih;xP+?9C|xw!+lk6{Sglcm&)_VZ|Y~
zTn1^ZPQ`WUlR$Fu4#T``&yjdnZi&eyPv?I!)UrH81+rkA>^gN~Gh@V#nPH6BVf$T1
zX+L1v5v7D9cnJ-!A8ilh<doUTMR<F2S%QH2-F0%3-aV^3sKB?PUq~LB(j2$@(}xH0
z2%cBykEh8(mT9&2GYtEoGe2~DScrj4TUAfkCy|;tu@YlFRY8C@G%s4_*pVlGVF>?T
zvW@UmbTRX9Bh}GQrdc-2)PC%R6qYkru(xAdK-i*CR5UKW_PwoiGS8Wksjf%o0D-u(
zNmrn0H`BVw$mf->c%rirer?Pu$+g-8!oedtj}HVX0>!FSE0`R@^K?Fue#{S^t~ViT
zyVAOEQsamUm&^|Tb3-3u7GHLET#lKRk#RJxX}n<lzJ`b1UwwHGRn!uS%^iIJsxeJJ
zMw{GrU10X-k?*hwqV0zm)(8yIZBM0jz!Z)bM_^j-Ax4%{lxjf5O6ol9L_Lh`Y=ARF
z{x624<B$l5iGk2CS;aLxzHY%%Vue=vfvdDM2v7be(wKD`eR*FW6wdsFkmGN5pfF|J
zGe#;O1{#n+_MhE*${N$elGwr(%u3-fUu3+01OsC??ts~fG)zKPm@zr%Ymz&5MHt_~
z)*O0WT$;=Bq@gmNacjb$+bwah(qmOf)`HUX>Sy4qZhm4dY;NZl<_37R`W@11@}&N(
zlZH$EH!;f8emiObZ=R)7XE1s(S^j<mRXTAA4y-@J$K521>FNSo8e#c)L&=qU7CQ+H
zj|PkFYJanyylrn?cklfMRqv)@vn0Cb!BYuiqO@zXBy}Etu`}iEqZ$3`q&0@qjZ$O@
z(?-SzhpZa^2gBrnlgC6*9S)tWOf#sGkXX+{nN)cm+w^rj)Da8|DF&BU{!IL(`t)Ve
zccTIl72-%bpS!_wz+^H`;VE8B7<Mo%K}LumM6r9?LP6FSWG)+C^5&6as0@WY?E8nq
z*MIyNyj3hu1CKzP&iPb+IGN)$fIatsCXx8h(Rfjf5B61YE&XH|Fm*O_@Ki|q)iFaa
zX>HVVCIlWgW`ZM_V}<#P`)40}bwVW=_OOaf^YW_)N|U3}57s2nD$DWFLH5hH8U=#v
zm|r?G+@V1V=i0xtL)cXaueTL2_ZYSZ5?emfJB!pTt=HbFNCo5B@xVa%x@#G;d;{3y
zWK@6L{Z)x+t=r&_+_<6z2M2>zl$m&vGCO<fav_(Q{80@jX(*EovJHluEV!*%lRrIV
zCO|<w5b+TFjBFk6UA|D7EUT6U>8I_Ujwr9HXs?U8`AQ506Gr?dr{(600*mJ)PRA*h
zH<G?}=5ZuFgYJ$|k-;4OJ4V@qojVnRE~{%g-8V>SsLdn#nPaJdl*((q2&6pdS9kMW
z%B_M3tF+WawRb$p9EtFC-vLk|>h-JZ0}oGortbdoytP)FFUgQcF0lPA<A0A7vtF!4
zR23)srCgpBCtRpxFil+-#Qb^Zw3d)9v(=)F9LdR`#pldt4~~*JYx4s{M}{tL{tiKZ
z?WH&#XZyh#oO7;N0<!2YztR&xR@Y$Ngm-CyZF1Fj;hn#FS}9#BH24I&IAJp+&Rj;%
zN!G=??CC1z`laQ{8h(O)C(mL#wrK<u-VYI;h9g(JPC)2lFR<v#pwxGBQaD0VChc?j
z!(?rCL&y*kf$FNvv7Rk<mn*E`(Zg5%LPJi|X!2Jt_s95Z=}`~(Mnt0926GUf@Cuzj
zPdM0Fw)xkpw)b9CVA-tS(#vYZ30_u>xWs7Oxs0(`wlHX(s3u7mP>inC;+#;e7ddf2
zlJaZ*4sbZ?<X5mpy9{@9w!UA}Wp5l(UF-$D`15#pydk)fRCP@C;Py4_f#<qKCDB1P
zeM`V!V~}dw0M6wOZGWiW{p~kJsXpHit;n-2^y!T&L*s5|`u#D6(?iT`mb?Dyz$9r}
zlFQP3ud=_#Br)n?4AmRd+rbkc-#B~4{9-i53qM=w+xVmMq;Bc&SZb!fwT?gBQrwKb
z#*FV(JxiA9yY!?m6+c(Kb2~N*cx}F6p(y5VZ)RaQ;`CL{=WHnAOwx%tuQbSYgZJ0#
zLCND-|0|t$#OL+vAjZqo!l*=9>D71=;!)mOJJWFIo4~b<sy`z2hTHYcRh^qRT-q7z
zj^O{P?5o47dfIkrkZ$Sjkdkf%X^~FpZlt@r6r`j}kZuHtEwPafkrX7PTe{EepYQj6
zanAS0Sr^y37HjV{duG<mGc)&dKljwiMKu32mqdCKO;I-W$%NiyhUWzX17dW=GBG+C
z!fXWk6FD6^Hc~tp%~ZylaxzbK+KtDLUX-WLGaQMO6V1cZ*IoF62%*4Dh6*H|j{OYz
z8M)B;OgB?hv~EmcXKBN({P6JxRuMZBig>&~<!l<O&T<-}%}(UF0s-7lHfX1C;E`ka
zB^f__bqkHQ3>Obk$zl|G=Mw(S8ktRcVH7u<jOWq(a|ZXu0bQDBQ1o`yFK^$Z4ze-r
zqqn*Q)O-<i4<KryiOwXqC<(4ig65ZhYGop9-Yx5-i)721XEphfR@ZXUd%n5sbso7a
zi;rX$u92+8D+3Wl&`vGMtEZ01l5%Q)i@cAvG0ji^c7E@=x+k*UIEKEyu*yN<*}XW8
z?!l+|N^!58T4~Q!lGJiKR~g==M0`(zJ?PWN2YHZWM}ysWc@pH?RS(z60gUCi{*|Wt
z+|~siCA?*KdxIY)J3W84<~E%wEMvTrHBZRj%@Qy=3h)o{8BS+-BHxaW^DI1FlAc?W
ze_ilO-Hj<^RgjSfRdui5*R?%T+&%otdirqahJIM)d_m`t?9rF5R@G<BS$t{xcIJEz
zJZfxtn)qc$`AJYl>8J94E;&2Lx(*)4${IBgG&t9Nzqq#cZ$Hozx>q%E$-&RNedp7%
zQR!&EwTn1Cg4bnNNw?!aCjF&AaTU?e4)s;4uS8L2JtB`ZIR&{hs%9U)&7F-Xyejzu
zBip@iRd0c}mBY{7mYbk`oV^cS?$pf&Vk*mu$}CH<7*_$u^weWkvrT6T#X{c0)PF4Z
zdd^M<GFUKmjr&+U@f!P@ZZo22>a5ud#+b^c&&hi(QJP00_wc7S$J=;k4mLeJSK6wP
z{X3d272ZNx5>K=oq}w|L2rs2~4e@Yrkp24&k?xtW`>d*Zpy`x`(&78$htOE8<A~{Y
zkKKkt2=Q!%=L)MC+t1EFcYz<GHn93P=n=5ZC{FK0PlizIRQ6la;#Zm|W#JDy1gs4M
z(<DzW4pQzm(_MM*n_FX}j#@w4+`>8E<J}+i240gJz5WugBpy#dPOHAdO#5oM?9P?a
zvHeOp$edaxgWW`YRmXwj=!*kihzJ8hOoZ9D_4C+h=t*@ZdC*sJ1L~MU=(C5O%&=QN
za?7Dd4oUsYl9v0m+fd9JD;+bEFH`BU6Ehb#?PJiM26izM5-|31g`m9}j#|;6byZ*K
z{Ia$;c)45CnzJ&7Sf^=A8L5i=PT>!MFG?Y$bq_aYk00(Np%!6c6s*ho<BGXYXm6Qb
zYL-D30v!$NC{Yvpgsj$u8GDY5rJ7PnxH0q4MT02dT`?1Wxg(9fqZKudG9`&@p)qu1
z9_I!lzXV<)WHwg>GY``s$+76d0dAp5oZgJ&o*h@!afUilHFAw9kycpXfTf&X4)*Kd
z52+HQ@SlGO(|>RO>kQKTFCW56_pitPpAUmF{F5g55bWiMF)LqP8MmguH2n97N9W@^
z31`aW{vMu5WMyTQ!Oh2fBXOtLHhn!nxp38<MLBY(H2re#pnPYiO5-rs>!5-`A(=q|
zk^PEG%<2Y4x*C(Xaqs~S`$6D4)&c4&MZDZ6XEVm>Ela)?K#WHGB4~R|@}a#Q$P6J<
z2i>~*06G@BZ{SVN$y$<R8eoZa+@3EuGb$t>oB(oFnvRiAi5LiLPjKo4G^+LQs*;?D
ze8&FAvOrYHOHuV1`!C>C3k8Bc5Y;5-uAqne*Y~4<+>r36pE~IMKY2@Lz^eRBy$mIH
z=6H_9ubF8U%Q^@M0k2@}C|*F8Nk=Bu%@+e1wKVx1&o{~fwqCTn0?aH$)w;vZn>6q{
zEhd0Y!1`U8PeoeQDG1QJp1fX3GjL)J!{n9Mh-Xxo40zIh)IAAwx?V7U%nQ60STywA
zE*Sz0HeHk#*pjzLfI!jkKG!0SvzZ0vlmFU{!L`>pwYFevm1(J{BLs*B0h<YG>3_3Z
z9FlsA2$Scq%rK2)z4#T>g%t8z4Jhih?UW}B977Os-iIVKjEck+%oL$a2j1+@SaGwu
zQ2YFT7fQ7hn4W?USO9V<y^6`jH`#&L+m^un>VU7C=l@3`#ikubQ!|U>oZi}oDIuT;
zBnquYKSYN#?bQzv!>C5<fWvp&k68($?EM5RfJ{Rb@OuBg;nL3=AM6L^=@T>oU#UTz
zUWJDB6i9Ql*lUR%_Yw>N2Aeij;N?na@Lb8=!4OxMLu@9&OQC|R!w=wHv{Sf`ORod^
z)_$$ZSlw*Y4EMCi8jNcLb2bVu2P2C3i)$Q=KgZz=xH)&6m$C~4+_#T3i++b4S<U(O
zH66{vfD^`vmCId_2(*>nfNksCXWL54_P>`VncJb~0dC1Bj?c@X$5(}%9~1lzT1&4m
zOS9i70+AeNMcMRbt^zpOCNrFnZmz&hw+?W3<l+N^!bQPjzyQ>avV!h4j2Ug@1>NJz
z+$;d6zTD$1Pe&x+N~CW1X-}3T0@{h_(=pH<4&E$>pr!@hT@y{&M2Mcxns3Vo+!aAx
z$8kh<&nWGFenqAJ=|628bl0Rg?$g#IRvHrj@KWUzY(%Q8KGab#QA@V4z4)c&1Y+ad
z+_4(VPHf{?>Vf9eai-nRMX5zi-`04Ss;&P?YW1@K)#6%XRCh;D$8XSKI24lI^H8b%
zYg-S1caL3U+(yX-P!$!Ev!wQ4-JFA7u%RDxy<Mu5@Te6~DEl*pXUh%No*yPSez{Kp
zZ}4etGJG$Dm%FBQzj<L0Y%HY%1dK`$8pdGUy-fS+)(?8eYA;Aj_CBvAGU}Q}5Dmgu
zFR;BR>tPfqK*N*sQ~A<lN+`3IAZT<l4~UU5V4EI@DK&bJ@Md-cNBuWCl@F$%Q$DHU
z-pYhg>+qF0)BqdiiWiVY(igpcbs(i1zEN<afKg7qcMGnB6Eu^<@l-b6+vHiy3J1z&
z%sl)V;zH(Eu6QR$H7C*3c<I%Uw>&C(=rH=7!fjZM7<7B9EYR}p^#IEUy?M!Z*Aw}`
zD$7y(1*L~(f6b+1;zdCe6&q2GQxHsNNf-2?A-0N2bzByNlATownAX!ejIgPYeA^*l
zK9g@&xd8-#-hds`KXI<_bZvs26Wipu$PgLx-5TZW>mEuf8e`v4?$!2SH^$9PHnNWb
zvQXWj=gpDCho|5!8}36rWg@l`wJ=kg57;6!J^0<rs4cOa2{u+s;_*_@idu#R798B)
z3jea1fl*BL>j10m+Tnc8X3wT5LEEYGY6IWU<A>IP?1;4iAY+oh&hpvF90D!YNb36*
zN#%3dO@GwDO%L~5z@mKuij_yzV;voU+}Qy1uIiTosn7G}hgDHvDjT3=_D?_5fvxi<
zLaZuV2AHxk#EQcbh_NItm*ej}=b86+oU08UIzcx_R}P*eGM8E-pK0c)sI%9BM&V~X
z{aW|=-WF!2jbXhV)>ft<^)HeO<wc@1*M1EXhvOBFj6<kEH}oV0Zuo8*brV+IVGwpm
zD85h3ZS2_eV_shfbPiF(51z8UAh%A`DvI#@`gacWpHC;1h!{}>BvSTy{O6nI0i(?Q
zodj=&8B^0;3xZAPBc>z2uHA95H)5N4L4l$gqxo@oo8sn4;+}J$l`f2|l54Uynn^)v
z;uxa#6-tofpKK}=XwpthzqwHpV+#*>ES;eri1Vv-%;xJlgM#lgB$-zoZ32I$f*<8#
z-o6H(rPJ`l>b~H!*@kxp3dztCkgM1v{D+1M1}UdzB9`CEgfhGXXEkV;47&TzW6L82
zCjY?bT1fb6v6AC-c`C^SYFmB37BMJPx11QnY&(b*r?@XEliX!%!3Kn>crQq#>toIZ
z^GsplcV9vAG*QSMYU_diAMyB8$+u}PHLi)$UO5B=Oz*O*@Lf1t4g<mNW7#PX0hpXi
z^P%IU0<#JtyTU!wFq?S^3B4~I%4=?cM?gEQ<%Kcish~t^HhTMX1{TzC$vK;(60qh*
z0`tT2e_W3Da`443AwzB4Y5rPhQYkEsiCrEjNfB$MQ`em*vf?7IITNS;%&?1W9bU#)
z9k@nPKC9M7I~I%H?j(_&GTz^BpR-AsQO{fNXs5S%6fc^{%?HP5mZtSWnKLc$QIbf7
zk<IynNrCB>?Q8m@;QeEtFIF-_G3pTqD>L5(|9Mda)RV|^-X2%}or0W6`fE>HzN}($
z5`8p6cOb0ik2$z=Sh0R?{;K~cZ#0J4_+w-)K9~9dCi{8YWQJ`$#Gz|XOx78eB0sSE
zE*JkK(kZUHbSzv*c=CJg3>I|u>lcDxa<EhnjOWuftQ!;Wneir}&Upwg-dBs1w(^<O
z!kOeci6~-m0-|_NE1Z$y{^9&KEx8*I!^|IF1tTs`eeU8;w&@BIZPs@#@sR%B?NB&2
zKZ|D*_i^)pohY$u{oK~|X9Yv-?qN(bFvis^8mi(R<_t_=NN12Yk0&vw92np}q336`
zw6jGumo|THvwn7jxw{v^#9fi##~@={&%=%&GH2(1d3W)vr3umR`W*SOp~;(uiBGUm
z6RXk!j=xr{U>q~m6N{74s^L|Z%>3Q5tr{jH(xet9ISEO$8(({)6^XY^h<UYcSMLX1
ze67X4It69hIv$cqDnxrKd9vBOfWG_2!i+hM&k8mQ;mB%bjrxd6aY=I>WYBE0ajD@w
zQ^!-i2dFFL3fC*DH`v3%jzl@W5#2UEZ9!)%RIRV~T97cv)`W2&=qseq{GK>Qm2-yQ
zz_CfIh%rAR-XCf5<+1385-GO;zAsxD?}G;r<v-ie9z1ETNiZPOSozq84QQPS@2#t{
z=7TCj%J!33XNo`KW&;vB=L|s1-r`miGyt=o8-v_GZn{uVDEM^PC+sHrVrpCSMQ-Ec
z@*B;HeI=XTj#xb{RS1~eFo+}3=XN5^SC)RTD~Cd`Gc?`5k}#jXr}C}wG}2ekRF1d)
z`1p0<JE&()B96J3<-*g*=5aOi(*LMX?pnGP%`ASNqH2{_<@rV|USL2H__AbWvfudq
z<r$_Yi7tAC4Lnc7v_Oy5M{0DOo1+`w5!O#tWY7-+ax%LKO$0K7O<g3HGN#s&n5=w9
z&5W-t?<z!|VMFo4`t9we4V*iysv^l^;1KCKMb8Q^U5s{+hzVOzj6G;KJ`*bQ3;uL@
zUa@a*!<0C2p^igwcmE5k(t%bv`5`K#@AiHrids>nQUx`xoIU&1ZsDmaiSDGf^wu*H
zUHrUvlf|Y_b>D;}%HHG!OwG$<Y^!0tPSHlsxMHH(`WS<0g`<MAcv_T!nKM25Jdb4A
z13^gyfqyirR}ZTwiI$0f{nxn$vz)CCiLO3rkw?4H+E9lSuky31P=S`8osSYOUuH+m
z%NNg}Au82_F|I2e5=&^=D9N|UD2}MWf<l}zg@1id6?p{|IH_5^XUyVX)0gx`r!_a8
zmk$hJ_ebfIh*!#q3>BMi2~jq;KZlJ3DB8SmB)WJV#4}cVEQCL|h=_SKtX|<_EI|n@
z&BV*N+ePfZzKzD8c|pQu%B#S4`9)R$aiJMURj3m0Aq_ol^$EIQ&4s+5E&M_Qgs1SR
z(VHg)O_^F&kx&3dELOVzx8YO<Yh%D}0n!A@c1NOus3~FT#9-0B>Yg|z2j2~kXc>Qh
zF!}@n3y~U;B6swz`%N-7F}c;WwDjg>rEnN`Z6yXGa`6m<!lVac92GR>bPM%$iaI(X
zB_^$G@>3hBto9cMC&r|@6Lg!O!iUps=HlL4W+=zo*jp(Cqb%7|&v)4q+9xZXld>Rm
zEPZ%dcYv9L)~;QkV0<_Jy3Yo}Qq-hw#?J$9c2h@Xx|M%7ZU)UBz_>_)*!!LBFdpld
z%IBzJ@QQZrAMm3aM;b&Nep)~8*-N)Ee+9M#qTqXuV`?HC)cE7#+murBZ%K0#p7*v|
zz@Rttz>`F#Hk;~`$tO>um}}3^Ph5_R<mYa&y(8j2vz1Xk?VBAuH#~tEbu!(72Q;Tq
zr!5pfVhNOK+m)8(@FiDmGlS?pk6^{;4j_a_lW8e}i%G*$h43j^iK1YlBlljT#**!`
z*Ws|DG_u8K2*wKc6|D)#o1MxOkg8%nZD0~M5hv^|+_yUE8@qemrWgx>Q^c>-+D!=H
z-DAM0)FEOr;&7_@oZ4G!ESs}`qg;y;&g_Yd&a(MqQ|mLEHjxgPibz^95>-vocFF}k
zZn+R=f$IrR(TpZcryI3TVc2d9krix$`+~jAL^+Y%KZ`>rE9GT_u~<Y&OpDW=WNTdW
zY11o&zryhQ(@;;Aoo@HUa6HOFQ}>u$`TXWk*HPUQ{Q=!a>LR_-aZ?p%XqnI4<Cv7b
zp-dBL%1;iC(`*)MVVDvY9rxCF`&K-9FGbhg8bhqG8J8>fY|z?EOf7oSN1yeIowc$_
zfA^Ja=|WO?x=hyE3FY;d#@eyo)7b8Lp8nr4hrc%ElZ)-S-;2FsG8z2-Vuq=(Drvg!
zx^zC%mSZuRP%<obqZPYqZnLcfwc4@`ra|p}^ek%axk!IDFEM|J0_xqO?tq0<SKuAG
z*|TmTp1))86}9xRK0=i1?~fzne+W4d!#<F>oNj-YyNM*d_B}S^Gdnxn5g@i@JG4gf
zn1y~Ml7Y8eQ8_%s48z!kWTfg?{J=QV*In#%7z-|oob%YowEkc#Say8rn^(n}tiR%M
zZkx|gr%k_DOf<1+!6H1SHY)<60U3G*?Mpa^6}8>%Z{9JSWM&3UqBei}99NumCo5Vu
zC*KcN05flO>tEz+Vvm^i%BxLJeR#pQWnUF_w%Rj)y7P-Cm$9JIOUE9`re@zS;i;~*
zkWo#l%qyvBo2uzI^dqw7c3X<SIs+WTJ}R^e^xx@>vn))ZXxaxA)2xaq7<~RU{&Cz;
z@~k-a&M!EUK}WWwnfh1C*e=zkZJ5!TA=Jz158MGyC(b6fLUOhAP5f7cl<;cSwe)<j
zT!%93S1XtcKGN8JMN$(HLcPYEf?y;U)+QoxDtK7*NFURjQxZjd>qCs;qlv#G0PL)A
zpF}B&3kN&?1UZIdYH9s|l*5h?EpYsA*II}b|NhSZ;~GU9_Ap{a_fl))(@7cA%Ne#Z
zc4;*kcdjRk+t8{|zsGF?c63XJF@-i$Ht$IiX82BsHQru*V|bUelS`I|itX5UV7KtR
z>-Cwo2l798gM;I)&4;I^rq-^~jzN3giWqEhd3*bG?B?dCWhRegZF_qFj)rp4-_P&n
zoGjc40nWta>%;Qx?a#FI^w$==q>eFYg%Uc0v~UbFk3@xqk1uH3NDG{*D=T&Dbf3b>
zzZ6VLN}3pv_t1DZVpXNdb~nhrC;<n7gc6bwSX*0H(*}8XSk~0kod5ZwPJKP>Oq4Jf
zG+(L~Fh!joxc*XD^GVRN9t4`VPHZv-uWEn%(E8HaIw2n2DXZPJ3Z9_kYe5b^YV&b-
z|Bd-}VZq>(v-{e<=>zrAbVE`z6UeIcA5AtQex{#OCeh^UuUa)<!qZS(TwJux81_)D
zel&by@Fach2T5?P&2-`cf121O>gUeR=B6h8+z`0n5aa<jUtc>A+8Bt%QMLK3_i?9m
znIT(gd@MYYObvvBimEW{A==5w(Q&S?54r6T?%TV&fT7KkEvw%v{BPXcQuK6TiEO*~
zo}Zs9+xXTJPoGZY@3o8+&ecs(mjwpg6RfKXmq^3oHq(F9F>QAW^t+2`4Xo?vNI1s9
zC0?}F7aZSZx+ZYGTY^mP&TRctp87I^=7xqfazdHxl~PysbP`=S(|2kd1Q?6)lDC)~
zm>j`JC~5P|TUNI#R^wGQHRdMpa45vZb|!T;mhETYzhZNf0?FfPW62aaL<|~XM2x$b
zmOxAn*ef~3;z*E))316VL-FjNswxX9krG_PnZa9_opnJWhC}LUQ5_$-d|pFfhv(Je
zNdpIxW^gjGJ=H5>9vd4wD{!{7)0}SByWQ5^!7=E1Q)Xyp0v|3|dm8bmZF4-&dsjy<
z4&R;$9)(!S8&SzPkakffXtm1NV5GMjf&hofA^!t1$<j!r%vq#gHNUo2<fEy5`D^Cx
zpiA=R4j&^&14ln;kh6M(E3$e`(@C#OMDkhxb_3HUI^`fONU|P9`%BxWvYDtZJ;5Ks
zSFujMl&9-yXMRtU564O#EYaIo_n{C3`EL*rAt9TVj_tGjcT{#aE!!X6kCfV2M+mO3
zFxvELTIW9&WPw@*Z|+mU1b2r-K~z3fEa!7d?2ZQsUS2Z-ut?e=C$P&H9vd^z(MjJW
z0kEWQP*B&-jO#pC-T2kedOa2n&O&#0=%C8QjE7B-_*?eWSlBhcEoF9MB6ij8@;Nmb
zS-mpT+E}X1)}h*yR1G+^$YJ)XO}Y;I-KF>E3e?xv*ABkEZAOAQ)6sKtdb|7k9`iiH
z!nQ?4MQx=&)Z`5X<N6A*u(9VSC)Ewwe7wAv7pM60ITwem8m8ywKGm3b@o;nJk2<oo
zefn8O|It|vG1$Z=SjF*U^Fr4A;mXQaUteDbC#TUY!LCdl4Gj&uHQ{{{YU-A{Iv&bW
z>2Jjz8v9bVnbi%PiyWzn`p?VvANp2T3q8ENzSy%9q8}Ju`AZNjY8um|51E?4LvYRy
zDlF>@;}B{C&B4+Y1hD!H3vVL%nm&`pB^qWigQB4fhniuRnP|V_y2XmbK$gBmJUb@j
zD6<_MUJ!pd_H!z<@cSnbkC)#o&W-#Icb=GdaFD?(oo3>V(b$mp+nst8!cZF{J)l&&
zi-0Mi#1H^BooCH*?(_*+aPI2Z1EHsLjo)2~JKLScin=zMh>IY?9WQ^y^9jww6WjvK
zz!E0De6i%`91=ftJS8?ZE9Jic*6-zrsQY44dBdmxge-+Ehu?JW_$hI9xcjU`Jf3VB
zCHmktvcHt*_HZIJl|AG&hg_MMxQ(HUX9&H%i#&mWeD#BD70WCW7rx4$En(3&D}xo)
zZRNwc;$NhMCf4AbeZ_mTI9nLM+veVyXG^8^R_ZnUgF4gvbRKn;;1g&E5uBD_Z~BVE
zq(2<RszVJ~j?H>k0QjsxJO?3`HU0p!88G}NPAWbVx-nMyn4%6;j=QokB)NlZDf{>$
zYoyx?a8PI88_kT-saG}6+pYgjQGMb9B9zks48^W@x+2%U?v-12B4PAY`*I|MQ*LW5
z!{<+uYbbT#Wx;$O2wDyF9v9nK9yyJG#jjOATF$kgDr(PMGX~&WJy7HJ`_+16g_Y4Q
zFDvCoiIFWyP<DB>nfE35$Hc@0sE`Pp#MrHdh-(1vQC5UV^pYiFcuO+IAkpigxHi|n
zjVnf`NatuKw#l=6cP>Qd?o(xXh}4fW%1I-I48mZa!*F=?-`NkhC#sIPa`;OCOsxk|
zJL!`5m-KFN1lt|Mb)&S<7x_pLuCytIA%PoduGwDhOHi@^30Eb>mcz!PB6GVV=e&AK
z*YCPrBQAMpBBomnV-og0DfGdr710E!42&MaOzouMg5r^a1_eXrmkcF|iPSmiV~BHb
zr1mhtyQb^j7yfPqRE4MihE2SMv<vr|ZscR}RZ0K3QJ$K$sU3quEQ>u*Lh-fmlhW=i
zsON*_Q+IcFWh@~Auhow+-XLW17Y6_hi-$+j1dkb);-ka-T(rEczEPc$l5<c@p}=WO
zQ%DRPhn@Th#KqeLs0w?QL%qVKcv;Aji(WM)z`U#LzrPfXSeqAK=^D1hmgc+!8sf)R
z2MQb2d275EpN>Cz$iY4C@&do=4qstzilIv^g^?HGRB1)~^5YNS3y_GCJ_guyDgdm%
zq(wkL6RL6e_@qqu*Qe54wjqUP=@ISNo;M()q5{|&39;bquM9ry?8XP3{m?0`v`X{|
zk?5!NGUP|cmbf%25jqo7mAJBq32_6V<Ea2ds)9wGHd!!7egl<j0E?5$#63Gs)iGi{
z0@2?;(3Y#e9O!#4`B;~vY}i-Y#lH@`TF<5)%?ZS--D$@W{{6NdcvI4W<odh1ZW_`Y
zFV3z<@41-<w_3;g9Xg-?vV2@CBJ%OU>!_acczm{N%t8?WcG^u0DBT8%Ny79i(=c>8
z({r8l=nKqY!|qH4!|GuX!Y0Eo<Q=AC&)5!nx$&w>q4GK&fQUtpj6&fvHN3x^3j=ib
z*h+j1V54h>T98;bj}iVEO>BVli`)B{3ta&~++9Vh{TGNA9t5VuKuS32`1ET_J!<z?
z&<u+v?Xy|8)cWeVIxh=@@280aPCd8`QFE!5RZhOSUD&HHxsM5(y@u>;Wjt|VI>`RE
zbb7-iR0VopsuxW=OdNmZ(^0mvU)38-e^A%nRa9=k-|-#*=3@RI!!yN6vGLm7<M-xI
zTkd2P@#zgmXs?4VSEAN~5wXk87i~*(prgG8{5^!j<YOy5=Nll>_c3<wVd_cCqNhO~
z!I4H&u;5&Fs{JqE1)2@_xCh=S#$5XOANL@@T?ziYd@bkK8qCd;zv6fDH7PS}6YmGp
zx{AL8HY~?r3ry|)LV{ZSm6t<ig4ZHg9D4w_PAdz*L>tvo|EvLka|QQu5n=0GAFJ2P
zhpn5r^*`SX;kB+>_`DvvUj||BoS*}dsIia6+!G&>@ND4Im!_S<f_v7>iW1G@w~Q0Q
zK*WC?(6uK=egZ=D+qSwuQ2hs9;*(EtS0L(81Ll_6iC+XbD!=|Eh}O>vYjv&NSyNZy
z)JkSO29W%K&>9@xM>O3Z-!6e6ABk|=CMisJUA2LdD5AhUk2X!WDe@zduIPC1p|FE)
zBWTO@cjMIxVN=veS5pLV>7~2I9=%kQI3hC@E7VprMf(*zV-bNrC<(M5+5~@~vsb=a
z0{$t4a7O8{Xya@#Ljvo8RzcuWc(Ys8LTs~1jGfZw0wuM658QWfH9CnfEPVG$Dh9hW
z)`e+n**~+!{IstrT!?WPgq>RF^dRDhNm2BadMCT2D(lS9*b~j@(Oa0gx*Rvzb932;
zyIPD}9dJ71f1wkbbACrdyfn-|8Yf9_lBx4g`{y!QY0!oM0W3SDj9DjdeCv9_fJixH
z6k5i4GXI<X7Rv<wY20FqlsQqwR$2-4er-Qai1p_e0=9cv{ZW4N!i+act;;3pMmxd_
z)qnOP$(_DYS)|~PA-zf^L=R`9#=+4s-2r>AFlw$0u^|B+0FMo+Mr&vMt=V^}K(h{>
zYmMWpzF1YB`7wKEUzXsKcaiInhv>!ohdEVcff`|S_2o%ZKer4?`c)733NRJH(4~w+
z5||?VG={PfHWHfJFV=Fj{pHUfd)#SpB@}_OA6@27w#<x1Go+#qfRE02R^zzcBycf8
zF>hn^V;oARdIL2!c5mH;SY0M$A8Rp}M?~bj`wAJ)lO}LwSr3SRpM3(Hcg_i9FHMNr
z5TFFs$pvtZgz*|BT(raXC`eJbt1N6)%B-sK5f(fyt9v+Kaq(qOeg=@XK7`dY?I|q#
zZEtO5ln0j>rms-vX1|l<ujLW3UQ1DxU=8Nd*0(Lu$HxaE1w{NQgwfAojyPNCsmD!8
zkS5@@S*aHC<wt-Cbv#~fUt!67dCBfJnCB!kc7Jnd92&iK8Aoqrg!c_$l%Trb))gw0
z9<qm!O^&AM(wiJ{2GFZD(OdgN*0JNXRuSj$C%AhwFI#8a&{QF$KS67IWEzTG?}Usq
ze`xvQp3obzcD@R_BFJeU_Rt|;SD#O_h0bb<HWG6;uG?%*$nqx|hHrt)*Da8k`bzcD
zku)X9A+TLUPv7#S2HYVjYY}`i9PvLk2>?K}UpjD6cQ)c4Y3@YZyAt~~A&*)+LtmuS
z5#0!V#mXkDg`b<fhBwGc$f~z)uNH%8pFp$l+Je3N?j0QE1?)npHfm1m=0|`c1)cQJ
zXTJFdTWEb6tKJ?k6);=TO<YTY6z?6`J<Ew5?!Y{8r5#`YSwSH&m}p|BIOS!s-D|;M
zN#HiK+xQNgtyUq`b1(Bx*TGQ6mH%FLV~VGrqDQ*U+hDIj+EVoKW(t#0ks}R$UPAnS
zNZ+N}e80Cz8E)Tu-Vbr{Y=vsX0WUC$m~4Mjkn7>lImT0;XgSTI>t^en(3tR4n#F(P
zrRjeCW`I$q%ECC)c!RpXc~t!6Hkf|)z$u+NWFIp4;e(N~$ov|C7|+^lX}C)PuPjEB
zMs(m%!XH_pC*8FdP2D@L=&J(34`w#T>x7%=eG1%A!s;Ha&pkIngf4EPkAKpyP4PfT
z@hNbXUn!1AzZ0$n?&UZ4XtsmUk&q%LQQAy+-p13lpX*dBQlTICrJA1<R1nn)N%H22
zG5;18M8$W;|8bkeY0W(c|J?qqGWyJiv#{kEDoKqLh4Fvpl3`fA(^(mUC#ZxDoP{2}
zEa&u>90<e{=t;}7z>>V>j1UyZpL10?Z>K{UU}5~dEO5?*{dHomZXR{Mbt|d`3F~%1
z)|=oxHGWmJU41!{#Rx(An#!h$GdivX4u|0=6T?$@a%^Y(Re!5^BtbfplD)Y*NQ2QA
z&$)`v(?1&yb?oh%{YcupS|#*Mc&AJds39-@{CilSBdA4tM%+@Dg)E9!njpBO8<a?}
zMmyS57QF7p`s19k)}`WXCa*#3A&}&Ke6(Fmn_HWZhmk0BNe8c`p2QxnR_6Vm)-t`F
zYf?_dQ<<sh*Ius~dCwJIVcX;pzkrvkBC6%3cKcBps{=G}8XMhj8m2C!0pmNnXD^4y
z<xNi1I5WZUor}r_MNjDWZ6WL|^8jiYu9IOSU2}itPQ(D%1e7NLUa9q<xBV02^MOFM
zz?*Esc3h*l;8X~l(Q@#><Zr?im3MxIva?BOo?nq4yTl7AP;g_TQ=J8_YuRjmjp@~+
zpz|kLni5=Jx>OOyNKE(G5!&nz^2T;<LeQQ@7K46Gk*$z1Y(|Vy|0q?@DwI6>T<A}B
z84+&7UX0B?5Qt%{$5HvromjjUUt#!D7%k)+%=Y!@t?ULEKwpvTKSk!y(<L~u@_zR%
zIY>0s=L#0pk5+>oTQ7Zge~dRl?YyFr-5aUVsceH9B5Ub~kc>nxKtG{GOgJ%cQ`8Oy
zx)GqH^84h->L!X1snVrAh^)73)VWjfypp;qShn5l@v19hbTxray}?|~03`WqQqAii
zq)H11#s%%G{NTuXm-V-E^xPMCNo1<rbKVD0Znbp*0ta4Z`!ptJ_}z(#iLjLxK3Hk#
zX-1y#s5LCd<{A{s_6gxoFdYehGgORi{3e1|5fO0@#C<&dF)0$$ZM4pHSH8JySXeZz
zmFm4WkJl_>{Kk|^XM_oF?p7|u!AT;hpk!_M+c{QRCT@jC|JgTIB|RGYQ2PE>I+H6@
zGK??wIIE5GYwQozmIs*d&@?~X;{^ERcr<g~MCheN^1u4Uv$<US#2BCN&U1&9#>?oL
zc@&RsdnO>LMU3GTtd>;L;clcg1J4Gb`@BlWsJOSsA6+R9+xHEHXqHm2Do&rsE6}W<
z<t_6)R1$@wj)*5_h~KL}voSOiS7U#RmG4iE6DDpNt&Jq~6=4h+K3W&*Nb5}#y{zBl
z(kZ;G8>*jefKATujrWBTlk~raWm|%ikNCfDd9YVvIs2x2DEG#-A#}5dw6Qc#^}FTX
zGQ%;N2>YEo6iV{2`iHskGx~)8@q99nMpyj9TpxEVUC)a2?!A)Ef)JYE{I8@%%-nv7
zG~05_@y@_~ks>>|AjB^z!Rz;Wd`C=6$-+z|3*8>AI(YXZi$yn<jxN-Y`Q-ADN1X)b
ztOkdqx|EcZpo{8my)qy3Zeek&X0pS}ad>LG(u6z2@=aGNT)i;))b4?y$RVlL!kHD}
z-5x?*Wf{e{&%C*4ngWlg$Rrb7i@K)V{pd(kEtW3n)UKJ-p?VElZsV(`+vZMEG!0{+
z@o1x&TO^yK&#IE1I<C2<4X2x~kO}!_vq2;G5Y%4u4@iycpnq1UA+;Isx2dMxUaB5B
ziPkx1B)Pd6pYhrj-3NminasQ_WHU~%A&SQJkzDViZfYTZOV`irW~t)!F4#+&&ClL5
z&m!`OVW%EPKcDOAvoD#9=}!9d@xrylrUMg6%+fzmbys;HT;1xK37yS=Z*pp%&p_)D
z(@G9*iNk`&iiF=++=+NEu;z9_8&P9zzN-=Pt5%iF-V>tB?xfJ(e1qkxxo|au;v+f6
zyrN>rf%}#80G6#=Xw1b)UzQB{IW;-DT=)ZBnFWE@+(B?f+G|feI>9A|*)1Jo#L?au
z8K%RvPEDd-&#(!faJN0Kb)g{5;+nugRO^usj2gx+!DVAkedfJ>&85Mz>lANu`T{jS
zj(GNbLSh`7>uS}WYr*@r$GBxA6s2yjS2@@4id)-QfaQzdDcMivpIdl_N(c}<^!{6k
zQ@$wJivFKPT|t<O`B#DnD*dt(|0BK;I?i%N`vE%4?f#Wlc64-U(U0Y%BU5D!smTxV
zL;b0u26K_J88c;|xFyW@Ec7ASK^9L)f7MZNmjtRelZp(!PNq_ESu=^Th*8Ju%uZK>
zv=TO@SoQ_uvTBU>e_NsPRV`LJM+zC*%;v+cLeBXPeWgGg)?rV=Q$4f9QD})-IxL(Z
zT`IZOeWJ$fP<hCdiPZTWn2b;8x^&Bd70<i+eL5fK($}s@O}HKT;W!UozmJgJi{Xn5
z>NemtIz}5E^v<TWoT5NCmkCzYRv%p)rBB4f?oWp@&kmJ!FW}Wi?+m&gu^rH}taKt#
z`8##7t#kFVZbDZQnF9yh-#SXg*Z;y~*3J(-k?s9M;f0v^<FWH#{ad^O<%n15KAR%l
zsVn0`Hs+PaRl$9DyD)R>zT!m<Z_fdy{n&fT?X0uk?&E2~PHtNxHiTK?2+$z*pXG%M
z#_*+jvv?&Q$<7ICL8Pd&*WK2V=Is-ayYXJ~b)v)5rNLE6;vi7Oum?DeO7x@-;?A}2
zNsF=fq<(wR=v8TDEJ>G%FE?j#sd^-}99G4g!r5$nfFVlY<!fQkz<PWF=gdSeWFIX6
z+G8tfD78>Km?p#K$ruKZRUzGR&M5-HI3784j(Z<2&WG9L3q))MO#FTqyUG4lY+_qK
zq73q<YnY=w=AxalBHwf~EBabqd!GqLWyh@);$+}F?-kRK_%2h>{?apS6UuFL@QA+8
ze{x1_!;?!cPj&J?tY_#J=kA+M9}SE#pW#Ds3YPDX8({&Omn&q;8Ot30g{s*CZhwp}
zxz@%K+=SSq2eU%lGV17xSA_b1yWRCP`Ea${QnY98K7El*x3=1Cp&I_&t;$<pA>r5!
zYlDaT;bAaqbm(u5g8{B&2K1(t@*|2wiglItg7w+iH}{!ODI)T^vj&z>#g@fGN4GAE
zMqKNR&-!ClzU>*5J3|u#NU5fN?IL+LaIpzVs&%!FM*m6Vv2qxDA7T9jnld3`XTW7+
zz*k5+Q3a~*uf1bHNZV@Y<9;FaLDqAtslU1JkqKrzRZ64f7`?iWqv?7u*4eR9cBX$C
zi=PqBNR_yNr7!dw!mq?U_tW7jN7j>ptN1nDL(BVXYg(_)VfsvsR_%aOe(F2knS!ga
z!#h<aMX!I^`T<W&=HanJL9xfV6B~V5S3OZKs-pKo?VqrYt#ex*lu4G9f5j&?Y(le^
z0Lav^J}VTt!TZE{)iAN_B;w1$6&K6>aBC_YY>8yvcGUk^vF5n<_BOC5VWpK8d-8?j
zcL(v6GhCdgpvlsJ#pa35y5l3O4Z_hr%gmawx%TIV#7prR7P*|xzQfb_nf9Wphhx22
z7#}40(*JEI-a(jl3de|_#Vx;TFj-e456D@IOw24UF~0Hrc(LJ0r3cTKAj!S4e5TC%
z&^qE5dZilp@I85Q|F2=*b1nTD=5}lx*tLK2kU$+dCOAp~T~SGjixoUsn!4o6MB?of
z0bmT932O&5>*VI<_4sYkNE|hEJx{^=`&wxB#j9WOl34fg!5=mMJnZERmG4O5%04`Z
z`r}N!D`ZKe5SsiXA}YBo<FXuPm^M!H>{T=+=YjsK-@nDK(PR%bJ<CPObm<C17>#*q
zy|0z=9_EqQ9!NJ2?*gwbj1mCS^?i2iVeM+ytDo!UroQa_YAEOh_CN_rntUK)+<IFE
zRO^&eR_o5Es_(~H%8AYz0g=Rm!Tgo&U9m>U$QpmG%%AQ*(rHFTS;D6YW#!H?PwxCn
zwJY_5(rh=F&-gt2ZB1gLQPOTdhiC<c_+KFGUHbITK=42Pf~W_rCf0;7{-H!vx{DF*
zL`jRbF&WTVaa7BoA|!N>8R#28BV0!z&Po@dl;wqx=X2L)xb0Z|r19EY4-M(t=->G$
zFERUoj;OR4Uz26~h?e|!MHZ}_XI>_p#2B&Oxy2-|VWFXhb|x{u4<Tm17(Dm_e~LcZ
zI1#4Q1<x*FbHoRE@Ogu%IDstJYNuF`%PEX3p2QdQMqV$~T!TLRxwz<`xV)2ZrStmz
z)-YKE1O1&p_hyDY;o-3OMnM~?s-T{P{3cOrF^1kE;Q*TRHAPat?V}HEq?&@;`Q~R(
z3*Hs1n4OQHSPB6yUum@~v?lDDy!mg<<7)9})H}aX3Nxg;d|BjRk>TBDI*G%sd|CRO
zb_^@Cjg&>bdV1Gm!a*Qz#Hz?C)?#{OX#LHh=iZrbpXV1X!LS{sAt~|%l*RkMsdp5|
zjb8b8a*5lwEcBUhvqbjL%F#;|8@>~LBmZPz`^>jvQ%6RkCd)-6CwALCHm1Z01?x?V
z;gb}jH>WR@8H${!lKTA~Yqu=i9iB0pb<7=JOsJgmJ!k)+f;Rz4zW!2^9D}@9(73Sg
z%?q7C!)4X^jZO8YJcKb>PEh0P%UX+cpE4(u?<04CW9k|1ZaL3DZIothXFE~x^OZSK
zVWUpUOZ+P-1zF@AQGBxb6Kdzm06M1RE30^6=9P4Q*OL;b*xxz!(^;TI;6?bmtENw(
zXNS72d4*Ak%dxTiOpz+i#n#@)X(Oc{`~$vRmi59%Y*TTO5D$yvDs#2Fl-2b_R`*qO
zSymzJLvRB19uxhq12ish+?w}eBf;FT!MDcbw9jFl-T&$R{SS{X?Eb&5?M+}#VE$Uz
zExZ5g`mbjh+>iJl?q@Bm%KuE{?=_h&ET#YL`tL9N{my^C?oOmc`^S5H)g|yO@;_7k
zoBjX4Y=R8@JImnO^uN`}|CY7?djG#?4VIbzn&tmeL5=39PeHEH!mdlt#VLB>;E;%6
qg+Q=}ooQ-eXDQ$=g@bb;)`kCI?(X*NwdOhOu7d1Knd)aIq5lU@D==ID

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing-narrow.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing-narrow.png
deleted file mode 100644
index 4bca8cdafd36545ebbbc0b6264995592f42023fb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 117303
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%0A?Zqw
z;fds%S-0&zFiu4&*xjn#FrGzjkZW#qT))av$N}foCE_N1wG|*|5?&HN^QCjn+}ee7
zQH4Lr$sbk8mPBc+17H7Pxr-w~wQmFK1H^fbB%NZ1ciY9l8G9^!iyi?Nfk^$?-V~Ik
zjHZ#rM#aQcOpJ*y9%x;?S;?p$ZkOK5I!Mg+Tk`ge7+n(_@4fy+;HbfNBE@gw!&=I7
zOp-F5*$Zjixy~JkqQdn=d-%d~Osc~fUXgB-MrAGowre}xnI8RM($NmV(ew*c^_}<_
z&t?sj@+8g+eM7;|*N`bQON4ZB9`0bJAJPzeznAdMqMt`K8#;FeQRf6LM>ApXVFV;<
zN=D|EvZAOHM|%m6yK3MjL?mhNSJk0JM`layIO+OBE53Jb&d#^zm**ItoH>sy_7pxp
PLPA+7MaeR8y)XX*u7m>I

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-marketing.png
deleted file mode 100644
index 206e26e342488126aab5bdac12e6c4d01dd2a643..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-signin.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-signin.png
deleted file mode 100644
index b649a985dcdc95fe1e98de0604e28461eb30067f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22037
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
L$Osn+YJ2~GKm=qG

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-starter.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-starter.png
deleted file mode 100644
index 1bf4b85ecef67d3b7416aea639fd15200a97ce76..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 36099
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
XqnK}`e)Ly9_Crc?YO<x$rUCyS0fK`G

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-sticky-footer.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/bootstrap-example-sticky-footer.png
deleted file mode 100644
index fb80e7b92f9d66eb27d41f9926b632dea4f2ca12..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-chrome.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-chrome.png
deleted file mode 100644
index 8c846c54e0d623fab50aac814ba547b5f621c9cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 55522
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
CVw<!8

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-firefox.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-firefox.png
deleted file mode 100644
index 3dd68b11335ed2a0c5554335980a0ab4b51c8747..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 175994
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
M^+#%zD%QdO58FXL*Z=?k

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-safari.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/browser-icon-safari.png
deleted file mode 100644
index 7aaa29a7939374b03cdd94faf34f4bc361295d95..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 209527
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%0D;;{cMD^0>q;L#4-sY
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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-01.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-01.jpg
deleted file mode 100644
index bedab7d81cc8875f48c3fe7032228cea7ba87e10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 83303
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
WQ&l4$UrcaaT<AC&+JE%#%>M&@mrhau

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-02.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-02.jpg
deleted file mode 100644
index 4ed12cc07c4ac27227727a90895abee0e7755b10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 137070
zcma&NcRbr~^gf&pt+uMvo-M6v%*NhYtG0^0H??PILUh@)YVR6}5~D_}6jiIlCRT(h
zLChj3N}qhb-{<)~|Nidxi<gYo`+e@~zRq>dx$ooO%)g%iI&BRt4Zx*K0Kg^61^9;t
zs8U}2UysZG|G4sh#(y{YfA4Vl(k03_C_n$_!~feq{(T3~Q(t~WHGkz2J>W9^r7QH8
z{&fTHQS7Ap-+Kf8cU-xAmFn8{OVofHw{HHM15p1r70NsSk9>utvN2RshaPDm<VXJT
z&ZEcMYk{K=AMo@zjY)DzZ3C~wpIBin!qUf$NP-VO$9*+U+_jnu;hJ{FbX*a$3JT3#
zle(4IKIUAI9x#@p`?RNXT2L~Fe3jGDdF>J3!^KDxit|sAAmk6LdGA0<Zhk?2Zd$-_
zlYaSksk_^jtD7jxh09Wk+ZjWTvSO$$&y}wAl&??q508ayuDli-l`wej&h|WK-*QFp
z#%*z5%;eryMau2NRF}g$<-sn$lvMXclqE^`Tw(S47y4Q`=y~6q+r#kXdUUySR`siY
z0DCfXr-xbqe@zZmuc<(EiW6Ixj>0_E-RlT{(cq~j@8bY`+ocx5?8L#}ozfdXcPO5(
zVA=;gL)1FR?(Yw=cDrp;Ir&(E{dff1gYjDp#=F8~*0VG<S!Ld^ksAidE10M!9}E*O
z(kI$(tb055HaAOsJlcFf?ls$F^xB{$eQ}p^*O(NQc{TB)d8N8D5aDt-lLOIXuA&`W
zsCtf=dMjKGv%-bGe&Tx{Y9!SHOPwn~jwye18$ZGvWfsp7^W=g)d!4cV5DbBDj>6LF
zsr@=K!ej&zEfu#50`7?ncnoh_UTea@#K+}_Q7E4?^nyri=5lkRm8DQ=_t&q4sD7t{
zjLclLwReVWw2BkG@lf4BeRP5+`p=|nUj3|VVU}=7@%>LrvuL)(!NLBPb&HtBq4?3z
z$P4EuqY?FZH`~JmDtYPQ$db)Dsz|(tSz(y}@@wU8t4bPKg+3AN(!F_!TcKf_V#p_<
zMW>=T%#W~x<z2CH@`y#K&P2%WiU$;>zNtO79k65F>Ni)L;h3F+Uewq%3r@f34bQ~>
zJmXR1zo$Lo;o9nf&n!`VwxO)%ex%dbQDt6SPF6r&ItT|^Wn!$5oRGnUhRN-u<yUQl
zs*D@Yt*h7A>N$kE71<+S)PRH%2ESIOPIGxP&@-^Hv3Jsz7Age)bX2T2nIc;~eB;DE
zfEN}UnNMQQESTa8I#=12B100)`U~U_A{oa6VYX#lQA;?6#o&AuLFV3<TLvNI>y^?+
zw(fiX00j<`9hPStV=TTau@B_!8y15?(eIvhH3=q`I++j2;oDC6UvNEo3%-hoQm4U7
zyV2j3jqj~$hKWwL*O3=Gh2%vtgB28AQTg`V+WQ5D4uqzB>b(@NQL}*5BP?R|z`xOg
z@7Frof^ZGXrt@hG2r-vZc#ydd7EL2yG<123Evp9pAj)dCq&d9s#nNv5Ry2d}r%My7
zOmfVFZV@XSpYF+a<cBq_RqiW2S0!JYy}l-@U^q{@crytMhxd2@OiCb!A)ku=wyh*6
zSpEZ)E9x}kJJJSA2NMuAs$(MJ$@#5;KWO@B`)A$HrjR=rOR9H72N(TPQ&whEEMzpO
z&CYcZ4kW>+R=KSubd<+_A96+yDJk#M^7$Ng)Hn5K{m^`s)!chuqAdsS+e{Gp8)+I{
zZY4`)f}8+CZgyWa3d){%|6$Gi!7_(X$3q9}s*gibWG^R&U+hc=2*GkECJr+CT_=e5
zWKNLH6__%ft+%<5I^%Bp@&G41mDy_dn3dV^GVSnIJ91I*!g{}5*ZX-Gq2WyQKqr{!
znu{U9_!?a{o02TSpfI^uY19TY|D7$VO$KdlH*Gi3pmB7flV&?Xl>HG3wJz?QJ}P15
zHL>Eh@N#eQqrymzdpq&`3YmbY3}nq>C%7UkT#rmuOndBMo*LyS0upoYl6l2sg~==G
z&+Dr+-z{!fNITk7F<~PG9Jh-IYlFSlYK<z)x|b_?9eI8&TS)_$!D)n~N^r%CmknME
zZ(3IiLVGt>T1ZoJt~#noPgf4@w0)R5#Gv&Gl54tSK1TllKP^(9eAJ&P-eBh{HawVi
zK&||Vav8evqHWfVPyc(BPIbm&si#%cKR~nHYWuwrzK3}-d9AiSA%Y174lBxcPhRtR
zuiqI>9=oGE2L{#0)EJA;NjN2`ccFRmEhY2>PQ3Gjsb^lwywq%-fgL)ct^wJ!EUt&K
z^uF4j-`+Kw4vG&;eaxQD9uLrRR5cYyms_#Y)K0erUGkdE3wo#~&u59&vsi$qjS6nB
zY>lAEKdvotR9%P72r7kq_t38j;dr>!@h7Kp+Cnb95JNgm+=r=;40>iCIp{;e#=L8u
zF;UTs9#yHj&Ng}<jAMrSt9;5VYr53>q=XW1QFy<UL50i}PTnft!;tm0b?Fje5o0O;
z-#DSu(qFIBwM{JV3V&Sn%0TIT^id-`H|ec4nR8*U7{k|bjhWzt#-(o?xXnR4yH6Z9
z8DXKJw~M+ZJy76kjh=}EcENkuU0o{E0_a!N{(1}5BfkX513`~%;2eyDJRYIpEydHd
z*2Q9-u;!tD<$nN%1`lV?lXAT2`*M<0-?9S(6%`|f3Te>>L(|+43{Gu46&$nD$VbEY
zUGpN#Cs8H?1dnULc+(>B7~Rmp@W3Gs_wcs!TgP^vc2Y$%t{F0Js0zXfJpn}))zbop
zpEJq>dHDJG`1nPIc}+jy1Wf#Vn)^RTMIZ!1UyeiaLybqh4_-f;nlo6aO3G6IKE3qd
zXW-Yyx_zz4;A?F<gZqDf<=*^7__VMpIO}SspZqkp3Gn7lSxrW>^;FKW`c#9(v54|_
zs>>-iS7BX_P3t*|J!dk#)+t%pFlvD+NM3q}2JWas?KF2>&Kspa+d%cq%)u$EyQ^Ni
zkHro(x~Kf)<TYb?|E6ulQFNsg{;;}J=ub+zz<hOP_=n_Vr+e2;%8WhGpQ$t4t+IjT
zq!tErWObixICXQ@>TPy^Y;kLD<ASKPXBE<HXC}y-9nW(-#LMgG0quD_wRwg8ud(6-
zmV*n1j}s>F`CvS=%UYg(Quk%*>%XmT5Z{@Kd>-Cx+|5D9e*Xu^@8Qk2)5RrqDtdpl
zdYIuZPZjxxN6=4b(K1Nb%z7GfzC1<=a3iIpz}mw<uAXMS>GgAN(^M+ozFPfE=3XAl
z)SDP@e?J|>kyt$BRI3-jYUXWvCPAF2Yly0z5`f%<t5jLPk9W1O=!Z(*cb^3^s`qF-
zaVO_z_=7;5o3S@qPM})&qY{LTkP#T^&SqOWk!!g-#azqlYtZ$#hq!e`RtmErs#-IA
z0qz10sXSVLkX*9-;b*0V&ZbfdIjY4$;2$9S(6-*j{;117C%?hMO^7*OZT#2fs6$5c
zOPFgJ%7gv(rYcTib1J#gu0Z`+Pt3j;!?fZ(?Y0??wTl;j$NqNgDZMywJ$znDX4ysF
zYfsC|gU`b67<J5fF-(AWVdEmqZRVdR+>K$v8f@KZ?~jqo<<I{CB<y==h0KQTPQ}Q`
z2oP;CcPEy0tVBcbZ39H_g5co}D^F#3`z#g5gjsE}2$W?Is+u@4Rq(zNs@&g<dv*DW
z%fL_$Z7nxX#I)YxWOxd$l2+?)Ymvi!hg3<o+L_A0dgjoe(c%(y5M<)8%1UR{S8A37
z6{M;-Lv2cjRIw$D2WH48#ed#lIWr6_WV+A~2mh&8#K6kt+jCOi(`R@00gwu~fqwvK
zGrp=3qyEuV>$_$5w19EmnfNfOP1$fi+^S6HilGA9J@*>Q7Y0(pk=V{JXBt=c25b0q
zxi`;yi$A}-C0)g!iq5Z(rLJrmERfx|6(;oI@UEdNub;SrK5;m-H!j@K`eZg2{c$e2
zL{WWR_!0ChnfRK8gN^nECUJaP$+<22)jNF~$nDn-QxZCmC|C8xS6UqU@5Ad9Kr6_t
z%v)2*pEu@gc80x{yOlq7q$`OdHy75<X~>@D{Jy^`AOe#QtxPoaMrORGFp0g(z76JO
z53jS>m5&|>9Wl*jtAp%2KfSmwrCaq6;Dkq`4y*eGf8<o%kr}F|naaGy*;8wW9USQR
z@MS@QOHj9M=xb)73I7PU?A|b-%Z}Vwl78ZL2`R2=b*_xuuyc_W*2_xt!Na9VTyZ4n
z$NvB)mKu%hoU<ZLY{Z_fBvaTBbOOB{Z#}-#C~H;*eo+{6;o-1IfJ(ZwEJ`GrSxz-<
zZa3;9h<65evAcIiL+nPAM-`(Un`R#|dB8R5FWsQ$92E%RlXXJleVFksNydpq6~;F`
z_zFM?39;|rMJKuvFw#x8b!?{4iAHLTx^NcLqSY2#H{+PM<&&Fq{=)RLH#SXr&q`l1
zW7T`N?c@3sGMAI(%o@DsmNKEs{BQ1ZTs^iau}|y*$%TrRqVGJ1MF(I8wXj;Rg`zZ4
zvkPiR+G(tfpgK|U<(|3Mnvk|a<NMdlWJlUhbnH~VD~PxWOY0n^lx<l0#D_LD4}OjR
zsZ3AgaBFMJ^oh&*I?@<f^G&7e`?qi3zN_}4mu&m7!!z5=z*ws8DaTSFF?a8KcdV;A
zpFCsWVj<%?)TbJ4-s`lEz^~{Pjd`wbammH1d>So>eEw3^9dTYg>)C8ezLk1vRuESE
z##9*Q)d)=iJN3@1ei&`C0i)hH9%{HY?Q++U7t+?RWoBO3qO$5{h`Q8&R(C2}X;ELi
z*oQM;HRvhI4H&ea?PPV(2p9h<vQ*6bVj+})jU3+&X|pOY{Cc*^*<o;4eR`0w+3<y3
z+;KK9Ojn4LQAk18IP{v3CAVv^tEp;Ly0TkN=+p<?AJe2VF9RO;w2cD``HcKZ&r`&X
zO~lp52>!*MDG%eX2g2CLCRy5t;SYUE`S^v7&b;t6)Aap6ohykI<4ZXbPi6T&ZLtVw
z2xfIkXHK^1Y$>Z6JnOus?{<RFG|*#8uzpowupqG=>NwSaX)EwPC<c0xSa2y52x+fJ
zwJF}#dIs39vKha?{a*D7k)NhTFzVZbZ97B}7s1`AIVB}2#Z=Zm%~>%w6Aj<5t?_70
zrv~3>k-nd7--1s+S^`pOjJ#}^+q94mPX7F|ahBzv$qI*92@8UU$7i~vvG*7#4_AP^
zEzoQ>KYj#U&NhjAu$TpM9gu9+I3>LLP~isA9JdNtbUI^k;SwwO4h}sTOWWq*vHDtP
z+mLTWAvd-y$KzS2sY+$US({Z^vgYjPKaWUorzXp_I~-=8pB1=jO<VE?<3T*G7<?te
z-SGfg(?`oHucQ*P)TiAUSNDA_d%t+#r~<a<MzcA5vdh<l`@HNuAvd|<&r#16>#Vjj
zHh0QvJVIDVS`W%khC|KYBAidW?Y-}Bnza5^b9%J(;6d(#sI>3_%+>D4)(uO)HhxzY
zl59(l7Awi-2^Wbh{PKSfc$Suy_3Yb7In`C4UmnLxbgfbGP`7_hy0h5sw>@^1JItW<
zs4r+#G$YkSJT5ghxrAq#HMzoH+^N=_f31w4&zZ9|XnQkV+UuIhhBy51qgJJwv$d{*
zf)g_hYX%mv6-pcJnI5)nC@H|~nYkuOjn<lN;0p1aZOApApNyBwzlpeWrI47`$58sF
zbo}vToVpzPHuF5dm@w6K<=JPAOTZAtCjvt*3B4m*%D$&Qi?$={DYSf)IGhfN<rity
zM^WMx({TS2@&-?g2_hb>g_Sp3lo7iy&_s~;nK_WrMV2|Zw}BYu4znsV!7oq7K9S}-
zQZutM(=)Pjb22{!9vf2&V6CVct*UZrV``@D@1qWL@IcH(c_ryoa(~(NBd5A+bcWN3
z2HZH-n79m{Mh_`#bXdw-mYLn(U=%395RXjn7HNze<TX7USZB&w?ShBlgd}L<q8Z-?
zs4V*E3B)rwES{HdFRIR<8ek@Vv>kclk3?EE$|^{6RNs394m;&>DgEhOmX)+4K?RUS
z46d@x(6qh0yRCren+EZlf#fp0%+fx0tue2fUg9Z!kW=Ia<pGL|g9LdmRMb-Z)*9vz
z3$o_sJ?a|0-zGkzH9k(EE)exzly|+yAE2NMIw>v|h?}+Ct34s(l6tT0#vWyLKArOL
z1G8*voQn;2n3TN`vt}82<pZ&C!*bVu`P#R~&KPoK)(ZViLhh<d$(ZfpQSZ6rEyFTn
zdy9VnrCVJ807kfm&BNBN$6KYAQ~GJu?NP;RAQnB1Jt1Gr!r%IGm)%8(PwA=)e~@sh
zZQG2C9et@TCslZp1<F)#GzFB9dn*pg&&MzLn0!C2VUFLG?;ab_(Bz)cNZ>}8@<d2m
zU?5&nr|0eZC*bUkcP3FbU!ch@QHU_2O?hl(lX*{E@LB1)DG8*Z`qU&)S?R=XFbfBI
z>tlI=V2WK%n_4#Dp4-v`qNPm#0W{B|=gulu;6Ay9Ylnq<vVr44Lzfrr(}Kama2`1@
z>kd!3Y`W_-YCVvjx3#9Vq+ESBeAl$D-?C=z_WmZM)zWoQ_%`oPPe>dQcKO=1YZ$XP
zx0;+SeiRJM3QNUHCIvgHpPgK%jz+Fc%6a>zMNSycNe#VMt$oB?Yf!RA*3M({NL8=s
z3AUXLYMFCgDXTfH&W1M4IOF?z`<}h<6Mb}|eD#w$JE3%Llg$)D{V+cA!w2tMH1V0G
z@UCs)g&$Lw6H}Jic2834=7p!&r28zWO;XhPHJxO=FX_C=XqzWe*QMK>5t}zM5W;r;
zf`Nka&gl7_V=G8;pX9@*VhM?HanbLqjRH6PxR2x>iAX6HA-$P5;gsZ{c6dP9&!O84
zm}bc(#TKl{;D|rsm{0HyZ!)WSd(aG{b;t(`FdeyN7JRV`8o~tOM2^lF-?2TfjX^kY
z8|)k8*S~`3&K8&fO;$^uj_prAN?-~mziv7&`#Ps;GvxPL+PN@Eq_lJ)4*^U7e<)QZ
z0F#1iy@q7P4t742?S}3p9-AUEciYc)V^+02dR!VTy``WhA-gx*sZi9~;jb+eMjTL(
z3S#hWR5@O<VmWkF)U?0l`ba@aJ}foQby98uXw`_Sac_*)n`!*eKoFvNd9oT>;A&9-
zH%Tx~EYz7hA_VG>iw5p|8!J`hzqKEo@^v{!)qg9QXVdF)N=eKK@QNg%jc4bM`))Au
zkTZF3!LU1wPLi!NLp^^iE>Ko<F=$mhZO_M=>2(l7nP6rux>Kbix(GiGUo$2Ct?ZuP
zn(VHmZ0Wd}&rEL&@>SBZcA9NMa{ih<<m1~4(Yr?}pBeV+>O?x}&5KuOGXnJ@{9W5$
zX2yHx^n0`{R;SVkn!tMaL4CDfE206jgo5+Z4a=$i>X#WUMseKl-$A8+v<D3>#R`hg
zo!d%0_(e%UmtA!*Fr#_fiAABkG;6_r?x)>fM{y5j6Y5xp6GBAh;lsdA?Vk}A%qD+}
z)BXWM+JK?sf(SFL*eD|$mp{>$yz<cbo}6DmQ7+Yp!H>hdFf~p_dEW$g*|VvVYWL%K
zp<LYCN<CO+&dQ1R%}Zh#o(1nKJmrRS!)pbkWKl9VMGWJ9K_xF&F-ivpZ!=iTN-5es
zZPczWf*$|4P(N6OGoB8)pB8CFU6)Y`EBw&^v8EvVn7^S(Yh8C@s9kJdL^Y-H*Ps(?
zB#^*`ExToa<@o{5i?=Yf{fv+fH-kZdo+mDXO}t(b=OgL+KSD(E@_Ga=Hcv2DCvba}
zUJ7cS8p}e7@6IZ>au7SvCBuEz>2(VY#f-6^Z``rHHO;>Awvl3lOwJsoCKW7bD_3;n
zF^+xnuC8?u+}C9m5=ur}UE6m{^^<!TR@FGgu6`Hzko8*ON5Xr_b=$&Y{<@=<oObb*
z4rZvYJfca9#xaWs)FpMj=Rg^nf*F&jP10S!F{-GY<1#yAgm70G5O8ruVed{V^1=Hm
zPYavD880I-eei(XBi=`fB_^5%i)immv-aV(0QJVGvNbkWn?hsHv9B3lH!;H}Rd}up
zZM`lTxgM!_l@W2F!iR(9U$#c%1IN*A$<`e;!UqPKzX#O9(u=?MW*S{7(_7BDasTB|
z5xK_j?DdR1V<O9N`;)zz!iwM9f9e^LAboIpS87@*54HLSgdZj45NlP>%0ICIhMysT
z1EuGS?Pnbj_#c!JIz@+P#jUbYi*%jS{T|aTD%#FWuHl74n-bem{zW?7ViZo!<!+>U
z>EzFx_LhyaV0^jl4zor2^R8|+l}?;^g2A=k`ijb{Mj?UI!YnT)ghtJGZlxHR%jJA<
zu#5||Pf4iik@RBT!YfZI8f+(9Y$^_f75#es$hmT^aY+~ap$9mi!i9g&7{Nnb$2d%_
zB80H(<~KzjqXf?OZlXg_{NZO6c8hd{tlgr<W@1Nz>II!5Ypb=RxQ&&oPFL9j4lBLo
zwpYCpvz{a+L{%Am4w4hrXkqjeNvz(s^64otkL6<QN4*-T4oq;IO&3GxA*YI;LQy8e
zldT2*&#I(PzR&dScLrrt8*ch{-f}HTpMo21-!ml9&D=};>$D~SwR#^3)K*DD0yW)e
zlLFG!c{J;?h!&<`1|mZniMpB`wb8#A)1Cr9Lzxi-T3yoGNL+&!RgHKF>~40?w<&?c
zW>abj!luy-<W}f~v<IR7an7M-xyk48a>zGr0y=+rRNnTjz-(&p9wbM~Ki`xispaXA
z_<)`zQ}N<}j62mOR>n`l-!BeIw7}wW5ic(T9);K)+SQ&v@GgSB?&a3+o6)TG-O~lL
zse|<EKlB9$(xE8!(jnyriYwdBcGJ+GBTw{A#zl8y&_Iuk^u-MQG?ZAoRe7%7@S1x*
z^x!d!s9k6t<JO}~kjPhlR^JY$OS%2!+Hg|=u?3+dN$4^qgycu<37PIODf|N{mtP(V
z{_>>6W!BUs-_RZR<9Ap_Rc^vFfKuVaAwOG^j%Ff2P13yawJB^D8W?xN-**8;6a=&{
zF0&#n(wta(fZ8F?K{r*>N-YQ7Zt=#TQ#;_trf4p>Z1{<%nK2sZNingtj<u8@w(2?^
z)M{CFZ!dz%w#c}qyY6P`w%O3NgO{0Mhs)FBcRvm<9SjCC4}AW;QcGgL7^z&`x{P}9
z`3vn1yMDZfjYo9uDqE6WI+5(LNsqWp2bkw?_JU!;LRgBQzrDdGEFX=6n^jCJEUoy8
zuI!oKQVN?$(s#^?v`8|d>jn|B5Wt%%mGQDkXkj(Wn40#pUzNxc9o|z!%}$jEI1M34
z6pA)m6rS(NS@uU8Xr8lOvaY1$ip$Rqu(u~v$9yS)k-RlIIN0@L&ebr^aaIay=_%?z
zj?TB;dU^8?zeouFaCmS>s$LH<Uhidhy{Eon#ZQCoEyiE-B?gJ2igcKiqW;+(nsK}_
zqGh>1A`G><h4}i_F6<N^8L)x`>ekaCcm@M8z?)#YC<{|aUcMn?T?oo<@o@!Eem~Ck
z&~w)q0o2~W;Y2&&IJu0%Mr-dzAfI?l#G5J;RLU>a?9HS4I*;j1mv@e)di&XCBxsU+
ztmCYUVtnrHUClOq?A&hCW;(LpF+XUW_L_hg>LYY_cqSvnGR9;6zSm;v+}fvx9J7Ki
zaSud4(kphrZcXOKJb5j2f|p1@Z?e}!<A3)CtoH&n>*$c6dA6>Pl?WbF2$Ku%a7SEw
z6`aI!jOEu<|65FNW7%4bssK;p;0y3$V~ZOY_2DJgY(MH|?IDe_YlEC2FDDz@ChSLr
z>UQIQ=ZeKuu4UB}{;sSpyEhxp*LYCwjWLaNPS4IueHg}QXDeCia1nGcESzi1%l;M<
z+}E<x9^2}2;radLVE7--)Com;lH#@GHBqVM!?HQ$Pfd6Fk2*N}g4S0pG|_3j;;C7~
zH&wEt3{C4ENAgS-9}|V)yqNtobXp<A1DuHi+E`K+e&_snF|5gmStoJ;CqpVV2`_(9
zr6J}$YgJJDbr;VxXZ_uWTQC8|7Dc}{s4Q05i`XKrIWHc=rEvCzd0`98U&pn(cy8r5
z*ajUmvSi_A-rQE_FN4XC*2~mneTlOY{lH}4X&X)8T5b>OT3>G5Q7R{k{?zeJSn4Fm
z12t9XB0)(jJ%S(8kUYk9kK;+&Mvp6Y7ll0xnU1l%G3xMR7+A1^LeLP(yCJ*nLV4$P
z%WfGDWOBA`>+diUxY96N?Ga>Jl%tjX;Y2;JNP5c8EN(@$H;EjmN3nI@mPfh81h47`
zf_~axtR8U~ixnzCLkF9y_}*~T6Hz{gv^%28&_Ei5_@Bp$O-_pvmW>P%u6yEgO-Oj?
zy6?fw#c28W`PfuOif9_8^?~Bn5kONFh_mHn-G?%8JB5^0o@U|TNd!=5*H{IjZ3e48
z-%no%{H2gnYreXY@aReUAI+H6Ut3iN-ehLtCmp(EXJ^f<(}lqJrItq_FRHp4{S^bp
z4+*HCX`kvPPY^g5<JIgrJA9pZhyUkf@FiE=QRMof@fM^;25LuxsDIjgaZu+a294rK
zo948W{s*u)#rymN@C~(tl0vSFr>6A)lT;azeoid{aVo-UhSUgQb&%d-`=5C5^g<Q<
ztPOlxCu}E7ai^O06C1nG;h<fF3&PdaHc9C&<`UhYP3EXn;<U@CP%5}CnQ=~}Ruy|7
zaGN*wDRSBzahR++2fxv=$xOX|f2LY0(_66R=*mjXqb0^(ZwuP4+S8KBIg!_^$^uJi
z8Sf07cTanE9`N<M7d3dbe>yBfNc;orU&jB+>+$=!8W50G2GRy+4eL6kd-BHA(d+QT
zOtL*TexQYIPMkNU7tZ%HswvoN>;FejgkVSDZiboI6o(!X((P@TYx3Sz3A-4qhxePT
zt`E3+)$6uOx?xS%)MJY%C)J9cH;uPhe8{w<Vyz18S^qBr+%>t-<$hb!9u$p*l;rLh
z_g8XH>ZAR>v@bbUJP2@R{8pQhc&X~JdwblWFH$Ph?ayED3C>>e=xg%tvydQd$Gl!Y
zaI*zt9bJXxX&umccfjH%B&5R56isn*G#m$nTV_zGDu+1kfG@V-<gy#At4*cp(kMH`
zJecbYncMZFn4L1uaG5{sRT}NH@My#;8@EB;WbthC7rUd|O^%~G(<oxAO=5U%>ItUb
z)@|UYxg<?5W@E(3x2;>Dh)Bcxv0KwP@?*DLkID_gE`<CKP$m_hmU+VIRmLwn7}yNT
z<Lm*&8BsF21S2MALsRwRQp+FJhuRb&_#9_RDOnNao@Nvvf!dVfkFareJb$(m)|ASu
z1ONU*dz&}Y+J3C1jGVYQ7TTL4w!mI%_D(mVsKn!BN;%Hi;_p?zSaHAc!=ZR@%2`io
z0>n<a`)?OfS?L82yQB$z^kU#}wd%^7lL!4-ihMEAd!<~Gkx|=C)?^Bn*cY7_c6cDR
zjFu*la}_k7g#ab|mmtTevU&0_tA`*czJ2Jqkyb}HaMmGg1D>ib*FM`hrd)^GyGmy}
z{DqJA#T#|h*6s_M{OI+H3Kc1AhuwSGyieP~K(3t3;@PlRP>y#FVkdiE%Y!?$d*<#I
zH&v;?)1M1}Q>b610p~JLinShBDxyeu$b;bpjeXY}TK4p}@>Qi?>%R<*E(*pP>uKNl
zJzLlpM8dw$>XX%7>Q6ADM0QOuB_<7^Q#=J?4BF31?O+sFvdsG&|LYY6MLQE*NdDQ*
zUv$V$;0gkGq7%p`Db7O<a}H&`ubQh=*6IUO%Vo|_%gfl3)Q&E2JwY=!G2EfL&dxiu
z(0ET3CLKJQZz85FbK*2~Vq+0+LV(k6?Yit3i2KSyIr_8s*cCCZzv$HaGOF%5;I;=J
zPil%@tz)y63nF&CXY7;BYX-$pfa9UqSPJ}sPTS%9pu%E`0D6#^OXOZ{Rn5ikrm2Tj
zm)pS?)2fem4t86*{gp#@%CT!ZlZ4c3iMdy&6z`djZRzVgP*%L(TcT1jz0CIZY0WqZ
zlJ)J#a<kfZ;r;CPSc^ekSlgR5lcRSTQ*CzJg{JN_VvDjT9R07D*nywk0U~e0-CC^6
zQmhds*)9pAb=lZV5o^{m*}?Ty5H*-F5_D6&vJ@0!1{TwB?&*-n)l~4N)&0=!r%wnp
z6p914R-aSMJKtkDUW9kwR#*$)oo9a~wN<j5^}N<?*3+gDe$bCmNBT+130;kBUG%6^
ztXZ?jr>$jQOx|vdnnjbwjlCF#S@YR}E!E*~kIWhrueemZa0l#*raqAq(!2_|N=;fR
z<+>?%?RNIZi3r}o5L)ZJHNQZvu{f|$DUe2mQt%9@v_SYDxe9S0bapkX%RL4Ap-f^)
zuIa+gqTv?u$5^xQKl#7FNr5qIrlrrHn%ys6cH;f@Yq`W}Zf`Q}eP;c%;NgOMx~p72
z(j&*_XmC6+-6e?qYoN2-mqj#}(k%VQr4tv!LOzHcIMi;c6&n|&wYtc2B2Qi12jKC!
zwxk`-5Ul%PF8gnnZw4gA)o%%#d0qZJ+gJ=GFjA5s#t3i*xE1#MlTUIhn%;)8<V?#r
zNw4(dWri|-V~RFHyJ>{+Qf!M#{PVk3Q}u&&(KfLOiOKduB`@xj$`<I`1SP6ItEH7B
zZkkU+Y;HQ<5%1m4;e&xb#R|V{oioxJ27&;>^+AXK01b-5P#3Mfu%Q)E0Y~GE`&WXu
z@zMYe^h+En=xb_@@1C|(5JEg!#G0$?JzKwa9mP4cRZ^V6t#w?Tp~nN@7=$pKqAUZ|
zVRcM)j2-l0zpl}tU3-<JM0iCTb#O@4-F7Q>Ti|<QddyT}ZX~Ax0sO=4?o`z+!>I<8
z+0eb09M?uF7vi7w?9FeK*+wP0^nLu8A5+yOsWWtCoO|H#Vom;zYEM|-O7fFsG_xLF
z%4ZfsF;U8k(5w_H_=FNydO^1)n*Emg=VgF-SrNPgj+7#d8F5SmI`e3n2zywbEgbK*
zs)w0mMV#&2ck~&Hr~cC%^GfsPU#f84=PwA7vP2$d7nN@c#N=uAMCvu;I>u69o@{R8
zx?Dk9xn<gdCwRVbNX#@hg=p-Nuaa;1-f@x0SFh1^YV?A<R@?R*dABC-my+-Pal!uF
z@}r?#DW7?O4*?VWlf`xbEBR-b)+y^8NaIG!DdQI?12R=%Eam-CC#(%_MKHNo#+g*v
z>=I7YNM`%fld&ib`n?o-y3sFRKD;m)AO^GnddJ#f(ZLO(g+MgRh>}|`%Hb^U48^1E
zl(j>%?>G@Q2_cxy2ii*IWA#%|qZLnnGbSu5etuTx^^n@>xhup#`?N5y_PgPMZV1iy
zeK`erjsI5nGC<k~a8>cO;A8wUSLa|LBZ5S+&sx^c?Yadsm@c082fAF_G6P+u!#iMd
z+y-tpWLluP&DyJ`@?E9#d*}CO-&It;KmGRfSvMR`ZmMp(;%*5;l53Qp(RWd|ZPo~e
z)J|NT^Rn_SR$R;a(~?&2&zQ5T7xTJQdAe=}+hvXl`fsZ|q_*Fhif!JWuEjlW5ZaX<
zasT4=9YC>-j?x=<S>%U~7Wz-0Um$BQDDhY`ur*+*bI|ca1O+*I=Z%bFdL7>B{W!F+
zj%E73+H6`_knTgqtBemHN+>8OsOehkN+>*(P`xhaR<0P?VF4>l6Y#l0{3=i?2C?(k
z2GRz$1Q4;A0Y_G=MO7pzSu4G%Zr3iqvvoO*5Y3wBP1NrIw>~nX2>oOm*ILVJv!w^@
zF%Hz10dMXD0Cb7qyW`%k+-PZ>7*}QW7Bd1V)ax8nWu<UVMc9+ySe*jjR81>d*z;$u
zgag~1+czlV)*U7$Ha0dcHU@eYmfH;U+~dzp4(+~##NVOc?*VsGPQJ$9fy=eQX?3hS
z`IuLyD#0VcqvWca-6!PS2DEd}^`N<Hmw}%+-l)<UPS+(xb1*S?=4vdlYuu0E`46$n
zH(7XuA5H&i1`Rr9t%7u`KOjJPT%8H3tfdyzlu%}wrv4#<k`9!^RZT&APrmro($j-L
zhACrvdt+mJwRB^KAdtV|-q5P#uKDSiU%uvrr9iV;`qy0*FC!)$%e1<*;gyGo)vXL{
z`uKKWofb<BjZHw2L0n<GrT!4gb(yZ0=c@b9Z?h=>t4{26JTbigp>>JwV>z3<R3YoC
zY=UDJB~4MG_W<e!=Jf&-RD>uXq3JyY2GD{PXFnT~V&6wbMaLy3CnYA?cSZy`hk2<<
zsHstoT*5*n^t>+6hpQt`B*Ge|{O<@tn`9l0Qar&^X0!|a!!uPZ9Qnfp&o5YvxrN#k
zsb$qu#j|J|=DfiX<H*|kpD8Ll)DI}NaDpS<JG!g)sWskKs8|}-+;qyK<n`dJUXZqa
zl@2f=Fb@HWQLl_Qq%IbUrxZwjLM0BLmWnBopY_Fo>mKKKDG@0tUUpt?ZV};#K#lc6
zd>dpF9{$4VB&^1X+vI@ThFvwS6sUiyZ5uw~(`r*4j92)Zi>69b^vEuBg=U19rOqlc
z)tW0&NAP@dqU*jN!%L^eL*q!XjQSZsg)a88fgN_Beu>tJb(NCQG4_G9(KW<M1Sl!s
z15sc~Jw=W82PFad<Ly-B;OO*V=8OGzB{?}MIWYkdF>dxp-0T9th(OaJs4JoE^(Gfs
z?ZF8=vhQydu`-Fx$65|{s^JRj^K7;eY2q+RazCrd?fY)(o_*n&vz7+yvhvv@<!8Kp
zLl*)1<ir|rKjs--6b~g7b@Nd3P^<AIs2ZKPM*(>T9rIQ}3I9Q+2`;z!gQ6@ZYm_WC
zy0U_IlG09g>+$DTpI2#EpZE1?^!93~_o%CPsdRU#cK2xXp*<#VqIWO8ANpi%J>I}D
zq(YqrX1Z@>vuR~-a^>KBn&+#gavyG$e7{}kOl6r~xW+bgInzAK_18bZ`aL}_hL_Z8
zp!+XbyLqmv{I6-0eYR&5{O+sVEyU`9p3yi_gksn+D+&}xk$*F@g~~|E%e)@TDRmUe
z&iI2wVtgWnT}ep^332gpaWS#+Q4ujwQL%CH$*yC~RvF9d$xg6Lb(yh+BWckC(Tu&%
zP<bXKK7eA^5k@h}M{lWlL5Up$E?GO7f~$Wv<F!cs2s0=;2cop^U#9DppmCz3SmgLL
zis$Mxx_3M@|5+K~@mg4>^D1RAS$kzE;zjWQFkOUY`xyl|3i*K4>J*PZ8<zIG$Hm3L
z!NSDEaEJcR?ORN@sVJhsz`({nlxx`J^XqVZ*XcC))PaAuwKwwp$+D=oL-YJj2!~BZ
zxTE@*3?V_6$~ISh<lvM`q>74p#(jw&;`<!N{~Y$@KL-F&O!<%dtPyk+SBUt}3nF;R
z|27<473u-%8nO1tQW8o^sZ;kM-Y$G2u8y@ANE?u%P0=y<x3{^}fBvjf4w}thYRbrH
zzGBsUX`c0Y<|r}u4R1&|`E~U<Tj1l=k#=9}Vey+qLZ-RGaRC;4KQgv>KcP$n^lnC~
zB8)db>}{v+WBQo$3&*W+lbv)?Z>j&|e1a22Ga^)|RqiKf-n~XyR+Un|N*aw~M#{FX
z5hukd!D+obn(8T@ylLu!r99fIoJ7i6ro0YIqryn(K3H}vb|`Xi;Nfv7D&{S5nw6wh
zV{C8pEy$SjieooA?()2Gd2~PEBdykN{Fm5wRg<Ji7$18&xJpGs;*QeB*+{8qXkV$6
z6^jZZ#RDm*ykw;i{y%|;P^IeyeR{^KA^AgRrlh;L@;^pVVEhjype98hfYfz@9S|KJ
zeK3;;Fu@Up`la#YElP?Kw`<30Yg1AxS<yc9i8oG&Wd^w2kIFp2HTmBYxSEnHkJn!b
z5KQy6OTnacxp_`2sr55rNZVOl!DQR*b#D>fXLqlGVtCoFNl-gdcuxI{G9wD1Mk#)%
zvf@&iK!2=Tm(}~<b_7M#jQ%HwphHoPw2z6Rr64&Tzg^o_ihjZOU!_FcwnTg2P^MM*
z2zM3eaZh?3-en+-e<zT#kNV-7e=QwkV@Nw+2Qg7$l12UM=-qRrvo_Jt<DSN?g+xO2
z@a0R1m!E3z+`huv4T^D~qwwbO-K!Mmql<VbqHRZMaA&^+xbk0rJ0(v4f8)~SE0h-Z
z|LJZ2pZNWIMkm;c=Mf1ltJ_|^urU0-aQNU=owlG4Dk&`R9jP+iw?pIHHoA5TrWm>j
z+b%uW4+z)~*xU2pKL{K;gd81_Qztf0;imO#E0lBmmDL{;;R_cR<p<5SCnp7Vh3QPX
zTKX2+H$(JgTkL#`rmg?}#*T0J^?K@Y9zf@1^xFyw9hZNu7DRQEFpd#&4zg=<lzZ+X
ztqVd5hoqgRwXmF1Ib`y-g&QrOQlaYT?#}ks#^%<>go0leZJ2C}%-3D{BufA4cmo-p
zY}J7(bIDW|6}@-o`t?UFIQ%qH62D$x7fswRO1PUfY&_(NNWu1SwP(5zlPr2M?t#fl
zzBW}$oofLuO+}=`wZ5+SnG|`SUR{BpNYFI`$Hw0BuYOW}cI4d}pX%!Bg|@pRN<KnQ
zV7^Ue25!EuU%Qz`tkKIZVOODFjf$~COXO3fOay_jIPtke#P%M4?>-deeFZgn=o{aA
zAUl5TgRa_e!0}Yt{%<E7DR`63A<7KbCM4UkTLKqUQkH(tb*`*a!Yv|%g4{5XHl7<a
zo?~2z_7Uq9E%8YBGN1>Omp?rs?QE})uZbv&5B-XpjoloZo}Qf^tCCi8T08lB8e|&w
zH}4M$kE+LDn(Aw6O0<akVR!E33;B)M4qqh5v=rTly`i>N;7)co;{3~b22*VPytceH
zQIDKfW|lh)a@WZmIygCni>g}7G#|hj?#d&#BRcgWhM{VuAFGZk_xh+qk73+}!KXo|
zify4Dwaa^924b*trG!6!e)roFxa4;m&pZx@D{`kt4``q#zq`av<uLN+v=@Z3k-f0#
zhCm8=dfdTLQa7+MG3k~zYEFGvn|v5zq!U{fVw*bDmvjziUR1uGJ2XKGo>H*3nAX*m
zHpQ~0HK~2>6Z%#0ecP=-W);0jZZlA=AnzW^pGl7eLfh}XT^Xq%w-4<>3qr2*OFeE2
zUSD4yBg%&ykx9Y&*7JE`=F5^zzOQ{<XZ#F&i(Vc0QMgHK0#TR#^ez3dK(?SrxJ%=q
z(NO15ldoyCG&fvP4iEJ^`FgGtZMC*cjIMn686^-KuT>X_Efm)aZZVWq(Y_4}l{-aO
z*XZELa;@lsdxAZCVH1S2J0%-k(ZfG~{#;sG>GdH`+uW9Gqg_a<t}e*;@LO5>wY>Ce
zRceDo;NtG6nl<WMd8H)E?wv@OP@5!xKRuHrG8r%D#tXwvCCv}?@$2hJqVlu_7wIF|
zk^80Ua;_0PrTVYdQp)t_hM~kfJ2Tr+9d<}Z$m`c;`ZcN8gRl#m@b{bH(NzxEA#C5;
ziLD)X;1jWijjavR)($!J4EA`0)<;yjZ~w$*Vi==n=hRW}<NM&--m6thO$=HLv5>A0
z=J;rZR+yh9b?8S~u#_|&EHCwyHCg{T*;fS)CKPWxXP__et3Xeyv#I5Tz%E9-oiatG
zMcAB8G288@ZrJ`IMcd<vP%aTyC)#_0*cA=yKQ4Kg3GdT0%(<v)M;ZJ^7ljDna88Gz
zlnFe6FwOlseJ${5+Cb2F%zHgnB%jp4gr1;Mc$n$AmGLS;T3Z(SAUqS>iA}NbHIw~;
zNAbETEQ?hUQt4`Zl4_jR;fv3;u&L3}@u~6gnQVgI4GH!eM~XG7p>4jpCkpLURc<3A
zBS{u&6;-Eap=THj3>Iu%V2}&PP)zN|j%1hVw*)TbJaTn;mrj@865FS+uDY?YsQY_`
zn3Ob}qv=gk5a#AB_Vb|GKV)m6p?-+U$S99^vl?%d*Wct867m{NR$2@{mI(+5_zkr+
zNLf2@ww+p&Ec1PBd$x-k8*K^ui{2Rb#|j<v2?g}tZEM=x-rm|;<Q8hXV^FKXx$ydW
z{;L1*sifWmJ|OSiw`KJ784iWAxOK?3!o0OkSyOTM;DF-@e^KA+Nf@;Clzpxr`{Z$6
zF_URVnp<8|jakV$#T%P;PumFW3VU6-?|=OMt1Oz#WDHEePS~`<V5d!A{o!pn40LH4
zP^ToBr3eo4;o;7*uhkS8CRuqB_7A{9S$&jMn?wblw)PD}-n>z_oUp&IATap(t<30{
zjV(g$(+S6@gP;3h7hu#ncaF6NI1)rhZVd$G3H<knGx$BXg=0mL;p(`NLJ?8rzTbae
zOJ_<PB#b^Dnwr~gBr6qM3{^)yD0Xz>_EDlSZSt`*E8m2LNBf$%t-UH#{0ZGNF@yOU
zcRxf1M#`>90bLb1b5CuPwMIJoY!v0B-nxlu)3tov6?`YEbHwE7?2<RA+Y~%Gr~+xs
zAtBqiqic6hFOoxi^;46j?_@5&x^UyZp>Mu=MEVLHV%O9@l{;+>p4O>=Kwy?#BR`3F
z^RB`|F1a&#_&rq&;`g76d+B|7v6yMA@i^}k3i<*Yj)Q+%1V_oOx-zo9C7$J%1BS_s
z^c029)0kUCh-~+Q(y$OywbgvnOk`r~G-~Wnk$Y$7qCGAt{EmG8!7J#J_S&$-Hu<<u
zu}OSw6)S|W*{(kIM&@`T+Z3&Atrg-i70~7r*_Jwq37__%-#-taev#s0@)#71Fp6{%
z(!23tBsV=c<dD_h$%+JRq)(Fb{>-)yEwJNhKMm1Cx)lVfORYLEA)A8M8LD7%FgZE7
zR#@=Yljc9odxMNlIg8_mAtU-1L*kT)7Se`?iN|thB6GdRaI@2u`)d;$#|!3x2m6#L
zzPB%Y>Zu@>oesK-xKbrKVdZ7W*#9Oe+=8^V{)9L{ZmuXbP?By>G_@|U%f!kDk>(@H
zWPNfxjMI@#!7n~An&4PMy^GkEE|~%cH^}Gm@b<Fc?qS1dWzl>5(n_4a5$wLxv$*<!
zb7iN|^~MtJaAm>1y)fcf8;B3Yz>uelFtN043c`O$)8{-Pjg=SBn@PGSEBH^?SXoeX
z+>O&tf8kwLnzZhV59Dd>@d_6}XF`^diJtbYwjeLLbA9aM#34q`tFcT$wxtCMm4!l2
znxShp!T1-XL&apBdQ=&lMVTe#VBva7Qm%KExzIuEh@_xwb{1^2dT!H1*AYuYz$Z-j
zH?-7&a>loXUj6+CkdH5Dm6Jz;D?afWh9EQ5=hJ~Y_MK{--h*m!4HG(5a`LTGJBMwy
z!-?p*9m^4g+OFKp)S>;aTRv;D?`;>KkL~P`<zbt5q<i)hMCJ1rTDPm_EY|X#>Z**;
zS}(Njwzry)f_@Cs_1qWmNX?4Fc=)X@9sFrYgvrf8bPa)R662&V#yD`63lD<N6G6{<
z@EwEPv}wd+aO6<fDNIfZ@6DN3CInSjWWn07M2ku*y*R{|pfF>*>s^EUUptg@S#MLm
z6XdBt)XuX|m=Bu>X>4tsu<`i}*1VjJoO2$;jcRcIomU9Uo_=m)<fv_9vygH7$<vu}
zR)LQ-dW}<y(#%X%<+1v{WvChys-}kWs|?;azLOEw9+J{CvDnTzA2vTfKjV<LIZGJ#
z`@QdylBZG?jE4iM4e14BTb^V>^e_`T5dHEep1=?l1c(V?Sit5m)Ymh3NVekBu4oh4
zuCsJ66|{fjJPtupGP})8DI3MsL5B<rmn))r!K96i%}o-Cw2p_<D2zzL!V5Mz>(*A6
ze;$O5C>Pqcmu0YNQdTn6<`}ONtnUv>7L^j&;_z;G7P?tdy2dtMZj{xhD21!68{usJ
z1GPV*5{ql|X()PoTj7_-LW16B2xDBE#QID={EkkIRzh7LX8@LSKVnm_kpd%Swk6iD
zT3XMOjgareyW$7;{@UG3SYLdmt&+FK=_f(SDW-Lhx<pElV?l_K5dvas-4uIq^+Iks
z#gn}j3#aG;i(c!m)~}Q;bkoSKsKy%+w?tl5Cwi*!drE@Wxd^T6WVo_wnfGPKK&%k-
z<VzoC{jgpLX?-2%WSiVX3J!8N8o_oFp-RuQ2O1Z(k#~z9h<J&KmcSu+Z(wChb4&Wh
zEV9yw)!*M`Y&|4Ms<yXArPM!-ge>hfq>sLHN1ptFfDgj^WJTVg^;*<FG8aJPyhQR=
z9BypyY;UYDdZUs3d49yzRpQc5q7`jUzI>a(b4*j2?n!glqVoIb_y>BD6M8~MY|9yJ
zE+U&ci||%pufqIB<*mk>vVXqr*t99DmOPhLH<_%}6>RmC84m1=k7wWV8Xp~C-N=fy
za7pw=ORO8SRWMNlJ*#sMgAO5(pxv<!ef$_Gi8I_Rx!3E<T3_Mg>6-c`4CSeRnonx`
zgowE9#@11{B-S+sv6%*ZNr}$qVFtuq(x(KOuwg}tg%x?L`L)Ohv7R*Tk;3>C+n$#*
zZ)+<?oj<zej*WX2G1fn32XK*)7~hGpu?ZXwH`YF9Sg4%7vcEgt(jwE`0<CXPD#+jP
z>ypiW#CtnreQrI^uTM7JR84Tg8-g3ttNf|OEBi-bL9b2Opm<VyJjY#X!Z-t5A`-43
zK~OjE?gmZ0p-#I3;JW;E1(^e2b%)tvJUa}YYn+h~Uth^Qs3|3`uB;G=?^-2Bvm;&z
z9bm<66GL#>%NZ6!q>{W+r#8rhjf97b?qKB!<uOXh2IC7EPmV?dUVLNEbJ6GgTaTOQ
z%dG%7H!50Pjn%yrn|3n|2>^gtOhQ7Ct+q}2(BD;%|Kj)eGDO;qqSE><8MEqh7Jczv
zCX%nL%7{#8kZ*OX*o$H(5np92k)nUJB|-u1iE8FgF1e+t^yN|lo&uBu8FeG6@-dy}
zC`i)&QK|hU4-Jq}1yT-~mhJ#b;d4ipW3I+VGZa`XTORr%&~)p(w>*WO3^bBR)4>z$
zhMD}?#6SqFJzA$v2vwpkLW)IZ$hc})V@oh4-&Jqgi`huw%tt?7`sDIS@8J_BY5<#2
zkhVQD-s6!<H5r#9rOhK*pzwE=G&VMdLC(squ;?g-`DY@}Icyj=a<G}$eQ0Z&?L~Tq
zKe9$))8^V0!;zuf1b+%sUKaoy9PJr<318H1rs_$%U)Fj905DG`TkwFA@*C1h^Ea(b
zjBaQ>PI%JAR80uoM&Rf()Qz&RkFyMHe1=4J@(xZG+(a&tgIBt7eIjxYZ`Dg~*rB+*
z>F2(-9dd7x@h>@Ua)_j6-j?VD#n#>jT>4az#$F8O5UBY4(Lv7^T{Wg+D68g@;r|HZ
z+ullu(B>RmImnJd#!YzpdWfwotxlurpQ$27`bNq^G!icR6Mua--kruzyq0<M@@Abz
zuhc*T@ki8Ud!EsU005Olbg{Uz6$GN!9GeAc#E3<+xn)30KW18bR=1M$5;dT!S|FgB
zt9uir#edk`(R+0CCbU^Lge(WKryuF-9MEseC*({IQv)tneIwmYljm%C`VH_@?gr&w
z*~fVFzNs5wDk@T0V?r8_tR4u}#(Gf+w@!GYQLPpZQ7^MUXp6l&USIU|l!27iN*3PB
zAHprpqSzm#Mh_D6<<9S@dKV78c>`$WYmAcPLf%ca2T(gXzX5c2#@r0x!I4b+6Ap%L
z@!lw^f>*1QetR``@Ae#bjj$Ofv4}Vbn_K?w7&248=*!i*p9iw1=lTSWjQZt+ufx)~
z^;5;1*@H^08*j*0`-JP>&5VDrzi)rVJ_1C;N=>Cln{QL+Dn251xaiHQyLNX|gMcoO
z6_#A|ew^Uf2fU%aU6dii{t`QPq-)PNw0Z&!J|)c6KHwG=$FAZ>$!)axR0rD(_p`p2
zW1SoET%gi7fTvF`)s_P|o?gB*5kxRXFr<~}q31{+ktVk3##67B@}@AJK_v=xL%P^$
zZxn6V5KXOBkoTCb?t|2U{gTncw%fp~OB5lVJ%WX2x{{v9#XeHIoiM6Ouj^EycZ1rV
zas`RKm}8B&>|IwuDIXrW?%FhcuA+-J^ZA&tKSG1s9W%}Fmvzgt#d|nJg;WIw*h3(P
z+qwb)zxEY+NHD?~z(6{m_<Oo!1IEQ9yGEq!7c*SzdM3qFn>feL*Z=}Nd1?f>+Wi&@
zxKh!Owp#yT!Y31%U~Gg0s>H6Xtl4nEc2x{BWY$7G1CtfJC!l_NZZ#nxCSMHhDgQVS
zoS;lVqabX-Ej`%|K{_PK1`>bh4lusyEGyBA(RE?ce5rNc`-(0D@KcetHvllhZ#*6o
z6DzeoT|6UK@raK}?ZAJ}q0G!p1E)63d6GLZl6!p`*J$1TS~&PrF|D&wVdTN^#1#4b
zw#I*%Y3MFF^avUl@G}<t;iLT(n8Yk#rq_h0Nb~I*z&F<ahp_jKYO49dMh}n|0RfSs
zR0Ra2_l_dcq$SkQLhld~lqyXT0Yw3kCRJ(@lMs*=1Pnz11*C==1Vnm&m7<{Ve&_ey
zyVm{llEqnPE!G+`Gkf;z{XEa?QP)rgfKEwY&HOa1+7zmZAVe*$5So7>tNB}t4UB5k
z$7lnBs|2lM9BeoJ`l}~dZLufo-mgOxJ}pj79_k!c@!dOqPjQ_)y?o<u+&i?CiOI{d
zbCIf_d3z;xuq?Kae1H`YKw*Sg0bbiMl{~BY!h_)Fqb>c;v<=_kfwiChh{MQ;kS48E
zGp%Dq?Y0;N_6PE@I|tgl8iEhpU-aSXHlwy|WZ&I?<sM@HTwYgR^WdVSsR$F@gjH`9
zFJMb%rZ?dVfG7r_^R+VR5|rL@uU%A%4WFBE#Mq9d{a6A0{uk2!pnyYc;=QG%kFfc{
z$}4Ub<lWsl?B}JQaT%_ZhYlUL-+anGzp=Sq-12@`*LS<>k+^UYt1mS`JR#X4!a^@8
zlgR^M<=se1pyy?K9LBen<95oAtnh>t@P+>TxmcJ)BsMoRKp8<qqyRNVy}$Tr;HK^q
z^k=!1k1NqGCAzi5xiYB%X39Zz%l-FfH*gy^dQv8wbZO0cVhN140@y4RlfD4}cuX_!
zcGBmksPXwGE!fWn8u7rq<=xOOt6zTh1y0Q^kZTGv;#As89By5|d=s4Mn14oJoO`tr
zb`aBEi+Y;>610OS!^>+j8;}H3F=hrv!nA}*z7iD(m!KC1L^D|dMnIjtke*<-mLe11
zObvn+rnN-3)H^$A`Idyt%#0!eK57+?E)9PCm~r-`k{Udg1`0eCzO1bu-qf9?x8Zwr
z>vHL*mo=})I8>{|m>Gec1bQI2v70>~NS1?80RUheVKDF(u;p7loOPY<@&yC2BC44+
zi(fMpMP7*P8olvXP*7!R<3xztKKI7_!=g3tt3N39eG0ia+}AUZS_^AqqN{o-ET+Uj
z06ZkrH@>6^NYa^suK<XXmKk`k_2)XH^wfBN{``i-a1`Z#iKun3bUTDnhqH(G?=O^Z
zM()85oPPW`Zhs(f@}Sf;fllk^;&2g(Je8)`Y4Q?+O<>e!@ixuC-=KM<Y~Yw1i#SpM
z(L`GgLKUx4RuOr;Lg^zDv01rhNl;Pf;OOvIh~0XIrOx2W)Y!qvAr5_ab!q>d()s~K
zmjrN`DGiI(n$;=^S1}nrwdu|W5a@idIk9XG2JZ?+Zg3Zbv@+|lO6v3Hq&yN=;rl?q
zC<az}4m=Y&_!adFg?_rWxPSa>Z*Q|Xc%ZcC#givjN-e1yqfhB9%)C*@rVM~y7Sx2Z
zlfk}sI+cS}UkKPJALGBx%CBDq2$us~#b)}DEPVs-Bz|7cG*x%YsE2+>&cm;=g<?*~
zgvuMy|1K>q4ihI2VkJ59r8t1-01E)}NTLh^@KiF+O4xv&olF&A>@_jzV&cXokmyu>
zGn5PUL>O53MSXC2T1o!#H|I`^Ht<?2MYFL2#nH#d$M^3KEg(j>%Ec5-nIO?`I9LM#
zPALNuM(uJk?V=PDeUU{_f}E0wh!~fMR4!(dDedkDUj~i@thUelap`-{oc7n69YR7L
z8Xrl*HtPHb`%(nI-gkdUT%ei?115Ushad^wp~9So<yF83QW`HaCle}xq@JXtnw02g
zn5i=b)w{+XC(M|_b<MlJ`@4#R?d$vdi!ld>Cqi>NX;AXTCkhgL{%JdNb2AO5tPo+k
zD|eYi$YYSC%uEqhURx|%d07s?mIeeeiJL*HOs*86yac_6hXFv*%y_O9yQZafFGcY9
z1uUa|cZlFATiz@9b>=e>ol!!n67~=QuG|$hob`eviE%yxdKskiyEjCb3|PEO>1`yW
z^u>XLS!Xd!=`GbNreMHEhcLFe$RDWXnZ`tFjg65tApE1{T_|K<=$Z%s5a3DxvzU6P
zmx;b!6~N1IzKnMog8g9Qk(FZwMrKJo*pmd7=$3DK-AuevZ4@=Cy|tn7-SP<(Hg7k9
zk4t$@xd_l>fB@G90aFIvUX#qE>ylg^Ko^yFmV-+=DT~vN1u{})AOk(pgMiQ(CqKW3
zlIun+5|64E^)o-`5UI#0!obK10heq3t73XiF5c-Cn;d$2D^?B~J^rzWR9-jOMh{Dn
zlN9%5><K`>w$>-o$i%`I<-CQlPvaJsg0HWP%my%mBL}vj*Dc;9Ot0@9%v@mum{z4E
zcrXZHxvu%7GI8`s8!``sx+2?C>&};!iqW4lq=GO{z<ds8R?a_26fg@gb^)CLFCdaA
zwwTi`2B>%bb1f8vP?-~0d99^vIrZsSb1<JJ3RLHi<i5I#!zrQNJ<w)&1V#hZub;rL
zfC#V%27&{?0E@R%4|x1Y*aYC1rPB%)kx2UB>=l>>n4p;Sn6sr+lX`R0NRi_nQfnVo
z6;Ts#9kNc4O=tojgXCcKrh5y??`Gf~0Ulwa*E#hRP3sa=M<q?mynsv(KqMhkqA1_i
zghTafvjetB@gkom*uPDD-GsQPjZ&I8KhgtG?`2a0_Xni}5eARHi~TmefJmALlMTHE
zUDYFi9V0QFnWQX=4wPUizR5*V@MF3zyNuOFHO@j<eAQ>YO!)&VUnZ#c<^$P)H#nY3
z4a25y=pJ*@)g?m2n0SS4SWOf8BMi%#wF*4wJq-jXGS+3+l@X{!S(_qLVF7HHVJ^1X
zg5OsW@Y3t_0Du&$k3;;X!XC^F-d-FMnPVt1W<Z!e+nbKr46rbOrN9xRS&u}>SpcJ0
zio_>9F%f%mw<7N}E1<{9m_Vn9dc6M#Bb?8q*Q?0E#*CN7h|%k1&Itp-bfS**;k00a
z-3p-E1-fa8H>fm7mq;LniI>$wF@QtSqmavjar(kA)a7%b9su-;V40v$D-4sK$uoYs
z1gbZL!KjYgE=?~VNPs*_L!|+n`u0eaNY0})x<p7Xa9x(g0;TjH@c&DTF>rupx64t2
zR0sEA{*B6uaIKXzUp4Yc(}f!%TkW&XHfx##g7=2yA6STrSPTZXw+7anY(-er7w;EV
zw?uynw=bliyDMcSj%XqW5fLbTj)IsSJI$xL@i+Z1m-O5ex-1>`Nd=uQA?kG!b8>k9
z-aVg_*2XU8i6-yjpF<(gaJ|X<D;a@%6HUENUvjZ+0c(O`Nm-^AzQZYwYk5u|W9Hln
zL)vK@hLVA@(ON%;Y<%GdNbF>#R=D@`g=Qj>-dVcVRr=|GWJyeH)AIhiYtY8A{f~lq
ze|8&sJr5#&g$uqHw2l|j{+0`GBsFO*u^*8i`M-7o17U*F7XsB)*2!~ta5xL@fN3-|
zc3RAc)(0s6L!L+`JMRXr#5I7BCJT5R{`E6XoZ#=F(|CS$Wn<SsY+?3bj`qgh`lq39
zy-l<64XbOZQ$%d^zxmEbzaoksJd}0611laU?7V69S$l2kyk#q*EczzeTLVkm3JU$m
z{s8S}u@A?#?P1i^S3`$2KWgT<{h2?RyjwD-X<h7}p|!@>g|qZG!bO;=IFKJh%lNQ`
zTYmS~q)&AIC@p^PvY(?^_Y4$HHB>|^rKW42vNt?`l1Z(sgvsDA%>|W){(0y_3`^0N
z-9?VTnm++B-q6Ji!M`r=1{BaWLnM{8{=?ZjVqn5<a?mz8>C^|ExCy~3eG*iD)#27J
zgp9FI9~Da%QNtj^jjf=2v*V$m-q-I$`Ng^956zW;L4Y)StwF2iyE^9sR9tR|d2kW4
zZJw>OjnPJs^58$n8k*B<!LP+L#xC#U-hJMyYy;KArGty<C)(<h+iBm$MM=F%7o{#8
zQjxd$z`8WM-f8oNdsEaVh*(wD?N+aRedojQ_ixkYPfwlh{q)s7+$&W#^=rM!KE1Tu
zw?!T<9^1u_lM_QfX+&<~tM7iHs8bPDFip=CYmk`m%n`43e^@?StMGE!J6=d297Qg)
zQL(<3|50;T_PZGss^A(v3bSPxE-lrHIsEl&uT0UF8DO!od7=^1^7Q#aL-4U;PatK;
zTI=0HN4@4T_GofJhd4T+o)1C=mz!+vrD##ev&d_#6@GSjr?ABo>w;SMD0kb%pEtgs
z8>d`bwWDZXF=D;ZzONm9^K9nq3%5Gl3cfTu?(grfXdlH0QFvg4)FimAb#WCN6F$Fy
z(yEqrcgQWL+~={|5Ps!D^ZLwG;Z0QnA+!s2PYs(PsxpK`k;fI6zOVGz7jD?gPTu1i
zJUG~^0vVVGu-z@!lbEPBN$xNHuN{~2c)R=2&FfoKEopr3{Ux5!87fJKKrV-GL{_S5
z1lvf0=+jR7)Qej;w7ovRpD%Ic8rF$8JkZ$xxd(MsH!m=xNck3v5?#YD-4BgEi;_?Q
z@rsR_S$Ms2Hmb4ucigT;5hf)5M2$cwgIe@Dt-RLqE!J1vm<C(H=EAHIaE%yvlep_-
zQXg#3%;3$+^4b%e1FYpom|jl-^m6-ijj4q>%GK*qTTQJ&zM^leUz<!GPSQTTDq_EN
z>q#~f>DLqr^bySyU;OsW@yp*=Q%#{;WU@>h_ePaP_e!3VfAQq7ZX69mKE0{Esh1@*
z@%Bn}YaYC9@(J#CUsq3RvwLLmU%{Wn{SJncjp;h^?7Jy(Nv2qu)%fSeH%|WI8#T1C
z;ug*0=-<Di@Bc_9(~uKWb5m53?8Mw$O`KBN_poeept$-=2M0ao{^1)9Pwov4q#4c^
zMgEEr68mCkL7vveIam-cM(Sn^M*p2>kDh8HAKyP7sR&xv+i<w!Up`UkuB1qG4SZ%U
z!#m`P#1^`K@qckkK||r(Wd&WuJ=e(1?d`2u2j(rz`kLfZr!R)H)+|0S{Dk6_oc+%U
z_l5^jcvl<OcMeXk5KRq@!=%JM!LjL+Niye}qm11imJSF+9<{r<WEEPPi_*OU2}RO{
zuKZ*yc}8`7jd=@8rrGitE`eF#z0j~F3DEEy9MC7U$Iyt@Vhk*hO+<D{Gl5Z^nWE~n
z>IC)A&|J#V&Db+&#<T_$4BuGM&mlskHp;oYOHNK4E}WByi8`!7-!EuZ!){4tMorC5
zRoJdt=#$WehSf7Mff%Wz3Lj8jo&Bn`R5Gh+p|Z9T8RXWw5thR2{g0~^r(t)+Z7F?+
z%8WQ3Bt}Ct|1qqlJzcWdK|gJ5Nad-djJXJ01@^k~)$><!I@-8W*~Ib5Kly8tYCC%y
z@Aor!lnFcdBx?s!y{Mf&N}O*g!^vN(pQOG%IV}w?VRjep#k96I0?vXX2VamYZZq)W
zHG)8(9L_q~Vq4)F4l!_>Kw~F=#i|G?TcLySdBOL`Q}$beKJ~r_;rZXQG<FZPk+NZn
zRZk4R5M$sITpSgKfRvdh7Z=-vqnHlWpfsCrfK}W!0z@RkXMNrjm{cDhYwZ{0)VjSs
z+ifi#<BM=`c3pREQsG<6i+<({xXtk!Yx>6qRdObZAMASP&`}rG537%t5{q(GBuU|8
zi4qs3gy|sZmtLE)Rbj*}P1n}a{$1-8FGJTfQqa45M$*12x^5PsA7vYyLuS@bN`7gr
zU8IY^Y+$rwT&a~eLO;o3EW`-p(cZwh?A)iIN63p_3q1iLtT)BV-w4*lW^Ghg{-?#%
zzyv8~13PVN<sH>5n<so;b*pRr;!=?Hh?u|{igu=R@bHzmyKA3V?Mq6|o|Mm)Ypvy3
zU!$70v9yuY7vOpKz0)lGm9vSV4B=J(FoCRhMM!O1Tdl?Zz;MWoMfgSxD90?cAka0a
zNupSt)}%KZIdhVgxL)b<`Cnx5l{Rf9MQzc-3MrD@-AgZYRcigC-2G_eCE3t^E+Wpz
z6&@ae{;oWrW&Ju#Q6h!Tu1x=V>orlRcAIwVQMC7(xJU%1&f?7=GZqf4`l^p7^*Z&%
z1ln>k=ryG6r!@?zq!#2niwT*C4(kbwf=7f;Iu4cGL>ydp2H{V^h9t$d5t91m%qqsf
zmIG_&m&HBVq$J8<evOB5P6%-rQuQh0i33<h2q(?S70ycU0|?t{8D93|H6t|J(Q+(|
zqlcoq4aE*-D`lg@2&gSADDT*~Sb`)s8@c6%`(|kRL!?PUsL|2#;;IBLR4<=T1$+k^
zJ&^ahu)sers^;WiXQJr}14)%UZaA2LwHgda7BR$om~mT}fSG%yZ4@TZ!2qhCU;JHE
zf?WOXxItiW{#2-h(ps>r-G+n1Yfj#S0+JgQwpS=Zi1BW5&JyjZO7GI_SDJ&!(dgw&
z^Qk*|T0N**qn!yV>Ar$FImcg$o7INUG~=5pH4O_dx~-U1eE(P}^(n08fFfU$4{v#z
zZ{YIx{qOF6N=%#fpO_|<UdWs)MaK146Yt{dXy0NC_SBW#%hwPKM}lz0@Y=tN#d58z
zi^ADZ*0;7XTO%ltTX-O+%{k;F#?ct2hB)ZeTnm%`5Y{3^pM%x<_oM8+VLmg$9DHtK
zr@h-x8GCPa;6@lc-u0%dkU#+F-@Zgd#cWa5#S7CyKi$ZliVyOId}asLEHOVp>4wYV
z2A;F<qQ$T>5{3S?zO!B{{!}F=No={qEfPr_=6w>BZ_xzimT60%^|OW!`AXgMCbh;i
z<tw-f_(iXz@iZIH1`@|oLA&5Mm_^}7J{0?=I2pdue+4b`-2eqgE33zUv&BaxA*xbY
z4#u^vt$)<rLi5J5?8?M0VV$+P&27EQ5^M;1^nPK(vJJzs`)S|pD&1;G%Acu~(8kH}
z-q1aNjB-sQF3;unmsjKyYE>15e?W3r%FIv5Ra=q*23_0l7j9*lMJPX!&nd7GULR{*
z-`Y}HHYtOJnKA=AM$BStR&Wl8L;_?iH8pMRM%Ytp@jZ%nK`aP<BTUUl$qX?_()+g`
zSx2!n*YRH8Kq&pNY(?l7sksU5h1${WPoO#}j0$CK;8;)c4K<}~G~aP+@u*_qg$3!~
z)(K(;jG&F%X>(=(9jlp5YVmh&E@vkuN>C#?m7`ZN#C*z?^~Xn6%;YPKg?_7$TO$}%
zF6E@=Mn!c*RZhGB(IV&;KEumSl6x!}5m+-Pr0}ZLgU*pfT+|9bQl=l!Ql|}S923~}
zE?yJ$<&^kv2aYD0*)SQPv3pRpDT|*gYdzN^M{EL!3#d!?y)#slGdG(y4sPn!JX9E7
zDbb+a`+}0R)Zyk2tSLI!61*QN3?ZfJ>)+<C7B)F&Ql+C@7^KJ13E_D8x}IRjmK*-T
zQ;JgnXF}3gh*w!%1%0FX=5G1*m_3YSno_^G#UtDu5ZYZ_IsUzZrNM#@oK{mkDjKJt
zQR{Jk^JADi#4R{;vS3nj+~t6V>L-{AV}f3%ex|-di6)mf8b4;OB54smJ9fA+Wh?&x
z9b9MFI!VhSG!Y0Y!<zX|lk6$;uk76(UgC0Ay7|lHcYlDXJq1jG*7^otQ~~rnkF6yO
zLi;8p1L#_$AH7Qen1eYp--x)>0ll-$`cIRR`dg_`wYFxh#SGqVeH@BBJBgapLWh2m
z%#Q#=Fu|`aI14bOwbZyF!pXlgft{5{!vYR^AE|QLkEMdpVlY-(kHsWXVinTK9Bh+f
zS_}smJmKiEArU4SS5>MRuNvs4wbqz?U1z-`;11Z7`}<49qKD(dd}S<C&9%DnaU+SK
z8m(yi-=(Ggc)RYTE*WfIXig*3gzTmsz+2=g3FtjD(=)v7p~z^TvHo-jQZ$8<YfK2X
z&C~Rif(ByA{T0u~4jVw2Ye<+NuE=<zbMo`s%4f6GnvC|LbmgV*tNrnjqoTaxm7x{B
zP+^G~9*}|rux1d|6rhUJmd64RvL`xQ=lDI^z~=Rc@^0d8DEBf&kqhD0&_pU!`rcYv
zL(&s<W}VH0*0=jD_r$8)Egz!y`#$!igl*3jZ~%`+o~CjcCR?*+0>C*vDGpV7eFIx%
zwh?9g<b-uz^yd=zEOX||x%EoH`c&iA4HAfD_SLj%4)S^D7y$fJ&D71+ea-sB6^hQy
zD+3=NKPlxa4a%>A(nD-nR}Dq3+pY2@Feb2ge0PRcJz|zfFkpncZdeRU4jImAdnIN2
z6(XEga`Z_uu2OUOw7j-0<%6+%A6Y#Bcysw?_>bdaO(>5VxM)UiJa{O7QD)YgJ3)+D
z+bfw#pDU6}7*GPZy9~)G%)*=o29V8~TI1EQ0WAR4Vk3RNjp{tWs%$`@s7>ZY_mOv*
zXNjh3%PVVo<qMX$jf1<#aavU@C-Lm3TJP?+?3)}(RCAM)rK+|sg;qi6ENsBc99U=0
z6JZ74#GW`fIKY+itg-|kPoU@TbQpt>+HwE+Db#N0Am#907L`b}_^lc3$)yqh0Ee$F
zS^d}Vr2?$uPW}CN(P59K%4X}TdPJfBRCt+ksH$q4{;zFYz^2dyBJzwb+0}JJe^@pL
z5DqcED7QB?RTK9$-=CvoXS6(L*mxGE<&T}CsPwG;^fP1AiGK)t{~sWeC}z4dyN(?G
z^eJgD5N94t?&H*>hhjLBfUZ8M$p*;&bt_8Rg1|pVQg#F!o40mjP3+M>Zg~w>^K-5x
z3Rlo>ao3bK$O*Oa2Lq+NpgIWiY3*kh8~@3b=8AW5uLW1j;)N(r6t3!qqDC8A>DNQ6
zJXmaSidlew#mn(Bh$0uG$Uo{BJ%&IQtIjCrdA#g?pNMGV=zF`?^^L8qF{O{$F9fX}
z3@EKJS8u7CgW9djmoKOea<tx5K#Y{?^ey&PIo$E1ej3P9Ti=|@B{PuCEa)sM`W^{G
z({kAJa~g{PjxGtddSM_?*hC1v5n|l%Ny<cMB&T)iL3>6KQr^uC7FR{LMV)!SAGYSa
zH&JuL#nInqVEr)OZGAtkT`-A<I^sK=rnA1Y(V?8eMD+RG#R73w39{v7(gU1C8R_Y`
zMN%Q@EO+!dp%WmY@LVwT5rYSRVDlZ=<lOt?-^W_@1zc2IZQQ^8;R`s-{@own)Kuah
zl;USgi&lR4C6L0M40%SUW=8J!&~wE=up%s0>K2U&dO%VU!9;H)fy;wg7$Rys#$g)*
zjcj_M8=A!0Hib?<<fN!Y@8A8o-y7tL8YT1z2}JIJb}ivuJXz9?!%V#bC3=1dIKz+N
zj0_P=|9NX7K$fBt%M>k89?9|m8%H%}aw-D6Vt|M+M40|yDt16t0y65*Z2V`l!ki-K
z4I<G_Lje>i0=1IZ9IP3477(UIqFgW^-S{-LAFZON&Oim##p(7BWKd#s&h(k4V)QJ6
zka9(UgC0G@EMf&>Zh#b!$st0~7+py-14uD3F|tEkL=>oUkyZX+rG79=>}Y_6=nSvD
z^i{yMb&PC$dNQ~)$fhU*jnUR<ko*?R354i@u&5Wk>oX%crhiP!xTNrURuW8Hbl~AG
z%;!hVm?kCJbBOSR;5Dtt@wP~du%Dhuoa`r{bob+nFW<Xv>=$kA9O$&F?Ejs&7y-1W
zTq7`At30Yn4ALKf0svA)<}?+BJz~&f$SJ~#JcUTn2hd3;r7#frxrBJIf1D)8(tgH<
z2Wx!-(<9dIbZwpZE1wtlqeHK2#vFnGJB2TLK1$vM5OT{I%hEvEH3GBPs*A$RQuMP0
zref2I26S2%?bM~1B_(c4d+D1p*KgtzX1z&rjk^a<%Lkh?&03-NLKitNfFkFX#l_V`
z5r;dLAtC7BAn~tm0tjG%m*d>URzQDQ5>=nm=99Qh0f(w0q*IUik)5BG9j7o#OiZjN
z1_^!4*omES4!kSdI2A*zWOtLlAtHLB-Rl3Uh|g95osls=G}rQe7?d|M&?T_4mwDt0
z^THtjGmEoFrg|2@rPm2Uhub+4oIt0zp_uj*3STuX!ki1+t)b;0F>ZzJ4|L@%RB|0^
zUdUFMs;+OYZ|-c>SgL$k&S3>S7%tla96)E}cxpM50ka9?bQYHZ9nd`js{6YnBvdQx
zQYVYHyU1dY&YSWj6LbC&uVM~pD@)7EYeVNO3QQbEC;q2?8G9Eu#O?%AeE@ZXv5;dm
zg@KIK11z{d)9jve<|qOH7qsp%uP~>FWYQz}URxkJi_6fwEqqXQ!v6xaRbzaB9jyzC
z^P!`^LUD};Bb9<5$A9xbGXMaukZ`w{k}X|EP8q--C~WZ(OUqF&1i1L1jp}q_Pd$~S
zm`Lg~Z-a9ZIG;q)VGCvbK%v2HSls*KubG*hJje+ukwI4LUIOT3|JPJzFM|NbbQUA<
zNTe*!1kRdl;=zEO?iCl#f-3oo-gamoH226%q0b_5){L*j?2(iT_V+_qv*{G4;-#eW
zhs6I!4g{7kKr(v)Te?e}kFbyEu0bK?b8I3EWdf)K42xl6q8}u&7F8%tpEDZ_^Xn_%
zk(58cDy^kBm08eDkaI9n*nE(nrW<E7N$KPdS52JG0yu;@=ppBgGdJD}Fw#HjPDmM*
zGD)m;Md)*KKP7XF6(rgUX_uS%d?{m0@cu^@3Jxa__{5|;%Y&646UZu+Djc9E3`y#h
zm~-}qC<f}|A1P_sXPH<iKm);$l+*d8MHL3SQ8#qACRI-nGNMHPKjKl%h8p`;pH49t
z{3dm_dYM3iK8GS2Pw)^1tVLnYK51d{2(FmG0GljW7F5K{Fb$nARs5|r008I|Iau`o
zRvvQ$Z4S`#x*iMW(F?I#6$UZ`O6lt&WHI1rB3z<Cmg7;2KuLIuO@WH3us$Sn<8hFm
zpZErp9^^d}K)R?Cpkw%I!I&b!z$=0<ePqXC2&#DM>Ua6QA@tT_1N;F&x3L608L0Dh
z^-M9b-c0rBR5Kr&l4)VE_YkTc_+(-zS5@R?e(VKEbxvznndudpW@JZMG4Sh2W?AL0
zqyj~H3`BCdh_IdnLm9uVa#r3LF<6gHm{%Au&{G9QgxQmn7(Bp30St`7sEk4pKnbdp
zLEvDczl65UEA&YO$_xYu+*M2-!l=5c9E&Q6ZukheX2E~V1sXI&__9F&NAIJ$L_MXl
zbGFctRMRxhGRE;lz|@2uqO508W)NI1mI5#^vVFmuafU0Iw|NC7>H*AEfFd0$C**v2
z9TTraZx;ZtvOMva<xVZnzAZ)00me-DIRG(+GR9s!ry_5sf#FLjMee*lOEWJIv6PWQ
zh%hfJ2fe<RMzB6(f&ecd!5WBDrvl~WOcug)Qo*JGGXuaGuBzSzC_U!a=kB*j;0mTU
z9~()4q%hHmuzIA>L&Qc}Z&!7z7D@&Oa42U(Z9L5Cryo@%nIu}xh|-B9Fc<{zPSXbm
z>xoN=ONn)<+VUHdX{PBSO697VDKtoLQWED!kj)SS50%n00QCR&qz@f99pHS@Lx6uS
za&R(oaq|c(Uef!2ud<+{r`w!<A~#Uz?G*9t-6uxgmMG)`$=6ENy}AL~|FSQ&SGwj|
z?xsB<`Of?x2}7YqB1;Udp_aHyE3+E2@nlUxgqmu&s;*A$@A-};HC_3Rw1;cHRod%>
zwyoeP@>#J0_NM~QgV;}QyBIYqRd8@;BiD4quc;NgSw!?}$-%klDPKs=M<h?roo3Y?
zbygWG+gj1S5c;XL;&)-}uE{g5xzmro&wtTYu(cKAKD9Oqaz1rsQ$vX!JT{k8Jv?Vc
z(GGt;#wOSpJf>oLQ>95^@;^Ykrv5dyy~O!`kUxP!{EBS0J7OLTYl>n!B~gm!TPl#>
zp^T%=rvg!Xj*TwttRy+_@SzEEo2&+UXNyeo#0iNunoi1WNhsS<Reb}d5-aHh`Ff4V
zLZ&FLZ>tAUC8%c&PqV7ZA-;YN^&poV`F;NT(b(3U8-Mrae*jxjyYc6y6H&NxO-;&k
z#E-$K-hj9e*B^5sp9161w**2y1qYx4tC4=0pPiFGBU~qfdFo(&I;z{R>Ms8WxNkhq
z>&fpHo5+<w&XOW)dg}+z^O(_lwa1=&F8aj{C;m31u^w6InBw3YU19c3DOgs1Y)5`P
z_>`K>aLM-Ilo?-JPMkzGH68w_l(xWYcf7RAHs<aS#4Be9YGVjToHA6rS%tLzo0@L7
z+Ex;!w#hd6j!nzyd2+Q6Q5}=?#c(n{_9eNG63PAB#5WpQfQ!U5t@#!`2@z`W)c(Dm
zTVdbwASuoMn)J$T7uh?Eth@%E_bzWaoAfJ8(571W4hKW&M%viQz7B-XeLM<oc&;Cm
z>{znq?DOo~vnI7h)z;yR&2}Z?Z_3qlyAkWLt?+{;rHM8NBs|LYAw1UI)A(N9d5*ZN
z=Ve+ciDa{xkN#{q3WV=+5+4d%?m)x}?0sdp(bi2SqbY62X;b7Xst8!RxG!e=_Tv1S
zIG=Q&7jLRq^{4W;b>|fu1a3WipZY_PC={;NVoGQbuptkGHk>Ob1Pfix8_e*{n+?ma
z#_+#{89r7C(>TAN5Zb2CS{wEY_F<9b1uo*!wTYqkTgE&k_TPhh^6wd^9qf!NH|{iq
z@66T?X;o(=$7mvZBQ?v4NuW$xt^YbBLw0(yJ1M5EECq=Q+OY{YzxOk2?e4<qLhY_H
zAFB&koHWFV;`#I0=ERis_*QsK?Ta8?75wksj-}Kw8MsX{OGNhO^t5Y^JHC<FklcK>
zJZF$Ye`;8<KASu-?|QIc{Gt5=<-i60PFI#soZ`TFGFnmM|8tJeP+eDplA4fyn)Gem
zG5P6xRZFq!e1xDZAAEIMTBT;=4V@jiKOX%<n4s5v0{250j}S9p?V);7Yvk6~PZ2`H
zN8)7k<j~mA=egRT5<)Xij7HCfYXdUibh%mUe*e7&0aIV@ijvkMv9D=$(PrE-1XAO+
zQG-gR>Ke|kAQu<W*1TI18Z>A%%BK3Jd6)O?+xLc>tqob9O)frWyhkLbCnKL~nVz&2
z{(06ot6uFGH?0)pdiOE2#f%2-LF95L#)ep3iJ#n5(?+Skf?_6vkRxgzwxp{r`SjK`
z#MKO-<YvjQ{2Orfle*7dnb}=8gR|(?z4Vcl-c;u~ia2^hyY5qxSaV)JKJTI%B_^>b
zz;ViP(s5G9g{DHV0YvJ;-7i0hPq`z`#at7V)m~P9!TrkoM`50)UZhVR>ZOx9Va)=`
zyF6_fzeARO(*5N6$-Gzc-tQX<xr0PseD8Lm^P}Tzzd7otEq2y_-rN6(5N=G8tc^zm
z%yV_Gwrfut248RR#ee>$=8yL)Xex@IZ4>Z!Dv6sYQHhA$bU#b;X6iH~<u2IwL`mPh
z2Cf#bg9XxCl4sEC_Q}?hkfEh&iykTLGi$;$rM7;+xEmB2^Bls%4^<DEoKGWbUSpj5
zZ0iK-DFP9}4s`;Y;RPzbMFNPDlwY3B?`K<QW0*HyIzO6hK-}~>%$^)dB5*Iev<0@8
zWJNxmy@q0|KC*d-v&{`o$eMLMylQlC_4YWzCStkPg^QK_&)K(8d0sP4hsn!_@wZG(
zP4qXV6A#}`opITl6s}%ZAS<Mo&iv`9JXLARqs1E3W%R_t(XTq5eD?mS`8O>t!(F6~
z($UlrN_CQ-;_unaYp6%hHCz0UNLs&j7%Ufj)ywCAe{7-wwt1v}DJn7&6+SA>Hu<%(
zp|<60YKr&q&L#0CclaR<&&nsrFp)_vNss-UU)`^cq&-ha<Z_aH8b+cu_>wNdooSmf
zG0yy@LZly?Ct^X!(KoG@_&V4(bnl{$bDQ%Y_>RZ}b;qqE4Fucj!o8*$S6S+(C8iNO
zocX^4?sCCRVG|m5bBLyzO6>)gYh0IWHpy1B{{VX({${)@G1}ppNB#ZJS}+5mHZf?Z
ziqQW)SJ?OH$?Z`eJ}Tdxsc}PDnRT9QV=|ds?(De1o)M$I;R<?0S|75bSgm8Ign7JB
zqQ%(iP}Auod2jupNpSD@j#J}<uA|~UkN&zz7S>!!`ds#onPUUI2`%tT9uejf7oj|*
zVe5H`tloSnlCAiabPXQe-lyZfW$G_}>z-PD8$q`+^E2;qsHSqXk9+b#i!@wq!r7*=
z>)tKQtA+R@vCB5(8f;$1lmBfgy;5;b?z~rp&O|0z>e8+Xbc|&5=zuWxpDOgr7T6@>
zCYHJ^fLfjMuB-E8FhG27Y`<lOv9=rk>zDJU!EG)g9lS*2%|lHjduw=AG24aY!e7$C
zgdJ<L{g{pd4F&yDq<pu~*Ezxo-c+3T!I4#*(dcD>=c^c2AJ%({c;{U0aG9-F)n_h;
za?}n>f16WN>PK@n)<(9GHp3l(#%ij$rJO+ox}qQ3ye27~<C`U$^YebF7DBR~f}Lye
z`&!D!PI}ge)}<C*OZvWI)H)#D@?d_fr&rKX&(vjdujOSV?4gf8vvdRkI^kTP_jub$
z<0g3}&=y+~@63ZIxn|GYdxb;JGuM(ZmE}MBZ}FG^pt$!Qy7S|Hy!#tncsbA&hsG4n
zjFvcE+hSyQZ3@2F2%ATgV7Fq)v)gh`zbdb0T>JiXgi!IlqjFs`ODx5q&TTNz#=f3E
zFX-x<2l&>Rtrd$35fr?88{X(PDR8^t^gp0>@7J)YbWmuu)TY<jyUsfd3=f7Iw*Nf%
zcG%vqq5fF1zIx0%h1ERUlNB!%8eu+OVjjLb)@HIJplUPHVB`-)+6-EPw<A5jsd~sY
zq2f3fhF5RnkxVn(x@oW5dwXJAye^OVi2zr4mFacnBtm`qQ`eRdk3XDr%(Za%H5kuB
zl_hThh5OJ@Yr{?TqODd|R{4_D8RS~Z`+)0ighUl2s{ZS1rGQ%fyh=p*#9yTAkC=yi
zxF0*{7fv`*we~NoND6IobC!U{v=(fNztPSnYX1j(zP#tPOZ9D@cCTMmP^<gB{`;e9
z9>K*m|DDS8a$SqJ5U)g&n$>FxZ7QhX4Z5J!Z<7x!w~rHDr=_nir2lqLo_0=7_zxi4
zpl|4MndsHnioY!R_3MxBLOpw}ABKjIMmV>{{E0w$*5|H%_3o-6tS5)LMc|-0PPMPe
z&Qn{v)=jnAxf>6Y2D!q6M|F(+O+#$a$<KBl_4Kz8A>)59Nx4EZ$1K4E`eH|S=nP~W
z(+AXdbd6+i_9YOccQyaQn&W`x9!FMHJ>CI@;Hj>e+AP64%F;6>J31U@3j|L3?aDXB
z$3vlV@@=O0(TxM=Q_%>f$&snCH%%}()}%3{S@F81)8B`S{{d?+dJBGF|DtH;V@QP>
ztTe~Q8SXpIB;HZyi5+RQZHxU}tmC%P-sG%8ozx`Hr8hjLoNpqilNvTV28Zn98sML$
z`WSV)D!$0oZ0>$oMxCXqWqX`_&n%D#%&KbO;^KH)S|%YPZ?yTx`48dGa>!JN0QFtQ
z5T!p)h7$6JQg2nb+|oOQ;L^umb5={6RB@0q4?jAX6@m@8KWM@XU(R_|gRykF8QI(Z
z1(D5sQ|$HcOx??BItQ&Eoi0N8X)&kq@xc)tLuV0>y#>WY;o_#Dwj3u%uY#TbRCxX)
z!P2KjE($^&x*8&bf}{ff_w#1+Fef4a$Mb9pTlnvmSf80I-`1gV{W{K`B&*8#d$wIA
zYzYy6`SbeUB-C{;Ywl4ZjzBb!cByTI%^`Bp6K!s*I?<@>Z<AX?-W+PnaRLhKCH6LG
z3hh(S0^tFP*1I(W3&^op^19>@bg9yRFPk~TfYHPR#+jC9BU6*rR5v~VzZs1?SPs@d
zIU1NVh+rFwJd8Z}#nUV`TN}uhgch)g`?_`M%1l?psM|ZkQR#)OaMIRM;c1T?DRv~l
zFd~pTjx(c0X_3K=ID0G(5O&ZM+;()8IOLde7^hB-)tcD;bx*~-o37Vvkw#`M<Her`
zO;_9TFfE43DUTP55^@i7!zWb34{{DBBH-%|BrBVEWYf-gygI&TJB;6dx?hV411Ew-
z8L|TII1j>49X_webv=~K8$+or5^=Z*tMLzMaMs7yyfi%PK{xSm>mgK!KbF5uEI9YA
z>jW+NsisM<X-T9V>N2vF^q}cvi#r$|Wa0Tzsn}8ASA1PCKfklTR(7VdG<?c_;v@W~
zx#~Vu1vY2i^o1x{aF##k*4sYc{<Hn`s<82?zyx~n-C6Y!bXs}YIgRx6B4=uX6Fet)
z3r$47tbd&B`6eTeXWwUTC7oFPrT98?hCGKMu_+kxhwn%W8bdgFM%!FBw7GboIDGw*
zu{CeCy*!IeE|UTWT=Cesq(Jo_J7P5si>t&}60szr(LeA+Z(gYV#ZU~*VKex0{aIRV
zQE8Pnt4o$lO+_G<fW!wCMw%VF#m$vU`SssX+ZaJMY6letZm!jyJ=|Y2j##;H_dj4l
zAgB%DjR;ErpuRDS3ofZ3%TUhWt2??VUdL8_LY8(WqKRAm@2X`^-3s=O7@wTKS~jh&
z`&*f81DBp4)Zo6IIZ+!-PKDBiO61ZFnn-xH{@eeyQVN@y=dV2|&6HWbxbPnkzI&~~
zh&D->sr6!)-M)M7qgTm9{H8kbt;}kLGnh!x=65H%1`BR}xOcB6X99&Vdn=xlrKB{4
zvqsoFld<r;c-7daUjJ^^hpZeCo?K_9gKdHHS8+ROw)QpT*RM13^7611?M-%`_RMKo
zC0qz1jTA57h-O?y_0j~?wz(oM5p^rUqSi!HE|;~N#qCa|8t(l(buK(O;*a#GPlo|h
ztuM>j+<zkQ5Ad{Js}e2y6TQcm1EX^5VG}w@XzO>dIUQfr<+sUQez0Pio18vvzIK?u
zBQFBuLNLpL#m09;M?aj$Q6njhLhv_PWv!!lY1YXOTYpQWWr%f%gTEV11t;C};6t~9
zK_J_gDC@b8q3IM9_<>Sf>my&z7;kQO?fZ_l*dOa8)0nl%LEC3@q#X(|y*RZ`koT#L
zQ4CpT!L|A|*GnEAA_<Qt895THa(pL!8cN;Qk_~N)R41PeDTn44_D>e(HZ>k{hc`Bk
zAF4HNylFJj7aaQ4nZw(rL^)O1WUB@<i|hB??;%2LQI;rk@Yf+Iy^wsXb?eOZLO$}$
z8c*92F)*tAUDIZ2BK17khsuq(P5ZUwTJ2X?*tg|ho2&dn&ubk4KMc+$!xnXNc5UCe
zO`~p=%cR$Nl6`MH`&L_FQW9-n5-A!~e4Uf&+GXilTx4GF>;BgtFoYeu1R39`i6(G7
zbApjL{Of|&s36xGl)8k|(OG%q<%xROj6h)<twZ?EXPyq&&-O(D>$>>C%4S@s{IdA%
zM!Ej8{-fTW)X$5$!qNsVNuuA6oI)hxB=}EGo;efjwyKTq2J`LRSax99!nT^>A<G3C
zW-c}|Hh2>54F-$B;_#$es8NOD)1hB~_jPs=*Nbk|YfRM}kG0Q}H)~ExKNI5eYWs+B
zg&lo7Klygak?jT!%Y~@kw7^E^(sZjyg5gR;xn~%Hvws_}tuoc%GKf_BGBuR6VTQl+
zMk!qGqX&i1%>1?X9$RB1h)t!}9mx{AQtigU0_O;B<k@Y*tu?*Lr?y)Q_@>HtmG5w5
zQXTa3bP+;_vmwLcO}b0tF4gh>ew@aqr?iVW97;VJ&TrDLhn8$c9iH7rEUTUA*Jhf>
zMxmN1&GCJyb`i+zj>wf}Wk=Xmmi}ulA~HKO>f=?WPv4NBH`O~_jRMvh9m(;@*7}=-
ziY+58slGA4+maYtCv(d?P;;oIEyAtvxuGy4!_Ha4nx<jWlIE94E|>8YC+NYB_4_-Y
zk$>|#`epuN+^@er+BvO1DqI4uNowq?nbBpfhAY(DXi4Vg^l{Z{e|gg%T&b;6uFY8~
zZQPhG`=>H6${|L8Y1_DaUVX{e{<4<>+aIxBXo|sRvJrBMsQoIav?f9eH)Br>#_vjn
zNQFr6W|Pmd73#-VFSS0e{4H>sHnkZXxD!|txU*SO4T4buHpo22-Y@8nUKB!<)I4#S
zVOf5Dp0?29+rAk@f-P;6Lx09qQFE`K%}#|l#w{C5@Nb@IYop@LeC5)f7Ow3aUxr3_
zy*3NG_xiRJ#=*(*{~Lj4h91C=`QJxJM_n(0n9SRpNmJtS9Qs@G)j=%ff^6w4JGQN`
zAF&@>;{V8=tUt5&tUF7Tw<i<57S{i?4=sMo;!MgF>wiyx6>q?DHq<M()Na{b=3Sc>
zI=N*iTQj!%VLRjjHPrt3cRRwN%qaZohfVc}qX@Fv5Joj3lDJJk2ZbQ_UbP7XEZ7p0
z#Dk=>e4WGR^e0<a>*q-)d7H99BxLoNuc@7y8EgE<rAQr-ro4&Sb2Hwo6`eni&8(F&
zHShj*AvUS6#0<8{`()_Z*;imwGAgo&E%u_r=YJg2-}F~kxBV>6jSSih+}H>V#BU;z
zRO^7mPZ{5Cc0TO9CTc9G8JC}Xs%U0a*k36WINo4$8b;`|N>i4-bj$Q^P%zO$J#(hg
z*FAt#4Zi6AMfXlO{L1_D$NwhFa*MQSq2O~S)cx^fg&yfpf|Z^3qr}d43J(oVuC_!H
zVO2rWt>qW&#dBtB>Ie<^24egrhiy3!8Tb%o@)bTa2HxZ6AosdECf)*?<6P@iB&p#V
zluWY^7(o0j*qFtm>l*p&gYqu*{S2R#;#%;`bXfBeU|#(Aji;XN4?@D{?f1$W*fVTm
z9=Xx(x6|Xwp0wAnu;A5DCMbVvYvHq)pqQA#LfZ1U^EIZlz1aC*(-!7`4HLz;EsyDW
zv)v-9o|3pK{oRqSaz1KG)Dnxs>~d+p4qWq`fJ`eX@d!y%2%-><-qH;Gg`T#{Js0UJ
zFZC>Vsq)GDyGQFL@%TC{9Ag}ggXT)4>N`o8u6{u|G{Ab!QDX$jcj$Y(jat{hVlJpn
zxy@}GFO1}j>vC`qN^<87Y6C^weieBksaHkT_i0_2Z8`eVgtqyFfvMd21BFq?F-Pk3
z#4WeYYL~8$-@bLrQ$qSYFL`{`WslS>=NYs_oRj%vQ~F|Z)V`|pPVW~X23}U=>QIjv
z2H|9DZ3(rsbbz~q3)|w-ji_0=p#sx|3U%T2&sRlVkM?5E=pNgg{E~62jl5LY+Z7>$
z<iX~px2mttR-p?D^N`nTb8l6So9L=9J`msyE^kN~63`5O^)~spTl&JxNynWz39You
z?j9=+X-PE<JeSWpmk*jV3!j*Ndr>=2$`$tjL))vdYN`^27nq*>aUN(TwhqMn8ux-3
z^|d(!nn#$&TgEzsA^e_?G-%w+C=#1=j7S{}#2_3?tj9GhPUT93N_Z$dgKBfWt!Q)6
zyT9$EMKPxK@7wafgTNzG;&_kKV`DhK@84)`BfCe>mpsufi?4r*1mO?}TU$#@OKS%Q
zx5OZlQbN}fWnK93By_0cvs-PTd|KO?&d%ANOY$GkQ`1C0b?X-EMz;G&u;Rn&@n(y;
zYvJi*Di(t`4sEAkX+$26{5X{Hw!%kmwqo^rGoO5gl0u9Z8wbRRUJ_WN3cW>67pn9a
zPMd9NdTP3&f5CapZ2~b)=0=Y;z@I5yNmen~oW(@BM<GI7{j#@|qR%r^5J=l7%h)@y
zmXYZl2Q$%m1-_FmOQ|HATr*Sr@paQiA<~1I$%?a5f5MDao9n-Mf_%>07vTyi-CwgU
zUq0*a{inX^`o)}m6I~r4*`Ty=_j9DWoc8rG<5n!;b;WCJO+AIj-r4)&Qp-XJ@OW_s
z9VsNBCOZ*Sb>ZY(=YN3fa}mGGA`u$+h4OlQBdq_j*J7y!zQJwKTTPDI4BOFZVw+HL
zx*5LSUtZ%`dbdfSjv_G9!Il(xYeb{Ni-i4NqdzWdwAg+;Tz&0leaSQRH`7?!D!pl)
z%??{ehwmM4`|s||K6M|u<s{}}bLDLtOve$XxoKYGbEF1*3ywnSu>Tj$J`}YQz%5EL
zYeHg>99gSmk)~4EsZf*9AhZy5J3o}Zto)g8o4`4m&v5KwsJXW%SynBJF)vVMsRi3V
z&ntBPVq>t*p^P=c+7|ABaLXc+^tI-Hb?VY}dflt|Dkrn`M(TU$b)B=@KNfzC^h_J|
zw`tEl1F;tCX4oi#32|Y=<)t>MipDmj;W&u+U-ITW7#pa@nQ)Q!`meK&*+0oE3$QMo
zf51A_w8!5+_iF*?Se=X1f~j@T3CC&#VXm^FoLt_7du#M&Iy-+#2`n1l+Y`ApLwHcp
zOFH1Qt5JbB29Lfo-a))Wi!?%8Qwj-~^L8Gh;@N%7J#XKU>Z1Z@<(Cmpgpp>X7jx*t
z0R>N8okXjU^`hxM-a@CU;f&SdiO;F$&PT_;B0X3SqShFxIXHi3jH2wtemw_vGsgut
zp*rf^I<E5W!tuG&3;WY`kq!|EZWMA?X4kqEwt|S*5vjZU&^jC=BHpJ`-Jgctw3l`w
z^nWPB2EiJslArrZ<AQ5wXo>IgqBL1?VvaJeqQ4l~A^!SEopFzPS+A^7f0496j6h5g
zJosUl9C;vEt-i~d|36?w$2!CkY3*%y8Wse7@T0M9Yo<0JJy+mlD_nN+?Gp)PW}YRx
zxj<g;IC|;b<+^DT>7Z(}*&WJQUX;%KpV$I38^!+U|Mjp`+DF;*I5PIm_U?ax!A~O&
z7roBgN1W?7&oN&3muX)Tdh4~M^Y>eww^pzJeSFqkG3^9WFz`nE8ALJ~-U8;b_jink
zPp&o}f^cj8jH9|?Ii&YJQMm!B-e%JS6MSTsHQsW8<kj#}9K8F5r^oYZVT6$J;CVaQ
zvG~A`Gxk9X7&4}%_Fc-<31{<luaRegWokQ9Gm|qDPE;CocAPe)OZ42ndLF(zHjO-L
z)ZkG+RF9~|jtlKc3Fc|Yt&Z;weOr(hd(0{3Gh>lmvX}AeU8oZ)uF&H5ZeTt34qu*c
zJ$iL=es51{mHtBPd@4OVz4EPPj<}c;Cc4L9hi?A|2>%Dv+~<7m?R9A}I+ka9u_=Wn
z5U}Ij2;x^~r3V=wqDoM;tag>6ete90d=PKq3oJ*5yeZ0mJl=RpI*kj`b@2{WtnLCa
zD7W>}o0&H&f{#Zd$wTBB0eCRn*GQ_?o?>Kw;`quQbsbr~xw{z>gx*5gL`2^a9(N)B
z-?doTUP-|>*Vem&e!)9^0Ed$M`iqOA!DpsL$72e6thjjVU(HZHbJge{qqzQeO7-Ny
zru3D;p5ZA`%iEAEzseGsgcC0uLj*a8*1|fzUHvJ3*7l7(=H>8BF7`{;g4CBnHN4~8
zFZX^tx%z%S_oJ7*ZP_=f7N5~`ul$1Rn+E`|sT|R(q%cwjs`<{C{>u9t-n@whvz7BX
zBzUL~WXe+mxqy!;Az0w~@%oiq*?orCh&kBAdD>t~%~Ab4<)FajBkdB;gLd#z?~Jn-
zp94cS!OR-od8E93v_G#BqEjE(lcay%N7iUY;di#E1ypd<|C4d0%$4@2xz^_Pwx;G^
zpR-49LpbhofREdpM|-zBV@Gc9M$!ET0N}OgkC)o%x*luZ{xKBxT4!5=Ur^xJxhL`e
z0S~_lFv>mm@nPrf=dznn?ek;Q;?oa^M}(unr0s(fr}%=qehYqLXOd#GgHS6@HMpia
zO+=^9Ma)GIEX{TM6pPc$R&k;eh(`G>`5;tK^_IKQ8;?KNd>yuS2qBVx6aSyCWH+83
zZSRz{y{0*wkCTyEKJV)XyRNnA_3)GFO9{q|fIFWWY>?SHax*gvZu9fgGk>Z~cj=il
z+3CSaVY+$rFFV8hf#5Df$&Y!^*!I6dJaoHDPgvJ)?!_kbnrC70cdlKvX^{>p^ecGN
zYu)Lo+D__6u;{QfbFTO60)5`0-ExE#gx!MmM1B^X?dIInc2k?{gE4aNrL#rJ<vS7r
zm*sn6xr32%LGnRhKWyq#jGc~p`$Oz$)VZ;R(PK8~Nfe3}jNTP$D*5o0x1yk@CL+aR
z+4HcUlW!jM0%Eml$K_YA4q6*x2WsbB7q&GtP}9GzcWRBqj@-SHD8?lGi>@<_a*nR^
zuHd;&P4P3sj!xmnI}0Zl7|xyi6KXf1*3Sz(vda~NvKnxy^^5s9;wD<mPR}38mH)^u
zt@Fw6Rkut}a>RR;JbO_yVG=9fgBXu&J)IC5L>0>6pMi=xSy@(>5gJ)?uCfmE79UF7
ztZ(Cz{BwJ=&E4NN%rYMFKqHUbCeU`yIUA;L<^T1QS^*R3mbrbGtg^CLmZ?25<!L~e
zqpgOHFEak^g8R&DSbXYrx^r~kB-~sFr$G3dCi?{dd@v;ZKKH4)IWzwKW6(|f2fRG{
z9&;h%F`wKsFGqamqfG~~K2`&(@xjoHNEKVc*UASeA4n5U&(AirVcFtZOQI{&&>Y8_
zlU;*Lq3lMqSTmhMfoB5RQ5@@Uhr)7F`@EHYw&@&4s|V^h?jR0_u>E5xM*Z*7pQ&$s
zwM6-y5*2)2#3v2-^qF`G=j7ZB;SxK@GVT69OnnDbQ`z@5<Dh~H(wh|N(gg&i|3G>j
zN&u-6s(?sGsUy7!(mO~e^njFr5rxpZ1PK!9UAi=Be)r-0*ZSUIK-L;_?z!jev(G;F
z<&ijhK2{X#B5AO9^9w?Lw?ID~Cf;@>b7cg{{0Yj2>r(&Df)M(5_R;OQqv0lhpQ%r>
zehY0o%<`Z7f$0c$lT_Y+u5h|*e!+^7XwW{&BhSn+{LZ)E2y49A%%7H)Mw6=Uob)((
zeW>8%cFD=l$jmAj?w@ZzyiYc(1frjx?^)S@NbmkQp7j+xQhV%d?b%FmLrFs!veJtN
zmRT!KQ|NP~J;m6YlyfK|vfc?ZQXF#;cPmO%<CyJRFk)i#%urUEx|1~+cVzXx@lfTn
z49MD{S>W=^;NSk&KP1?g^zWSQ<86<R(|=v>_CM<OTlnaQr+}>IDRXB`t#)I-#nA|6
z(%B^nx;q@DhA4e2Bbzs&f){zCN9Qy4+G;`RBe}?v3g1>wek^=QV7&UD$sbJ&=Yv}1
zjaMdSxa$UEzBbYbiD2N-WfR@Tn_5+3g93wMXr&zegDr$u_Nnarn276KyBde>%P%lb
zluuaYGmb>pMfXO>g~GTzKCQ3bQzXmXZoWU3IOFxy01Pn$D82sI>fKqHJyM^)J_U7q
zpnns{428^U4ErshhmOE1z^9nH93e9^W2iR@`tq(3FLuCJC7v71Jz^oK>S;1La9aJ)
zdf&!|(27dA@>zSV*vw#H-E#Fs^<m36*SjuJr4~O)sc5N|EYFR?S80}kgDc-eOe$a%
z+Gtf+%EKR<P6F%C*Q(ZBo^3g9>bi6Pz4)6TBmyH+bdQI)p5))AHylaJ68d7oUsR0V
zdi}`CiThzy_x@0Y@^-ljn&Nu%?PJJ(Xd%a|P}m<y<!t%1EizK<&b)ZRw4Hkldahrq
zvfsCBlkJ+g`UFb8RLXx29S|qc*TWz+U$^^RD;e}ldHyxPUp>v-%SexEPMez5Xs@xV
z+^AvVAg!Ts^<ygmyvhitKc$Bs#|u4|$$Bxk8|-LQY?9-<W=3O(k*r^9v$TeJXw{Bw
zc=_BzQ9hw_o$H9W9d?6nf>phhDb<vp<5&W>B#em5e4x4EyuIap$21k+%SEmKtH^Ie
z@%7H_e_ff6z#8NM_6&jG_vKvpD7Aq8Im0~d%eev~XxrbX8?=reN8$Jip2nDGbxqf7
z3ObSe8p%sT+}+j>J{Cs{6@1GlhP`AX3Wk?`>T+}67)RB#RpFef$LdmVJIFkA0;9XJ
zrtm>;r|5BAEit{6&$<y&3+`@-^m;>WRu$hI8%?H?^UPyFFAt2rW)z2#TvRgs>wSM%
zM6=q?he9SzF}79#(<#fT={BpMp-#MEI-hi)BKGq7Fvww$yy&gJFQo9-|DxEr9rtTH
z_eiF7;p4R5^f6#5QqxE1?SRmCOK6&e=i-LP!yMc+og<!i=>J}*&9NVCsA;OH*Ny7z
zBCrpL9au^V`GGG+=GPSlRwWP6EA`i9_29mumAgKC31%huU?Ie&xgvgl;AsfCd+xCL
z`>)Pk6FfK#Ykpuj_g$VEBTGvQ^~q%{Ui3GC8Wk(TqV?}X+Qx}P!;MDcl##0P{4*5u
zKCm0~D!^DMbmRfMl^<FOs8wYIW=qY0yq+3vY6AEJ?ZR(@i1)_-MUK++&*a_a*^$ru
z$+c?FD;&c%pPzg6#T#HQ+UK{MHjcR5YAePYJsS<SzSfo~&H~1aZK!UlLMhJ+@chV(
zy=^Pr@aE{rzx%!}W0TO3B1fthNk7Mt#2yugmdwOfp#7Y`Ee+%)&Dy^Fkya7*ME2{@
z#n5K|tz>ImhH?{gpPw9nD-hE4Fds>RPzMzkGX5{f!Lu5KuZMmUfS-W*em-YDQ;_Yu
z)2BWkeL1i5whM551I%@XtM0i#*JABTKxpbon%ESHU0>MxVZq+~_InYL>qYNPEZRTz
zRkv5QY-xVAew)dpy+o43)F4xAI=;c>nvlfxRo#`RlYssXZ=0!;(F;qv)|UWjdOG-o
zj4Z(;$pkuHWND(3_WTuL;V9o-T8q{?wC`9(q(w`0YIvIYF^304-l70S0GLk)K$G;!
zea0;i**RN&Pt&0ImdXJe&>esVk@J1%Xc+wJ%u}7;bo`kQtE=hx)x<8P3NW>>lGrL8
zYpt4e@=k8#Y2iOFaO-)x<8Iew9tR#~YFcvQQjY1PzsA++w14>C``dZd%>(|b;y2dz
zTb2L&ho1jsD^sP<W2dy6#2kIb3GybsE#>7}$6FrH(nJDpr$oC=biJQ)vhqG}B~37U
zW`zCn#p!^mO*#s4H6fYe>uq`FzjlZK<O5*AZ-ab2BCOSD1NjP)^au?i=c5ez1BiAg
zct-C@(y-dmJU!O5Ns-*B#vt9VOLC-*p=&0c4wDaweV6{C>te^mF8-R#K|Z75G0wMp
z6a7ZxuE#VDxp!{AdBfM|4X2VvL64avVpacV8Pz-1DpUW^c}irlL@har-h`p$#3b`u
zn<2&pGXAB1tf4`ldsxiF7iJA`k2pi^y4=k0+*A~EqRc9=H)I5a3L$ey4j~IcNY2m^
z`V#~yGtS#hO&)C!(w_l~H)oh<w$a<aR<n(pco6W|yLx@Ym5XBT*FPoZXfL-}SL1XW
zOdNX@UnXRO16>=gaC)u%=l`I9f>xZ6>ZgQg(6FkSa`K__?!^VZ>zrpxU`)<<SogDW
z`+J+ilqi_crrUBpD_`Rot?YE}`XN5)!M%XKs{DTBmsx}Ncu9Sk#mDM`xZJo#wC<LU
zFXZKrf202X7nlzC0W*kqsNx=>rdL2+#c`1OfB*+E|7#mms_nMRt0`#MZ^mIzOJmeZ
zFm%AIg4j2U_%@&k+RKd>bq6<LnJCXb52x%Eag`B{ug^^%RFAf*e>c7H6c`_c)H^3>
zAQ_ZF2ZZ@i7ybKA#NBzL>FIfA&fuFEOCHrk_YYzz`(Ut9VN{E5bou!_O~fX5pSo8o
zEY&QaR8miqr_e}8N8^b}nQ5D5@diW+K!|&4e3AjizXWNj*gC!9aTzE+J*hrZQ>bZR
zIYbxyW?VqT#J>QS%h420Tfj8w87-wdjm?B@WQ*u^E)fxpGW^#KF+T<)%BLb)PT9+i
zips>%>c&|_%`vMVvt0dch<XNfYJ79Q#7)OdSO&hytTc#Cx8!>>iNjA$;XZurQ%r>O
zlxpZaehkwlMlpT*zC0ypO)RsmI6pJWcgw%@FLU4ZZ<(1G7#qIPay(%bvOVNq;QW`@
zKe7L{Ex&sAsNe~BG{Hytp;I5J8K%Q6VxM7ukg(7arjLN?1DOsmzMx0O8|G$Y?XKfF
z6-#lw+v<UA*rr{#X+6T1rqn8xZs9IXGryqmq_J(+OwNL{ETvigz3dIfEH7~?@yx;M
zdRv7({%dvK^slCz?qo?l{FY^-_9)Vc&%wc=?4L@bmoB8+;*+kmNz<pN=fz*1y~QXb
zHk5yjj=OW+h3Uh^S?%l}r(Yrcn{t)~tY8HSA|L|f?8r^{`=CDs)W2JifN&9_1t8+j
zfX#8IO0~7E_ZtOh2a`m4nOB~EJ9Kasn=+B|+|=$f8bsQWnil*rc|Nh>yiw&WFxBu-
z!6C=c5T5b(JU=Wmtzk;bV&+LxVI6D|SGO5*cqo1-PU63;#>JND`F@}3!Tt}<;0qT~
zpDb$+IyDiIZDc}PlT}Kmbiuc#!X}r!p<kynTN=0j1=u1_$Vm9|8plh*r=XvLc%&<t
zM>EkU!T?ne@-r?gemU19$k?G?3<~#O0B#`bLA2Ki(foZeKPd?gFbJIsH^0e|8JBy@
zzNq`__EFa_zlN>3mW#26-Vebow%>=J@u|qh_wouB!z+?|SgxoCn6{i(*LziehfS%#
zPr>mqr#trFtykEz*%-ckV~}K!T;B<c{pfSu+q-MdD!E0CBT=XJ{ykg28*NPQk6wIl
z^N^|8FOK-Ma~bWigs%u$m_SGC%D5^qJ^S|VqWcx$`)}ng9lrIy4mMH^&d^gopveGi
zzmWP(5P05Jc#s92FVt@(5ZWj*sbPPv+iZ9s$F9@Ix|hFKc2*q3qtiRSr@P1XV&er%
zi<GUiuC0jrgc&w~&vVnz{R#2QL(>ZL;`b9<Wm}`D)S=Du;;O7oWE~&^r8+wDDjIqP
zb)Rt>ZUXqmFDR~_T)^dzroQoq6uvmQZYz@|PKi1R{AINxeVgDi;Dhf!y}RP~FW~et
z03Fd3*SM~UiY6C<Q0WGLy+#pQC@P_?59Tx=3qHxs2IU@ooSvTk4mN=h`KGpiY!aME
z#2iuLb=(9njeAoX&fYV)xGkx<J@P%evoJZ<n!OuS*e&J3G*g==HFi0faTOdyRSlbC
zDD823L_#X#215+Y`@!LOlkn8!<c8o3(l#jpgnvRoX?}5Kb^86u)GpI-m&wK)l(^zi
zQKF6Q=JsJg=kh?MIwt2(Iq-`Fo=(~ms#BNhf(L4PR$>IauK3=vrw<PZw=)L?Yj^rc
zl9T2-EsdW~k1XK_pEEx{zw<n|TIVd~nIAOpIU%N937OQ*Z@5+`nfHz0!}gp6iW=>0
zyt#f8Y@N3?Tb|FKy(qOZwbr-N+vD%je;xcrMGvWVKo@&b32W6p(176)?Ya^;<O`)m
z=eY*Eq46K$CcVtvypQ$XTs7zP<%<(HEUj}{YHi%4chu)dwE1({fy>6m7RTIk^w;&C
zKj8#zNzNyacgNRJ5Pz&qx1ZbuI{`H)OxsOuO-(?~A^=k}=qyq52b_4ZyHRm%YM-Cl
z=2COq<Q;}Xnos@*;fsfcLU?4L&yweq_?x`8t<#S)^&3Y=M-;JNv9iVG-fQ0~dxG;2
zPqf~fD|_8|hcT}SZ0Osr{I+2*CmihNFQB~E0zM(RbaQ-(ZY?EWyM(&<5OuiWT)E}E
zWm)$eF{GFQ9{=>`q5#oVE0X}4aoOv~mwW+KtrZ|80Q*rhGTVUIY~rDQ1pGO^4l3Ey
z%*Lt4n<&$iNz2rBKb}qQM!WA>sV+}i>^8PWoAZ(Rwv?d5sV7-z$n9;s!%cIZdvS3A
z1>C<Xktrgr>)(pKQ@(v=vuQKgd-vVXVUQxBDJ{*hwOlf59mOBIllP*2>oi959Q|5t
zg5=&8J5*njOvs^;xSv4oj8$V(z#%=)|7Uuln#{H9bsP{k4thOHrWpE~kj$5Jh6$=s
zexT$+#cOg@5CZ+9kADGb84y;ySI?J-mimd)v6U%0to&B*I9M+}IQ7u^dxd!Aw;=W6
zbEPT`M^)w{bgso<qw`>tx&<)4$!{8>uH*@cxESi^V{IB%h8uU@iqTgimD~CI#$&|k
zdbC^1Co7)O+#O|8O9M>2si`)Rw8g}Gy=weh(6gy2sne{})4{lJ=cnEby_!AH1u`4@
z^1XH2#{bGC8vP<9XJx&s_<9w>f53Mj#P9a_DAO8j4*s?~z0!oTazpazqogWvqVT~O
zaeiF=pKqd8QX4J(l`Z`qO?>|#<y+K%xT<)B-WbGBEl=?G>4681G&KdFL(!q3kdv&%
zkU~{1IqOF2_>e-$EpV3lv#G@MJIIvJ)|)mPSs5>w?bNsdP;^<$Kg*$Ys?nS32pmpm
zTTBg9vJZ0da(V{;k;er#0))?>RV0l(^<$rf@)*R=uT?e$aG4Wo{8@zuSO}=ZfHea%
z;!gci)A}%#eb_CLpF+^r#@5i{<`8yMdtm0_5N5ht_^0zXJA_kQ{DVpTzqb7*@1U9n
z8%>joH$f_)4-YB+yRM0tB}rD5oESRcLJZfB$dPdqC*9A^A8oQXq>fJAG~7T9WXHxv
z9g2#I93JZH!asgC4cdC>yE)~(`Azg`zlVRi?dJ4<d!WVvEr3lG)Z)tq<qSX)c$@3*
zqI^&w{P9q~k^>4DSOLF4QW0Rkjb^sJQ#p;`j1ewtc}-jkNKix0SscA}&e=;68k5|n
znXIMMuFNZb>>lF3n)>Uq&oSrcXmGX8SP6qq_`7TUHaa!MNXyuOD4CAw4tb*x)9XnM
zN1veSxSuCuAEs_Om)O|Y*-j_Tym%@5P|m-RvP~+np1Zd*+<aSY?f<+!y>D~d=CVft
zun8om+f1u(-@Z-rB})4*19G-On+T!^Ey|x{vxc)Rd6E+a8QiFuyu<?@YXm-&)gyaF
zLfaX<4Cy7e#EvgVI$m`Kf!FhGu+c?i*9NltkLBpl*HLl*Q@E+_#8tpkP{7B^M{pXD
z=T<LOJt^n1Idk}9^T!6O&HI6YVX)s{`~c9?q^8nmc;<pYR@?qBQnp{el}URG#R()L
zuRf9n@;C<v=X5Y9F!HiLX}%3by=GCbh>JBa^m!Ji1TeG+fUYgDIJ;D0$OHTe7+cKd
zXDRk1pCP*@ha0^nu08QkqLx3cIX$ll;?>P>+1c(k6vM`}sC4D2^wnTAk)P}}7r#F7
zn!3Yh>SP-6e4;+z_f6=1&7MTaL6A>n)?~OZf!p_wwK{Pje@|NdkttVP$$W|AW?!z#
z5UQ#&|1lRTR3NzHGSoe+8M+1&vy0jP@8Z$cOI`w|LVk4zZl+KbtJlpWFUK$^ZEtU~
zTZ<QZWl^m8MMa&Sp8g%ePE<_<Qyf#eakA)?B>x~qk0=`BYtL0TR*l1bn=+mHHf227
zci?Bz?PPBj@&z(?8<?2%MU4Y;F8F&96v)~>QaI-R?#m=3li#{>8_1I(e?s{>5T4Lr
z`~a<P%d<}}8`nGJo{*}+nb>O+3$9`bZTDngsz(+*WN#@Cg^dk~8P+b;areoFPE(Uw
z;Byb3ERkQp;430*_k(Gl7>vtHE;^A{DmOf!R`YuL_M;z-)<)xxLvioMuZ@R|U&UX1
z=x4>QluLf7`FH<6E76zcs;$X@_<%gjEfqR@UnZCG-w*(=U`Fz<$Geb`pc%hWR>2Se
z+uaaqpojJ|Xy_N~p72A~iin7aCSMx6+@%c}I|v@y4TZ*tqg~#E$4_E_?uYKS8+&N&
zz;D$P*>%I*3k#!mN~+YZVkmMPtAbq}3wv3na%*vN^7(`_|8oHs0T=$wO6TvdQj4~2
zGoK(BJ}7%$#sd_>z**eH?P|cmz}0IKcy9Ey>-Ft`sr=D?KRp6y!Favr=k&g+#ycn^
zP%}Wk%TCo)RTrV4=(VYPBAt<uUCJ}$o;?YCYt0S9HhTbo68AT*+-KpDPVP{htr~ob
zuW`tt{!JjV&KvF3^OfD;je;2QIJa???`nIc9&2uAeQp1nkLNi#4LO53ojFx+l4?Y-
z+4gwDf8t6QaHW!Jz@a&R3<fZz24VyJVmc}GsA!*#xgUt6bbrPj5|EC;d<25x2u-N*
zE{gbXU^1wav%#Fi3jZW?61Tf%+tWuyE$(JWTUljTWn?5|a2fkEg6WpxGwZ^*w!7eM
zd<W1Z#m~d8J1!u!a~N!%C6s9+Ovari)Ts*+ZXNO`O+IhRsY5m(o9j{aO~?lC&L(@f
zmgsim{IwQ_l#%HAq9ou}kZ9;_4-|gO^Adr#{X*v?rjthB?n=x4HMGxo9Sr~iWE#+l
zpb~O+n~6{Z4UivFFMbmQ-?BmRswWm@lsIH^fk&lf8fTO{!tFB3pJf(haH-ydt`k~|
zHvu9K`U}`|cBc=Yz-iW>eAUn*;q_b}=QC*`D`l92OMt^{LsLRh@bjuSXwWftzNtTS
z`PlFA>RFz@Pc69JfzP1aEgXWcOKYKM7+QhCc1>dXh?tvrXx~O!2RL^N%q(w1Nw*DN
zz?uNJJ{So=L#4JA3JK|h`+Pi!oEESZ6EAT1rBp51UfK88kCmF-7T+}|+sf41AEfoa
zg8C)fmV$VE%YD%>5?f#7bu_5hjp_o5YZpW#VRYlfWGkBe#dbcX0j=E6Et`=j@LyBl
z_|!G?oQy~HZ7XQwBD9HDbQL)Wgz5eNLKv6~>;+jzJhbAP=!d_?%o#E4fd*|Gb1*;$
zAfo>PUB4M9hE+ADW@a{SQ35~b`ktInCui<e@zx=D^$G?28@_ziFp|-1pcu;${*uGJ
zD;IGlH}{+1=J7wHU&r(&465_Ndu<1_4(sS>``{Z5xm|oRkS?QB_FI-Mz|!Wx@m3m(
z9E5cJ6nguFF7n5Cg)&-=>Hpvh4Ph9X8=x2nT;RYjuGy<SFLPP;q;Jtl-(psI9r9`C
ze$ei1_A|=q5DFr>pO0LFIc{lQUI76zGSDA(>Q2@tEGLPY#XQ=YS$1pac<bd~A6=3-
zIz;*94&q>g4&%|UZePEBEKACA!gBp~NJQ_BKMVM}{;BgA++_McaFgj@R|pBOUb#a2
z_up5cXUhFWeub4ySU#VOLf7i9h=LycKDhs%ko_Nhw}iwmJCw*#j;GdFMIV3O4W=si
z?*`Pr<^E!iO<G9qO_Cy;?AIkR+ruYEDMhrOQHMEEmGLM&C<x8zGbx|1NMH6M8Gn01
z;vj$hUTT3wfx9it5oXF;wFon?x)Xbc{wc2iT9;)7uI}8TL*qBW3%K0zA(QNz2$dpF
z>2z>gW<^{&#y<+1r;G1far2_Ynk!)y$kNkugMEnyL(jP}$9d#c*WNR+KYq-j5Aw{1
zTUYo-JEas;T(=7e3CXPhZ7_=_#OQ>@znczuZoC}J(M8cuyu&`C^6of~a^ByYw#mxx
z>IU=*{V1fGR;2$n%UE%NwEZyoR6U@Tsyo@NhA6S(wmFfPDS}!wwLYcdZOQ<Bb}xR}
zi(-ao?$(mSlKL{s{dFC(^@K*tv+ZuS{quN%e!VAj8V0W}7F#|pVzpG!a@M_v0%|91
zw?5yuv7JvI*ighR+4HHSE*87%amNw^pXs`%Ak-(^gmiP+Gu>|Q-eH*+&G@AgiLlVs
ztD|ODQqnB1E1y<^HH4OzeXgAmT0fL-7H7Nf{L0mt|B*PA(D=r^J!h3dIQKP-Hu<PH
zZ~mgBas!Kg+hY_%9{Zwy6K%7_oQ&cDUMDnCGeJh2R^Cr(Q?%VaG^+M%nE8$91U&`@
zY=Hm01X;fPsTf5P5+<mO;uA#tnWA11H&|J<>)+_SU#Yu!FE(0|YM*CSFib|AXH|a`
z`dNRZ*nv}=3i<GDrT&ffhOiNZ*sxm-hU>33u@Sn|j8$YQ0}|O|9yxWMQsf*W^khDF
zp7g@3?d<%m-mXa(BkmX86o8%N2B8ECoVbb)rSss}fY=9l6+2MHn@?0r61gMcC}DzH
zLh&YL(9B)u=|}Xhvt#|6?i^6V9z|DRmnEW|b=5~olJ}^4t(_4muzZ+qsFyPNN3%PW
zEEQ|{OXn6CmGwi4*gM2xA<$B85^KKF)p=iXtmMz3O_}QKF7CeWBNc1?*yN3)e|+jn
z&o)XjXK3CxYMqOVOEB2?=DU2Hk>G|#&x<c|E*%z$<(>=-bUkzU?OB}&>n6I{kx{&T
zAn`gYkpfjg7S+9;d=6duWG^KqT@}4Fgql{gy1HR8C+9<+=4vj?I(3+HD66u<>j(X?
zBN{mrX#uZ2AepHH%M!in82-q_JM(zb0z*aqxF@W28z>J7={7hvT{kS(dO%AvbHLy?
z0VN0}`LLTwo4*MrLI4vJVoc1)iOeGF)?iOv1c?|r5_$KH$`*@xUv9DHi#PX5a+I(c
z&Fcx+Zv7sY`)|4^tgm7AW^uWe;~TGnjA{`Y*V;?&J9Dm4RkG<?afDqV%f^*3g`z5X
z??~LCTINO!{_P4IK{)g!=<%-0w#Fksnu#=5xjkxbiCSk%W&K|b+(H5IOKpF{lzrYl
zbVKaj*O14L&HQ$9UX}>G8|m(7BRzu?#YCq!CmM&M6^?3_g<R1q!)|^}JV!42+tAAv
zzVtgvr`0{rd;TM<1ctjT%ZR6;@40(!Yw`ily8eWFY7S;x!T&db$KcU#f{o}re7G0_
z?<Jbauf>be+fWfE+3CsEgSRh9=(DG{3U#fbIT5FHx>WUpM?yyUG~GxvchUw2f<LS`
zFZgZ<J6m9Ai9P%>sMu4NQZQfP>-HYPjp7E~?N?P16wF~ddgamOOeU0cnzgxRY#pJc
z*O)V@<~ooH26IYOl?hssYzgWV!L(tIsSG%Wk0i{Egr!wPjpVRPsG$TtR&d8=)eYb*
zB~=F}JuwlCZKNSa$a_98Uq*>Ons5;&Vxizm)uph?hZ`o|l_GKY-^j=W>6z5=%Bpaz
zv#n}*V!0QuNs3=Iy5s2f_vZ7dc)Zv;-f5!wynEPV1@#mEYfE#18|xqDY#OC3fI-8L
zwuA!b!OJU+0~g*TjJ}Z==2x}(TM=!$s3lsq#$W@aAbk5cO)w_k>XfQnw%wrafc{u8
z=F2OWr^+<1YOrarlf(g~HHsw)1H2kvOw!<72w#R-I!cy@Q&fr`x8%HJBj(<>l+ue$
zz)D7qZ1C!8-81N&3DYbu0B#y_xgUq~X1l*(8>)Ukx!RO!tnZ%`PO4(}(0U%<<fim&
zGecT^6vx|i1k6kg7E^`<$9Sq`{kzuHRV=x2D+W{f4=QN(@+cROyO7^f!wgdN45CvD
z*TvRZn)}I9S^Yu}s7<0v)3d2QYZ6CA0k@go+VEyqct8i-wi3v6teO|n6c+nJ9(^M>
z%;L+(FsCnlUt_CSBBLkt-Wx{uoz#7-tf}BLNvTpl@3fdNMHrd)wY>3-(5Y~%(S^L}
ze<bUd_~A6WcR`|*eDI+}7H8U==PM<xE8(xAUWAR35OWBc^-CqL3(bZDrv-KqS_OFw
zyPKlKM9InA_wbPzML51=c_#FwJ1V6&p0Pk*6iJd@>G@uamXYsGT!D7yy^>_Tw>9o|
z3y2g0m|+-9nS7ki8&p41oH$dhv*J_SQmhnXLg->hBB?6s=74__<pJ%_8#sX3I#}-N
zdEe-(>OR!GA5`*a&9z;eRiw%n%8@N=cYYISf4}u$DnHD)QDN0v7Al4mGVCTK)B^M-
zAo$92lpFAY3m+Fh^jAbr;7cZW0G@?nFr6a`DBOlOaP}if<%qciISO(~N*b>FNpv8E
z{k>W0tru#~3lBHM))=xm&2ONK1HVU~w^CQpn~YRB^o>4wVx(*U>cx+<zLt~&zIE6*
z2-TJp85P6A@)xr`ahA0RRrTy%nA!3&N?<oUQhk~6h*K(YQs}cg(?bER0s3_F-emyw
zi=wGSF<=|ESh%y!;>hQKRFp0-r+``(6_ntu-H;`w`l7Ff-;(UBu)bsqylx>@&7krL
zl0?OiZ#)UCfv5ueD6)SQx3r(4n-AkOND<OCYIU#iUa-io(M=T?&Ryxz!3tX5M>%3%
z?Rqgz#FVXjnJv4lh^a1@XL-sUZjN*)wGiu7nzAEt=5jdmt0NYp78tFVRu+~cmiGu>
z_0%v21a+1A+pY#SLEFfFvb-`K^FE6L-zab;m6CS52#~7GC)^C4%~F87Sv^8(#87?f
zl(_+D!>Rg<P>WGZ(r!$iHs-`z_6`e4e0X=a)u}h{VTzy1CNA)MIGWvrTHr?C33Up1
zozN@DPxH4bxVxlO&!q2$5<HeCbTl2%E;@F3tf({~v1;YRow?X(8B#lopr&?TK2|)g
z6A{^6_D~z-_z)pMPQ%8}s~FlqfelbE$AZM%=dG%shS7=t2{Vz;$feJ<wX?Vq8j{eo
zBr751?hfk(By(bMz8(baeWNDp2GMI+grh+NL#)z=sdUFqlr*j-uGEmt6vdyJ5VNy6
zVp(xYtgrN5VM$@`LVl8|SuhwKy4?OkAPR(yPSh^T`@k>YpBn|MSzCu`k~oT$op<;A
zqFl%8=mO?JiPh8zrard+yzAf;0jPz!(uAAWZ1IgwaUP@+sE{lQiCMVPcUe7JOBbC&
zU+(Q~2)TgoLJsIwmMa05{=;xbSWC0N=tmm84;+lxU}=KfX^{X3Aj4RwYw%sS447(p
z{yq@6F1Q0JbfOv91g!>=w=@$cIX>Zy1Fp%2>89N}dqq$GQYxpHNkv%lX1<mrKx*Z}
zb#a(3ObMnGVPM6b_Say42poG+V|DM`qFw7LP9yDFyIHe0kD3*a28aHL`PEC}1eoWk
z$|mn&T|?o8%DjNM9Jzy$j$Vszie5c$boIkQH!P5PQ{hDsDma7k8?XoX66!vSV*Vlp
zvM@LCUN~S$B_g!%^VD`h;yR5X_4ZTr!CsW-7ONs0WeeARK$RuOD{yEIpoBg%%bvzM
zM54&u*~yaOJdJEwaGt<|JU5MTDzwr+>Dff!Uy}C(lukXMU=0a)4O8@s=b_W4#BG9@
zlbf%^FQYH6y93Vs7iH*D7Gpj9(PKf$cjZ;r=@}8Yr9}Fm(gbpM8rym<HG5Hs0!(KN
zKLC>r)BX-{RHKbbp3F9oX=uUPx-5sZ-Gu532WQ!Ip)HIW_HI3fq>GYY3b1%%S7-f*
zYn{aWQdDK_dYSEfR@6MkYD7k4q5G60I$#&`il9UQrre%H>is5Iz?ElwM#3l~;58jE
z(p;-S#YPRzg8l63Jmf`Y!8s{RTQDqDpmU41)lE)U16#bVcR;I4j1=d)ag%tJJ6{82
zs-I3=*Gru!%1|c-5O%yupxkajg7V^zu9t^WZgB#!wn`exFf~0UVYjh$e7r7sya&Hu
zp0M0Mc{OeZXYJ250LQQv_M){Sj#MD4=4L}=53~9yG3$a>;5}q={v3N2DaONiDT{2<
z{mH<{`Vx}I*kJ4}LQ^Aa%RDXUvBiDmLT>$x#9oKxC1gs>E1jsxo29?bqLO6EW$D;R
zSKPfgoL>Yh-BVS4p<4%)%JQ;Wyp>41ZHP5Ln{H^aJFX<xl!_x-5m(8<@qr10*{7t0
zyv0rDO}X#P^&#u#ksnzuNt}`)Q~ds~P3)4_`EP<#Vc6LdZw-meJ4>}|OSPa!5<<d+
z-HYh}lD2vPrcZg`BIF8?O3wn`a6}z;1>C%x*<(()Pq`oSP3T!J=z5gjGmJPmIF*g!
zL4V|~#{KDop5*&GBY~q(`PEQp$Tyc!U&B`CsHc?$&Yd>N+O&x;8;3b7$!_*pR=B6p
zMFR*-Mk`GOE3SJ8i+fX7-s`!<PERVSo79oZO?pg*to7vlX{vbwEmY;OM(PJh{Q--D
zgMfSUBfT8U4yo}1@d9Btx~-AU&G!3rU24*h*nJ1<3~=i`lkW5I1=22KZ-80kfKo&$
zg=q(uT-CfW!6nFN_D|TvXIY*YN*c--s(nfe*jco7KT?ISU0+Ks%B7(2+!94?1X09J
zT`|T%#;q)py*Y+rE1V~PBX1Fc8c=|>3HRc%^Nu5$pDsFOee(^S&I*mJGU^ru>w*Qq
z`?T^hg!`hk=++y@nj6ZYYJVrh`m@~Ld+D<yDBUd{3Pn2$Q+$+c!l^e)6TEnhw^X6U
zleg$h5m1(54XhYlWUOC?HNKx2B4mJ-5ub#ft6I#-=??sqXrQDHvr>62Zx0_g{%ITm
zYe_4^nC+d1QJsgDS$<NFj+gL_Iku18jlcC-fLXsEj>Y}cEL50wO@wGRv|;xDQZAO=
zEy9`~>YRaZl*#Y4bLQigBvi4HsFZ<fJ~MNrElRA8u9sBQE;M~Hqz<FMnKD&|DBYD^
z45~U3zTo~%FdALpC{eB=T6kLlM(69Gbd&gIpC#))@2bIjUK8qq_XZK;@nv5Nbt4^x
z>EW`bpnnuB7Q%9u<$`U;a&fWVIHca-!wunu(ysllt6r{Gu6GWgmDG*`+?D%^8$8Px
zinbA*v08L#hqd$_`Z=7VD?m4xB(<JF2B_2PeQ9L~-|#}3Wn)0S@??f{=L4&H4;ZKO
zA2nCGXPFguVpzRq-yt1iVAjJ&tXQ)aAst+pY6^>$`?xzGteNGU$0elCiATZ`2<2|Q
z*HB5`o60A4O`zHJraK}1Dn*`8NTzZl0|2^%WG0kxpKK$n?zQU`5~USsJg$A4M)N?7
zmQ7Hl?3auG5v>9DI^_ZJI#^z@kgl;I^~d(wN>=&s8dSut+)%O3x#e$yg6bET)A-E%
zmN>^X<iKx&+qWN+(D{NVLj<pC=WXbe!l%vSqjnkg-#Cc9gW4n|gLP0x4@dyJku^P%
zRq6NOR|u@?vjj<*R+d|)sj1Km@W%I2rEs+&pS4~$r@t}5Q(LJw3!_5cun3d6VG;b1
zDa@bk<DEPTZemI+Xmg_1_=>6=4I6kZN(|7ZDSk&R9|AWAko0hBBp{2_NEhyPz_`(h
z04X1Er5DtoR!-B(!haJ)QIoB)>bu_?XfRsW5j#no3DFiM?2MHl%ZbdpRcFGT+MSBw
zbyl#rCH0achqT+8kJy2ObM}&}hLrO^1WnK-w+F!{K=^+4V+iPyeZ$d@L34uIlQqqN
z<1IEjolTRc$hDAEQ#4EBC@myg3|vWeKDD0Opfzt@-=dKzXnm^eR~zMR-SYB|vR`|5
zs$*qtpMQ|Kszrs1R-=4%Ghg$S(g--dQwm5d<veI1v#8mMAesp%iP$<rtV&Nm&HNDn
zHgx-si+10h^xOh>%_yYnW=9k0^flqwisn%=MKh4kM?7xsnFUJ%c6zhL`;@c_Y57_k
z`hGVKIX`f;33g)wM{Csnl-hNej$UyE!+1Pi;wK3RMlvj%P1wa2su3|W&DqvGZZYnl
z#6C&JUMg9j`E=8=bmuL@JXX}Jw)#m?jvDyh`y$pYHOe8KmbW&Ae|UQ?owI_nA1>kS
zUTmEzP4k<8J2X){bk&<;L{%g9&6|`*AQo{h_cN?;{iN->AS7#3gH4D7?4mER1BMMy
z*@A+miA{J*@e)HCW%{0<40gWw>cag4U(&FQFWr4szP=<ET@g25kqbV`q=FP<w1|yH
zbc`$+n7%_4B$9JP{=+H^FpO3!Y-9)^EN(+KWK|3ccr05nLJ#YNmGfTd_gF&776d4O
zen1m%xj@#;C3y2QyLDi~sq%X!Nz#O|vbC55x>yiZp$p_1G0A8Ek7VG6^FeO$;J}>F
zbGE~bInfSeE;*tdrX8jspCWJ#tN`#9uv5VPBbGMc#Q#G<t`F@9Y18Oxr>LK_WhfG}
z&}yq;ce};G-Z|!*X$rL|a#rs31Liv;>70cbW7hp}3S?g$`{z(=DW=f(peoGbCSi}E
zC{%`u0tiJ;I>mx^6XKh(H-8AHP*YPILn&eFgoWu;xEKGxI|^?}1=f4~Cg57EIUnpa
z`MITgjKCM}N<=$)S*;5O3AUG%JM&V@S?R0O>H<3PNawXDS<B6LEjRN)QzXR{0V*Q`
zv{33TDPAnPrxDl}dM|xwEvO<DL^%>YxwWG9^O$0H62uv@NE6Fdv<piFZDXL-!YN}-
zqiXJF4gj*N?d`G3{jTK(;CDJ-bc&4H`Q|{YpUV^<34~CwccYLr05NS|i-O{H$YQy`
zm0^#JS3}P*9)rEksOv#{ogX?X^fS(hUhC6Rl#1x1MBPmn1Sr;!(y6N^S)LNl3|Yxk
z7`d&H48#t+s<V@vFw&}P3q%0wI*_SMp@l@rRup5wmhwB6MzuqcWn~EJf)+1Z&y(nh
z3ipQfpn-~M*fu_U9S^HqEU8QFd*)CQT77T8+=pse5GsTL#8SHoR8c#cDpsCAOT{=S
zXY<lQz{X3Df1?eASXy16#p>v%CwfZVd{@ZoNxhRX$B;#$6^-D1SDvGeI3Q6L7(i~>
z#=9G3xxv=)%M%`%f?RwzOX){+<Ylh<-8fcUA>NghB7dZs<!o;?-LWdWq>7*xEY{F#
z08v_jmvdb|VEneTCDu8<&zfDUFwkf-*qiurP&G{{p0kBqOMF#{Gj{lBE+OJ<o%0<S
z24Cyy1Bwj^5Vwd^nPO}IRK|A+ENKd~@_;eE%Z<Psr|64=`c}9rm2xCUPF-EBr0FgX
z)KOF_u$6^<5h`$C@w==ygV#E0!$v+Tu6j#3gGM=pnl(j0IlMtu1@tY;*n~%*juUAv
zkL0O|h7J>9=NLxHb8aAbOZCbFl+=YualNsoNp#?|kpu<#h%|LR)mTZ?0>S#`w|m~y
z8yeo+k3oOkdV2~`{x?vIsaoX)#0f8!XcZ$O_Rhaqbi41QaemP#_<s9xp%lt?wz!pW
za#lgXg7WbFJ3zvw<mWQ>rif)LxgX`A9Bi50W5{DmdV_bAsv(i*FeX3f-b_*8%+Fsy
z2hiK!FhFx^C>w&pE>esz!6N>zEn{I{0_d#(%3jMBD7Im<3ZjB)ml+V(ZCyJ8V$=kz
z*+;P2hR@89oFge;lJZ?%k+v(y{B|*MCQ!;@8oVZN9K{gi9{rKVZp2-zkAQHOTVTuf
znm$s28Z#v^tqAoWw?W(ce<a|IHbuEzhY1Pk1rN8vv>uVryz`4tfS~0`y)I#8O$t29
zl%gVMf>v|v)@5D}59!om!9qpa|4VrX&i!{=VOY(?zz^hzluoDQZvf`?b+xpTv3u0I
z@YD~jH>Z%hxMOD^Vl-LRs2ROSI2gRQRjp10l?1Re-2;%&O;9yn^Z@}3ed(hlW1?S#
zE6`pAZQaO*J;2L=YvJMPSaL$8foe^&bcv|fOkpEBk888Ry6r<9ox$4KL3x+-Vu*dL
z8{5yk*d_d^vpE~i<K`ywl5bbpCVOD{6(t>LA#|54dn`ufRBJ*mm(S+vEcVD-!mgVi
z7f)CR?@Wn&LM|;dmuh2-r0k~P{PIe+vkYjKF9=<0aqA=H|D|&~q^d<JK~TuvNw^zK
z^eSy29mR2+_r>9Lm1;~Ln-{f`;0;Eq2hsFOCRA-|8i3^cd&@#3HLk-V;Z!}X2si=M
zQC=ktz5D|(B-z9NVi6cl*yDygK=G3*CYY?5RTL>nnU6cpz-=gpsN7ovWYWtWKJVsc
ztP{Hm^l#!pKt<4zS>)nu&ca_LRW!{Ug)cK4)JwO^<>P@;1vXzQQ8Hs-JPw)xl!$;K
zLGWQT$aJEb2)IOTcD;3~Y96VAK?N~r0ADYkrU{-sq>8?JrR`>VLUcTG@s#cve+>O@
z)ZNFvB%M)U>ouV?2AqR};zYNr%ldJ`x5e(!_#z;emIY{5E1Ibb-ZPH2D5iD<i&vt)
zBu;{^$)`%2m+OZJS$s(cL~4~Z<nza{P9OjbeOSzgKmkPIn_FVaT4E40!3%(hfi0G|
z=<*gtGLSux^kNfKG~1h}jEU;RV2<yRRr5s+hIs%b)Tj1qh!T(|VF32Q`bF63Q)PM&
zwzz@9q30#hATb1}lTsvE*k@r+%B&kqVbrE&X)=*sWRroiy7wrGgZ^@FP2!vs>bTW|
z<k&$)(IHNmb&%oU_B7LQI~z3$_(0(IKgiWli->_p*ujRnHRGHAZJ4fhkNVS%jI71P
zrK8AWJQi&uE&lXk2+$iR%ZBk6m4cqQ^c}k3Fs7s%a44o&pu>-h^o1LQgDDU+8G{&l
z&Jbw#c36c)?7FR`yZ~U6CVX-4>?$NrW#?CTW~MC&kf7R*&1PAmq$4mVVv`|TiZtii
zd)^{QlV%bI{Q$)IxW`e0h@qbnp|k3bz^%rnpYo%5r4QF1mjUJdu0baz)ut2__~V7p
zbsey?zJc9I8zy<Pre_;k(pDlIQK*xd`)NfWsvS7rrQHlvR?DL830I^!(cPc977kc5
zwSaOV*=A%v4cMkd(8+?16I$i|g{_c*Uf&Z99$T3kzEu0P(1r=6kq&Hhg+F-kK)6Z;
z@F#5FvJtoC9UA~w^td66R(K>6dx@YJ;4<`ZN)58Y0d52s>?|gFICwbdlv*z!b19|S
z^`W$e^uxFu_0+<n+jvcgNP_W0mYHF5?gxfB7n(WyBLUrIAzg3FSn{$3VYJ!_4k4t1
zL$g?uaK_O8CXgk|V4PsjT>0^nR$hScgT@c_Ikr{rITjtA%8`+;g%Fei!ptJjy@dxo
zM||r1(M@PgKTtY)xfQ<v!BT%(GT)p<D^IlHz4Jgg)?v%mgD->P2@T7&V>L;znfBIT
zQ1C#~cn#~>*@beWx8@Sw(kaVP!+MeCe_UMkrm_(X{zzd@4A#S;O^#^nC~<!90Q4Z(
zzD2RfNDSX4JpmBioNXEGo79dMFv2&eWNp2QsoVb4jSaG-=3G6cE!?mwLfUqSP_pN3
zy{Znv+J6opI_Zs6I2rqO?ZE@(LIC%2uAp~@R<P0oEhJ&)>_Wv2sCyiGW(u@~-g8qS
zzX{~d*h5``n#)BzHx(_#6qQ9OE{cQ(RKR=&EQldIuw47OHvDN{m!Z@RLQtH80~0L&
z&vuYxj~_oS)g1%9v}pp}kw`ZLujRrn+;m}vKzrRm+JT<NF<uz#hflj2%dLwBXevgr
z9}v%tYmoa?cX72@!G^c`)ixGwv<_CWzpysE;Vo7+v~YC0>?9s=i<9`WliviW8IO<4
zJ{)b~FMFpt7=d_?nbjtoRoGDjSeO$FCbUt=^vm6gn-D<>yFH?OZEQ%fz-{G8Iil@s
zA3977)&%jnku@gC6#cTx{z1_iGS?apQ)Y$Hg&t5&gk?C!%i+;VGrNJrbA)O>`<v~{
zyn&so(s>|s(suamfT=aupU_Ywut}~$E-x?tMP+v<C{+h^C-G;$369ndcVx-W9x0O3
z{+YVv(eH4-3j-~UC^CaW?DH2f#AV~JEvWZ}iq$oj@-v`2;*`MYOgkI@RV)!G7MLW#
zEM1K5h~ZM9&=%g}{y~W?DNfJy5zqylV#Styw@}m7tFirU#Wi=*q43@VW7t%sNX;<V
zu*^x~k2d{`agT$%?7W`gFL}d<b2$H}aU_n4W<Yts%r746T0N%jO|%*60<#&SyGxK>
z37COlXLF_zwMh~}_NHrs1aeTEGMnuq6r>bf7}XKr-eQB!J_M+x09+uxXw5wDG}v5T
zI>4LMoF{gY3*Y{HHHJR%qLEkA0HCF#hS02W=$3mqw7qGtUYDhdHp?oxgdh8U=PyrE
z=cJ`vH@hCm6OtyfEh_cKB+*jNhE2p~Bx+{hhPvTg_`7dZu}h9C{BV3^CyECS_K7`H
z(1W-;Ty3_6YP$3O2EQTo21H0rZaFxVCyXIr5bC)Aw_VPNqKkGJ#{jrBT7GsOTHMK{
z>5029M=}}(Qs<Ry7lW#zUJuL++RRJig7k>bQ`=Zev3a!CO+<5y;LT$aXhksGv{Eq<
zfg);baP(zn-+tE>p}H3HMwzt?qa(;>O;#QgwX+6hA!?e!5)xSu7=zXfj0*r>=jT@e
zS<X?IR2owwzVZOSoM@BQb-hc?CRJ3Fy<31T4TqL{aU>mvU?tZ;-Kfa*H&^qrL=5Vq
z_?uQvF2=xd+}RII%__k}pvb{RI!Dqm+z4r@oHGhFj=^wfa(S(!Ly<HGKrj|AU9Y=@
z;Yz_Aa9dts*X3yjBdnDNdFzZ9i9nC1l$IhrRxTy_8e#%YT2KoB_%)s`O4{d4x*Dmd
z7L*@FtMax%4o<<AJp_aG8wIu`4aXn`)=@&?EC^<avxOabxs)I6vJpY=KDhcYK>a4*
zTRDoq3C`!c9=2=0_)S1O1`ptR3El#Wb98>t6&|5s#1O0KK2O7F8Vwv(mZNwu#}K78
zu=VgElSy2ohf>%`o_2d+PE<D6OHB~_5mq&-;G^y2^9vpcw-pLdUae!LPqRJq5mH+^
zB}1?!yMNhIC|}8<g~B?syjp|fbGsa;Tu$)IgR?^;5md@C_go$$nHVkju{S1ByKqi_
z#5w0yrFH~HH?{La@qbWTyLQ(zF1>jzR`Igs(S+mE0kuHn3~Wi3EFj`a-{Oq{%u(6g
z>(P;yXy<<94R~Y(9B4YA>PT8*Q3CXI?rf=G-8mX{7gA|OdvDWlOGQh?_@8h{t%)mz
z^*TS_30fQ8l>J~Gd{#uHKt2-+`0okR&>6P{{qfWIzZD&Q06=-9CxLF?8=3?tOx}E#
z3B3^jDN3s`_9D-9Wk6ZTK^>$q24lrx^1-qnyk#!@ws1C#Qe@mcO&xhT)$BRyorFiK
z+3Y3G?!#lLple`Dq?GQQ3}PBxIwkK@P!W)LTaH@p#4dw~0^)~1*X?oJQ=^)Qnq~F~
zw<_)51dE`yCLuU>H@l?oj{;QEB>t35WKP;`B}k+IM@SJ5g3kGo_7h~^_c+7<fwK5U
znT?%%Z>ARXdMDXCn#Sg&?G_wdT-?BT?kwWvb`^1oJ4lkLH4VkjHcA{^7Bwhu%T5pW
zK82!74>cHZXRe6)aB16VD0ar5__y_(y$^WFy{8cy=pqJ90+RMmcfxJmOaPO8L>Yf&
zwpoqM!%6}P6l#e|0PlB$uYn2~pu9jnFp_<Ptdi9&{#K%P@H1SlGkAN-&?qE@%1CO|
z64DmV!zywR(BH<?4+g*(UTqT(R;gTP)5P^QJyVIOU=!qEzx730|0y%^S^fOS%o8nF
z0E$B^fj8sq0!e6zCPG0s@ydm}-(7FVXJ?pjF?r)v<tt!9_`oq>E*cfNrZFUaR)BzU
z@7u@r4vK@fXZ*^ZiBY3mNaq|o8|Dc!jt0kxJ}ylLQN1@0i0A27mw4tQJprvBoWBH=
z+g_`MvOgjp+*+IVizPXpkn*5qS7*=Zr>k<Q2WlqxN4Kb`+%2*P<HG{Of^2#ibt78+
zw$ThO=U0{X@QsMHYt8a~qy4mOK=7rERVWt(t<MfVm)<p5Gpf`IUYjONS}4c(UZbQF
z0lG9ry<uVBwh+Po<LY=G;-J6u)rj#!i%o$=b!rZ&RU>IyEzBC8;A8O@BYzXH|GclW
zSi1KD^PAw_C?p<upd^zz<QN?#jmM1G)5w<q44b87aIDMHzl32HwbiodK@*aFHzfJZ
zWt-t*8<}gSP%eC<sQTWH#9Z3d&u0I0QU`R#Y*`e_Q6-KFW|1L~RBtmtJ5jOq>VuJp
z$SEV@My7`-N;I$t%#^YRfoihUq(Cjc8Z@?ap|Z>!8mLl3+LjfR<P`Fw-HRjfr8m3I
zEygNFqzAvUkwhZkw)b^L1~Mc{FstBr6zB-#2}vB4ff~LyFWnp!3wW}YU9%2j+wk7f
z2O8UQ>8174v_SqS&s+^pR(%jC&^E1K+#2o(WY)X8^d!}X%SFS7BhdsYn8j@B$)5V1
zNWJ|xfy%nh2GM-?FZ<7du-%>nVVOtXcjK=sKj?|c0Eg+8W0F`Ni)h2uMnE|gMN+~!
z;si*Px;24B$!umCRUG4Pln!%L<L?h8?+^jHuJmsLcXOqga1*W~jgsy}j9yhfRVwhu
z$CdQf)3jY1g@Le)oZhTN4-qv-%pNYzl(9UE5kbfPQ~1~W-vsx&yytM6D4eC<Bhc*g
z*a{G5Byh;y4?2;2Lhiwr3*OJ&x-*ZM1K<lVhs{|rfrCEwHKY>0Q5K9yqgm{Nim0Qe
zYflqh;=oT!#4^e^>O}|tGI+14{2N)GY{^Ref9PggTYR#)hTX%5a|3DvVDmhs8&}<d
zAV)zh8O;{hWZC0&);ilJ-6b4f)+M~VrCbUf`qR|*m)r?vTj4j`o5^3oc<{P#r9~mz
zu3K5OM_5^O+1btz&91TQj?ps20y&xsbYD>Gwh-2gd0Q?$v93{mt_G}0g>nQ0ro^)n
zj2^JZ(qr(#(W2(3-uCK|R9wLmNM2j2MHnQHBxo^2IqGkL<A{?rtFkwv&toU9HL&ZW
z_=FAWDY;%w?uMiax_5#+>L)8#pN|E3&WMRrz$#F8x|wMQUV!spU#)fB%2287{W0(I
z1X*FUl<M<N;dUTl*I!j@lrJ{TLB;?f3z)-}0_W+8e&YCXCF>0Plh*d^W?9Sb3k%vg
zfty5#C7yh~<dJ%c17dBN{$EFDp@BW|gcn^-A?r3i+<N~0MPeSQAR-jPV%+>f&lP;P
z^bRZsiZ2gMVT&F08hG?Q`Q|CJk{(JFEhnH!J67cxP1tq6j1L)thG><$KgR6=lDM+p
z?g@V2r`b=6?*nHP8Y-d%-HG2xO`ak9)%l;~zGypT4nq0HeB>cHzZLq<;8U6UeDSMD
zi-3XMEz9BNmEpEU&-2iW(2HINdk?6oZe|6-0<rXv(Xxa!U9vU41b4)9w57j|w>a+$
zI88piJod$G<##07WgqWu&%E-m!Xr;VeOZbra^wwB;-jv@B1b{VS8gECLFPY$Q(9Pw
zWjI!YxzA64z_&$JL=Axo`buCVOe<0;!_K4-9P-ljHX99+D@y1uLtx`|_gGrp+Kgw)
zDry!>4?}OQbN@P~z?!T3f`&f_jFg+9qX&MG2jo8_z*94R;C~bJqJ9%3L7MT(h1T#{
zR?>gJaW~3y5AcfzXRtZ~tA<_}u85c3&tP--F9&9wfFmzc(#00!W0srPGN)A1pgY)M
zn~x&BPAI_`PhhC~m{tqp`vUU+v(#tbZx@izH!48oG&q0k`)2*o@Sex%<Jx9Xgxr$=
z2X<WnRbU$J2a5$rp;H+KV*MUVbKqQ!#S-u!`V<U)c#pP#ep`;~T3}w%7N(Z5{K@N^
z;>DZY&AY7lDLtD)JNOT=d}#t^-(`UGH;Htj_y*KpMr9=pddLyJ_kgKgS_c4&+*)Md
zXTUJ%Q7qjz+OS(bQ0H-MdI32sQeoYP)*RH)PPb6SgokV{_CR~^2ZLr{&MEi?DQXAc
zP++k+kjud-ptuR9>W8#<o@DnV<QLrS>0A7KZ&|U_S_;yQym#ao-Z)Ca7c2@F)qhex
z<Z{soHsKtz?sW;}bym6;)(*i~cRE^WGN^a%JY!}rHb{#|K`N&c1oEXQeROjgnrklu
zT{vmZpH+mz(M7_CMX$QpTxE+zzxg6&?iyfipiiSVySrqktgQH%qcV&Xg3p{djB687
zPq576b=jhIo#4e5HP2j~+QcF?R?hV5dp=Y!H+Y*KbP`TCZ|VMpNznbFg0ps7LcwAg
zC9JvjpScq_%EBTuoC-vVC6oXhzwC)$Hozx;AaO<7A4zwv3!cdw`<x^|vLQDuwVIih
zYcPF6Lc-g3|6mp~q(BF+97;Y51PXt@9h9%e=pn`8DKW2Nsx8ke@F0ub8^@u)s&&MA
zT^5^uY0A|X#z<Z$z5F9k?tysK2HiFgs6oGd840I(KN*+B$GeRLdNnq*_&VXkppnPg
z|9S)oSAckQ8klJjg+Ep{q6VVAZhAHz9E+g@)3q8nN7P9gIOHq@j-<Ho>S6TKvfM1`
zYT`Yl{gNIXNuZFI&CP}W?WGpiAHRx!k<PEPLnn2xTi~sMfb?g>S(>-N0Ttl`#$_!7
zz*m10T<HfU95cfYXoFH5feAo_;SyAzBLTLMyQ!q>E<+P(AW{`4qsVFw;8!)x3^*gz
zUV)Y>V*x+Ryx<Y<HvTBWU|ynR@xti#vM*E6qwWO-Xr>GV+DqN48`5^5ua_ThZFjA9
z>g)>1FI`-tUZ|IzafgUm9}?$y-Rj%f(<RVhvAzP1l2tgO0$3ARg*l*1l4H2wp88Da
z2*j?m^uY7(Z9L+ni8nC6?VssF-=vzQ+6#}GmBNT1LPsAdaKIJ3)0S+h+isBFGH+0{
zkeZ_=U$@<>_=k8*|AiJZuA>&{!z#=RK-N*&V#lhK#T%{+|0Xzrgt2vr25!sSI`06x
z1tJ4TN?-6THYly**H&9CB*1~AG`|T_dcYFE(Psg$fbOg<xGnhnx0!3*PE2uKhM;@i
zQ7&>+E)^{DZ4z3+x8=Ew(={=f^bR8A-deLP?_5l8|7tCy21i=0EaB5qq63$_u(InR
zIOE;`)O%<sq!K2eidA<be-yh*(sqC9Cus>tOh%zeT+n7#I^qKQf6bn5c$32i8dUPO
zED8W`+<76te`f^r1fl)J4D`mY1s<tTaUwv2b;RaIKQD@T_$YkZ`h{?l*8ijGy~EjT
z-}vE#Aa-m)5Ht4PD<Vc~uhy(RYfDjT?@f)`BZ{E4ilS9}R$GKxrAD<VilS;gujl!F
zfA8_W`QyrcCC71I_jM-seV^lVo}XK6d&I}Ve*j)z{@p~m6WJvrN3`Fo{{m#e8&0eo
zsM^Yf2>iwq!=(H~huioqB<mTdotEK<)PRehrc7k=i1H)6N9&aLnRagLCF6Bz;>}{W
z*qz(>udy$z@cRwPtwL~bm`7y)-B3i%EiSa}{5AvqU>c)D>d_A;B_;LL!kYevlvmaY
zdCgj4oxUrFTUZSEd0u8RoByA@q0||x@|L*Q8Ixs>kKb(;C5jG~Bu<4BUvqCO-6C*q
zPwm<B2Q$*NQ@RGEq<*@_BIq8}gGzxRx1>*u-~W~Q?~PfmDV8SG5PlnTxYgSppBnaD
z4g3C?o#V-Ms__|DuJx#+sY2Ha+1=*l<BTV@qyM5Z98|d;WQ*x^le(L<G5!BV3*G9_
zEy>59@*?4smEZW>$Clk>?DgKB+8K$DSjDZyQ%f@C#G!t|d_mDraRDnBoeC#WpfXRq
zMR<~xx5S6DJAd?O`5=EM;$MK$zqJZISS!-o7;08re7^{~oyl0t=o#+*a90`ke_A=E
zyj9BTTh^oZnmfwRd92TZIF_&f{dfGIB+uYkX2mVaGqds*OE-OK@n1sf{_E?}sfH!<
zsfJq=Q=%8QzQckC-YL&SQ)qjvp8wXbY|};MRpiG&;&@DMk%qSa>a6N^v9zPYjW52l
zx64(99{TRsLLqf<E;ToY>#EylD}RjAwdRzq{B3Ua-_`$xyPe<S1vCDOQYY>&+)n<N
zuNabv`<BYqtc~CACk3NWR>`;b{Rfp|Momfo?n>lS;qe#Wxz4XRU*p@JL$?=^ffaAn
z1PU#-cpmX;<6KoNb?tVDT{~B+IG4n}OWe4$`>p-&V0RoL_Uh5?nf!0U|N3^q8?Lqx
zPL`lXuqQeouxmVfrCPfl_Uzbg?RJPfjL7_DH~tTx|3a-NQm}XJn)OfWU-N$eB-_1j
zYyX;G*Z#ln<^P*UzOB9RyuqJ{t>Uj`B0VmcetFy!{R3#bCi!z~VCzRNMZ{h%Mb<R!
ztEpe_tKsd=$}1wyGIyFT4X4z?3{U26MRN4~9}(356G8odMNk_K{rAnG^vlRw^bQe?
z+i+&;w#12&UpQH}WUuevt4~8`z2AGkUHLlQU~X-f3+;oiziV#{XL^JF0o0ctsOetM
z+0AMH;i$R!-n3hFnThZ9zkhne@u&PE@j&pVckt%-KLF$2-T%*_(EmO)>fQCcsaJb@
zt@;n3uHgcAvw5--N!GMmdzm@Y8+`x2RaBb(HvLs&UHS)byW^ZAMajna2YhOTqNaj&
zm*t7l8~<tY+`?b%+dqJ{8ix1&x5Y@q|5haR-wwpLzuS>2b?lLY+HG|b0`f2C9TDhX
z3cOqXyW1BKKm(UhH+JyPK8&tx>4!|OA90HRUm83$h_HB)`efXD-Owv-cxf(ZO>@9M
zHBwG5nyueNof{*@3y70vu9@DQ)qnJ|TUhrg*FOMFdd7UjxjK2PE%+IZNk7N=czup}
z`*|(m`xYQ;oe3V(F5=8qpvXo}E-X&JNpwJzYu|Iag9*>!Ti1@}%z@HBagp(?#p;L$
zEXun(Hb;Gjq$#M!iC_qnTG0f8w%6Di&EHyAD7L}?k#4~a(OF2%mhUc2reTtyA=Tb*
z!*ro{$<8-mDu<~=kribxAF^r7x7>+Sml~7A9)ub$%7l^((G2Tx0lc%lXJbx(=(;gC
zi8HJh<ra5IW<t=M+VB2y3^|!rvXgc@CTjcyX(p=17H|tpd%viNA-Qkz+|9ro;(6i6
zY0k4jpu*|JNc!xMQ~XhAgyM50AH;h$rRDaiB$34vpW-J_-%&L6HopEznZKFYN09hQ
zIwP@KM7Dy~uF*cvqi>Z(^+9JTEDmKyqDg>+eei4;*<EVjNHoZ2!WhT@dI^yni%4ny
z^%e`TXQ=FIB@NCFCu^vmK5sA{+v`k(O7AH=#l_HMBQyGaVN-fP>PhQ=D(4wCU(D8H
z9>qjirL77p@&mH8Y>iT4e`J+0Y{!ATcPL^u&qHsyrX7cKK7x0Xw%$|-hx%b3c4*h{
z*4zndkBCuFHTK!$@uPVFS2A&&`?-i>d7<7OEMzv^3jycLcszlKS@Miv7_dN|S6Wx<
zJca~Tr-LAZ=}&J!3rd6j+Un$O6iS@v6RC=FYyT8TL5`B@)W?&qDw8o_)XVP0Y^j|N
z17q%D8#S6c#o>TbuY~?BMxt=mnr#3O`aWMTitE=L4uyQ=R+B`LKt9AJWV8UEX-xb1
zv|3Xq1Lwu@6QfxrL1q^d?<E}pK53#6d(vwRn*4jECD8CS{+{rn%yb!)vE(hEt<iIU
z4a-p>l|X@QaXqC|oYR?kr$ny<dNttT+cU=$o)y-?44lg!trg~)$-*?b+%I#%X#=?d
zcH3|HzYR{m)(mR?xi4<&)Uh_<8pa%MHxSYEDm-3FK^gS-Zk0w<q-^eqvRpg8P)vft
zjua!?qRWR!SXsXQaf;Qcw!gHNh`e+a5A$m!Azth53}(JWl>HL{B-kJ(nvNZXaZ+hY
zfwKvHOo|tIteNLms1S2<97CmhoJz}QOP9aEm#(l#QS!UXkg!csg3lFYuYs1!C8^CA
z1KO`lKw18L<NFZUvzyYW{}?e8^~=nS+HHfG5TEgK9e>0s1!a(}=j{7qP<R=85icN+
zQj3uXGELA&iE3ug=k-=k5Al7hIxqA%4@UZxWQsY!w7zIgi_G?)x+hc-s_C#BA@TOo
z#vyBmL)dhdB_XWzAPYfSNunY6jRIw3a;Nf#$>w)=3G;tpLXPdzn19H8qSsR6Rw0x3
zbvxjd{p@*eZ&Z00POQ^$_Qw;eIotc#vztwF?o+kJ;7TVlrPnANo?{o0wJ7Rcrn4bt
z|3s897my_zY0t@|Mu(Wl%xFy`Cia8X)A;VRM9xwVawydhDoJXOd?4<1uY)+;+cp|{
zKaWwU1jGGpbF3K3Sg|rHVml}nPZ%8xUtM;UY)T@2UWq=}1}eu*(LxB2%1vlS-ja|x
z@EfX9MQrJU>z502&kuR`*uHPC<x?1^ctt<U*5oABkIJ>5{AI(aN26`=zO_orm%%>9
za-~3WKp?fUEbEtVYbpb7H&|MOVv}0>TAgmh1cIV@UrO_yHH3(yWa$zJHfQQQoumKY
zZM+%}*~_rJtM$2k7a|JYS+Ch?r@2d2RSzit@<=Zk*l`URiQxcXU=Rs{z04)$Bxwt|
zcoyY{q|J%Zcvx0@Gsl3V4TsihRGrasVto!HUa2yHRWl1g6e6QP()gEt1!&>GZIUM5
z*>a%)S#LMBh?Ld0>>-J$?}`1!(PA*w8wp8EGg@$4X+}*ylGTcq4PyQ&SUlRcQL-;y
z&*#daE85rl8Y_w)&Jk?fmr-y}kN5n0%>{jBIE19C`4VdG06)b`Zx@p9mb~x6*b_7Q
zzA7U2Wa|dl<V->W)_%{Z6uh9%7_a)MgCZr3Q{{NTpot=i)SS%;wQJ-D?d5Y!Y&Sh6
z78}#+bdJT$)4UrfvoV;!)+u)y#>z!hGE8*_8!$hZ)Xmryl__1MP<N<x$v*iK_xA_J
z<Zmn2rlHOc$wK_E9g>VBl_cY7Bbo{6AbmPVC<V7;^ZByNU2SD<6<2gWxI0Ik*af*F
z&LW`DHJKG9F@jQtkd{)PA>Cdd=l~6_z#raU&}|0S&}Ew0clkWOuFUdZ1Z@yc#O$G7
zf&qX;u_qBZ6~u%%S42`QqA!4_m20C7kotD(<#!sWOTqLyi;1$hUd;F;JY6vSrMY^n
z9E{$RR$49Iiq-nBA=m=LKu~(G$l(Ximq7<Mzck2$IVE%5D5yE%J?~|nlTB-r+x|U{
z580dpp0X@sJ-ahS<1DKiWtZx2+vo{D9{MOZ%}%Q+`t@m1^M=K*0)6`3Cy)#l>z=@R
z1ffA=JahZfvFT9AKL8zJB^$$Sbz$j#mZ!s@Hr}RZ&I|tl?89reRhoC4S2*{dU=WWO
zAXJ0ZG$tBsZ`1|O&%>NG2F_mH5s9`WbX~4+7LV$wszo!iZPj^;X6SsVX{!?OrGA6+
zUpFD@F5n;E%ghHkg1=$S-~hY%I5<_r05?B5Hlg4K5pQcrlJWE~&WGBuNJBh3bHgFc
z=nj>_io@?0p(uH(LKLXm%zh(CgP!>)dvB>%CpM>bC~)HC*w!?V0y!K|nl<@@%w?}?
z*wUta7-g~XO95^y{BsTaaGn+h5oG^>usBf-<?D+cNIEB~U4j&ob2O1Q=8tuQDL~#U
zRFM5LVpG9M=+6y0jn9P3HN&xw@%-RQdX=Pd_Z$le9-rf6T81CFt5vKH;j`j8)y2bk
zV5wUkC0v&u49C69r_UU-uU(<X!+Vqb4grLtgwkpn;Whg;vRZnYF5;$ouDI|{ry3n&
zt5TGghBbAYd%`Q1Mj|SMO-Jf&X9rc-USfM@LnTdgQ2}HFM5M<NN6^>hJv*2qnn6HH
z;lKp`m~LytH7S)jqfp3K`LWX$Qj%Eu8?!eU6C(1~Dt%fd{lly0se%fzzp>HZ$JP?m
z+&3w8EM}X(Z~vmL!rPjz%Q|oYF=X^_IGUrPqDJ@^&`We&k7e{QR1<eE+D6e=oexfB
zu-#T)mug6}-)gqh+Z&8F(mZ|giFG&FT>r!47{&WyU+7Ky*&*yO7}%MgYtSFet?i!Y
z7QNk>Cp$lr#V*OHm=(Q!5+hg@jPkHR5Ck^mlF1-{t0lyf@uvQkUi;kMSnkFeP{}rJ
z2-b2p?URh-q<Drbb_j<I(*Y`@^SyJh!;rL5^Az8c=<Tp9f|nCH{7qzav{9=&m0h)%
zrEi=JtQFA@B{ZUc*n#&-o-tHax${oB#<`)!_CB{8r$Wo4%D0cewv75l7VCx-CEOn$
zNFuBWimGlyMdDBi1>>nua%zfJSY=0|#s~##-8i5nyP{woqnkg%%0yPmRAi;gO}50C
z8m!(7thnlyPo?{{Lu^#1@<UovtIdCF1qyu5hDQeTmy)q)P$SluJGwo@ZQ|8=JnO%m
z#PNRqKpu>G`FU3ereVw`y?mc#(;RW6@I?{g8@@vAdP%;>q&3evc=n)B>;S3tD!r*g
zxVS)pKFfvv<BI%yt}uEekF3b5gjNofB&WETuMY%^D~@yl4|E#F0a&wZcVHjPw5NVY
zOa7wjx<pg&X0T$kV1s+TI?i@SZxtQrN*s-|`3tHN@|7Y9INelxlNepK-y6IBY06cm
z`kMUy_kdp+NabC&5sJP!j`rxa*+Y`=bo(yh2T8E5vkW*u)3b)(z!m@u7;UAjT@L5A
zd;O-egsqQJeWT*fA(SApscp1tDm*L3uqjwWK%7GDkwzxynp1pGc^zkksN94TNJ{9b
z0KdhXtz1u4wLC(Sx^YJ{HbhiYOtq^(`iL!S(~6>2MV$3tR+N2fWfrZx(u0*os>=#<
zpMUgBr68O~co{<!`HDSLH~Bv7<MV=~9^gE{Rm|*JNLE*gD+H2zLHh~4j_SfHK$9#q
z``a9gK-gT$pD4FqyfVa2YYhPbUIqIb)$=@<K>eJ$pt3u|Xx(}RE{l6OciLZ~&)?Ur
z-USwj&sBrdn0@D{64Z2HsAPrkT;~$IYWhLlAbpNSJ)POyzKy}ZkJaOSmMzI<m3_BJ
ziuqGbwx0>aNa`8-?H3UlJFFkKc1N17+r6Olqy2%!y@+VLK@g4B2rSCu8fFFS8%eC-
z{@kL!PGV<k@1bai-u-biDeY%=d1(YXc{o395$tU`2f_!MxnuY{k;E2?bcAa$07XBl
zN4NYS+|G|+#si|HeY$GOw?!2fxBcqD39`z&5cXDtuV0zF-2_zB`XDjDv7p?UkW?Qp
zE+v{-P1ATs-_MMR_{%T^Na9SC#cP}3nWXV8h3Lav&fW<)+3oZ8ON!t1$`b9_DH^)`
zx`&IP0&iz^zooI*RH14DiuB%!iWs71r+RAF0_zE)WafD@8UWB}d7~(bEKSJE2yEQ^
zo`+LT4U8l(RL9W%1}gtO--}kUYph?TS$+@y2Du@5L<>I%LJ6r{nll4qn|3|4G&i*@
zD>~*EnIymJB?(L!X(9^lFUJ!b==f<0mey97?2As0?kfg)-(<(=UF@cq9b}S7uQsNU
z9*iVhV6z5G_ECk~58m7~?M1AxO+Kq8O08Nx*{lIG583g20M3hvruH|9n&Mg6TnI^+
zzWgOC2$tvuBzLMRP|u31GCN$*%$92uOG-0$+-A`Y%5}82@y~9nm2S9W^t%G+Y8D=P
z8>KqXB*GO&%V#R7+tDftXa|d<57TiO-$DXEeNVDfTwk6T;#LZDwnME3BeZ#t+eV&>
z8)|fC-;+c|<ZH@AYigyn^VJ?g_E^KPnf+v>Nyr3`7f-NW!Rgtw$=k8Um))U)#mr?Y
zIrO;1jCnX{=IdEfn!4{r@tbnmyQAg7VL~7N0iY%5aBnzcMch3di{yRL+<KlNa%hG#
zpFKrU9UtdfO{KSQYWvsqZn6f33Z#2dp6D0$1ZePnCEj|QOS2a73gIlnX!L-yqECJA
z*8f)`YBmLZA%GE{PPeajKMC(OBCM|rNAPO!7au1H4LnfS_GeE#1-}>TJyn!{Pa!pZ
z$4<@tIp~`EBz)1bxz=!qyP(js5Q2DkK!z8qzF54oVLRtzOBi)Dj^cJt*f}det%ClV
zQm}2CMLT^QlaV-kNcy`Zi?}y=Bk<_3Utc%Y>7;m$t|QQ#>e(-6mi#rWYZxs5(dd2d
z?$6Ht)Fy_Kh_@t9qsY#KxOeo%=zHY1Eu$V}N7Qvf2~Hy32-f)KU~}NotEQ}ht!}vn
zpy3>?A6eaa>93%L?5y0&fZn?wZSU26*Wu(F9<^(m^6XWt)vU{ZTVv2pg2*J7*k=ov
zNfD~d0lthsG?bPerdQq0aLg>m&I$);IaPCL3R6xqn54ATv*z2EJwgWzUt(oM>ct|5
zK7hJC$|gEWmiM^6>4Od8p*zcIH29VmNu3TapJP7}tniX^0S2iD=mTCa#er`lg)_Wo
z7a_S60IA7xBBNxFAO*MvxbXVLoQ&TJ^|ZQlFtOm_>j$*8?DmlK(08l(%<LR7h#28r
zwm5C)t7(HxxwqSy!sk_wXIP8{pkLP6y0nDpvk!$8;Y{|73A-S%4K^3Mgt7G_%gpAe
zt7}U}spWk;!z%u58PEFzoX^NMo>awH(TyNql{Q}cx4LI}okZYVBYsumS^fdMfLJeo
z7Ik0-QNb@q+|~bhNrKnU*v0RoG*3RT*Wih<N>vU;v0m{poY1=YCNt$`z?lJ2Lm2xw
z-aMLkY(mW<!0bcNZfy4v9_w&z-!`?KqFHDc#@%(k<1CZe<|y%dodiB0-nhBL7E#>7
zS(V~->#HeUKaDQmoHDQpM8)XqiJfGwZ3@@^p1liwB$XM7d%Xm8-~I=nPQ{%0Fhh~w
z=dlIJ&e?n5&m|RM?YK<cZm&{dkrsi9Jn{Ce6tMa`4TCX1;RN{w?KJj^^dKY!jY3DU
z-~g?p_Gd)4Np#nR`U!i;7zqi9{(Rsm`45wLiGv9v-nULE#iDUzgFL4yM?anY11)!v
z5D(&!cqr}Hu-p%)kM%%hCMhgu+u+8Ns6^ne>JJx{BbnvzyFZbA3c^tQp6Ugf9Opc;
zv8kOT09hpIcp>-bN?F}SxNrbE^3b0#EwDIQYe|3);^7J)+h1(rdzD3=@zzAvl-D}=
z^<a&l1LF^)LZ4agr*d=m^1^<RZUBDc1xV2;4(4{fce<K;(PPgj0vS-WRu|@34NIGU
zoPU^H9L!t2@FlBAlshy<{sZ`OX6QPpv28RwD>IdlN9mRo2Nju{ll)43f0&RN0|pOd
z5Efy{JN2^F;-y4POCari^FwoBUaWsLYgEHD$n(Aj2}lyf#%3O#>0`zZfOVl#wv$a`
z>hE<+>PS2aRC=M)E#)x9eXgG&ey>7vhLg_>5aFH?#CLjyj-oRQ0E(s&=-@StWX<`T
zuz}r!ntoadrJZri{LAO==oiG>9z~M<i_ADM4#nw8cni(R|1(X_HUB%t{cL_mlOI2(
zcxkEOl9|Gy?!zkwY5&X3gCN!~KRrl%EvCa!$&SyVx!WsT+#D4ak;g(vNEHPRpFAj`
z3ac^)ePsaibnVrLqXeycl&ebel8@IJUr8W!^e~8l(KfqEq!^6#1V#TxjsO~|K2tG8
z|NbH%sq&iIek>!)?Uf7mvCoRNRh3J;9P*dCCeV>Eu>MWS@{!E=VML5`V8Upt)4<mm
zh(7k5f*nWW8@z--Ox@%XptzoS9T`?hN2S4^*ifxJM017>XL%OJD598F-bc*ceg0<@
z8(R6|5W5P!{&SEXf)~>nqwuz?+Ba)>eqOtT`#4Ey?n^;zS*Z-9XKqAUU2vt!#?G`k
zJr{MMv$@u$<S!cVFR6s^0uuON8g3(bNxCPfWcCXAMa|je$B1sS`~-eJ5?A7Sc|H3E
zdzbX<49#P}^0$(?ikeb3kuJASAmR7o9&^mZwwd`!-!zVH=n!ANy7xhQ;uJZ1MN%k#
z*nU!-8WdXQ#F#tQ%(ZCHF0EI-;fx>y*!mAv$<SPj-BG$UoJnkrh#t01E9ERYtYq&B
z1nGWmvI8>S3^9-05q0VgCh?z=5nrqzE(yR9+;)~RiVO@vkiS;lEmVJ3Q<_Emq_`w0
zkryDP_;h|)n#dB*XrKgDrGb~jjMyx{$vWad+8hF~+z}A9MvK|wWmrx0RMhczfis79
ziayEQ59(jlw)I09&l<)lG2EQf=O~W?6Tv?by~*cC%Eh%FO|s}8oXPfayWxBzSWTg;
zdrvj5wxgt(B9f4jWVb<ObM}$z-LeNcm-Y2643`EBThf>t_oUls3Vb?LYs;u*?|Mo<
zi)^Q8#J1(qF$NaHn!|L^o<6-werg6*j6*t~hmk#2rCU@oV|1Res_iE{wU2E+h>7|+
zC;I?bU`(j~UB?+UDrzq8l<b8ILO-$j2Y>=OCXrEgt*~%<uQLO=i6C)Pdkg_I)uMiw
zK5<|=zAx%`6O2(*Z%W1dn=P^4L6W1(4)p2V6&LZ{!2~UrR!Bf1?A}<@0$(hN2q~^Q
zfutrWZv>k7TuTmSOiZj8rZohaFVK6cWq(*BTDM;Wynctjp-3eWvXh&phcR3aOCml6
zR4rEBM~VEZ(yW%!h@?Ht43ucHe3|7%L^=Ai20;07yVB{6EJ}NJwKu7A6Ki+(qm!!x
zev~#w$$9*ZA6Wa1@GBV-hXM`GW7u!QuS>z&#a!_?BmNPgMcSJ;_C*}JCk%0T{JHoz
zTAQy_f^;>0d6jf%%7wWzA)X>|!Sp?3dw&{MnUr|*(r98W7g|!TBgs~>MNjhSC5_}u
zQC3}qZOq}(*KWq)zbhbM{O?946yfpbx)+~-`juHY;MW;H>PBUO1*Mw&9~<GxEgD>Z
zIsTxz4iz(*)WsBjLf7i&D%xLS@T2$iV!&t}A4PEy3-=g#_f(QvNi?P6@1=;}6I|rK
zmDq87FW)?__xmoKnlHaXAv#7Jk7Sl+u}V^lhmf-ay9Eio*C8`4?|B|_>d+7B7)R6R
zlXNSiJRICbnE7H9<@AWA#JN^KSkEAgJVA~xp`pZ{4#CK`T4>~vGl$t;-Kzl_-k1kp
zQMU3@+oW^YwDD1A)V!82hx?%HFAn!8T8!Uz6zduI0;v%4u>p^vYk9jo?q&df<d;!U
z%X7xmP`Q#(&>@FPYw{{p`{dq=a29f}hR}n4fj2u;r#e(~a;tLHjc8zYJWPdkH*mr2
z#DLpG9NN(8td($f528p)D7VNwk^c$AEqB$;Z1GCmE%$!Q%#TM!hJj4l<GWY6D6QBX
zSwk5x(78&YdKyGRu=#U9&apL#N73_v9_S=7Bgil(`RMRyoVJMF7yH5ou{q&TJ;_-C
zWN2y4oV~GFZPOOfJ+6y7_*O=5piPg`7L8&s9Y-bDAnbE|Jj(z-{;E9tQ*^E$V}%lA
zyw(P#u6Qa5YJLeZiJ`)+CC9#?H*&eYFqpr$x~@ukNJJ4WSY~q=|F(jlr3lRM6O4qa
z!-oQw{3fX*cO}G?bDf-Cp*UHtXuLxCL|ueqNa(-S+)SA;6JUTV#-fwErF;*m&ype6
zF7&iKwH4p{xTSP$>e)Irv3c)@_<qELbZg0we#?VamDnk-N-SG4Wy8=kfh&e$N@Jk5
zq1EB9oiGjfl@P_kPK-bGM}?THjMf(<O9UVLp%h^kR@U6DPNG_d0x|dA>71AS^-3d=
z=eoiIMI`3)^yh03=?0`z>$3JinoWfULd-*7TUEO-20ce7b(e7jYfvGZ%saV6UD`+X
zISvUaA8J#+XV6n9paGvM*K)sfz$Z(lsJ5Bh^dun(Ue_u$@q0g=V!VyF)6~N-D=??^
z#Vl%B;eFu*<mt;`XGXr4l9d>IcFGu&&+-XaE`NyyOZ;T4!BU>yjxRDulMOJ%zWbJQ
zuIzM0Zqi8VIJpQjT5=#27O^;8g}D|~6gx!=c6u5WzwJ7_E88-4Y57azBEB_{dJDhC
z#UO=r*H%g%xwYySxe6;=IKAf_cmi8<o68XnRJW123MsbVs@b3lV~by_MiShGiUeL?
zLhK7;TYad;Q<cIigk&QsDyUK6lH`eEN*MD5i_2klS3${3!EUtpQ%UxmU>XrKd+gU(
zS-n0Hqu<7P!f}1BC{9U{%Fnp0J*9iymeyI63EDe`@s~H)1%uH}WO@X9G#=>0D5-dH
zkI#z(cQ{YQ!%wi>=9H}Y#wp~gq0V@Qy_&$G#IK?=6v7+5Om}`p2YAzJe}Re~7{Qw@
zx+1)2Vrg=&nd?JlKP_u%Ek2^zuIR5kz91ljedl+>C|#Q_CBgIjwokeYO_v*U4NR9T
zxN6ONxNIc8Zx1;Y#Oa};5E?;PUOhIoC&ox#0=s-f7H7^=i0uzyQ`EIyN<ZbtoxdsE
zpa)+7oUs(k`*PRR0+l9@ozTIF7TX4QED%v3?9-D$u{p#Ld%QXEyebPLyX)hAY1(Xh
z<*2rW!A&!b(mUOWY+;@m>dfQmeoae&2dqAsz%<OM6)uBnUcIeffg#x(tgH@RSbMyk
zM*8Y$0rhURpIMZ$AUBm)5trXUU5;SKPnv{nw2rbZIBLX{yS%R950bj>-W*1|B~j32
zh3(s2n&iFkio#JhfdrbTBuM4T;W0`dbJD)x0Ghb73`tds(nw?W-}U00&kV7FuIQJY
zZCKb{i~13EagA;Hv?->w?{J_1<%RY}Len~N!rWM;eRcOTn$%j?b23PeA_%%hCbJnv
z5z6%-qokFzGFGlm{mbjmI0L_}#)RFbnpj>*!|GE)kW!1c#<fO|KK0CC!`fjr8*A!|
zFsGA-8;kEr&)<^7S;LvjjEVUEnA^N*4x6m&vnjsyhcRorWC7%Hl4FW(f^kdIKfB{U
z4*b@4Bhvk#n$d%I0>7a>yD}e8-ka01fn_eBJ29JFT~QyhSl69U(S^U4(sKh=mKBAf
zE`K;PKA-gKma3TM**Z%H4tU{L>!Tlz4SH6wGrbPmP0)O!26_K8VOWvsjTWMRGE`<D
z^jThqp(I^gu%;kO!b$4!w)#)WThlf0>Z~yu-ixz-@5a7mqS7Kem!f7!v0eIjuC1GN
zevZMv*Te<%3PVS^Go7~=&O(KIHU~I1S}}O6rMDD%=_~~c|7$=W=z`2h#{a!S4HkFm
zPqA)(VM4#c)vVB<;4SD8B`m6Tg8!B_&Rdt?UVW%0c{|DZdt%v770tsRXdywno$YR!
z$k+NM;-DC=9vT3vXD%X4C7Y4y(`8Jk%8#->a|Lmx;GoA7&=qBg7tk$ZMUputKa$`0
zs=g?JQsr@d;8T$Fa`#I~S1L6@<DdrvoAL+AxCe97t4Yl^0`Z643hO~>LP^~`_-BWE
zaUrVZ%g)h$?%v@>0A`_nEdVJAh)d2<M_A6b@rNJ?79dD?5d|E7z*b>+GR3L;s5D79
zBuI;ZUgd3x@z+?DZsTm8>V3nufQnD<UMP%X5_2o3?8R<|MrIK);J%Gfw#cnL`Ub>L
zk(|jbEhxOY5n2g3${&1N<6IU^_X%SYbZOV`xL2ylCX$$Y*SQm?r?8#LK(Rhc9%u1w
zp_XjC$8^zrA)+(x(0Guzb%86-%{9*7&654u67h(!KYRQYiSvgQ-D$%s;xFJq7<FcB
z{&qgUNfD<q{Tg$;y!`K0kDPJyZibNlk&udJMr27=fdZN(-PVsyxQ?Wo+bnR2*Ju4K
z9#ozDiWAgk0Y3!<ByYWWQ+rn^5=!qCWh4uO(yGw>U~7}y+0RZpyx{*R<xl$g8IAM!
zx=;TK+t{FUO%fZt)z@&50$>Ja!-BHG4<)DKv!sBA);08OXX8`qbjAs|r|N*T-?jI&
z=%{B<VfH0e`_?a0?e16|BHdQ9wKBYt`CbPi!#UN8$Ef0)`2J{ftJa$A;IW<j0)9UJ
z0^4K-9aVQJIb-W6nWH#h%9R7(q{Ft03><!?NT-$=XX`9r2YO||v*{?Q5~EzI@AWN3
z4c;)YJiItr3s_m3jSkbA85)LN%)aLv`0^0uVx5V*!ICWE3BUY~18F2~QwJ6a1hAE8
z$F~;LC2)AHcouUiOn)CEnxqn$q}#%Og&2EM=xOh^J)X|?rHnrCNdmocRmzH2Tdp<=
zcIiGBNc0)GZdFN${qopg(mIli%av~>R-o_vTCfvA@LeV&W#=tlBA?VDjRwWXYtLjB
zpM&)dv)$^|Ec;5v5m(PKki*uNrkl|}fFv|D;+;O-N4xS_5=DP$7=A=s`5fu~iY(LJ
zQZY1caFh>cO8NdE={wt`C2R*V5Y7B51YPjwBt4&>O;!W6cYl{dCyG`nNKaC;16@s7
zF0QZs8P)z#>Zp~U@I{4e47g3q^ch;P^y{hdV1<jDUlgHSIWIN9PHtIxz3)N%+9j5m
zjZ!S@U@Qwv!bB22#rY!srdmFUq1!)2W{2*XHOM`RZ`$P^cX4HZbYwME2K^W_9fLR(
zSpj7wf-|E}n~aAbKq<m*#xvn-{4K=ooA&@s(1WkKOIBe7G``Qku=+UO&<He~ocOPd
zmCXJig6Fe@>^J&8&$pqkKom{|oNz*#Ek+=Yt#yZp_yIw-DpBUN0db$~PdB=0Qp>_U
zv6Hj`4u6jocf#(VJnx|BMH@ty{XxMTt@3d)X6)UVPiab^Ss!F*3ire8zN#2sQe5Fl
z0fA!&^<OJ~101=!LAsL5B55LTFKIoYar2oG$KWBZ&dYk~+?+eBZrqdpQ1Oo*<FYw=
zlSmQJZ!FMPpe>*$O9TNfY)`7>P-BVippE-s=5o+$zC<@?Xs&DppoF<rYZvpNsVFQw
zg^MpVfF{}7=_L8Rh_fla<K2{O=L(ok-ur#rqrK{EW{1R#F$^R94niA3_>j6)*`ln_
zl0clw_Zc=SjNJMZ3<b!YG?HeydN*x=FHYjlzt*8iv%*mhj!O(WpU43m0xHvtZl|xf
zIXhlzH`vsKGxktbn=FS=2pT=P0p0-}J#~I0W92h;uTY_(%g}E@)<Q?GSf^$AUaODH
zKtBclO}rA$I3bw;H|^4q@**WbT5INzXC5rvN8AG;34YL+=rPZVf|edinu2tCr7ELJ
zedXMq!=wMacL!(dq#<Jxk!4j!Q0|XqM#Nw%jy<el%Sn6_*|S0CFEDyR@*fB5MwuFz
zX>CQ2PT}HPMd?j;TgDR&6PbP$&9(`Hoe9>kIa;a)s{9shwb~@!NWz+nT%()p(t<fQ
zwVKGsH$5$@U(U*G2JIDVk4MDWlC9=*&C3$wkasw8A(>E#hv#GrmUK^f?n))%K?f?~
zU~=X^7i8PN@0Q0+R6;c(jfgdgJ(Gsmnl(yF=mj_fA+g=iS1=W>^7RW%IK%vaIG-IK
z%U+S&s~|MVp(=`o_`GG&*wFb8V(i4cF^-D-QIPnjZs!uWEA&tTZ6t(~z`rP76^EL%
zWLlAQ`|`;Ytw0n0aK)SmTP?%#uxkoP9->&GV$ii9i0nx{YxQ~VsxB6r6(yH-sk!*}
z#w#|7jU{<E8nRLHnir7i7Pon8)f3;AtF$5gNgq0309-?lSVG6yPB5uHG+Ngrj}1P*
zNW^3NeIjZ2y(t?a-GL3BYYF1cgxxI+ZNb>|=}$}cQ9~DkZsl{LOstK<M3AH@%NP-v
zwB|@Sb6w(o0we~AJIyCOR#mL~#C9zd&*Wa1dXApWsWUji!m$CLnqV?I2Z~jS%&_Q|
zsoG31vl#&jeE-E|T(F_Ep=iU?vf())6A|CpGbc-;7S>9Jkt8u~p&?_+SmIYg8kjE=
zZ?ty)P@mN7N8}9s*b+a_1Sbf@@KNV!Kycraz#l-!aLH*YI(6k?bnZO`zVUBmKDYT=
z&Nzqf>*P%sNDFK2$Sx*`ls_N6b)q#?%M)s{pFO+!PB?v@q*7wM9)uO}k%4p)392CQ
z9@2UREFD*R^?<@(i5goVU^>&G(I<__=MJ(~*Er953h_lS5QtpM<%<!xRu>a}G`ZVi
zpfaJxFuUTR#{|=YvvyFFczxS(CO}L2{T#7{9MSl~7@$?Ot6W=bgc<X04gUC7V~3es
zt7#~W%8(+qYV|1%#3z`)ejmW0@pLz~?zUynu_;zrs46|pl2SSUdEKyw`eGFH-FTeD
zLDG6M+d&lIsroLRaADzn3K<BpfaL@!;pcU+1y;963q&Rn;L}T|LjQa@<yE%1uv5v>
zVt#m2v&57snF>pcp#Q-3BO?xcAW@PnLbfUO(m0)9-&9K97(hZ9f8mZB?piVHoAobM
z7AN^YWAN2;0yFP*#>ubi`r$k(wBz!VRUJzf*s=Xqw;Bz;q|=}FLV%F9A(fZsX<E#Q
zH}pWqtL^BKm;2zcumU%52k(K{MZ!C_SAPt;mQ>)yT@+?zK?uk)^>gNvm?@;vA6JdS
z?>yKNr&l_=Mt5UMO+-tG>-R-6ADwF~#sDFHRvFh*7E;^|o~<+_pZT8GQ3St2n|+RE
z+s`P#+3_fycQ5S5F^atSlprwnR=vWjlup>_te;Wb=AqrL5O1+Cq??<OM=;xGds~#H
zc$$G<!|sfx13a4@bC>?h8!QWPf%Ncpx^IMEh1pW=MPZl<Hag*4kAI^3+B3?~Jsfg3
zw(Zoj3Lz(V{4f<BtUk4o0%P3G*n^sO!=U|HH)O1XkFE?CFlAdb#YJ!$$@ql`r>D?a
z>x(h?v6RpEKBA$bMK<-!r%xE3vt1e?N0dMWfqfBm@4b4L=%#_yLhgcScm8n7tcvsF
zX9jKloipPzfZyj$Wzn>ET|p&&=$kw}fi2P!ZVYNF4e)x2lX;ib3vZt=T2za+w=1e4
z%?Ca@NY41`UiiM7)+$f@Kr?5A*>WQV@lsYDA~GSLC(bPUxHy-wVo5coPc`<ird?4U
z&H3Y#yA8XeX<vqOL;ieWO>$qQFXDZ=ywOwnE#p+iRM!9tC=y8gX$zWh!O6ox57Ai3
znsiEwr*`JtdwlU)8_E<DihccKNtRd6F<B>+yJ>L!tZYXsu^&tkt(4N`HAAwIM@Zb9
z$40K}aHT$&FosI|vC9n3J!B2h7I&y^GihPU=n}w)ZSIh(@}6(Q$$#c^%+3-Y+(b;P
zl<HpEsdMA2=x;CFJ73(8w<s?42^GHN?_kZ?`8ZBSg^bzbI2~Cku9|2-frCg_H)Ur0
z@$ghs0$VFU-nxL^D8A0Vj15|k_?y&>a!jDspr=5sK+Iy#djed-HA*&&*juY?$DBO}
z*YMbv>Gy$TqS2}0m70sE2rN7MBH>E&@fL*al2a>OQ!(yA#iIRl<n~w3y{y2<4abMJ
zKW2cJtV=h&x$c&YsTEAqfaZbgx$orDBds=^`9AXm^!Ml09&<9{!+Efan~i_vFZE-n
z%WH@DVrB&0XbSTMQV70Vw?oMI8T^2g(49Ggma*i<VPawE-DuJD5aJG4^S$8<>y~@*
zd*bOi?qcpT&rpm)J`+x`7fHVeR*fl(?KTKTeK-7&``@|*QZsH9G)%(wwwC-hb)$E$
zOKw4<fBw`tIC4XTnkqJ${33E0t`d6K4Ye+>4&N?|9+^+nTq70sSnV*w1#0V8GzTrx
zf`Zsxc8f1EA;#@3;~x#SOb8_>xPfUZ^(306ruHW<RR_}Gx=%x%X}60!%RQ3CckCRa
zI$l1Uvj)2m2PMSD$n)RhmDBvuR->RrL`M~F;BkH<sYRiN68EN%|3H%{iZfaZY2V~b
zb?-@BtLRz%#bIESgz}~`b^}yzikE&TPxQiQ%9FbGc<4<f2|u=uThO^}U@8F~_w&mK
z7d%A;YC)@Dwh$W1-R_E~nNy(wrY#niLg7~Dx#N800%vt;&KFf!N}dd_ObZU5C|ddw
zg}x})V$~FKVXMbihS=TI`r~h9pu@nmJip&)y>B!E=k%}}5oo#2kZ?wCQWUA1UW(sC
z@y}+hA2Oke{_n53%XY@-j|-yhz{!%C1((;_F(+(OT*{iw<C3h+@kDiQ^$<c)$0+@r
z7qY+48>NjmwY+FT&U@Bsza$T{6+paW6lA!PGVC)v>#m;Az{o>V`1(RTM)hK7+B^$%
zc=(cDQ1`FgP3)HD74JVtO5iRx+k;lWan9&{jsCD}tpXV}bb=qST1STq48(z{$_i!t
z(LjSn&qDa`RyKCJm*G>yRKxUiTI*<xjcVySd;17Kg?8I4wIF+E4RXdR#RR87WuMY`
zEIzrvpM!KE`UhZ&ag(^#n_iVub`H^+ym|(XqR4-|$mmRdZ4bNusU)Rm7vDXI!>0kx
z`RFa?JDMw*LcA_(v#6Ylv^qIy$kS)6oq1ZK57Qv*y1_NOMZ%jOvW{5F5quN{n)It`
zb%!J4wa+<27pH6PX&i8C2kMyq4S$$IYB%+^GJ;qo#v_Qrph`7Ylj@0VRuYFkE|XED
z+?%d#q+ln7ZEAN0(<;S$a>Km=rWTF#OiEUv1HIPI8R>MYcg>esWTcaRJjsZXT1;JR
z$>V$?bL{RFW37MOf2@%bnc51?a=&ceE{b0K;*z5$cR1cD7o6sQZ{&9ioS?2U;I{U!
zZl^idUAm6B6HOfLkGHB~{^%M-W(<iPHxLw?gm62k4v1Gh0KM-J+Zksz3S^7vfMwSc
zvX5fPz}E)BZ3bpv_i1VO>$sQX6u#sB0W^M1W%xPC`DXz!dQ;KWGu+hO5T6JqvdB-w
zJ6jZNxk2JqF23=N1*cCzbgWiJ+zF``4)#(&ZLXgZa1Nun$HrKK^{PQ0Z*UOhUnDL^
z<*nuvQW#h^`67{pQc|0fdGF846i-Xal9amgDdEVS8}MxKu&R2Rq}E~j&9tTHPQG=y
z=aX1cIh4?u#g9bCit%=dnRt4nDrcl=^<4YX7^_@Mn`?Z3;xp=4o2qZz0je4vu+b+|
z_AH^NRo|j?Frs0M_agScJuNPNUZTArPc^9bP%9vfM`r}D?{8L?{g4fpl$ods!ExNJ
zsqAWR-%cE%ZAxRKXCk3)6RxmJ7kH8C`jEj>5&Gvr&ecX^H@9A$(&Jlxp>+c$fw{b&
zwY$8zIenh5KR@)A?J!R67s<=I`(@RZpfm+=iGBKlIw>P5J58pOOu*f0r{bPOO`!lc
z^d;1*=!KvPXpq9XxCYF%as<|T*5UD1aLK;$JK1xCJa9S3(3L)c0QWSbifO>!W(6Vo
zHIxz}qYs@ToG4_@|B-8CF5Qpl%ihVHQQnkpEh$FJiQktGW2H2|^za>GXH`Z~SNbS|
z#a;TK1QetV;y<u)ug))!M5b}-O#A{L5ixJD?Rt&I{??UTR!pd$E0CL{Gl(0})<wo9
zarlcg@aq|W!Jmn1{g5Ta7lIv`Od7@=5oE8eM2VCez%id6Gjk!c-7C>s(Bv#BE#f<l
z+6$UMLPjZTiN{*y)oj5`*i0?zc_?L)1LEsj+~<{AP5SN+#`1KEEQx3Y$*iR+=#C7f
za^2VFl?l15D0s2|Q^=ZWBQ;u5Sjfi)jyU1?tQ`%j8tj(R0H{uLj+_mWb8oL!J=srz
zpIV247YQ6*&omXJaOt)CZu=touX*PNUq3@vMD4984gzy?y_2S|g^s?qikaf%?dkMJ
z;Vp=$(x%9v72$_?7NV)twOLJyy`M}gK_#EJ>3v{#Fs6^o3EI%WjnJokL%H^~5jzxx
zIaU=co>NhGoUC5AZJ8lKoHNXCDmy8dBHMWEjX~lJp42*C@V`-LmLhu+GH4Jb-t6a_
zzbj-;_ZcooUmwulaFd9D*B7`*=AAc0d>_i2?lL4GqWSyrQl0sO_3+MOyIjL{2oYu)
z1orknqrrz0arjj@xlvu#f=Lpe4O*%jb)4IRu+Y)`YV(Ttim+}r`#}75Ix(v^7#P3b
zf}ZYqyIZV2r+-=blMxenztx!eD_2G&8FXP(AAu+<nv|SYoH!d@3UXXjNFWw>);Wor
zi{E0Es=G3qtw&Kl*8;O7oVH5yu;h?6TivoO%~wmkz@Er=>vr!c>%w0};giSNiTPet
ze+H<0jJ%t)R0gi0lzt~sYH2#i{B9qJCS%=kta6BbqCQ7e{l5FI<h_&CkA=A3q|I&h
zr-f-19`^@IO}+c?P_Bqeea+JxF8AFP_!K|_mA9sjP6*-hG&IxA`^<Jw*DVREqWpM<
zWF=;+=LGPusR_qXnL%jAXY=5@DYR)u!HCm(tLG=${A(2fDNru_I%AZDQ!jd%+vgxo
z=GKR+Gzz#0k}*pXRcQ6Ta!H}JD+uR~3(|a5FU8x+ts*jQ8nLo29?EwPiDpL->^2k8
zr%%alcg89RHYnT`-e|?FesNjGi`B9Ul^aq{ojdVx+P@!Sqtj%=08q?SOW_AGepnvU
ze*jq)oNJs8bWDpkQ}rdWmAJ6(kf)FDWhCHBjrM-@uHqOy#ia+x9P=|xlM9^}l?5-c
zYU&ytJ{_9DwiMFy&h-u=E03Ov&Z*E~M51KHU5J5iSVF5pCho*ig!8>6pGyxwBuA~V
z=a4X!SZ~m{cPq6C*nWl=O$}7mm{ht(iL1Rx80&v`0eFrfM(6Yu6HL3On>$|TCISX`
z<r%<{bl=E=5{N&0Xg%D0;=p#a^h?x|<Ot>Tj506M8iRTN6Gzfnp+((PRH5jjU<M=W
z*aYoE@H<+uu{nY#)(^%@$8QGgb4~xoNb;wL*%xh5hWckwO6cdI?Ug^Al@dZ3$*HQ%
zA2S}q2r9mWP$h6gR>W|G9B;Fd2n-r4(5+ozY;8`WK$ey&H*rp*y|d7$m5vrYQlAKT
zVw(CUe4Nm(hpurTWGp{OO&4&Phor1^HLq>Xv~0+ijAYU-mv}3y(-{MW(SpR$?i~^M
zLmmMP$)BU_nG(AhYS?qgGG`-QG>P4Ffc7o!SQDJ3_84UG(mzE{uWA*^jOS>#A+-H?
zg6i*fbPGXXc;=PKNa-vULb=SJF7?ok0VOD7KN_3${p>jZ9*bO^S2MGjBe|RFKgTE0
z;an^Ai=v#L+NWq*xrK^pamp8j*%ZQ;W;6GbKa<n;3~<|`(=Bkyd}7=jx|L(IAJi|Q
z3oEx7q2}%u1O2jt6WW&(T7n;`u_q~VN1;nMZNi0Y90v?nA&Tw27P(qJZmW+gSu?CF
z#-(h}%<P#HeSuO{28t!(8%p*WO8D}pDZylL+O&EHI}Y5lrx}AyeVvShr=Vt0#c2wK
z!GY@d98b=e^WzQ_pT$9V?UMXJNa+(HgWkK`n2-hEhup3N^D<iAO2I*xKdC@r<9;p7
z&LgkotmO3%+3HU(u2)P8dKd0<6s@n&xQ)|$G-Cp^1Mk)tE`q2C%Tq=auesC|g|Ka8
zetCkNoO_wNt$7U9`TghiZ&Z5ax2>O`azHX!3*HXR{a_aFuRK$0R#1?@CwDudNpa*H
zD44??;(Xf*g;T*9h}<GXPs0!C$8a5%Tvkt4yz8@K8ajU!*-xEBB20LSw4-8N`5?}0
zy9F-uJcA6PI+yyAX;d6KSz_sfa?W_fB;gNHv(Axr42Dvhe!FBH5=G?@>tqI0)#%4o
z-L?cuIxB;VQvO9)Hj7e`#F)wxjT<ky5bBq`IG!l6NOda;L#ELg&I%G0kSR(r=Dewa
z@Hf?3@Wxj}Kfu`|0k1Z0G|d_%#f{$Q&kK*}XjOQxv&M4l<r-Be&_D&KXXkvzenh`)
zwA-P*(J)uSdvY>0&OX^VOt5`p<H|Q|?y%U+HTi>oUF)clIv+<6)OYU_{7%&4bz+3p
z-l<yB8r90?J{W(?3O_^_-19C=L?RCNZq&o9%xUIYyF*Lx&5sL6a?Xb>D$YPHp!)EI
z`BbU`iE7U!m)J+#M*3*(R7-$S)L7t^hMONAL-38Z2(x^`1#_$31PCTM=?o{-Wy!g)
zgTWNnMjRg5b>9BqzxO+Oke0fxCEU{P&5FJlY6i*_VZwwqt*x|w0DhVb>Xd~t1`D^)
zJP~fs{F%LYWj!);G%0&6w!_z7U`DPN-wdNc4TO%&wdRHsChnDq2UWl-uz*=D*qNrZ
zqenbZcB_&Rsoo@fA5xm&V5k^Jg8ck><OAY`rS!6<LMezp1HUL~;n<_Imc8C%<g1jz
z;j!zVudq?F5MKvg^mBk3-ivM*Of@@w9XH71Bx9Nx=En#8@t!Z4d|pmJhh9aWslEx=
zcea-Z;Mns@)3hyHRHmTkAI^$DB@~N&m;7DoYxx|pDB)V@G^0Pu3Vk$@q=-lgb8|M{
znez?k#?v_IL3I}G#Wj|>RR-NpzsbM}&HM`1#&Lidk(bA5){dF`ATqv<NJyr|(?3^e
z_?MiKU@R^aL}dmrOVDoAk$yM!+_urNCj1_IRwalWK7>%vGL@*kb7(f;4RHNf<Eg@j
z%iy~b!0%5JM$RvqPy-Ssq?>MSE^ypmc(*x{>}>@pk_Wp%fgNy@JxSd*b5Ap{t(U$Z
z5)wCWn1q~+e*r0wMGaEEP)mYiCE|Ec_O5BN!N^+2*ao{OooukDXIt=%2(mt*+K1uV
z_y%&LIV!^MbWuO5QoF0LB}dqNq4z52{wed+;GNzX9(hAitVTGzsE5GGjWU}`ygu-W
zdBLtGo$|;!tWi3m)gh?;L03gzzRXY$aZ&|g-6CZYn(=@-%Q$en{FysiU(|-V&_!@g
z%wCzx-QGrp5KV@Qr>q7^LO_ng1bOt(qeEK_ktT58fUEq>ct!G|Eb4cF3y3-_cLTA!
zBmD(q&@7mc^g$J<wamlWS-VT0#byWJx0Kbiu4HQkhD>(OOKW@^*pw#t%LgO&;ODD8
zNVGK}DZxAGs+PoQ%Q3oZf|_@dPg<#c+hD0BlKmu3SO%a{#eg1Xz23u%S8vLnbL6m%
zacM%;2yc;Q{R2xVce28g*rd)Pcmkv)|8SSc+kM@TEJ#Qg`r5-ZE&MSe1rTd=uHp6Y
znG&vB#0suec5l2n!^m%S`(zUOF1v5kcXE0~L+_G{*|Fp1zL9r*5p16ew{DMt6E@yH
zT_}I<Rbj2?(f4%qXprQrOd;41#lC0~(Lefg@<ZX3a_k`1`@Bvho<(lcvgHjcEE_W4
z*-bgW`i`l464oBVnKD+hBwPo3peQF%mXYB~3W?(88%xQCd&!s96ZkC%vG)ZE$oG1p
z{h<P~3`VRjDOeMmi70i?L>pOVIn{@L{AlUe5_es>4RAj$tGuemaeXappzE^x&~#+u
ze`jZ%y785Y3Op(x-1^Bh!3)nw$e_Sbdw_NbgISNmy|QrZ+pIC#v6ptQm8+s3IDe!W
z^H9l)bk=ZwLKj-;w22PH%Cb~giszbeYG}mGqM5aBaT6Kw5}J+%6g@N)KoPlmI4rx%
zi!M&kWPSaiz32-5<$eUSx*VyL{mLSRv4f8!fDh)s)LeX^)Ek6aR;KrSgtllzszm=j
zV(Ej?@q{21!KeF*Kywr0K?H$Ku93WCGU-Q?^bP53#IV5gtR}znFfd`Q&zMlmXN^Ty
z;M5V*jG8IhI137c0x0CpnWz3Aj;=f$%J==w%GhTZ`!<6Zg%H`9VJyiq6N*%JNo9|c
zWyZc6Q6bA1We<rgm9-d4MMy+;hLD8ppWl3c|IJ_Tb<Opj_dNG=?sM*2J`0>>Rh55o
za$VbN;r4FYJzG`N0U{{H{NKqDoaC+FhOp-UvCb+J7(g?!4dmr>n{hEez_M1+yRVE~
zKg6&>LPa)+q|o}286;}{tevq%v{QE0rMQ<o?kY&`RzAgDi#n@I6`WEVrsMc@$kOjc
z6W;N7LtsF_*|k#YTX)8sj1b2UB4&Dc*BbGA+eXf4Gm7=KNvnNPZN%?yM%u4qP?{Uk
zK}<z>yZGJ`&oi2c+_`qdU1|UAgxm+>?KiEa>eIG}eBo_n<YJ#ZSA-fxQox!JSXZ|J
zhnjxd!GC9{b`{MF87i%<loU|f+b487{hU7zUQb$Sca=8TMkHfhxIOgpzeI^-ry#5`
z7ngY|&{O0eWUjkS`~-<r!80y*<IJ1Cmn2^Ovv}?MW$rP2Vx`jxZn4nu1j*18xpBny
zy(w<VC#A`0M>V0ARW%0AGHgmRN5WqJh~<Mo+I5dDc>*7bl=KWAp4k+dh92ccC}fAE
z9c69o%`ndf#G{Y=5ckAtF^w8R?jkX096iR<;NWz_;c{|#L>BH{@NEps8d7DL75^bM
zx=D{4#u4XuXlqYdkCxqm2o#k9vEJztL?QH6wq;M9l(EJ^j4B6-!}PXucBJ_O+l~^)
zY+C#^^0_7UphQ1ogU48K#q<X);fFjg?*9BV3jhS#2idsrJ$@+Vc|2{73u98vyI*wy
zCLD0LxYnrPC!Y!ur;^Luo^;rot-ZV`#~Yc%9Gmy#gqU_gXC}e<N+(*qP#Dq~q0jdU
z*01i~esLuTSUwR_0TAHyTO5uSJ2dR^|2<K*n)tbp3mMG1JORV$v7h3%^7^_Yk=d)X
zt<N7$5R?NKj+l+2hICcNUFldvEaD9r3<JJ@jQzp75c55*kdj@LT|nA5b_2~1ud=J0
zy9A_e@&#5Fp*^jeil4eBU8iJ^(4x5M-}4p{5Q-TG!oKXxEj4XuNYGbop98z|RmaY|
z5pnBBh5+W?iP>c&hai?60uSKC+W6xdbx_yS-40s1IAUOG`_N2sZAoErB<Gb)Q<c37
zk(3XzLMTlOmODSLGtJHKhvNL%$P+`ym$POE;FcVqy!^P$Bxu!n&qFJY+s?YhLc5Y?
z?H`OATYMqfY7fvoFZ^dERp0xCm)_#+`eExegBMxlpS>!*lHe3u$^(Nhvgs70A&PWv
zAIrBqoQ)EGQ9Pk$8s8Dod^%#<*Uog}{U-vNG4~SYzg}auN-}0GGl(Ew-Z_aX121=&
zez!JM$=ilVEQ(^kJtKY#TzF;qZ))g6geTqjV`JoVa1@X;HRbjS2anVED#>2!4HBm&
zN6HvRvWUfVodQawe)$T#pZzW1fzcC}mj(^i?nBEog`cj91+b{t(B#zwz4mt-F51d6
zo)y@wwQPZq<)8(zu9mU_hP2EoV?##9sTr?imw&VF{uhpSvrv1y>G>fQxy}o3ugIAI
zHEl$%!|;Dsh)We`LL}?850V>0<e#?{9bmZ?%CxnS?cZ;PYX44|zu{ULr_Ju(lI)|Z
zd6P%M`5{fqh})J|G@GV==|hS9{HYcxaM)JD!u;d`#`Oxvgj5y(+iSt@B7$)RuJN^s
z+=^BVA-|uEn<;Ta(q@*jVzv)A3V3f`J~F!WZi__zz1)mdbE{LP7=oyhi<Fu6qOtB<
zRk+{n*;sE6Ky005lcCR0GCkN35CZHrbp0IJ;9}c)?R&~O%^~=``<$&AjPa_3K8ajR
zM_Sf_sRj9~LHTjV2^wmB*FhMT!<#txMb%i@%ou(_?Y!4Hlrx_y);Uj%<3E6Qg*efc
zmPmP|wHgDa{JFt6C0We;%CVHt7)Gai0Z|ay{$Y&@njfn_H|e%ZQhf{#!YG2-Z6p%j
zB&=xEr6~9P%-Vmer>>ATH&U~j32FD%EnW3oixE%RBGMm)N?lbnbjr^t(t53}YlSS!
z3K)9C|DdZo0bJ~%%;9k9hod<JX>e1+B1Kddh6O{=AY_b6YHJd7f!~?x0Ckh$c)M3g
zlV%vJ$(@&cp{8QL^0xx;KoUi{hRW?&-y_e>NBjpkGpIwo4x$V0mAWnJal7$6XCPql
zma3fHb!s0@&(u3jWsFF`rO8@wl4GL+$%1pcr;o#>8rlLmy0bXCSpkcWqi<e)FF|<m
z-f`RRnc$1(G}g1XCN;3SzZu-}t41YLlq+|4zss?$MJ6}H8HI*-@n_Q`UxeuSUHNNL
zGjZohK(^S-yc3jzC*_lN(X(mBkm1%wz96Ey+x$UO(CH`Dc+`_W1}3X&p?R+qlcMJw
zhJ-^yZdna#8%#XpIR^!(YEX2mSQ!yfLV{ZRSk%*neO$nWbh$n_tT}TDO_^zMXttH*
zcJ;T!I*-S1CDi_zFl1{?uT6VZ$n!!+_H6?)U95V<=*iKQdq=%AwZ-#q4N<}9p^y55
z){`uS-UGfX0?PM)K8ATGG;Psi738lIgcW`3Sp;(l`@z^1<NK?}v2%eP0G2`{h%l>x
z4XP{uk0H9cYe$Hqkuc{k%a^A==dcllOPkJ%;kz^i&m9@mI)HV`oTit&Ox#ZIz3+2f
zM1e!TA;$3Y`yrt6C!-2EY2zWmnYIeqmTP(%SU|6l(`w0cfvT4|4&!;mw~$j)f8Q>}
zuz>a(3MnzT0MWy043(#9_;w5OlhY2cKZB>a21{ab=IVp<9#wT$+z&07q{)BR)V@)T
zDk)AOC^HC?>KgIbG!VL*@AeIPA-iR?xw81HQ?J$vr5^^v4T#scoYjpE#8Y6^bdvWw
zqg57rnoDV~gE?dEWXRjdV<$-kayn0ZzwZq3_y~^6H>ee!EAMo!?IUw8A#Nan2}M6W
z8A1gW*mjA{G)JB!N|}X7slC=g6y4Cz9WEYmRFb#|=NmQ1HCc@g4Z$|XwZIav9n1u{
zNyl!#`s&F>g(r+@9cGble<t&$c!G@=a7WotxGE=c^NW};!Z;f-A`R>}!3QaxDN+4e
zy*YwPOU<0wMconVw@S=xE>i8RMZ=7Cv{#KDk&uS|Bd#QFgQN~Tz#={JC33~uA^kK7
z`#_^E`kyWema|oCv5)J}jwG2Cp*ejXU~9%f`5-!y1BKgzC?zDK`7>WF$(M3CWlJ3w
z+Akr|hc%-~V5bLijub?Z^aE3OuI0x8FQ2)@3G<7w^GI9=a|1i`DQ;|Z|KV}ZE`R)t
zL#4N$`^7gyn)eNre%!nM*mE6_BHr>J04T<HXlj@T{+k?0_{T9+*K4J7*I!sp_}j%u
zn|ET(c5eE7ZhHsvxwSQ)eMsesVa&Y5OO4Ta-A-`*tD7dAd$;3MP6=snNghzezg$l<
zf64{qj=5SjX`;%`R^u-|*qPs9tR}QPS__-CX6`~Lt9-xOyIBnRi=?xjM8fSYwx=3Q
zt_8Mb-GfbaGpd@Coc%DX5ptxjaW`1cf4Z6bL)b`4V>yLNxz#OwRkfyK`a;^v5=PNZ
zu4z0F*{_^p(q<-T4UmR&2jE#^4C6)vLd!Da7P-Tey2r3Tp*huI--ym^p%)jQpjDh5
zACa)PPMu%SFD&A|V*6UG#9XVpQ*CTQ$f;4`24TiyLd>Al)YF1hJi8R}b2`EHVFak)
z+JoqMyqgElZTC1eCGpnG?ALJ}0=y<+_0k`>$8JyC-XM;BeW^Tp$RV9L`}$9?_gWOG
z)8a}W!Sj59xWgcKw1mHRspfCBN&<?d^x+n=H?*^IU4nRH`Nfyq7T$^rIy^YUeBQR9
zjNWhQKM?jqCZVGw8?z!9h?G0Royr2h1{LFX!NrFr@6N+cUc}t%Wxr{J#)sUG1Y#em
zH>(!heD<Kf&tF9AFwP1cID&Tl&RdDO#>huCrr%oio34xD#`<XcYsaONjD(oM&F6qI
zol-yYpM%7JM3>D=DXPj?@OqMvnvp<!eg>)IquIT1A`65kE4<V!5~4A|)eLLkk8Ah3
zI|W>83zrgamW$gMo*GW)4;oT|@e&NCV}PokE|uKW{WLDZr-um9D4jctb3ZzagyU-+
zPvI5aIhDH{EADJtz@@2dkC+y72nR~GmfTKt;dG?piuMAy!f1RG2PhmjCJ}#)2yjcv
z!hhD-h!@^U&`cTLPUBUb?9hhH=B9{>qzs~tz$a|kF5BcLENvWo0z`v_J^3fMExE%*
zTHxTgQV&)dPXr@vjbD43c7JwypqkvZa?eCs{~<2sZdh#?ykqGkHeB4H8TLKcE&4_R
zo$DegB6B2cQE67o)CX#zLe(lRK!ye|p4Kn?jHTRM{c<VizMmg=c6jg@-tQQoUW(jD
z54|ZfYEyiN`n}R~W$;;)LHSAy_iB|{p8vRj%}{%?-N;Fi^q0NbhSg(k%%-)LDuC=G
zkx<z7@nXDT^vCdL6Jc-vxr_tKy35C!->gELGY;>8-iZxJKcgSMZ2{hHh+r7MV16MT
z#C~~~PefGT-2@9gJkN8m!gsZ0*dvD_=JY{GxFq%;p2y1Sm;f$+cA?IF?k!6~c#?cR
z@%~nt|CG2ZQw9MWS)<{vRgO*3njYIYq{P`MA(^{j4<2#LSXPb>!WVqwv|`$CFx^<F
zqB1(kpOHol>e&7ug%Ly~gpU-LaWfNQ8KFH{e5_X>hW^)J8+<huqgs~riy7x2!ozzA
z(bzD>?F6=o6Lm~x(wJTD*o-Ob%)5!j&ik&7e7Qm}LAY*3OvnXb@Mm9<r_RxpdE!7!
zu-MX}Pnvz^1w5*=YBOq&b2E>H=!?0NF4m%a4vS^E8%YHI$VCs5Rr64ib10#^bi<<e
z&sGF3Pti^d-rz`|MUM1%m=H2eELb%7;*(IWc8^ihE7~q9RpID>fP>9c5~*F2ZsPuN
zWiQT<Y01l)wUP}}E43J)fo;u>w4E`)_99Z?D@$19$QsG*pitJPqipN#pGEL$u*P%U
zIv8oIf!S~H*k5O3SjEqa1VIURd*)@y>cGeg(aNr*;nzAY{Bo#gk}AnMm-2@oQsJTz
z@+KT8Z<Z*!GwDTZrVK#a;cXE*3IGrW;8<if^2?ZaS|B<S!qpkTWpgT(C(EnAP#GDK
zyO1QS;`^LsSA8=X7@9P0Y-d_yR`hiE(84&06%==t6xoCGBRB1FGDDG1Anc%`(+i<U
ztk!aay-SUiYOPwUu+#-Ta?VB>k5*>dZM~whg{(l6>7)T!`klu7Oyu2QnV?hW+6RV5
zP{H3$1-_%?jX!sH>zA%lT_pbI3GMVt>sob}F3@-#)I?J}KKre!Gm|kChWxVr(6ENF
z!>A+<wRU>^_2*1OxfQR9l+Sa6Z;IP6ymA(YUb9|qY2KuRgv6%Wv1xjvgGJ(<JGwzE
zq@Hc|Q_+>QX!Ov@u#A;(1y?M^ZJMbx{$`Xun?|RV@BTadsL$L61>r4pJL~sMQ@13k
zjwuR=rFL>%^!P-W?*qMIxFn-v<GpVV0aR4&xF5QR3v_sT&1x%s6G|&9hd6b6X$Ak;
zPKm?B;!}pM%sjpR?pqUtPlI5$8Ih#^3e|g@#h;<o@9w1LTsD>TMNNOO|B*lG0cN$7
z*ievwH?R38f;8Hh_?v-q=5+R+coen7y&qtcREqzlR7ipY-kk9$MyvYA!TuBsrawUs
z2`k@YPcWm?qKs-V6(+~p6~niw!k@>hlCXhyodVW_==W!S1<e>Y6f_z_tqVsf16pAZ
zL$T;M-tAx@K(^R%YzHKLuE!8?b6}9<#m$s;ZdmeIB>(`WQxrC5x31F(ETezZZB;oV
z#HmP^Y{HMn-&QkT9rTXPXsxi8r*84FRmrcoqXbGP<h8Oog#A!0mLeyE+{M(+3AfQ<
zX-&x-xsdb}zAa#Lg!!Zagp??*Z1v3e4%OK$rI`F0DrK|$_=vzGMbt1B&6{7+&j=Xu
z3h+soRFxR&5=<kRUNMxGDhkZjW#o)d$Grd6g}fZfM0Jnp5<6P>Wsr??9>GCN7%Twf
zp1AA|Tv1Pre@NAcQAVm1k&2E`<Y|HQkAe)i227A`v%9$SL6_@9cnn-g{AceU?oY(X
zB#hLap=L}ECYMWpkUEHh@e2OIwn)w{4E`A`ZC4-%F$AxK<@B1W2_=q{m?|!v4BI%D
zclRl0zt|k--SvQRr~YYizla-pII=_FwqE3Xlia_cK;QMB-q4Yq>+U(I16nZ$aXv%0
z&CBzZtI{UslWJ5F+x&qp;_rs^&pBQEXHAikmI>^l;&sp7EqP<AdnWovXgOkM4nEG~
zE%`x6Wg&%UHESSO9g*m&BS$KyREuY#MnH49oms#`KZtY(>tmDWfh&4;H&P|c(W+sz
zj{bm8qo(;4H&cplwO%hv^Z6PC%dMJSv0>|=oPB9)VS9i>SueS0e;NqEuUoJBi$`Q;
zdm*1e6gBYdch3&Nt!93du*$!Y$>-ubcC@l9#LQPJ_TUw7AcH<C_DhS;^7ERw2o-65
zB#uX`|CmrN4DW?qZ}|>2L%tIarI9DqzxPQKSh!7pQRD7dKAg#qm~*`IqsdzT%rR6u
z2zCS460o70cS`We**P!18?@s=y4J-YH6wP^IeC_mQ8C09Uk;3FT_iY#^*Ym=u-2o&
z_Km~7lwWF+rXcTmQ#C1Z{t6>D{mea+@HF2L6V&^fpH+EET@j2HOToo=Qqi5G8bUK^
zaQkq@goy|g3Ge|8|6(ory(k4H^+k~;`~27F1Jed4W%fpEG{7xKf*qkZ{puuh4QP0v
zjwC)hu7Dd!3ut&@S#q`_GWu<ncP`KhvxuGu{CSR9TLh8ciWC3z=>jd|=_&mSr;eAH
zCLv6g1AfhB2bZ1ZY?D*!a%8OG6O8wjyj3PRYhvjy{rctn1CG}1L*t%DdKBH$VjV17
zSEx&6?W{NIQQMFrzVaoybb06|S^}t1cFo;&vJQBZh5N1@zz1|ku|yaUN!b>Iua+3%
z?U>|Oi-SD}wU~H8D-=<?EZ{$Ynp5e7EJg$#ZRxmRGiZ7(l5ky!=6045$5lY-GS$zt
zqKAPDp$kg)sn-qmnpSqU*r7Yj7{DsYZZiGHQck@S`>IXQocr*O@|TE~l2k!&E<@qc
zRJU(HA?4?Or<D!W4{K<OTApig7!UjC);TpJ#o^?Bi0zP(frsc}B#=@saqX4G+u5}t
z-XA~K&Q`I4>JVQH^W{;8ChTY9L9$$zCWkIU)(+~_;<(-w3wMoMCZESx-0#mWDJV*g
zD3K7eYUNY9s@x&sRx^RRo$LA$V5(+R|A)MrE!K(g)(gxLlZd_jXiz#f^U-<nh{1Nx
zo>F1Ul(&Gif#o2(<^ou3UQpv|T|kSpNLuQV$xI617zf%Jj6lI1U%iY=oUQot{gMfz
zQ)ud=zX=Qdq11~US$a9wK!$g|zlb!j<-F;slmm-mC6XqMgcN9jGsiW>XSEyEZaE-?
z9xl&;M)#Ab5+wvk^C<+k*wsP(q3jL+*i*VcTQ4^V!AcUDJ1;EfZ9Qc(cjGpnJg#{z
zUHB+Jd%f2*M7;rT@AuE@CNexm^mJZE09Nyj7_9J;TDlq2SiGWd@>@IuI4|tkVjKbC
zMBbP#Q+a~9xfgGW`_N>IjT(!bVbD6QctTg>85iSw>exUyq3N2{yLyFIG3}VM>2ohR
zn+>DR>u3CC4cv`V<6euK=r0ep(J;8ww4b%F<DA=C{xvNIZnkO@N@-`LEPfGxGIweS
zklf1VzHmWvdam__SXyc1oYtMAD8a~;ke|u%6kHuoj9AbCj>Y;N4Y<YmpvWSMp1<CN
zD@@-=AwVR?oKN^}UOgELyz+$;{-Iuh6n)0S{}7iK!;0rXsz_t$i~Q}^6d=r@Z_%~^
zQBFso-kI!ZJcpp<Aep%po6lAIxMe^u3l{d}D_}LoP)@kiii~aX;psn0QPw#84*+Ow
z<Gh^IwwOqj|1KGibt>Q&%J`Jj7UI(+rRr*9cbC6aKFLjZeTwCKoO-K0TJ*eHx;dct
zUd>f0lbba&ruwF=hWWnU!A|euo!9EGThmBRT|ctAtdYQ{8<7Glfg3*g>e#atz^77c
z2%zdeW~(1K-uy(KYHSaK#mK2hWN>3YayE;(S14nZ));A=z-a~*^k+&tIZJ`1Y%ugb
z9s&xT$wqC7?1<!LK7NK+;}r&#Zhlk6xC)c0v&7Wa{c&BO7p_s<#r<zhJ;G%mofd5y
z_G^XPMN4IRFABFNb)NwIyrSn%<6;Z(^5bhb>#Qfu`Hb68dS=xl!z@b80heW_g-Ix=
z(fG-Kr(y7uywIy+jw$~1shm|>((DWPbT7`ku%)czFzD~|kueT*qCHfTK$6I#fvEl)
zFIa@k{pVBiVQZfnr}XvD`24~9jWkfqUZ1a-^SxGoxh|bK4M=DqElYSUR9AW-<#HFq
zuTv(0{=^ij)_kW=z9@3UK6g5{PHA_I9BaY9#BM12RAgwJGj={X&5)(N_GW3YyQZeT
zN0Q+2-7ALJvr|H-_h(-W#e1=aY-V#Pf4(N`@v8gthamgE5#D_d=7T@j;I}`?W#o?P
zE<JZqye7FWN?uL-;4BnCpOJ9RhQFEu^YyniIE*^W?VW1aH#l`ILrd;1!qlK~Gj%&Y
z1bgr^sWcaz4%j3&<gFzD&iexK{^x#m3ZG4^21#DVK8N$@$-Xat=E*3zCfcZ7IqF^I
zvOL4M7V*T_uA7d+ZE~Qc=8<6O97*ygJE;;n^(s**LLAf^<;o6;ngx90!Q=z9<giL)
zBS|{*RQHDo?y=5}M!!FpBR^mp#0ZYf@M1`L>HS~5bg3p;SD#?QhIFjyr@)d4w^-dr
zm0CX$*7c4cIKPNhc%>62EVpsTq(JKa3RS6E@tb+lb&ZfS;@<?oQ$1O*FVnkLCz57y
zKdW_GR8~!gtnxprwFtA>8to8C8`AEoGW%Hcq)MlGMl8#P<<sSNBf8CPt=$%Z{k`We
zvQ{XR`FKSuPMwo;-xS|&aVa%gQN_v`^_S3jnfv46ALj)(z9R=ut(f`F7uE4jRYg0D
z71NAr8B{}l=a3m=a<`Z#o}DA!x7b5|>e&NBFc&RB=1$KXIeQ&;Y+3wrD48fE1UEzn
zd9p2M1(}J56&r@W+d;~Ar}keu$M$u;;cz9Ft@-m<Or*~BWi^F4N4*de5J2r#@MZ3B
zDgbK<D2DE?YSPu}M?`K{08d~Wbn3O><ZWEa`8+=yux__x2Ln+beKVIn4t$m{e2DjR
zOryV0T;EF()3SsT|H=;Add7mA5H6^3TGT!7nSo@6Q;<=yd9a<pC1&`*g~PYbg%c$3
z=^I_mGmVYdn~}uL!3~itg6T~><%#VRhNk8Ic9$i0zdvMRuX9IBn<5#1XgyigdO){6
z#{;!-&zn1<1<eP%o(069;b;gu0u(KjWjByzBWqIXv^6+Tk`p+$+HL}_*wAGcT#>y!
zOL=oLdxT<>Uz5H}tcErxx%16`cCUOUIy1|*XLIU5fNjC$nwHRt#zph6slERI^23{c
z%tWO#O5y>w&R;o!BPt%v3T<lhc+--YEp=aRfkcoo!(q<h0kpWL4K=LVG3*}dMgklg
zjmOa-!jga~5F@=88_k@_4~T`UyKFLC_fgT(Jp&*pjQ|%`$17q;-p~F<39fH4Brx!P
zqZMG_+X%GJL5Io5mc|LiFXrJzNrRFjoc<%R$rA2y29F0KiHhckU)mXqqw-6vpme^2
z@`3x-WZhTRJW-<Xy_m(!>aJgZ^fyv;xQQxEXhnN!;gN~rCm5cY<I}u*Vv$4`8)YC|
zY`8sIeI>gWB3Ap?X9Iy1zCGH|!Af0!_;J{s?4}_&#93d)B5VgJ-Yc<aG!L=(co0#l
zpdC>c1kD%vjA?ha)b{A3#nDjb_?{$hl->dFh?ES7SsY+u*#om_vh0*3TN>aAe5__d
z6Yb{I)O-Hc>l@QI5SHlMBR*R#>H}o~I6<Un&^;k(3u6MN`UvePc3_M<1KFn{ZY~ZR
z!HE1p1D^3<SOFjT>azb*5l>}D%Vg=*Ay<sjM}>;&X-Z0e{qzG9U@`|yrl8R5sSVe|
zZwW8WYO_6C^v)O$9m}9g_TE+=on@S|!VdjRt4ZQUtA74_jO$7aZWE);2wC17T~up#
z{)?1Wl54DAcN#RfuzR5#oEkCQZC`x0W_hCJ7Gu-WhdBgWpoOn-99B?SdLc)#u$~*u
z`4DQ%haBhnw`TwWRb94v<a3L1nPrvZd-QJV4r@K58Z!bjoZJwYkfZ|7cbkmCm^*{+
z%m-VuzVfZt_5=I}P{{58tw~;bA9dx@#ep+lc+y*rIKvfTlF@FRE?~c^EcO6C5m^}t
z&$xgy#hcp%-K0S>l&H1Cl$5SZLb;>jWMG6>wzm2~SnBFnAC$sf#^f<c65#_G0{$P$
zGSDnYeI^l(8S#c#TrNPU&@1t8U~b|Oh#$vw?qI4A%7Kq+82=)3OFM=GDP93l$|E;f
z;VP7MGj{o2Diwgddg&3N>~~9J;WAokL#($S0UK*RIC5W+y!BlzxTJtN5O?Tu1cub8
zZpt>9rb%N{G5xHhWsHyBRmCtmjQ(X<V=gf>1d2Mxqk!#I--@!Y;03(#U3V2g-q}f4
zzJyZZHYtWZ%ec3tKyMd&O}2nt+32wzoZ+_jl|-oQia4L}rEIqH;8%%mePSo0I?Pg-
zmg8b|&v-s1iI9$pLiB#hXwP4nro`3`m(FS4io9wV3W*b3{wgFI*810wH1B@$bi|!!
z<vgId0!6>XAnT5@4W;EIp-@2rYlN2UJ9SkRxQDl|LfqcTZ|AV$$DO^uZ#d-OmK$sa
zy`CgVKUe38rB+sT-CjauphuA|T~0{c2l?O`<HeNGfCiUx3u|t-ZFnbO{TPM5c!>wQ
zD1yuFS!GYKRr>f7vohA%cB@O-TkVb6yBb@Yk@fbZdlvPJjkAVsPlB=hjw`^9MIAev
zWi((hgR6B=wp1N2uw37P>7vCW+|fI`c`p?N?(DIBLYR%djnM&`dCIvK4TcZK6+U5m
zfBxNpMPAp1;-bYKADS0Q%$e!jB3}w=D7tdJw?%o5c3nRbp+s&!0u;TS;iQnniFjd{
zAf-xt5LL^;f79>4p<3m-9VwckDR-LrzP<A~&CV&m(M8#*)MTyD4Fs$h0+hV58U6&a
zw*sEo=#5MkZ8K<>L5bVIZ_V<*f;lT@%*z!Phg#)D)=C~ZZCbI0BQ*bPa>TGhTQ#CQ
zVjI@7QEl245F}_a3K7M!#xiKLsdy;~F3q=sd>2?;db`U<M=n1)P;#}JL0IEAJ05~3
z$IQ45()f^Ua?p%EH=PJ+&_zx4l7t1}v)!1T;I>l`i36jd+9A%M?`_&K5G~Pp{{##H
z7jfT&ZPNTU;}=Ih{Nv%@I)Jmb|1i1x-Bui<@>nBFg!{MmNepv&ZuZdNwp6O^@SNXz
z$OEgg%ObhbQD%IL;-gkMZmx?$T|ovg;|yf;pCH%ldl<f$CDK1E%bh6!DL+F88z<5?
zMo5<WpIjlfh+rJ-t0c|6*m+E!|1FQsxc2-b5@hxW127YbQT;PGxRV!X9R2#R3=i||
zFvc_N8-llEi$m3SKLQ++CMz^ilEVh_+mEAq50k^Gi71uzW8?m)d}sO#YfLJO^2jsI
zPh$QK3tRMeZ=Q9dgFr^<)P$~LR_59pw=0zQRlTcZ>xWzACn_2Z78Nr=RsyN-_N=nc
zS_DYNa;i~Xi=BBYi&S>26ITj9Tzo`Kw%vpzI&hV)tEwcq=SS+%sy#Tgy4DfFOQ-2}
zfA;9+1^yD5@A*r4e_yB6c6YpfXnE0PFGp;mZNLF!#3R?z-_ty*2CkYnc+Sw7`qnBs
z3jh1?u}OHV6q0>%4>+zF4cCA=V6q}m?wTkgJYcX7^AhnP>6+U?oclef)(IE^dZmG-
zdDTImZel0p>_z6?{x~0<V=3gu)fAF0_b}092CRTc#^aHCaE`c7ATExTzwR4k=6`YX
z$R7uB@loQ`U<L~>Pk=@HO)J|`o?+T7{OvZZ`HxZNcgbiFc$6JHmOq%yC1!9_2VDq2
z9dc#T^1c$dnoIv&j<@@<U2!ct1opwj77`)FreYkML03smcM<ClwD}w>R4=oqnr8Fv
zI*W$-Nv$UO?Z>Vlj5~W=tC1Acujns2Bh^~tx&ZT&0!+UQ7;=(}#NATg{4RwUdy4}4
z6AtCfGQu)!&vLb}4V3NHCwdkB&hm5U#(*rZ1`s|AH$9ZAcSSfa)P53sGWIv=^y;}@
z4^gKEuV>`6H#hGNF5gqy`9>&Pta%<44cfeIW`w$?hHx5DSqp~%ww52+(68vJ7*iZa
z9NmrFG|o5}g4TPouu>BD5sku0-lPw1gq^%|#`?e9p2-PRDr`Z_k>b4HcdKvBU1y~f
z-W`5o#R=;bpxDqQ5U*qrD#~LIr#n6F2yU0eiJoU{<jA!?(3Xb=#Ixexk3`R%!Os-t
zuiEse8`m2Zcj~dW6$eecX_Rcy3enqJ`C9JzjKk%9M!Ue;N`+!g%wV*w7l}uVmgo1z
zyGYesCV+$W-YvaN6Z>@YM-pLAesxti3vm5f(a2(<^t>`;^xW7sO1M?NfL>f&;%5!C
zwb=MQFJ+&{yq9Jk{M$=|uz{Ea!wPk#UQPT&#EYPO_@mn<po}VHcS00y32GqKDAw4%
zRMD}=Spl_I!_wZ+1sq}gzSQF*<%;ZRYe@m7uoj6<0Qn~cvBCKF*MSDyWOfruoWb;S
z7`h`e?hKw|crL+h3d99hh%;cWH=GgNhh{kXK81{Zj^ykp{Uo4B#8n3NJzsiIM`c?r
zbU7zjvkG9Ne8Izcyw@FnG+~`b@?4;0qH1={qu<~QSFN)^9BFUm3UvKs^Z&>eAoAJD
zJ2=}qxTYDa2)c?JqW|=~aE--l*ozl78}YWX!ArWI0D1{tyYobd!bFuM>X`p3xaL=p
z<(Jaojp#2u*3-B5F(JBJQ5*h!eDRp)npxLQ30LIt-2b!+Pyf|ksJ!?HjjQ<;WMYW!
zP#GYiWrA^|a8X#>>V(D@Jwn1@ORVS99#b#e2b|)=nK4WDo60;cFwN2erXK;(l2ce0
z_4aQT4s;Ai4cdy*bot#{=Ee0NfRDws&48HtvA5*h^$dD#<vX2JxT3|g*EF_X@#{pP
z#mc)$D6Vr?Ds@Hs;QbGUmTm7&a0Ei`L|+^^kLh*g@?1oOBEF2^ln_m_eB2zOg_!$(
z1IU?w5!5)7l;xl+pX^>mMn*4bBIeVQUT0P3suE@F3OLphaPjIU@=}u>+_AW2yu#(o
z#fzg~$g|h<KmoM^T>Q_?PZB<++>`;|psC#2D2Wqqj{!Iw8Dw#0v-&frE11=!!KniI
zYs0!Sb4fQ$S`n*OX4Pe-`9!VC7B>av@VVy%H!PLZTAnmK1INDSk7{9dFkC?Y0l@z&
zoSX>@sM$@e3Qio*o!ylSu0+PxeaDtihkLptMu{v5a4#}vC*alz4#L6^gF^>Dwm?L}
z;KjF*fTYQ5VIX5TpZ%XLHl&e=A6Y6Pi26Gt`3U@OAIsCjIKoC>zz@Jt^nHxQbm4_3
z5Jto(+~QZSb;IEP2~zdrJkNTEAqq}NU`^d4AvuM2>x7ZN8c%_Y0>5U6b*TRNQd_Ax
zoGk@%lN=;=eF#v;tJqrSNjhq4N=4}uOM}kr?K&FX+J0-%-2K#DxmR!qhF9!?;W_WO
z=o);-zY;y6T}+i;qd6AD@Bl?WK%x+L&!##xS<9lbUg=GjQ9WKAa5GZNeb)!sKHil~
zSo<dyO9b=XeuyU?B<$evuhz<=o*v^(x?956zFZsXGCg?2ki`ZYRKp?4LOo&%Lc2zy
zZ_XSj&Y;)@zkIx~9mD$LX9NKbemM52b3^0BbLo`4pL=>8K^CO-TQ<9eAL)N7ra7dK
zDiI8lM!P$_=p-5sUz}ycM|%MrS6DLN7k=Hy^GQM*{b|o@xcZnD+NeU4vX3Fe1a&}M
z)8f<n<ubVasCB_%t4YN>r)xvmBPtWJF5{<X*eI{?Db4J}T4vb&W0hFe>fG3~5Q_v?
z?UUl@8>?5eeX1qMTHCb<%nQ3Z-k;8mNmDsFs`tiY0&PW5x=MMz%XkeWJNPjpwsNXX
zsaWvdrEyu#$!9%T*V?DQs?-L#ay(W1!}5}1Wvo)#&eaJV1;LnraOWsRjjGU~R}BQ<
z=<RB5cRRld=+0$xPV6Mg2d<QjZ4qk3&g3khu4}Lq7{D<C*eE7A*s8+7{8@nMqh>)P
z2?p~qglNj_&L$i51CkG}`Qz^bFNXY+0N!MSVIT}R)~3`*a1U}0hhq<<0jus~-<Y{h
zqF83nApy*Uto#$mi7a==A-#%s$~e^<u1j7?=FA7Y7B~6}fvc?a7^0~uJQE58x|Hfp
zQjo;0SqP`uc44qshi#hkv-@}f-5#}530*Vw$N)fQHF)A&2J6dC<?)xH{Sc>b>x=hD
z{PROd{QH475eP$=`+8@h)CHCrm2#Sjm#yJZk8(v9K~_Zo-{iyAS|pT5R8Tc>|D-c$
zBHxa#EvO>ODy4eUx#@Q^=n(0$xD}It>|eV6FOUsoI?f3I<w-wc)SQaDTd!ETyQi7A
zB&OT1RiHzZL(=OWU~-(DxlSX!UhdiLdR4VcC!tSpU_RcSJ*4ezqdw`uJ>^Z)2?cI-
z{xX}ni&<LoQ^+&9KjA_FKQa~poEdkt@ZXhrDj@!b0f$!1ox|F~mGXe;zTPFyVEgiF
z;Ah5r%hs}F0cm5009jgD`}x>fQwT*}qSFswm_bU!_sQcEv$(|;`R1y=<yglj0jJc2
z!L@}!Mr2jtx3W1GHsf2uvQ`2OPS0A&;p^^QA&|SM8~NmNMUWw;lm`_n88I^uRs^yq
z{ZxulyC@=YU0JzGZDZF&_P2MOofa)m(yM<(wD^%U)NB3<WMEq|RBCRyMGUen`TOf^
z6espw%pyVII*1{F5zJaDkKyXXL`%0ogn6sPhuLSW0R*Kgq!9T8<%bi(mYmtdk{`h4
zE%Yg1R7;RH1x3XH--UsMV*m@0bQz)!3y*IUjM6>74ubg`0Lo<UkAs_7Umai{Gb7|>
za4#n&3-Zuq(5c!`Zjcbuxv3KaS;%8H1GtS_l=W+|Pu&Wq1e_-oI+`2`A~MhW^uBp4
z^59V-;T@f&Vk_lJa6y7`eg8MdL7XCu;ql^t5rg=6&nmn~$o1hda{h^RGjRX2T@UK?
zhE}e0v3LeskN%)aFJge|RxpIXtgYQY8>Qy#;vnf2<0UdGf@(N4Cc*`SH;DkbA8Go%
z-K!;844aqLV>K~)WZKoevWdG~-s7A<v(9I_B4IYHCo!Kt@+8GzmGx8|bd;yZjL!1w
zQPQtY5pmxd{~%}i$iHE0QlSy2r4t*SyyC@&QdD9>Er+r-eT!RAw>rPZU8~m+Fah%3
za(d3o!J;GG1Xhx0Y_#=yrIGJ}D0)Uy3Ytl+yX92RqM&&PeoI2px-Jg>99I4CpP>t1
z&oc<Gf)&>W5zu9<pRbGk7cFG{S))GEsqbFQS4oi@gk2~-#!uxIb$P{c<9h<WI{poF
zu11}f5z_A>TPrJr7N1_5;1M80NQ{y(yRe$Wf6gxqqn6@7tl-$@F3z_@L>I<es@${|
zM9Fa+J(9N{TQ`7q7RV72@`ug7-@dR~I^ug{^b+}K=$3rj&&q!ZTY5JT{aMd8OSNKL
zKP1ZK6z6f}Z9;?dwdJ=E-xwK2GgozvtMDAC>-J3kX)TZ8pxeJK^20C-9%H`TO178|
z|BIzEsOzpiWTOBW2NefeNl@F2a$)r*voZNb?C$>NBBvLVrKFfOk{!sHowWiSxe4=x
zqlQ4n9O&4Qa1^d6l42Oky7oWpFdf1GN)%`Bpc*UlK8U4|yz;e$20244EG&BZJTdl|
znch{sSbUPs?Fwa`LY4Q(dA=L$1W`#HIY+#n8V=A?T$0mxXdHD4#&4DuY^B5b;Pc9|
z$qlsX>?>>7GR){~%c*E;h^RE!_9iQffwu!xJoOyg&&R)CPO)EB+u5zlIM^)X)b&Up
zqBqkFh1lf*E*Bj@LadB8+|lAaP9p%#CA0GYh>S^b6CMowK`J$q{OQv`8X9Ml{W(tk
z?dbI4Ou~;pVzoafXk`3f<RvMOOG$CXYVH>2y$+McQn&Ez&{uTtwDy3k&syadU+X6t
zqvbzWCns!GU@v&HJDC#G<HeKUo*wFXHYk9e6Cg$i7{ARR3u_D>VgV6(Q<`^%5<aHU
znH84yU*rrd$Pl2NO0kK!vT~X5;oFq_5KK5}Ix+1<@g9*aI~8I1g)_NI)j2z>!|pG{
zEJNC)#73Hzk3NIheA(pa<qcuEIzD^mUfOKNo4Sy(W!qWL2aE8aS$o*C88N<6EeQuJ
zQzxK}0RJGB+>Z^TU@}bKY+FX_F`wPEv9#OYr(d;|G(XB~u1mvqRHV2OZz_&!-_XCR
zShUD{3N($rv#l9%2Fmw8;2=3xneQK1g=Ay<LK2OctIv)~aBx~fEunUBbQN%&KhxBT
zt%D$8C@82ub&xqBlg47y7X})!e^uBnL*#tOG=UocC?v7;J=O<UE_O(g05;YGe7#{G
ziepa7`I8G>5VRt<7j2TP$kH=2FX1W<Saw#(!iNDHm93my&s#aw^+2SV-gg=cWXHq>
z{!I%;O&O8Xh$?q}OMl8ua%_?)uDoyPR!|McTHDT0pNgB9xsIP_Wl$;hfs{NJt;2N_
zHvzk?<;RZd7xui=K<C)%<h+B7`JVnFL~)h1$;kcgxW7eGQ}pjc$!x6e3Uj>>^QWYA
zP{j#11~ueKUzl!4_!-!l)ays+eyfKx#0XmR+@YiwC(Fi9LjFT$kMI0uTl_O0QFSMr
z{M6}wX(Xq6im9E7W=+P@%8R!<yEYt@?rV2F!0)Gbgo8N_Tlg~L!k~Bby%Mt=v-{le
zwO_w`MtOn~gwCB~pn3fyZr3?auW055*nl*2gOoXYyZ7I~`1IDpuLGX=Ns44y0lB%#
zW%h93NrThH7ovU501hu}wD`wg)YRX%mcP(|NPDK!<5$pC8DKLPcv8mKFXe9b*f6p0
zeo9}Ux@bUwv)aCeB%pB)VSkSGs6~8y^LXTfy_of?mX?8zv{O`KKujsv_6X@Sg;|N_
ztNR-T_t!k%H8I#(b9$^+BY4J|@IG8BA*Vf}RC;vZmNziO3IH?KfP0lkv1?rk;AG9u
z(f0izBN5$<@5M$1E+`hnbEaL4gH@BEEGWXqwk{@_Sl!+PedQx}`gv9%apu=h!cZM3
zh|WY7l%hnw1!J9YW0pz~6%>vpb6RH`N8N5~M>7RbE`1zFYZ=$9&Jait>&q;`B5)iV
zq@VxeBBnS1w%;VP;Eyg*NN4mYqETvv&nKBlEUxfb?Eo^Bt&{0NI%UfyXe8t?kmq)i
zugz(K+CH*fOp<S+{Rapa^m-?1{@^X!3JhBBv`a`fzpob>w@bohoa%j(&;kAXdwmeh
zx!-Iw^ozyj>3}3u*;)&Y+p%!HHcR=$3pEd#XWX;QP{1W_`lMm)jhvc3oeyWAb9@(}
zLA3eD3sj-m&Cuwd1be|KtyhLoJcLA&jCa?>ZLrH;hfaXCa*&hR^q)Z1b)cg7VD{(&
z8t%$dI08ZrlQ}Lm2CR{AoP_BtizjZ45|GkvOrX@X3*V{~fXkrTRt`e!kggE=a$A~|
zb~;;zQ+HU6*+pmyt6qy^IQ^v0sE*AG8)b9-&@uFY{GAX@;joU1G8@onGgnN0U?^Yv
zMK6BbPOe=2$ck5Te+48vbuzZPI4MUODOgL$C|s1l;b6gru*KPCTfoR0;vM+K%M+y@
zZa*kd{+<B^%EV=RcMEHINpRAjm2ovW@T#5WTwMw1IkDJ5e<{@W*n)sx2Qi?@hy!vx
zyH;LlK-lT2@S{9cjE4=VNNd<9l8^g#;vxaCs6euds_82OYgO*x<$WLe+Fr1q&X&r(
zE_5vm8<S>>ceZ>qsNrzt6z1)D>c+>56q*bHz1dt5Xy;tXy8k3G72bqY*&ugt^(Iko
z7`iIXg7PkN@ukc6LRrs<53vmbdx%lB*-UXs9UBFaB)OIWv2{X&D5_bJQxVuN*qA?q
zIgOBW#+%7;`mg4Xn3p-7K7cP1av`HYt*{~RJ1UfU)}cap#=%aJTQEXnDy63d;1wYb
zVTCMm-YV~C>w1O#miEi~UW3k&CR=uKa`CJFeG?aMAzhn3kGE_&m1u#Jm$sTU6~NZ#
zdoaoa^DyBh21NMH&^yRR>9XO&vnsn4BViT)wo((-F_Xl0R@+MuTW2C&YvjP=dGZ)r
z4=4xaH&s59W-P&Q%IltwYS@p^<}|90a$ZUSrL}&b`up_jH`5OHc8M4Gnz+VwswLs8
z)`mcF9^cL=!1v#GF4h5VJ04<8%kR39l^v5ehctjMuL2K@<y<vo$cG0hHZ*7krv-B_
zr8tou<GO8c#?to79PazXR-FGE)3%vJDJc3RX&9rKlEXLDe8tfD&hP*QoBFBc`gz!c
zFF)n~0al3vY>XtkFY5Z<sf(if7%r(Y_vA>E1T<%OXM*kd`jUxnf3u0oqm2_#8NQ!S
z<)dN8mn1y%?Ac!0D05C{m-FR-Lo9=vesoDA67G7g=A3maVb5*6(Qp;x-%0vqI(mrk
zDfE6*7%8*JuRQ&$B`npX-ls(N?d&7TGmr9ke5}lX9Gv<q8}Ik=F7Au;rAMLVismH}
z*?l_Sv`!P$b!g41dpbc&hTzWCmm=zlnbxGI*r+D{_I&#Okc0Y12TYerA1VjR`LO5+
zO)5Q|jeQq;+nqxy=!1w9G^B-zvkkJ$EI>>u+=fYBP0VZC|M12-BZOs#az6(!fn<ba
zmO=Rc0SQ2Dfe4xh>kFELX?|V=8A4IIA2}3dWWiJjta#`sQr0|@4S5Ra6vRDqAIoKg
zVqIWguG%*eT4mPp7p&r;>Y5sRkmS;Z`s&ADNs{rJh4GRsi0`^X=SL71Oi;&$^+&c9
zztq@<?w<K+GYEd@L;c8f`4qWnQD_>Fl?7?O9A0Z?g8<KM{MLg8UQ_`x*@@er4t};Q
zQn>WeAEi$fXK@id`IPV6>?akIAEZ7*kIY@~Xox(5jswn&^sbQ!tYzUjh=_#5RdKDU
z!Z-Vw&<XJ`bACjtjhpW9d%pSv`snbJk>l0VZ$G{DPGJjFuTRALKQ*_NX7%4oo1b2j
zm$_8s93EuVbxneJRbe8iLnv6{;~2eFF&6=B@7VTv!TFVGjskPChX+}v;C_`(h#H$Q
z^!sjo?`_?x7+^n^GG%u;Ov+e78?hHEXq!0%`vkGSQZz?)|M`RfW(7<#QsUBgX1Q3w
z>#$qCV=>O&;@KrulBbR6HSIl^?2%oe)x;pi?Hj|7&Ny!YUVdY`vZy|_kF*AC#0WRS
zrc_s0%PLrOPrtS1tsDt2&MbYs=>#(OQ!g<(h*sF^CApsid@VG)6vJ(fqMhDhPM*H^
zo@EEK_|^Pe*R`P=rU;XGZiSm+Lw}2Wh?j>S)yGI%MRS|G`&~(c+T7>|P$%dXX0#^0
z90c8}gQ@d8${sikLGHE&?ExWxN@g+TlZUN?b~4GRJ_g`F;#?(>xMcFK7eo#xptnil
ze%L55EePiMzh6`{?Pqehr_4xQBGi6rmwb!0>~aW?3qTFU{2tLRR{tx=MNusO>ktoi
zlbLdP9$Y;S1qG9_oj@k8V0+Lq2ac2nkAQwtgQ&r_b{PVdNnjdk{fZoh5GDdK;=^3S
zr9vg1arOR2bxlD>4ll==FC&uQa!BRo$v--$u$X!J*FPF4WxpGbs*Nc4jrnWr#9Vj~
z;^sfp)uV1A&hLh|PqMaR#DL2l%5j}fh?H-dY4vlS?<-c$(-^-dawCm3>$@<x`%?R)
zIr{YVEg|pROsX)-InnL{m1-GfSy)bZs##zSisaL(u4Vsqv>UY+({I%x|G1l5o*SwC
z<e!JUM5@&Qq7e5Cmu1@ht^?i+&X&R&LtE<3Lvyw(&~Yo6UmN@i<FEVjRBvR#OzhPE
z8FHN&yC-qaZ<0F(-}UG^TS~KcTcc_|es5G*cJY#8XJj%Idz=q#8qz@nJT17C>?{he
z?LXqm3AkN@N9##`*G5gHUoBYa=9>9!(ISWctGHdNJF3zrt6sZn_aMuP$TqhvEtM$r
z&c}U?uZNFEShvnGd<yoGD_Ym<3)@b{3Is8J|J_q`ZpIj+ICEe~_0*6pTuZDO+cAzF
zsU1A9R6xG3x5T~mIH-R%jr9Id;9MY_W(c}7X2Lrs`iB=qFDsAPkN66oohkiQWURx^
zy;i1pxj~d&^#I{2G^=v;KDIu6HNY^SVe4f<VuBhj_YC>oPaA$3%dA$#t4*F+SCkng
zI+Mbby<xl@F&yz?z4r1=YMbQuhA@Wsavy+zA|Y3Mv86_0``Bn}lF<r4dxlI1bpWVG
z|Cm?aAV8;YXbW{um$5Z1Ie~duEBrSXP_A_(5jk&kDnPzx4+2NdYJ*yY;^=O2*bFlx
zf%z2>m)uda6~Q1`)hb`hDsPTV<M`XhmYqFM>&o6Jg&^1MQKaQbsub|OT6bEM!C-L3
zeF2{3v?7Js^BI>A`C=Vb&S~1{qLoc$=b_b@1cgc0BzK{K*_C04vv1cIac%K9r#_)?
z!JO<uneVlyYJyOt5Qg4kv;5E#bPJ8cW3uEYGdKP@uft7cHP{B+TeZd)wI$YO#x|ZB
z8!Btt{7~aD_k~7@_aj$4hxf8o*M4+rg^0fT#9wk`dM*S1r9y@sB~z?)I`IK4&hP0A
zEOx9~r)2yw=p}WAn#2OpzfzXf%g}aWOEl7yd+kLHS}RkVDBvG&e6Wo)!fK5I*wzy}
z#Izo4s<ORO4C+u<(qFIewfkBX9kRLkf>kVhso<pzEiY?eeYbL;96lWMOD{ue@~R7*
zchwQGVoJRgegE`(9qsAo#S#j)vKsh&T&SaO`Nj2RPB*nM9Y{~EZ6`i3We+yD7$L*h
zF2Tu0oVMJ2M%Rh3k*6lwQ9gydYkbj{?@NZ#;7L;%Tp2PN53JPoM`4_ApwADCNXSM_
zc=_G0QzVOWq0p}R(~xic(Ss#w|0{#`6tg~vFu@eF5VI|$IlrAf1oq1tRk2l;<6|~h
z^jXy}r&~Wa+=7EqM^KUfRp$_)R<JjjB{7%2!92@woL;~^mNU{%v0Uew7rHHy=#kb(
z5X|-WE>n++s?(`JuWYW_P`V3egsP}e{ab%G^5&<sj6_%$zf--q6PWLuJio$uNIi{W
zCp`==nVbG|j{866cDKfBZ80p1gKb|~j?*tBb{i<=%{7D)+8S!=#E9qdrG{=<Mw}lz
z`w+~q2ywQjb+xuztH}hft{s7b#{AHkiT4QGET!}u<VzP;P;K$NsFA=HWfWiOk98Q_
zK8+EFOZhBOnEZM=EzaS|-{{+_#SY|1AON^#0597l1L96Q6(*p2b+@xwg2d{Cd5?`{
zo(>v>BT_&0NnOdAuS8i*<M1b(EVHm^&nGj6=*K$k2BXg|7gJ(KSloBHE~kCeW+|?h
z&<+aFT`Qu6SABkRXo_OnNNei&lo2QF>2I=e`uTmkYIVz?2)fk41VirfQ|w*qfkAb^
zm`$CqXRXT$fJ1WJ7l1kC=Dfbvd21=Juh5Gu^P!%V=M7C%eR?cw|J(bBq~MErmtk3G
zhV-N5!a~s&RKLqWMn6R+utG&bN3AEtCY~$X#?Hh@DXUYv+e_4J&sh7gUy7SYaZPGf
z@|21dwloXtS<q+$!3=+SuKfI-4-qU_W9@~x!^jITM|-%el>#!ZN_9Qpc6@xLn=DWp
zHhgy7xUPa9^yCNBj0*g5zK#>E`Na3d{oslEJ#Jr)3f<FZFCss>-#@arwI!x}nR%Jz
zFvGGpyj^Ej(Pz>27&ueXTo5VI2YF)PcA0GxkVLkLqU0c9y)lNQnRaX^C-(oXC?cJZ
zBxZh!d7q<dq?24<FYf@<47e}Ha6`dKkR%1mK@=Us{<}sT+!XYGBwYnm)9?2lF&I5y
zbdBzk91;UYNRBR%5D*ZN6hU${NJ{4z(n^XVigbfC3W9W_(k1ZyfBgM-b`FP~?VRns
z@4fGR@AKT}isM5G)PNEK=Sz=pev+vIlT<XA00RLyGO23Y4^{D^$KRdncS=gZMndtp
zqN46lmhNPs|D3)1bo1u6d&f&|^6S2GR)E7v(_N~v-0xiEfV?THkct<OJB5)_);~Oy
z=z>+nIy6c^Tn*m|IQ9ps74}QdFbbri6N?gjnL_yP?Ony}#;Tqk_%c4f*1W@^rkpmg
z%&M4k%Qu!;_T(fS$pSukaojO5XsZ;>rE8I?&ef2Xlo~Fj*cd(*P?273h-md*=+AI;
zzHEed_)hjvW&8)ysQ^*PD++k;JQ>0R&)J0Pm6I<!OeioOdlIto6&-FsjKzQKkkjJ}
z1(Fm&E5rkcyAU!-q&Q9@2|pilwd9vZxAi2+%cJ+d<K!I}Mjs0rM*DBC%+QNtJzl^G
zFFe2TDuV)H2CAKc^?`=d1DrdXt$aimw=<^nikSf!X2xu3X6S{ryyv+ICufCXK~%aS
z_IwfXkgj*>qWw{N^P}0zZQiK@2fQ_U(deFK6N5Y31Q-6s3V%~mK9>Xpr=4FHmvN32
z%|x`qsg<BgCKgM-WGAsg13e*`?kRq%gIez20MSm7G8!J*lkiQi(9sMuoYa|J=QUn<
zRVU<K#2w+Um5AiEos5yu+hP(oTUyLb*Io*lgXB;!Ioz!A|D%(1#}rFS53spDN86tO
zNz^UAzdg1Ggrk5O$l9`|ZX;vv^%1}D?<AO^d`&h%1Xo4I#Ninpkif2iVgp{t27U|D
z5SWH?ON;eFS}X$p&AAs=L2yllx2ZDcDcSOcQw;(%YJS^Lb!I{qtbyS6LkM2`#WTS<
ze*1T|&EMwS4bYN#BeYVRJ2|2xm%i1Z_lB+aY+qp2b}<2|m57ILJoAO9cTg2vj>T~$
zg@w<<Dm^5AwoiK#b(I;BEoEp*$kQ2^9GY(Nl0}LyVGN86zfB^bQEHN8^UNkbouMIE
z1`meNy0I3m7H^zFlH^0#&Q#0p5<jl%CwYNe*jLq(2yS?Bb1fEx02GuoeWEDs^71(u
z9J#hFUL*MPv8ZSW)8#Wg7xt&Q8%9XSsHYdy-7z(L(kr4`O0=(g3`u#qgrQnX_@bu0
z@@lZC(vn4^EQfa62~bGMMk}GcZ}h-U0_`W?vlUq;2UC*M2tO~70oU)Eq_Purctf&F
z9?e#kPaZ+u)p^*e6Cv}^jmZ3m8FSJ!eyZu+;6MaFnWE_x2g82h#M*sBJT0MB(574W
z3MWX*{arIDSU}<f-+;Bc+ZkF4{<|ko&2i;R=)~8irZj^TXPMdAUCqHbIuzJQDisAT
z@bd|;os)jJ_T5tcVF-`->oB8xb%7e|MesD9Gh_@i<veFRb;SIDZ(d(k3WS%`PL844
z{vEPqKO&0}*ntPD%X3n1eyx}WZ^q>!(rj+cZ~BCvcC8EtM?yFvl7NVWAo^lPT>)$)
z7+I`=>f2P2h<^v7-VA|P;ajvwWUAw>@CDXO12#WE%oU+dzs*WH@IP(<JR&TD%lkhN
z<v-$yE7a{^A1w{KrqzVty$QyL-C_xnVFVN8Az7GQlU1<1oPjs;6lrj8oX1wBK=AXm
zUJoCiV{U?10Y9=NUS35^(m;}>+))lCqm>@dZx9j1l9hl73Wd$wgK$A&8qi5bz27&Z
zoGK&7nQTGp%b36<qi1J1guklcJUDk9PuE`S@0I7exYYG**cedNin%z?n0V64_1HKb
zpJm6!79U{mmr=qff5#!_|7sE@bsh{Jh;%nqLYG+JQL*@7l(8cbn3A)!jwFLC@qt1)
z_)oHu8C~0%Ncil-2UpnLr?DBKO)sa`|2*C0DVXgVAU@em*xqz~z3dBS-<jW!>-=8I
z_)I%{#gt&S6}N5Cc_;W6DdWm}vXCe`hi9$y!&;|AafG-zjumxT@{lu<5{btlR(E9H
zZ3?a_x@w_<2U0#SD&9NnPc7s*Rgpg+Ut}gvM`%Uq^@LC`EVsd(90v%cG@@FeyC+8d
zk$;5%{b|L&n(kj!e}|MV9ncaUXXqiTD;eZTR1!rPLo&R6Cp-G#9^ozEikDs^r*Ggy
z2`IN;5XX{&iL{xR{b(lX$47%Lj3ZAJL`8dUXkrW~V7`8=q=%-)YROW<fAx3k#{WJ5
z>`LDClfmYk@ohU<tmpxPv<qw_kO%a|@XJ_e8NSv-3yvCDNdk$sl>k7T^w*$E{g(}4
zy;Nta386t?n2Us}v=Rkc9!^vr;YKoQcB52LR!q3@i1Q35Kr5|5^Bmdh3{nAEr~{Z=
z2RytuTrHZwob**4ws5y`!aTKeL#2Z=59FgFb`fDfTR}3l86zuz2YjoZ3i<y)7^6p>
zm;B50nPY5ngi_RR=|I0wGP<Y7=`iI#uj$W3uj1b>Qn=i1ShBzP9qw+<omV0R+6=ZL
zx_Nc2zmQx)VN}ANSVEvNfASbhPkVnod`Ed?ijT^kjk>cUmI3+wc`ps>SqN^PC}QKj
zvqlP&G0gI?RvR6#9}C75zDi&uCrda99gvj=8Um%fNc_dtHWvLYdP?)NgLwn)+_X|9
z)H@c1Ng51<TQxU72Rd%wLzBB5UusHiR%#mzPIGoj{2p6mliPv*-~z^EQp`!Z6cPI~
z0<t_#p#+a_u+^pPIk?($W(sH`W6^V-ik^OcyL;XIHI$bb*DXtQmWr)w@fX#}v<@Gf
z91lU9ir!w&d-x)(MJA}o2{O1Nr0c`^%bB@c-YQw%h-@r<qH?D>UZ86aFkH6oE(SmN
z9rmK?dv%*3j!RIn*Rd#m0n=Hoi0dr4G)uVumTl@IorZ+oVHJjiU}HcXELy09O%kn!
z6Zag&g+B@|1mt>FV}D_!oyEg+wCbuAN-KH+lep90^j{s2%rwR)YqJ1wnttAjBvBjy
z*y88`XwnI^hk=j4Ra1c`*>N6iKr|UpIY`#(xE+U4ozfg{5RTtmgT`^cp=7dnt&8%5
z*wd#NWh24<4o*MG3gChj1hAAIA{z)f857xE!|9PucqtikQx^%<^Pl&D6s80K++YHb
z$=Ijis&4wDK$0ZpZO}_@2ec(bzWNW8ZX{aQDSoi?AE=WhaXm@POYbKF$91FS-^bzV
z6_P6P^eX)M6trS`E`#jvw^r&k!xcRHJ%jCN^_IVCa(FE#CM6wF&&CpU9HIncZfHSn
zBj4|?$1JNnoo7<wXfc$S-}RRVvvfT$>5$8q(^F}Nl6mc>fRnQqzWD`8xwTv5Hwwy4
zZ1?bNp^bK5x4A8n<ezf5<DekqV~MO=ZtVpX&BrB@Qm(`IY*(i>dWaik$b(>Nl4H~4
z@lMPRS6*DTjDd4#lJM`lFOAFkO!L$@NxC@d1s+c&SE_MX%tf>KJ-h)Xek^6FQy4tk
z$5^HWM4S~+`M4|c4{i#b4P@)Z9kQnCxs4VN3Ln~@LZlhDfi0X!MpeVb0ZT#WGgJ1O
z8z}C-H&M_EF!agd{^lh6*eaL+iLCQgGC{@Ge7$$0SQ_g$>U8YvSBT#m5i8Wn$$B?q
zpDpz(6*|Yw+;*{9W4;XvuPJeoxx4+6UQ?l>Uv%Oj(C^mdA7`KVQA2RTX0<ksrKVu-
z_#~7p0)J;)#+>>NA3O^5VnLX=ViH^#nd%b9677Wbq|E~o7x;iiiE11JiYW>r03+w@
zP!E5@^!3Ku7G3E{|5ODUDQOt<+-=O1>-d1~nYO?`MhJHW62rLG3Njb6kDrpnK-^S&
zDXOE;(U*B#=ZIRvi-<cjcPG(wRO;M^<YJ{eAZ+_6rudq!y+Z^|Ztmmh8h%?^;D_?o
z(-R0sCExpA5>J5f>lI!BL5OoQh|@;~4Zn;+=;fMsU8A-=IUz?~B%|7cDZAv2WD-k+
zZs#)`49ulRe^IyXapL0wkd4u{@*RtWk~&o@GxsolCqLf4$`}<tW?kDX-c;y|f_o=w
z1VnpkdXX=6w*(Kxews}@P-E7pGu>vW@r>E~B=y$~4}j9WrEqR*9`$u7xXZ6)1Bm?#
zmPrAlNPxn$R_CcE!E5>4O+S|tM#FLyeu+ZyW8&gnG&=X0_gmcpncw&(cxXOySVd-V
z5%9%#wU`lz^ln|6QisarhgQf({fs=-6?uAt^U9q;;AkozpDhSEt`*Wd+K)%UAuG+x
zO!^)K{Z8Z7;XahyjrQ;7O^xyA6KdY3oPDgUaOW)w(l*iUV!JCQve%sXm-(*&dkuRQ
z>Z^LT=0xjm=8Ul9S28KAmOR_U=yw6TLN<E4R)O9P7R{P@eT#Dh%IpZ$_jwVTYO7MD
zR#lH`1fc~AVb??<!jZWgM}gi1sMUHCW<IhrB<JO~WiTO_*a__jUKi%~BY~+dfkZip
zX9ybEwDFM5(5I{Tfn5m#c3nidA$0j)?QzxObbqc);)lN^>TJCXuRz8CmvO?Vb;&5u
z(sP3dvht(Di#YL7SMxi&zSW3NT>CnnV0<c|{MY!5!utaJnje^^2)-o}9hc`fpslpn
zdCYD^ZA|20ZsL8G6h7BR7cW^+Zv5I=Eao|R|7ofxzjODMn&=}98dV&zaex6>SEQp5
z(Ti|Xj-7WhOuknJV!z<dA&PG^iU=^4z1=?EuQ2q#V}nz<pP{v*cXsr$?X)`N{0epc
z=c?()Eu0Ft+K*#`KB6N}!=^8ELtd3A9h;RlPhCC<Rm*f}Wj@z{rN_Y#zJ%5&UqY7y
z)JcX3zWbQU%LZxtr#HL^IpedI4ySM$=uCH`XMfOzUWw5#cAaQQ!Aa@uNu0h@)>UZL
z3cg#YOFmzZm!9u0sLzl{5^7h0HAo8&JdT6;5)Y{14F=!QwD%ZeBbCK>4IO$^L$#q)
zWqLBEfL*(aFGxe|Hbf=rY)3b=BO`=I^E4~HCc!mVQI8=6SJdG@3D}G8rMeJHRjD?F
zj9O@OJlWBlN;>tRSK)X#AEf8K+cckbW0HBy*XdZ4NJE6bhrOGb^HXO#(3U*f+;ccd
zXH=`di26{omxJ9kDP@;WKwn;M;DVAXV)T{>D!_0dO(q=Sa7sq?G&V*2z`NxVKk){(
zoLma-CM0En3e$$YBZ1)Q0frzX!w~}VIZ(LsI183&n=S$DH$%2=UQx7?0186|nv}BF
z7N>_oDC4^bqY#4QqUd$3s^QVT4pF2xJ9I>m{~)vEYt21G+P`a*N5-E6h^dMbfR#3n
z_RqT%9K}g2{Ys-}-9-aaRboW;RV>cTBEQ5jC{+fWtD^&M;YHk)XWI-1{1*i`vGbyh
zrN78Ql%={md5}nRss%VGn>fGnK1VjEhUxe50F{L5;ha(kM#B)F^R1t7;r66U5RToX
z*w4=*P;+5-`5ZOcU(MGZHvOApdhLef;@D|Fu#q_Qxq9vmvT2bXn?YS?YL6<sDoxE$
zJrkP=HRS~5%e6<*o8gf+QfHwO5DWYuF3fRSrbHV{;S|ngo(oLg(J!S3azEgNF7Nz;
z*%Y<hmOKshG;O+1Uy;X6fOeZSQa|Hrr6%a&j-g%Jq3N6uq8_3Cepn%p+*c}#47Y3b
zG%ViZQmAc65X|jW@$(8WY=x`aNmM1I-fd(OrKEcHUKJRZQ@Dc(j6?<*WWA`$`(aP*
z+L>Y<W&#gg`&`n@u%2z&F?+qn6_GTgvdiS39?eZVB&dMPcX=(WVq7mLd_|W({S9lY
z_}fB#(3XnVPq8*Oy_H?(R+q#1dKOUYB1NQ*yk@OlS@fXXU|`@Si1=ObZ3xiXpaUv)
zWU*Q*pawq*hy^ja{><`)_-4I1X~43h8m0OWyoVAZiGQMJ9>;<ycnbuS@tznb2%HzF
zj*wj|5JLN)UE0V-fqyJQ82==rO$dxa{k$QA46cnJWP@<0#QwVk8}#0VQ4j|MK2E$c
zgtfxcAC*#Ga!Wi%G5ijrrVjN)TRcf1Ss=E9kS1<iL~=Os=9eS}AXO?u?$DjuF*|K*
zd9Fim$9_rQu2`%rk}K34;Sk)fa3tCBC~nb-m({E)zi2ym@sk#5<rIgCVE`I$g1l}_
zi}(FADW^Lj?PSja^aic9BJwy`N|lT#E*EL~3)2(>1eYfM8uSl^5|X7y_(qWL$4FCj
zfoCxB31C+0If=;x<K1FcIA!6Ef9exIMfg?!DoqKphKf5qa;YPaD4MNzyL(6J0ff*n
zbB?6YOF{i%Ue`|dbG7FUn~MzSjOBdBtnaHuJjrY)IG(8~T|W(a@?n=`jY%gpV(Pqk
z$OpXk*N47Kzq~l6-R}A%w<1~<Vcs6s#+|{56$Da$H^`j+s&6z(PO!62XAn{bs85vH
z2~<mju7q&6!Wcbcsckp6S6-gq45MJk&p*YV8|;1h8D}{m*GNk+I#e*UVc%MW|8>s+
zH?|uBzM-&CmomE{?O1rjBwt(A>#wt$@zq%}SMOeWJgh6nSE31Vt>+g}-J-*QUoeBH
z24sfH;S;nlU^Q+@p`x6KG|PH#%lx|S%1gVMyI@Hi1Adexqf*K)Ar!#7k(3(v9NKs|
zifW=|>^znznt%z*&jW#nW1m-S9D+g#fH#?Xgfn*<kb+8fo@DPr@Jf))NZN|gyRdzO
zo$nbZl31?`U%S-#H|rCAD7*e$Nc;2ssHQylAsml<5rQT*9d5JQg9yw0=wiA#I>~?b
zXZRO$$eEeajGeQ|qQ$vJv6B_$qHgMLxnT)PF^=l&w$$rO$}d>o<L!7k8lGyeXGX3C
z&7!($(!bgml;gV5zl7XawkxW?{Wx?#%Fpv8Q*$RJrdMa)jm8AQnN>T9-3w+Er68|@
z*SQ;wJa}R60?D2%LQekRK!mQmKm5()xigJB%8&D&DA{D{F)ZIK@WpsN_&Y(!#8%wJ
zp1OCf+D!5Ir+ZC2|0$z<(ay@nv=K~3cov=N<>CRI^RSMeCKwZoBH84gbbB<kY&6!$
ze<QHPkJ8mQ8rgnb)J4WoAfP%$xj6A5@A)&M$#4t3BSSAFOniv@arc*B&{eYGzNhk)
zI<K2JA#n<Ke`LUCmru~?Zx45il74UOrIR=+yG>-Q4UL9&B8sDD4;avAw(4{KI=xEt
zL)+1j8kqV3OBp>Evu;4<hZfvl%BK)0kewdk4%@66RRb{T8O!?!=ZG5vHE;s>R?>*b
zAq>AgcH|V(a(@)Sb>9B|i(L2zQwISM&Ry&SRRFbS!9@HF1`Z6yF;l|z2vV3NHsyjc
zij)uwfyuXm$9dptl{Ci~fSqO8RvFF=El7Y-ncjw(XMnCT5Ih4(bgM{viYr%JN04gh
zX9mZZ&mJajCO@HLzr(})&GNs^i~N=2H9Omzqx%}{E70@@C$iOV#=WE=tgLWT#ry{+
zb91$t81Q>)hutOUnDB9fX9eQ-%V+$?M&;g%P!SE**eb|tF?V9I1ZnD{0X`5yb|81~
zE^M7%O>V|>`>tVqd^1&g-m7eXQJW(Arbec&(0kvL2Z84WCdNg*%0*U#@@3bq3xmnf
zZXlUl-F)w&<DUcvNk8;t!VB6t(V^1F3cu@vMM(k-G@6re5wDx61#Nh5^FcohFG^E#
z5{>ukEKb}ZgjeCk*9|(!ypOG-wqJv>(pkTwXhD91q>pU@1(k9#?YFO-)>-x%jEmeu
z6^*+I4aTX-?;mYv#l?u_RyizEHx*SrRpX%Lhy%rciQ}X4axd~O+qr>Yzs+hz@e+@P
z$KV}KvseD8yYMoiOuVxHv{L1gIR2*NMVFkBpE^&`cF(t>sgG~^2OZfHaf-EZ29x-m
zi&D9kpG3?W3kHNatw>%DwHQse*q5`ei~N+E|4Yh~9>IB^WRT84+kl^59O#4@TmlHc
zP$z(l$v9zgbkRirkbQut{zWKfik}hhX(LI8_lJ3+<$ZL2E75XEiXTNM@{a%>5(Dx9
zz~|=&5gq#l;jS1$QV`aP7#^U`Fd&(O)VJR{!1HY#*;js5&jx7Z(WZ4=T@Y9F(Osb!
z*n{EnDkg@4v4aWFFeizFrB<e!8MLG=YkRBoUz}m9$lp?itnIBcEtSUG)m$F+q4PPN
z%s-6+fqmCFDJD(D!!(z`uGb)M&1^LW#{~TsHO-e3N?2r2<Pb!pNNXO$49R`X?^qBc
zeZc!ntJBm?-ElKXXA(m)gSYZjfJm?<x~G<ZnTl<Eut8mUuk>{-r%StI%lMm{w&<_J
z7a`&sCj~eOLk#0Ep|zzgxyzHY9A)dH_zu>UP#r(~>yr|LUVEAZ>7bj^@W4V5H9l41
z(W#lejFG!=kEp?LIan05qn`=u@};T+5)9Qh@EqNMyb>}|yyBoIESMDx{s_rJIzAsD
zOCSCPorwIhCz0Xn+cg_FqW~)8RbgZ*WA2v-Q6P0kw!cOSv3$bcPIX>PR;VC3n4VB}
z?nUU$UR6|mUQ|kdv76MLr6I0(5ErI{NZZjO-OY?|^o7^ki?B^0GUIAtn~4tg<uaCW
zS&6h)<*b9=zl(NXfbBhVsvSLY^7;6eNp5IK21y2Fj)2ZhkqF{-$@^phE4LiFRq0(~
z5(0eD35-)TWa87xseX}-jOWN@bYBEuaR3fxO%+v(Q34186;6_#k*NX#Vi;n$70?s|
zPmNeSSHA;+2(XQ%Wf(#gLO$x*w#TTEBpwf_Q_25a9iZH;HICt!qqq5lON&*U<EW95
z`oU!y{|6@-_;gs1eIR-~_LW~?Q3y9fhW|v_kjRj-K$F1a*3O-ymk%879FI(mDOs@F
zT9_`oD`$)&^0YE$!#&@g#5ceoD+b<z-?0HkeyHUR4$>qr3tQ+g{8h(m{qfO{f61i2
zt+LWhVqR`PVyA_&q7?&I2(0qojD^gG-4Wb7mibF~J|Ez@9a9-ot$>M!_YK9%YNq{K
zf$<7pNjMp$uk<%N|1KwM=052959FC^^x^_{x87>p?$1@U9fb*7!3C$|o4FS%yG|ju
z8SN|bM+Kptt?|`a!+9da#syWpv=gkqo2*!cEi#zIa?sjmNVN}}ZiUtgaQ1V-!!f^*
zAGjiG9D88;ot+=8{E1xht@7rAs1q`<WOa{$>l<)*&Wt0!w1I0q^%|kCzcsaBY`2Y*
zF8mLstG>lP2YC&87sUpYsH@@tm=?D2_<&BEZM?sg;z9*C5*8)Umy>E%*hv-vAgP23
zskcz^UCKdx2+1IU*T065uy9q708~{ba!!HLAVQQ(%Rh%R9Q%^Nvl9PrhrZpU!-kxn
z#17usAbrR?EuOzFFCV<v+&=ELWq|q43kGV53vBMG6zj&QBo>R*j7h4nP~EB4sT2BK
zUKD2LrXemlBr?4=!iO-N$-TUaI?~)iA3?t)P8M6vNoEjkK=R$8T4hq~dlr6F9PXrh
zSk3j}PDc!Vn=7?*adn!C+uUz+ccvT8{4Ts~KZGA~aU2!t>@#%*;<0zTt)y!agG{1J
zE2Nf^e>HnhR&>U*3*1>Jnn|(;$#?E(I?o5pNr7{YeR3%up5+)-WRjip(v%eRa7R4z
zS0nh1*{o2S;255_Z!xH3npLAYtcKjFO~%(^n^1dw>~wlr4XxTnq;tL|f7;4jh57?o
z(NYi!x=iWvD$SJ-#W`;09BU+N**$QK`-tkL?X@qB!#&fY)*|KiNwMw`SkbBi>}8Jc
zAW_SadK*_FRtT%Y1R%Kn3S=X%Df!_w#Ort$1OkznuUg@%L!B3b>dTTuA{?=m^;8`S
z=)O1}7_Fr`-W-@xy^0th%7YMawP?K00Iih}V1sR{fO?(rDX57YKmzoYl<_TC4j!=1
zBXPmR@}KDLF(od&6F;A;l8H?tvLVjE+nZ9oV+spJ6*Ffmb~B)RPp2-d%<fB$(89RT
zU~HzDMW$`$y_;*ZGNtEc&dNu*Tf7!UAr;W^m(wjr(ThF&^4{a`!=I_R<`7Gq6^%5I
zKJ5V~Bs2!|H-!u_P6l&6teBI`%ICV+ZN9uvefV{Se0e_t7(RnuF3F!{HKXL=V)-M`
zk1n!2GScG~F&bs{`~IC4_14K^YCtQt+X?!!Qnd}8qbo>Ja)1VnsDr|ZP-@UtXq$>j
z@rMissh|>tY;~f58*b&d6JVvVIAs@aWcGX+#iR!H=&Mz)sYBMKy{gvTH^#{@-`2ZE
zCZlPa1J{wU-#WW@U@D-}xCYt;dFs{elhU}-XjTmdTsEn<Js$&k*Z`h9&fDNZP)up!
zoB5n1e&s{egk=NwH+1o>E0~o8Fx3tL#)tGFN(_vst_L)QIAFn)p7o@R=eFp2s!j~L
zFM)?Hu?0yUIn6m8`B8x36f{A^8BYLs7$GxUEgwLn%>-hksZewuu@Ht)d=2WpKpbG8
zn(9{x)p%P@_cHEfS{ses-KHM9yBmKOY$6tD8+|7Jsrpx-Ffd6uuzG65{HcnWV{U-Z
z=jvlK<3LQEV1Eu^p5v?BK&#J#jzuALTW1&pFm3n<j0$&xT^_JOy+D&g2*PF!pSsF0
z$djJlXY=wSc{WQ+DE2TY!*F`PwL^RZeBVrFc7G?*8Y8fENX-6B{SG*R*l!n10;jwq
ziCs^&rY_-8SGXf*1u0E*vg?#y`yMl9N=>=sD&jRKC!r7bev8&fg@#|LF{mphU6TCy
zVGsv*V{XK?#UVTBT7O$?lI)e+!|d6_)#|!eebxLJMPEiCE9(zlI(6L|y__}TKF}%H
zJ~HYvS_j;vf?8|YtJ5R!f)s(f<siZrK$oaRlV*r%P;wu!6jTGPZHNP!<aM2Cj2;8!
zz+d8BBaz&$oC!%z1Si6}1}xDMA~F^(g(9mV_UocdEtqkH1F94nPg5gE2Q2VxX&THQ
zDRQ~j>ySz?{Z0%VvDg7B=vZs)Iwb@y;J8TO1>`Z+gwm=5_DafLj1^ic{x`I8dWse7
zW`QX2Z-vxj2vf5;IzLa(#Cnah#QnOK>c7RhMUR)-#!!HGS7o(MtqB!ioTF+QvwH@L
zU3J2&<+X+WpGLEVshSICHw-P(CSW$=+Rv*<S>)|8_ahtSU6jA1Nw_j4U|)VEnI*{Q
zzfb8I(TKPyC-^y#!NQ(uQvL9LvS)7kmZ{UDR>=~>8EPiQbzJxs%AcTUA*#m`$E=03
z&wM*V9ZxHsE>qdZo2IK`BJ`YT1tN!Il%9h~X=&>J>34#HSSfZ$Jk{uu#sm)Jb{W5n
z7u?4Wc9iksseFO;Q^1Ck2WTlhAm#jI&3@+&<!6Fl3Lsmm^aQ38Df9i8AQF_+0-^e>
zQth`+R)R`SmiP-pSq&;3u6VZ%XfG`apBD$G?n!(lZ5j8Gp8J|BnhL4MeH~1Er9sJq
zF6UYai-`8BV4!-ZBTp@S#ecy^CigM{&|!<eC6ZRhr!)r~s_%bp_D{eWs7HZchoSKs
z7|7899i-q}Vn7a2Js(@*tBjZ8pSSG^uws+O3DifSNLvC78$=TH4?)Z8@&f==qJsj*
zX6~7_H3eY{w%B=Y#ir`>2hm0&-x@UT4=L>a5SqIneSafTbACb>s#B%dYrdsnZic#9
zkvIa5Cc#*qp-MJ{zqNT#oxtYx$wyn?zrt@<XoMW9vvuc*r<F}TMprOI+vi|f0#m#n
zSMkhhfPCPEr~n?S{vZjt7ENu#q)wq$oVr2#GQ(xWU(1HFDy~6K513Z&Gx5sT|BmD%
zsi|yDk?$VKk3?H~>Dll&G{hV6-q~cS$<+=x6o95+OXeX^aLf{9xt4LgkcaTb;(;xA
zg3atw0g!9-I#}C>LjoF(;vABH&9Qc#b|}^ielPY%cRdd&Yc?b|k{s0JVk1#_>YCp#
zE5M@tT(ctrR7>YI!79)IlQ$C1Kp7ixr^Bha)42qNRs?c~hvXl1$tUm`f#TVq_`LR9
zCh<{dVCKo8ANtyOBl3XNhF>7w>3+O(!v@C+tjC1XspVY5_HHIO;TA{g3I_Ztp>t94
zA2k*BPqN+`;DGj65qKYXU8${aRwZCP>A8rh@`$^!5o*hH<4OR*ebgUg`9}Xg5Y!KY
zA%p<#2Cv{m{A&d>sn8%L8MOK~$?H!nrl45LU3%O__q%41&F?Is^$L|Sd}>B#Wmcwe
z;X_L$^rreK$H!1P^PU-r(C0U&#zsjxTPF<1VZ5*-T7f}jE0&Ysio5NkC0KnTyD{w*
zRCA~oWYg~{HpkU-sd5D-MEXU0F8i1e9+Xe@&PMl<)`yx5ZAtdHa$f~Pv!di@s5_!9
zbW|vbpYf4XhlD@#&(t1<mo-?uGO$8}T%j7_NP!i^9K_Z#f2+~Q!%U^;;-WU3QT=lx
z3FiF9JY{@HG9!Si=uNK2Zl%9++MT~+uTcX<R_06#IF4z(B`1;qKb~0Bse3!=ffAoI
z(U9UtQwWisxlW6Yc-h^5^1G!m!Cam?TvDh6E<u5`swl7DxmCWSY1}w@qm~Ri?IU2;
zeeP>6WHpbGqu2$d)BR+sR3V#cv1)lEwe>FEDM*PP%4pQII~O>=#_XU8+i<xHl2db1
zFoGlrkg&*w0lEhNs(DeMSyFQKiwj2NXG~!v7$1T+h(ExM`*7h$W(vYOHd1Sl+eeh_
z$0*G{euF<uF9n;kC3b>_X*(jJe7y+JgffIVpp$Zq&i?IfkI)Er-$#)sx9E%-wJOLf
zQ>$nxf8lJ+oc<wN$rQiK-9jZJ`lU&pA)YbrUo=5~uZ$~_2VQ4yO#ik`Bf}kMY4ZDN
z6;bE*!v4H-wtuE(d7&eif_bUiozX=ujtm0jP`V_;40t8wl>L#?TBL$*i}9#<#{}jC
zzu|EcX%mZkT7(L*C{b=%NB$Gxm-Ols<%5m%jh+)u1VPKWtg?D}q8H&!PSp0ak9>LD
z7&#Lww#b$Uw>ue&eqdvNP))=C3URhFGyb`X|0v!SXYcaCp*7qwJanQ|EcQni{QkM`
zM}w*RI-*^1s6zw&Thf7kcfnY4PZQWU)w`c@XzJ|A7r~6ttpC8TxI-sj?m?7{MBKbN
zC+Zg@e3VAueH<{9j%`9tU}cfk$EdrNw>t5io^Uh**9lZ%x=h|x_#xfnVd%_jYN3ur
zni&mJ`4nRw-%*p}4^d_tM#I69revHxlrs_$05fR_o-7P@G?LVT6J=iDhoQP!Nbv@a
z;xLUsvl0=|zl+xikSH%Xz!3V>7^MjfvM35t#;ttLsFLx-z{z%PqS%U6;0kUaz_tM-
zhd9Pm6&?apYv{_|L8Po_(U-Jxy60Apg^RTtqq>XZE-XY%|L7%TvO06g@8>hFDP%I1
zEK)u|kOt8IRr{<I0t`5YzD|w3o2nq}ogldos}XM1)gQ#wj=eHR?weCI4*B978@fR%
z)$OJ>jV#jmA}md%Z5&T%tqs?9SnvR~E>wDfV{YD_7Q}?yGlZiVg(%)ob2D00^er5P
z#@nHmwUVIvWh^C)ByF@#TBzxj53BCUV;UY15e6Yb)$lE3l=#@a%kG?tO^OTmm=~Jf
z->RQQ|7ofqB3p_8Yi{dE>i*S|@dLxMq`VC*3k%Y32>6MAhVaXByGc|Rf=Zd6-dNzZ
z<9oL&@FQ0aeA1Y18pZ4r`LR`OSOJoHTUi)E79_oMkzIL0{hBKlzemHHRNknU7dT}`
za2ilZ8VaAsi25GtmFW`}oVP%0e3DsL!Gsk{xePEB=+#JOS}PAJP75AKiqoK(F_?^x
z(jByfWIW@}g_Wij7gAf~;?i}dAPm4c#|TyFjmtsSaDZ;Vkb$AD1*r{aM@l{62+(eW
zGmwddpamWxOOimnlu?qL2Lez4mXpLK05JXoXop>X$#|1O)P1|J+kE?hLGWi{F%sd-
zFmji0)@EdC?BOk08o_{p75TI;A@_T-$YhIk_mfVKqQRvu--Dts4V&4@jT<BW8TJsP
zl%4c^(MA(H`^PtYG3vOCA2C)hjZ!R7PyPlN2UB&V1bU}h%C3ij)D<r$yj7?<uTox9
zgrTXIuvd60Jc7y*Z0sPHBv_?1DCeU<8k-UKfJP3VDBCR16dsqZo57DSZICv$%B214
z#>zHjlC*Ce?C4R&Rv@$hk;b!+6aT;jzFD>i7b%yrn-7Zdoz9^Bd$M2L_V!wxTy8f?
zd1=OZvEyY>Dp`ifzBiyyn{E7q@RzN-rAJXXcZox*&$I1>2lsaW1C1r{xEl_LR&<wR
z*AI!yH=y0I&!OeArKCQ)Io%ni1W1%BOT5M<cQlPaa%GwpY0rfL&x1HFYc9wMcRWl$
z8;1v&cZMb2Qh>nBD`QhV(_C{Kh{rS3Fx09!<#zr*KNjb~alKlh^(iQ$g_JB5tAuYC
zC)=kiP09my0jgV6I~2pz5)lS`P%T=>eNqyj6Y*c)PeLSZA{~(tNZ|<3<D=Aus;c2f
zrtSjzeBqeb;YLD0p~JTCuNX%$(ZiBT*9d!s1K0vSh~WuDMLY4V=qprod^w8tqP3tC
z4*?H_FUM`C7$csc<dt(l36vh&!w8&ISNDD+$@{g*)oXRJn@X+2bf)VPhMn@O45`a9
z4AV@uP>jD*L72gC@j>DBwRiPRn&f_b7(j%JKKb`Y?>6k-!k1U=*^_Wj+f=<bGO2+3
z@FB-(Ih{BKj*O)G^z;oo_&1h*DXbMv5Llu}O3S^Vti<LgP$GzZD^55{<Hn-nE`OzF
z=u{Kfefv?;gZ6u?4DIhu_hU+#uy~IyK(F%~#S-lH4JP-tX;1RaS<K`mPb6D|E7TKO
zX{(kk)@>iGPyY-H6)RMDhH48Hf-JA9D$$nJQivi;lZmo#qmkeF^yvubyejUnR&%?d
zl8k^oc9P6=kko^Vrc(Qt(7>sUV@rqN2~axJSMBf_NA75lOQ4xok<-5lC-7o&4i{kF
z2AWfp8jpJ%g%>KpF)s6l`mQLXGFeN)FeT}%P$A6B-Rpufa)IAZ_4d`PdV@~Fz36Z@
z;%4-Vcq@oP547MQa^cQE6#L*eGLRZ&jKyp<x?@|Zi!#RW9UFNOG;EbgF_=6#rg-&F
z_#UB(6f!?%S9!eaCd^1)_NjAb{BI>_%J>V?yf0&o?R?F!sMW;AIW!L8Jv#S*ak@z-
zJ>s@|AM3^b_H3J#h59U_C4j6Vr3l@8#$8c*g>rauvCT`7GD)P}y!;{h#l#8WL)A~;
zv$Gh(JoA=1PIEogU(QeLte=Ucn)q^@f%4}se`*8c>u3q(0&}VwZa)a&HMuMjtvaSe
z)-sBebZ%8aBDG4+@E@ubOvqAkxUMTs7?6BrSDyM0ge-<EgjC!{AU=Ak&=vsQu4nXX
zQxzXxoQUXp|Ke|`cX|_OWn#Iue2Pd>nc<TopiAv}U}LMM%Yzsx@xx~`DZQD*vff`Z
zH*UFKX<~OL%g^fR)N0grOO+|<RZhw~y9N%|)zG9}qZjQm2406}1uF~u@&Tmi3|~Kr
zZb#)?UPC6=!?V0^@v4llX2uQ^r1p3tTEtb2&`Uxj^p$J(4nw`)K0O!D_W;N$s(`~e
z-e90DvO@7q3Z&iCCj@uFotCD>?U7iT_8E5uS)XID#EaF^*r(^l)k|pXvsT#7s);+y
zQoncuN<1~F*O;o`bo~NZ|FH)0Pf1FCrg4`lwn9t9^f2$g9uOBb2%i8%fcO6o5b(gm
z2N6&cLTTW%5-=o~?!S2u1P>n%cr}0Gk}d7~J{xbmgw6~#(ATZY{H<Ye_^(7qHT`2L
zDa4ZwTzk*B8!RD{M)>W_k|9^JE$h(b<3XF=&hhFC_o9lD%Fw%qOG%IDzX~4~#k`Fz
zYZf=q4{p6I%?T{tE}v(APq98dt-^GX<+Z<R)f0Nxq$q2B{o8O|uAPVv`(ELysr;FD
z9d0+*C7lZUW6v*(=l9h)HcmlujV@@u+<2nYzx55*$wPH%sFt3Hjag@2c`n+rZ_dfB
z&@%@P4QPWZ>q&G^4vjk7+MT|5+q(Cr{v9dpSgNYn*AW9k>)A}Kcl*$S-BFPw_S+_L
z?fgd>pS{g*Uk%)S_SVZze|`v!E}(OEcF)T$xj6HFvNmU84i%v%i-r4Gq-pUbn<?g9
zlDM}-TYo6I_|@AK`-t)<%lNMC)4Er7qKMe6h3NNLs*Xprsqd?pi05Lcb91=DL4EXE
z;nOp83geL^Crmnpt`mdys!%mn>-WO?wWdNK$woyf5c~{&C6V0U$7qhv^u#85EA@PC
z;02jub;YX*$BkiRyfM1KuSCE=el0BZ;781Y)@nOjwM?|-oA-5`2(x41Ewit6IR(8N
z|A9)+WSjm<#E@rM_&=MSzU7E0sglW*ka;#URFiEX_Qfpt^#(uO(!s>Udnqx1{#NE>
z&I(QUAL!|c=&7Cl>4VvYa~3?~FToK-UN4VKs|Z~L&_qy;h~-S?A;zA*m-jT)Abf~t
zCuLk6lF^Cots9P+Zyx89bx$N6-DQh&*bYv0h@n5>IJ=o&bMP@0!Xrb7+091l)Zo6{
z@t)1ZwHimSB}=Rp34434F7`KOy@9_rxnN%QZ$sQ0F>v>tD)`(v^dHFZx9E*h6XKnv
zBCoFM+6ShKv0hIE7M|$nLz``P=ZkZ2&qf9B6Dral7F@L&=F_e)8KSJZA(;RR;IsPK
zpWYpBb>2VR>Q7M)&JZ%K%hW)BT#vP(rLmxkh*7N1GL8;%JpB5NhVr|mm<^HXyQrOw
zvhsb;4=A>jNXUM0jze^0_UZOXbu~Y3W4>$S6zpbZW}GQRSle2ylU}0zdh%q+j#r#s
zRj9UB?jk?>5%so{gnV0|@UVg7u|>}3<_&Qk9~GDP!%P|Gl|>X!)V=c)7GziDn5y8^
z?mo0x1w$X3eIIXp8)i`Y(0rKb_CWZMBktOzq<X^rr>FQQ9Ay(^Oy0E0I9f#_LNW7b
zV9?p6*}4mlTyiuuQzlcgv_B^T2~`I+5BVEYdTCz=*C3v23>C8L-XuJKf;Ul8WE2ZN
zTo(YjId0^>)1XU;zEf^N&u!`+Pa}}Ty0DPFu9TeATVP$i`hoH%#b=i1&%EuDr!!8k
zlGTnZ(m$7Nhzt0naMsduPY-l-sHpTD<|kast<3d=3Rb?Rui&e74xR>_<v);fL2QeR
zc4jk0UnuWq-IjCHwehB<2Kz9FwxGrFd;BhR$Lo3$U2p1a%qtTVBun$jRqsE@vt)G?
zilfpOr6;kh7UA89h%LTL@?C+@k4n#;zeG-#-sRB=S9SHQg+y0xn;}PT&7t)Sx-9Ye
zXFCh7{GBhKW>42cfBAn{3gg-<>b}47m1eRyf9fgwPniN6`7CddH6^haS8vykPakMq
zsW`WOa&H#XHJ<iQ0EeZOUCerWtg29c<t=z2B<W%ED*bca8N20|PXa+X9DFtI>t+MG
z5#f<v+K8#Hh$-!s+QTa9Zxe|ZProG6bYQT44|T~#G_*Nm<ehuT2!G~TiGs|9@ueL%
zVo|S(@8W&eqb}c3PHbvAsZPMrSQRv}K{EJhuk`@{h2t^|2!dbQzWLuz_~<tJ!2OsZ
zXW>(zoR4U0|DEQQI!fb}!RNcDR{8}mTF#B0h#Ib4GGC9LiP#uVw;@OdYOm^Qul6-f
zwz|z10@kd0KP85-&+Dtz=UBG>(3tiS+^`s|{SP$z13@(?r%CAY3=Y2{x0!1?p(m#L
z^Sx;<EDY=G;4=>qhBzL!s=X|CivolE_|p42)`Ur9au*BQ>um92v3_hAHzqQAk^3JV
z=hlTHlo&)TbLbvdC&*_U00X@Ndi9pvt#8=Y2XKpiuRAj?oY>}D`se0Naj6@_ffu%e
zG$lO+k7@q=IF${WWb@RmdH=rj`ajU7=UwzPbCPo~=Dp}}kdN@X*<ekk9WO#SXo0oQ
zqIUNqosBlun~J(+v_DASp0{cci2eXBHu!#T{<~IsnYQqH1hEUF1H5WUBk@X>MaAyh
z$xWE5y}hbrBvDkXxhAo8?)bLsD<_9IdRpg{hxeb*hjzp%z|TM7P4>p0j99*3W`vQH
zC1yvMmz94};YjRVndpANaWO{HBI^Zc-HkQ<2U7k@QE*rOz4v^RQfP7IN6#CwbZr?q
z_Mt$MA=Z)s*68*Vu~A=JCXL62s|(LcT7LCQ%Me8xZZZ&v4i401+lhU#4W8bp<Mq4=
zS@;&Cvuz-E$r5*cSN@sTQu6883_^JLKalSI-&147ygGEpTT)UGA&UVch?Hf6Xh|Ex
zjYgHD1edhyVg8K1l}W`KS$ylmt`al7XAQp^_GQUbkmeA)D5f@oPi2V=;w>Qb$Ea)|
zlEQ0ScXWi-4qL9>1*?Q$x5UZU7OU+vU)dIfTe1&p%ZKK4R-?nyU3Qf$ECwG~AAQRx
z$Xpj)J@(JCJjAbyv@xAw)~D!Ke75$1t)=gkT@IV4fw8afW`!goenhcGym8%KLt9vy
zUFuL|<wti@ygz-ZL^BYJJ;r!-GRKsIH>sm_HXR5V)rpKhZbWeIxesMVS&4|5&I*$q
z-IIX&b(4be%3`*fbKkK+H870ol;?g~j=Fde$N|d+$Dj2Y)|0QR9$P<Nv*@qQKqk~|
zq}8~4;C2J)jvjycL_H3ao4eK}x@2rUAE+JCrhm>@ui)`X;jNPuo;K}L%sgH@mSMKe
z!XEy3x!|&vm)Ay_Rkkx^V0}y_a^&8c=+^j&E7GWXNNnv$V133Xi?Wtg-fMY;Tk%rJ
zV(`9@ri=7<yqD2xu!j3jG+$XlW9efc!e#{ZOic=e`rHF1BC^e+4iW-PlZ7A*B)`?N
zfhQcq)OydcXE_3&i>s=tI#hCvR9}M&#7#u$At&?e#eENR<1dPLa)OSRXHC8ef^DDJ
zd`r76J`o*!VqS(Do0?6_qkJxNs~OqvDRuZ}txY9+lP2g!MfHh=$zVmMh0qtX0MVZd
z3xT48*?ky%MtQH5nTVfFikC+goyHK(2nhgMR)1TmVVr9TN(7f+s=>5K7c*Cfr)WkO
zbrCt1he-VB!|`y;L-h%sES^q$Fut2(Z|e~?S^!CCVl(xK`K!{5kI=fsfNu2a)MLvt
zn<r;WPsZFFT^wFoGvad@y9QAZB+IX+^!Mii9+y?Y8AvwB8u9#{wdgtaiV%cp(w%rB
zJ8|p3`X4B*rB2;+`nid1^U>o?vyr-dI|-j3uby(Jg`C+k1*Zm$tG~r`4E<~)BGl`G
z2&kG9f{nH$s6<4}QFNqOCi_M@Gb9fDh~Objh{%J3NRe!od*LABi0|+{$*6RLO%M@{
zWrGxc6a*$f3m2MclQS6tLV?1Ukl>T8I=P#qp-{8Wi60qkos&llJuHhdOfx6l-NQx-
zjCvGhSK6sBDw18LFF<#`e-PapV2uEt&s*+`(sNf4YSIhirYu;!S>hj2T!?pvvUuxr
z;?dWMeQ`h5lKrYb`{^_HpdqjJ0HeIO{X5_zWCTP?)GtXhkGBSmL0#{;h2HvniGRKv
z4#O*(){8+TprH7AZf>nM<Y4V>YH}bfNzqD;u%%lTVX6s9VIV$_3F<W9gaUkN@IMf?
z_)7Rc5KiSJ>`L@&Q|=?7;h&QmZEk$h5~RJt#(@W!W@?B3fkqZIS3Z!mh<1juc>PFt
z-iOQm(p%&6^FtlyQ=7?YAR<}!1?o&$o4a{RdE3M-@GrN6TT=QP%Q5Tg;@oGCB&v+d
zbTWl3zPe<c?pun|i(<yU&F(}6l5GvzDF-*U-U+l!W%KEX26>?E*`!?^I|z9Qm~F&l
zU*Q>-Q=aS6=YVKAdH$%H;e$!G-Y!K*OL#xp`J1eB^eqQbnimKpv!#KbPH&X17A3-k
zt<4n7ss!IcEiRd<7!QFjBfFvkz7X&7<n}gXtCYFm9&hlpnLJsqfcqG7*6Ke0V`APB
zu{{2Kw9iwtz@}v(;i-kNqa~{}_t(H9Qw(Wlv{(Gzw+8nGQ3f*g*i+)?TIp|?m=pyp
zNyM4$*@QZz)yTPFBGf3}jr0}wcPG&{e(Acj#HueQpV{Nrmw211kv=*Y1;_IOjn4K>
zr#E5$jt4Mq!nNLN&yP7tk5$Gvvl4E0z;Fy4MchCRN!OCn9ZGv(hq>lkRiWDsvLYk|
zwoJ0>2Bm&*f_O!m9jCaiDF)9%*CHLkpXw1_BP<+A*hQLZiXrD7OE2?bwEO<fTFgcx
zqC18hqLkX1JwWjGp#(`J&ORzfD-{Ifzam+Q>MyA&uS5(wKwsY#hJ&C2Xo+YKIHSc_
zalt+Y*x?80y7T~bVjKD~huNWh-RNO|bMO7yo@QH})Y~S-y#GK_y66R$RXK_abFbQ!
z#lBE^toJBKnmRdHr1t8g|FQ6<#YkONLD_m3ZurlaTP?o5!j(K$h3~bD)Dn@5bli$7
z;NVQ5m3aF-$NBfbUKqDzRcQ~6ml(l#7R7dOQO0UQk@(^+jH`q84VEHr^mB+Fq0;q6
zO#f|OPvj+Dj+WE;E5#^M+9Metp{}eb7W#6>)!F~u{SPw(6`8>G#%;*J_=q9(!`rS-
z`@j;Nyit9#3_Fbz6;|);sOL|+L%9!alHFv&-+bT~L}VV<Y*~!{%M)upTKGJ9-{<PE
zEzw|W>p{t)2T$P*Ui0Il^Y>aKq}KURH(`4p_^Q~SZ2_N}sE~2?`O+sZ*m5Q!YswP#
zpgW*P58gH80oT=NvRO}0{i2BcH_CG3d>-2Ha3RtpS>uzutcZTahyBvb?J7*wgU-QG
z8~l=ps;>q<z9xAE@BXFZ;MMV!2$6~Cqm@guegpAKn>Zk+RUx?$?e-M*o^Mn!TmJ?e
zBu76oozJXCfFQ<2WCKoglz2i593G}s=+_dBmJnc-2-#efBZ<#MZV0ZX$U!F#3XmNv
zqXSP)nf87+Ik4)j8Ac^u@vna`<KZu(B@C4a4%-NR1{A#@gqlTi*F5f5HS^<#c~g-e
z{D^y=)axmU9T)CUPs~pJ{CcB81~EAHAn5p2-sj#8ao#|VhWEpsjeV+W=9nfE^uog)
zPnLsyAPxVN^2AWaLsuiF?->tuk+u-}<q50h`?nF@1hY_!v2<ocqhlp|@Fm$+e?gwj
z()N2|O=z$r9|XRwPR<iwGZ!Q6+L<}q>ma4Tj|Gu3NC?onsNHoDVU&Q!=gN^T^XLyi
zob7j9-?f)zywz^L<xhV8w%3!}>qpdrRF9%buj0ddbpxEU8*PEQBM;ntUlkRcZq`Zo
za%4W@KQGyK|Bej4kZDw~&VIW$V56>)FwpV)QR>I_D&se`B$V$(;~lN`<=*C))(}%c
z!i6rzIMqT!NdtvC<Gr1qnRnD#G1I^kN!S=4b~8iTAP+U87&Q_dzf+-Jkpu4>i6YvQ
zpi!8OdR0AyGC3fJhX)a|H`@X~k^MvY{99e>PJ;f83wFdByRg?7<iG~AK)><<dYHmG
zsZ}@g)Ii54JLmJnsHek*IA5|BN16q2+<7(4HPkl#4P;mfIk$N%Nv*>OVFCgt4^)+c
znHpOooCr>|_wu8G)GK5{s9heVN=cDs`qx`_?gh<3_OoIDQZPt6O6`l8>9cXb`l}tw
zDR-qL_#X9byS-MU(kHjK$B;xs{L+J;r?Q`@)SFGt|EWtah*}rj^Z719NHunNt@8DG
zQnx4V0ZaHb!^&K5V@%a!2*Y^2^^=>aGz+0x+u-@js^JHAS3j~JiT!k5_=J$Peb^wS
zO8$nC8ZSqch;gEX-3yNZh$p@N&QE5=m`Fn%6axq915#tM$y`d!9}Ca%x!~o0tWV)Y
z&hRmg_Yq3FIXP_g;ep7a^f_4Y!p~6lLq<kOj0@49Z#XJs8lDQgCWij);J^bNpH~^5
zfy8kyXdx?+{!yfj@xR+gUwe{2MgIff`Ywf@Zj_LkUnl@vO%#zh@*n7-FGtpO4T8cK
z@sP@zQK7{dp8V2&q9n$FX<dvF?(Fa1^gTqPu9%}36Rnd{o+6%2E1apbOsl5^A&U6;
z)1Ep=GCql!vG05LSbR8AVI+TCg};##7%un6UP=KRi%h#FAf{w{Vw0T;tYDoW;vNu*
ze6rI&rwy>Cd^>p*(Dnw;xVfr2sHjG`fyv78PAiZO{0I8jRx2AMVwkR&su@FB`-Tzf
z*O$Zyy|*nED1@>syD#q_W`e(!0+#y9RLFQV=Xd9$X*FevP3aoR$cUsp268V3xZw?t
zkX>HJpBFPL8#)CPZXr)oY1;6$emaq}TC!Sx5FG{<>j+q^-c4}{UoClGD#^=dM-Nuq
ztv@u6J^sGGzY&2Csh6wMh|kTHC?RKLWW3YjZ~voQ0*-;Bu~1bzWhr$sx|wbWWKS`Z
zdypwgI?&@o^@b{GWmMDOlX|Eu-a!yPqf3sirYwCz<rg_@&{E0w$TzW{BQO5+rHv~+
zJ?Ky+7dd0J6l17^`)CRH#0uZo?I~8Qv-A!J9Z~#x@nAMziB>T>=e2+C)>oGu@-m(O
z<LNu2n(CTx5h6uELT}O`^d3NpL3$S{B3()dp$Ho3O{o$fKoaQ!5{l9dNSCIxNDWAd
zuM`y#1f>WFQoP6S-gUE9_!Cz4oXPB&=b4#38_StH2#7!rWJa<?^b7DhIl^z=3=-X3
zRkHuvGY0n$R?W1S``imzP2{Kp7oS|i4d4cd66jRfJD@{))e9$d^NrWXHtEl`m#jpC
zm#`Z1jV?XiCtSfqBoH9adhhu3>H!h?(2)r1rl$Asq}r$TTu->hrl-#|wf_Bk-^O}l
z=>?@XW;8&GivQWjhSx$v{q}tQV!i>R(dVV=C-0tZe4(Lo)LOJ#I`qtNLW}1iL>*ch
zLSQtObgLm+3oK5m^(R8khU3T6ala<bhXNND7wKZzD$#T+O2V}?k5XZUp!LTrJW-c3
z>sqCk5{}<6jos7&7ORMKtZNW()os)RG8D?mgs<(974|ZZpM#S7nB*Llv{fIpWjf~W
zTd>(XfMelwUl3NykD?~mnI@Wie^awhVJJsS17LmX95K~O&kM9H8SANzxG{IA5|AtO
z@d(kQFw@hhwt_gNZeL*f2j<_>(s^549KDO^oFh7d66xc;xl!xu4ng55%BU?Dvez5o
z>xsuSsz)?a!B5ZK+on|MC%+a;KVA{cGNf79^nB!t>qva22Lh{K9#bNs1`9Gg^loy=
z%GRbZ@dzko396PeWGE%j_g{+!V9(&a{zShFITu+q31kh`8=d$R%_c4bC!y=FB0a<8
zx948eIdFvcdL-Qbx7v^H)q`%|ou&Sy5EeMKJvfRE1P1b@O6Ya)JA3@p`Wp*wIm=1$
z2*w2JI$+NTY$_%2aV@(rK;YuUV7)oOcJ#nQ4hDCg7=bdIc*x`R8_Y&9Ys*0OqAMLJ
zlC1MA)wb#pHG=?4u|VRU$>I3&=A*>olm&Y>;cGM?cF=`*JC^IU)QyCoH_kksn^a=}
ztvr5|;&3qve4XB7>YxJO)$M6pasA!9@1NpRSXZRLG&|l!R`uVTof@}BnXBd$e@J+>
z)az|u`b)(r{PNr*Gk(P6l<J_AR~`OwapL!T*~&0_`bYboSEmx8oF2EH<Su1++*YE}
ziTw3#IHAXU(8r@MK}({X_C)eo4|8C$d7T4DDfHeO&ji88zEyc@m3)L`7>hCV<;S~T
z_H)wa*(}$nqQs68J5-Nph1nnv`&gVxP(fB7i|}!(?|(H5YcWlmDZOO^ar(&2gd|+b
zzCCf_+sO5J9S*4xV`-+kB=wC9UdLE^VJg5*WT@k>MY~*#Pvp^3I_353sP};mps7+W
zXLx(IFIeiC+qcv(Z9?9_9y{_wVlV&ZOa-A!->Pnh*Z;yJtO~kU7spvPO`M(;RBVVJ
zUV7=H#FVcm7?XU7it6H+kIcJKn&{iNnb+}rN@5dM3384gq-Xqfk+R?^=hoVvsoLP7
zT>cN!DQH*I%ZJ|lR&_g<a8If^QS8kso&uS_p&=}hbK7r-{Kc%m3GOJmx-m*Y*HX}$
zRl%ba=E5kYea}bhGB)uCAUgUnDyG3le;{BzCWgaS`S`>@Vc@Z+upq}Owy)32s6_i#
zUWO3eTLlFBlriIx51a`0+^cV|ECtE4N;lMyxp>TAFUPhrQ<viV;^-pP1zTwgItp)}
zGmmep4h60GMxJUI(2$c@8K_?Rgx*_uLFr~Frd@V#i}LtHy6@$fD|>n5O&t&KqdJf>
z0^vcTQl6W=|6-PJWj#a~qSL<QT0yYmUJ02dg*08P=?tjmyf-AbR95IIz&b~7;;~H@
z2wY%dRz+9?q~<)jSMXIe|99V=N!<%go;-T_H_DjkwY#8t7p5(^7HN6BEyN}*e8Org
zA8k7t$cj)YI*<Ky^1Ap)YoS$ECXHZpq(md=8Z2jfOFEsBSe474E+0DMc8l=Ho1eF6
z*>K;)&~j6q=Tb>?lXl;Ou;_wjh~=-+w{hX&QOwDzVZjrK?fL}<5LoY`wYdSUi7iY0
zqn|iOoStK}*WlNrwhE%W3ujKe08fARGuJn6l%(tN7qSE$>%a~#sE$=gk)6s7z`9d(
z<p7}*lr`TpqGsFrx&7TUDZ~VB^~dg@7_qjxaM^b#c;Xbk+-s*1b3FN!)V+2+oL;zE
z(8I@L<WoEd9B!u6&m~38HaJ@3ZROy?_TdLpRyU7*V?u={YS71%I`K+J6Himibr?W=
zUoSE>*h!~RZM_N1<YbjK0_R1`5kE{mxbz0XN?|uWrdxTd`sIO#5;&UFQ4%E@9IYB2
zr*}}$d3zH9Up(kO7H-7R&xVHFyIpoc{H>CdJKAe(YinyUp`rD*SJPFoIvUb#F0TCa
zn>T5=6vlkKUS`K!;B!&T3$-WMaRqtOLhsqw$lknw2oG->WjsmoB?(~3e;oddj~{(p
zU>O=4mz{%Cin@L0qJFCYJAJYghKf4aygqqVYtOz`n$`TJhleHsaZ$hz;Ts<2Td-2i
z*XWk>A+vsSW%zPK538&VgV$F|fsa@FGkwJ6LN|px%L*Im^gT~zof;|;M0nGGfh`|<
zd$J|~juh;1SjR*gNb1_Te8|IF@Mx^$0R-`L&1y6HpyL{_=-ep+5ji$CzNhEF#B}je
zj*RD{emX<k#Lq)*<OTB_xEROW$ZYE$kN}34m)SqH-J73pNWw?|S?^T?3!mu)32L<c
z9UQ%E0@Xk>#i!A`2VDveiBl~H(F!I8E+@eH>AIJ%uTl!;OMWpef9>j;L;N||oUbn0
zoPRb00k1p)*GkjX(FP*IqXkCUs01yA6LcPxF$b@!wAC-zSJw&K3ThIITO{;fmOleg
zjY>>Y0vT^s*>ZnFL?$&mA9iPMc^EbBt!Lr1bU~L>6IZ}t!7il+>&1^!3e<fKV|@3=
zCfed2)GsdXJM#c6IQ@c6cVcC6@gn7nnhKoni&MJ(X0Rpja^~fOd~P01Vm-nq=TbtS
zFx7>OK=n}{g1t1S(Ye+jCT05VFV0I2rNc+ru+&GTFBi963Z}#b6F$*iC;|Y+>c_|D
zOvj7cVL{tV`Sy+39I|x3Hw~f`e*WC@puWHW2?F~z&L42qw|vaZ>Y7Td$_!G+bJ<GM
zQ*B%?9C{o0lA=;=R-?G9G?ZD@JG#p$Z*e;d|0_EIB*1#%{6ZJqYthR|Q;R`Atv)jG
zYh9zd{d%JLh;~yoHtOIdLzhNu(AXGQ$bIxgJ^C=vH%t=b2q}1$nSmN}S-9`z<kqr~
z$rA$Ew2)|;y2Vvl=b$Cvr{MS@Fw?N%mTdZIs!YIXui}UUheAwg-FhMgL~XL5Bp5%D
zcF@eQ)D*SUCfRP%$6Jhu@kIb`4o>P))tVT^Z!R~wcSrsH6IWV>8tA7IV6&X^R21a7
z?B5Bj=bXtGv}uwnpZ-a<`X<A(I&dz+H-I^L;=Nzaz&V7+81REfGgIfHU=z5XkQcqM
zW;a}{{%E{N9e!|O6850}c%rSle-07a(~S^pF5@A}Z!d2EkZU?TmTOa0OVz_;oKHy<
zK`+=9&{}KrHj1T6DKzR-R8$zOH%CPHh7s$1wJodU?i__51@Dd+ioM>90)=*TZ;7dH
zKd3+G2CQ$&uNyI`Sx_8I_^)ddz=L!yUF4+Zpg#wd-9h-x@Nfjs+gsKW?@E=(z$KBh
z=(Z7Dq2<ZUs{^`46<%3Pp)4)}X7VJBT5q@e=Rx<+zf=P24^?#Y{hGtW>k5kDA1Phk
zh*R3_@YpE%4vl$&SxNez#fx6QzegfHAwgSXzY4m8J^JavK;HIctpb<~T-hRLA=BE$
znbYPe7!$wS;6^E+6qkS#DqlFzMep|Rr9O<`!i-O@T(K(9KwzO++6B$w2&Aq{Gi1Xn
zYWjn<OV_hhZBqVjd5DKl<hPdqGC_ITc7TM-jG3-*I#%+v)eMGsgvV)wJ3U>PaLn&}
zQSV>VnIrs{str-P5-qlgIA}JY(RfYC&e+siYSVZ<cCd*G`kAO|cC-k-Zpp6UJ(R*@
z@@t}%o{636O|lM%p0yV4|DpNzs_ZStWIn>>t!4M_%Pr~LOg)$Q{!)pU1BKHUf2oQd
zRz19O^l`bk@QPK@l&aR)WF2X9E?xsDwplF-1VV!P>8|6a0HXK1IOyjoHk<VV*pg=S
z_VJPZ={r8)+rJ#0-^s3Ldzme8@RCa1FX^Svjx3NJ)1BO-=V1BM_9c2L^;}c+!Gnj7
zBD(_*y4Mi!WuwmN@bGZR&!3+(HCFZLH^aq@Qv}<h$HtCD>4np%E^*X6|F$B1(Fy^8
zv*B;YX*qgeJ*DtwPeJqJ9rnqm0543B)9^f6YAf6E(A+Iv9iRO2QhjTY)C{pUs<Hx*
z`;?YsJs1EQA;OZ~A2EEa1qBCPs;>b=BO?<}9iROc`lciPq3%^Gs^DK^lgB%Msi;MS
zqREK_*n`)9mfBXqQKU^o?gC6>{qlY>dtASg9!T<w7%d&(%zk}?FciecB->vCQC*nJ
zJ-Eg`l}{T<&GNNZ`&8pxZeov>ZsJVn^)^gHH-(yCBZR2EXFVmrb0c5m8h&3m0X{aC
z;S9YNIJRY=#B!B=<N`Gui2p9W^;>!%f$d+*#YMZ#2*6N_x_ROr)Fpn4v-V)!Enc%s
z+}0v(lXdxfhqc5@(Ay|>>YN06Em8sYQwlGh9^9v@^DVnfKZ!A$sc7^4^uQVY%kb{t
zo&SB^!;<mik42~PM<dq-zU_?ViwJ3}h7->WRn3;r>sIU8R8t<*EGttfw7yTre&urr
z-x1MIUYBxoYy-d%IJ}eSaZc$DcG1wNKX=i1eKcZx#=6@JiYaM^?IFfC!|RuZ$&Xj*
z&9wI}Tzh18RSRrD_upH30Da$6eALdN5JKft**U$`^MDXWFMRTG8y5ZranL&xMN_wx
z`Y<K5=u}<k>B(fq;#LSy<445QDIH$WoUz=9rV0_hM1SI!p`=)Pm3y*Ovsq`-y~;|S
zKo9Ya?wU%Vf7rA3>70M=pc`NOlch=ZLH)LR@Xkj{vEbt!vF@=VXlXp9prF`~7f|>S
zsi1)BW}HS;Q0fkqV9e?w&Dg$mT$?95h(>i~4AA0o@nrEfpmh1;<@)12!)e`=)9s0%
z(Co|oq~bL|jgd>+P6bJb>pE))geTR7f=5&$N0Rf6hQEutcDq!94)72}3~R-)@O6&R
zZp1g2-Hu+D-`!iw7@BY4rlPE8;hQK{`b{nOX4nH&*ah0)p`Tl0lbYXDA*|o1Mrf~V
zF|Yrny0&<<xRgXwH#Uh`Itv7N<v~Zs+}b}oI8_gh{#EM5;{p7a4SD@gOGs2Oulelp
z87)J>U#iH*=gJ^QEnSmy@*%7jXva|i+Ho#`E?lId{`aD}@UI_-6)d7>qf9OAc^|73
z&$c6ay^LtvuTTE8`~O;VXmqJU3U^KIi4j#9zpXN~*6<5BaJ#-a)2*x|Q<7Nx5tq@1
z&9w1Pn2lJK-xl%Gs*0Q*vsiknex$hN2I8V2<i(4mjg_gXso5drTKM<dN|9Wok^lON
z_N3Si(K`^+4la!7DT~z9eEjqKW#!{TS%gUTl_!#YMZKcIeaV9KVq_exS->=7snjp;
zka^nL44kue2y`+D*FEhQ@uOQVww!?FsqAVLn1B8zy1_kHL9^njhKs|R_IpO(8`e)+
zjw^7wl>NXB*YuECe#wMLUPX#znl=5d=lTQB2ICYcG*mVlVcZm{gA*fx*4}u1p+;IU
zF1(Vo=Hm2nw_?5DbGaf^!MOXfc(53SfQn>iUvYDYLE|L1EO#IgI?VT=p(6VjTNU%Q
z^x6~)_S;&K9Q2k>tGxkRA^0CE5M2pUeL2U8X*+Q-O;4gaXE4y<$(?@OY@y!c{%Gz>
z>?J?c{;N1`?!tFf(fn>$(;s`*S1^m10{*Id`dBfOxAfQ^W76})i?v9_{vfI8mpd_R
zD**|#nH5mA^#G`o*Frna@Rt>rmWMG0J=0gh*dK3$5y3bjqxnV#CPf!YZsaD<A{3D&
zpfmJ*AC5RXt-J?3G2%uw|Gj}GNHVoo5qHOaRNXzR2k`?QBn{o(<sTdS$Hv=^uvyur
zpg>0r>#ai|^9Q<>FA*XCr;3rym7Mt1$Cwkwor3I;NFVkYsXyg`WKR|^G|=<$jU0vs
zM)OOOq4-Mnacm+zB~8OCLXsjGFR|jvXK$l>njRs^C5}a!?-&c4-^fWglvoHF2)a=b
zDpt)>fea8^IJ{x_%QFa_YQv$AvP$}C2JQcx6_0WKe#1Dka+t<R&{`79u=;d?Jbk=6
zFSNXUo|*e1^+CenN*?(7E499PF%#P_@nv;575`*#b@`ymo&GB*E#(3dES+1)KjUH3
z`;I2kk(}t1c?Bw_s%C1}B^Sr3YCM&`^wf4h=3_@N^ffmw8gf9y3EW?VeaCe~dKo~q
zwA43<3M}OsZa6bh$99~S5y`J1Jv~iCZ$^-Q-_^1N+?j{Fcg;0`##O)+`Q1IGLvR?o
z6)h==vljL8^13a7N5%3Py+)S_vQP^t8RY9?raS0tSAeG_tvY#?1Vuuo6&I3@*xAD*
zsUsBohEg6+!%FC|U2F|j-+SX~A8;JWu~QE7lpVUstWkPp(>Dse+A9B2nSge0i+8c2
zX8Zj#Tz(_RmCw%qQf--L`J}4dDbB44Ir-Rxq=*Ww$6_bNMqY~ha^xZd7Zy`jUS?+}
zS?ow>FdljoF;Wk6nCeTQRSqS}pm^@vrmy5})}#3N__VTT_;j#%QZwlak<EQISMk0w
z9JngTB(a~MNOM~&S5B?}eM<3&@UI7?=bkDbKUx*bqffxa)9kK{_L;N|Q1^U!Uim2J
zH%JSFpQndwu_oIW{0ds}FV+5u)3?Np2-hsRx2%Gjm!t=M6Mh+;D5QSDhuqDpa{^m8
z-6XUrQX;DUQuQux*7PmBDCP1woxj}r<MDqSAwkXSM@Z9ijgdY7`kla?P?YY%)YLSw
z!IW#b3oLp6I+}G_YRA|Rxo1)6#!j7P&V}YmE;n#bY3JkF9hsWt-T%IrCH`NF#(ib0
ztOTUK*YkJ}WB~cH^%vum4j~m7c)m<~qzd_LBjH{;y_vFtrh<_GEVqG?JurV<o`X#E
zFsfw!fc3mae<Vk5+1|x5Bi<}QQg9^&u#tLLD!?K(M!|8EL+egg1J_*j2-e3gwg=q`
z&RB{!XxenuQU1Q@8K%^D=<~c_gIfGBwhjyhw3t~&pf_+3)6gl2&?&Ko;>>(zMMRhU
zi<jvv*zbuj&}Z=1ie_dN4h078MZy>*Exx8&9kH)iI%zp((YW%hAiW&~FIV0_Pf0a6
zV}YY$xCRAH?Xa37FU_J<fAA*IA1bdrEH`;et)jyvT0~g9iRO}4z*)#Y2pu6Xtd_!U
z*eB`UNa5P6bB#y}3Zo<q1<9ZJ{mPx!@CeVD*p3>*9r3OZ^%zc8jzz~E3w}7xC9!{H
zM=h~$p3YX#j&CIZ``nAR-P>T{sE8$;zr1q&iHH=qDWvCOn&cq(*=_51OK!<btNd~U
zo~e<2<(gxHa1g#Kgb2S=29?bplqiUA;7m#Fe;+DVTUl(1^ebW~$rhTaQJB)!gR$o)
z8Vegcht~<8Mcbdx(B3S3;yA%nZuBX81YrX~V)(@<91A&wd<aF!y4g`AQaG6tg)myE
z-hcgDgoSpT=gRFEJ{V@1x}PYvkFg>4Fz`E6bcyvn%jtV1FL<%sG)gda@Nrok>lQMx
z+6k;YEViZZKJYAcmYZqshM!_lnsjt($7u&NWzZ$_>hlC;<BpYp__7A$>a`NX<5g?X
zNc}MUN`8acRf+r7bm=9uDKFKA>1_F$`E>Ap{1wY>u{$2~2x(ZV@B;_s%)H7|6^2&Y
z>o^?kXn)WTUIe;pb!yKVa?I~@nlGnc!NP%ZoRIZj8CP^oOZC~(_>k8e8c~jL632<&
z_mm=vrW&F3!$%4UvjdXxCe+pma?pUZS6aTU^l`N5s7S(RzXA@oG)A-2Zf<e>^EAny
zJ)nrH4po}?I%Z~O0aO1HYsqPrRY;w6S*SL8M?@Q)zAu^Zkv;LKLBaTPg&ybwzOU5h
znUly6ZC4DpfK$nGPGmXXz8)$T_ZpXOGYCiN?>W8!cCcLVROel6SEsW!J2>ykG&laL
zXqZ`=u2|OgUn;o6z_NIO=z{XXuqCnA2wmffUpMdKuVVd8G_A@`br8j`?})IkZ)kaJ
z#Jkb=7S>_IT-$uMpin4`R`t^x>@b8GAK6|YN_rw`iALXpD9k#v^T9Q>I(VjlGLMs-
zQ5Cww>+U6RyO!5Cixulah0A&I1}y^>rYX>2t6O&Zsut+EC6*@<%9Maii2`vO9`?^!
z3fb3J-@tI`b~tI=o|B9x153?zg6{Bh977MNI-1OomRk{rRyK~V-@vW094nd2YgP!=
zSm4~0bQn;&rsQT0#F)tHoiYy+s}*An2=dH)%kU34Y0I6L%XoxMQ*tW3fS_5I_1jow
zPkGG4`wE8XVU6nqNaRxLjeVqkh`w)vMScP+4SDti@Tl%|*s|4LoF*ZL7-;ozL(6G8
zr-Q?>ne)&hB=H-ZY?LL&zU9_d_n<GszfkzbCeG@z4p)nUrf|g7se%9-t8{J!&wD1I
z#e7%nRxWOJh+f@_WX#$#d8B;Xv~qOj6R2rG<ytO`-Sw77phc$DFNgJIj!fxJgN`e9
zOr|azjJ_6Ay<P#-Nd0ip&$x--yo&vhqpeJBADnr`%5IcuHS+^#v=AFqMRpBc5^N~K
zT3BUT3e`{isw3cN;$Sk9606mGzbaHALMxAEV=WKxRH6Zcazmsq*y;Uv46{ukhmbaV
zi;dWsAWKWo+cS0&*R7yq39dc&!Bf8Hrv+8gAlH6%R|XzK>6lClQlf$DjxIUPXjyzQ
zO*{CivMam;C7^C(`<#r)mp4qUVx{rouiE5<^NVgJ&~|5v<Ti7l<kQ2zgb8$m;f6SV
z5}IJA=rSFfO58dBxFat}cOv+>EX&}GS&C1H#-Q<CeIY??A=&6+(ixljz~B}3c;t@S
zdelq6XK7*QvcBL{fbJ(5@e*Dc>2bBb=Ki#%b2<&aTKn(nB9`pKQ2qRojtb25wcEGm
zp%jkx4q@Cmt?QA8n^;^%lM~ZDM;yzEqQ4a-$-9Z=kGz(6;$JEt3Umk@iqDFr=|3kE
zMS4wUV*fOx@~!w`z>(@>t&uu-jSkI<)nBM+_#d5lXj>XYx<fMFhtVV+`Nn{}vU4>-
z`F=JuG%iIsv&8Q&m8j@P5iJBBWjK*5A_zK?1ns3XWY5cdF|if0Zh}VguRJkb*nA3(
zX`G>fI%gXNi=szbObkz+H!WgZIIJ^|-2Gq~qKva&(%jn>U31&>Af{>-5pp{GKZ4R}
zV)C~NwbT_U%`|aINiwj7)mfgyk<oGkgM~Q&T5Uy(KgB<|xcZK8R#Z8fW~w3ym#%6T
zw=`VQpL&^G-oFw+bH?-?fH~h?FGD9PLS->L0zl|W)9l!>wE#b}vb7&f8aURUDwRyX
zbd@U=CvOTh-!an^?nvB*-~RNggY1<{)M@oYr>Tm5?lpAJ#dD0Zm#@ahp|{2*$@HTN
z?kulzD0sPXc{3u1@vSQn9ETci%;;!-wyG|EFBt2f{8hsDLmk%175gVfkHz>pwOZAc
z_jDJAluO-I4Ug7vlK!q1X`@(1YN&NHv*1O1<({04&cB~OqI?!`(DCI*7`F^>0|Vp5
z<gOBnJ$dw{0(KMx0*PSb9E?Kt7OF&w7ukK1oasL}gcn9YwN$`6YLlF|Zi<bM^KQr2
z&e3;3Tf_=2lr7ToVAG7lp&M9?D+#G{s3}GfwRamYs&Kdn9vBg}v=1Ssok>!fc^c!%
z8Q--E-e(V~xOMP?R?}3N(s7Q2R7+O@QCCLMNZq{^yC4R4D~1o~1`tG^(Sa*TkE=h9
zHdLfCM6K^gD|@JeZ{I}j*Da#Xg5|#af<>Vv?qsd0Dqyd$YUp}**kH49N_$<Ny53re
zRjRF+tKGGlygEXZ1=}~`jN#(+jH8N$c!{5Y!RsBj#%&4oXF5l*!k@X4X<J$Ljuq^E
zQ>8Sn{E*Go*!-G+aYZW|+e1-G1$i=YWyQZi(c}-$5Ksx+HvJ0pL$pS+bBmq{XlrTW
zt8i<$ssU8e5rH&AogyiY!L=)cJiMp=fp6jO2Cf+8tpMm=WQU(+4oM8&#Rqw5(4Zt^
zT0Rc7=!mEjX^4>Im=ztk-yih~X3BF^H$z>y*30lEbN#>q>P&AS+05A%xRA3@-e34Z
zwq!KST68#Uqf-kR3CYBU#55#TOAI-?iF_>el1wlh{8J0x(}>?u#zgbAPp!`mWr;cQ
zkyiH<jJnd9^h*qXd3$;Fs~0ga)G|sW$EM@%P=^sR<s#VoD<AZ~f|^Jnk;r*~Q%siM
z#<q}j*eryDXJIy_wAF{HduYifS#c==sOzhh63ub}@xV}IEbbvCA<&c6g+7r^ycslq
zz5zL|(#9WJ4SD8?aFuL)X(1{|Z4zO$=+9|2UPM&D4!Oq~vQQ10Van3~e&~t51-tQ&
zh7q-idMj-lJJ)Q=vat2!f4HY_>KnE$%X^`e82A*wWwYw&HBw4vCR6%upgo4(a3_N6
zCc!X*D~n4wof*7k!1p=}cU#Q9&|17mPNYF<2YQ<Kd}3gda5gvptvM!7ysb&Wid$eJ
z!*`nYNW!rYQ2>>aOf!oVv66FqiBmC}5Qqz_W9z!hBZL@sV{n)$88mC=gD=`aZQ=|~
z%0FFUj~g$Rn-#;ELb78u9vJe=L6S)KM4(dfI*$6ji3KK!gOhae>oH8eH)jAUsfMj(
z8o<B<AdBd)X__2BV2A{FCaWa>5sOEl*Kdl46ieMyoFZfoh;1OtYbx6N3KIMZiTD@>
z?p;fjCI14!nvoD(;A5EdQ~XHQEBkniEiY;{cZ;M^pY<f+mYmg9L%gLZ%M&~YQ73F`
z7BTR^x=OlplE#qNm8}e;<@l;;zc*q3F-zt`#YqKwl#2f>6zVYxZfED>dA1Qinh`WS
z8p$t@*OF(<*Ab*6C@Ft0wn(gZDmHM^>IL4pCd9f-O+nIl`Y$84WMZJDW6da-0B%)a
zP*G4ZA^KuvdF@@%WINZHkk@t+8!Y`C#xJ_H%wPW34G`t+LiN8?r+oKFe4mLixNjU&
zU3X=Aql4Y@DpL)!Erk1ZF!zioPp28<(#>RIvd*PZtK}O_`^G67(6p}%7@P8tMd5cV
zrJ;k$)~}wZty^b~*~U&Y{C2A0Yv>S}28rmPXX7$+L&k~~7xKH&WjYKEpdAG^9Tr26
z_(tziNqbCr-FMew*J9J}XUr%SUOF7=hBefVw@Q3~++*f_hPOE1AXtR`%q193zwaAr
zP;ql-uswc0W2|JM0w*U*&KR92T6%Pk<|$}Ohz^8}?!`#p*G+@tMfl1of*YsytLNtV
zO5WmJ@)md#BQyAe{|J$*S%%o}`Jp&jXsORgxPp6O)yeZk#N>{sbXfy(&ad;B8?<^P
zhyJ(`#qI@EXGFcGN<a<S&-))ze-#tAy$X;OoKV7{x6x?!npHDNqT#2yCjZDF7WU)U
zqGyeospQGo`T2&}7wX2DAI^|H6~pxxFIM6+i?%vB;?mDEO+zxDoaS<e{DCp=4zlsD
zn%W<j#W8%}F{m6hJ2w%`h)~c!vo(I0MN`o(mN{qL%#>+Kh|NCb-YQ(W*_m@?`r2U-
z)^|9FY5sEa(nhl-a0A9KL%)wl5RpK4kmS~ezLwzt<%tNRD5ta9Am7WGE4OMw19Nr1
z21zY*hNO8DjVL`*4dy=#;;MBGb@;bl&cbrLbr{m)ulI(!ovN1pM5FdmquE#O`h!JD
zf?X2*;(yrqg=fJ@&Uryk^K=I~ynakG=HV<NB^PGmeG83liN6&imrLbnDs(+q_)EnR
z^#gb9c4%qetT3f2R8+HEaBO6H^_LaDS6?&r4y0jHwCIvWB&#P3H1NadEngTr8|3Ip
zr08~nf=l1f29gxpi3}=T25@-GFnyLW${<l{o^G@4)6S8~0GhX3k#-zqB$gmmUCxs5
zwgz_C9}IassNlMi9AwrdqGsA8-Wif)Eq>2BG}TbX<eg);s->+TQp7A5aMo)5WoYa=
zNh<9WMzH@&^<1z^c%gXK8~-)*1BT&*7lgSNXc-Zvl}%nnBE-k?QYgHFlj2!4eB}#=
zNWfcSL;LcRs;@zK1*;*zC^?)=salCFw|L4!!K)k&eqsrOpR?f!@Adi0U4I9XiD3=V
zDww>Wwu(&a6X8U|YM=DNQ?`{n&>!w~+#2HqU7<7XG*6=R^PPSo>w0=wXtX+#a^;>6
zn^7EgFn>=Of1c=i&phWtskjXx;%5h8y5>ZHXJGwUKxMtvv<(1O3sXC~l=tR2W;SNu
zh+8FoIi&qe>7co%4W{y!(S;SR@nSr}H<~Td3M$0lxE0e#2h~JqX!@ZP;m5qU2=|Wr
z*HQPp%J0+iw>rIvJuIJJ&ke5hCcMY4688&@hEII~`#q{6iIKStPn1T)6BN*gRs~lM
zMT#m;sy1}f7(@zO!%o#46c+KDJIdMBTrps4wTOxtsUg~G4aJ2M2qsD#w{v{T#oooX
zf<LYAXL2exA&>E`E+kuue%><g;C+zekX6ptihSmibe*{D|5o84W}`+uR$^3<r-Gl`
zyDIg!Ri2`S?QMWU|D{SijfRXRN|nOd`(Z;Fgh(-R%@)!!f#F-ph<KKLmfNo_q;;n0
zUn+;iHun=%3Ty<%_Il>xC{AHK+p};by$tHPdy8AL>E>(}?U9<9<ibcLsabR~!D;4A
zRZZ&Z(VhMP)<8S)k9o90qATOV@iUt2FXss;J@G>;QsqboBgsozR4H|<8?m|*-0YJ+
z^C>E}0>8*n3g@f1XAK$Y(7_0qeZ#RNMX8|0W|cO@*-UCoVou7161^T4z{bKKN;vj_
zj)dS*RW`CD7|9MdSMi7UN@3mozS1iNuDFVEd+X?mKaz=>qMy$kE|$>m8|3usF#a}M
zu`kpb&jX3{fM$=?-Di^_kLf-r>v~UuvRZ8v`y&-sy4AI$>ufbS`k9EjpN;YYb79!C
zeZ`}?XbIfrA@OH+jAR=yP>>ADhg0_S8t6M$iW;m6#WN!+*i7Kz+bs>u_~FmDZY>8Y
zYu5~4;fF%4peD4pX>Fc@PXT;HB<&=`mNGIzs-t4dmDWn7mVf`H`l{3+Pn$tlwOvbR
z+3l<$XhZeNY?0&W!h}fCk*tt6LWm8VMZZMGYUY@Y2yj6FYAIULWKhErJ5ox^D{urz
zBVGhAf|*vKR}-wu-7^~K_su{+tAEOC{P73&9}Cq4xq%^c#fk7cAnHOUarUaG4S};8
zbngtFPh0WV)~_$#;sy9owq6eduatesfJZyINjuz3)$~y9ogf|bMlPpNLL}R7Q)5f8
zNpncD#IrjD3og0XI$i=ve(S^{UpyC13>Cm&TuTwW0>1*W{^MjAX^R3XHAZ);p#M_Y
z`k!!ng&?g9p^_iwX$Rk{^_4<WI?5{+QL!)~09vfNqC4EWDo$#)`qn!Xkc%!h4l$xd
zDtAcxe}I!21yw__b#@ogx4|tA?V_p3J49Wd?f!kEjZDhE^V4Rzyvw<AMm~eCM_Un)
zgCkD{Bg7Clh}ZDslo!BMYMwCKf+yBZv4_D44C>IY4F5qgbPuM08@db2)g}AL%?55i
z9)yG(L<6+-UAdq!`Y=}6I^pclHO-?$Cc8@!736%;%4RjRdsCo@{oX__v{j_6>D$CO
zS5*v<7@J;Vq3eg4La<)%ttqE<fw=u#uU7dRPHA^YeRcXjf-|MoN@Y=|D@po!<F5U|
za^~4q^KtZ&i2|;?`eEK1`#$U;R`4uCHWMA&z+>^DhoYx)w<rx~=v|W!^Bl&R6*^_~
z5gNuFkR}t(VK}cm6z_(Em~?6lvWX7{>7CyBeR6h&H?v>#N$-`IJXWOZH<(qDBM*+)
z-68nXOMugPC2*t=QYZX14vW$xKw1S>iP(E+ct@3)$?om7hG;SJ6YHL{0>eF6-c@#6
zbhF5j$kC5dIBSTRAQ~_e(^YIu%j6&Vd&5|mbn~rvE#-94hLjHWa-Q!K6*{Tpl$fd$
z`NjUzSbSKhqR9u3NjUg*x=yx8&qe%(c(e#pn)^Urnsq=u1vMZZfb9Xu1LraO%hU>9
z*HV(1RIXJ9_*wtO4f;ROvAmnEUwX8hND~8;D6i7Ng+E4$tEGXiGJ)?P`AT|C42OCe
z#yo#q8$j;~_ApCTjs>y~&p$D_;Ft$}g*zs+14CI=9b%;u8~e)-w6X!fAOoDPP*+y2
zCB)8I&6ZVKT@oK%E$U%V_vr3=dBi1d@-`H;+E!>JJp37$H0l*QJ>XRIxlqtgu^)!X
zHWKc*EG;<J44lSWop?U`rDZMeIcHnwcE4i(1BuiMR?>a5{dAEczI`7yz_73gYgz#y
zWJ}zzgwaj^=$EmPTD*6}2cKpl1RnE=r<cRA{Y2#k2B-<tKlKjoBHk^-8gF2rE;;<k
ztuB(Ml=cM1LQ7gn5BubB73Og9&(<Dtnd43qBk%tTEg)qziLxEBulF_r?m_kO5YsA4
zTMIFXa*h_hu$7R%R1%g=0K~bU<Q}bHvEAk?&VOa8l>X=ILa_ykdJNXLpWD^eY&D>S
z3BWl%><B2SQ)%+^ryU<V`%;7ujdfFm(l|2;qSjA@NfVW8kPF3k)<X0fCUTMSzsu;o
z31AF6sb)o=O%XM?(G>7KT_7K70{E+GS8ln{xxv?FINm6z<QB3-vjKS|S?Kk0LkAVo
z1)q9xWYl%#LtX=ujB{>z!6|p+G^<?hJ)<VQw84!e=?XXW3{wDLdd<FX6xt!{MKELZ
z%3I-g5<D@b%<N_zGO8a+#a#K>`NRX_bwd~7<es@MN-v<pGW4DZ_K1(L<xMJs&xV@u
zsr%>4Sy9B<|7#9O$A8a<3^CiSZ*aVYtYgDPY((13{BuQH#Ys^?#Ge_1A$n1+-JW5N
zPt5jD97AutM&O;4M!o>i4>2OTnGl-~cVpiI@D^<b%yi$!mKSgt*YH66TbKe|l{E-u
zIxiZ#ZqPTc7SI+#CNg$3fR6QJ{z-()-1pB2H7T3~xd6faL{7PUfB3DERe^sC%A)^Y
z!Num^pNFn?pVXgE%VQNovHb*QyHAOddyt>aLEnY~BCi@{!0$ASmNMFE5=c>$ty{pa
z`bW{RiGTIhA9xWuT4S7Tqk^kj!75|*C~zJ@4_Pk_0p#{Jwt<bQT;ny&hwFlPyp7Ro
zMNnlJX_ed=STZ2O^cJu;djtuplWK49!$2z=NV#j51{l<E$*h+)hh!Pmd1imwF)D?Q
zqkK@3o?{Notf(bs)}Kx0FOPI&Vnz33R9O;uJ>Qu$hZ1)Rw|z27hbxkK;aruZ&<W|o
zQq$iQv2S$e>3Q;A*D!xrYfSf2T(f+qr;L<hB;F~-p7OxiDZmzG53v?^!VZHL*{qM6
z<TiF@)owf1F*d`=VGuPV6E`M(PTo$~2*In5{9a3hzC;_GSu7yRIvp~rt-4a|+RxM>
z!!*ND8d6xk(($9P2AQUH&k?|AR(7}GO{)xy@!vp8O@nE$kwddIeO?l3=ix)6S>f~^
z<1+?EB0F5%q=^+ry8u9EgDZBiFRkEjMe$p2g^Pe~DLR(o!@f0aBZyvE1OuT_tb-8E
zGhPOhnq~h%?itYQ9XbKmOl_3+Wfr4RA>|btT80p{5IM|_Kic(yT*CXmRMG_VH5=Gw
z<M!{9&lm3$V<>!8mUd$O0H_JZZ@|VKfa-00|E2o0m}yS0V+BOE<J5#H>dv8ihj$z%
zOc}0^>;*26GvhBG`K;S}VD>YUq%=|iKthC#R6p&D`7#(YwqIwqOt~TAXDJ-Ez{$6l
zban`PKlD_qM){o6L95y8N9?*+OzBY(JNKoo%9S^b)AMVs4aQn}0{C#FccSmpnXDHf
znYF)74=i(gLAw^X-;PSYv=;e_mTY>X&yV9q&(rM?C!h0z@FAwfyk76yVxsEUw<xqW
z8ios*rtsx1L{~^~+ozoVL3L5ZwDm<Ez^6)0C5@MU{jYT7`>@f%@WR6PVFyVEWr3@#
zWyS7v`7o|J^q%yJz3;o47(N9(9WK0nz#zMl^4g0(&Ux||N%CfKOzhvY^{Xr%KJ1-S
zq~JlCeMdqA`loV{pE0_0dptmez^l;UN4FSxkGTF$Ji(rD7tfU9a}VHY0XsqXt$<na
zbQ`dBGe`G`1kN!{MmY^|{`o2BTY1#xw-6c2pAjd*q260lL(1e^WVv)-b1n=^U#ke?
zIG6<a!deK^hJmlPU3{#rlv%#9Uj!y0=qM8DOeEBPlK!4oySz&w<g>(#MAvU?-_Eav
zJk2ARnQfm9uWNS37+&!dBeDiiMgrXWB0IuJvZGP|yKROR)Qn*IZ#Sl+(YL+I4Zx`@
z3kC1nz2C9-nq8|e6aZ%Yap{VIlPS3{*4B``CZ0)Aa2J0~sVJv_<W!0&p};=HZEI9z
z2zFZ{RUFIMgaj-Vd%mGAoGFcyzC!;hjN~=g6?&eziTrT_I4c#jyV=dj&*S{tc&1nd
zfUpW%B5xG3f5T~KV^~^L4U7jft<Z%$UFEah^HJR1V%WfqGe(oF?S7<nd;?t}Y+Pt)
zw9voKTY!6AA6%eA@0#i@p2=`;gb?)d)b@Pz`mush@>qWTh`aHwndDTK{X8gIG`&ft
zHfqP2@nLzVZ<iY|0OOyL!nGuUNFrPsTU3z`*Hpn2sv`>3<>Dj_j|BJ#T2?k0-bx#f
z9ojje%0&dq44V`e=R}oGiD7d5_u<=;c8ceQ_xn$=S2Da=FPV1a-swej2?%i0wpZ-B
zv2};NON8FpGZReD9)q8lt>%2?R`kAa&8>B#Aii)b&4_jXoro3G6{X_DxOWN@VrGH5
z{WF!fYfT#|fy<K9fn&;z`Y}B4JD`(_8N<Vt5J}P#fHYoCCn~RG8jdqF>>(q|!I@ZF
z%^#T&>;hu?BQNE++GzULZqpR7k*4KDvJ|RqGV$IQ2j8w(#H05V$zEf`sMk#1LSeju
z8H9*6tmU*HkblPQf3;c5+X+0Io}Inr-D>n7k(l><*Dy}^@!N;EYpkLDK=|;B`c%sD
z`0b|#W>jFJ)S|k7(GN<wR}70NR7=u{kKpaf6M|ffq2GW)0kpL>FQ&9Us1lM+BLL2E
zoP<t&Yfe~A)vrufnN2%x#D~nr*(#*=FgXN?8n;&tIgZ~&`S~LwBuh+i%jt`1|B1;P
z8{l+FxYf+<#~XZVq!Ztn?XMKU)XtT6YOY%S4daKy2>KN#K!9p~6N^uoXbb}YO0=Gj
z>;%=t;z?zzZW$I+**hABU2rc>evM^+bM=s7IRqn@rlP=-_A8UXSs3ZJshoMaD-+@v
zC<WZeTwE@T^xjbq6)<1@c;tn_OvkdX$H$Fk_j12O&W2n+33X-l?dM#MhQ^-C8MyL8
z1LwU7d@BpZQ}d$U`tbV;>%ENNB;}&*z=anZqOPSEtqLKniXi4+eMxHl&8Kcku7S~j
zL%0&=nbk}K*-wjw;1dT0jiGvSX%c4Tamfqwpe(x1GA69z{;TVMsX%yy9&EgnzIi3f
z_+~-Rm}-oW?EWJAYJ}2IJCFc)61-zVcdj1;KpiMV?L*fzR9#~vd1>JV`b&azv+<@N
zsq1<Fpqx8?B+0+@i$ta$*S0<4By>@YBva4T$=>%$)yq|x7nUuK3@K5#n@)RDara2j
zq*LO!Z5fiv3)|Q$RM&fAO~m)70NGK%PJ%iB^n5MM6LU{;yA6@FHPjBn+><L*H(4=$
zjMb83zLc3db;5s&orGikjR5>&`un!U6|So_tThkQ<>14(So+wBn*3N2^EC6$Ls?d<
z883JAN{NxZDY;YK1WIl;9v6DZ#?woiszTcL?@}Sbepg8TTU!Pj0`bItZ{8}2R2n&O
zITt7d7&o=I8!4;TE5^b2MRJ-y=G^ko?24_z5QPJGtpJYw*;>)EkbGxXe&t)6mzEpP
z5d7E-j<OOfS!71@a)K9{#~<47npGur&luD~1IhcP#;M<MRt)@5agBA;pv+EnWTG72
z&`u6-pJr0yg^%HbOyU7>r(sWq@Nxol@XC%4n?e1Cz<+|EW4@nLq*GuI`T%c#{L%BK
zJMe{cu?^6l3OAey2UbB_&b9N<8Ix+zM?uPeC>DqlV*Jo0z$Rb|RhPJBJka&&NI9(z
zK(>SS%C`|1{5tu{o^`qL&_K!=IFQ_Ih(aa=(E34Vq1M;(4J7|B{C#4jg8osY%9Len
zBOWE0xz@#96*w>O>&T|8HVcxytnrshUsl{n$PZS%e>dMA&zbhI)81ZR&4Np_N-Cc$
zxioCna8zTDRj|5msL@YU?0@C)m#W6u2v48MT&VG1r%#~@NeNI$BvfK#WHr!~Qtr*h
zD=@R35DT`30%`RMS3FauHp<GEq7HY$uFs0D<FtP-mMNF%hLl8ZFJPDjnM<`B9s;*w
zyB%+(>A|W&`G)-EUiuQY7I}9P2Gen|b$`^XpF{{6eaNE`VB_Rx-NXFZN(c(deZEk2
zvBd04BE1EcsOY^#DMuuAtOk>lBqqhe5!K~#C7^D67&5_7=eIR<6l$V_NqtwPEn4*a
zgC{@=027U!10XMuSy37zm~QnVPGCi1Q$RAI+$&_+Yb)?Im+~SY(+mZaZI*Bizg}{+
z!cHztWxpfJxweVb>j2@ukk|8G1aHdr+ju<(>YFHAxSmCeK{MpSp3XkN#q#L851ldG
z(-^5PM<io=t^%C_2ymVbX6~va-jE+q)-v$B9kCs%Ff|#b{2b@6(-o+mzGizBf)C7x
zKlq<~*~k(Ah_m<i{0RTq2@M(pd?!z_kbi}yYFhB_e><c!mvL6q@73;OE{lZ|i*tUi
z7IEKqU-@h7;TaqHJQSi#YjxW93{!hkyK5s011SUTt0hLpfkz@eR{T&O{1MayDAtN7
zMDp)T^eyBynXZhAlkxU%36<5*OwyrMskqaQ2|)o3G#vq$NCy@BgYqQMdS?rmR~lkq
zACTx3!yE>+_CMA9fwYXQ+cV<iIq}|g?&LY)<W)C5(z?Ynj<$p6t+qTaIdEfal6SL7
z1#0fb$6VTNjw_TJiN!0dfC}g{Bl+15)y35%fJ7rGTQsPPkbbQ|oC0#YXMLq;iwwYf
z%?b<ykUzDKCj?w8S|K-EM*dhx3GP0>9iP_Nxvw9C9Y&~{!2n8BSavC^^=di6t*9b>
z7iv1PH5o9HM-zi)-a~o~2UVAcOyw*r2UY77o<`NVXVzKcq`6LCnl)YHW9Qq4K;>qD
zN`rONtbf<(J=66rH|`bh22SvcEDnQVjx=YU9c$4acQ9cpAl<$pRj(TRC%!Fq#slp@
zf<3r|NeqGhL8)0c-^TXPpYo|&QyYYoXtVKGX)i@IzSW0?1wO1fgW37M)j!KH;Igu_
zClgsjD|^LYsrFt%0YAM3?CJFh1g$Xnv{d`4wK{w6@-1I78Nd+STiqR857~K!f?IN{
z(q){B1eps3fr0;c<BguhdGEgFk;$sf&Mh)=#h|a*>QKk_JrQVM6=uCa_5Y{I0llk0
z_bL@NE6x9g$z2C={I6jZm^DXDH8GVR5`y*=0htvPTy&TV+EbsZ53sGYbD=aP2bfP)
zyJEUef&(-hBwp+;XP$<CiTI#qEQVAgqP|WTWUtnb<~|z2IKK|&Ub}Z5Cg)PWe}^)H
zdiq!db&@|@+5SU6Il!@Jbnbls16Ea4De1+9lKb2)QME(Uj$a$q0@-lYs;qZ;%->Lp
zx7|XLtDT>Ve+_JE&U6T%Fg!Y~a;~PW-mgWB=Mi32B3av7-%U#L4!f(w^J}z;jqROJ
zYHVyfs1f~L(mq-<x8EHgmm8NAifsWc)^lGsJ=5|_Vj}$fmvX-Z;BS+?vxy{k{e$ki
z80Yg~p@eF`mM2e9FShF!Ddm;vT)cHn^(l?~!|YGKDymc?dHr1tFR3ZldGp-Rz*Nwp
zZWy0A*fa(^C5f@5I9f1$AY2O~reb2AGz$3h2YmREdNDvhSw*Ae$7qlX>c8S|X8_Gz
zSksLCv+U$qJGA>>+DApkH@iCSF{_Z-T8H|(E{upD-Sl7VTkZ~#%Lk*>ZoFF642b&B
zTHAanM>gt1eauuvjmtb?sVM4Ty{&1m*1xhyy(K4>>q{HErlj=!1hJd-n<%oxCG%W)
z-bVX~C1~!`EU~y+X<2f3y$FLB!++D)QU@0u=O?qqs%{1DIlr;5MBc1YZfT6OK;6N8
zeEPKYYve<_yaUbJQFr~fn==oMu;oL$udV+H87x$)=}g7;q84#Jq5pOCq@~=rk$*5w
zGVQ&ee+y#nV_1by+-R<lrC*Tl#48!A^o=&)Sd6-YbE}-o4C1i$XKrQtmP^jprwMu$
zUoI`ZPR@ruiI4O{4zV@z56w1@EV|ZJ)Gdt|)ERtA&G3|&oxNkC_cgz>W>T#Zd4De1
z>%;HWHu(<uXcWr*G_Nb{>)F#My#m!TYCavhccx$G^uEA6)IfiUC{Y~!C1p=t#(CR<
z>rB@mZ@CO(Q#%|anRXh?Z#~gciDdLz8qHO3;d>gV6KVK%l_N<`B0ajLNd2ItMSeJH
z&;1lbFrUyIVB7nJFRS=s{G*)P=kCx>OVFP4yLUM`g`heSx{9~22Z-Jto4m>9L(Yd?
zv5)M_hMnh#xh?h4OLI;2&&48<eML?NX|F>obx?M>?%(7i14e;?PTZ`+X&>+42X@cn
zbaG^KGrX*=y7SHg-l4AK^sI@w+}BZG*}3^eX4Gx<?6Sd=uaz&RWLFxqScJZP`GuSx
zPN|G}#2V`OMy}Rk9=qCI*Ug@JU#~0dj18B25bcDJs3L#zUtA4*DJwgNH%t;pGXI^A
z_Dm8X+jgtB{CMbmQFiF&v*5<NKcbz-%m10$^nQz=dP$63*1uQUlZFRZeqld+Xsh4+
zH+#zAjU|%&Jf*ZWOWLzW%*E(nlkC5DC3(Vp?>za;7^AB@`D@pIskJ6b(dE7i=1UIE
z1aN5Mtv)6u;(w=70C^`O1HO@rlTGDYud(5>YBlm6-^z)lG|LS)Xb$9dh30eCUmr=D
z`N~pj!I1NUQ+6i6eN5Kbp{2|+x4XmLw|Ffww$;*F{okys67J+r5t%agcX#jaPPfSY
zvi>6}^5|kx%Uz4P*&8#Hxg{}bEqqYq+-ysra-l>zFu)?pJ+0QSZ0(?1emDqH;(vca
z6(ev!2pcO{ZOmfkgYJF-&bwR*=Cz)D>uM}lS6AMe%Qhx)w{Gc4f!UzUV&|Kd#<lzB
z51%fITu#-$_PtgfTy0BqX>*8_c6LanadAF<`nq)A<vj1a^o;I|^P6V+iJVjx`<tED
zirlOB?J{50>;KAqz|EJlN2OO+?!qO%X@*zkd*wep8xW)oc%te;iR!3Vy_-SCU(fz5
z%)M{pA3o-&y!x*4ENb6{j2P{CW%$@ERnR==>c0a%|AydbWX=+kB<!kM>(edCi?=+)
z>nh}<U1}VjJm&?B$=bmFu}R?K-A!exx<E?v-8adXIOr*>Z5omqiW-t?9ZSJWz5BOI
zUJq-IyE}g*UOEPJx}<wi_9j!uJJj_4?n(paFEb}67lvS?^r-zVB3}!V{3T*Z_P)+t
zzDOBPX}ZP6pRX%{J>RAi_b~69v%LUd4PHy>Q8of{j=e2`;vzCBkjRK7g&W!q<fOVU
zIaMgGtapRY21I1i5%yoMR+~HY#3-+~*a`>)uxl8oxwv3kll_4Y-hEMwM!DpkzJC4s
zX<qksK;D`32<po0TBAHLY3@VafZ-k$&%a&X{+CK|{CRFWC)FkyHF$RNdvm_mqM7ei
z#F7T!-}#4jpZZ)H)rgHcyKMVSLNnr6)*n!cP?lx}xjsGW?s{uhuTi(UTaDF$eOuMw
zi^Ln|drtudkap8zbTmdm;ntx3<+?gR8jzOd8;4s9Rt~;T>k+NMMJjVSl}KK$xz!e6
z6vM~d?gmQJ2iw8)+%JH&`DeB|UKhC_=bXiFf&l^_^w&+b@WzK#Ckl5c4_$iNoG{KG
zask)*G)~?nmle|ubVo+Hpub##A^`)aN3q8S|2s1%r_I&vj}CrV7UiD0cV$@o)d!us
z{5rXvhs5iR8J0;4H#CQA9R}O}V_i2i4wz#j)cSmsv3(^)WjxnX*OsS%x`NxA-c<qT
z<Vf9r>SI2>|KF@9z5d<0QR7JDY`JmCrQ^LJg@*02>A|z8-`f<g|62b~OXnTWcK81O
z-mTuHszp>=8k@9g)UH@}2{9^a&(f0Gqa(KRwP!@6rAD}oQbCDXYE)~bW~dQu%(SA^
zs$JZ_)6e54kB0~OBRTIguIqJO*E!D<Aa<_auP6M5>8sc2HSt^@9>?_mTKK4k<=aPX
zfdiEG=M&FoA}0#|SZe&YOz)op%GjJKdIkGG63#GmMM0<4g{tt84`>pskHucu0Zg>-
zz75_qaAzH$Pd;yzHF{ik_$lay-FRIU)ZGGZDgJ=fxIRzsXO8mL`~Dj*$GG^w!8GcO
zF?e#D`buA9+P5RMPGELD?GxvN{yPDGykVYH_u|?4{>`yhuYvi&+LdaH*bn1MrX)2<
z8<X|Z*6DUWFo?a~gq3n6l`ZkXens)Zi{)n_4`Wth;7&&63KX+gd0Ei4cFW5)edAk<
zh4zbYeLif23*s1$t-;C+TE2V!<@<`0967YclJR$7y5;p{Y%kf1xL9Gs_J1Yd>^i32
zd40h%RL`4dZmDXSjDFtSP}fTALcz^qO}Cj%&L8E<_3{K%u%&T%PyWu3{#om1U;d+E
zq2BuozNOLP)|{8JcLkiAyE*|kV2F}0Q3wfrFRX-(4*@J9$3}a-feiFyr_tjtv2%@Q
zjsuSaqt|bt_%=Y(PQ<uc2($L7G*%f`1`@W8&YQpdc7!rdYiu`H0AM++T|GD}DJ?U-
z(_Zy((E8=#kq5<o>;msX&|#XFU-+LMB|jJ*(&SV3<L}%E^2i!*pl{hvkbpsNwQYI(
z$xtm+y3OWO-3v>{1|QfJZD5y#r(KPGmP2kZK*L6T>}{;W{g<k6f;pY*$Fl4n_pc(a
zIH}_0^hKt2YIz4Ly&87G(bI$6((C<yL>xFM=aVqeXH{vpnCm81hp?LN%Z(Qg4*J=>
zF<u`uwLg&8dPz#D8tW~}@^TDF9d#4_9?#%k3A=4|ULp4MO7|?YYRja*#tPFDFWMA8
zxV3nt=bCikopU{}eBQ~|OIpA3u55Hs*z?tP4c?fm$_Jc@JN^B=x9uxjWN0ovQf;jv
zVEV^j2fnlPdapwu_n$+9Qea;JDKo|OryWZ5!=vX_84aazRXv3t;3kgAyizu<JVDd2
z)USU0NZd!gG9t%AC&w3$F2po;HH$kLHiT9z<if6&T1ou_*YzonHGEO2EuC*j%WHeu
zlRAU{5HjwYx}EnFq98)%n{u@A$|_gEG#p4dFjN71Y9hT+`sdr#`_7IHe`sYtyL@k$
z78s7=lEDj?^n&eMkzU4v`<PHdTFx@UD6^6@#^Sy)l~HcO!B^)sSMDIRtRS>zP!%A|
zD%s7IW7~6U$`1SRRr8E-<wFNBZ_H{f>%8A7U)q~7xYF=oTzfi4vSG`i=|T3u^vll8
zjLIcXU{*@=uM<5rc(-ioW$iEdZibf%_dYppOMasS)|W5;V|CcYTS0Hjx_S)F3dVyy
zJVDh-uZhJdWV=u^u2L3ZFP)=Tsb25CQ3sr3zQ&@RPQ@NV$nB2k-!%m6t8(W7A0-#x
zntDm|^O+M?uHQ=^wz0X?oVi1P_^L>S>N(k1<uh#(e)M~r3v2hsEGN!^U)Tk&Z|bdQ
z5JkwbCTR+oIdY$#<d(`Vtvvk*Owgla%lU;@o)@E8mbw0T`JZ}a6IG7MtOwreK6W&F
zWh?LAv2v#i{CZf0%iG20Tm-Vx3*-_#E5si@l(xz!Z^(MbDqtAzn4_F>ad7j5>xB=2
z1oJwCS6bB6SKN((gX4B`@00M@qXT-vA7=*pBMo7R^M_OWn^yI&bs4p;3(EjX>XOk?
z-zsfj{t;Nq&m?0ymyBATfZF3P*jFUHBH2$juJUZLcV$k9&+<g&qyQg)Z`MD3_2Pvb
z&dulsYsM9K;4nyvtx~F&|B<wSZ&lXSYWNw9r=8vZ<q|ki_Hx4cteXv3x##K_^%Y-e
zl!L47<bmJe?FD@Yp|s}yUvr>QD%knMJgxp$9=Yk8pDt8-J61X>6H;Dt_$Zt~P85zk
z%ix=;#`*vjt~<5dB7}R)eXL?!nJ(zq8oJH&9KU$D*5f%D5>ioRg)_NR$Ia!#OO3Yi
zx2odPegOD_L@$1?Gb%HcOQKh7|0xt5zx}g<M__~GmP>xJ-D+2KWo-*+<mca2Q(azu
z0~U`kQ^~nbEeHBeBu~n*5!hgoYjBmI;Kf^Smkh05*-bSRQ(h&r`9LcQ{jok)m3($s
zE_n_<o5qqpQu(`OBMzVLVJ`|;5Gk(Q)k!@IcV9$J4cc+CYMb)iuF^Fm@ax*<5Yfh$
zQyxC#wsUm!t&g6<<ZNaodd{SN4VZ6)bW<zKz5`44$NIkfu8Q)T1c+8|du!L=!zsmj
z>CO#xtNEaINK%X9Y!%0?vTmyau5x?pf%0Ky;t4Ny%k7HpN@*k0SEQGQAG*FY?tF2%
z<hXooL;Y^1YN{DE=4{7AOV&%{FKYL5?%wdQ?YYiYJV2|moi2T!D8(k3T3N)|s6&q~
z&MR8)KzR77q<*!UZ{&FE2*dT{-|7w#j3}Tu8aig~%xoR8TYan3QpN#8YahRH=+)tP
z_VHE!S04Xzsn^$YcN>pbS)E_<bIe3l*kzPkVIM^=&olrRJl*@j>M`mX%3w&<1#&Zc
zJ3pi#sQbj0Axc%}SqNRtH8`=_CX9Wu1N+?hcI-RUh~F2hN=Gmkfp7eu1a^dB7dGZf
zf-4qo@O}c_U#*Xs7<fIla4S_L_GU!~mrzh6w9GRIm1y-E7YaPp7Y}z3RJJ{lTr2Eq
z^<8<u)^lriQ~g(lg6qZ3E{;fCmw5NhNcmWle7PSr=S;;{MB=WM7~SWz%J{!q8d_|J
z$}U!IcK>rHEq;*Bjc_Nz$Gu}1N6;t5`Y@hbp8)*)PPfwgkIRVav@8%z7a@L>J>VL%
zlz!D3a@TWg!F_`JgE7~Zh=M`at)#v|w{)Su%--VcPnFh|2V9JlyjyHPGu6**@I~ko
zg=EXD<dn{+kUN+m9)H8O`c0(m>fAS4{H}Cw91A9PKRyl@07u=cuJp{FebIS9r_)~5
z#m1PvD)Y2!xETc^%o%Ifj2YdSJUcK;EZ+80n#E(hJW*FVA?Z(zx?(E&cvFV1VOs6}
z7JFYIe*bQT{g)YA`Exu8`R9Hu7SbwRT^B#_qLLA}c@BP!yBSf{=Yxj?^B4D@Z_F!s
zn4gV1;e6*{I{p)YEZ2LhdfH{adJSj^(>cDb%+>La_6TsJv(;zMi9wj1s1**<b%mm8
z-_7C1*Wfels+%P*@z5~R?(^%0VCflrR&^+HKV!hFtTmy)x5sQOwlp7moFZ~ZJ9vqe
z3l6FC#H%?))(K%vD@d3A_iz=IcZDK$3Wyig<6mBb0Ecg?O+I+pa|AHS8{Z(an$u!<
zhyF1oDG1cgN?M$KUa5DlwLw;g_`naRN>ID4J?vv@f;U*Mp_YdJdbiceFqDhRM<Rq3
zQxJ*yE_sHrhMzu&mxpYcjd|fygc9Ctr#EnSC9imbSQD7>4^5IA_Q`4OFqrh4a>>*c
z@dp;IjxC3FCoDECD!np&Y16SnCH-83c!_{(*I-svlf{Cju-Bt|-w(9{*jMPx1FAqR
zU*`&3_{4en;tTdmK2mmAzIn9JlFy_+9)q+I2vhfi0{YK)?u=K1R=f4n)j4ct|L53J
z_{^U4;+j=`nbp1Kcc)HE3=GECfhqFuza91AJx_)GY*p+^*9U&Wd47z=w&x{M<@mk_
zeBeBB0uD$j_0CElEVNXpq;vIujS*&vwA<hCRJU4iPxwFaRK1^hwcq0}Us7d%CKpp+
zI9^}r<^1ytV9$JB4!_|`U0QyWaNWww>DxQP#GBEzrz*vJlT?;)h424z#vtlVHBVMY
z0qVhw{nBG;d)~@sm*GTK|E#Q+x4Eu*c`DZP)mPt^ZhpTva(DjhS4QTZnFe<})WdE<
zX45`>+`4EH&a)D#kL!TkHA28m7Fuxz8?_363pHiz#SW2|3Bc%7AnMI)IE^k;8MWp3
zHf-56)O3-?$G$S7Fq|=PwzgzmY3?!4u_CKt8||AhaN%2nlKYG*DaOy+j#2R!z04YN
zGZ^(b3jg>^^e1SYZZlPzZs1K+Q8>5|{7u5QKS$oro(rO&&O8LQvv{kN>ciAT9}qDD
zj~hdFPxP$!98)l`XHCoba?xn~gRPZf(3Cy4P^{{X%Vk59<c9T-*tgt#RW|d~7R%Rt
zU(zS)#}#g<xY)>@)=btDLwx@H`A5Tmhsv5}{G2kHmZcGxr3@%K`@*a&9avMyZ1lV3
zk=51yN>Bj?vctlQtyw%ZK~K*6(+7od>;vo6!+-@Z&n=x+@$-<Rrao1pPN3~|Qd=HK
zZO){Bs<KrH(bpC#rTP*~m6Rkf_9aTk{M&8s^a!6Rwd#xAuCA_b9jw~tKZujYG<O4C
z`@d!@kxzXzdR%{pX~a4Xl}pjCXYFsa@K9F|%ME+}mZ)J{0lV_y@%YoLui{HMAG%%X
zvSX)&8%_63`xP#FOnE-LU~p+c!aw#10bp8dKI(3^IkiLGM}E$t#Zr2~Mj4{p?SEwv
zBn|7%*44`znZ5}SwW@HDzWL&mkF;_Xl=P~cVxJOP6H_q{<Rr>A*nQXc$K$KI4}Vg8
zjci?RD!3+W<*RKsXLtS{$YQ@Uw3f3R4jHl~xS|Iqw}}ZEQZ~*tU2!(YEaz^#Oluf<
z{K*6)_n>=I^@tG;AA8<$VZ#?U?0LO^+I_*62WB|h*ModzuEPHn*L}~$7V%^-pXa(=
z{W6ojWBuUlzEFUM+Xkw23$GP-{(cH7G3&5V;SV<k65tx<itc?kzKS&!mE$XMqp<$9
z*e5_S=(+Vxui@1mkQ7sI)1vJ|WWH#>lFaa?J&@d}&kS}n@QZIoLH@58<<Td-WjJ_E
zxlz38p*3l|ep83hXqRt;aP7!Y((DoT$hL!xAG(FMdJoyl6(RP9R0#sL3I*I<F^|>j
z5C_6+<vh$A*B-xkIsUmFy7yDBDa|N^E-rrJ;S19;^Az#Y8~%G{-0^>Xu(ErKvUPuN
z_R!GK#G27s>D>PbELwFzm#K);;Xd~U8#R?6t<nlZd4#~_z!rcWvcoF0(wCq44y@=^
zn!=4tA(hN1I1Tp?Po-hZ<&4U*5W5VLn|+bJ>8oU0hIbl})|tWfRUa>daN+S^!9%Lz
z@A_X{muv)v;f}bM;mC{9{8^3C^-yR+HbIS+AFOc!0679H2A1Ld1KX_{4ZF(#;-cr_
zBdD7IG(B$cV7mIX)r-orAG)?4mW4QGR+hVT8}rrGOWBRrXQaPE-6T0aF_K~}ufLUg
zrR#>wFO(I1QCmDmvi9sKF7<hViH0CTV01}kw!sUP?zY(<&F+`4I*slh$ZEH5S{%yl
z%~MAMBoN!XLZw!3aKIlPBJts`lg}%??&h_!u1+-qn!Sj#zf}VOxK0ngC@@bg@aWxC
z&KfKH3FG>Bi~6ol)jkXjr`yJQ^`JC0;S+GJ|HFA~4eVbXe@8^mfb!G9wnG1O);qwf
zTT|cfUk?AJf(hW|n{1eJaD8^dqRejOZDkCG{J`EQgHN&Eu^Q3d?h{w(2K9Wnc%zrL
z<iqnk7s)fPw|1k~p1B-ycD(M@b;Im06UcS0pK8W`bl-G#vg3M0hH;dFc?E^=w6Z_v
z-Me=Rnkou`ft7sq?PdN4y&&wmW^uW^G<2m_3gi_*oYKVYSHK0*Gt0MCVNxx%W5kCj
zg_QZ+CpEvGf6G|Y+<ax&v9sBdU;2yd=N@Vk-5dM8)L`Qs3E~=<qrtB1HyD_u0Wd>r
z3ibWJxu7lrwGw}s)k*rja;%a0Sf!QI<E!>~Dx<{JzqlO8luvyq>lbyQmM^Z~N>%+Q
zQ`JqXB_dJ2ra}5Zy-Jj_5^r@ZCh)87w=uKL%PG!n+&F7<yOk3V#16kJ?ajPktsOt&
zT*}JITBO*0>fr6G{wrnVb7WpvJy^eMJt3}PmPMT#qFzt!U$lhORA09P0ro$cxr7Y+
zy);B)d-&0TPb)`(;H)8e|MP+KcD9pJl}WI|pf_ciu_h6+4Q!pka@|kOdbzCc=Kztg
zzyA;aCFbIG;hm*KtD1x*Ia#BP&BxQ&+ska$NnZnH!%;?#w%J{uo>!va8_!{4-*apJ
zJ2487KrJ7*jx8JS&}z*?Kfk;c<tPUqs-XAp)ADtjZzrk*?zy`4RCb>Lw;lip5Qw>r
zv$Z)B`Vo9Zh5z*Zug+8Ca8KOME>l&S;&m?zr|V^B_54-Pvf-lefGR+Ge{5adx_+fy
zx9#TLr=h4{uC51pPt`u>fF&vsmN;sn6--c&%YuYUp4M)A;w=nOkUxKL`DUo+D4PYU
z{IANrwJvb|P`wwG%{~|V(?7Jo(!+2h_J-kSw;O}g_J?X4?USg{g%D$}rit9;2O7Sv
zuHFLxLUZ^_;eS8y{(hH@JndKaWpmZ~_Ylk|W4_61f*cFx`HM);&BvRMop1zfWlGG9
zW9Ii)H~vTf)GfR5Z;cvFqQ@M^(SoxYu=PP|Rru3lu1@2@Ulqq!2;g%EfuA3Ty2!iw
z$5a%bs@M-F6bP#r@m40wCE0j+*6Y?MTN6^Z7_UhAz2JJ_yRqdIfc?$P*lo>U_uJ9g
z^D{UEaJ@la*YCXBWs8ey{Q%sxX|13h=VoF+8%Hk4bFvy93JyqQ(3)*peec!hTh{y7
zTOA)Y`UHd8lnYZr+oFPG4{|T|*@q2`*33ix!vMGOx%JzL`L<2duKk}oP(2mvp98Bj
zLx+U!fcdBLL@H!bLj&C(Bh0Fs*BY|D91(SUT=GE5iQdF-wf*P1n}g#X+2sS3+5ozi
ztnE!i`_e%RP83)Rr}gg<QpY%LOu`@FQwl8#4=L>WrKCRa(t7azeb=xzx|3v`iZyue
zKf<g6fFuXtj^8AHkZ|o(Ymk}+o3jYpM<}O}uSr##R1l*!_$-fuLli2Mb+%E#?|K&o
zxAQ^=YoAtTHBB$(YwA1sGu0XW{aITD<s(t?(_x%3YV_$}>iYxI;}vvE=hYRVIh9d2
z!j|k(-Nb=!#Z1af%N`}K?XujG@QCrg>vk*DFFa5MJ~Wq;rLu6d!l8d?u7Ru+a`$d>
z#q_UMX0$Y*!qNBZB+6B+1H8}upOu?oWnG|CZdSV;)b;yfw}1X$({6*i#P5em=k6b_
zg$F9TF4}IiJq_*uP^+;2v%+}#c@mcnTl-&&gHTRpPFbF7%2-bGz)Z@rysPe*V<G`Q
zFfcG!<F4ms+q99h33VCX1;ycT-P6aK%`*z{0WkahvxZNCT>`b2Ld@Ka2k4IFa?e60
z3ZV)RJ!Ot@Df+#G4^8sEq#tBv*7%*Qrlwl>AX%q%aChnP)9}F7<KW3wsKlZ7fLBwk
z68tNLAYt({e)HkWo}W)-QriXIeSlgf4eZfs1H*ybT9#NPt&(5rEJ%P4`jwM^W!!Jt
zUB-BC2z&fag^aVOs<`Uas#M$=j1MeGq@LfMv%0a{bV=E7+*PO0i{E%`CS@pPNOfG-
zl0G)M^Uppd>#zo((BMNU!^@gkF`|GU0BK!QIlXt4i7W}uYN{Rd&p#!IrB4nxHkP(J
zzI+x#$s(q{8Q33eK%dJZSX){L*3QNc{_}NNB7$SEc2VNavZ%uB(z4lw&4FXpv5@I_
zR}-m$WjErQTP12YFwin*y!~rdPTtd^%5Xr{Yx(}nvw==ucFXN4<Xl!8%FQ~79{jcM
z)-9`}ENF8(1mL792W#&xMNhAJ5E&*ZIc<dsfgvF-<3}2h@Lz$8PZa<baA<J#z~|j&
zT4;!nE1HsTtFWNeg|n@iF4--62cAdj>zc~V5W4Gu8t|%Gc`JkYjQ$5(|77K~pQ8ht
zlBLp0_j$J*7y>YVmCRFGad*Cc{d)X`pm`;EaW?0&9w!bFqNbT&dthJ42|8ypLSc`n
zHO%~Z5aMz)INcl2^Yd6r^w6>Q2>%o31j_Dm|D#6z0Y(9O)G3xf*r-3$D7o80rjPL_
zAKZ*w=N2KG6?Dk|qrKsrK1cokb$9@dvKLy}*4In0AS=eh3Pvr*WIx;h>_T-c;loGa
zq{=Vx$lyX=W}S4p{H8%sGbSL$VOOs@5bw=&qxg2M-u5f#9D!0w{k1>d)v)q8d30e*
zj@svjS;Zlju&zlgJ96-yh=_=zi^7@Fv>L86bdCI(nVJ1d%u&&E<~&I4BZyC$er$`t
zb=dAECw?JHEXJVuHnWkcEY5yD%_fH`K+(X7FNMsK&$O?BlXFy4<K-V264_d-Hcc`{
z=BJk=@&PyL-iVi2X2pFs*B*m89tVxY@5E#>w{+sjBh=m3af+%+r-pYhy3|(F_S17U
zJ6(c2hdKO;T@@TN$l=(+CyESalEUxbzk7QM!?3nQ4(<|SdMJq!ipG=v*%oz?-Vx?J
zPA&7|a68#?baeD1alh0}`{58ehi^0RqdQq^W`?TEv!$b9j-JF_r2d_t>^|BhZY&G(
z-_RVHm)jqPm2dme&eQWZ(T!AaxYVDf@~x`xe2=rx7@9f!IwmGT81k{UmbQ|kZ1@{;
zWwI_X(*0mz+`YTjSgwc8-TU%a$Qp+JERm6Nk2O7v;6}JZo8nCno~ThbEh1~4O(dEQ
z4Hu?N6?3*Nt(KEVn^89nqpnBP%=hLgh;JIXVVL>PGkMv$-I^UR&x>HI1W$FdiQcbf
zU5RcrJiPPCR?jkDfxC#FC4(LEJEadZ*{xmQ>WJX&ACtwtrwg+^a=`?v74LD2;606@
zvLd*eZ*QKZW<%&{_3|2Am}`ZdiOD)#w_Y*3Z`Xpo*E*O;-bS%QBD-@SWPl5%6I>M}
zOay~(%qNt+<B!0o%aLo?jYWu@iU#ZsvOD&x#GDG=k|ky<W6PcPAiOWLm@Ddhm!Mk>
z<2p^U_Q~fE@$s%TRPwWNhFVT3DHJr3*;M!qJL>*|V&>B<?{zhYYq&emL<ipnWiy-6
zP0%oHv3cTU@l<Tok0-<hsyWz?RS1PNQGG6K!6tKFAXZbChMCkY#oM)$-#^%tw#m(A
z!)hjAio-;SjP%ZZzG7_9l@+H;>7EoA#gFQR4{>-38y+|M8ZwmBB3UyfGT63U(^V#^
zsGAHn5vmcgyAmzXBy_DXG_z33G0h-CU1P+(xX!E#r#FxzoR{3eOokYlF`B*U!s9a*
z=!qh-q&Ftlyl_`h+{o!nk&D2O*;u`wdhPA)>vGL<)GlGpxP$;%y^vQi2b?d7@QNU%
zj|CaUkjM=izV~fT2e=djLC<mCIhgB|<7p%d`j=y;%rcdBi7RxTY`mK0i*5Emdt5-^
zosm&t7uZkrDS8OXrW)hUjg-XxmNn6#xloIaY$Y?vXLfgMj&J#(Y3Ev{>{lDh-`7XG
z`J?d0+&XhbV<PwuBUoZ0bQZ^APEPTISsHbm<nCDci6x=fp@|G8)1?$0tQe}1=s@Rz
zX2_m;({oVh);zE@32v;i`|rfePG!0C)tZG!YWR}C1s9D`E{n~W4PD;eJbe|?Gp@-D
z{VoAZ3sZT6O-YfiShe(feG?WbnS4kzdr{fde+KfUxpL26Uzw($ugGq9F>0kkWItV^
zZCZ;PiXqTsbx=P!Y0EXik&!NV;}PN5h%+_j^|rw;6s1G!VL_rx6gN#(5vBXP5Sw7?
z%U%BT;XtC*=d7p&HPJJaM`664uT$fD3P#7S9$hLg67%cL8fWM1s-;fm4JJ=wJQs>E
zJG!KGj4>&W7(1IXI|3izjFF|oXZxPv5Vnj*V2i6|oPoz2wQvTl%3WuZ&*B!hB;yeh
z0!_Y66JM${v+O2EZBGuqT}s<Gi9R-(*b(zdypS@-PHFJhx1#V+c?qj|OCm5dcbF|*
z1Iqf-9AU*SkQh<3qej_!CQADH@U6#vy|M?qYHG3}D^!Uxfxmmm$MJfhDuuT~3pLW8
zUDy&u&!(8&3W1o55q*=LJwG?mWn`%<u`I65&bZnijJ!m*Hg4T4T99I>tSIWrEe)(A
zf!)PgV1lJ4A~V`ZL_fKLUnr`xc^Cfxy^HF?tzFy+!xkD@qv--M!Yz<&dCW65wBKcJ
z3G7G@;#qBT$K<>D?uGzkiG&cb+{C=t0!69EKeEK|nL=MWHryj>p4z}VXeSGgOj%=e
z!)0N}F^Fp!?E$rdOJB(A)MWSD-uCtbG2+>3#oK<(HtqBPn44owkPtXtYOw1`AxRT*
z&Hr4Xm4A3og?x*-l0!x#-gpG_4@isEsB^i{#Voy7ldd&4{_Xp&;@*8!f?lGKoj_+|
zF#(l2*lQWv(edQl@lu^mkq%-tB?7sB9ZBXCmI;7_y&T@P)y2C|CB2lgcM<M)?(DU7
zKV!E%AQa0x2=t6z*-?ZsJhRd4=WO}k=i~WhPw6tyoPFoK#J+w37zU}N3%HdnU6CId
zd;){<CeDSNMZhyq&l`<w7`(!oE!N0TMEWEKgz>HpTRz<GWBy%w?Cb4N_vivG(NU=K
zrWi`UnBb&cXi<;Fnhx|7%0>Bn@J{H~>wf+KD=5veC@T8gVdBQKB)0eMm?Sys-1xi|
ziF!p7ewD-Zj0t%~o754a!GR0B6mNnJ5rq{nU50xULpA$$2D@n`FjPXlM#@TL&G`e7
zKE+n)?G7!mR6oRRO%7k|{ZOqpdPaa46=28Ck(uOpcqK^IrrT>}758wk%oFxKS&TE8
zTdVf2;lqWDdfQqxk#EH`9*np5PN0njl)X<)IxIa$A}ypCIwF@H;K;Cv6+Oz+7x-ms
zK^1$Pk}gVyWXoKtAs;=F?Y=3A2{0H7(6rZ<-tl4knk0;gEp&g~Eys9_G+6kN_RleC
z@HM0Beya_Um~1S9DmyP=&?WkJoefzs|EJPNwQm9*4US~}OS3eley-@Z1As;H5}l)6
zLT5;`NBaZDAsSay^bVT{(S0NEdR+mL=7*Sh*hkR+M!hx1GaO6iO@ienW5`#ce|$I^
zpNT9;B~mLk_Kt@Vij6upoP(Tg-R~6y#DpO<gummTNGW^c{vO<vc1?~7Ds9%_*b^AY
z7F@yo-Qb8(N#W%sDj~3=1ufvMx(o*?>eHI7AZeSo+r}gJq)Z4ib7a;SX>5|$wOy0i
z2^I%ngYyhzw;aMmRk?d7hFenfe-H&NRtBje#e1dt2Td$|0$njSTlPPK6x0KBMHNH3
z?u9~1Vh*!0Yq81e7MMC{#&4l0xok06@)B{xS6U!O!ayvceM~57ytG-1bzQ&wmf{Z@
zlR4dIO3mwC*E7K&%;s^m&6pd_h6g3dMDsV&BYs6Rng<C-vJ3WeJ0y;D3JmQW$k^{9
zdV0uWx;rY7g_dBSI9*i4Nk5{%eZ}yLz+l;A=9xmo(6S)n$6;IQ3n98U@&YEQg3B$s
zV4_69B(_MKsNW#sK@$<lpWc%rEX4L&3vh+vz?^Tc^-^q~BqI!?7q+gGn{QK3mbx6_
zq?l_wCM;AlBkLAH1c&;CRWgHsBsq2boEUp}NvvMB$0El)R{zeJYc?sUSgXd%U(|B{
zeoGQ|oE;Mr*V#hIWoON0<T7>wQR{X++SZfPh-!7NJwMxebLu6|l4Q?DvR~VExkrG<
zAS=evZ1{pu0|18wBiot3FReVA^w$oOXgEHQHF_pcHtyk}6IokOK|~LKXV_BPD3}+z
zWX`oDMXe1D=t8`1QEZu~F=tlm=sTjIxPJAXlJ6zi9h;S4Sz|V{4Fj@_iG!lk7BY{o
z1n=qS;brRPvPxj=pis-d!Nyr`ehnhgytxbiTY1StTCMn4W-xKn1CJQPiN6sJm#EdR
zxkA&t#t5nx&=2G_hNc%VJi6e5Kd_IePiRW+yqz2Pm7u~x67SVS8izA6O(oZq@l-TW
z^UhOb&2`V;d{B|}MF))ulK9uu#CN>1>?fsdiY$I#?lbWG$UDGC7c(;`{fNFLdyliP
z%g4sa6=%^ZmXdiO_AGB84}p=!N48kjl8c&kxgYsp_qaEWAw#msMRQju2O0#%%9anO
z99iIXDbtkIV(mqb;#fqbHL4_SJ?^Jdn4cc58RPIGjB9pp#~`9WPJUR9m`Kn|6nL?;
z*=gg`p~*HT)WkyQB0k#Em`|9%<j(3?*u%wE@Rq)riqH5;b};^W`BWBOB{K9v*h6l@
z+>Mo7bUQtyxaJqN&}igymrO**acSosX(&lqnnAG8XX;F!Pu=t|(`#YF-bW3=9QX?N
zZ=lD7DN;=#7$x1}c*kCnTB*Oqay)q*&2a<0%o99zIc9S>k#BPQ-1rX=?jP~%Rz}yZ
z?0ruIWR>{I-<<hT_pUr$;!3|za6g6X$;Iv#)+x2(G7aj$GIM&#YlOo}0r^&xWr7U1
z!xeg)<jI9|sxza#4~icTNK}8jk2<^``(Z-Bh~k278k0Vv-}hbFwnU`H)R;s{aWF=N
zb=8W|ciay|&!E?%J=@MFRCXJ+%Gw)T<z?b8@t9qU5!uS+4!sD6YQ`nhyYLFk;qE5)
zQOFr;9iD;FB#qJ4JkraY1K9_Mud^yy-<D)ZOYNWAQgWGWx5&oWA;rvB=vE%g$;G2b
zj_fbhG|a|(E+Cy3rcu4?5tPt$iffs2@x*UBCZR|9E2)n#rh)HTV6Ffq3tP>LiCY)X
z#m@H{ok9l}Lu}Ud$0c9Jy)nu2#-KOcY+rp(@mz_zQIMKIP+T``+L-Lzl#qc^;R?fh
z4IZ3Iei_%#B5#IeM$WTRM%Au7dE#sU7ke0cz(W=0Ot|_*)OJ9PH+AC(Y#xrfOVr3?
zmK8`@lYVP0QBEH5hY5I4XHFyN&WwBaX-{SFP7bmkSl^VLiei|lb2wRU8(-K_7tR}G
zzToZtSs-GdHN~Jq6D+ck(S<yO$HL*=E&PamKBzh8mPUFgjG_*QsVgdadwU#Rs%HL(
zIf7V7h*Eis>8uWF6%I`+D=Fp{$?mxq=20fvsE;4t0~lq1U79%IPV17uE&0w1B!vRF
zOnd8y{(!)80d?g2mUxFK)vu`VOo0N)KhithRP25{i?UrhrC45dGO39y(mk}V*d>BI
z8rmW|e^0d7I65dS=HsReXP}Zth6m%~$!BYg_=KMk^cxb$XZB@lu3v@qQeia_0*P10
zW<xY>TpK%P!+fRAHvZ-(yBCr)%V^Z$$sw0b+!)#$Q^&4b=GTl-a@AvP9eh2Q;HDiU
zWiyU*#-K9b10h0mnNSto79uoR>|VMZF9*Mio10B}@nj>-`D$7pr)}#crJ4z83fv>L
zIxZ`^h3j-`;+{EOQKG^gi8iNFX}mN=4~i<hVm@697pY{NQIfD>5TG^HHMH?I?|d0(
z=coj6!z7L<(ePWOt+#sq?zm~4qPL5n*g%0|h^AJ7X`NPqyi}ZAN_{U(6xCS)ozF{t
z#;JW!dW7?Bi;db0{kF1$@$=th$>hx6rOCskSyKZeRrq90*4CD-3pXFS)0C%Rl%P_i
zv&9%cd2Lgn?eeD1fp)AuUj!noET}5VK-<yamk~Cs$||Niw)qor?9ger%@Cg=$VhMw
zN1n76r-ancI!U=^&uJQ&>7`P>sls6*jBe7bAE03KpIg~d$J*kytx;VCCbV5tXCDD?
zUgsY<!ojO#gm)RnVIdODdM^ouJG$t-PBs@F*LVe^>>NupS*eBHlH5!Z*1RHx+tH$>
z4Ww%JLFDh})D}&??M<UyEuzRW<6J2Dt4je+y9RrE(l+EE>aM*(9gGqBKAxmMj!M`t
z*_%6-{gEEO5dhIaQtpR}^rnZ6=w%&S1q-dksLt`^zbDm6Tqhk7O^?f%dP8ZOy(>PH
z$M5IU!tx`JaW2I)EdQ%y+zl~0`wbrLqcmi;hpGF)oTeVm&Ba=6!0JbX!;1cwj?28A
z(gJ^?JD9UB%eYiXk!;64XF}z_H8NR(qDSdUHKzHs5?PIr>aK|l+p5AaGdTm!7ZJ3a
zHxcio?v3cRNtB%ll4WshUznZgG*RX2pn*r&@xbqC?KK-ln}}XHo!WbuQY)0BKGEDA
z9Jp`2+N>O4a=vV<N4%%DU~FV0kZ{MH87A9<Hr=ZlCMONR6?G2OL@!c(xdQXSC=dAh
zA=nCz6MOM9XOaTs+PG5XJp@-AR>+<X|DAw^acz>q5js&bK=LkxOal0k;cu}_!7n8P
zJBqU(B+~wk`tOA9apE8gGP1lto#CE~$CwcGvUr0;V>m?&YAGk(z1|araycML16eFI
zM$&CXre`{G(H^d%dm#2xpzAl}N0P+p;S5~)IZwvd9Cd6^vFPM@kk-U}(@G}4=8d03
z;_Q^@Ew~t<NVw<7D?|zM2Eb+4)>g}8=5y|Q1PeKlnfZz)Ec+Kl%2=7nya#g!Rmhr6
zkrA5~=zRXll5$Dk*Cs{xdXa`GMokxPUwWr}V{n<L>39ZN=({c=@58n)*gXYl7VW4*
zd6ekpvDS915}^rRw@TU&bS}JF1r}|>0?9^sU5h>hr;9=hT@c*<1Abz+9?n;|jkziA
zh$u=3vm)_OKC~0!>y9q$lEv}y@d4kugf2)Jlg~NbD5#)HvocqbAt44oux4lE_4oAg
zD|Ljx=!F#M>`Dlv3nJxjQ*()fSHQ$U)<rkj>GTxB;K>R(qFFcjSGLb=hOV^p=Qum!
zC{SbKZA;W34aj^pI!J;!$_JycQ01k1*Tbn3mp0ZVv{G-v@D*${?7jOd%RE1-B`~^q
zr%4@R_<3R?@v-|;smuZP*jW?NJvp_s0AZ2=T_%E}d9Cv}t{S%0-2ydl;hHD%U;Q9!
z`@biMKp#Hjm62aWlZ15@XqDp^+-g?|AzFp&>$jrq5R<jK$^6J#(596ay9Rt3)UNmj
zEyYOcxUYfa=YI4foA@o?#7B6%k*O5!`*AGE!^*-tNDANvzbJdxZy04ORx28m=u$O}
z6{s^D@;5OshL^;cXosjx2TaHD^k%cjl*lp*zr#BTrn~(d9e#Mj`O>X9kK)%#`br=E
z7^ju>6+0IyZMa3DhE-(w;$-h!CG;M507hO|lCm-;swxv!q8ylh<H>dBZK|Ilj%9B_
zRpPMuY7%Zs*V`nCvX*;4SYoi1T~=&QL!ejT6ta-<--)2Bux59%ui&mo9}ImD#L#sp
zy~Ov!SrbsX!pHg@V)raduQ`dU2_;u>n&jOz9^-r85VNjixharvr~y6Zw|4gu*>_QN
z&t}eOb_O7$srAv+Q<cZdt2tLD8$7rIWT~u=6?4q)F43q@Em}ppOdIs4uhrSFv}8m9
zd>mZ&o*;oP+QDOt&h+Nq(=HOhGalcJ*c55a!!ncC(x+)pX@3LIcI&7`Q!SaxRgY~`
z5hd?2JM|`uWnXc?OlsW+f=V4Ix-&WYTsHl=ZdSd)uTLyYCUqmY7G4As2@+LYevZBG
zAR4!Pxl3(PK&!pIvIFPLx9)?^<#z(PSbM~m*u8E03unBIPKC2;OW{mXsTX%qOW+Q*
zU}q<n;T>I!XZab6JLId*4g5~J|I*bi-V^&GWt&swhNjPExWpu1Oy<+D`c9!-7E6|A
z8-R%-=9`0r@+F9hz3UhdE%JgB`}z^u`!_h)zxk)LIYlJb78DQ(Hs6P1x~l{C(9FmJ
z_%0aQwL|2UK*;-vDBl_rLa1`J&;6VVqH}BJ8(>5K-9^Z*9hVI+lZ+u<ycY$m*lI;q
zQZ}|Q$&Viva4s;Z%fEkv24_zzb#&n}94<u6>=a3S$`L=}L)fBmVkAmE@G3L`<C-wu
zqTXbFi5_Ri>jK7)wp3C$&{L4j+hdq@B-`Cz2EP!W!NL-{6Qy6PTob5Q4RgJHY;7x?
zjy&#p1BH%NTyS>Nxd@+)OQehmP~P_p%D}?lI?6s=AYXP5vKS*!u2i>DzbQNUgIOAr
zU3~98?u?EQZf)&2X6@q}6|FBzP$-@Ny!%EXe2xkh@*Hc7b~+FCEBT2nv%cC<pB$ut
z4@@`Ues!EEwuRC+zc;eeCCjo0R|AWJ4#Afgk7@7)39qlVvb{#%0{9&m!~G6;<tvVM
zoZJrvD2E`?&D{<thij!<wDx4y@Wg3@*&ga9lJZbLUl6?y20i_a2OcywNI7vaG+U-r
z?CWYOUhn#q)tcK6U=o8vNZp^=#^@cx61t1huC4(^yut?^D@jbVOCR7<v}=^!vP&|;
zf3J>P(>pXX66<@$nIL<n2+>sdQVIiRegt<|w#%KIA`_OUIqGQ`Lx~|VegrKo;PwnK
zua|5fweYUX?J8j*7deN^hsQ3urZ^W}?$+4cQkvasUdqEB8W*9TtcR2y@+qN){$%@O
z`1jAkcv`%(J=6RNRJss><cL>7Haom$xWx2u*ZHH$JR6@8@vb(pJK6+q+9kJrNynT*
zv(95(hR?XunBNoI<}N9R>>orZes)S?S!`di_mL086?wTsjK+v!12LT*wov^^1Xmat
zU!ac1bxlZA2f&g_2?a%Dg#uzy72$HXTuNALUN2=bt3<aeU2s%spkgs&d9xEIWzYYF
zVpijiFnrUy*<F*GP*O&+`&_RzrHR{ga-lK5@S7Hbv(2w!S*mKOmsM&kMr@^WM8dcM
z^@Fw*m<@car(;?IBBSUfrW*gZLA#({cf?qfOtlX`f{xBvdEq!%E|GOfkK%+$x$h(^
zx<{4g$a`C=7jxXclj6V|U&Mg7o=+r(Bc!?VxRV1?;~Z_;b^j&TeD7U2y?1*S<jPlm
zbGCK<6txu|fGgcw$rR02)Zh5nY^S8}LGX_*l-bms9H_Vyy%05Tg~{bEn9p>NMg)se
z3fZ|;CD?5mcj;P_O(8~7_R-cAe2XfjE_(|nKPh7?a`eW``4&hzczJmrh?{;hj3OAR
z&V>TO+K$JDiKva*EOqiV^R31Of3Fl)7iOqNhLkO@)|ZV#VyE~H>^mr6Fj_bmW9C(e
zMNx|=&+=<I?m1BWQ`!Sr@%FalQHy#F?l;I!_e3d|(DxW$BqW!vfu@Ku`Z7hDE3nsv
zP39U|*Ma*maUD14MloMb%r1-c^e*!dOvE6I*}<jGE<z?rob7zH;qEvEChBzvUvCU^
zPxx$k?#Q=>XHyyCw@Yqo>OZ%OI9UiTGjuufb$lmlgP?jxT*XJBu$QE6dy0gOq8-qO
zXq~IqN<6XNPK+-lG?gGN3aFBdl!bhK?A#d<{Awnt@1VG;s`gla(~e-<$j&dYw~HE(
ztGI76biP*^EC2VKm_w|*ho(WT==wi-f4|NercP!}NVJ5*K9c2t5g`f0)$ZlR>&cO7
z(NKJ(A_nC#4#*gdvpe=H$?34!OvOz7R;eslt;LXzwGCWWzt~je6T2uCKbySLm@Y|7
z$&^?-wcifvg8!ZPY|LLFKH0}Be{Zk&ZOPk;)oePqS@#5tOYiVW$~<{?ss~JTEZcmV
z@t9D$I>aAeF8{czVwA21Of9P#Ng(yda8tn}rn@%!zB8l)hH#6%%<L9E=W>aaTpG1*
zRGHXDaSFS{<B(2mFiJ9t5mRq=k9nCTmT~o5a*=B)i8434Wiuw>1dJ=W@#yHV7x<J(
z5xmpp<Nr={2_6^k3Duc>FLODvlXpweDxxc=;xGgnYr2Q$HE_{S&z+Rn|4s-BMm^C@
zEfa&ke>o8u)`FXdWp8(d^I*a<ryy`qMQy(M7~u;@f1TO!3+ep*rh)>4ueX#61TS^4
zq4)Ct@>q`mJ5SKFE$}X?q=#S>s>V_8ko|AE2DKn#Orm?KmGd}3Don49($1d9FK$D4
zSe&ymjve_tp7;cyVY~QjG|qvEu3YA#%XpWnF`rrdFxf_o8iKlBbC=#lq&@;+5YUGg
zHa0%UB@N|)cy>YX09$m2>DhlL$sg5zwg`z?xr3bCFF3byhq*>j<L!J#O~IImT%zqT
z^Gp&qG+{jjQVO*s@<`{NNT-5s)7Krxeb^aH3ZtIHoJc~smq~i~ku;zww$e@(TRmD9
zjWbtA^|yRRF~?vPX9MJeheW4I{(HJu_B1|aw1ssW`O!V6g22d;mm1nwH>SeE7CM@D
zvyJ07-nTjGRU2p3DdE*Q*cQc1D+qhp<(FT_BW+wRLLo)-u~uQYv`$I6b$#S;Idzh#
zqS%_8BP$p=U@M@nfq(MExQi4qNtMY_)Ee{FAHOgb5a53g7%VP*C1U|_gYukne|=v@
zQ}fO<K?f&(e$va5%=0xq=$t~o8esSL_9TAPegv2WvzrpgNO^hvW6jf>n~Jg-Pn7(l
zp7?((jF81dYANR8Ev@9(qe^?9Jpv4z30MKy+la@_-?{V?GKvk;J|c0r>b;t1O)d&m
z(-={Qq}xj2lYHY^AW;%T5OtL?cTnu0r0AXwHecI@@=;Z&PeT@-I-!g0x18dU5pf@^
zE($f$BN*+1uH(i<?)ef~$C_;I8sqBbwIn?@A+K8isNLp>+!zFOMwTFH%0yAKywN(d
z<(L=Xue1-JNGGMZ%nfg8^fH%&X0BZxX<#=m2=Ci`{9vH_a|iu?as}jxAcyys`ub#H
zlgL(%XR`$9LH^GJ6(ciglZa$zTSO4w2140!#k|=su54uoSaYD+l?{~9_73nv?f_|X
zClOz)oLWIeBHl?mXh2%mD%Noi<M*R6X()OCs&<J-#u&0EQJypa3%i;<x1|~XktSfE
zrorx9bVXExtxzH{NU(eP?{U_!1BkS)Acp#eznJjURXy|Vd>3gT51_fY1kRwAS@XED
z3ZST*FSf5n;YIT!3Z<3-<%E$GXtAdh<+G`r+PUuWz1rWH>5GMq=%wy;ywR9lvP(+B
z+cc{kaw~O7D%9xe#h}<WI;i@j<>k~k&uld*gJL;9#qq>9eFThdoz8(!T!7?P98ZU{
zr39nao9^ob02F02J8{}gXSbSS{Be}3_mk9X$?~7UAn>}m1;Z$s1`Px9>ipXKB2vBY
zUyif%!o;lPVM&;Oh<qKYkd7H;xkMtAYPzwaeSD0x2vY+ESqUNst2TV0$gZ3e?isT#
z;$zumPF-zCVva7j2Z>(hvDtsX;hMH*Lv6lxAht3plF8j$ex=k6L9;UEUQ!pf)Ri%k
z3Hk5Dq{b*FgpX2Zk}fr5@j@bx703*?V8!0X-jw?}1!{7KPE-}7n+}3*nV5!p0uVLP
z<g@u=0Wdu!J$Rik2NW=Fx!j^2>lS_6(jp0aR;hg}JPbGdDu@ZYn{2TC^jlpR4!;Q)
z_qZJmf<31Wk-rcq)66YcBwCvn1uBE=>u5f4BZ<C?7)*AkMow6OqtUU6<(39?{ZFfW
zAi2jEkVRCc*JS{+0&d?1!Uv(StdGJK2jj__`d(+8FP%^A?5@^Gj;iv<@!+~nUKE^9
zs!(UQ&|YmdM>=zjna-!6(m(`W*1Q{~4jmm6#@k+{a^qZHeG}+gcd^KmH;J}P<rSkk
zgM0UC!A~>BIA8jWyvGO>4zEJmYV}b{kh4+xJ+t<3DER6iNHI>E&NpCvW)D>6U-vXi
zYI25_VjR+9KW!aoz9z*NK=aB3qtpdrUQ}c3*YBMTPfaZ8N}tIxcgC{^3vI!kIJ9sy
z9SWqTrq&?S)rmQ1d{o$I1bv*N$dl|36uxnu{<;ClfX3WL4TP0Xd~>F46xpa<<b!na
zL3(30l~P$9LIlO+-Q(a>*@YxW_iDK!%P~v7VquXxqXXe(J6fde4-qW)r{FM(vqF@#
z{n-ap?>l(8@IKzswtMW}cHevl$@<&~B4IC71Inj|7tp6Pm_!Pz0V^hOqeN*o7m`cd
zWbQg4wJ|2yG%9U^1q``dg%#V--_?QHhX|$FNbkL5ixmsZivIHYD?D>Ww~Zp?_a48g
zxM|bQBEzdYCT)!nec#s3LVUX8ZTu`HH<SE$^r@3uvvJHyY}6rK4X#!i?VBc@mrx|=
zd=)8>I=F5U4JtS^O%5qOAhlGLyEh`a{EZ|0ZGjMVDfA(iy8~ZSn)j43N&y#N@~xv-
z<UA|c_CbeGRpATN$(IvR9@9bfkv?p*UOaoX^I_qymlW*;8LKt_V4H!YoM3yKnFqb!
zxZ3{1`0|kAhE-r6ttJTN;btrchbwgAex$@`6$D&syvT?sfD)nfJjohiR+ok09pU5D
z)J@bQ53UqE&|GUQwEH8XS436$-zk>yV(4N~)-+B1CKaIMeYiuvg&4!(wOV(M6pjm)
zPhxU8Y!k7dJ)oFcRQm?ZXRr6M9fyd`FjU-+&NwX!lkRq_wAK&Sd^DX&_O!{pZ`9i@
zoopjheq1c0Z(-qr43p?hHBAatH#?(WB&E=@K3N|SfDvwC_3IeUcoKAJc1_e-$JrM2
zCikWf;bD|qx_XXFIERQ-4U*vP_x^?Wvr&uXzrl)8#v$%OFveND=zDBH=Wp2lGC-IY
zfV>hMF1nPzeZgAWHEVe6W!~R4u*d?fE>QRXyIP_7&2`BB&Jr`*1C3L6>=H!7C%5!2
z;5XIaZ~8CIwx7mQITi)uXU-44)rFdO#gGF6RA&Da*Zf3mdchs{3h7TgxENpf*Y!AR
z^lOwUH62&@-)HD;L<+Z`v;qJAQL*&d94Rg|GF_(okc}fDUeO;(>WOyGMd!$K6ngh=
z+$#*j8=EoM79@ypQC_zr<WJU>na*T6kW+B6fl!8r-`2qhMGTE&4%wr4|9qa2Qe?9S
ze+fHro#_IVS#mke*p!fL)8Kb54pyo)x_Thd`eX*m^$>jBujr!MKd(aY&41pYC?>pv
zb?_q4-YMu@e6%+x^=~SRrw{@>*n*WQ>wg{u)^REjeQxyInAl1R5IP`!Hz-ZN1#IRz
zCh$X#b~tJ<wIaYDgOU&MoByLRf*>Fjf>Clz?Hr6V7KDaB6X-48E5WnOCaFZ-5Lot*
z5mB(v-JA4wM~~9E;c9b*fUkEF$!uq&bF>f$1>Sxq{|u}$<vm`t7)pqg1>mF?u#-Aq
zc;%JF8Gg4wizzBWu*)KSV)qEMQNF#(OPWE*Y~68=0xgLw0gggoN3u$gQ6^wl6@mtm
zkeoiw8GzTb0CPivF&C_pMuX1uf+3wjUk=#B=w9yL^spL<=#o7+#4pCs=c^Of{S5{}
z)aIOJFvgRyCJxdEvbF)-)iaUiGn#visQ*sz&GxP561nh+=T?|2AsT=F4ghwforNF0
zaMIDZ=8-rfcNU;`M1wnuZ>zYzfQzhnBNo)fd$R;sn>#?O@VQ+6sa&%u5F2Gs4R!<N
z5ZEci$hJxE_#+H*RISujap=HUp<v~XyGifZJt3VSVRI);s`4SH?>jVM9=swY!H$L{
zPhm2vOK=bLTsD&72GDLl+RA3m@hz&mXyKXzFk&jXeA+s}iV2%2R7~6<my36<nRiUw
zrg2(^@f$vibg5qSpEdEZM*R`U9$r!GeM6<y1^C6V&8{$+xuam2+#glODgafIfH4`G
z#Zk0wjBkyJ_Xt`{?=^QDl<Q#XMcUWBce^alS0F8&2*<&q-g$66+605352n9v21u+x
zAA_3-x?Cs?DznLwI;G8yIf!gmsw$8lLBNfHnO>kJhMt0{3z_r|=i}czIwlS0XA7?~
z?I?e4#hhV-^VKps2NM=O`+lpHEYnuo%Kd6an!c>8FkLP$6{@1HwTD6Bh49(JOa_xu
z_#F?v$EbHQZ6->p#)pu?3bI#dXCid8x!8w*zCAO$76T#Z>wD*D@>XfPAm|V`&<V{D
zU}@*8LHZ1jG5C9o55@wCOmH_*Y?bYhD}b681i3f?wl$FmDwdC!;Pi?@!LiZ$j(ak1
z6LUi4xliJK7eN6Wk5lYZr*tirLJo2Z7i#J9p9lV5Ln5WHi2x_nZQR_U3Kzwp@rxNW
zWo-mKVXCO(zZ0kT3`!J@shS|Mlvpd$4}_#Y!M+sD9iR)k0Te*if#}F(!=lsKDp++!
zwSFMxnMcs1H?5Dn2!%&U-nR}zWPG4wxVUXSVrmz%qo0_tOyG?FG%^3<w`MmSw%2O?
z=H{P*aPRc_K`fY-0V*kM!Tj$^5fA`>Fb+|Jcg(P@i}?`r>!D7TTcR~P9pgq0AzWUw
zKZrOt%N3^1++>|bvaP^i>fq~o{2GB4vE94-Ctm0xLmxRslk=}P7_n;4{b)VsK%Hhk
zXR&`iIcoBCjPS-I`Gv`z-%uwONq8*-uIZRc*8ROOeLl7Y2LdCeeQ&46XhHbk5|e3v
bWi=s`x5jbN;?LWld{AlRh}(+zkM{onf5e@I

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-03.jpg b/src/main/webapp/bower_components/bootstrap/docs/assets/img/examples/slide-03.jpg
deleted file mode 100644
index 37415da3ebfd5c143aa07e6a932ba32bbcab777e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 137378
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%0D``!$NM
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
ay!74PtKW~CI5ZuS`M$zgE@%HY@xK5J_V;-J

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings-white.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484a29d8da269f9bc874b25493a45fae3bae..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8777
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
B7G?kd

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/glyphicons-halflings.png
deleted file mode 100644
index a9969993201f9cee63cf9f49217646347297b643..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/grid-baseline-20px.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/grid-baseline-20px.png
deleted file mode 100644
index ce8c69ca2d7d42a7134fc1ed33699161fdcd93e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 84
zcmeAS@N?(olHy`uVBq!ia0vp^j6f{H!3HFK_`(+gDQQm^$B>F!TaOq5r8o{K6y3P9
g#kf@_!tLpL=GUf{)iNOsE<j}rp00i_>zopr0NyGUQUCw|

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/less-logo-large.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/less-logo-large.png
deleted file mode 100644
index 8f62ffbe0899b83e3b75a0e2d6b32cec3e253a8a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12824
zcmV+zGUv^SP)<h;3K|Lk000e1NJLTq0074T002=41^@s6W;(K%001%HNkl<Zc-rip
z2Y6J~*0BA&e*RYxflyK*5IO`B2rUpuAqfdd2x){Q1kwlzgcd>|gch1e5d`T)nxHgA
zKxv|Yg`z0ZEC^x%>C(G*{cEk6{q31^X3m)i0$x4O^FEU@nK@;>XYIZA-jinl;E{9x
z{(VM#eed2q{`&XdfA@Is;6XZmKmG3AyC2~1_T$fvDZ%GhLiIcVI5v0b`^U;R>I(nx
z*JI^|opcTP+F~pmzIE%?CwN^K&!0a(Z_=bmLHYUlrC)sU#b=&<_St71V*A5!{5a%z
z9uGbV4|*qleFLQc0tKN*i`=<$#}caN(Y9pe2jJ${6GD2<(O|BDUPz85=BWrp!g|kF
zumD+Tg*OfKH9Us*T?FC%{v`S$eHMxLH2Hd=4htZZ$XUS0sAjHpdNCU3c($7C+0c%e
zW%4+asp{Js-r4vC{O3Qv!_AvF0mT4uoyAsMTzqWDjveFN-QC^(8|7$>QtUtx=->%e
zpqCsLi=l1avUPkHsveYQPVhjcMsU87!3Nq%YK9abLy$tK8EQ_g_Cujg`(aR*2sdQ}
zGSWy9G79QO7^v4_v^kMunEFJ=aoR+g@`_dXx#BfDNX*_hVzhCeija{;Mlf~4k@h3_
z_?S>ZAqZ-=D?m)ol{kk8o?FQPN!tNXJs{VFevF%cUx{B|sOHxjsv_mQ(qQR(I{-Hk
z8!9k{05_87;>3v)b1}}J{cn*Y0W-#R6oC%(Pm^Q8Tkk_9udYxtI8TC7)Wi!as2ws0
zDKHRf$`B)kP$!gRFcOBK2=$oZAgCWP5-CzJ+JrF%Iv9f29Rt}N1Da?+bR36|<4t(Q
zoaphEkk6N|BZ<WK!1rT>EW9tHj1&n_nvo0(&Z4vYbj%Vy7ef$}^AuvF-5{ui=T?#@
z2{M9`Ncy8R{R{;3MM#p~O!+2hux#B<4LKOjDngRYn>Vj~?z!j6{H5hUDI)QJ?#YAH
zmqT9$hE9}Pj>afQP@Yl{B%h#*iWEpf1VfCl91;!~6oVO#=m|1PElH%rJ!%|b8q^}l
zO9~1%MiMz1g%|~b`iM#jW~AKju#qH$z<A7sk`Ti59Le*>as&-D!Bh%?6oX(XFl$sN
zID7O#P>#kZ$9qx^TcB;%u3aBsyqA9J<lu~;k1KLU9FU$Izdv{Y7B+m2QVtfw4B8eh
zU(cDN2FZa~ltU><h!R8g5Qw{IU4#T-!Wkim0x1cDO&i(dQ3xUf{Ndz?9L1=`C{l`H
zn*EGYh)hw4aHf!i5CxQN&1r`O=d0ytYgvq%0sRP+gQbud<*-9JR&D$oXnTOyvLu3x
z8#iw1Qzr)os2(K8QaT7dImDg+^5x60Vaq2lWXu~7l`;t0CG>~Uue}Ml2{Cl!;AWMf
z-5ZGDBg-Md3(Im4qKT!%svJ@feL0v8#3)8eGTPYhFiJv?k`jtBnh<g*#n6`{Ov<4a
zgAqcg<PbtgWD`m)Mqj3SKp&LCfEz+$RP)UN=ayLz*J}bSTm2z?f9yDR%pU+YHuU5W
zg`7LCuC8sKDmiec^k{(G#de~m931Qz_|xYt2hV_HC|xTI%GQs?j&%~0sh0>zeWyw}
zq!cBWL-s#x5M+o_4uvEbRADTK1x6Z(Fw%i2LPRHhlq7OAQ(u!Yg!*e{lo5J;BceZ{
zVmMPbocEm`6~|VH*pf9ED@`f27!3C@q#TTtgCCu}GohSE0#x@&f&L@jfK#W>z<(a-
zXA#<F%$Tth<NjYyjU2dRnqc6MrJdK4gSO$XyaA;u`-6RxZs6vdgXz|A!W^1qLdM`Z
zfE$Tnn;eaW9Jz=pb8zR8<&cOAugD&RvWX>NLCgum;QK#D5>gUI1nwv`T+Ko_yJ*T{
zE{2dyNWo$%Q8lF$9d2=aLlm8EQ!(-xK3Bm^iLyowZ8;brNfn=LDCe0BzHtNL=i)Q)
zKqrIHcKGn&VvPH0PmLVcu3gjOe=zX(q8M6oa9w-f{)14lUVCuy&Oj-8qZ~br<e(hg
zQI6Swo0b@i=#W=v+{I8n4D5&GvM2&BIdcC)kZ%C*gp$EV3ZNDSOs$YYb3qu3axg*?
zDTfwC5(;t&20uOOQG|%svMdH?3C4QITUP3f{jgwuG@OrMB3}|j3`Fv%WQ*iVPzZ^!
zkHPd2umFs|6hqR}fL{&@(iI9PF5xB?#**F*_V-$~YQ;Y_a$LWDU5hHX(--vQpl#SI
zGqEWZfnxNc0XzW-Vw7W6$>eC%#iX`Q7tCA^AqXQcx&=9;Ahi|LL1Z;cpb|#ju_JUP
zQBqPdBr;nl#SqOWRTD~9q9j5Jt6~I7F~s>+;on!8DFi|W1=#}Zhh##V_(Hh!+ZDX_
zcXhKzN=nN3ze=;JCCZ^G29JK<z6H^#`B2_7!EkcgWSe2%Bm>e1apqtF^yOHGawOqh
zNnRjB7GX>UQDhO4!xDo@4n{3Up@|@xX!T7Vo-mVUQ<y+jqL@%bku7Au!jc>^W5_Hk
zrNHy35<!ib7*v^(Vi>8~rl*2z5L9WMg@4l%j{JC1t7*kCMjK8uS%tCx;$NYZ8>(Mv
zxXaZk@32g8Xp+J*sO3mUIcAkmjzl4cBv2s;qLM=`h{z<S{SbcSpkfLUQ35q(s6b>C
z5wwp+lrRNCh|pmY5+X!U$kbtmNa$Fk6rx0{kRneYM#AYl>WM*!Y@yB=evA;pBCf4_
zfU8dr*#7weYFg>av1G{-8uPIGE65RMiyRj(U4kYd8Q|1B%^-xYDI`Z4$}#id<zPV=
zr62@16_{WPSQ<2xf=EIoQV^{Uyct3i4S6&&1jE@uz%nqQ1WTb7gJCIz7~)*Wu_8G&
zL`(<K6hfjShOf*Pk}Lts;o{vL)@|WAR~DrZ(6)H-;*BK7UtyfXW;vRLc1Jl<MYd4M
zkv3>XN#x)rT6KSJ?=pPhq%1;?5(!d0$UwD#JaF~TgUWsb2>#lwE!|}cxPQW8NLUQX
zP(oXj_Lh;qlNpH$1vT(}-2w-LYrsH+_AeigZ!jLuU?H;wDGU<SK^X{HeG*d03?Y$n
zRP*nL!QB@sx6T0<#HnR31K!k6$cD;3y?7!aOTZN<gbOV>I$0yjq8#hD?vZjxDgKe;
zk;uVcs{}EF<xq^OSI3ULQ|sPHA1?oTL=J`Ev<VR3Zw7QPT)=eA!`Y^36QOa`2oAi;
zz5}2N3PVAu&Lq~GUUiA~8icY4^!gn9^>K`%S?p+N-~Ba6954$qhrWsXvk=mUEP#$#
zQz5Y11n`K!zE0>63}!qIpMFr)pN>z+pn{Isk{En`s^WQcL;(;wfB3os!8dUfL}X6D
zb1(zC8R>}M2PTgOkMMz5%IyPHT4g~+yoQd=Gr_eL3ecK_V3a~=$g!K6RYHXS5;>&h
zI&x66iuxQ`P^~r6MpDTuwd8VmDCAH|!g8pZSwavDrd)7p)f-2_2Vt<ygLx}IhP?-l
z!G%lL;N~qFh`djCG6v_3;m_{Ch0E7q_t!tboaNggId2x-ktvX=zhX%eE7EX=F_nV9
z=gi<g5CXbRfP%@ZVeRHG;m{AoaQW&DxOw|7+?P{sXrE}R4e#f<i&x>xgU8{W4PU^>
zX=|ZVpEsakSRqtt(-&M&_}Z8yh+2rX*|k;u`mqr1Vfm0=FbC$W*b1NT{|?TayA0QF
z+{X90Z9M<?`0*Bgf9?8BxQOTD+oLC79p3fF&wdwD@}`4V#6WOq*#jzgrDAp=0Z5iC
zLP~)`2wZ(Ksl1PJeDODzqge`yp)Ci#rtNab5~3wJq#$xU1T#f0IJC@xCLM>ugn1j_
z*w1G{xv><)?+kx!Y5V5L3FtF=F?DP)lMGPI{MErIN)60DF4%Mn%X}SHez+H|V$eOr
z#^>ln@p+v6x(iaU0$7Ji*@4Ci6rz}F&Qf?r42D<dypMl(4oo+m-htOc#eIIH`B7%)
z<^hg$|9bv1Y}~#Na>p(NkFfqY*w;fyA;kDw%E9Q%(ZfI+NhPloNXwsYyBy2Za!C40
zSP)4SY$I20(;M=}FNf1-FN4^A|DCggCFpk+G1>So+dkt}aPjR=S;V>|Ap-uM`ww;T
z@r`94!JWJJ<o;;vg9h|mvtYe(<0g1V<>7JnHEBMv6x5%<%$Wl{hAv>4#3pAzGbNcx
zO~SAsV(VQvg{KDz5hR%clqUn_NQd=X{^oKxHthygeKPgrAavw-56U;_ENbck{$64(
zhjS}zHiQnu=E@!rn@Wa~2P9_}+OA_D=8jzi&e(scLG631Q@|PS<Ts5O1v~eBr{153
zkV8P*snchnYKtW9T+1qyp`-1JH;UI5ZZwlZh@mfsKD0%49SC+F36wFc%h3|$Xp#0e
zmm@^VAp{XrYTOOd2I|ToR{}15*ODA+Q8;_x9TKZ6En|nlSBFjjZWPcDDTey*MRRP_
zw0F2KQ`2m+qbL&(V%%`@UW4#L*ni}tl;WX9Wz6>HlU@73p>cv}LWxy+e507Qc#}96
zB@x4xwK@F$mvC&WX}ffqN2e4*Er)m7-@IAX4&`Xl6{@yOCrA(hO(N8kLtZc`hh2j>
zOB31@^x?9jNBAHdfh~UcK-7^+Z2d>ir?xzbz@<}BLKOpV*tF{pOV@p-+@D9DIVR71
z3(7X^%oRB|qZp3f+0+*iGFv;(wyg2j%o_U-9D+*j9VqzCWN`J#kl^pCV3W$ZS;~KB
z=CE)O+H$nYFyMn|$e}_l2MM7Crt=)G$8Y=e+do+h2{*B>-+*?>Bf-U|4@qGPiqRJm
zb7zR)ERh_F&C34Cen(9D5L|tiLj4R9gPT(ILh|7I<7Z@3%J!_G{Jm8{Xq&lU1(dGQ
zo|?^SIa(4zj<gcVv1rkv4Sy9mLTRUO+_*tlmE*$2i{KTMDl&(}hsZF>F|7o0tOYyw
zSmT&UPjjRkTzels>s_1s7dC7*3-bAw2f2J%gQs=NY2Q>{-Ms67-fM}VRmgzTD{dOk
zD+Zx*6U{~1e*WbYRB74?T-)UEOaeD-URG++1Nx6$EGkPjWeu^>yr-*IuL}5kx$*0X
zzhODU6Z=6q_c$Shi4^H(2st*`IL@(b*|M!qjU0G)unL}tC=)ppk}zDsIDO_URPl-e
z=jJJRLefmgU@A09hSWTkL!4mU%pv7qK~y-k$b^8TBDit$wzx~$B*r%fkHFM9Z$Y;{
zV<0qXAcQ3kg6zSQVforEaOLVXn==qMuSU)Wdt9p`);?6ls!_|h5jd7|)!OSQiw|5j
zeRtzW&@HD3{9^h*o9Mpa8`BT`V{;)gbtv>3J`LV}Z!3KF<8fXzB(`buR=~^kVkl#f
z7(4;c8OI&o-?q=DtRc?z?tNcFzrso2AKeqY!+Su>h%6>3z8`eW83j{kFNZJo9^m<N
zV*B>ccVO=x4$du7saYlQPFGPGpX1oHE4;J*6O|mw*rILy`t@I8>^nRyQ`W7n=fE8v
zq>@7+2wmLoe)tI-8g}3lA;gfR<7jsh%JI68L!gs6VhrOXz9ff|o*0xFv|d>m2v+a(
zSFT)zoc!@np?(K=xo$L+$81)yX&Su_l7>~6Bxn^q06yDy&?Z4>J8<|1ykn+QfYRCr
zntmbL`x;U(oF#B&D5T_!#O6sD*m)*{1CBsDd1o<>Ewb?Y?wlRVHKdhwY0y5o0H!Zk
z4c{L50a~=@{igRudV?!wQup?GG_Z$3sNV^vZPuc9;N=>D@N%6<o(1jDw3~odV$%FJ
zUd>slVJwQ14gH2qfv>(f47~@v0;Ow)WAnL(1tHRu;Pp?0$#d5LZpt`P$+2_i&Yv*$
zU7wm|vKZtR!SudT$YDhgz7U(X?tlvQ!lB9|l%rhzXp)0a%E4J9D7gsR#GK-F#kh=O
z1jY7(($#Svar#4bzS|n8Zh#l{IAF7+c0f<q{ncTcnrgHq^c)M0_;)n|`t!V`5mQ&0
z{;g)odhLdfSd3~|Sm5;({{1XcgUYkMeZUcqy8>4JT)n&D-M9;{-xhP6TyTm<+vJfr
zvVDWZljl?|2Q|+)+t+9w1C?lL0N;SJkRECb<yjV{T!VOUY#a~v9x<3TQZQR+ib3%}
z;NK-c-;uL1^W6iDc;bCKfByWnGG)rNdRqD%BnUlHQ_6IC?92G`VlC4}JMq=m7jWmy
z)th8cQ@)Wx4vBR+>P3lCu#|+!=BW!amVBs_HDmy1=f6T?P<4xutJuuo8K@54nb0<A
z7<IaJ1>rXG>do{4bW}!VIc6@~B>ql!uyf*!rMSL6j{a6LRYoo<Qhd$(SXHdR^OFmV
zNSsc+CmTzxoG~=B#@F8-hH`bog%su`SRbTShQy@lRGFJf*0MyZq=o$29#?e+Box49
zT<~=J_ATA);p5}e)0z~ap`nj8b1)c4BnUUNa3@KSL<I1As|Ru$e@_dYf@8D!PR}xU
zQ}$ql9Gq5D2TU!Y9ML2OUnqGeGfYRQ<=+#&`>9x04%+s7dBBj>T4pIr!;F+eQW2Y4
zOV)g3lN>+(bP{U%V$ih7L9u$kytlX7Jcn%K)=y~=jb_GD7BIpyVRh(<m`(0PIl4nq
z|EbiGmz`&csT`bHem#2*8U&_M^T{YhhQ!BQ3|GXm4C+iFkaDD;Oey$%H!5OK_Ry7M
z#flZQrsH`_as&qlKM^?ykx9zo;}H@A(L9ikc6<(HY6L*#=G{mP+vSj0%N%%dGDS&P
zzzeEkvtJd}9o?)kaKsdBQ%7Obp*Qta)c6uP5<d)bybDKXPY~~+)wJS*gl}vvW{pg4
zmQ7o{QCkkVzZ}Se#?8lOBK0j$Fq-iyDsl=G%TSfzd#BTR;YouJ?z0?PaC7vXb=#n}
ze|PNfB+`s(ZYHrDEJeCNtH~s=Du%$$qcavTW*R%?R^<?@OYeDjctk#Ra^Qt~30Y4~
zCJi~bGkF7l7Z8~aWokzlnp7=PB;E{3LetMtjwyhf*5H!49CcBSmNLByQRq%L_Kj7R
z0#J2VzlF!(6G0>Nba%|wp{D>l);++hLq1NjyJS=L$Qm>WgFA(#${V*>Uk=$R=OEp&
z`&;Neavr|tK$NUIl*eYHGwy?HYc5FW(<Ylg5~o#c0rs!1>B(XC;m+S<<{LYG1^9Lv
z%p%w|Oaw<9^{$MvRP|;#Y?nbonZgX`X30<$A3xjsEeRsxh~i5LpPS>yj~{b(c6NW7
z<Y<CBwo{5BQ8cIcq81cQhElG6#uJdjNI4`dN1l*FfAn?kk~L7aPNbr4Zb<j`O}k;a
za<}dzM%qpmpT<$#2(ZV%b!wiDbjQ22MJTugR3+lsrhC5rUMYu}h~j--oxTLh;&c}W
zW4oXKMq3QCnF3-vdjV&>e!LF~CM*H}gkco;C`t+o<7%wjRrR&7ZUQB$f;W<yem!v(
z@+s<Y>xm&g2}I1ir7|{F>JGugS*xH!>L{p<?^7NtcojUm(1cQj2zqccN<~G_&JfTk
z4^E#x%i}0&F(ep^_`K7{Q&UqrKS?>B#f#JocV-5DeUpM8%eaI^LGBq-^4Q6<;Kj;5
z;OLcTeiE8X=zEp}r#PhKP8M<qwB@K9sUA>5Xr9jDA5QAY!6*0pg^RFe;|_Rl%N|&V
z7#{cH`UFkrc?4z-Sr*ljaLLLI*mT1_7iJxg&|Elqnx}?qNTKFFVlv~F)>vTG>?ll_
zy%ySaD*_i9FKUYCl==rOg<@(r;?OJ=mcO?haMKe*xgw7`%J}}A$@uFd-~SBrmT!W@
z-V>lk>kMiZ@py&I45p+gpv;qOk@7h6p<Tj2C_Z(X#%-+0!SN^J;hS&1`2Zz}#VS^*
zz`(%ATCMs3PtpUiLlzKX@X5P$`4Z&hjbbqz8g&*YLM;a)<cL?xp+=E8I#5&16drVH
z)V?1SpFU3)QOKbw$U|&=2fk-R$9nnd53%mwftQe0#3s@Fx3_2v#A(A>2{HY=;k!5s
zVb|V+kTGZ)-5@Y~rdpaN&P~qFIj>UC@%WQk4z(CorUwaGc?QJMAAg3CuPp)hz$|Qb
zb;j$hkim927&{zU_s4<Gy<c$?i&`RDS;X|;7W{}G-4pfL<iMc6d*#X%F>Sz-9MpE_
zs?-OYKZa(32~etvAJ)4Q3<uk+i;-kTiXkbv9IG*NL>N2tQVvIK9{I%&K|!x#;69LY
zJV9t%{r)!Y^mE%EJI3Bo`8cKKH<8^+f?6cS8j8=pJOphM3bCo$l?LIAWKy$}apI{O
zJUFV6HPmA0i}C<Y{CpaE7QBvk|9EhsEFxtP7-PZ`UCgL}8N{_&JdB(ACT92x)FQE(
zK?Jn*=+R>~y7BVklH-aH1F<N^iIc_9DJ>UXuy2NU$oAmUEJ=B=YDol~N;^SH|4HJb
z>1~&TrARfB#`W@$<l!_1fp^xYM~+qNw%~b*z|wOzm!Ivux<Th&<M8}lmx4Sz;{9;E
z;3}WbN{zZI=QFV!4TF2ap05r8Zd%PLJ(L4>D9K&UYE$N}q*eoWvRMj=6hR+;jhCv0
zK%>AE_;}Y|x&d2jy>M*OmXVP$ljdGME;+7h$ienrx^x-VZ~6q%awmXG(<Ev)(xarA
zl4K(+3a8Po{iGa-rW|t?t%5RjaBPC5kW|Ex_PFd<=uS$Q2F(*eHmg41LB?vlo|^CG
zJRKx9b2R*1d|GtSwE|yJ*4BQWIFI373sI0RB!yY?(;lmH?g5#w`QtC-zXP~^`ys@T
zh>w3AGv!SvTQ8bQ_<WruU6d%}gJZ_Qvors_PjoKKU-2RQa_S7dzNrjKgd8(aj&hGd
z4(2viUTBB31fl8z58!OywGS%}19;HS$t%%{AYDws=f<KO6GgjG3Sv!;#Uw|VVem*+
zy-<z>h|L;{`|@<jvGkqw202=1Q4@z?LCT{bp26AlKMuvmT~c#UZwx|LAW?=raOit*
zYmtn1aL%k|IG`X-*z_GdW+r!jaT6bnqbG!h96}KMJwApc=FyE$Ax4rmd~?M~r7gSS
ze5=(|dN!7JuS*duAYvmcD{J;+lcS)Zpcjrveu@Iz#}2GQ45cL3xU+ZZ@^6q=G=m1}
zgdkSvf>@Npnjlh++F_zSE6T%o!IL03aR^+!c3sRLdbEPj>*&6gdgbD4GnaCQT*@JF
z#K5IaY;fm1n6qRpm6u5n5v<l$-{~$)62a1E$ZHg!QVa=ooO$A4gMc&`Hhwnj-G2}}
zzc)D;g(w{G`iP>8=m&5dtXaPmW1s_xAp+kDi2|Nb>fNCa?Ad?R7!NmaQmCdBd=B>P
z*>hspuwkppmMt5Na+H27au~N#b?ep*MM>7<j)?ST4Q?Ag!1ias*jbnwBk2Ta3Q|@f
z2V%P%vI53(_{9wr9dbQ6OqaJ>;emnQt-!z2hPJ%nuW^T5c8rw^elobJQwC=P*J*?O
zk<4LujB9Xy(-E%Jhz*ZJZ;7hvTz$G{KR9~EQAt(w(Ns8kb%8Rte=d#VATYK!6iu81
z+dlam&Ye4NXc7E}N9#rK>%ekwP+!7DZr)+tvEUMClNc2m#(;lZ9yT?9#rM3gnJGjE
zeE06%zqD=Jb~MIlOT-R&9{HcgCx_hrm7JWMgF$--16WHCO09f?!jlKmJSZ(eP@ot{
z?mI!sAq5er<aoJudsRu$sYw!ew(AKePyI^4ttp3CyU{$j3p5W&1@HE0l2Ad0nlORJ
z&&BUBFk0f*)tbhEbJMP(?XP?kUlX*>o(4tn_;4JjX=i8?*$ak_n+01jSTFzfo3RAU
zlIX$5c^R{~S8zJtI9P@jf)s%$sdERqqDN;g9#p_PzGpyJNbOSuZ>`=4KOQ?yqEP8p
zR}2ONn6gLKfUziE2Zao3>>G80TCG!Yn*TBWJ5eFE0+->ZOqsF;V=@pa{X}NvTG}!*
zGgBU5qh3o6ky^KY{5g(7M{@htrHSIC2s!F2<d9gDW7a}kXHZKe2c>To<m*E}>Moq3
z?Wg0vK>50%ykf1qN4$VWY9$_o{91mWU<>pSLR8k2Q!MnM=MwmL)Q?K!0Ytlc9dV6D
z7R}V<u_QeG%FJr%6YhDyE;hY@ny!igxo(!>!C8YSmGGF$)Qdt{!l0&iXXu_gmTxHc
zEeoQo9`W;DpS=vPRR~@iOJXDlcu@D1H<kl#N)bpDQ&^0dGiUC=Q1n8cdty`8t!;DX
z&Yhvx2jMh~kL^13!R*nI<gf%+C6fERD&<fk0>QXG`E7W)W{9Qo9|!Kb&7bMXL8V^K
zZh>*V>2J7WuO^j{U(4?m)2@}lt$h50NLf&R7KJlPIId1Scm5(Zb;Nn0M@#VCJ~MX=
zl&&3NeekWB2~F`PV@4N#v~Sdz|G$b`^LW^{V~<i0OI0M^zvZi_7!hQUp-F;892><$
zb?ktDf9xdnd87zx_?V6!J$eB{u!9iesgt8xwQ8;yWS8*7$O@JkZm*7>GzVU)5n_}f
zK?%wcWturO1)*)#dz<i%A4XY6DF>I4i(Xq|^TMfDUtff4O~UbxnWCK9qDCzc|6E_F
z6x(Ichcn6ag=@9`WwAJ4oV|Mt7)vYj#5jXW1_{fcAc+v?n)*(>Jog55z;E8LBnAhu
zkYmN_4e*j%ph^yBuXqsH;q{O0K9VY2)Ev{4gEnlrEW{8j|HKzNX>Ff;^2tUFGHV?s
zf~!00KG=qB*ifuo#aoo4Ox;M7LuL*QxRbm0s{>$PKOA2#0WVk*A>`oBU&pkO*xqIV
z^wx%O{k*<!S3~w_&cUNZC5=8Q%I_u3#iPxr#I<veht%B3mI@fEn+do3^H>fsV?j+*
zMneoiBKBQ6LtVdgTq$^-f>|kr8Fw+Gz4Puy9LV#>zhxoRG>*q?7y(0HU4S>zds<?U
zh_n*$ww;|FO*VY?sgT3T$?2I%lO{bgXU?2wu&u{Tn>Ov4BS((pW7A2i^TbV;0|$>_
zFo$CL?8GO7@sf}nUHft7&{&Vo@KpFq7cYT_UlLSo7>gG*$p{O=!c_B4hJ#0cqE5MP
zb%(aKA8e<kog|1D#s8yV@FZftr;7|`HPlSO=Sb<)u%uRHErSJ&!LKYZlS7^-_0*2k
zKEts|B;~-VJt{$5nj|SmR3XM7T6XA5<$B5<3MtfbEMC4A<p@y7(Mf=P(N5f-n(^j)
zD6*y;e7*37T#O;vKuGY!<#2Ozd&bk#^BG)VA`qWU5{4afEjhSib>iof;M}l1j(V~j
zO1M7~nKq2tn_3H9OtS|yhcI2YgGwH8v~HQDaKN^!y=NzsEec+rzuJ~rzFd8w?fp%=
zz%!^jeV72XuX%h%+*KutfNDyCmPpU14lj=<Gz#ej_58b2VL$}4>Tg^z=&O2n;~=l(
znPBqVE?Q7<@_W?w&49z-|4jV}t#d`k%!6maF<H3&C6Zo)kE>?uRIVVFcaNo!XbjLq
zD^etwQ4z%`UAqI!S+;@RTSE+n`z1x=r$Z@}gQY+blsGnu;~UdE>psF}*e$Ks<LcY$
z)vNboNLG0&<oNf$|84EfSq^-p9k(V3U!2pY&p<=p&UkX8<%yAUa0c*>$iY;7j;bq^
zKJ_m;&Yv1FaXxrpKv!)+!9^E61%opi@3=|OCZ<0<Us?9l%pfO=&%p4B3&ATSn?$49
zKL&ja22mVNgkvZ;Nd#(pbN{ABD=Y&?_J>}DZ@|h8JK+M3vCLWeuAzKsCKd-jf22@u
z(HuB%<R^G#`f_L+pO2y>Q&9q6m$FwUsD#*icE){3phrAEoiLbV`F-0Z4WX&(loj;`
z=2-mWCr*M(!%)MG17EjQWIy=&;196q?M)DyISOjwIkUs}H5_X+RB(@>>p?didZh2E
zPsp9|df1$ry>vajE;Xk#1Nka)53_t^Vh;A{+F6&w6Xn41jWruShI@BZa?nTq2w0AV
z3m4MoR@p!8pIgOpDDEB><v8=}uh7W9GnB6%NoiCG-#r{WV`(y+sDkJTLK0C1;i}D^
z{fA-Ko^Rn>3^*D995CW_c&TbIEL^@pYciv9(2S>@(02a9CD^v}E114uE#!}xi<9^!
zKpf74>XbDGatf!zknsy(#^U#311_ri=FpG)Y35?XpyiuE{We`Vuw}E4@60@z?(;7X
zi|6vO?EB^@ELypl-zz4g2wHXQ4^7(V@YIs#5q%&uc_`$LoP%pmcJT*R^EwA@F&Nrr
zFI-Lw&gi`<TZm!>4YF~w=euJ+!|Dw?plHexNa{6~m-IFX>jmzC-Jx+vHh-U*I}xU1
zv**Mwyv9N=V=%Y5Iei!$>j&aZv7_NSH;$7uBKW$av@8ei&n=QbNTG!LiC87&j|2S+
z%E4Ha!_yb#sMmo`h`>}3zSB;extyw7TB{5NrhO2)VElI?xL2&%2&G*7Fu1zYCymqZ
z72_qEP_{7*b}IXd$&B<pgPWWSr6{G+*0*pHwevY!2stV=q&t5Bt>Y%SWv5xZF3$%u
zWU`Bwe#1FW=SV#MUL501Lxo5W8d>M_-y#@G<+ZS~ht19^Sh(2t^>=1BpgXtu{dq>i
z9m78Hbd8@*6yvn|OZfdQK0f}~97F$72M%n0&HND);6>+F*p#y%h9`l|IuxUldo-+G
zza8%0z9~eoD#yHe^H`3*!oOM;awyT4L&7J_4zo&7=K<8o69HhmBobbL^u?b2^oe`i
zKF-XWKo^PvOgZ9iD=Z*$htV2Wkmcreo1k2sFlxJ_AdK<Oy;NsBhaq{W6e>E~Ix?uC
zZO)r3;6;~K+;pvkO~9b|e7q*tM3qThf;YXX(d*E2EC;_9oHY&}Is#601L#BYj6%dp
zJej|%9E?Jacp-;1c#_)kHJe5Du!e>p;u98+L5=3o*k+F5j_CO59FS6wl1n0m(1$b3
z4?q3{RlTC9Kp;A}JgIK`r(e_Y**G1Xr6?(!g}ym(2&yy)!sCyiVg>gZ2929b%_$Ut
z1W;j1M$m)b|H^Ndp?zF;T=dq4S_LeD<R3W%3OOR=-9tqjcK$j-qo8zJJVhl)y&$k!
z>OFt{0`_qd`Sl#Id|c5z5?-J8HZ_6hb=87Av=HjoyN<`*tX((k#K%yjhb8d{%EV6p
zue1*uQs@bxFUGN-jzc5g7#e&NBhb7bZ@;&Vs!V^D7<8>U<7DIv;e~Gwo-xKu5n~OM
zBO2xC2&>-z2<5o-H<RPKQ4T*nIT&8V6qb~Se{+`l5Viz_st<DE!bNVz+0~1riU@c5
z%Hr$xD|}5%-m@0?+EUmKcP`^I2Jy!dan`^}P-vF|+*hu)J(?^b;T4&*?cVbhc(jh9
zrOMRLpn+FD{>u2c`>TW4uehm{;-SU3VyH~fr-4A%9(nLWrKZ@)juK-0BZoDvo5>N5
zCoG206y#-`j@}lhPJeyiFy0Bd!)vP~+*X%zbO2|}90+A5{z%fcF*&e#`=@jV6`!PG
zY4EIs&}+yJwpi1h(Psp_R6T_5-du1<?au?9+*yA3EWwD+Bj%>klo<=5Qf)sdRW*S7
z8BQkS2sK+JV<qnjNlVX_V(6nK1)sk=$i__{ftOzlyx@QtLyGZ_9NKbR!|{tVhGtdW
zaGjGS1))2=t5-CPo;(Me2`9M1!qd=crm2NRIJf2hte|W~?`M=F&J=2c^SrG1jKQ!4
zB@s;#gtCqZc0Ex<c2QQhC{Vb+F>~HBsOud?9a5_C^B7O7$lkE&qg}MlL9Ua)<B|iP
zdh#R2m3Cr1$wj;oEPZ<|_=I+W7oA#Ab~Y1(<?xKbYFRu?!=~l&<0rU7e&1M~y8eID
zKlG$v8R&WR{`B|US>N{YF6fexht<IrG}tF^ex4?H5LV=97$xPn^N$=hQ?Y(Wyz>S_
z^=8qK-nR%AEq@n2-}5Doxc@?x6}qqly$=m`ab11W)=yx>xYxnHUNGM=9fcSY`Wa^@
zyE>uZ6P^J@ug*eIKBMsos<e<~6nrd<a$}KrAr(&t=fFC6_$aJi_aVN{3<!?S1Sj_(
zDq-^Rx_HrGR~$c9#2~Q4De@kE36PUNj*n;G{%`5RbHLr@u@=?8Fs5o7{hWT!&nqrI
z1sgYShe0DJf;$TMqDxEcUj$+QDpp9L%*G@LPaSt_+7aT?2EvqCi!rc2g<pOt=5u+2
z%eq{)r6v*uKS5v9&q*l0mgml$gB?4+fXUP5gMWB8DDB!3-`|IqB{*wli@&EFwBwIl
z4oR#*61QM%F8G5}!!W3U7uda33^edDP!9vd%?sC*<4ABBH$MtY`hRqmsv~BSIC#Y3
zK6StW!$7D|Cj@F^h07-_6;gT)gTX~pVD!XUFk{|Z@a9`<;LT-gVB)j|EI|J7iICE>
z00L2jx-Fu>r9lV|wE5us`p{H*l7NIjSPWBWA26FllJtD1b@7aVhInqmI_E%-{zWis
z+%y=4??LaoaOrB8zhothoje<cj-3kK`woY;k?G*pI1EZxZO!jjwsw0w4mvK4s*ngo
z;|=HK8nnOuP^lgsbBk#3jYxy8*#$T*F%gF2`%j#{0Ol@wo0%|mE({$rl|PFtBB3Xq
z>yA*NrXOZ0Z|?9{YS2-YDM~I!B$mFnDdc!EgMcO4uxX)1m`;a{<v4{MHIFtFh+%j_
zqO1_3g}4B8m!VZ^)I37Mjqu7fyzr5jEuuv&UC5;=i4-M<|Gr$E2wZ>Aj)dV(Z7COD
z3<MtnzivZ6qrl=jb(vbBcuWzrPxP81OV|p(Z>5IOT;eW^nT&4$t^tboZN*>n&#DHH
zeDt0)<wEqO{>Tl7u@~=MCyb_e;OmR`Zo}`(IJd%|`Qq>VXk7-4-3TFUm%<~;8Yo9c
zJog=OrQ;sBee;Hh8)|wgQONPcHz^0L%T<B{M-h5*P-eM!@d8bL!(a*_5wrw(4Csj>
zacSJi5+s57a~qc!Ti=re5KTdeCnB@LBf`8$;w&Kv6f#6v#-rreqi9vU;^6SnW7NEp
zGN_?(Dj`RCjzN7M{igGV&kD|-J?pPm=KBqyc5ClJ<9LpbgJ(2VGc;gHo+K0ykBK<t
z&z|tHYXrZB4EVK9cCZR(Oy7>Z@dkQ{n&EnKP@m&NjJ=A;zeF4=dE~-qiXi!y3D4oj
zz&Akw?&=7_9l8yhwnLff0Z@t4s4hAJML$Af%<;5=l1ubwNkBIn+wssNs$?`2bo`@m
zQ*!LoCD{4DLjq{QvvP+IAHLj}IsTVoP=Sn3n}jL37-|{hoBywo=Lt-4j<_<bSg&a%
z1_QfcN4HdEf3UY*kjH?QF#0$m&YrRK_=vGSE>Lo!Y^38K;Niq*64D(fSf15uQZcl4
zsCDbs<BXp+@^2&mj}S2_VpJ)NhA6g)p&`Wcawm9)UO-+Xwrtt5mTLVv*@NXcb?P)E
zWe?*@P3f8;JO*I<MTmL=L_a2?#N%V&i3&lLDXy@+R4oWvgk{721K;!D-$iXPcw%I6
zaq;aJUU;DkeNePfke85BA{HqwmBMI<qAiFrTWCljWGH3aq0+`3EQ6mimrUvI;>C+}
z5PEZOcwFM`_qIS(>R@nd-U+ivq$xJZ@z)n6>S^F{Ng=OqgGg}ljN<=iK6UO&T8l%|
zSul1q#h}>Ytbxn4_ZdHqr#xbZltaoQWvmGEf`%lDETWS!G^LP2lts!Jcd!EDg6n#}
zz%rXS7`-MI-6^=H{qfG-I4DJ<$l*#!Bx-s7B%=NXh-2k|ecW&}YRr_yJez?>*sop@
zH&rcocEE)T7w$PaIu>BORY#l<2gDw!XpF=1LKY#4mLz%^L|+V%DWnv3#+|5W+%ZSQ
zse1M5p}*lqQychz^d+GT!c!TlHwowQ4?cmm3-S-P^JJxv@YvC!cQ)XN|6L)4F5*Mn
z{(pOC)7nH3hjENSD;~5j#J(ikCNWK7lc2F;A=oGi+J-cw(e%*9my`6|FW{voKY^&|
zp%)JdsUV6_#Y4n<52DEz5IhO$LDZ+y8UDje*feffOFDrcfu5S~^Xv29o!QOO($X_z
zEdzpJ3|PR=MHwPdc&l(ps7YE1(pnBXF%&6AKmd$_U@DcmjnIF?<+dHm@$u7Vw%SW_
zw9P-xzDA0+NjQedaeu9f*7!jJ*f$0nr<RwOUm;@!kN{B-0bwr6D9_=DEQ!4!_HyXw
z8q^v+tcr9o27s@L7$I;Rj9Zpf+1S|F#0O#@j3j9xM~ungL=Z!B{<{#w9Fyb0+ImYl
z#FIv_1^#ETSbU0XmB2|Z#|aPv<2-kvCW83DfGP;jbq}?Ne(uq>9Lgv)%<IhJ=7zb+
zG5(8Z@Er*c>-G9q{%`~NNfo*rr)K~3MQ3m@<~m5h037`d6ZGzkym)6@W17h!c2Zz0
zXCoAH@*5}Lo4vigtH{$VIL+lqfe8|X8blehXvA_LM@O4O5+vdEdW-pd{$90O-E1@(
z-*LH@RiyM{-{u;dnrEBga3Bm_j6c17Kh2Z%w{irS3>d|?cKiOS)oNc>R#x5x0)e~8
z&;rQFVz|*99Y5z#8YBwhLJ~0T@pvkelas5tT<&qXTz<Z|xcIVCsl1slmEP|^*!Ozt
zKZ;>*kUo=nar4IY8Zz(!)Cz^ddN!MV)ZgEK2U)oVu7D|!ZX!k8g>#P1U9D2atT9a#
zYLg^53#P$EkONo23^>Pso(1PQ7Ytp;G`Iw=fdzj2FM}+Yl4M9K;}Z$t;?*kW>l`G?
zAQ+Y!#S*O|jb0Hkeo?zHCO`rtB~pg2BPo#}0T^*<T#AU1Noog6G=vN59GzJqmt^Tv
zgz*V!q%q8|hyz61FhZQLp=$|of>H~NDgyY$m?TNy6C${<Lf(nJRk|>$G`ct>4++F2
zB8CiI%b>(D3O<Ej6+o51g}qhIcIB$VkTi-oBo7maAdwV~8oHh%gc5iGW#+IZ0B~Vf
zuCx0&2ogsTNR^0W(m7<<bM$EFSvf#ZzFfGU!^xe1x;Qp?30*3~p2us0O|IO#6R@=~
q&hZ!wJH&b3cHwKE!C=F#4*g#XgGHUxWL<gy0000<MNUMnLSTXrRymsh

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/img/responsive-illustrations.png b/src/main/webapp/bower_components/bootstrap/docs/assets/img/responsive-illustrations.png
deleted file mode 100644
index a4bcbe302cc2605b63ab913d9adfc88f40b01383..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1008
zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Cvq?YNxz2D2q5)5z$e7@|Ns9p2RC@|;K9$I
zKNl@p1a#`DQ>X6TySHoCuD5UBZr{HB;lqb7Uc8t;fBv>@+jj2U`Rv)VjT<-4o;`cV
zjvbF4J$mxw$)7)eo<DyM^q)cJo+&^to0SCl1v4<bm0rE>`I8k|AO6^Xwy99}{u!9C
z@yy`^mqg|2@^8mZGuVEW`QDs|CspPz<v-TKX8dZGpW+tJsjcM<3`|X)E{-7;x8B~0
z%)jg)()O_D?Hb=(6I!O_z4^UwIzz7W=}T?z|NobB5fBnzapnlSb@KlASMNk@lZ$jO
zE|k)HyG7Lht>3Gd#cSF+A8Eau);?8p+pMRFUqzyuKWz|+PjGE9?N#1zfQeg&5TV6%
z`fs~d&(yM8%c_e)k4dRrt1c2fb}A)i^Pvb^N%Iv3(`>Bmr>7^pe8Z!o{vK>%7<=|C
zYeMD{VKthPE;j9D2bi?O)^M*jx%PZ<xzVcHo$<MAz8mE(J{2LKa{E?Q>&AUA`t6?1
zPVHV7BJp~)Y1sN*5$v0e2}L9{vWkI-Yx_5*9Z&fA<@H784K*9T{C%6hW?oWuz`ZkB
zTA<)56+RkziT9w@%(Ln0Y0USQMtXm|aw<r?p>&Hy-4>}2=N9??EITRrq`!2Bg<Mo3
z>+^q?!tB<#CH#x{e6(<1P{iz`Nk{*t=bqkPxG~~BPueuoYoR~O)<)>eJ-2LgaI^PH
z#W1D&-*h){?N6VXwD#ooy|<Fzp4k0*S%lnLnQOe2<(t1nBv+QN{uUwqDX(PryNH>8
zq_4@o?)x+QicEGm<6YAuuUtE}u5WlJnPjSbWY_u$zse%+s#vXI=X$kJcAEF*u#|{?
zkt-S3d0szqyB5*>Xa0_L2dok!yuI^g=Kp(otZL8N3u;Fbde4@7eNK976ZvTEWTy>x
zf?wx8jfprv@BQ8jMtf_%?qblnUVnK~;M)1sAM6>{i!&8`)bFSQre_9ES3j3^P6<r_
D##;ot

diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/README.md b/src/main/webapp/bower_components/bootstrap/docs/assets/js/README.md
deleted file mode 100644
index 66903c71..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-## 2.0 BOOTSTRAP JS PHILOSOPHY
-These are the high-level design rules which guide the development of Bootstrap's plugin apis.
-
----
-
-### DATA-ATTRIBUTE API
-
-We believe you should be able to use all plugins provided by Bootstrap purely through the markup API without writing a single line of javascript.
-
-We acknowledge that this isn't always the most performant and sometimes it may be desirable to turn this functionality off altogether. Therefore, as of 2.0 we provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:
-
-    $('body').off('.data-api')
-
-To target a specific plugin, just include the plugins name as a namespace along with the data-api namespace like this:
-
-    $('body').off('.alert.data-api')
-
----
-
-### PROGRAMMATIC API
-
-We also believe you should be able to use all plugins provided by Bootstrap purely through the JS API.
-
-All public APIs should be single, chainable methods, and return the collection acted upon.
-
-    $(".btn.danger").button("toggle").addClass("fat")
-
-All methods should accept an optional options object, a string which targets a particular method, or null which initiates the default behavior:
-
-    $("#myModal").modal() // initialized with defaults
-    $("#myModal").modal({ keyboard: false }) // initialized with now keyboard
-    $("#myModal").modal('show') // initializes and invokes show immediately afterqwe2
-
----
-
-### OPTIONS
-
-Options should be sparse and add universal value. We should pick the right defaults.
-
-All plugins should have a default object which can be modified to effect all instance's default options. The defaults object should be available via `$.fn.plugin.defaults`.
-
-    $.fn.modal.defaults = { … }
-
-An options definition should take the following form:
-
-    *noun*: *adjective* - describes or modifies a quality of an instance
-
-examples:
-
-    backdrop: true
-    keyboard: false
-    placement: 'top'
-
----
-
-### EVENTS
-
-All events should have an infinitive and past participle form. The infinitive is fired just before an action takes place, the past participle on completion of the action.
-
-    show | shown
-    hide | hidden
-
----
-
-### CONSTRUCTORS
-
-Each plugin should expose it's raw constructor on a `Constructor` property -- accessed in the following way:
-
-
-    $.fn.popover.Constructor
-
----
-
-### DATA ACCESSOR
-
-Each plugin stores a copy of the invoked class on an object. This class instance can be accessed directly through jQuery's data API like this:
-
-    $('[rel=popover]').data('popover') instanceof $.fn.popover.Constructor
-
----
-
-### DATA ATTRIBUTES
-
-Data attributes should take the following form:
-
-- data-{{verb}}={{plugin}} - defines main interaction
-- data-target || href^=# - defined on "control" element (if element controls an element other than self)
-- data-{{noun}} - defines class instance options
-
-examples:
-
-    // control other targets
-    data-toggle="modal" data-target="#foo"
-    data-toggle="collapse" data-target="#foo" data-parent="#bar"
-
-    // defined on element they control
-    data-spy="scroll"
-
-    data-dismiss="modal"
-    data-dismiss="alert"
-
-    data-toggle="dropdown"
-
-    data-toggle="button"
-    data-toggle="buttons-checkbox"
-    data-toggle="buttons-radio"
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/application.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/application.js
deleted file mode 100644
index f880bc05..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/application.js
+++ /dev/null
@@ -1,156 +0,0 @@
-// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
-// IT'S ALL JUST JUNK FOR OUR DOCS!
-// ++++++++++++++++++++++++++++++++++++++++++
-
-!function ($) {
-
-  $(function(){
-
-    var $window = $(window)
-
-    // Disable certain links in docs
-    $('section [href^=#]').click(function (e) {
-      e.preventDefault()
-    })
-
-    // side bar
-    setTimeout(function () {
-      $('.bs-docs-sidenav').affix({
-        offset: {
-          top: function () { return $window.width() <= 980 ? 290 : 210 }
-        , bottom: 270
-        }
-      })
-    }, 100)
-
-    // make code pretty
-    window.prettyPrint && prettyPrint()
-
-    // add-ons
-    $('.add-on :checkbox').on('click', function () {
-      var $this = $(this)
-        , method = $this.attr('checked') ? 'addClass' : 'removeClass'
-      $(this).parents('.add-on')[method]('active')
-    })
-
-    // add tipsies to grid for scaffolding
-    if ($('#gridSystem').length) {
-      $('#gridSystem').tooltip({
-          selector: '.show-grid > [class*="span"]'
-        , title: function () { return $(this).width() + 'px' }
-      })
-    }
-
-    // tooltip demo
-    $('.tooltip-demo').tooltip({
-      selector: "a[data-toggle=tooltip]"
-    })
-
-    $('.tooltip-test').tooltip()
-    $('.popover-test').popover()
-
-    // popover demo
-    $("a[data-toggle=popover]")
-      .popover()
-      .click(function(e) {
-        e.preventDefault()
-      })
-
-    // button state demo
-    $('#fat-btn')
-      .click(function () {
-        var btn = $(this)
-        btn.button('loading')
-        setTimeout(function () {
-          btn.button('reset')
-        }, 3000)
-      })
-
-    // carousel demo
-    $('#myCarousel').carousel()
-
-    // javascript build logic
-    var inputsComponent = $("#components.download input")
-      , inputsPlugin = $("#plugins.download input")
-      , inputsVariables = $("#variables.download input")
-
-    // toggle all plugin checkboxes
-    $('#components.download .toggle-all').on('click', function (e) {
-      e.preventDefault()
-      inputsComponent.attr('checked', !inputsComponent.is(':checked'))
-    })
-
-    $('#plugins.download .toggle-all').on('click', function (e) {
-      e.preventDefault()
-      inputsPlugin.attr('checked', !inputsPlugin.is(':checked'))
-    })
-
-    $('#variables.download .toggle-all').on('click', function (e) {
-      e.preventDefault()
-      inputsVariables.val('')
-    })
-
-    // request built javascript
-    $('.download-btn .btn').on('click', function () {
-
-      var css = $("#components.download input:checked")
-            .map(function () { return this.value })
-            .toArray()
-        , js = $("#plugins.download input:checked")
-            .map(function () { return this.value })
-            .toArray()
-        , vars = {}
-        , img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png']
-
-    $("#variables.download input")
-      .each(function () {
-        $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
-      })
-
-      $.ajax({
-        type: 'POST'
-      , url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com'
-      , dataType: 'jsonpi'
-      , params: {
-          js: js
-        , css: css
-        , vars: vars
-        , img: img
-      }
-      })
-    })
-  })
-
-// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
-$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
-  var url = opts.url;
-
-  return {
-    send: function(_, completeCallback) {
-      var name = 'jQuery_iframe_' + jQuery.now()
-        , iframe, form
-
-      iframe = $('<iframe>')
-        .attr('name', name)
-        .appendTo('head')
-
-      form = $('<form>')
-        .attr('method', opts.type) // GET or POST
-        .attr('action', url)
-        .attr('target', name)
-
-      $.each(opts.params, function(k, v) {
-
-        $('<input>')
-          .attr('type', 'hidden')
-          .attr('name', k)
-          .attr('value', typeof v == 'string' ? v : JSON.stringify(v))
-          .appendTo(form)
-      })
-
-      form.appendTo('body').submit()
-    }
-  }
-})
-
-}(window.jQuery)
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-affix.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-affix.js
deleted file mode 100644
index 7595fdb0..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-affix.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ==========================================================
- * bootstrap-affix.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#affix
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* AFFIX CLASS DEFINITION
-  * ====================== */
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, $.fn.affix.defaults, options)
-    this.$window = $(window)
-      .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.affix.data-api',  $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
-    this.$element = $(element)
-    this.checkPosition()
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-      , scrollTop = this.$window.scrollTop()
-      , position = this.$element.offset()
-      , offset = this.options.offset
-      , offsetBottom = offset.bottom
-      , offsetTop = offset.top
-      , reset = 'affix affix-top affix-bottom'
-      , affix
-
-    if (typeof offset != 'object') offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function') offsetTop = offset.top()
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
-    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
-      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
-      'bottom' : offsetTop != null && scrollTop <= offsetTop ?
-      'top'    : false
-
-    if (this.affixed === affix) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
-    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
-  }
-
-
- /* AFFIX PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.affix
-
-  $.fn.affix = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('affix')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.affix.Constructor = Affix
-
-  $.fn.affix.defaults = {
-    offset: 0
-  }
-
-
- /* AFFIX NO CONFLICT
-  * ================= */
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
- /* AFFIX DATA-API
-  * ============== */
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-        , data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      data.offsetBottom && (data.offset.bottom = data.offsetBottom)
-      data.offsetTop && (data.offset.top = data.offsetTop)
-
-      $spy.affix(data)
-    })
-  })
-
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-alert.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-alert.js
deleted file mode 100644
index b5627984..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-alert.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/* ==========================================================
- * bootstrap-alert.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#alerts
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* ALERT CLASS DEFINITION
-  * ====================== */
-
-  var dismiss = '[data-dismiss="alert"]'
-    , Alert = function (el) {
-        $(el).on('click', dismiss, this.close)
-      }
-
-  Alert.prototype.close = function (e) {
-    var $this = $(this)
-      , selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = $(selector)
-
-    e && e.preventDefault()
-
-    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
-
-    $parent.trigger(e = $.Event('close'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      $parent
-        .trigger('closed')
-        .remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent.on($.support.transition.end, removeElement) :
-      removeElement()
-  }
-
-
- /* ALERT PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.alert
-
-  $.fn.alert = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('alert')
-      if (!data) $this.data('alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.alert.Constructor = Alert
-
-
- /* ALERT NO CONFLICT
-  * ================= */
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
- /* ALERT DATA-API
-  * ============== */
-
-  $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-button.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-button.js
deleted file mode 100644
index 045927b6..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-button.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/* ============================================================
- * bootstrap-button.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#buttons
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* BUTTON PUBLIC CLASS DEFINITION
-  * ============================== */
-
-  var Button = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.button.defaults, options)
-  }
-
-  Button.prototype.setState = function (state) {
-    var d = 'disabled'
-      , $el = this.$element
-      , data = $el.data()
-      , val = $el.is('input') ? 'val' : 'html'
-
-    state = state + 'Text'
-    data.resetText || $el.data('resetText', $el[val]())
-
-    $el[val](data[state] || this.options[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d)
-    }, 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
-
-    $parent && $parent
-      .find('.active')
-      .removeClass('active')
-
-    this.$element.toggleClass('active')
-  }
-
-
- /* BUTTON PLUGIN DEFINITION
-  * ======================== */
-
-  var old = $.fn.button
-
-  $.fn.button = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('button')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('button', (data = new Button(this, options)))
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  $.fn.button.defaults = {
-    loadingText: 'loading...'
-  }
-
-  $.fn.button.Constructor = Button
-
-
- /* BUTTON NO CONFLICT
-  * ================== */
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
- /* BUTTON DATA-API
-  * =============== */
-
-  $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    $btn.button('toggle')
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-carousel.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-carousel.js
deleted file mode 100644
index 60455201..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-carousel.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/* ==========================================================
- * bootstrap-carousel.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#carousel
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* CAROUSEL CLASS DEFINITION
-  * ========================= */
-
-  var Carousel = function (element, options) {
-    this.$element = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options = options
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter', $.proxy(this.pause, this))
-      .on('mouseleave', $.proxy(this.cycle, this))
-  }
-
-  Carousel.prototype = {
-
-    cycle: function (e) {
-      if (!e) this.paused = false
-      if (this.interval) clearInterval(this.interval);
-      this.options.interval
-        && !this.paused
-        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-      return this
-    }
-
-  , getActiveIndex: function () {
-      this.$active = this.$element.find('.item.active')
-      this.$items = this.$active.parent().children()
-      return this.$items.index(this.$active)
-    }
-
-  , to: function (pos) {
-      var activeIndex = this.getActiveIndex()
-        , that = this
-
-      if (pos > (this.$items.length - 1) || pos < 0) return
-
-      if (this.sliding) {
-        return this.$element.one('slid', function () {
-          that.to(pos)
-        })
-      }
-
-      if (activeIndex == pos) {
-        return this.pause().cycle()
-      }
-
-      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-    }
-
-  , pause: function (e) {
-      if (!e) this.paused = true
-      if (this.$element.find('.next, .prev').length && $.support.transition.end) {
-        this.$element.trigger($.support.transition.end)
-        this.cycle()
-      }
-      clearInterval(this.interval)
-      this.interval = null
-      return this
-    }
-
-  , next: function () {
-      if (this.sliding) return
-      return this.slide('next')
-    }
-
-  , prev: function () {
-      if (this.sliding) return
-      return this.slide('prev')
-    }
-
-  , slide: function (type, next) {
-      var $active = this.$element.find('.item.active')
-        , $next = next || $active[type]()
-        , isCycling = this.interval
-        , direction = type == 'next' ? 'left' : 'right'
-        , fallback  = type == 'next' ? 'first' : 'last'
-        , that = this
-        , e
-
-      this.sliding = true
-
-      isCycling && this.pause()
-
-      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
-
-      e = $.Event('slide', {
-        relatedTarget: $next[0]
-      , direction: direction
-      })
-
-      if ($next.hasClass('active')) return
-
-      if (this.$indicators.length) {
-        this.$indicators.find('.active').removeClass('active')
-        this.$element.one('slid', function () {
-          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
-          $nextIndicator && $nextIndicator.addClass('active')
-        })
-      }
-
-      if ($.support.transition && this.$element.hasClass('slide')) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $next.addClass(type)
-        $next[0].offsetWidth // force reflow
-        $active.addClass(direction)
-        $next.addClass(direction)
-        this.$element.one($.support.transition.end, function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
-        })
-      } else {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $active.removeClass('active')
-        $next.addClass('active')
-        this.sliding = false
-        this.$element.trigger('slid')
-      }
-
-      isCycling && this.cycle()
-
-      return this
-    }
-
-  }
-
-
- /* CAROUSEL PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.carousel
-
-  $.fn.carousel = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('carousel')
-        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
-        , action = typeof option == 'string' ? option : options.slide
-      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  $.fn.carousel.defaults = {
-    interval: 5000
-  , pause: 'hover'
-  }
-
-  $.fn.carousel.Constructor = Carousel
-
-
- /* CAROUSEL NO CONFLICT
-  * ==================== */
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
- /* CAROUSEL DATA-API
-  * ================= */
-
-  $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var $this = $(this), href
-      , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      , options = $.extend({}, $target.data(), $this.data())
-      , slideIndex
-
-    $target.carousel(options)
-
-    if (slideIndex = $this.attr('data-slide-to')) {
-      $target.data('carousel').pause().to(slideIndex).cycle()
-    }
-
-    e.preventDefault()
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-collapse.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-collapse.js
deleted file mode 100644
index 7bbad8e4..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-collapse.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/* =============================================================
- * bootstrap-collapse.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#collapse
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* COLLAPSE PUBLIC CLASS DEFINITION
-  * ================================ */
-
-  var Collapse = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.collapse.defaults, options)
-
-    if (this.options.parent) {
-      this.$parent = $(this.options.parent)
-    }
-
-    this.options.toggle && this.toggle()
-  }
-
-  Collapse.prototype = {
-
-    constructor: Collapse
-
-  , dimension: function () {
-      var hasWidth = this.$element.hasClass('width')
-      return hasWidth ? 'width' : 'height'
-    }
-
-  , show: function () {
-      var dimension
-        , scroll
-        , actives
-        , hasData
-
-      if (this.transitioning || this.$element.hasClass('in')) return
-
-      dimension = this.dimension()
-      scroll = $.camelCase(['scroll', dimension].join('-'))
-      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
-
-      if (actives && actives.length) {
-        hasData = actives.data('collapse')
-        if (hasData && hasData.transitioning) return
-        actives.collapse('hide')
-        hasData || actives.data('collapse', null)
-      }
-
-      this.$element[dimension](0)
-      this.transition('addClass', $.Event('show'), 'shown')
-      $.support.transition && this.$element[dimension](this.$element[0][scroll])
-    }
-
-  , hide: function () {
-      var dimension
-      if (this.transitioning || !this.$element.hasClass('in')) return
-      dimension = this.dimension()
-      this.reset(this.$element[dimension]())
-      this.transition('removeClass', $.Event('hide'), 'hidden')
-      this.$element[dimension](0)
-    }
-
-  , reset: function (size) {
-      var dimension = this.dimension()
-
-      this.$element
-        .removeClass('collapse')
-        [dimension](size || 'auto')
-        [0].offsetWidth
-
-      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
-
-      return this
-    }
-
-  , transition: function (method, startEvent, completeEvent) {
-      var that = this
-        , complete = function () {
-            if (startEvent.type == 'show') that.reset()
-            that.transitioning = 0
-            that.$element.trigger(completeEvent)
-          }
-
-      this.$element.trigger(startEvent)
-
-      if (startEvent.isDefaultPrevented()) return
-
-      this.transitioning = 1
-
-      this.$element[method]('in')
-
-      $.support.transition && this.$element.hasClass('collapse') ?
-        this.$element.one($.support.transition.end, complete) :
-        complete()
-    }
-
-  , toggle: function () {
-      this[this.$element.hasClass('in') ? 'hide' : 'show']()
-    }
-
-  }
-
-
- /* COLLAPSE PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.collapse
-
-  $.fn.collapse = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('collapse')
-        , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.collapse.defaults = {
-    toggle: true
-  }
-
-  $.fn.collapse.Constructor = Collapse
-
-
- /* COLLAPSE NO CONFLICT
-  * ==================== */
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
- /* COLLAPSE DATA-API
-  * ================= */
-
-  $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
-    var $this = $(this), href
-      , target = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
-      , option = $(target).data('collapse') ? 'toggle' : $this.data()
-    $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    $(target).collapse(option)
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-dropdown.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-dropdown.js
deleted file mode 100644
index ec86cf0d..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-dropdown.js
+++ /dev/null
@@ -1,165 +0,0 @@
-/* ============================================================
- * bootstrap-dropdown.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* DROPDOWN CLASS DEFINITION
-  * ========================= */
-
-  var toggle = '[data-toggle=dropdown]'
-    , Dropdown = function (element) {
-        var $el = $(element).on('click.dropdown.data-api', this.toggle)
-        $('html').on('click.dropdown.data-api', function () {
-          $el.parent().removeClass('open')
-        })
-      }
-
-  Dropdown.prototype = {
-
-    constructor: Dropdown
-
-  , toggle: function (e) {
-      var $this = $(this)
-        , $parent
-        , isActive
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      clearMenus()
-
-      if (!isActive) {
-        $parent.toggleClass('open')
-      }
-
-      $this.focus()
-
-      return false
-    }
-
-  , keydown: function (e) {
-      var $this
-        , $items
-        , $active
-        , $parent
-        , isActive
-        , index
-
-      if (!/(38|40|27)/.test(e.keyCode)) return
-
-      $this = $(this)
-
-      e.preventDefault()
-      e.stopPropagation()
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      if (!isActive || (isActive && e.keyCode == 27)) {
-        if (e.which == 27) $parent.find(toggle).focus()
-        return $this.click()
-      }
-
-      $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
-      if (!$items.length) return
-
-      index = $items.index($items.filter(':focus'))
-
-      if (e.keyCode == 38 && index > 0) index--                                        // up
-      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-      if (!~index) index = 0
-
-      $items
-        .eq(index)
-        .focus()
-    }
-
-  }
-
-  function clearMenus() {
-    $(toggle).each(function () {
-      getParent($(this)).removeClass('open')
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = selector && $(selector)
-
-    if (!$parent || !$parent.length) $parent = $this.parent()
-
-    return $parent
-  }
-
-
-  /* DROPDOWN PLUGIN DEFINITION
-   * ========================== */
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('dropdown')
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.dropdown.Constructor = Dropdown
-
-
- /* DROPDOWN NO CONFLICT
-  * ==================== */
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  /* APPLY TO STANDARD DROPDOWN ELEMENTS
-   * =================================== */
-
-  $(document)
-    .on('click.dropdown.data-api', clearMenus)
-    .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('.dropdown-menu', function (e) { e.stopPropagation() })
-    .on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
-    .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-modal.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-modal.js
deleted file mode 100644
index b5ffa95b..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-modal.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/* =========================================================
- * bootstrap-modal.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================= */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* MODAL CLASS DEFINITION
-  * ====================== */
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$element = $(element)
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
-    this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
-  }
-
-  Modal.prototype = {
-
-      constructor: Modal
-
-    , toggle: function () {
-        return this[!this.isShown ? 'show' : 'hide']()
-      }
-
-    , show: function () {
-        var that = this
-          , e = $.Event('show')
-
-        this.$element.trigger(e)
-
-        if (this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = true
-
-        this.escape()
-
-        this.backdrop(function () {
-          var transition = $.support.transition && that.$element.hasClass('fade')
-
-          if (!that.$element.parent().length) {
-            that.$element.appendTo(document.body) //don't move modals dom position
-          }
-
-          that.$element.show()
-
-          if (transition) {
-            that.$element[0].offsetWidth // force reflow
-          }
-
-          that.$element
-            .addClass('in')
-            .attr('aria-hidden', false)
-
-          that.enforceFocus()
-
-          transition ?
-            that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
-            that.$element.focus().trigger('shown')
-
-        })
-      }
-
-    , hide: function (e) {
-        e && e.preventDefault()
-
-        var that = this
-
-        e = $.Event('hide')
-
-        this.$element.trigger(e)
-
-        if (!this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = false
-
-        this.escape()
-
-        $(document).off('focusin.modal')
-
-        this.$element
-          .removeClass('in')
-          .attr('aria-hidden', true)
-
-        $.support.transition && this.$element.hasClass('fade') ?
-          this.hideWithTransition() :
-          this.hideModal()
-      }
-
-    , enforceFocus: function () {
-        var that = this
-        $(document).on('focusin.modal', function (e) {
-          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
-            that.$element.focus()
-          }
-        })
-      }
-
-    , escape: function () {
-        var that = this
-        if (this.isShown && this.options.keyboard) {
-          this.$element.on('keyup.dismiss.modal', function ( e ) {
-            e.which == 27 && that.hide()
-          })
-        } else if (!this.isShown) {
-          this.$element.off('keyup.dismiss.modal')
-        }
-      }
-
-    , hideWithTransition: function () {
-        var that = this
-          , timeout = setTimeout(function () {
-              that.$element.off($.support.transition.end)
-              that.hideModal()
-            }, 500)
-
-        this.$element.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          that.hideModal()
-        })
-      }
-
-    , hideModal: function () {
-        var that = this
-        this.$element.hide()
-        this.backdrop(function () {
-          that.removeBackdrop()
-          that.$element.trigger('hidden')
-        })
-      }
-
-    , removeBackdrop: function () {
-        this.$backdrop.remove()
-        this.$backdrop = null
-      }
-
-    , backdrop: function (callback) {
-        var that = this
-          , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-        if (this.isShown && this.options.backdrop) {
-          var doAnimate = $.support.transition && animate
-
-          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-            .appendTo(document.body)
-
-          this.$backdrop.click(
-            this.options.backdrop == 'static' ?
-              $.proxy(this.$element[0].focus, this.$element[0])
-            : $.proxy(this.hide, this)
-          )
-
-          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-          this.$backdrop.addClass('in')
-
-          if (!callback) return
-
-          doAnimate ?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (!this.isShown && this.$backdrop) {
-          this.$backdrop.removeClass('in')
-
-          $.support.transition && this.$element.hasClass('fade')?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (callback) {
-          callback()
-        }
-      }
-  }
-
-
- /* MODAL PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.modal
-
-  $.fn.modal = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('modal')
-        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option]()
-      else if (options.show) data.show()
-    })
-  }
-
-  $.fn.modal.defaults = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
- /* MODAL NO CONFLICT
-  * ================= */
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
- /* MODAL DATA-API
-  * ============== */
-
-  $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this = $(this)
-      , href = $this.attr('href')
-      , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
-      , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
-
-    e.preventDefault()
-
-    $target
-      .modal(option)
-      .one('hide', function () {
-        $this.focus()
-      })
-  })
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-popover.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-popover.js
deleted file mode 100644
index 0e7774bf..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-popover.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/* ===========================================================
- * bootstrap-popover.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#popovers
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * =========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* POPOVER PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-
-  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
-     ========================================== */
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
-
-    constructor: Popover
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-        , content = this.getContent()
-
-      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-      $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
-      $tip.removeClass('fade top bottom left right in')
-    }
-
-  , hasContent: function () {
-      return this.getTitle() || this.getContent()
-    }
-
-  , getContent: function () {
-      var content
-        , $e = this.$element
-        , o = this.options
-
-      content = (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
-        || $e.attr('data-content')
-
-      return content
-    }
-
-  , tip: function () {
-      if (!this.$tip) {
-        this.$tip = $(this.options.template)
-      }
-      return this.$tip
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  })
-
-
- /* POPOVER PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.popover
-
-  $.fn.popover = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('popover')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.popover.Constructor = Popover
-
-  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
-    placement: 'right'
-  , trigger: 'click'
-  , content: ''
-  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
- /* POPOVER NO CONFLICT
-  * =================== */
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-scrollspy.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-scrollspy.js
deleted file mode 100644
index dff9a3b3..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-scrollspy.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/* =============================================================
- * bootstrap-scrollspy.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* SCROLLSPY CLASS DEFINITION
-  * ========================== */
-
-  function ScrollSpy(element, options) {
-    var process = $.proxy(this.process, this)
-      , $element = $(element).is('body') ? $(window) : $(element)
-      , href
-    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
-    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
-    this.selector = (this.options.target
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      || '') + ' .nav li > a'
-    this.$body = $('body')
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.prototype = {
-
-      constructor: ScrollSpy
-
-    , refresh: function () {
-        var self = this
-          , $targets
-
-        this.offsets = $([])
-        this.targets = $([])
-
-        $targets = this.$body
-          .find(this.selector)
-          .map(function () {
-            var $el = $(this)
-              , href = $el.data('target') || $el.attr('href')
-              , $href = /^#\w/.test(href) && $(href)
-            return ( $href
-              && $href.length
-              && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
-          })
-          .sort(function (a, b) { return a[0] - b[0] })
-          .each(function () {
-            self.offsets.push(this[0])
-            self.targets.push(this[1])
-          })
-      }
-
-    , process: function () {
-        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
-          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
-          , maxScroll = scrollHeight - this.$scrollElement.height()
-          , offsets = this.offsets
-          , targets = this.targets
-          , activeTarget = this.activeTarget
-          , i
-
-        if (scrollTop >= maxScroll) {
-          return activeTarget != (i = targets.last()[0])
-            && this.activate ( i )
-        }
-
-        for (i = offsets.length; i--;) {
-          activeTarget != targets[i]
-            && scrollTop >= offsets[i]
-            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-            && this.activate( targets[i] )
-        }
-      }
-
-    , activate: function (target) {
-        var active
-          , selector
-
-        this.activeTarget = target
-
-        $(this.selector)
-          .parent('.active')
-          .removeClass('active')
-
-        selector = this.selector
-          + '[data-target="' + target + '"],'
-          + this.selector + '[href="' + target + '"]'
-
-        active = $(selector)
-          .parent('li')
-          .addClass('active')
-
-        if (active.parent('.dropdown-menu').length)  {
-          active = active.closest('li.dropdown').addClass('active')
-        }
-
-        active.trigger('activate')
-      }
-
-  }
-
-
- /* SCROLLSPY PLUGIN DEFINITION
-  * =========================== */
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('scrollspy')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-  $.fn.scrollspy.defaults = {
-    offset: 10
-  }
-
-
- /* SCROLLSPY NO CONFLICT
-  * ===================== */
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
- /* SCROLLSPY DATA-API
-  * ================== */
-
-  $(window).on('load', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      $spy.scrollspy($spy.data())
-    })
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tab.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tab.js
deleted file mode 100644
index bd77eb5c..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tab.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ========================================================
- * bootstrap-tab.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
-  * ==================== */
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.prototype = {
-
-    constructor: Tab
-
-  , show: function () {
-      var $this = this.element
-        , $ul = $this.closest('ul:not(.dropdown-menu)')
-        , selector = $this.attr('data-target')
-        , previous
-        , $target
-        , e
-
-      if (!selector) {
-        selector = $this.attr('href')
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-      }
-
-      if ( $this.parent('li').hasClass('active') ) return
-
-      previous = $ul.find('.active:last a')[0]
-
-      e = $.Event('show', {
-        relatedTarget: previous
-      })
-
-      $this.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      $target = $(selector)
-
-      this.activate($this.parent('li'), $ul)
-      this.activate($target, $target.parent(), function () {
-        $this.trigger({
-          type: 'shown'
-        , relatedTarget: previous
-        })
-      })
-    }
-
-  , activate: function ( element, container, callback) {
-      var $active = container.find('> .active')
-        , transition = callback
-            && $.support.transition
-            && $active.hasClass('fade')
-
-      function next() {
-        $active
-          .removeClass('active')
-          .find('> .dropdown-menu > .active')
-          .removeClass('active')
-
-        element.addClass('active')
-
-        if (transition) {
-          element[0].offsetWidth // reflow for transition
-          element.addClass('in')
-        } else {
-          element.removeClass('fade')
-        }
-
-        if ( element.parent('.dropdown-menu') ) {
-          element.closest('li.dropdown').addClass('active')
-        }
-
-        callback && callback()
-      }
-
-      transition ?
-        $active.one($.support.transition.end, next) :
-        next()
-
-      $active.removeClass('in')
-    }
-  }
-
-
- /* TAB PLUGIN DEFINITION
-  * ===================== */
-
-  var old = $.fn.tab
-
-  $.fn.tab = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tab')
-      if (!data) $this.data('tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tab.Constructor = Tab
-
-
- /* TAB NO CONFLICT
-  * =============== */
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
- /* TAB DATA-API
-  * ============ */
-
-  $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    $(this).tab('show')
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tooltip.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tooltip.js
deleted file mode 100644
index 98131907..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-tooltip.js
+++ /dev/null
@@ -1,353 +0,0 @@
-/* ===========================================================
- * bootstrap-tooltip.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Tooltip = function (element, options) {
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.prototype = {
-
-    constructor: Tooltip
-
-  , init: function (type, element, options) {
-      var eventIn
-        , eventOut
-        , triggers
-        , trigger
-        , i
-
-      this.type = type
-      this.$element = $(element)
-      this.options = this.getOptions(options)
-      this.enabled = true
-
-      triggers = this.options.trigger.split(' ')
-
-      for (i = triggers.length; i--;) {
-        trigger = triggers[i]
-        if (trigger == 'click') {
-          this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-        } else if (trigger != 'manual') {
-          eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
-          eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-          this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-          this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-        }
-      }
-
-      this.options.selector ?
-        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-        this.fixTitle()
-    }
-
-  , getOptions: function (options) {
-      options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
-
-      if (options.delay && typeof options.delay == 'number') {
-        options.delay = {
-          show: options.delay
-        , hide: options.delay
-        }
-      }
-
-      return options
-    }
-
-  , enter: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (!self.options.delay || !self.options.delay.show) return self.show()
-
-      clearTimeout(this.timeout)
-      self.hoverState = 'in'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'in') self.show()
-      }, self.options.delay.show)
-    }
-
-  , leave: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (this.timeout) clearTimeout(this.timeout)
-      if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-      self.hoverState = 'out'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'out') self.hide()
-      }, self.options.delay.hide)
-    }
-
-  , show: function () {
-      var $tip
-        , pos
-        , actualWidth
-        , actualHeight
-        , placement
-        , tp
-        , e = $.Event('show')
-
-      if (this.hasContent() && this.enabled) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $tip = this.tip()
-        this.setContent()
-
-        if (this.options.animation) {
-          $tip.addClass('fade')
-        }
-
-        placement = typeof this.options.placement == 'function' ?
-          this.options.placement.call(this, $tip[0], this.$element[0]) :
-          this.options.placement
-
-        $tip
-          .detach()
-          .css({ top: 0, left: 0, display: 'block' })
-
-        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-        pos = this.getPosition()
-
-        actualWidth = $tip[0].offsetWidth
-        actualHeight = $tip[0].offsetHeight
-
-        switch (placement) {
-          case 'bottom':
-            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'top':
-            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'left':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
-            break
-          case 'right':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
-            break
-        }
-
-        this.applyPlacement(tp, placement)
-        this.$element.trigger('shown')
-      }
-    }
-
-  , applyPlacement: function(offset, placement){
-      var $tip = this.tip()
-        , width = $tip[0].offsetWidth
-        , height = $tip[0].offsetHeight
-        , actualWidth
-        , actualHeight
-        , delta
-        , replace
-
-      $tip
-        .offset(offset)
-        .addClass(placement)
-        .addClass('in')
-
-      actualWidth = $tip[0].offsetWidth
-      actualHeight = $tip[0].offsetHeight
-
-      if (placement == 'top' && actualHeight != height) {
-        offset.top = offset.top + height - actualHeight
-        replace = true
-      }
-
-      if (placement == 'bottom' || placement == 'top') {
-        delta = 0
-
-        if (offset.left < 0){
-          delta = offset.left * -2
-          offset.left = 0
-          $tip.offset(offset)
-          actualWidth = $tip[0].offsetWidth
-          actualHeight = $tip[0].offsetHeight
-        }
-
-        this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
-      } else {
-        this.replaceArrow(actualHeight - height, actualHeight, 'top')
-      }
-
-      if (replace) $tip.offset(offset)
-    }
-
-  , replaceArrow: function(delta, dimension, position){
-      this
-        .arrow()
-        .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
-    }
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-
-      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-      $tip.removeClass('fade in top bottom left right')
-    }
-
-  , hide: function () {
-      var that = this
-        , $tip = this.tip()
-        , e = $.Event('hide')
-
-      this.$element.trigger(e)
-      if (e.isDefaultPrevented()) return
-
-      $tip.removeClass('in')
-
-      function removeWithAnimation() {
-        var timeout = setTimeout(function () {
-          $tip.off($.support.transition.end).detach()
-        }, 500)
-
-        $tip.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          $tip.detach()
-        })
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        removeWithAnimation() :
-        $tip.detach()
-
-      this.$element.trigger('hidden')
-
-      return this
-    }
-
-  , fixTitle: function () {
-      var $e = this.$element
-      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
-        $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-      }
-    }
-
-  , hasContent: function () {
-      return this.getTitle()
-    }
-
-  , getPosition: function () {
-      var el = this.$element[0]
-      return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
-        width: el.offsetWidth
-      , height: el.offsetHeight
-      }, this.$element.offset())
-    }
-
-  , getTitle: function () {
-      var title
-        , $e = this.$element
-        , o = this.options
-
-      title = $e.attr('data-original-title')
-        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-      return title
-    }
-
-  , tip: function () {
-      return this.$tip = this.$tip || $(this.options.template)
-    }
-
-  , arrow: function(){
-      return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
-    }
-
-  , validate: function () {
-      if (!this.$element[0].parentNode) {
-        this.hide()
-        this.$element = null
-        this.options = null
-      }
-    }
-
-  , enable: function () {
-      this.enabled = true
-    }
-
-  , disable: function () {
-      this.enabled = false
-    }
-
-  , toggleEnabled: function () {
-      this.enabled = !this.enabled
-    }
-
-  , toggle: function (e) {
-      var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
-      self.tip().hasClass('in') ? self.hide() : self.show()
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  }
-
-
- /* TOOLTIP PLUGIN DEFINITION
-  * ========================= */
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tooltip')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tooltip.Constructor = Tooltip
-
-  $.fn.tooltip.defaults = {
-    animation: true
-  , placement: 'top'
-  , selector: false
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
-  , trigger: 'hover focus'
-  , title: ''
-  , delay: 0
-  , html: false
-  , container: false
-  }
-
-
- /* TOOLTIP NO CONFLICT
-  * =================== */
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-transition.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-transition.js
deleted file mode 100644
index 64f27577..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-transition.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ===================================================
- * bootstrap-transition.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#transitions
- * ===================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
-  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
-   * ======================================================= */
-
-  $(function () {
-
-    $.support.transition = (function () {
-
-      var transitionEnd = (function () {
-
-        var el = document.createElement('bootstrap')
-          , transEndEventNames = {
-               'WebkitTransition' : 'webkitTransitionEnd'
-            ,  'MozTransition'    : 'transitionend'
-            ,  'OTransition'      : 'oTransitionEnd otransitionend'
-            ,  'transition'       : 'transitionend'
-            }
-          , name
-
-        for (name in transEndEventNames){
-          if (el.style[name] !== undefined) {
-            return transEndEventNames[name]
-          }
-        }
-
-      }())
-
-      return transitionEnd && {
-        end: transitionEnd
-      }
-
-    })()
-
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-typeahead.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-typeahead.js
deleted file mode 100644
index 960f2af8..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap-typeahead.js
+++ /dev/null
@@ -1,335 +0,0 @@
-/* =============================================================
- * bootstrap-typeahead.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function($){
-
-  "use strict"; // jshint ;_;
-
-
- /* TYPEAHEAD PUBLIC CLASS DEFINITION
-  * ================================= */
-
-  var Typeahead = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.typeahead.defaults, options)
-    this.matcher = this.options.matcher || this.matcher
-    this.sorter = this.options.sorter || this.sorter
-    this.highlighter = this.options.highlighter || this.highlighter
-    this.updater = this.options.updater || this.updater
-    this.source = this.options.source
-    this.$menu = $(this.options.menu)
-    this.shown = false
-    this.listen()
-  }
-
-  Typeahead.prototype = {
-
-    constructor: Typeahead
-
-  , select: function () {
-      var val = this.$menu.find('.active').attr('data-value')
-      this.$element
-        .val(this.updater(val))
-        .change()
-      return this.hide()
-    }
-
-  , updater: function (item) {
-      return item
-    }
-
-  , show: function () {
-      var pos = $.extend({}, this.$element.position(), {
-        height: this.$element[0].offsetHeight
-      })
-
-      this.$menu
-        .insertAfter(this.$element)
-        .css({
-          top: pos.top + pos.height
-        , left: pos.left
-        })
-        .show()
-
-      this.shown = true
-      return this
-    }
-
-  , hide: function () {
-      this.$menu.hide()
-      this.shown = false
-      return this
-    }
-
-  , lookup: function (event) {
-      var items
-
-      this.query = this.$element.val()
-
-      if (!this.query || this.query.length < this.options.minLength) {
-        return this.shown ? this.hide() : this
-      }
-
-      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
-
-      return items ? this.process(items) : this
-    }
-
-  , process: function (items) {
-      var that = this
-
-      items = $.grep(items, function (item) {
-        return that.matcher(item)
-      })
-
-      items = this.sorter(items)
-
-      if (!items.length) {
-        return this.shown ? this.hide() : this
-      }
-
-      return this.render(items.slice(0, this.options.items)).show()
-    }
-
-  , matcher: function (item) {
-      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
-    }
-
-  , sorter: function (items) {
-      var beginswith = []
-        , caseSensitive = []
-        , caseInsensitive = []
-        , item
-
-      while (item = items.shift()) {
-        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
-        else if (~item.indexOf(this.query)) caseSensitive.push(item)
-        else caseInsensitive.push(item)
-      }
-
-      return beginswith.concat(caseSensitive, caseInsensitive)
-    }
-
-  , highlighter: function (item) {
-      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
-      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
-        return '<strong>' + match + '</strong>'
-      })
-    }
-
-  , render: function (items) {
-      var that = this
-
-      items = $(items).map(function (i, item) {
-        i = $(that.options.item).attr('data-value', item)
-        i.find('a').html(that.highlighter(item))
-        return i[0]
-      })
-
-      items.first().addClass('active')
-      this.$menu.html(items)
-      return this
-    }
-
-  , next: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , next = active.next()
-
-      if (!next.length) {
-        next = $(this.$menu.find('li')[0])
-      }
-
-      next.addClass('active')
-    }
-
-  , prev: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , prev = active.prev()
-
-      if (!prev.length) {
-        prev = this.$menu.find('li').last()
-      }
-
-      prev.addClass('active')
-    }
-
-  , listen: function () {
-      this.$element
-        .on('focus',    $.proxy(this.focus, this))
-        .on('blur',     $.proxy(this.blur, this))
-        .on('keypress', $.proxy(this.keypress, this))
-        .on('keyup',    $.proxy(this.keyup, this))
-
-      if (this.eventSupported('keydown')) {
-        this.$element.on('keydown', $.proxy(this.keydown, this))
-      }
-
-      this.$menu
-        .on('click', $.proxy(this.click, this))
-        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
-        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
-    }
-
-  , eventSupported: function(eventName) {
-      var isSupported = eventName in this.$element
-      if (!isSupported) {
-        this.$element.setAttribute(eventName, 'return;')
-        isSupported = typeof this.$element[eventName] === 'function'
-      }
-      return isSupported
-    }
-
-  , move: function (e) {
-      if (!this.shown) return
-
-      switch(e.keyCode) {
-        case 9: // tab
-        case 13: // enter
-        case 27: // escape
-          e.preventDefault()
-          break
-
-        case 38: // up arrow
-          e.preventDefault()
-          this.prev()
-          break
-
-        case 40: // down arrow
-          e.preventDefault()
-          this.next()
-          break
-      }
-
-      e.stopPropagation()
-    }
-
-  , keydown: function (e) {
-      this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
-      this.move(e)
-    }
-
-  , keypress: function (e) {
-      if (this.suppressKeyPressRepeat) return
-      this.move(e)
-    }
-
-  , keyup: function (e) {
-      switch(e.keyCode) {
-        case 40: // down arrow
-        case 38: // up arrow
-        case 16: // shift
-        case 17: // ctrl
-        case 18: // alt
-          break
-
-        case 9: // tab
-        case 13: // enter
-          if (!this.shown) return
-          this.select()
-          break
-
-        case 27: // escape
-          if (!this.shown) return
-          this.hide()
-          break
-
-        default:
-          this.lookup()
-      }
-
-      e.stopPropagation()
-      e.preventDefault()
-  }
-
-  , focus: function (e) {
-      this.focused = true
-    }
-
-  , blur: function (e) {
-      this.focused = false
-      if (!this.mousedover && this.shown) this.hide()
-    }
-
-  , click: function (e) {
-      e.stopPropagation()
-      e.preventDefault()
-      this.select()
-      this.$element.focus()
-    }
-
-  , mouseenter: function (e) {
-      this.mousedover = true
-      this.$menu.find('.active').removeClass('active')
-      $(e.currentTarget).addClass('active')
-    }
-
-  , mouseleave: function (e) {
-      this.mousedover = false
-      if (!this.focused && this.shown) this.hide()
-    }
-
-  }
-
-
-  /* TYPEAHEAD PLUGIN DEFINITION
-   * =========================== */
-
-  var old = $.fn.typeahead
-
-  $.fn.typeahead = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('typeahead')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.typeahead.defaults = {
-    source: []
-  , items: 8
-  , menu: '<ul class="typeahead dropdown-menu"></ul>'
-  , item: '<li><a href="#"></a></li>'
-  , minLength: 1
-  }
-
-  $.fn.typeahead.Constructor = Typeahead
-
-
- /* TYPEAHEAD NO CONFLICT
-  * =================== */
-
-  $.fn.typeahead.noConflict = function () {
-    $.fn.typeahead = old
-    return this
-  }
-
-
- /* TYPEAHEAD DATA-API
-  * ================== */
-
-  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
-    var $this = $(this)
-    if ($this.data('typeahead')) return
-    $this.typeahead($this.data())
-  })
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.js
deleted file mode 100644
index a81171b4..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.js
+++ /dev/null
@@ -1,2268 +0,0 @@
-/* ===================================================
- * bootstrap-transition.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#transitions
- * ===================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
-  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
-   * ======================================================= */
-
-  $(function () {
-
-    $.support.transition = (function () {
-
-      var transitionEnd = (function () {
-
-        var el = document.createElement('bootstrap')
-          , transEndEventNames = {
-               'WebkitTransition' : 'webkitTransitionEnd'
-            ,  'MozTransition'    : 'transitionend'
-            ,  'OTransition'      : 'oTransitionEnd otransitionend'
-            ,  'transition'       : 'transitionend'
-            }
-          , name
-
-        for (name in transEndEventNames){
-          if (el.style[name] !== undefined) {
-            return transEndEventNames[name]
-          }
-        }
-
-      }())
-
-      return transitionEnd && {
-        end: transitionEnd
-      }
-
-    })()
-
-  })
-
-}(window.jQuery);/* ==========================================================
- * bootstrap-alert.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#alerts
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* ALERT CLASS DEFINITION
-  * ====================== */
-
-  var dismiss = '[data-dismiss="alert"]'
-    , Alert = function (el) {
-        $(el).on('click', dismiss, this.close)
-      }
-
-  Alert.prototype.close = function (e) {
-    var $this = $(this)
-      , selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = $(selector)
-
-    e && e.preventDefault()
-
-    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
-
-    $parent.trigger(e = $.Event('close'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      $parent
-        .trigger('closed')
-        .remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent.on($.support.transition.end, removeElement) :
-      removeElement()
-  }
-
-
- /* ALERT PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.alert
-
-  $.fn.alert = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('alert')
-      if (!data) $this.data('alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.alert.Constructor = Alert
-
-
- /* ALERT NO CONFLICT
-  * ================= */
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
- /* ALERT DATA-API
-  * ============== */
-
-  $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);/* ============================================================
- * bootstrap-button.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#buttons
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* BUTTON PUBLIC CLASS DEFINITION
-  * ============================== */
-
-  var Button = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.button.defaults, options)
-  }
-
-  Button.prototype.setState = function (state) {
-    var d = 'disabled'
-      , $el = this.$element
-      , data = $el.data()
-      , val = $el.is('input') ? 'val' : 'html'
-
-    state = state + 'Text'
-    data.resetText || $el.data('resetText', $el[val]())
-
-    $el[val](data[state] || this.options[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d)
-    }, 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
-
-    $parent && $parent
-      .find('.active')
-      .removeClass('active')
-
-    this.$element.toggleClass('active')
-  }
-
-
- /* BUTTON PLUGIN DEFINITION
-  * ======================== */
-
-  var old = $.fn.button
-
-  $.fn.button = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('button')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('button', (data = new Button(this, options)))
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  $.fn.button.defaults = {
-    loadingText: 'loading...'
-  }
-
-  $.fn.button.Constructor = Button
-
-
- /* BUTTON NO CONFLICT
-  * ================== */
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
- /* BUTTON DATA-API
-  * =============== */
-
-  $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    $btn.button('toggle')
-  })
-
-}(window.jQuery);/* ==========================================================
- * bootstrap-carousel.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#carousel
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* CAROUSEL CLASS DEFINITION
-  * ========================= */
-
-  var Carousel = function (element, options) {
-    this.$element = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options = options
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter', $.proxy(this.pause, this))
-      .on('mouseleave', $.proxy(this.cycle, this))
-  }
-
-  Carousel.prototype = {
-
-    cycle: function (e) {
-      if (!e) this.paused = false
-      if (this.interval) clearInterval(this.interval);
-      this.options.interval
-        && !this.paused
-        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-      return this
-    }
-
-  , getActiveIndex: function () {
-      this.$active = this.$element.find('.item.active')
-      this.$items = this.$active.parent().children()
-      return this.$items.index(this.$active)
-    }
-
-  , to: function (pos) {
-      var activeIndex = this.getActiveIndex()
-        , that = this
-
-      if (pos > (this.$items.length - 1) || pos < 0) return
-
-      if (this.sliding) {
-        return this.$element.one('slid', function () {
-          that.to(pos)
-        })
-      }
-
-      if (activeIndex == pos) {
-        return this.pause().cycle()
-      }
-
-      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-    }
-
-  , pause: function (e) {
-      if (!e) this.paused = true
-      if (this.$element.find('.next, .prev').length && $.support.transition.end) {
-        this.$element.trigger($.support.transition.end)
-        this.cycle()
-      }
-      clearInterval(this.interval)
-      this.interval = null
-      return this
-    }
-
-  , next: function () {
-      if (this.sliding) return
-      return this.slide('next')
-    }
-
-  , prev: function () {
-      if (this.sliding) return
-      return this.slide('prev')
-    }
-
-  , slide: function (type, next) {
-      var $active = this.$element.find('.item.active')
-        , $next = next || $active[type]()
-        , isCycling = this.interval
-        , direction = type == 'next' ? 'left' : 'right'
-        , fallback  = type == 'next' ? 'first' : 'last'
-        , that = this
-        , e
-
-      this.sliding = true
-
-      isCycling && this.pause()
-
-      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
-
-      e = $.Event('slide', {
-        relatedTarget: $next[0]
-      , direction: direction
-      })
-
-      if ($next.hasClass('active')) return
-
-      if (this.$indicators.length) {
-        this.$indicators.find('.active').removeClass('active')
-        this.$element.one('slid', function () {
-          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
-          $nextIndicator && $nextIndicator.addClass('active')
-        })
-      }
-
-      if ($.support.transition && this.$element.hasClass('slide')) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $next.addClass(type)
-        $next[0].offsetWidth // force reflow
-        $active.addClass(direction)
-        $next.addClass(direction)
-        this.$element.one($.support.transition.end, function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
-        })
-      } else {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $active.removeClass('active')
-        $next.addClass('active')
-        this.sliding = false
-        this.$element.trigger('slid')
-      }
-
-      isCycling && this.cycle()
-
-      return this
-    }
-
-  }
-
-
- /* CAROUSEL PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.carousel
-
-  $.fn.carousel = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('carousel')
-        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
-        , action = typeof option == 'string' ? option : options.slide
-      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  $.fn.carousel.defaults = {
-    interval: 5000
-  , pause: 'hover'
-  }
-
-  $.fn.carousel.Constructor = Carousel
-
-
- /* CAROUSEL NO CONFLICT
-  * ==================== */
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
- /* CAROUSEL DATA-API
-  * ================= */
-
-  $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var $this = $(this), href
-      , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      , options = $.extend({}, $target.data(), $this.data())
-      , slideIndex
-
-    $target.carousel(options)
-
-    if (slideIndex = $this.attr('data-slide-to')) {
-      $target.data('carousel').pause().to(slideIndex).cycle()
-    }
-
-    e.preventDefault()
-  })
-
-}(window.jQuery);/* =============================================================
- * bootstrap-collapse.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#collapse
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* COLLAPSE PUBLIC CLASS DEFINITION
-  * ================================ */
-
-  var Collapse = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.collapse.defaults, options)
-
-    if (this.options.parent) {
-      this.$parent = $(this.options.parent)
-    }
-
-    this.options.toggle && this.toggle()
-  }
-
-  Collapse.prototype = {
-
-    constructor: Collapse
-
-  , dimension: function () {
-      var hasWidth = this.$element.hasClass('width')
-      return hasWidth ? 'width' : 'height'
-    }
-
-  , show: function () {
-      var dimension
-        , scroll
-        , actives
-        , hasData
-
-      if (this.transitioning || this.$element.hasClass('in')) return
-
-      dimension = this.dimension()
-      scroll = $.camelCase(['scroll', dimension].join('-'))
-      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
-
-      if (actives && actives.length) {
-        hasData = actives.data('collapse')
-        if (hasData && hasData.transitioning) return
-        actives.collapse('hide')
-        hasData || actives.data('collapse', null)
-      }
-
-      this.$element[dimension](0)
-      this.transition('addClass', $.Event('show'), 'shown')
-      $.support.transition && this.$element[dimension](this.$element[0][scroll])
-    }
-
-  , hide: function () {
-      var dimension
-      if (this.transitioning || !this.$element.hasClass('in')) return
-      dimension = this.dimension()
-      this.reset(this.$element[dimension]())
-      this.transition('removeClass', $.Event('hide'), 'hidden')
-      this.$element[dimension](0)
-    }
-
-  , reset: function (size) {
-      var dimension = this.dimension()
-
-      this.$element
-        .removeClass('collapse')
-        [dimension](size || 'auto')
-        [0].offsetWidth
-
-      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
-
-      return this
-    }
-
-  , transition: function (method, startEvent, completeEvent) {
-      var that = this
-        , complete = function () {
-            if (startEvent.type == 'show') that.reset()
-            that.transitioning = 0
-            that.$element.trigger(completeEvent)
-          }
-
-      this.$element.trigger(startEvent)
-
-      if (startEvent.isDefaultPrevented()) return
-
-      this.transitioning = 1
-
-      this.$element[method]('in')
-
-      $.support.transition && this.$element.hasClass('collapse') ?
-        this.$element.one($.support.transition.end, complete) :
-        complete()
-    }
-
-  , toggle: function () {
-      this[this.$element.hasClass('in') ? 'hide' : 'show']()
-    }
-
-  }
-
-
- /* COLLAPSE PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.collapse
-
-  $.fn.collapse = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('collapse')
-        , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.collapse.defaults = {
-    toggle: true
-  }
-
-  $.fn.collapse.Constructor = Collapse
-
-
- /* COLLAPSE NO CONFLICT
-  * ==================== */
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
- /* COLLAPSE DATA-API
-  * ================= */
-
-  $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
-    var $this = $(this), href
-      , target = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
-      , option = $(target).data('collapse') ? 'toggle' : $this.data()
-    $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    $(target).collapse(option)
-  })
-
-}(window.jQuery);/* ============================================================
- * bootstrap-dropdown.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* DROPDOWN CLASS DEFINITION
-  * ========================= */
-
-  var toggle = '[data-toggle=dropdown]'
-    , Dropdown = function (element) {
-        var $el = $(element).on('click.dropdown.data-api', this.toggle)
-        $('html').on('click.dropdown.data-api', function () {
-          $el.parent().removeClass('open')
-        })
-      }
-
-  Dropdown.prototype = {
-
-    constructor: Dropdown
-
-  , toggle: function (e) {
-      var $this = $(this)
-        , $parent
-        , isActive
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      clearMenus()
-
-      if (!isActive) {
-        $parent.toggleClass('open')
-      }
-
-      $this.focus()
-
-      return false
-    }
-
-  , keydown: function (e) {
-      var $this
-        , $items
-        , $active
-        , $parent
-        , isActive
-        , index
-
-      if (!/(38|40|27)/.test(e.keyCode)) return
-
-      $this = $(this)
-
-      e.preventDefault()
-      e.stopPropagation()
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      if (!isActive || (isActive && e.keyCode == 27)) {
-        if (e.which == 27) $parent.find(toggle).focus()
-        return $this.click()
-      }
-
-      $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
-      if (!$items.length) return
-
-      index = $items.index($items.filter(':focus'))
-
-      if (e.keyCode == 38 && index > 0) index--                                        // up
-      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-      if (!~index) index = 0
-
-      $items
-        .eq(index)
-        .focus()
-    }
-
-  }
-
-  function clearMenus() {
-    $(toggle).each(function () {
-      getParent($(this)).removeClass('open')
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = selector && $(selector)
-
-    if (!$parent || !$parent.length) $parent = $this.parent()
-
-    return $parent
-  }
-
-
-  /* DROPDOWN PLUGIN DEFINITION
-   * ========================== */
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('dropdown')
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.dropdown.Constructor = Dropdown
-
-
- /* DROPDOWN NO CONFLICT
-  * ==================== */
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  /* APPLY TO STANDARD DROPDOWN ELEMENTS
-   * =================================== */
-
-  $(document)
-    .on('click.dropdown.data-api', clearMenus)
-    .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('.dropdown-menu', function (e) { e.stopPropagation() })
-    .on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
-    .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
-/* =========================================================
- * bootstrap-modal.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================= */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* MODAL CLASS DEFINITION
-  * ====================== */
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$element = $(element)
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
-    this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
-  }
-
-  Modal.prototype = {
-
-      constructor: Modal
-
-    , toggle: function () {
-        return this[!this.isShown ? 'show' : 'hide']()
-      }
-
-    , show: function () {
-        var that = this
-          , e = $.Event('show')
-
-        this.$element.trigger(e)
-
-        if (this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = true
-
-        this.escape()
-
-        this.backdrop(function () {
-          var transition = $.support.transition && that.$element.hasClass('fade')
-
-          if (!that.$element.parent().length) {
-            that.$element.appendTo(document.body) //don't move modals dom position
-          }
-
-          that.$element.show()
-
-          if (transition) {
-            that.$element[0].offsetWidth // force reflow
-          }
-
-          that.$element
-            .addClass('in')
-            .attr('aria-hidden', false)
-
-          that.enforceFocus()
-
-          transition ?
-            that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
-            that.$element.focus().trigger('shown')
-
-        })
-      }
-
-    , hide: function (e) {
-        e && e.preventDefault()
-
-        var that = this
-
-        e = $.Event('hide')
-
-        this.$element.trigger(e)
-
-        if (!this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = false
-
-        this.escape()
-
-        $(document).off('focusin.modal')
-
-        this.$element
-          .removeClass('in')
-          .attr('aria-hidden', true)
-
-        $.support.transition && this.$element.hasClass('fade') ?
-          this.hideWithTransition() :
-          this.hideModal()
-      }
-
-    , enforceFocus: function () {
-        var that = this
-        $(document).on('focusin.modal', function (e) {
-          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
-            that.$element.focus()
-          }
-        })
-      }
-
-    , escape: function () {
-        var that = this
-        if (this.isShown && this.options.keyboard) {
-          this.$element.on('keyup.dismiss.modal', function ( e ) {
-            e.which == 27 && that.hide()
-          })
-        } else if (!this.isShown) {
-          this.$element.off('keyup.dismiss.modal')
-        }
-      }
-
-    , hideWithTransition: function () {
-        var that = this
-          , timeout = setTimeout(function () {
-              that.$element.off($.support.transition.end)
-              that.hideModal()
-            }, 500)
-
-        this.$element.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          that.hideModal()
-        })
-      }
-
-    , hideModal: function () {
-        var that = this
-        this.$element.hide()
-        this.backdrop(function () {
-          that.removeBackdrop()
-          that.$element.trigger('hidden')
-        })
-      }
-
-    , removeBackdrop: function () {
-        this.$backdrop.remove()
-        this.$backdrop = null
-      }
-
-    , backdrop: function (callback) {
-        var that = this
-          , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-        if (this.isShown && this.options.backdrop) {
-          var doAnimate = $.support.transition && animate
-
-          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-            .appendTo(document.body)
-
-          this.$backdrop.click(
-            this.options.backdrop == 'static' ?
-              $.proxy(this.$element[0].focus, this.$element[0])
-            : $.proxy(this.hide, this)
-          )
-
-          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-          this.$backdrop.addClass('in')
-
-          if (!callback) return
-
-          doAnimate ?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (!this.isShown && this.$backdrop) {
-          this.$backdrop.removeClass('in')
-
-          $.support.transition && this.$element.hasClass('fade')?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (callback) {
-          callback()
-        }
-      }
-  }
-
-
- /* MODAL PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.modal
-
-  $.fn.modal = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('modal')
-        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option]()
-      else if (options.show) data.show()
-    })
-  }
-
-  $.fn.modal.defaults = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
- /* MODAL NO CONFLICT
-  * ================= */
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
- /* MODAL DATA-API
-  * ============== */
-
-  $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this = $(this)
-      , href = $this.attr('href')
-      , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
-      , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
-
-    e.preventDefault()
-
-    $target
-      .modal(option)
-      .one('hide', function () {
-        $this.focus()
-      })
-  })
-
-}(window.jQuery);
-/* ===========================================================
- * bootstrap-tooltip.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Tooltip = function (element, options) {
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.prototype = {
-
-    constructor: Tooltip
-
-  , init: function (type, element, options) {
-      var eventIn
-        , eventOut
-        , triggers
-        , trigger
-        , i
-
-      this.type = type
-      this.$element = $(element)
-      this.options = this.getOptions(options)
-      this.enabled = true
-
-      triggers = this.options.trigger.split(' ')
-
-      for (i = triggers.length; i--;) {
-        trigger = triggers[i]
-        if (trigger == 'click') {
-          this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-        } else if (trigger != 'manual') {
-          eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
-          eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-          this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-          this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-        }
-      }
-
-      this.options.selector ?
-        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-        this.fixTitle()
-    }
-
-  , getOptions: function (options) {
-      options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
-
-      if (options.delay && typeof options.delay == 'number') {
-        options.delay = {
-          show: options.delay
-        , hide: options.delay
-        }
-      }
-
-      return options
-    }
-
-  , enter: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (!self.options.delay || !self.options.delay.show) return self.show()
-
-      clearTimeout(this.timeout)
-      self.hoverState = 'in'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'in') self.show()
-      }, self.options.delay.show)
-    }
-
-  , leave: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (this.timeout) clearTimeout(this.timeout)
-      if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-      self.hoverState = 'out'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'out') self.hide()
-      }, self.options.delay.hide)
-    }
-
-  , show: function () {
-      var $tip
-        , pos
-        , actualWidth
-        , actualHeight
-        , placement
-        , tp
-        , e = $.Event('show')
-
-      if (this.hasContent() && this.enabled) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $tip = this.tip()
-        this.setContent()
-
-        if (this.options.animation) {
-          $tip.addClass('fade')
-        }
-
-        placement = typeof this.options.placement == 'function' ?
-          this.options.placement.call(this, $tip[0], this.$element[0]) :
-          this.options.placement
-
-        $tip
-          .detach()
-          .css({ top: 0, left: 0, display: 'block' })
-
-        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-        pos = this.getPosition()
-
-        actualWidth = $tip[0].offsetWidth
-        actualHeight = $tip[0].offsetHeight
-
-        switch (placement) {
-          case 'bottom':
-            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'top':
-            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'left':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
-            break
-          case 'right':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
-            break
-        }
-
-        this.applyPlacement(tp, placement)
-        this.$element.trigger('shown')
-      }
-    }
-
-  , applyPlacement: function(offset, placement){
-      var $tip = this.tip()
-        , width = $tip[0].offsetWidth
-        , height = $tip[0].offsetHeight
-        , actualWidth
-        , actualHeight
-        , delta
-        , replace
-
-      $tip
-        .offset(offset)
-        .addClass(placement)
-        .addClass('in')
-
-      actualWidth = $tip[0].offsetWidth
-      actualHeight = $tip[0].offsetHeight
-
-      if (placement == 'top' && actualHeight != height) {
-        offset.top = offset.top + height - actualHeight
-        replace = true
-      }
-
-      if (placement == 'bottom' || placement == 'top') {
-        delta = 0
-
-        if (offset.left < 0){
-          delta = offset.left * -2
-          offset.left = 0
-          $tip.offset(offset)
-          actualWidth = $tip[0].offsetWidth
-          actualHeight = $tip[0].offsetHeight
-        }
-
-        this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
-      } else {
-        this.replaceArrow(actualHeight - height, actualHeight, 'top')
-      }
-
-      if (replace) $tip.offset(offset)
-    }
-
-  , replaceArrow: function(delta, dimension, position){
-      this
-        .arrow()
-        .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
-    }
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-
-      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-      $tip.removeClass('fade in top bottom left right')
-    }
-
-  , hide: function () {
-      var that = this
-        , $tip = this.tip()
-        , e = $.Event('hide')
-
-      this.$element.trigger(e)
-      if (e.isDefaultPrevented()) return
-
-      $tip.removeClass('in')
-
-      function removeWithAnimation() {
-        var timeout = setTimeout(function () {
-          $tip.off($.support.transition.end).detach()
-        }, 500)
-
-        $tip.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          $tip.detach()
-        })
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        removeWithAnimation() :
-        $tip.detach()
-
-      this.$element.trigger('hidden')
-
-      return this
-    }
-
-  , fixTitle: function () {
-      var $e = this.$element
-      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
-        $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-      }
-    }
-
-  , hasContent: function () {
-      return this.getTitle()
-    }
-
-  , getPosition: function () {
-      var el = this.$element[0]
-      return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
-        width: el.offsetWidth
-      , height: el.offsetHeight
-      }, this.$element.offset())
-    }
-
-  , getTitle: function () {
-      var title
-        , $e = this.$element
-        , o = this.options
-
-      title = $e.attr('data-original-title')
-        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-      return title
-    }
-
-  , tip: function () {
-      return this.$tip = this.$tip || $(this.options.template)
-    }
-
-  , arrow: function(){
-      return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
-    }
-
-  , validate: function () {
-      if (!this.$element[0].parentNode) {
-        this.hide()
-        this.$element = null
-        this.options = null
-      }
-    }
-
-  , enable: function () {
-      this.enabled = true
-    }
-
-  , disable: function () {
-      this.enabled = false
-    }
-
-  , toggleEnabled: function () {
-      this.enabled = !this.enabled
-    }
-
-  , toggle: function (e) {
-      var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
-      self.tip().hasClass('in') ? self.hide() : self.show()
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  }
-
-
- /* TOOLTIP PLUGIN DEFINITION
-  * ========================= */
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tooltip')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tooltip.Constructor = Tooltip
-
-  $.fn.tooltip.defaults = {
-    animation: true
-  , placement: 'top'
-  , selector: false
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
-  , trigger: 'hover focus'
-  , title: ''
-  , delay: 0
-  , html: false
-  , container: false
-  }
-
-
- /* TOOLTIP NO CONFLICT
-  * =================== */
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(window.jQuery);
-/* ===========================================================
- * bootstrap-popover.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#popovers
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * =========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* POPOVER PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-
-  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
-     ========================================== */
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
-
-    constructor: Popover
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-        , content = this.getContent()
-
-      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-      $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
-      $tip.removeClass('fade top bottom left right in')
-    }
-
-  , hasContent: function () {
-      return this.getTitle() || this.getContent()
-    }
-
-  , getContent: function () {
-      var content
-        , $e = this.$element
-        , o = this.options
-
-      content = (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
-        || $e.attr('data-content')
-
-      return content
-    }
-
-  , tip: function () {
-      if (!this.$tip) {
-        this.$tip = $(this.options.template)
-      }
-      return this.$tip
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  })
-
-
- /* POPOVER PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.popover
-
-  $.fn.popover = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('popover')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.popover.Constructor = Popover
-
-  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
-    placement: 'right'
-  , trigger: 'click'
-  , content: ''
-  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
- /* POPOVER NO CONFLICT
-  * =================== */
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(window.jQuery);
-/* =============================================================
- * bootstrap-scrollspy.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* SCROLLSPY CLASS DEFINITION
-  * ========================== */
-
-  function ScrollSpy(element, options) {
-    var process = $.proxy(this.process, this)
-      , $element = $(element).is('body') ? $(window) : $(element)
-      , href
-    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
-    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
-    this.selector = (this.options.target
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      || '') + ' .nav li > a'
-    this.$body = $('body')
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.prototype = {
-
-      constructor: ScrollSpy
-
-    , refresh: function () {
-        var self = this
-          , $targets
-
-        this.offsets = $([])
-        this.targets = $([])
-
-        $targets = this.$body
-          .find(this.selector)
-          .map(function () {
-            var $el = $(this)
-              , href = $el.data('target') || $el.attr('href')
-              , $href = /^#\w/.test(href) && $(href)
-            return ( $href
-              && $href.length
-              && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
-          })
-          .sort(function (a, b) { return a[0] - b[0] })
-          .each(function () {
-            self.offsets.push(this[0])
-            self.targets.push(this[1])
-          })
-      }
-
-    , process: function () {
-        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
-          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
-          , maxScroll = scrollHeight - this.$scrollElement.height()
-          , offsets = this.offsets
-          , targets = this.targets
-          , activeTarget = this.activeTarget
-          , i
-
-        if (scrollTop >= maxScroll) {
-          return activeTarget != (i = targets.last()[0])
-            && this.activate ( i )
-        }
-
-        for (i = offsets.length; i--;) {
-          activeTarget != targets[i]
-            && scrollTop >= offsets[i]
-            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-            && this.activate( targets[i] )
-        }
-      }
-
-    , activate: function (target) {
-        var active
-          , selector
-
-        this.activeTarget = target
-
-        $(this.selector)
-          .parent('.active')
-          .removeClass('active')
-
-        selector = this.selector
-          + '[data-target="' + target + '"],'
-          + this.selector + '[href="' + target + '"]'
-
-        active = $(selector)
-          .parent('li')
-          .addClass('active')
-
-        if (active.parent('.dropdown-menu').length)  {
-          active = active.closest('li.dropdown').addClass('active')
-        }
-
-        active.trigger('activate')
-      }
-
-  }
-
-
- /* SCROLLSPY PLUGIN DEFINITION
-  * =========================== */
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('scrollspy')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-  $.fn.scrollspy.defaults = {
-    offset: 10
-  }
-
-
- /* SCROLLSPY NO CONFLICT
-  * ===================== */
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
- /* SCROLLSPY DATA-API
-  * ================== */
-
-  $(window).on('load', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      $spy.scrollspy($spy.data())
-    })
-  })
-
-}(window.jQuery);/* ========================================================
- * bootstrap-tab.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
-  * ==================== */
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.prototype = {
-
-    constructor: Tab
-
-  , show: function () {
-      var $this = this.element
-        , $ul = $this.closest('ul:not(.dropdown-menu)')
-        , selector = $this.attr('data-target')
-        , previous
-        , $target
-        , e
-
-      if (!selector) {
-        selector = $this.attr('href')
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-      }
-
-      if ( $this.parent('li').hasClass('active') ) return
-
-      previous = $ul.find('.active:last a')[0]
-
-      e = $.Event('show', {
-        relatedTarget: previous
-      })
-
-      $this.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      $target = $(selector)
-
-      this.activate($this.parent('li'), $ul)
-      this.activate($target, $target.parent(), function () {
-        $this.trigger({
-          type: 'shown'
-        , relatedTarget: previous
-        })
-      })
-    }
-
-  , activate: function ( element, container, callback) {
-      var $active = container.find('> .active')
-        , transition = callback
-            && $.support.transition
-            && $active.hasClass('fade')
-
-      function next() {
-        $active
-          .removeClass('active')
-          .find('> .dropdown-menu > .active')
-          .removeClass('active')
-
-        element.addClass('active')
-
-        if (transition) {
-          element[0].offsetWidth // reflow for transition
-          element.addClass('in')
-        } else {
-          element.removeClass('fade')
-        }
-
-        if ( element.parent('.dropdown-menu') ) {
-          element.closest('li.dropdown').addClass('active')
-        }
-
-        callback && callback()
-      }
-
-      transition ?
-        $active.one($.support.transition.end, next) :
-        next()
-
-      $active.removeClass('in')
-    }
-  }
-
-
- /* TAB PLUGIN DEFINITION
-  * ===================== */
-
-  var old = $.fn.tab
-
-  $.fn.tab = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tab')
-      if (!data) $this.data('tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tab.Constructor = Tab
-
-
- /* TAB NO CONFLICT
-  * =============== */
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
- /* TAB DATA-API
-  * ============ */
-
-  $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    $(this).tab('show')
-  })
-
-}(window.jQuery);/* =============================================================
- * bootstrap-typeahead.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function($){
-
-  "use strict"; // jshint ;_;
-
-
- /* TYPEAHEAD PUBLIC CLASS DEFINITION
-  * ================================= */
-
-  var Typeahead = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.typeahead.defaults, options)
-    this.matcher = this.options.matcher || this.matcher
-    this.sorter = this.options.sorter || this.sorter
-    this.highlighter = this.options.highlighter || this.highlighter
-    this.updater = this.options.updater || this.updater
-    this.source = this.options.source
-    this.$menu = $(this.options.menu)
-    this.shown = false
-    this.listen()
-  }
-
-  Typeahead.prototype = {
-
-    constructor: Typeahead
-
-  , select: function () {
-      var val = this.$menu.find('.active').attr('data-value')
-      this.$element
-        .val(this.updater(val))
-        .change()
-      return this.hide()
-    }
-
-  , updater: function (item) {
-      return item
-    }
-
-  , show: function () {
-      var pos = $.extend({}, this.$element.position(), {
-        height: this.$element[0].offsetHeight
-      })
-
-      this.$menu
-        .insertAfter(this.$element)
-        .css({
-          top: pos.top + pos.height
-        , left: pos.left
-        })
-        .show()
-
-      this.shown = true
-      return this
-    }
-
-  , hide: function () {
-      this.$menu.hide()
-      this.shown = false
-      return this
-    }
-
-  , lookup: function (event) {
-      var items
-
-      this.query = this.$element.val()
-
-      if (!this.query || this.query.length < this.options.minLength) {
-        return this.shown ? this.hide() : this
-      }
-
-      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
-
-      return items ? this.process(items) : this
-    }
-
-  , process: function (items) {
-      var that = this
-
-      items = $.grep(items, function (item) {
-        return that.matcher(item)
-      })
-
-      items = this.sorter(items)
-
-      if (!items.length) {
-        return this.shown ? this.hide() : this
-      }
-
-      return this.render(items.slice(0, this.options.items)).show()
-    }
-
-  , matcher: function (item) {
-      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
-    }
-
-  , sorter: function (items) {
-      var beginswith = []
-        , caseSensitive = []
-        , caseInsensitive = []
-        , item
-
-      while (item = items.shift()) {
-        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
-        else if (~item.indexOf(this.query)) caseSensitive.push(item)
-        else caseInsensitive.push(item)
-      }
-
-      return beginswith.concat(caseSensitive, caseInsensitive)
-    }
-
-  , highlighter: function (item) {
-      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
-      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
-        return '<strong>' + match + '</strong>'
-      })
-    }
-
-  , render: function (items) {
-      var that = this
-
-      items = $(items).map(function (i, item) {
-        i = $(that.options.item).attr('data-value', item)
-        i.find('a').html(that.highlighter(item))
-        return i[0]
-      })
-
-      items.first().addClass('active')
-      this.$menu.html(items)
-      return this
-    }
-
-  , next: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , next = active.next()
-
-      if (!next.length) {
-        next = $(this.$menu.find('li')[0])
-      }
-
-      next.addClass('active')
-    }
-
-  , prev: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , prev = active.prev()
-
-      if (!prev.length) {
-        prev = this.$menu.find('li').last()
-      }
-
-      prev.addClass('active')
-    }
-
-  , listen: function () {
-      this.$element
-        .on('focus',    $.proxy(this.focus, this))
-        .on('blur',     $.proxy(this.blur, this))
-        .on('keypress', $.proxy(this.keypress, this))
-        .on('keyup',    $.proxy(this.keyup, this))
-
-      if (this.eventSupported('keydown')) {
-        this.$element.on('keydown', $.proxy(this.keydown, this))
-      }
-
-      this.$menu
-        .on('click', $.proxy(this.click, this))
-        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
-        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
-    }
-
-  , eventSupported: function(eventName) {
-      var isSupported = eventName in this.$element
-      if (!isSupported) {
-        this.$element.setAttribute(eventName, 'return;')
-        isSupported = typeof this.$element[eventName] === 'function'
-      }
-      return isSupported
-    }
-
-  , move: function (e) {
-      if (!this.shown) return
-
-      switch(e.keyCode) {
-        case 9: // tab
-        case 13: // enter
-        case 27: // escape
-          e.preventDefault()
-          break
-
-        case 38: // up arrow
-          e.preventDefault()
-          this.prev()
-          break
-
-        case 40: // down arrow
-          e.preventDefault()
-          this.next()
-          break
-      }
-
-      e.stopPropagation()
-    }
-
-  , keydown: function (e) {
-      this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
-      this.move(e)
-    }
-
-  , keypress: function (e) {
-      if (this.suppressKeyPressRepeat) return
-      this.move(e)
-    }
-
-  , keyup: function (e) {
-      switch(e.keyCode) {
-        case 40: // down arrow
-        case 38: // up arrow
-        case 16: // shift
-        case 17: // ctrl
-        case 18: // alt
-          break
-
-        case 9: // tab
-        case 13: // enter
-          if (!this.shown) return
-          this.select()
-          break
-
-        case 27: // escape
-          if (!this.shown) return
-          this.hide()
-          break
-
-        default:
-          this.lookup()
-      }
-
-      e.stopPropagation()
-      e.preventDefault()
-  }
-
-  , focus: function (e) {
-      this.focused = true
-    }
-
-  , blur: function (e) {
-      this.focused = false
-      if (!this.mousedover && this.shown) this.hide()
-    }
-
-  , click: function (e) {
-      e.stopPropagation()
-      e.preventDefault()
-      this.select()
-      this.$element.focus()
-    }
-
-  , mouseenter: function (e) {
-      this.mousedover = true
-      this.$menu.find('.active').removeClass('active')
-      $(e.currentTarget).addClass('active')
-    }
-
-  , mouseleave: function (e) {
-      this.mousedover = false
-      if (!this.focused && this.shown) this.hide()
-    }
-
-  }
-
-
-  /* TYPEAHEAD PLUGIN DEFINITION
-   * =========================== */
-
-  var old = $.fn.typeahead
-
-  $.fn.typeahead = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('typeahead')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.typeahead.defaults = {
-    source: []
-  , items: 8
-  , menu: '<ul class="typeahead dropdown-menu"></ul>'
-  , item: '<li><a href="#"></a></li>'
-  , minLength: 1
-  }
-
-  $.fn.typeahead.Constructor = Typeahead
-
-
- /* TYPEAHEAD NO CONFLICT
-  * =================== */
-
-  $.fn.typeahead.noConflict = function () {
-    $.fn.typeahead = old
-    return this
-  }
-
-
- /* TYPEAHEAD DATA-API
-  * ================== */
-
-  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
-    var $this = $(this)
-    if ($this.data('typeahead')) return
-    $this.typeahead($this.data())
-  })
-
-}(window.jQuery);
-/* ==========================================================
- * bootstrap-affix.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#affix
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* AFFIX CLASS DEFINITION
-  * ====================== */
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, $.fn.affix.defaults, options)
-    this.$window = $(window)
-      .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.affix.data-api',  $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
-    this.$element = $(element)
-    this.checkPosition()
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-      , scrollTop = this.$window.scrollTop()
-      , position = this.$element.offset()
-      , offset = this.options.offset
-      , offsetBottom = offset.bottom
-      , offsetTop = offset.top
-      , reset = 'affix affix-top affix-bottom'
-      , affix
-
-    if (typeof offset != 'object') offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function') offsetTop = offset.top()
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
-    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
-      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
-      'bottom' : offsetTop != null && scrollTop <= offsetTop ?
-      'top'    : false
-
-    if (this.affixed === affix) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
-    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
-  }
-
-
- /* AFFIX PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.affix
-
-  $.fn.affix = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('affix')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.affix.Constructor = Affix
-
-  $.fn.affix.defaults = {
-    offset: 0
-  }
-
-
- /* AFFIX NO CONFLICT
-  * ================= */
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
- /* AFFIX DATA-API
-  * ============== */
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-        , data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      data.offsetBottom && (data.offset.bottom = data.offsetBottom)
-      data.offsetTop && (data.offset.top = data.offsetTop)
-
-      $spy.affix(data)
-    })
-  })
-
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.min.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.min.js
deleted file mode 100644
index 42501777..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* Bootstrap.js v2.3.0 by @fat & @mdo
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||s.toggleClass("open"),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on(".dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout),n.hoverState="in",this.timeout=setTimeout(function(){n.hoverState=="in"&&n.show()},n.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.css b/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.css
deleted file mode 100644
index d437aff6..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.css
+++ /dev/null
@@ -1,30 +0,0 @@
-.com { color: #93a1a1; }
-.lit { color: #195f91; }
-.pun, .opn, .clo { color: #93a1a1; }
-.fun { color: #dc322f; }
-.str, .atv { color: #D14; }
-.kwd, .prettyprint .tag { color: #1e347b; }
-.typ, .atn, .dec, .var { color: teal; }
-.pln { color: #48484c; }
-
-.prettyprint {
-  padding: 8px;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-.prettyprint.linenums {
-  -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-     -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-          box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-}
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums {
-  margin: 0 0 0 33px; /* IE indents via margin-left */
-}
-ol.linenums li {
-  padding-left: 12px;
-  color: #bebec5;
-  line-height: 20px;
-  text-shadow: 0 1px 0 #fff;
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.js
deleted file mode 100644
index eef5ad7e..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/google-code-prettify/prettify.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
-(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
-[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
-f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
-(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
-{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
-t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
-"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
-l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
-q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
-q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
-"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
-a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
-for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
-m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
-a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
-j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
-"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
-H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
-J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
-I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
-["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
-/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
-["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
-hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
-!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
-250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
-PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/holder/holder.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/holder/holder.js
deleted file mode 100755
index 9c36d428..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/holder/holder.js
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
-
-Holder - 1.9 - client side image placeholders
-(c) 2012-2013 Ivan Malopinsky / http://imsky.co
-
-Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
-Commercial use requires attribution.
-
-*/
-
-var Holder = Holder || {};
-(function (app, win) {
-
-var preempted = false,
-fallback = false,
-canvas = document.createElement('canvas');
-
-//getElementsByClassName polyfill
-document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})
-
-//getComputedStyle polyfill
-window.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\-([a-z]){1})/g;return t=="float"&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})
-
-//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
-function contentLoaded(n,t){var l="complete",s="readystatechange",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?"addEventListener":"attachEvent",v=i.addEventListener?"removeEventListener":"detachEvent",f=i.addEventListener?"":"on",r=function(e){(e.type!=s||i.readyState==l)&&((e.type=="load"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll("left")}catch(n){setTimeout(o,50);return}r("poll")};if(i.readyState==l)t.call(n,"lazy");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+"DOMContentLoaded",r,u),i[e](f+s,r,u),n[e](f+"load",r,u)}};
-
-//https://gist.github.com/991057 by Jed Schmidt with modifications
-function selector(a){
-	a=a.match(/^(\W)?(.*)/);var b=document["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2]);
-	var ret=[];	b!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]);	return ret;
-}
-
-//shallow object property extend
-function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
-
-//hasOwnProperty polyfill
-if (!Object.prototype.hasOwnProperty)
-	Object.prototype.hasOwnProperty = function(prop) {
-		var proto = this.__proto__ || this.constructor.prototype;
-		return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
-	}
-
-function text_size(width, height, template) {
-	var dimension_arr = [height, width].sort();
-	var maxFactor = Math.round(dimension_arr[1] / 16),
-		minFactor = Math.round(dimension_arr[0] / 16);
-	var text_height = Math.max(template.size, maxFactor);
-	return {
-		height: text_height
-	}
-}
-
-function draw(ctx, dimensions, template, ratio) {
-	var ts = text_size(dimensions.width, dimensions.height, template);
-	var text_height = ts.height;
-	var width = dimensions.width * ratio, height = dimensions.height * ratio;
-	var font = template.font ? template.font : "sans-serif";
-	canvas.width = width;
-	canvas.height = height;
-	ctx.textAlign = "center";
-	ctx.textBaseline = "middle";
-	ctx.fillStyle = template.background;
-	ctx.fillRect(0, 0, width, height);
-	ctx.fillStyle = template.foreground;
-	ctx.font = "bold " + text_height + "px "+font;
-	var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height);
-	if (ctx.measureText(text).width / width > 1) {
-		text_height = template.size / (ctx.measureText(text).width / width);
-	}
-	//Resetting font size if necessary
-	ctx.font = "bold " + (text_height * ratio) + "px "+font;
-	ctx.fillText(text, (width / 2), (height / 2), width);
-	return canvas.toDataURL("image/png");
-}
-
-function render(mode, el, holder, src) {
-	var dimensions = holder.dimensions,
-		theme = holder.theme,
-		text = holder.text ? decodeURIComponent(holder.text) : holder.text;
-	var dimensions_caption = dimensions.width + "x" + dimensions.height;
-	theme = (text ? extend(theme, {	text: text }) : theme);
-	theme = (holder.font ? extend(theme, {font: holder.font}) : theme);
-
-	var ratio = 1;
-	if(window.devicePixelRatio && window.devicePixelRatio > 1){
-		ratio = window.devicePixelRatio;
-	}
-
-	if (mode == "image") {
-		el.setAttribute("data-src", src);
-		el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
-
-		if(fallback || !holder.auto){
-		    el.style.width = dimensions.width + "px";
-		    el.style.height = dimensions.height + "px";
-		}
-
-		if (fallback) {
-			el.style.backgroundColor = theme.background;
-
-		}
-		else{
-			el.setAttribute("src", draw(ctx, dimensions, theme, ratio));
-		}
-	} else {
-		if (!fallback) {
-			el.style.backgroundImage = "url(" + draw(ctx, dimensions, theme, ratio) + ")";
-			el.style.backgroundSize = dimensions.width+"px "+dimensions.height+"px";
-		}
-	}
-};
-
-function fluid(el, holder, src) {
-	var dimensions = holder.dimensions,
-		theme = holder.theme,
-		text = holder.text;
-	var dimensions_caption = dimensions.width + "x" + dimensions.height;
-	theme = (text ? extend(theme, {
-		text: text
-	}) : theme);
-
-	var fluid = document.createElement("div");
-
-	fluid.style.backgroundColor = theme.background;
-	fluid.style.color = theme.foreground;
-	fluid.className = el.className + " holderjs-fluid";
-	fluid.style.width = holder.dimensions.width + (holder.dimensions.width.indexOf("%")>0?"":"px");
-	fluid.style.height = holder.dimensions.height + (holder.dimensions.height.indexOf("%")>0?"":"px");
-	fluid.id = el.id;
-
-	el.style.width=0;
-	el.style.height=0;
-
-	if (theme.text) {
-		fluid.appendChild(document.createTextNode(theme.text))
-	} else {
-		fluid.appendChild(document.createTextNode(dimensions_caption))
-		fluid_images.push(fluid);
-		setTimeout(fluid_update, 0);
-	}
-
-	el.parentNode.insertBefore(fluid, el.nextSibling)
-
-	if(window.jQuery){
-	    jQuery(function($){
-		$(el).on("load", function(){
-		   el.style.width = fluid.style.width;
-		   el.style.height = fluid.style.height;
-		   $(el).show();
-		   $(fluid).remove();
-		});
-	    })
-	}
-}
-
-function fluid_update() {
-	for (i in fluid_images) {
-		if(!fluid_images.hasOwnProperty(i)) continue;
-		var el = fluid_images[i],
-			label = el.firstChild;
-
-		el.style.lineHeight = el.offsetHeight+"px";
-		label.data = el.offsetWidth + "x" + el.offsetHeight;
-	}
-}
-
-function parse_flags(flags, options) {
-
-	var ret = {
-		theme: settings.themes.gray
-	}, render = false;
-
-	for (sl = flags.length, j = 0; j < sl; j++) {
-		var flag = flags[j];
-		if (app.flags.dimensions.match(flag)) {
-			render = true;
-			ret.dimensions = app.flags.dimensions.output(flag);
-		} else if (app.flags.fluid.match(flag)) {
-			render = true;
-			ret.dimensions = app.flags.fluid.output(flag);
-			ret.fluid = true;
-		} else if (app.flags.colors.match(flag)) {
-			ret.theme = app.flags.colors.output(flag);
-		} else if (options.themes[flag]) {
-			//If a theme is specified, it will override custom colors
-			ret.theme = options.themes[flag];
-		} else if (app.flags.text.match(flag)) {
-			ret.text = app.flags.text.output(flag);
-		} else if(app.flags.font.match(flag)){
-			ret.font = app.flags.font.output(flag);
-		}
-		else if(app.flags.auto.match(flag)){
-			ret.auto = true;
-		}
-	}
-
-	return render ? ret : false;
-
-};
-
-if (!canvas.getContext) {
-	fallback = true;
-} else {
-	if (canvas.toDataURL("image/png")
-		.indexOf("data:image/png") < 0) {
-		//Android doesn't support data URI
-		fallback = true;
-	} else {
-		var ctx = canvas.getContext("2d");
-	}
-}
-
-var fluid_images = [];
-
-var settings = {
-	domain: "holder.js",
-	images: "img",
-	bgnodes: ".holderjs",
-	themes: {
-		"gray": {
-			background: "#eee",
-			foreground: "#aaa",
-			size: 12
-		},
-			"social": {
-			background: "#3a5a97",
-			foreground: "#fff",
-			size: 12
-		},
-			"industrial": {
-			background: "#434A52",
-			foreground: "#C2F200",
-			size: 12
-		}
-	},
-	stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}"
-};
-
-
-app.flags = {
-	dimensions: {
-		regex: /^(\d+)x(\d+)$/,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				width: +exec[1],
-				height: +exec[2]
-			}
-		}
-	},
-	fluid: {
-		regex: /^([0-9%]+)x([0-9%]+)$/,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				width: exec[1],
-				height: exec[2]
-			}
-		}
-	},
-	colors: {
-		regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				size: settings.themes.gray.size,
-				foreground: "#" + exec[2],
-				background: "#" + exec[1]
-			}
-		}
-	},
-	text: {
-		regex: /text\:(.*)/,
-		output: function (val) {
-			return this.regex.exec(val)[1];
-		}
-	},
-	font: {
-	    regex: /font\:(.*)/,
-	    output: function(val){
-		return this.regex.exec(val)[1];
-	    }
-	},
-	auto: {
-	    regex: /^auto$/
-	}
-}
-
-for (var flag in app.flags) {
-	if(!app.flags.hasOwnProperty(flag)) continue;
-	app.flags[flag].match = function (val) {
-		return val.match(this.regex)
-	}
-}
-
-app.add_theme = function (name, theme) {
-	name != null && theme != null && (settings.themes[name] = theme);
-	return app;
-};
-
-app.add_image = function (src, el) {
-	var node = selector(el);
-	if (node.length) {
-		for (var i = 0, l = node.length; i < l; i++) {
-			var img = document.createElement("img")
-			img.setAttribute("data-src", src);
-			node[i].appendChild(img);
-		}
-	}
-	return app;
-};
-
-app.run = function (o) {
-	var options = extend(settings, o), images = [];
-
-	if(options.images instanceof window.NodeList){
-	    imageNodes = options.images;
-	}
-	else if(options.images instanceof window.Node){
-	    imageNodes = [options.images];
-	}
-	else{
-	    imageNodes = selector(options.images);
-	}
-
-	if(options.elements instanceof window.NodeList){
-	    bgnodes = options.bgnodes;
-	}
-	else if(options.bgnodes instanceof window.Node){
-	    bgnodes = [options.bgnodes];
-	}
-	else{
-	    bgnodes = selector(options.bgnodes);
-	}
-
-	preempted = true;
-
-	for (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]);
-
-	var holdercss = document.getElementById("holderjs-style");
-
-	if(!holdercss){
-	    holdercss = document.createElement("style");
-	    holdercss.setAttribute("id", "holderjs-style");
-	    holdercss.type = "text/css";
-	    document.getElementsByTagName("head")[0].appendChild(holdercss);
-	}
-
-	if(holdercss.styleSheet){
-	    holdercss.styleSheet += options.stylesheet;
-	}
-	else{
-	    holdercss.textContent+= options.stylesheet;
-	}
-
-	var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)");
-
-	for (var l = bgnodes.length, i = 0; i < l; i++) {
-		var src = window.getComputedStyle(bgnodes[i], null)
-			.getPropertyValue("background-image");
-		var flags = src.match(cssregex);
-		if (flags) {
-			var holder = parse_flags(flags[1].split("/"), options);
-			if (holder) {
-				render("background", bgnodes[i], holder, src);
-			}
-		}
-	}
-
-	for (var l = images.length, i = 0; i < l; i++) {
-		var src = images[i].getAttribute("src") || images[i].getAttribute("data-src");
-		if (src != null && src.indexOf(options.domain) >= 0) {
-			var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)
-				.split("/"), options);
-			if (holder) {
-				if (holder.fluid) {
-					fluid(images[i], holder, src);
-				} else {
-					render("image", images[i], holder, src);
-				}
-			}
-		}
-	}
-	return app;
-};
-
-contentLoaded(win, function () {
-	if (window.addEventListener) {
-		window.addEventListener("resize", fluid_update, false);
-		window.addEventListener("orientationchange", fluid_update, false);
-	} else {
-		window.attachEvent("onresize", fluid_update)
-	}
-	preempted || app.run();
-});
-
-if ( typeof define === "function" && define.amd ) {
-	define( "Holder", [], function () { return app; } );
-}
-
-})(Holder, window);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/html5shiv.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/html5shiv.js
deleted file mode 100644
index 784f221c..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/html5shiv.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
-for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
diff --git a/src/main/webapp/bower_components/bootstrap/docs/assets/js/jquery.js b/src/main/webapp/bower_components/bootstrap/docs/assets/js/jquery.js
deleted file mode 100644
index 006e9531..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/assets/js/jquery.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery.min.map
-*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
-return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
-}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/base-css.html b/src/main/webapp/bower_components/bootstrap/docs/base-css.html
deleted file mode 100644
index d1ca3fb8..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/base-css.html
+++ /dev/null
@@ -1,2215 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Base · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="active">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Base CSS</h1>
-    <p class="lead">Fundamental HTML elements styled and enhanced with extensible classes.</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#typography"><i class="icon-chevron-right"></i> Typography</a></li>
-          <li><a href="#code"><i class="icon-chevron-right"></i> Code</a></li>
-          <li><a href="#tables"><i class="icon-chevron-right"></i> Tables</a></li>
-          <li><a href="#forms"><i class="icon-chevron-right"></i> Forms</a></li>
-          <li><a href="#buttons"><i class="icon-chevron-right"></i> Buttons</a></li>
-          <li><a href="#images"><i class="icon-chevron-right"></i> Images</a></li>
-          <li><a href="#icons"><i class="icon-chevron-right"></i> Icons by Glyphicons</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Typography
-        ================================================== -->
-        <section id="typography">
-          <div class="page-header">
-            <h1>Typography</h1>
-          </div>
-
-          <h2 id="headings">Headings</h2>
-          <p>All HTML headings, <code>&lt;h1&gt;</code> through <code>&lt;h6&gt;</code> are available.</p>
-          <div class="bs-docs-example">
-            <h1>h1. Heading 1</h1>
-            <h2>h2. Heading 2</h2>
-            <h3>h3. Heading 3</h3>
-            <h4>h4. Heading 4</h4>
-            <h5>h5. Heading 5</h5>
-            <h6>h6. Heading 6</h6>
-          </div>
-
-          <h2 id="body-copy">Body copy</h2>
-          <p>Bootstrap's global default <code>font-size</code> is <strong>14px</strong>, with a <code>line-height</code> of <strong>20px</strong>. This is applied to the <code>&lt;body&gt;</code> and all paragraphs. In addition, <code>&lt;p&gt;</code> (paragraphs) receive a bottom margin of half their line-height (10px by default).</p>
-          <div class="bs-docs-example">
-            <p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.</p>
-            <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.</p>
-            <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
-          </div>
-          <pre class="prettyprint">&lt;p&gt;...&lt;/p&gt;</pre>
-
-          <h3>Lead body copy</h3>
-          <p>Make a paragraph stand out by adding <code>.lead</code>.</p>
-          <div class="bs-docs-example">
-            <p class="lead">Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.</p>
-          </div>
-          <pre class="prettyprint">&lt;p class="lead"&gt;...&lt;/p&gt;</pre>
-
-          <h3>Built with Less</h3>
-          <p>The typographic scale is based on two LESS variables in <strong>variables.less</strong>: <code>@baseFontSize</code> and <code>@baseLineHeight</code>. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2 id="emphasis">Emphasis</h2>
-          <p>Make use of HTML's default emphasis tags with lightweight styles.</p>
-
-          <h3><code>&lt;small&gt;</code></h3>
-          <p>For de-emphasizing inline or blocks of text, <small>use the small tag.</small></p>
-          <div class="bs-docs-example">
-            <p><small>This line of text is meant to be treated as fine print.</small></p>
-          </div>
-<pre class="prettyprint">
-&lt;p&gt;
-  &lt;small&gt;This line of text is meant to be treated as fine print.&lt;/small&gt;
-&lt;/p&gt;
-</pre>
-
-          <h3>Bold</h3>
-          <p>For emphasizing a snippet of text with a heavier font-weight.</p>
-          <div class="bs-docs-example">
-            <p>The following snippet of text is <strong>rendered as bold text</strong>.</p>
-          </div>
-          <pre class="prettyprint">&lt;strong&gt;rendered as bold text&lt;/strong&gt;</pre>
-
-          <h3>Italics</h3>
-          <p>For emphasizing a snippet of text with italics.</p>
-          <div class="bs-docs-example">
-            <p>The following snippet of text is <em>rendered as italicized text</em>.</p>
-          </div>
-          <pre class="prettyprint">&lt;em&gt;rendered as italicized text&lt;/em&gt;</pre>
-
-          <p><span class="label label-info">Heads up!</span> Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.</p>
-
-          <h3>Alignment classes</h3>
-          <p>Easily realign text to components with text alignment classes.</p>
-          <div class="bs-docs-example">
-            <p class="text-left">Left aligned text.</p>
-            <p class="text-center">Center aligned text.</p>
-            <p class="text-right">Right aligned text.</p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p class="text-left"&gt;Left aligned text.&lt;/p&gt;
-&lt;p class="text-center"&gt;Center aligned text.&lt;/p&gt;
-&lt;p class="text-right"&gt;Right aligned text.&lt;/p&gt;
-</pre>
-
-          <h3>Emphasis classes</h3>
-          <p>Convey meaning through color with a handful of emphasis utility classes.</p>
-          <div class="bs-docs-example">
-            <p class="muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
-            <p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
-            <p class="text-error">Donec ullamcorper nulla non metus auctor fringilla.</p>
-            <p class="text-info">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>
-            <p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p class="muted"&gt;Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.&lt;/p&gt;
-&lt;p class="text-warning"&gt;Etiam porta sem malesuada magna mollis euismod.&lt;/p&gt;
-&lt;p class="text-error"&gt;Donec ullamcorper nulla non metus auctor fringilla.&lt;/p&gt;
-&lt;p class="text-info"&gt;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.&lt;/p&gt;
-&lt;p class="text-success"&gt;Duis mollis, est non commodo luctus, nisi erat porttitor ligula.&lt;/p&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2 id="abbreviations">Abbreviations</h2>
-          <p>Stylized implementation of HTML's <code>&lt;abbr&gt;</code> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a <code>title</code> attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.</p>
-
-          <h3><code>&lt;abbr&gt;</code></h3>
-          <p>For expanded text on long hover of an abbreviation, include the <code>title</code> attribute.</p>
-          <div class="bs-docs-example">
-            <p>An abbreviation of the word attribute is <abbr title="attribute">attr</abbr>.</p>
-          </div>
-          <pre class="prettyprint">&lt;abbr title="attribute"&gt;attr&lt;/abbr&gt;</pre>
-
-          <h3><code>&lt;abbr class="initialism"&gt;</code></h3>
-          <p>Add <code>.initialism</code> to an abbreviation for a slightly smaller font-size.</p>
-          <div class="bs-docs-example">
-            <p><abbr title="HyperText Markup Language" class="initialism">HTML</abbr> is the best thing since sliced bread.</p>
-          </div>
-          <pre class="prettyprint">&lt;abbr title="HyperText Markup Language" class="initialism"&gt;HTML&lt;/abbr&gt;</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2 id="addresses">Addresses</h2>
-          <p>Present contact information for the nearest ancestor or the entire body of work.</p>
-
-          <h3><code>&lt;address&gt;</code></h3>
-          <p>Preserve formatting by ending all lines with <code>&lt;br&gt;</code>.</p>
-          <div class="bs-docs-example">
-            <address>
-              <strong>Twitter, Inc.</strong><br>
-              795 Folsom Ave, Suite 600<br>
-              San Francisco, CA 94107<br>
-              <abbr title="Phone">P:</abbr> (123) 456-7890
-            </address>
-            <address>
-              <strong>Full Name</strong><br>
-              <a href="mailto:#">first.last@example.com</a>
-            </address>
-          </div>
-<pre class="prettyprint linenums">
-&lt;address&gt;
-  &lt;strong&gt;Twitter, Inc.&lt;/strong&gt;&lt;br&gt;
-  795 Folsom Ave, Suite 600&lt;br&gt;
-  San Francisco, CA 94107&lt;br&gt;
-  &lt;abbr title="Phone"&gt;P:&lt;/abbr&gt; (123) 456-7890
-&lt;/address&gt;
-
-&lt;address&gt;
-  &lt;strong&gt;Full Name&lt;/strong&gt;&lt;br&gt;
-  &lt;a href="mailto:#"&gt;first.last@example.com&lt;/a&gt;
-&lt;/address&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2 id="blockquotes">Blockquotes</h2>
-          <p>For quoting blocks of content from another source within your document.</p>
-
-          <h3>Default blockquote</h3>
-          <p>Wrap <code>&lt;blockquote&gt;</code> around any <abbr title="HyperText Markup Language">HTML</abbr> as the quote. For straight quotes we recommend a <code>&lt;p&gt;</code>.</p>
-          <div class="bs-docs-example">
-            <blockquote>
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote&gt;
-  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.&lt;/p&gt;
-&lt;/blockquote&gt;
-</pre>
-
-          <h3>Blockquote options</h3>
-          <p>Style and content changes for simple variations on a standard blockquote.</p>
-
-          <h4>Naming a source</h4>
-          <p>Add <code>&lt;small&gt;</code> tag for identifying the source. Wrap the name of the source work in <code>&lt;cite&gt;</code>.</p>
-          <div class="bs-docs-example">
-            <blockquote>
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-              <small>Someone famous in <cite title="Source Title">Source Title</cite></small>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote&gt;
-  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.&lt;/p&gt;
-  &lt;small&gt;Someone famous &lt;cite title="Source Title"&gt;Source Title&lt;/cite&gt;&lt;/small&gt;
-&lt;/blockquote&gt;
-</pre>
-
-          <h4>Alternate displays</h4>
-          <p>Use <code>.pull-right</code> for a floated, right-aligned blockquote.</p>
-          <div class="bs-docs-example" style="overflow: hidden;">
-            <blockquote class="pull-right">
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-              <small>Someone famous in <cite title="Source Title">Source Title</cite></small>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote class="pull-right"&gt;
-  ...
-&lt;/blockquote&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <!-- Lists -->
-          <h2 id="lists">Lists</h2>
-
-          <h3>Unordered</h3>
-          <p>A list of items in which the order does <em>not</em> explicitly matter.</p>
-          <div class="bs-docs-example">
-            <ul>
-              <li>Lorem ipsum dolor sit amet</li>
-              <li>Consectetur adipiscing elit</li>
-              <li>Integer molestie lorem at massa</li>
-              <li>Facilisis in pretium nisl aliquet</li>
-              <li>Nulla volutpat aliquam velit
-                <ul>
-                  <li>Phasellus iaculis neque</li>
-                  <li>Purus sodales ultricies</li>
-                  <li>Vestibulum laoreet porttitor sem</li>
-                  <li>Ac tristique libero volutpat at</li>
-                </ul>
-              </li>
-              <li>Faucibus porta lacus fringilla vel</li>
-              <li>Aenean sit amet erat nunc</li>
-              <li>Eget porttitor lorem</li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Ordered</h3>
-          <p>A list of items in which the order <em>does</em> explicitly matter.</p>
-          <div class="bs-docs-example">
-            <ol>
-              <li>Lorem ipsum dolor sit amet</li>
-              <li>Consectetur adipiscing elit</li>
-              <li>Integer molestie lorem at massa</li>
-              <li>Facilisis in pretium nisl aliquet</li>
-              <li>Nulla volutpat aliquam velit</li>
-              <li>Faucibus porta lacus fringilla vel</li>
-              <li>Aenean sit amet erat nunc</li>
-              <li>Eget porttitor lorem</li>
-            </ol>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ol&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ol&gt;
-</pre>
-
-        <h3>Unstyled</h3>
-        <p>Remove the default <code>list-style</code> and left padding on list items (immediate children only).</p>
-        <div class="bs-docs-example">
-          <ul class="unstyled">
-            <li>Lorem ipsum dolor sit amet</li>
-            <li>Consectetur adipiscing elit</li>
-            <li>Integer molestie lorem at massa</li>
-            <li>Facilisis in pretium nisl aliquet</li>
-            <li>Nulla volutpat aliquam velit
-              <ul>
-                <li>Phasellus iaculis neque</li>
-                <li>Purus sodales ultricies</li>
-                <li>Vestibulum laoreet porttitor sem</li>
-                <li>Ac tristique libero volutpat at</li>
-              </ul>
-            </li>
-            <li>Faucibus porta lacus fringilla vel</li>
-            <li>Aenean sit amet erat nunc</li>
-            <li>Eget porttitor lorem</li>
-          </ul>
-        </div>
-<pre class="prettyprint linenums">
-&lt;ul class="unstyled"&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        <h3>Inline</h3>
-        <p>Place all list items on a single line with <code>inline-block</code> and some light padding.</p>
-        <div class="bs-docs-example">
-          <ul class="inline">
-            <li>Lorem ipsum</li>
-            <li>Phasellus iaculis</li>
-            <li>Nulla volutpat</li>
-          </ul>
-        </div>
-<pre class="prettyprint linenums">
-&lt;ul class="inline"&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        <h3>Description</h3>
-        <p>A list of terms with their associated descriptions.</p>
-        <div class="bs-docs-example">
-          <dl>
-            <dt>Description lists</dt>
-            <dd>A description list is perfect for defining terms.</dd>
-            <dt>Euismod</dt>
-            <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
-            <dd>Donec id elit non mi porta gravida at eget metus.</dd>
-            <dt>Malesuada porta</dt>
-            <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
-          </dl>
-        </div>
-<pre class="prettyprint linenums">
-&lt;dl&gt;
-  &lt;dt&gt;...&lt;/dt&gt;
-  &lt;dd&gt;...&lt;/dd&gt;
-&lt;/dl&gt;
-</pre>
-
-        <h4>Horizontal description</h4>
-        <p>Make terms and descriptions in <code>&lt;dl&gt;</code> line up side-by-side.</p>
-        <div class="bs-docs-example">
-          <dl class="dl-horizontal">
-            <dt>Description lists</dt>
-            <dd>A description list is perfect for defining terms.</dd>
-            <dt>Euismod</dt>
-            <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
-            <dd>Donec id elit non mi porta gravida at eget metus.</dd>
-            <dt>Malesuada porta</dt>
-            <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
-            <dt>Felis euismod semper eget lacinia</dt>
-            <dd>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
-          </dl>
-        </div>
-<pre class="prettyprint linenums">
-&lt;dl class="dl-horizontal"&gt;
-  &lt;dt&gt;...&lt;/dt&gt;
-  &lt;dd&gt;...&lt;/dd&gt;
-&lt;/dl&gt;
-</pre>
-        <p>
-          <span class="label label-info">Heads up!</span>
-          Horizontal description lists will truncate terms that are too long to fit in the left column fix <code>text-overflow</code>. In narrower viewports, they will change to the default stacked layout.
-        </p>
-      </section>
-
-
-
-        <!-- Code
-        ================================================== -->
-        <section id="code">
-          <div class="page-header">
-            <h1>Code</h1>
-          </div>
-
-          <h2>Inline</h2>
-          <p>Wrap inline snippets of code with <code>&lt;code&gt;</code>.</p>
-<div class="bs-docs-example">
-  For example, <code>&lt;section&gt;</code> should be wrapped as inline.
-</div>
-<pre class="prettyprint linenums">
-For example, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; should be wrapped as inline.
-</pre>
-
-          <h2>Basic block</h2>
-          <p>Use <code>&lt;pre&gt;</code> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.</p>
-<div class="bs-docs-example">
-  <pre>&lt;p&gt;Sample text here...&lt;/p&gt;</pre>
-</div>
-<pre class="prettyprint linenums" style="margin-bottom: 9px;">
-&lt;pre&gt;
-  &amp;lt;p&amp;gt;Sample text here...&amp;lt;/p&amp;gt;
-&lt;/pre&gt;
-</pre>
-          <p><span class="label label-info">Heads up!</span> Be sure to keep code within <code>&lt;pre&gt;</code> tags as close to the left as possible; it will render all tabs.</p>
-          <p>You may optionally add the <code>.pre-scrollable</code> class which will set a max-height of 350px and provide a y-axis scrollbar.</p>
-        </section>
-
-
-
-        <!-- Tables
-        ================================================== -->
-        <section id="tables">
-          <div class="page-header">
-            <h1>Tables</h1>
-          </div>
-
-          <h2>Default styles</h2>
-          <p>For basic styling&mdash;light padding and only horizontal dividers&mdash;add the base class <code>.table</code> to any <code>&lt;table&gt;</code>.</p>
-          <div class="bs-docs-example">
-            <table class="table">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>First Name</th>
-                  <th>Last Name</th>
-                  <th>Username</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td>Larry</td>
-                  <td>the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums">
-&lt;table class="table"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Optional classes</h2>
-          <p>Add any of the following classes to the <code>.table</code> base class.</p>
-
-          <h3><code>.table-striped</code></h3>
-          <p>Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).</p>
-          <div class="bs-docs-example">
-            <table class="table table-striped">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>First Name</th>
-                  <th>Last Name</th>
-                  <th>Username</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td>Larry</td>
-                  <td>the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-striped"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>.table-bordered</code></h3>
-          <p>Add borders and rounded corners to the table.</p>
-          <div class="bs-docs-example">
-            <table class="table table-bordered">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>First Name</th>
-                  <th>Last Name</th>
-                  <th>Username</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td rowspan="2">1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@TwBootstrap</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums">
-&lt;table class="table table-bordered"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>.table-hover</code></h3>
-          <p>Enable a hover state on table rows within a <code>&lt;tbody&gt;</code>.</p>
-          <div class="bs-docs-example">
-            <table class="table table-hover">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>First Name</th>
-                  <th>Last Name</th>
-                  <th>Username</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-hover"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>.table-condensed</code></h3>
-          <p>Makes tables more compact by cutting cell padding in half.</p>
-          <div class="bs-docs-example">
-            <table class="table table-condensed">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>First Name</th>
-                  <th>Last Name</th>
-                  <th>Username</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-condensed"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Optional row classes</h2>
-          <p>Use contextual classes to color table rows.</p>
-          <table class="table table-bordered table-striped">
-            <colgroup>
-              <col class="span1">
-              <col class="span7">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>Class</th>
-                <th>Description</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <code>.success</code>
-                </td>
-                <td>Indicates a successful or positive action.</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.error</code>
-                </td>
-                <td>Indicates a dangerous or potentially negative action.</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.warning</code>
-                </td>
-                <td>Indicates a warning that might need attention.</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.info</code>
-                </td>
-                <td>Used as an alternative to the default styles.</td>
-              </tr>
-            </tbody>
-          </table>
-          <div class="bs-docs-example">
-            <table class="table">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>Product</th>
-                  <th>Payment Taken</th>
-                  <th>Status</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr class="success">
-                  <td>1</td>
-                  <td>TB - Monthly</td>
-                  <td>01/04/2012</td>
-                  <td>Approved</td>
-                </tr>
-                <tr class="error">
-                  <td>2</td>
-                  <td>TB - Monthly</td>
-                  <td>02/04/2012</td>
-                  <td>Declined</td>
-                </tr>
-                <tr class="warning">
-                  <td>3</td>
-                  <td>TB - Monthly</td>
-                  <td>03/04/2012</td>
-                  <td>Pending</td>
-                </tr>
-                <tr class="info">
-                  <td>4</td>
-                  <td>TB - Monthly</td>
-                  <td>04/04/2012</td>
-                  <td>Call in to confirm</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-<pre class="prettyprint linenums">
-...
-  &lt;tr class="success"&gt;
-    &lt;td&gt;1&lt;/td&gt;
-    &lt;td&gt;TB - Monthly&lt;/td&gt;
-    &lt;td&gt;01/04/2012&lt;/td&gt;
-    &lt;td&gt;Approved&lt;/td&gt;
-  &lt;/tr&gt;
-...
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Supported table markup</h2>
-          <p>List of supported table HTML elements and how they should be used.</p>
-          <table class="table table-bordered table-striped">
-            <colgroup>
-              <col class="span1">
-              <col class="span7">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>Tag</th>
-                <th>Description</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <code>&lt;table&gt;</code>
-                </td>
-                <td>
-                  Wrapping element for displaying data in a tabular format
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;thead&gt;</code>
-                </td>
-                <td>
-                  Container element for table header rows (<code>&lt;tr&gt;</code>) to label table columns
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;tbody&gt;</code>
-                </td>
-                <td>
-                  Container element for table rows (<code>&lt;tr&gt;</code>) in the body of the table
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;tr&gt;</code>
-                </td>
-                <td>
-                  Container element for a set of table cells (<code>&lt;td&gt;</code> or <code>&lt;th&gt;</code>) that appears on a single row
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;td&gt;</code>
-                </td>
-                <td>
-                  Default table cell
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;th&gt;</code>
-                </td>
-                <td>
-                  Special table cell for column (or row, depending on scope and placement) labels
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;caption&gt;</code>
-                </td>
-                <td>
-                  Description or summary of what the table holds, especially useful for screen readers
-                </td>
-              </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-&lt;table&gt;
-  &lt;caption&gt;...&lt;/caption&gt;
-  &lt;thead&gt;
-    &lt;tr&gt;
-      &lt;th&gt;...&lt;/th&gt;
-      &lt;th&gt;...&lt;/th&gt;
-    &lt;/tr&gt;
-  &lt;/thead&gt;
-  &lt;tbody&gt;
-    &lt;tr&gt;
-      &lt;td&gt;...&lt;/td&gt;
-      &lt;td&gt;...&lt;/td&gt;
-    &lt;/tr&gt;
-  &lt;/tbody&gt;
-&lt;/table&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Forms
-        ================================================== -->
-        <section id="forms">
-          <div class="page-header">
-            <h1>Forms</h1>
-          </div>
-
-          <h2>Default styles</h2>
-          <p>Individual form controls receive styling, but without any required base class on the <code>&lt;form&gt;</code> or large changes in markup. Results in stacked, left-aligned labels on top of form controls.</p>
-          <form class="bs-docs-example">
-            <fieldset>
-              <legend>Legend</legend>
-              <label>Label name</label>
-              <input type="text" placeholder="Type something…">
-              <span class="help-block">Example block-level help text here.</span>
-              <label class="checkbox">
-                <input type="checkbox"> Check me out
-              </label>
-              <button type="submit" class="btn">Submit</button>
-            </fieldset>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form&gt;
-  &lt;fieldset&gt;
-    &lt;legend&gt;Legend&lt;/legend&gt;
-    &lt;label&gt;Label name&lt;/label&gt;
-    &lt;input type="text" placeholder="Type something…"&gt;
-    &lt;span class="help-block"&gt;Example block-level help text here.&lt;/span&gt;
-    &lt;label class="checkbox"&gt;
-      &lt;input type="checkbox"&gt; Check me out
-    &lt;/label&gt;
-    &lt;button type="submit" class="btn"&gt;Submit&lt;/button&gt;
-  &lt;/fieldset&gt;
-&lt;/form&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Optional layouts</h2>
-          <p>Included with Bootstrap are three optional form layouts for common use cases.</p>
-
-          <h3>Search form</h3>
-          <p>Add <code>.form-search</code> to the form and <code>.search-query</code> to the <code>&lt;input&gt;</code> for an extra-rounded text input.</p>
-          <form class="bs-docs-example form-search">
-            <input type="text" class="input-medium search-query">
-            <button type="submit" class="btn">Search</button>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form class="form-search"&gt;
-  &lt;input type="text" class="input-medium search-query"&gt;
-  &lt;button type="submit" class="btn"&gt;Search&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>Inline form</h3>
-          <p>Add <code>.form-inline</code> for left-aligned labels and inline-block controls for a compact layout.</p>
-          <form class="bs-docs-example form-inline">
-            <input type="text" class="input-small" placeholder="Email">
-            <input type="password" class="input-small" placeholder="Password">
-            <label class="checkbox">
-              <input type="checkbox"> Remember me
-            </label>
-            <button type="submit" class="btn">Sign in</button>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form class="form-inline"&gt;
-  &lt;input type="text" class="input-small" placeholder="Email"&gt;
-  &lt;input type="password" class="input-small" placeholder="Password"&gt;
-  &lt;label class="checkbox"&gt;
-    &lt;input type="checkbox"&gt; Remember me
-  &lt;/label&gt;
-  &lt;button type="submit" class="btn"&gt;Sign in&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>Horizontal form</h3>
-          <p>Right align labels and float them to the left to make them appear on the same line as controls. Requires the most markup changes from a default form:</p>
-          <ul>
-            <li>Add <code>.form-horizontal</code> to the form</li>
-            <li>Wrap labels and controls in <code>.control-group</code></li>
-            <li>Add <code>.control-label</code> to the label</li>
-            <li>Wrap any associated controls in <code>.controls</code> for proper alignment</li>
-          </ul>
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="inputEmail">Email</label>
-              <div class="controls">
-                <input type="text" id="inputEmail" placeholder="Email">
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="inputPassword">Password</label>
-              <div class="controls">
-                <input type="password" id="inputPassword" placeholder="Password">
-              </div>
-            </div>
-            <div class="control-group">
-              <div class="controls">
-                <label class="checkbox">
-                  <input type="checkbox"> Remember me
-                </label>
-                <button type="submit" class="btn">Sign in</button>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form class="form-horizontal"&gt;
-  &lt;div class="control-group"&gt;
-    &lt;label class="control-label" for="inputEmail"&gt;Email&lt;/label&gt;
-    &lt;div class="controls"&gt;
-      &lt;input type="text" id="inputEmail" placeholder="Email"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="control-group"&gt;
-    &lt;label class="control-label" for="inputPassword"&gt;Password&lt;/label&gt;
-    &lt;div class="controls"&gt;
-      &lt;input type="password" id="inputPassword" placeholder="Password"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="control-group"&gt;
-    &lt;div class="controls"&gt;
-      &lt;label class="checkbox"&gt;
-        &lt;input type="checkbox"&gt; Remember me
-      &lt;/label&gt;
-      &lt;button type="submit" class="btn"&gt;Sign in&lt;/button&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Supported form controls</h2>
-          <p>Examples of standard form controls supported in an example form layout.</p>
-
-          <h3>Inputs</h3>
-          <p>Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.</p>
-          <p>Requires the use of a specified <code>type</code> at all times.</p>
-          <form class="bs-docs-example form-inline">
-            <input type="text" placeholder="Text input">
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text" placeholder="Text input"&gt;
-</pre>
-
-          <h3>Textarea</h3>
-          <p>Form control which supports multiple lines of text. Change <code>rows</code> attribute as necessary.</p>
-          <form class="bs-docs-example form-inline">
-            <textarea rows="3"></textarea>
-          </form>
-<pre class="prettyprint linenums">
-&lt;textarea rows="3"&gt;&lt;/textarea&gt;
-</pre>
-
-          <h3>Checkboxes and radios</h3>
-          <p>Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.</p>
-          <h4>Default (stacked)</h4>
-          <form class="bs-docs-example">
-            <label class="checkbox">
-              <input type="checkbox" value="">
-              Option one is this and that&mdash;be sure to include why it's great
-            </label>
-            <br>
-            <label class="radio">
-              <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
-              Option one is this and that&mdash;be sure to include why it's great
-            </label>
-            <label class="radio">
-              <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
-              Option two can be something else and selecting it will deselect option one
-            </label>
-          </form>
-<pre class="prettyprint linenums">
-&lt;label class="checkbox"&gt;
-  &lt;input type="checkbox" value=""&gt;
-  Option one is this and that&mdash;be sure to include why it's great
-&lt;/label&gt;
-
-&lt;label class="radio"&gt;
-  &lt;input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked&gt;
-  Option one is this and that&mdash;be sure to include why it's great
-&lt;/label&gt;
-&lt;label class="radio"&gt;
-  &lt;input type="radio" name="optionsRadios" id="optionsRadios2" value="option2"&gt;
-  Option two can be something else and selecting it will deselect option one
-&lt;/label&gt;
-</pre>
-
-          <h4>Inline checkboxes</h4>
-          <p>Add the <code>.inline</code> class to a series of checkboxes or radios for controls appear on the same line.</p>
-          <form class="bs-docs-example">
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
-            </label>
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
-            </label>
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
-            </label>
-          </form>
-<pre class="prettyprint linenums">
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox1" value="option1"&gt; 1
-&lt;/label&gt;
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox2" value="option2"&gt; 2
-&lt;/label&gt;
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox3" value="option3"&gt; 3
-&lt;/label&gt;
-</pre>
-
-          <h3>Selects</h3>
-          <p>Use the default option or specify a <code>multiple="multiple"</code> to show multiple options at once.</p>
-          <form class="bs-docs-example">
-            <select>
-              <option>1</option>
-              <option>2</option>
-              <option>3</option>
-              <option>4</option>
-              <option>5</option>
-            </select>
-            <br>
-            <select multiple="multiple">
-              <option>1</option>
-              <option>2</option>
-              <option>3</option>
-              <option>4</option>
-              <option>5</option>
-            </select>
-          </form>
-<pre class="prettyprint linenums">
-&lt;select&gt;
-  &lt;option&gt;1&lt;/option&gt;
-  &lt;option&gt;2&lt;/option&gt;
-  &lt;option&gt;3&lt;/option&gt;
-  &lt;option&gt;4&lt;/option&gt;
-  &lt;option&gt;5&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;select multiple="multiple"&gt;
-  &lt;option&gt;1&lt;/option&gt;
-  &lt;option&gt;2&lt;/option&gt;
-  &lt;option&gt;3&lt;/option&gt;
-  &lt;option&gt;4&lt;/option&gt;
-  &lt;option&gt;5&lt;/option&gt;
-&lt;/select&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Extending form controls</h2>
-          <p>Adding on top of existing browser controls, Bootstrap includes other useful form components.</p>
-
-          <h3>Prepended and appended inputs</h3>
-          <p>Add text or buttons before or after any text-based input. Do note that <code>select</code> elements are not supported here.</p>
-
-          <h4>Default options</h4>
-          <p>Wrap an <code>.add-on</code> and an <code>input</code> with one of two classes to prepend or append text to an input.</p>
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <span class="add-on">@</span>
-              <input class="span2" id="prependedInput" type="text" placeholder="Username">
-            </div>
-            <br>
-            <div class="input-append">
-              <input class="span2" id="appendedInput" type="text">
-              <span class="add-on">.00</span>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend"&gt;
-  &lt;span class="add-on"&gt;@&lt;/span&gt;
-  &lt;input class="span2" id="prependedInput" type="text" placeholder="Username"&gt;
-&lt;/div&gt;
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInput" type="text"&gt;
-  &lt;span class="add-on"&gt;.00&lt;/span&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Combined</h4>
-          <p>Use both classes and two instances of <code>.add-on</code> to prepend and append an input.</p>
-          <form class="bs-docs-example form-inline">
-            <div class="input-prepend input-append">
-              <span class="add-on">$</span>
-              <input class="span2" id="appendedPrependedInput" type="text">
-              <span class="add-on">.00</span>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend input-append"&gt;
-  &lt;span class="add-on"&gt;$&lt;/span&gt;
-  &lt;input class="span2" id="appendedPrependedInput" type="text"&gt;
-  &lt;span class="add-on"&gt;.00&lt;/span&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Buttons instead of text</h4>
-          <p>Instead of a <code>&lt;span&gt;</code> with text, use a <code>.btn</code> to attach a button (or two) to an input.</p>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedInputButton" type="text">
-              <button class="btn" type="button">Go!</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInputButton" type="text"&gt;
-  &lt;button class="btn" type="button"&gt;Go!&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedInputButtons" type="text">
-              <button class="btn" type="button">Search</button>
-              <button class="btn" type="button">Options</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInputButtons" type="text"&gt;
-  &lt;button class="btn" type="button"&gt;Search&lt;/button&gt;
-  &lt;button class="btn" type="button"&gt;Options&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Button dropdowns</h4>
-          <p></p>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedDropdownButton" type="text">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /input-append -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedDropdownButton" type="text"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      Action
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <input class="span2" id="prependedDropdownButton" type="text">
-            </div><!-- /input-prepend -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      Action
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-  &lt;input class="span2" id="prependedDropdownButton" type="text"&gt;
-&lt;/div&gt;
-</pre>
-
-          <form class="bs-docs-example">
-            <div class="input-prepend input-append">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <input class="span2" id="appendedPrependedDropdownButton" type="text">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /input-prepend input-append -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend input-append"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      Action
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-  &lt;input class="span2" id="appendedPrependedDropdownButton" type="text"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      Action
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Segmented dropdown groups</h4>
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <div class="btn-group">
-                <button class="btn" tabindex="-1">Action</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown" tabindex="-1">
-                  <span class="caret"></span>
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div>
-              <input type="text">
-            </div>
-            <div class="input-append">
-              <input type="text">
-              <div class="btn-group">
-                <button class="btn" tabindex="-1">Action</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown" tabindex="-1">
-                  <span class="caret"></span>
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form&gt;
-  &lt;div class="input-prepend"&gt;
-    &lt;div class="btn-group"&gt;...&lt;/div&gt;
-    &lt;input type="text"&gt;
-  &lt;/div&gt;
-  &lt;div class="input-append"&gt;
-    &lt;input type="text"&gt;
-    &lt;div class="btn-group"&gt;...&lt;/div&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-          <h4>Search form</h4>
-          <form class="bs-docs-example form-search">
-            <div class="input-append">
-              <input type="text" class="span2 search-query">
-              <button type="submit" class="btn">Search</button>
-            </div>
-            <div class="input-prepend">
-              <button type="submit" class="btn">Search</button>
-              <input type="text" class="span2 search-query">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form class="form-search"&gt;
-  &lt;div class="input-append"&gt;
-    &lt;input type="text" class="span2 search-query"&gt;
-    &lt;button type="submit" class="btn"&gt;Search&lt;/button&gt;
-  &lt;/div&gt;
-  &lt;div class="input-prepend"&gt;
-    &lt;button type="submit" class="btn"&gt;Search&lt;/button&gt;
-    &lt;input type="text" class="span2 search-query"&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>Control sizing</h3>
-          <p>Use relative sizing classes like <code>.input-large</code> or match your inputs to the grid column sizes using <code>.span*</code> classes.</p>
-
-          <h4>Block level inputs</h4>
-          <p>Make any <code>&lt;input&gt;</code> or <code>&lt;textarea&gt;</code> element behave like a block level element.</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls">
-              <input class="input-block-level" type="text" placeholder=".input-block-level">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-block-level" type="text" placeholder=".input-block-level"&gt;
-</pre>
-
-          <h4>Relative sizing</h4>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls docs-input-sizes">
-              <input class="input-mini" type="text" placeholder=".input-mini">
-              <input class="input-small" type="text" placeholder=".input-small">
-              <input class="input-medium" type="text" placeholder=".input-medium">
-              <input class="input-large" type="text" placeholder=".input-large">
-              <input class="input-xlarge" type="text" placeholder=".input-xlarge">
-              <input class="input-xxlarge" type="text" placeholder=".input-xxlarge">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-mini" type="text" placeholder=".input-mini"&gt;
-&lt;input class="input-small" type="text" placeholder=".input-small"&gt;
-&lt;input class="input-medium" type="text" placeholder=".input-medium"&gt;
-&lt;input class="input-large" type="text" placeholder=".input-large"&gt;
-&lt;input class="input-xlarge" type="text" placeholder=".input-xlarge"&gt;
-&lt;input class="input-xxlarge" type="text" placeholder=".input-xxlarge"&gt;
-</pre>
-          <p>
-            <span class="label label-info">Heads up!</span> In future versions, we'll be altering the use of these relative input classes to match our button sizes. For example, <code>.input-large</code> will increase the padding and font-size of an input.
-          </p>
-
-          <h4>Grid sizing</h4>
-          <p>Use <code>.span1</code> to <code>.span12</code> for inputs that match the same sizes of the grid columns.</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls docs-input-sizes">
-              <input class="span1" type="text" placeholder=".span1">
-              <input class="span2" type="text" placeholder=".span2">
-              <input class="span3" type="text" placeholder=".span3">
-              <select class="span1">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-              <select class="span2">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-              <select class="span3">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="span1" type="text" placeholder=".span1"&gt;
-&lt;input class="span2" type="text" placeholder=".span2"&gt;
-&lt;input class="span3" type="text" placeholder=".span3"&gt;
-&lt;select class="span1"&gt;
-  ...
-&lt;/select&gt;
-&lt;select class="span2"&gt;
-  ...
-&lt;/select&gt;
-&lt;select class="span3"&gt;
-  ...
-&lt;/select&gt;
-</pre>
-
-          <p>For multiple grid inputs per line, <strong>use the <code>.controls-row</code> modifier class for proper spacing</strong>. It floats the inputs to collapse white-space, sets the proper margins, and clears the float.</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls">
-              <input class="span5" type="text" placeholder=".span5">
-            </div>
-            <div class="controls controls-row">
-              <input class="span4" type="text" placeholder=".span4">
-              <input class="span1" type="text" placeholder=".span1">
-            </div>
-            <div class="controls controls-row">
-              <input class="span3" type="text" placeholder=".span3">
-              <input class="span2" type="text" placeholder=".span2">
-            </div>
-            <div class="controls controls-row">
-              <input class="span2" type="text" placeholder=".span2">
-              <input class="span3" type="text" placeholder=".span3">
-            </div>
-            <div class="controls controls-row">
-              <input class="span1" type="text" placeholder=".span1">
-              <input class="span4" type="text" placeholder=".span4">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="controls"&gt;
-  &lt;input class="span5" type="text" placeholder=".span5"&gt;
-&lt;/div&gt;
-&lt;div class="controls controls-row"&gt;
-  &lt;input class="span4" type="text" placeholder=".span4"&gt;
-  &lt;input class="span1" type="text" placeholder=".span1"&gt;
-&lt;/div&gt;
-...
-</pre>
-
-          <h3>Uneditable inputs</h3>
-          <p>Present data in a form that's not editable without using actual form markup.</p>
-          <form class="bs-docs-example">
-            <span class="input-xlarge uneditable-input">Some value here</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;span class="input-xlarge uneditable-input"&gt;Some value here&lt;/span&gt;
-</pre>
-
-          <h3>Form actions</h3>
-          <p>End a form with a group of actions (buttons). When placed within a <code>.form-actions</code>, the buttons will automatically indent to line up with the form controls.</p>
-          <form class="bs-docs-example">
-            <div class="form-actions">
-              <button type="submit" class="btn btn-primary">Save changes</button>
-              <button type="button" class="btn">Cancel</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="form-actions"&gt;
-  &lt;button type="submit" class="btn btn-primary"&gt;Save changes&lt;/button&gt;
-  &lt;button type="button" class="btn"&gt;Cancel&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Help text</h3>
-          <p>Inline and block level support for help text that appears around form controls.</p>
-          <h4>Inline help</h4>
-          <form class="bs-docs-example form-inline">
-            <input type="text"> <span class="help-inline">Inline help text</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text"&gt;&lt;span class="help-inline"&gt;Inline help text&lt;/span&gt;
-</pre>
-
-          <h4>Block help</h4>
-          <form class="bs-docs-example form-inline">
-            <input type="text">
-            <span class="help-block">A longer block of help text that breaks onto a new line and may extend beyond one line.</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text"&gt;&lt;span class="help-block"&gt;A longer block of help text that breaks onto a new line and may extend beyond one line.&lt;/span&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Form control states</h2>
-          <p>Provide feedback to users or visitors with basic feedback states on form controls and labels.</p>
-
-          <h3>Input focus</h3>
-          <p>We remove the default <code>outline</code> styles on some form controls and apply a <code>box-shadow</code> in its place for <code>:focus</code>.</p>
-          <form class="bs-docs-example form-inline">
-            <input class="input-xlarge focused" id="focusedInput" type="text" value="This is focused...">
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-xlarge" id="focusedInput" type="text" value="This is focused..."&gt;
-</pre>
-
-          <h3>Invalid inputs</h3>
-          <p>Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code>, add the <code>required</code> attribute if the field is not optional, and (if applicable) specify a <code>pattern</code>.</p>
-          <p>This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.</p>
-          <form class="bs-docs-example form-inline">
-            <input class="span3" type="email" placeholder="test@example.com" required>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="span3" type="email" required&gt;
-</pre>
-
-          <h3>Disabled inputs</h3>
-          <p>Add the <code>disabled</code> attribute on an input to prevent user input and trigger a slightly different look.</p>
-          <form class="bs-docs-example form-inline">
-            <input class="input-xlarge" id="disabledInput" type="text" placeholder="Disabled input here…" disabled>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-xlarge" id="disabledInput" type="text" placeholder="Disabled input here..." disabled&gt;
-</pre>
-
-          <h3>Validation states</h3>
-          <p>Bootstrap includes validation styles for error, warning, info, and success messages. To use, add the appropriate class to the surrounding <code>.control-group</code>.</p>
-
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group warning">
-              <label class="control-label" for="inputWarning">Input with warning</label>
-              <div class="controls">
-                <input type="text" id="inputWarning">
-                <span class="help-inline">Something may have gone wrong</span>
-              </div>
-            </div>
-            <div class="control-group error">
-              <label class="control-label" for="inputError">Input with error</label>
-              <div class="controls">
-                <input type="text" id="inputError">
-                <span class="help-inline">Please correct the error</span>
-              </div>
-            </div>
-            <div class="control-group info">
-              <label class="control-label" for="inputInfo">Input with info</label>
-              <div class="controls">
-                <input type="text" id="inputInfo">
-                <span class="help-inline">Username is taken</span>
-              </div>
-            </div>
-            <div class="control-group success">
-              <label class="control-label" for="inputSuccess">Input with success</label>
-              <div class="controls">
-                <input type="text" id="inputSuccess">
-                <span class="help-inline">Woohoo!</span>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="control-group warning"&gt;
-  &lt;label class="control-label" for="inputWarning"&gt;Input with warning&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputWarning"&gt;
-    &lt;span class="help-inline"&gt;Something may have gone wrong&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group error"&gt;
-  &lt;label class="control-label" for="inputError"&gt;Input with error&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputError"&gt;
-    &lt;span class="help-inline"&gt;Please correct the error&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group info"&gt;
-  &lt;label class="control-label" for="inputInfo"&gt;Input with info&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputInfo"&gt;
-    &lt;span class="help-inline"&gt;Username is already taken&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group success"&gt;
-  &lt;label class="control-label" for="inputSuccess"&gt;Input with success&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputSuccess"&gt;
-    &lt;span class="help-inline"&gt;Woohoo!&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Buttons
-        ================================================== -->
-        <section id="buttons">
-          <div class="page-header">
-            <h1>Buttons</h1>
-          </div>
-
-          <h2>Default buttons</h2>
-          <p>Button styles can be applied to anything with the <code>.btn</code> class applied. However, typically you'll want to apply these to only <code>&lt;a&gt;</code> and <code>&lt;button&gt;</code> elements for the best rendering.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>Button</th>
-                <th>class=""</th>
-                <th>Description</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td><button type="button" class="btn">Default</button></td>
-                <td><code>btn</code></td>
-                <td>Standard gray button with gradient</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-primary">Primary</button></td>
-                <td><code>btn btn-primary</code></td>
-                <td>Provides extra visual weight and identifies the primary action in a set of buttons</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-info">Info</button></td>
-                <td><code>btn btn-info</code></td>
-                <td>Used as an alternative to the default styles</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-success">Success</button></td>
-                <td><code>btn btn-success</code></td>
-                <td>Indicates a successful or positive action</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-warning">Warning</button></td>
-                <td><code>btn btn-warning</code></td>
-                <td>Indicates caution should be taken with this action</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-danger">Danger</button></td>
-                <td><code>btn btn-danger</code></td>
-                <td>Indicates a dangerous or potentially negative action</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-inverse">Inverse</button></td>
-                <td><code>btn btn-inverse</code></td>
-                <td>Alternate dark gray button, not tied to a semantic action or use</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-link">Link</button></td>
-                <td><code>btn btn-link</code></td>
-                <td>Deemphasize a button by making it look like a link while maintaining button behavior</td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h4>Cross browser compatibility</h4>
-          <p>IE9 doesn't crop background gradients on rounded corners, so we remove it. Related, IE9 jankifies disabled <code>button</code> elements, rendering text gray with a nasty text-shadow that we cannot fix.</p>
-
-
-          <h2>Button sizes</h2>
-          <p>Fancy larger or smaller buttons? Add <code>.btn-large</code>, <code>.btn-small</code>, or <code>.btn-mini</code> for additional sizes.</p>
-          <div class="bs-docs-example">
-            <p>
-              <button type="button" class="btn btn-large btn-primary">Large button</button>
-              <button type="button" class="btn btn-large">Large button</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-primary">Default button</button>
-              <button type="button" class="btn">Default button</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-small btn-primary">Small button</button>
-              <button type="button" class="btn btn-small">Small button</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-mini btn-primary">Mini button</button>
-              <button type="button" class="btn btn-mini">Mini button</button>
-            </p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p&gt;
-  &lt;button class="btn btn-large btn-primary" type="button"&gt;Large button&lt;/button&gt;
-  &lt;button class="btn btn-large" type="button"&gt;Large button&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-primary" type="button"&gt;Default button&lt;/button&gt;
-  &lt;button class="btn" type="button"&gt;Default button&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-small btn-primary" type="button"&gt;Small button&lt;/button&gt;
-  &lt;button class="btn btn-small" type="button"&gt;Small button&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-mini btn-primary" type="button"&gt;Mini button&lt;/button&gt;
-  &lt;button class="btn btn-mini" type="button"&gt;Mini button&lt;/button&gt;
-&lt;/p&gt;
-</pre>
-          <p>Create block level buttons&mdash;those that span the full width of a parent&mdash; by adding <code>.btn-block</code>.</p>
-          <div class="bs-docs-example">
-            <div class="well" style="max-width: 400px; margin: 0 auto 10px;">
-              <button type="button" class="btn btn-large btn-block btn-primary">Block level button</button>
-              <button type="button" class="btn btn-large btn-block">Block level button</button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;button class="btn btn-large btn-block btn-primary" type="button"&gt;Block level button&lt;/button&gt;
-&lt;button class="btn btn-large btn-block" type="button"&gt;Block level button&lt;/button&gt;
-</pre>
-
-
-          <h2>Disabled state</h2>
-          <p>Make buttons look unclickable by fading them back 50%.</p>
-
-          <h3>Anchor element</h3>
-          <p>Add the <code>.disabled</code> class to <code>&lt;a&gt;</code> buttons.</p>
-          <p class="bs-docs-example">
-            <a href="#" class="btn btn-large btn-primary disabled">Primary link</a>
-            <a href="#" class="btn btn-large disabled">Link</a>
-          </p>
-<pre class="prettyprint linenums">
-&lt;a href="#" class="btn btn-large btn-primary disabled"&gt;Primary link&lt;/a&gt;
-&lt;a href="#" class="btn btn-large disabled"&gt;Link&lt;/a&gt;
-</pre>
-          <p>
-            <span class="label label-info">Heads up!</span>
-            We use <code>.disabled</code> as a utility class here, similar to the common <code>.active</code> class, so no prefix is required. Also, this class is only for aesthetic; you must use custom JavaScript to disable links here.
-          </p>
-
-          <h3>Button element</h3>
-          <p>Add the <code>disabled</code> attribute to <code>&lt;button&gt;</code> buttons.</p>
-          <p class="bs-docs-example">
-            <button type="button" class="btn btn-large btn-primary disabled" disabled="disabled">Primary button</button>
-            <button type="button" class="btn btn-large" disabled>Button</button>
-          </p>
-<pre class="prettyprint linenums">
-&lt;button type="button" class="btn btn-large btn-primary disabled" disabled="disabled"&gt;Primary button&lt;/button&gt;
-&lt;button type="button" class="btn btn-large" disabled&gt;Button&lt;/button&gt;
-</pre>
-
-
-          <h2>One class, multiple tags</h2>
-          <p>Use the <code>.btn</code> class on an <code>&lt;a&gt;</code>, <code>&lt;button&gt;</code>, or <code>&lt;input&gt;</code> element.</p>
-          <form class="bs-docs-example">
-            <a class="btn" href="">Link</a>
-            <button class="btn" type="submit">Button</button>
-            <input class="btn" type="button" value="Input">
-            <input class="btn" type="submit" value="Submit">
-          </form>
-<pre class="prettyprint linenums">
-&lt;a class="btn" href=""&gt;Link&lt;/a&gt;
-&lt;button class="btn" type="submit"&gt;Button&lt;/button&gt;
-&lt;input class="btn" type="button" value="Input"&gt;
-&lt;input class="btn" type="submit" value="Submit"&gt;
-</pre>
-          <p>As a best practice, try to match the element for your context to ensure matching cross-browser rendering. If you have an <code>input</code>, use an <code>&lt;input type="submit"&gt;</code> for your button.</p>
-
-        </section>
-
-
-
-        <!-- Images
-        ================================================== -->
-        <section id="images">
-          <div class="page-header">
-            <h1>Images</h1>
-          </div>
-
-          <p>Add classes to an <code>&lt;img&gt;</code> element to easily style images in any project.</p>
-          <div class="bs-docs-example bs-docs-example-images">
-            <img data-src="holder.js/140x140" class="img-rounded">
-            <img data-src="holder.js/140x140" class="img-circle">
-            <img data-src="holder.js/140x140" class="img-polaroid">
-          </div>
-<pre class="prettyprint linenums">
-&lt;img src="..." class="img-rounded"&gt;
-&lt;img src="..." class="img-circle"&gt;
-&lt;img src="..." class="img-polaroid"&gt;
-</pre>
-          <p><span class="label label-info">Heads up!</span> <code>.img-rounded</code> and <code>.img-circle</code> do not work in IE7-8 due to lack of <code>border-radius</code> support.</p>
-
-
-        </section>
-
-
-
-        <!-- Icons
-        ================================================== -->
-        <section id="icons">
-          <div class="page-header">
-            <h1>Icons <small>by <a href="http://glyphicons.com" target="_blank">Glyphicons</a></small></h1>
-          </div>
-
-          <h2>Icon glyphs</h2>
-          <p>140 icons in sprite form, available in dark gray (default) and white, provided by <a href="http://glyphicons.com" target="_blank">Glyphicons</a>.</p>
-          <ul class="the-icons clearfix">
-            <li><i class="icon-glass"></i> icon-glass</li>
-            <li><i class="icon-music"></i> icon-music</li>
-            <li><i class="icon-search"></i> icon-search</li>
-            <li><i class="icon-envelope"></i> icon-envelope</li>
-            <li><i class="icon-heart"></i> icon-heart</li>
-            <li><i class="icon-star"></i> icon-star</li>
-            <li><i class="icon-star-empty"></i> icon-star-empty</li>
-            <li><i class="icon-user"></i> icon-user</li>
-            <li><i class="icon-film"></i> icon-film</li>
-            <li><i class="icon-th-large"></i> icon-th-large</li>
-            <li><i class="icon-th"></i> icon-th</li>
-            <li><i class="icon-th-list"></i> icon-th-list</li>
-            <li><i class="icon-ok"></i> icon-ok</li>
-            <li><i class="icon-remove"></i> icon-remove</li>
-            <li><i class="icon-zoom-in"></i> icon-zoom-in</li>
-            <li><i class="icon-zoom-out"></i> icon-zoom-out</li>
-            <li><i class="icon-off"></i> icon-off</li>
-            <li><i class="icon-signal"></i> icon-signal</li>
-            <li><i class="icon-cog"></i> icon-cog</li>
-            <li><i class="icon-trash"></i> icon-trash</li>
-            <li><i class="icon-home"></i> icon-home</li>
-            <li><i class="icon-file"></i> icon-file</li>
-            <li><i class="icon-time"></i> icon-time</li>
-            <li><i class="icon-road"></i> icon-road</li>
-            <li><i class="icon-download-alt"></i> icon-download-alt</li>
-            <li><i class="icon-download"></i> icon-download</li>
-            <li><i class="icon-upload"></i> icon-upload</li>
-            <li><i class="icon-inbox"></i> icon-inbox</li>
-
-            <li><i class="icon-play-circle"></i> icon-play-circle</li>
-            <li><i class="icon-repeat"></i> icon-repeat</li>
-            <li><i class="icon-refresh"></i> icon-refresh</li>
-            <li><i class="icon-list-alt"></i> icon-list-alt</li>
-            <li><i class="icon-lock"></i> icon-lock</li>
-            <li><i class="icon-flag"></i> icon-flag</li>
-            <li><i class="icon-headphones"></i> icon-headphones</li>
-            <li><i class="icon-volume-off"></i> icon-volume-off</li>
-            <li><i class="icon-volume-down"></i> icon-volume-down</li>
-            <li><i class="icon-volume-up"></i> icon-volume-up</li>
-            <li><i class="icon-qrcode"></i> icon-qrcode</li>
-            <li><i class="icon-barcode"></i> icon-barcode</li>
-            <li><i class="icon-tag"></i> icon-tag</li>
-            <li><i class="icon-tags"></i> icon-tags</li>
-            <li><i class="icon-book"></i> icon-book</li>
-            <li><i class="icon-bookmark"></i> icon-bookmark</li>
-            <li><i class="icon-print"></i> icon-print</li>
-            <li><i class="icon-camera"></i> icon-camera</li>
-            <li><i class="icon-font"></i> icon-font</li>
-            <li><i class="icon-bold"></i> icon-bold</li>
-            <li><i class="icon-italic"></i> icon-italic</li>
-            <li><i class="icon-text-height"></i> icon-text-height</li>
-            <li><i class="icon-text-width"></i> icon-text-width</li>
-            <li><i class="icon-align-left"></i> icon-align-left</li>
-            <li><i class="icon-align-center"></i> icon-align-center</li>
-            <li><i class="icon-align-right"></i> icon-align-right</li>
-            <li><i class="icon-align-justify"></i> icon-align-justify</li>
-            <li><i class="icon-list"></i> icon-list</li>
-
-            <li><i class="icon-indent-left"></i> icon-indent-left</li>
-            <li><i class="icon-indent-right"></i> icon-indent-right</li>
-            <li><i class="icon-facetime-video"></i> icon-facetime-video</li>
-            <li><i class="icon-picture"></i> icon-picture</li>
-            <li><i class="icon-pencil"></i> icon-pencil</li>
-            <li><i class="icon-map-marker"></i> icon-map-marker</li>
-            <li><i class="icon-adjust"></i> icon-adjust</li>
-            <li><i class="icon-tint"></i> icon-tint</li>
-            <li><i class="icon-edit"></i> icon-edit</li>
-            <li><i class="icon-share"></i> icon-share</li>
-            <li><i class="icon-check"></i> icon-check</li>
-            <li><i class="icon-move"></i> icon-move</li>
-            <li><i class="icon-step-backward"></i> icon-step-backward</li>
-            <li><i class="icon-fast-backward"></i> icon-fast-backward</li>
-            <li><i class="icon-backward"></i> icon-backward</li>
-            <li><i class="icon-play"></i> icon-play</li>
-            <li><i class="icon-pause"></i> icon-pause</li>
-            <li><i class="icon-stop"></i> icon-stop</li>
-            <li><i class="icon-forward"></i> icon-forward</li>
-            <li><i class="icon-fast-forward"></i> icon-fast-forward</li>
-            <li><i class="icon-step-forward"></i> icon-step-forward</li>
-            <li><i class="icon-eject"></i> icon-eject</li>
-            <li><i class="icon-chevron-left"></i> icon-chevron-left</li>
-            <li><i class="icon-chevron-right"></i> icon-chevron-right</li>
-            <li><i class="icon-plus-sign"></i> icon-plus-sign</li>
-            <li><i class="icon-minus-sign"></i> icon-minus-sign</li>
-            <li><i class="icon-remove-sign"></i> icon-remove-sign</li>
-            <li><i class="icon-ok-sign"></i> icon-ok-sign</li>
-
-            <li><i class="icon-question-sign"></i> icon-question-sign</li>
-            <li><i class="icon-info-sign"></i> icon-info-sign</li>
-            <li><i class="icon-screenshot"></i> icon-screenshot</li>
-            <li><i class="icon-remove-circle"></i> icon-remove-circle</li>
-            <li><i class="icon-ok-circle"></i> icon-ok-circle</li>
-            <li><i class="icon-ban-circle"></i> icon-ban-circle</li>
-            <li><i class="icon-arrow-left"></i> icon-arrow-left</li>
-            <li><i class="icon-arrow-right"></i> icon-arrow-right</li>
-            <li><i class="icon-arrow-up"></i> icon-arrow-up</li>
-            <li><i class="icon-arrow-down"></i> icon-arrow-down</li>
-            <li><i class="icon-share-alt"></i> icon-share-alt</li>
-            <li><i class="icon-resize-full"></i> icon-resize-full</li>
-            <li><i class="icon-resize-small"></i> icon-resize-small</li>
-            <li><i class="icon-plus"></i> icon-plus</li>
-            <li><i class="icon-minus"></i> icon-minus</li>
-            <li><i class="icon-asterisk"></i> icon-asterisk</li>
-            <li><i class="icon-exclamation-sign"></i> icon-exclamation-sign</li>
-            <li><i class="icon-gift"></i> icon-gift</li>
-            <li><i class="icon-leaf"></i> icon-leaf</li>
-            <li><i class="icon-fire"></i> icon-fire</li>
-            <li><i class="icon-eye-open"></i> icon-eye-open</li>
-            <li><i class="icon-eye-close"></i> icon-eye-close</li>
-            <li><i class="icon-warning-sign"></i> icon-warning-sign</li>
-            <li><i class="icon-plane"></i> icon-plane</li>
-            <li><i class="icon-calendar"></i> icon-calendar</li>
-            <li><i class="icon-random"></i> icon-random</li>
-            <li><i class="icon-comment"></i> icon-comment</li>
-            <li><i class="icon-magnet"></i> icon-magnet</li>
-
-            <li><i class="icon-chevron-up"></i> icon-chevron-up</li>
-            <li><i class="icon-chevron-down"></i> icon-chevron-down</li>
-            <li><i class="icon-retweet"></i> icon-retweet</li>
-            <li><i class="icon-shopping-cart"></i> icon-shopping-cart</li>
-            <li><i class="icon-folder-close"></i> icon-folder-close</li>
-            <li><i class="icon-folder-open"></i> icon-folder-open</li>
-            <li><i class="icon-resize-vertical"></i> icon-resize-vertical</li>
-            <li><i class="icon-resize-horizontal"></i> icon-resize-horizontal</li>
-            <li><i class="icon-hdd"></i> icon-hdd</li>
-            <li><i class="icon-bullhorn"></i> icon-bullhorn</li>
-            <li><i class="icon-bell"></i> icon-bell</li>
-            <li><i class="icon-certificate"></i> icon-certificate</li>
-            <li><i class="icon-thumbs-up"></i> icon-thumbs-up</li>
-            <li><i class="icon-thumbs-down"></i> icon-thumbs-down</li>
-            <li><i class="icon-hand-right"></i> icon-hand-right</li>
-            <li><i class="icon-hand-left"></i> icon-hand-left</li>
-            <li><i class="icon-hand-up"></i> icon-hand-up</li>
-            <li><i class="icon-hand-down"></i> icon-hand-down</li>
-            <li><i class="icon-circle-arrow-right"></i> icon-circle-arrow-right</li>
-            <li><i class="icon-circle-arrow-left"></i> icon-circle-arrow-left</li>
-            <li><i class="icon-circle-arrow-up"></i> icon-circle-arrow-up</li>
-            <li><i class="icon-circle-arrow-down"></i> icon-circle-arrow-down</li>
-            <li><i class="icon-globe"></i> icon-globe</li>
-            <li><i class="icon-wrench"></i> icon-wrench</li>
-            <li><i class="icon-tasks"></i> icon-tasks</li>
-            <li><i class="icon-filter"></i> icon-filter</li>
-            <li><i class="icon-briefcase"></i> icon-briefcase</li>
-            <li><i class="icon-fullscreen"></i> icon-fullscreen</li>
-          </ul>
-
-          <h3>Glyphicons attribution</h3>
-          <p><a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but an arrangement between Bootstrap and the Glyphicons creators have made this possible at no cost to you as developers. As a thank you, we ask you to include an optional link back to <a href="http://glyphicons.com/">Glyphicons</a> whenever practical.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>How to use</h2>
-          <p>All icons require an <code>&lt;i&gt;</code> tag with a unique class, prefixed with <code>icon-</code>. To use, place the following code just about anywhere:</p>
-<pre class="prettyprint linenums">
-&lt;i class="icon-search"&gt;&lt;/i&gt;
-</pre>
-          <p>There are also styles available for inverted (white) icons, made ready with one extra class. We will specifically enforce this class on hover and active states for nav and dropdown links.</p>
-<pre class="prettyprint linenums">
-&lt;i class="icon-search icon-white"&gt;&lt;/i&gt;
-</pre>
-          <p>
-            <span class="label label-info">Heads up!</span>
-            When using beside strings of text, as in buttons or nav links, be sure to leave a space after the <code>&lt;i&gt;</code> tag for proper spacing.
-          </p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Icon examples</h2>
-          <p>Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.</p>
-
-          <h4>Buttons</h4>
-
-          <h5>Button group in a button toolbar</h5>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <a class="btn" href="#"><i class="icon-align-left"></i></a>
-                <a class="btn" href="#"><i class="icon-align-center"></i></a>
-                <a class="btn" href="#"><i class="icon-align-right"></i></a>
-                <a class="btn" href="#"><i class="icon-align-justify"></i></a>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-toolbar"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-justify"&gt;&lt;/i&gt;&lt;/a&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h5>Dropdown in a button group</h5>
-          <div class="bs-docs-example">
-            <div class="btn-group">
-              <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> User</a>
-              <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
-              <ul class="dropdown-menu">
-                <li><a href="#"><i class="icon-pencil"></i> Edit</a></li>
-                <li><a href="#"><i class="icon-trash"></i> Delete</a></li>
-                <li><a href="#"><i class="icon-ban-circle"></i> Ban</a></li>
-                <li class="divider"></li>
-                <li><a href="#"><i class="i"></i> Make admin</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;a class="btn btn-primary" href="#"&gt;&lt;i class="icon-user icon-white"&gt;&lt;/i&gt; User&lt;/a&gt;
-  &lt;a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"&gt;&lt;span class="caret"&gt;&lt;/span&gt;&lt;/a&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-pencil"&gt;&lt;/i&gt; Edit&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-trash"&gt;&lt;/i&gt; Delete&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-ban-circle"&gt;&lt;/i&gt; Ban&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="divider"&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="i"&gt;&lt;/i&gt; Make admin&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h5>Button sizes</h5>
-          <div class="bs-docs-example">
-            <a class="btn btn-large" href="#"><i class="icon-star"></i> Star</a>
-            <a class="btn btn-small" href="#"><i class="icon-star"></i> Star</a>
-            <a class="btn btn-mini" href="#"><i class="icon-star"></i> Star</a>
-          </div>
-<pre class="prettyprint linenums">
-&lt;a class="btn btn-large" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-&lt;a class="btn btn-small" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-&lt;a class="btn btn-mini" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-</pre>
-
-          <h4>Navigation</h4>
-          <div class="bs-docs-example">
-            <div class="well" style="padding: 8px 0; margin-bottom: 0;">
-              <ul class="nav nav-list">
-                <li class="active"><a href="#"><i class="icon-home icon-white"></i> Home</a></li>
-                <li><a href="#"><i class="icon-book"></i> Library</a></li>
-                <li><a href="#"><i class="icon-pencil"></i> Applications</a></li>
-                <li><a href="#"><i class="i"></i> Misc</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  &lt;li class="active"&gt;&lt;a href="#"&gt;&lt;i class="icon-home icon-white"&gt;&lt;/i&gt; Home&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-book"&gt;&lt;/i&gt; Library&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-pencil"&gt;&lt;/i&gt; Applications&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="i"&gt;&lt;/i&gt; Misc&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h4>Form fields</h4>
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="inputIcon">Email address</label>
-              <div class="controls">
-                <div class="input-prepend">
-                  <span class="add-on"><i class="icon-envelope"></i></span><input class="span2" id="inputIcon" type="text">
-                </div>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="control-group"&gt;
-  &lt;label class="control-label" for="inputIcon"&gt;Email address&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;div class="input-prepend"&gt;
-      &lt;span class="add-on"&gt;&lt;i class="icon-envelope"&gt;&lt;/i&gt;&lt;/span&gt;
-      &lt;input class="span2" id="inputIcon" type="text"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/build/index.js b/src/main/webapp/bower_components/bootstrap/docs/build/index.js
deleted file mode 100644
index 1a9cb387..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/build/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env node
-var hogan = require('hogan.js')
-  , fs    = require('fs')
-  , prod  = process.argv[2] == 'production'
-  , title = 'Bootstrap'
-
-var layout, pages
-
-// compile layout template
-layout = fs.readFileSync(__dirname + '/../templates/layout.mustache', 'utf-8')
-layout = hogan.compile(layout, { sectionTags: [{o:'_i', c:'i'}] })
-
-// retrieve pages
-pages = fs.readdirSync(__dirname + '/../templates/pages')
-
-// iterate over pages
-pages.forEach(function (name) {
-
-  if (!name.match(/\.mustache$/)) return
-
-  var page = fs.readFileSync(__dirname  + '/../templates/pages/' + name, 'utf-8')
-    , context = {}
-
-  context[name.replace(/\.mustache$/, '')] = 'active'
-  context._i = true
-  context.production = prod
-  context.title = name
-    .replace(/\.mustache/, '')
-    .replace(/\-.*/, '')
-    .replace(/(.)/, function ($1) { return $1.toUpperCase() })
-
-  if (context.title == 'Index') {
-    context.title = title
-  } else {
-    context.title += ' · ' + title
-  }
-
-  page = hogan.compile(page, { sectionTags: [{o:'_i', c:'i'}] })
-  page = layout.render(context, {
-    body: page
-  })
-
-  fs.writeFileSync(__dirname + '/../' + name.replace(/mustache$/, 'html'), page, 'utf-8')
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/docs/build/package.json b/src/main/webapp/bower_components/bootstrap/docs/build/package.json
deleted file mode 100644
index 97ab2590..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/build/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "name": "bootstrap-doc-builder"
-, "version": "0.0.1"
-, "description": "build bootstrap docs"
-, "dependencies": { "hogan.js": "1.0.5-dev" }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/components.html b/src/main/webapp/bower_components/bootstrap/docs/components.html
deleted file mode 100644
index 7b960543..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/components.html
+++ /dev/null
@@ -1,2626 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Components · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="active">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Components</h1>
-    <p class="lead">Dozens of reusable components built to provide navigation, alerts, popovers, and more.</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#dropdowns"><i class="icon-chevron-right"></i> Dropdowns</a></li>
-          <li><a href="#buttonGroups"><i class="icon-chevron-right"></i> Button groups</a></li>
-          <li><a href="#buttonDropdowns"><i class="icon-chevron-right"></i> Button dropdowns</a></li>
-          <li><a href="#navs"><i class="icon-chevron-right"></i> Navs</a></li>
-          <li><a href="#navbar"><i class="icon-chevron-right"></i> Navbar</a></li>
-          <li><a href="#breadcrumbs"><i class="icon-chevron-right"></i> Breadcrumbs</a></li>
-          <li><a href="#pagination"><i class="icon-chevron-right"></i> Pagination</a></li>
-          <li><a href="#labels-badges"><i class="icon-chevron-right"></i> Labels and badges</a></li>
-          <li><a href="#typography"><i class="icon-chevron-right"></i> Typography</a></li>
-          <li><a href="#thumbnails"><i class="icon-chevron-right"></i> Thumbnails</a></li>
-          <li><a href="#alerts"><i class="icon-chevron-right"></i> Alerts</a></li>
-          <li><a href="#progress"><i class="icon-chevron-right"></i> Progress bars</a></li>
-          <li><a href="#media"><i class="icon-chevron-right"></i> Media object</a></li>
-          <li><a href="#misc"><i class="icon-chevron-right"></i> Misc</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Dropdowns
-        ================================================== -->
-        <section id="dropdowns">
-          <div class="page-header">
-            <h1>Dropdown menus</h1>
-          </div>
-
-          <h2>Example</h2>
-          <p>Toggleable, contextual menu for displaying lists of links. Made interactive with the <a href="./javascript.html#dropdowns">dropdown JavaScript plugin</a>.</p>
-          <div class="bs-docs-example">
-            <div class="dropdown clearfix">
-              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
-                <li><a tabindex="-1" href="#">Action</a></li>
-                <li><a tabindex="-1" href="#">Another action</a></li>
-                <li><a tabindex="-1" href="#">Something else here</a></li>
-                <li class="divider"></li>
-                <li><a tabindex="-1" href="#">Separated link</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Action&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Another action&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Something else here&lt;/a&gt;&lt;/li&gt;
-  &lt;li class="divider"&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Separated link&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h2>Markup</h2>
-          <p>Looking at just the dropdown menu, here's the required HTML. You need to wrap the dropdown's trigger and the dropdown menu within <code>.dropdown</code>, or another element that declares <code>position: relative;</code>. Then just create the menu.</p>
-
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;!-- Link or button to toggle dropdown --&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Action&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Another action&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Something else here&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="divider"&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Separated link&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>Options</h2>
-          <p>Align menus to the right and add include additional levels of dropdowns.</p>
-
-          <h3>Aligning the menus</h3>
-          <p>Add <code>.pull-right</code> to a <code>.dropdown-menu</code> to right align the dropdown menu.</p>
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>Disabled menu options</h3>
-          <p>Add <code>.disabled</code> to a <code>&lt;li&gt;</code> in the dropdown to disable the link.</p>
-          <div class="bs-docs-example">
-            <div class="dropdown clearfix">
-              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
-                <li><a tabindex="-1" href="#">Regular link</a></li>
-                <li class="disabled"><a tabindex="-1" href="#">Disabled link</a></li>
-                <li><a tabindex="-1" href="#">Another link</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Regular link&lt;/a&gt;&lt;/li&gt;
-  &lt;li class="disabled"&gt;&lt;a tabindex="-1" href="#"&gt;Disabled link&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;Another link&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Sub menus on dropdowns</h3>
-          <p>Add an extra level of dropdown menus, appearing on hover like those of OS X, with some simple markup additions. Add <code>.dropdown-submenu</code> to any <code>li</code> in an existing dropdown menu for automatic styling.</p>
-          <div class="bs-docs-example bs-docs-example-submenus">
-
-            <div class="pull-left">
-              <p class="muted">Default</p>
-              <div class="dropdown clearfix">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">Action</a></li>
-                  <li><a tabindex="-1" href="#">Another action</a></li>
-                  <li><a tabindex="-1" href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu">
-                    <a tabindex="-1" href="#">More options</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>
-
-            <div class="pull-left">
-              <p class="muted">Dropup</p>
-              <div class="dropup">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">Action</a></li>
-                  <li><a tabindex="-1" href="#">Another action</a></li>
-                  <li><a tabindex="-1" href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu">
-                    <a tabindex="-1" href="#">More options</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>
-
-            <div class="pull-left">
-              <p class="muted">Left submenu</p>
-              <div class="dropdown">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">Action</a></li>
-                  <li><a tabindex="-1" href="#">Another action</a></li>
-                  <li><a tabindex="-1" href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu pull-left">
-                    <a tabindex="-1" href="#">More options</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                      <li><a tabindex="-1" href="#">Second level link</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>
-
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-  ...
-  &lt;li class="dropdown-submenu"&gt;
-    &lt;a tabindex="-1" href="#"&gt;More options&lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Button Groups
-        ================================================== -->
-        <section id="buttonGroups">
-          <div class="page-header">
-            <h1>Button groups</h1>
-          </div>
-
-          <h2>Examples</h2>
-          <p>Two basic options, along with two more specific variations.</p>
-
-          <h3>Single button group</h3>
-          <p>Wrap a series of buttons with <code>.btn</code> in <code>.btn-group</code>.</p>
-          <div class="bs-docs-example">
-            <div class="btn-group" style="margin: 9px 0 5px;">
-              <button class="btn">Left</button>
-              <button class="btn">Middle</button>
-              <button class="btn">Right</button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn"&gt;Left&lt;/button&gt;
-  &lt;button class="btn"&gt;Middle&lt;/button&gt;
-  &lt;button class="btn"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Multiple button groups</h3>
-          <p>Combine sets of <code>&lt;div class="btn-group"&gt;</code> into a <code>&lt;div class="btn-toolbar"&gt;</code> for more complex components.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn">1</button>
-                <button class="btn">2</button>
-                <button class="btn">3</button>
-                <button class="btn">4</button>
-              </div>
-              <div class="btn-group">
-                <button class="btn">5</button>
-                <button class="btn">6</button>
-                <button class="btn">7</button>
-              </div>
-              <div class="btn-group">
-                <button class="btn">8</button>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-toolbar"&gt;
-  &lt;div class="btn-group"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Vertical button groups</h3>
-          <p>Make a set of buttons appear vertically stacked rather than horizontally.</p>
-          <div class="bs-docs-example">
-            <div class="btn-group btn-group-vertical">
-              <button type="button" class="btn"><i class="icon-align-left"></i></button>
-              <button type="button" class="btn"><i class="icon-align-center"></i></button>
-              <button type="button" class="btn"><i class="icon-align-right"></i></button>
-              <button type="button" class="btn"><i class="icon-align-justify"></i></button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group btn-group-vertical"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h4>Checkbox and radio flavors</h4>
-          <p>Button groups can also function as radios, where only one button may be active, or checkboxes, where any number of buttons may be active. View <a href="./javascript.html#buttons">the JavaScript docs</a> for that.</p>
-
-          <h4>Dropdowns in button groups</h4>
-          <p><span class="label label-info">Heads up!</span> Buttons with dropdowns must be individually wrapped in their own <code>.btn-group</code> within a <code>.btn-toolbar</code> for proper rendering.</p>
-        </section>
-
-
-
-        <!-- Split button dropdowns
-        ================================================== -->
-        <section id="buttonDropdowns">
-          <div class="page-header">
-            <h1>Button dropdown menus</h1>
-          </div>
-
-
-          <h2>Overview and examples</h2>
-          <p>Use any button to trigger a dropdown menu by placing it within a <code>.btn-group</code> and providing the proper menu markup.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown">Danger <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown">Warning <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-success dropdown-toggle" data-toggle="dropdown">Success <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-info dropdown-toggle" data-toggle="dropdown">Info <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown">Inverse <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;a class="btn dropdown-toggle" data-toggle="dropdown" href="#"&gt;
-    Action
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/a&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- dropdown menu links --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Works with all button sizes</h3>
-          <p>Button dropdowns work at any size:  <code>.btn-large</code>, <code>.btn-small</code>, or <code>.btn-mini</code>.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn btn-large dropdown-toggle" data-toggle="dropdown">Large button <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-small dropdown-toggle" data-toggle="dropdown">Small button <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">Mini button <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>
-
-          <h3>Requires JavaScript</h3>
-          <p>Button dropdowns require the <a href="./javascript.html#dropdowns">Bootstrap dropdown plugin</a> to function.</p>
-          <p>In some cases&mdash;like mobile&mdash;dropdown menus will extend outside the viewport. You need to resolve the alignment manually or with custom JavaScript.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Split button dropdowns</h2>
-          <p>Building on the button group styles and markup, we can easily create a split button. Split buttons feature a standard action on the left and a dropdown toggle on the right with contextual links.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn">Action</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-primary">Action</button>
-                <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-danger">Danger</button>
-                <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-warning">Warning</button>
-                <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-success">Success</button>
-                <button class="btn btn-success dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-info">Info</button>
-                <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-inverse">Inverse</button>
-                <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn"&gt;Action&lt;/button&gt;
-  &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- dropdown menu links --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Sizes</h3>
-          <p>Utilize the extra button classes <code>.btn-mini</code>, <code>.btn-small</code>, or <code>.btn-large</code> for sizing.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-large">Large action</button>
-                <button class="btn btn-large dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-small">Small action</button>
-                <button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-mini">Mini action</button>
-                <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn btn-mini"&gt;Action&lt;/button&gt;
-  &lt;button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- dropdown menu links --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Dropup menus</h3>
-          <p>Dropdown menus can also be toggled from the bottom up by adding a single class to the immediate parent of <code>.dropdown-menu</code>. It will flip the direction of the <code>.caret</code> and reposition the menu itself to move from the bottom up instead of top down.</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group dropup">
-                <button class="btn">Dropup</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group dropup">
-                <button class="btn primary">Right dropup</button>
-                <button class="btn primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu pull-right">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group dropup"&gt;
-  &lt;button class="btn"&gt;Dropup&lt;/button&gt;
-  &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- dropdown menu links --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Nav, Tabs, & Pills
-        ================================================== -->
-        <section id="navs">
-          <div class="page-header">
-            <h1>Nav: tabs, pills, and lists</small></h1>
-          </div>
-
-          <h2>Lightweight defaults <small>Same markup, different classes</small></h2>
-          <p>All nav components here&mdash;tabs, pills, and lists&mdash;<strong>share the same base markup and styles</strong> through the <code>.nav</code> class.</p>
-
-          <h3>Basic tabs</h3>
-          <p>Take a regular <code>&lt;ul&gt;</code> of links and add <code>.nav-tabs</code>:</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Profile</a></li>
-              <li><a href="#">Messages</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#"&gt;Home&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Basic pills</h3>
-          <p>Take that same HTML, but use <code>.nav-pills</code> instead:</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Profile</a></li>
-              <li><a href="#">Messages</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#"&gt;Home&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Disabled state</h3>
-          <p>For any nav component (tabs, pills, or list), add <code>.disabled</code> for <strong>gray links and no hover effects</strong>. Links will remain clickable, however, unless you remove the <code>href</code> attribute. Alternatively, you could implement custom JavaScript to prevent those clicks.</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li><a href="#">Clickable link</a></li>
-              <li><a href="#">Clickable link</a></li>
-              <li class="disabled"><a href="#">Disabled link</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  ...
-  &lt;li class="disabled"&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>Component alignment</h3>
-          <p>To align nav links, use the <code>.pull-left</code> or <code>.pull-right</code> utility classes. Both classes will add a CSS float in the specified direction.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Stackable</h2>
-          <p>As tabs and pills are horizontal by default, just add a second class, <code>.nav-stacked</code>, to make them appear vertically stacked.</p>
-
-          <h3>Stacked tabs</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs nav-stacked">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Profile</a></li>
-              <li><a href="#">Messages</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs nav-stacked"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>Stacked pills</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills nav-stacked">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Profile</a></li>
-              <li><a href="#">Messages</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills nav-stacked"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Dropdowns</h2>
-          <p>Add dropdown menus with a little extra HTML and the <a href="./javascript.html#dropdowns">dropdowns JavaScript plugin</a>.</p>
-
-          <h3>Tabs with dropdowns</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Help</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" data-toggle="dropdown" href="#">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a class="dropdown-toggle"
-       data-toggle="dropdown"
-       href="#"&gt;
-        Dropdown
-        &lt;b class="caret"&gt;&lt;/b&gt;
-      &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      &lt;!-- links --&gt;
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Pills with dropdowns</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#">Help</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" data-toggle="dropdown" href="#">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">Separated link</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a class="dropdown-toggle"
-       data-toggle="dropdown"
-       href="#"&gt;
-        Dropdown
-        &lt;b class="caret"&gt;&lt;/b&gt;
-      &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      &lt;!-- links --&gt;
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Nav lists</h2>
-          <p>A simple and easy way to build groups of nav links with optional headers. They're best used in sidebars like the Finder in OS X.</p>
-
-          <h3>Example nav list</h3>
-          <p>Take a list of links and add <code>class="nav nav-list"</code>:</p>
-          <div class="bs-docs-example">
-            <div class="well" style="max-width: 340px; padding: 8px 0;">
-              <ul class="nav nav-list">
-                <li class="nav-header">List header</li>
-                <li class="active"><a href="#">Home</a></li>
-                <li><a href="#">Library</a></li>
-                <li><a href="#">Applications</a></li>
-                <li class="nav-header">Another list header</li>
-                <li><a href="#">Profile</a></li>
-                <li><a href="#">Settings</a></li>
-                <li class="divider"></li>
-                <li><a href="#">Help</a></li>
-              </ul>
-            </div> <!-- /well -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  &lt;li class="nav-header"&gt;List header&lt;/li&gt;
-  &lt;li class="active"&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Library&lt;/a&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-          <p>
-            <span class="label label-info">Note</span>
-            For nesting within a nav list, include <code>class="nav nav-list"</code> on any nested <code>&lt;ul&gt;</code>.
-          </p>
-
-          <h3>Horizontal dividers</h3>
-          <p>Add a horizontal divider by creating an empty list item with the class <code>.divider</code>, like so:</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  ...
-  &lt;li class="divider"&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Tabbable nav</h2>
-          <p>Bring your tabs to life with a simple plugin to toggle between content via tabs. Bootstrap integrates tabbable tabs in four styles: top (default), right, bottom, and left.</p>
-
-          <h3>Tabbable example</h3>
-          <p>To make tabs tabbable, create a <code>.tab-pane</code> with unique ID for every tab and wrap them in <code>.tab-content</code>.</p>
-          <div class="bs-docs-example">
-            <div class="tabbable" style="margin-bottom: 18px;">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
-                <li><a href="#tab2" data-toggle="tab">Section 2</a></li>
-                <li><a href="#tab3" data-toggle="tab">Section 3</a></li>
-              </ul>
-              <div class="tab-content" style="padding-bottom: 9px; border-bottom: 1px solid #ddd;">
-                <div class="tab-pane active" id="tab1">
-                  <p>I'm in Section 1.</p>
-                </div>
-                <div class="tab-pane" id="tab2">
-                  <p>Howdy, I'm in Section 2.</p>
-                </div>
-                <div class="tab-pane" id="tab3">
-                  <p>What up girl, this is Section 3.</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="tabbable"&gt; &lt;!-- Only required for left/right tabs --&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    &lt;li class="active"&gt;&lt;a href="#tab1" data-toggle="tab"&gt;Section 1&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#tab2" data-toggle="tab"&gt;Section 2&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    &lt;div class="tab-pane active" id="tab1"&gt;
-      &lt;p&gt;I'm in Section 1.&lt;/p&gt;
-    &lt;/div&gt;
-    &lt;div class="tab-pane" id="tab2"&gt;
-      &lt;p&gt;Howdy, I'm in Section 2.&lt;/p&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Fade in tabs</h4>
-          <p>To make tabs fade in, add <code>.fade</code> to each <code>.tab-pane</code>.</p>
-
-          <h4>Requires jQuery plugin</h4>
-          <p>All tabbable tabs are powered by our lightweight jQuery plugin. Read more about how to bring tabbable tabs to life <a href="./javascript.html#tabs">on the JavaScript docs page</a>.</p>
-
-          <h3>Tabbable in any direction</h3>
-
-          <h4>Tabs on the bottom</h4>
-          <p>Flip the order of the HTML and add a class to put tabs on the bottom.</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-below">
-              <div class="tab-content">
-                <div class="tab-pane active" id="A">
-                  <p>I'm in Section A.</p>
-                </div>
-                <div class="tab-pane" id="B">
-                  <p>Howdy, I'm in Section B.</p>
-                </div>
-                <div class="tab-pane" id="C">
-                  <p>What up girl, this is Section C.</p>
-                </div>
-              </div>
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#A" data-toggle="tab">Section 1</a></li>
-                <li><a href="#B" data-toggle="tab">Section 2</a></li>
-                <li><a href="#C" data-toggle="tab">Section 3</a></li>
-              </ul>
-            </div> <!-- /tabbable -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-below"&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Tabs on the left</h4>
-          <p>Swap the class to put tabs on the left.</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-left">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#lA" data-toggle="tab">Section 1</a></li>
-                <li><a href="#lB" data-toggle="tab">Section 2</a></li>
-                <li><a href="#lC" data-toggle="tab">Section 3</a></li>
-              </ul>
-              <div class="tab-content">
-                <div class="tab-pane active" id="lA">
-                  <p>I'm in Section A.</p>
-                </div>
-                <div class="tab-pane" id="lB">
-                  <p>Howdy, I'm in Section B.</p>
-                </div>
-                <div class="tab-pane" id="lC">
-                  <p>What up girl, this is Section C.</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-left"&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>Tabs on the right</h4>
-          <p>Swap the class to put tabs on the right.</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-right">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#rA" data-toggle="tab">Section 1</a></li>
-                <li><a href="#rB" data-toggle="tab">Section 2</a></li>
-                <li><a href="#rC" data-toggle="tab">Section 3</a></li>
-              </ul>
-              <div class="tab-content">
-                <div class="tab-pane active" id="rA">
-                  <p>I'm in Section A.</p>
-                </div>
-                <div class="tab-pane" id="rB">
-                  <p>Howdy, I'm in Section B.</p>
-                </div>
-                <div class="tab-pane" id="rC">
-                  <p>What up girl, this is Section C.</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-right"&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Navbar
-        ================================================== -->
-        <section id="navbar">
-          <div class="page-header">
-            <h1>Navbar</h1>
-          </div>
-
-
-          <h2>Basic navbar</h2>
-          <p>To start, navbars are static (not fixed to the top) and include support for a project name and basic navigation. Place one anywhere within a <code>.container</code>, which sets the width of your site and content.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <a class="brand" href="#">Title</a>
-                <ul class="nav">
-                  <li class="active"><a href="#">Home</a></li>
-                  <li><a href="#">Link</a></li>
-                  <li><a href="#">Link</a></li>
-                </ul>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar"&gt;
-  &lt;div class="navbar-inner"&gt;
-    &lt;a class="brand" href="#"&gt;Title&lt;/a&gt;
-    &lt;ul class="nav"&gt;
-      &lt;li class="active"&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Navbar components</h2>
-
-          <h3>Brand</h3>
-          <p>A simple link to show your brand or project name only requires an anchor tag.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <a class="brand" href="#">Title</a>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;a class="brand" href="#"&gt;Project name&lt;/a&gt;
-</pre>
-
-          <h3>Nav links</h3>
-          <p>Nav items are simple to add via unordered lists.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <ul class="nav">
-                  <li class="active"><a href="#">Home</a></li>
-                  <li><a href="#">Link</a></li>
-                  <li><a href="#">Link</a></li>
-                </ul>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#">Home&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-          <p>You can easily add dividers to your nav links with an empty list item and a simple class. Just add this between links:</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <ul class="nav">
-                  <li class="active"><a href="#">Home</a></li>
-                  <li class="divider-vertical"></li>
-                  <li><a href="#">Link</a></li>
-                  <li class="divider-vertical"></li>
-                  <li><a href="#">Link</a></li>
-                  <li class="divider-vertical"></li>
-                </ul>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  ...
-  &lt;li class="divider-vertical"&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>Forms</h3>
-          <p>To properly style and position a form within the navbar, add the appropriate classes as shown below. For a default form, include <code>.navbar-form</code> and either <code>.pull-left</code> or <code>.pull-right</code> to properly align it.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <form class="navbar-form pull-left">
-                  <input type="text" class="span2">
-                  <button type="submit" class="btn">Submit</button>
-                </form>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;form class="navbar-form pull-left"&gt;
-  &lt;input type="text" class="span2"&gt;
-  &lt;button type="submit" class="btn"&gt;Submit&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>Search form</h3>
-          <p>For a more customized search form, add <code>.navbar-search</code> to the <code>form</code> and <code>.search-query</code> to the input for specialized styles in the navbar.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <form class="navbar-search pull-left">
-                  <input type="text" class="search-query" placeholder="Search">
-                </form>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;form class="navbar-search pull-left"&gt;
-  &lt;input type="text" class="search-query" placeholder="Search"&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>Component alignment</h3>
-          <p>Align nav links, search form, or text, use the <code>.pull-left</code> or <code>.pull-right</code> utility classes. Both classes will add a CSS float in the specified direction.</p>
-
-          <h3>Using dropdowns</h3>
-          <p>Add dropdowns and dropups to the nav with a bit of markup and the <a href="./javascript.html#dropdowns">dropdowns JavaScript plugin</a>.</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a href="#" class="dropdown-toggle" data-toggle="dropdown">
-      Account
-      &lt;b class="caret"&gt;&lt;/b&gt;
-    &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-          <p>Visit the <a href="./javascript.html#dropdowns">JavaScript dropdowns documentation</a> for more markup and information on calling dropdowns.</p>
-
-          <h3>Text</h3>
-          <p>Wrap strings of text in an element with <code>.navbar-text</code>, usually on a <code>&lt;p&gt;</code> tag for proper leading and color.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Optional display variations</h2>
-          <p>Fix the navbar to the top or bottom of the viewport with an additional class on the outermost div, <code>.navbar</code>.</p>
-
-          <h3>Fixed to top</h3>
-          <p>Add <code>.navbar-fixed-top</code> and remember to account for the hidden area underneath it by adding at least 40px <code>padding</code> to the <code>&lt;body&gt;</code>. Be sure to add this after the core Bootstrap CSS and before the optional responsive CSS.</p>
-          <div class="bs-docs-example bs-navbar-top-example">
-            <div class="navbar navbar-fixed-top" style="position: absolute;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">Title</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">Home</a></li>
-                    <li><a href="#">Link</a></li>
-                    <li><a href="#">Link</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-fixed-top"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>Fixed to bottom</h3>
-          <p>Add <code>.navbar-fixed-bottom</code> instead.</p>
-          <div class="bs-docs-example bs-navbar-bottom-example">
-            <div class="navbar navbar-fixed-bottom" style="position: absolute;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">Title</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">Home</a></li>
-                    <li><a href="#">Link</a></li>
-                    <li><a href="#">Link</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-fixed-bottom"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>Static top navbar</h3>
-          <p>Create a full-width navbar that scrolls away with the page by adding <code>.navbar-static-top</code>. Unlike the <code>.navbar-fixed-top</code> class, you do not need to change any padding on the <code>body</code>.</p>
-          <div class="bs-docs-example bs-navbar-top-example">
-            <div class="navbar navbar-static-top" style="margin: -1px -1px 0;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">Title</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">Home</a></li>
-                    <li><a href="#">Link</a></li>
-                    <li><a href="#">Link</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-static-top"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Responsive navbar</h2>
-          <p>To implement a collapsing responsive navbar, wrap your navbar content in a containing div, <code>.nav-collapse.collapse</code>, and add the navbar toggle button, <code>.btn-navbar</code>.</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <div class="container">
-                  <a class="btn btn-navbar" data-toggle="collapse" data-target=".navbar-responsive-collapse">
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                  </a>
-                  <a class="brand" href="#">Title</a>
-                  <div class="nav-collapse collapse navbar-responsive-collapse">
-                    <ul class="nav">
-                      <li class="active"><a href="#">Home</a></li>
-                      <li><a href="#">Link</a></li>
-                      <li><a href="#">Link</a></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">Action</a></li>
-                          <li><a href="#">Another action</a></li>
-                          <li><a href="#">Something else here</a></li>
-                          <li class="divider"></li>
-                          <li class="nav-header">Nav header</li>
-                          <li><a href="#">Separated link</a></li>
-                          <li><a href="#">One more separated link</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                    <form class="navbar-search pull-left" action="">
-                      <input type="text" class="search-query span2" placeholder="Search">
-                    </form>
-                    <ul class="nav pull-right">
-                      <li><a href="#">Link</a></li>
-                      <li class="divider-vertical"></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">Action</a></li>
-                          <li><a href="#">Another action</a></li>
-                          <li><a href="#">Something else here</a></li>
-                          <li class="divider"></li>
-                          <li><a href="#">Separated link</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                  </div><!-- /.nav-collapse -->
-                </div>
-              </div><!-- /navbar-inner -->
-            </div><!-- /navbar -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar"&gt;
-  &lt;div class="navbar-inner"&gt;
-    &lt;div class="container"&gt;
-
-      &lt;!-- .btn-navbar is used as the toggle for collapsed navbar content --&gt;
-      &lt;a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-      &lt;/a&gt;
-
-      &lt;!-- Be sure to leave the brand out there if you want it shown --&gt;
-      &lt;a class="brand" href="#"&gt;Project name&lt;/a&gt;
-
-      &lt;!-- Everything you want hidden at 940px or less, place within here --&gt;
-      &lt;div class="nav-collapse collapse"&gt;
-        &lt;!-- .nav, .navbar-search, .navbar-form, etc --&gt;
-      &lt;/div&gt;
-
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-          <div class="alert alert-info">
-            <strong>Heads up!</strong> The responsive navbar requires the <a href="./javascript.html#collapse">collapse plugin</a> and <a href="./scaffolding.html#responsive">responsive Bootstrap CSS file</a>.
-          </div>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Inverted variation</h2>
-          <p>Modify the look of the navbar by adding <code>.navbar-inverse</code>.</p>
-          <div class="bs-docs-example">
-            <div class="navbar navbar-inverse" style="position: static;">
-              <div class="navbar-inner">
-                <div class="container">
-                  <a class="btn btn-navbar" data-toggle="collapse" data-target=".navbar-inverse-collapse">
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                  </a>
-                  <a class="brand" href="#">Title</a>
-                  <div class="nav-collapse collapse navbar-inverse-collapse">
-                    <ul class="nav">
-                      <li class="active"><a href="#">Home</a></li>
-                      <li><a href="#">Link</a></li>
-                      <li><a href="#">Link</a></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">Action</a></li>
-                          <li><a href="#">Another action</a></li>
-                          <li><a href="#">Something else here</a></li>
-                          <li class="divider"></li>
-                          <li class="nav-header">Nav header</li>
-                          <li><a href="#">Separated link</a></li>
-                          <li><a href="#">One more separated link</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                    <form class="navbar-search pull-left" action="">
-                      <input type="text" class="search-query span2" placeholder="Search">
-                    </form>
-                    <ul class="nav pull-right">
-                      <li><a href="#">Link</a></li>
-                      <li class="divider-vertical"></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">Action</a></li>
-                          <li><a href="#">Another action</a></li>
-                          <li><a href="#">Something else here</a></li>
-                          <li class="divider"></li>
-                          <li><a href="#">Separated link</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                  </div><!-- /.nav-collapse -->
-                </div>
-              </div><!-- /navbar-inner -->
-            </div><!-- /navbar -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-inverse"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Breadcrumbs
-        ================================================== -->
-        <section id="breadcrumbs">
-          <div class="page-header">
-            <h1>Breadcrumbs <small></small></h1>
-          </div>
-
-          <h2>Examples</h2>
-          <p>A single example shown as it might be displayed across multiple pages.</p>
-          <div class="bs-docs-example">
-            <ul class="breadcrumb">
-              <li class="active">Home</li>
-            </ul>
-            <ul class="breadcrumb">
-              <li><a href="#">Home</a> <span class="divider">/</span></li>
-              <li class="active">Library</li>
-            </ul>
-            <ul class="breadcrumb" style="margin-bottom: 5px;">
-              <li><a href="#">Home</a> <span class="divider">/</span></li>
-              <li><a href="#">Library</a> <span class="divider">/</span></li>
-              <li class="active">Data</li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="breadcrumb"&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Home&lt;/a&gt; &lt;span class="divider"&gt;/&lt;/span&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Library&lt;/a&gt; &lt;span class="divider"&gt;/&lt;/span&gt;&lt;/li&gt;
-  &lt;li class="active"&gt;Data&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Pagination
-        ================================================== -->
-        <section id="pagination">
-          <div class="page-header">
-            <h1>Pagination <small>Two options for paging through content</small></h1>
-          </div>
-
-          <h2>Standard pagination</h2>
-          <p>Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.</p>
-          <div class="bs-docs-example">
-            <div class="pagination">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li&gt;&lt;a href="#"&gt;Prev&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Options</h2>
-
-          <h3>Disabled and active states</h3>
-          <p>Links are customizable for different circumstances. Use <code>.disabled</code> for unclickable links and <code>.active</code> to indicate the current page.</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-centered">
-              <ul>
-                <li class="disabled"><a href="#">&laquo;</a></li>
-                <li class="active"><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li class="disabled"&gt;&lt;a href="#"&gt;&amp;laquo;&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-          <p>You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.</p>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li class="disabled"&gt;&lt;span&gt;&amp;laquo;&lt;/span&gt;&lt;/li&gt;
-    &lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Sizes</h3>
-          <p>Fancy larger or smaller pagination? Add <code>.pagination-large</code>, <code>.pagination-small</code>, or <code>.pagination-mini</code> for additional sizes.</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-large">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-            <div class="pagination">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-            <div class="pagination pagination-small">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-            <div class="pagination pagination-mini">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-large"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination pagination-small"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination pagination-mini"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Alignment</h3>
-          <p>Add one of two optional classes to change the alignment of pagination links: <code>.pagination-centered</code> and <code>.pagination-right</code>.</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-centered">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-centered"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-right">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-right"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Pager</h2>
-          <p>Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.</p>
-
-          <h3>Default example</h3>
-          <p>By default, the pager centers links.</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li><a href="#">Previous</a></li>
-              <li><a href="#">Next</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Previous&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Aligned links</h3>
-          <p>Alternatively, you can align each link to the sides:</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li class="previous"><a href="#">&larr; Older</a></li>
-              <li class="next"><a href="#">Newer &rarr;</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li class="previous"&gt;
-    &lt;a href="#"&gt;&amp;larr; Older&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li class="next"&gt;
-    &lt;a href="#"&gt;Newer &amp;rarr;&lt;/a&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>Optional disabled state</h3>
-          <p>Pager links also use the general <code>.disabled</code> utility class from the pagination.</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li class="previous disabled"><a href="#">&larr; Older</a></li>
-              <li class="next"><a href="#">Newer &rarr;</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li class="previous disabled"&gt;
-    &lt;a href="#"&gt;&amp;larr; Older&lt;/a&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Labels and badges
-        ================================================== -->
-        <section id="labels-badges">
-          <div class="page-header">
-            <h1>Labels and badges</h1>
-          </div>
-          <h3>Labels</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>Labels</th>
-                <th>Markup</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <span class="label">Default</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label"&gt;Default&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-success">Success</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-success"&gt;Success&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-warning">Warning</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-warning"&gt;Warning&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-important">Important</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-important"&gt;Important&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-info">Info</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-info"&gt;Info&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-inverse">Inverse</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-inverse"&gt;Inverse&lt;/span&gt;</code>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>Badges</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>Name</th>
-                <th>Example</th>
-                <th>Markup</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  Default
-                </td>
-                <td>
-                  <span class="badge">1</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge"&gt;1&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  Success
-                </td>
-                <td>
-                  <span class="badge badge-success">2</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-success"&gt;2&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  Warning
-                </td>
-                <td>
-                  <span class="badge badge-warning">4</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-warning"&gt;4&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  Important
-                </td>
-                <td>
-                  <span class="badge badge-important">6</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-important"&gt;6&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  Info
-                </td>
-                <td>
-                  <span class="badge badge-info">8</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-info"&gt;8&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  Inverse
-                </td>
-                <td>
-                  <span class="badge badge-inverse">10</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-inverse"&gt;10&lt;/span&gt;</code>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>Easily collapsible</h3>
-          <p>For easy implementation, labels and badges will simply collapse (via CSS's <code>:empty</code> selector) when no content exists within.</p>
-
-        </section>
-
-
-
-        <!-- Typographic components
-        ================================================== -->
-        <section id="typography">
-          <div class="page-header">
-            <h1>Typographic components</h1>
-          </div>
-
-          <h2>Hero unit</h2>
-          <p>A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.</p>
-          <div class="bs-docs-example">
-            <div class="hero-unit">
-              <h1>Hello, world!</h1>
-              <p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
-              <p><a class="btn btn-primary btn-large">Learn more</a></p>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="hero-unit"&gt;
-  &lt;h1&gt;Heading&lt;/h1&gt;
-  &lt;p&gt;Tagline&lt;/p&gt;
-  &lt;p&gt;
-    &lt;a class="btn btn-primary btn-large"&gt;
-      Learn more
-    &lt;/a&gt;
-  &lt;/p&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>Page header</h2>
-          <p>A simple shell for an <code>h1</code> to appropriately space out and segment sections of content on a page. It can utilize the <code>h1</code>'s default <code>small</code>, element as well most other components (with additional styles).</p>
-          <div class="bs-docs-example">
-            <div class="page-header">
-              <h1>Example page header <small>Subtext for header</small></h1>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="page-header"&gt;
-  &lt;h1&gt;Example page header &lt;small&gt;Subtext for header&lt;/small&gt;&lt;/h1&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Thumbnails
-        ================================================== -->
-        <section id="thumbnails">
-          <div class="page-header">
-            <h1>Thumbnails <small>Grids of images, videos, text, and more</small></h1>
-          </div>
-
-          <h2>Default thumbnails</h2>
-          <p>By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.</p>
-          <div class="row-fluid">
-            <ul class="thumbnails">
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-            </ul>
-          </div>
-
-          <h2>Highly customizable</h2>
-          <p>With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.</p>
-          <div class="row-fluid">
-            <ul class="thumbnails">
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>Thumbnail label</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn">Action</a></p>
-                  </div>
-                </div>
-              </li>
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>Thumbnail label</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn">Action</a></p>
-                  </div>
-                </div>
-              </li>
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>Thumbnail label</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn">Action</a></p>
-                  </div>
-                </div>
-              </li>
-            </ul>
-          </div>
-
-          <h3>Why use thumbnails</h3>
-          <p>Thumbnails (previously <code>.media-grid</code> up until v1.4) are great for grids of photos or videos, image search results, retail products, portfolios, and much more. They can be links or static content.</p>
-
-          <h3>Simple, flexible markup</h3>
-          <p>Thumbnail markup is simple&mdash;a <code>ul</code> with any number of <code>li</code> elements is all that is required. It's also super flexible, allowing for any type of content with just a bit more markup to wrap your contents.</p>
-
-          <h3>Uses grid column sizes</h3>
-          <p>Lastly, the thumbnails component uses existing grid system classes&mdash;like <code>.span2</code> or <code>.span3</code>&mdash;for control of thumbnail dimensions.</p>
-
-          <h2>Markup</h2>
-          <p>As mentioned previously, the required markup for thumbnails is light and straightforward. Here's a look at the default setup <strong>for linked images</strong>:</p>
-<pre class="prettyprint linenums">
-&lt;ul class="thumbnails"&gt;
-  &lt;li class="span4"&gt;
-    &lt;a href="#" class="thumbnail"&gt;
-      &lt;img data-src="holder.js/300x200" alt=""&gt;
-    &lt;/a&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-          <p>For custom HTML content in thumbnails, the markup changes slightly. To allow block level content anywhere, we swap the <code>&lt;a&gt;</code> for a <code>&lt;div&gt;</code> like so:</p>
-<pre class="prettyprint linenums">
-&lt;ul class="thumbnails"&gt;
-  &lt;li class="span4"&gt;
-    &lt;div class="thumbnail"&gt;
-      &lt;img data-src="holder.js/300x200" alt=""&gt;
-      &lt;h3&gt;Thumbnail label&lt;/h3&gt;
-      &lt;p&gt;Thumbnail caption...&lt;/p&gt;
-    &lt;/div&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h2>More examples</h2>
-          <p>Explore all your options with the various grid classes available to you. You can also mix and match different sizes.</p>
-          <ul class="thumbnails">
-            <li class="span4">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/360x270" alt="">
-              </a>
-            </li>
-            <li class="span3">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/260x120" alt="">
-              </a>
-            </li>
-            <li class="span2">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/160x120" alt="">
-              </a>
-            </li>
-            <li class="span3">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/260x120" alt="">
-              </a>
-            </li>
-            <li class="span2">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/160x120" alt="">
-              </a>
-            </li>
-          </ul>
-
-        </section>
-
-
-
-
-        <!-- Alerts
-        ================================================== -->
-        <section id="alerts">
-          <div class="page-header">
-            <h1>Alerts <small>Styles for success, warning, and error messages</small></h1>
-          </div>
-
-          <h2>Default alert</h2>
-          <p>Wrap any text and an optional dismiss button in <code>.alert</code> for a basic warning alert message.</p>
-          <div class="bs-docs-example">
-            <div class="alert">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>Warning!</strong> Best check yo self, you're not looking too good.
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert"&gt;
-  &lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;
-  &lt;strong&gt;Warning!&lt;/strong&gt; Best check yo self, you're not looking too good.
-&lt;/div&gt;
-</pre>
-
-          <h3>Dismiss buttons</h3>
-          <p>Mobile Safari and Mobile Opera browsers, in addition to the <code>data-dismiss="alert"</code> attribute, require an <code>href="#"</code> for the dismissal of alerts when using an <code>&lt;a&gt;</code> tag.</p>
-          <pre class="prettyprint linenums">&lt;a href="#" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/a&gt;</pre>
-          <p>Alternatively, you may use a <code>&lt;button&gt;</code> element with the data attribute, which we have opted to do for our docs. When using <code>&lt;button&gt;</code>, you must include <code>type="button"</code> or your forms may not submit.</p>
-          <pre class="prettyprint linenums">&lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;</pre>
-
-          <h3>Dismiss alerts via JavaScript</h3>
-          <p>Use the <a href="./javascript.html#alerts">alerts jQuery plugin</a> for quick and easy dismissal of alerts.</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Options</h2>
-          <p>For longer messages, increase the padding on the top and bottom of the alert wrapper by adding <code>.alert-block</code>.</p>
-          <div class="bs-docs-example">
-            <div class="alert alert-block">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <h4>Warning!</h4>
-              <p>Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-block"&gt;
-  &lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;
-  &lt;h4&gt;Warning!&lt;/h4&gt;
-  Best check yo self, you're not...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Contextual alternatives</h2>
-          <p>Add optional classes to change an alert's connotation.</p>
-
-          <h3>Error or danger</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-error">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>Oh snap!</strong> Change a few things up and try submitting again.
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-error"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>Success</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-success">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>Well done!</strong> You successfully read this important alert message.
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-success"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>Information</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-info">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>Heads up!</strong> This alert needs your attention, but it's not super important.
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-info"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Progress bars
-        ================================================== -->
-        <section id="progress">
-          <div class="page-header">
-            <h1>Progress bars <small>For loading, redirecting, or action status</small></h1>
-          </div>
-
-          <h2>Examples and markup</h2>
-
-          <h3>Basic</h3>
-          <p>Default progress bar with a vertical gradient.</p>
-          <div class="bs-docs-example">
-            <div class="progress">
-              <div class="bar" style="width: 60%;"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress"&gt;
-  &lt;div class="bar" style="width: 60%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Striped</h3>
-          <p>Uses a gradient to create a striped effect. Not available in IE7-8.</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-striped">
-              <div class="bar" style="width: 20%;"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-striped"&gt;
-  &lt;div class="bar" style="width: 20%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Animated</h3>
-          <p>Add <code>.active</code> to <code>.progress-striped</code> to animate the stripes right to left. Not available in all versions of IE.</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-striped active">
-              <div class="bar" style="width: 45%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-striped active"&gt;
-  &lt;div class="bar" style="width: 40%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Stacked</h3>
-          <p>Place multiple bars into the same <code>.progress</code> to stack them.</p>
-          <div class="bs-docs-example">
-            <div class="progress">
-              <div class="bar bar-success" style="width: 35%"></div>
-              <div class="bar bar-warning" style="width: 20%"></div>
-              <div class="bar bar-danger" style="width: 10%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress"&gt;
-  &lt;div class="bar bar-success" style="width: 35%;"&gt;&lt;/div&gt;
-  &lt;div class="bar bar-warning" style="width: 20%;"&gt;&lt;/div&gt;
-  &lt;div class="bar bar-danger" style="width: 10%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Options</h2>
-
-          <h3>Additional colors</h3>
-          <p>Progress bars use some of the same button and alert classes for consistent styles.</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-info" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 20%"></div>
-            </div>
-            <div class="progress progress-success" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 40%"></div>
-            </div>
-            <div class="progress progress-warning" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 60%"></div>
-            </div>
-            <div class="progress progress-danger">
-              <div class="bar" style="width: 80%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-info"&gt;
-  &lt;div class="bar" style="width: 20%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-success"&gt;
-  &lt;div class="bar" style="width: 40%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-warning"&gt;
-  &lt;div class="bar" style="width: 60%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-danger"&gt;
-  &lt;div class="bar" style="width: 80%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Striped bars</h3>
-          <p>Similar to the solid colors, we have varied striped progress bars.</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-info progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 20%"></div>
-            </div>
-            <div class="progress progress-success progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 40%"></div>
-            </div>
-            <div class="progress progress-warning progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 60%"></div>
-            </div>
-            <div class="progress progress-danger progress-striped">
-              <div class="bar" style="width: 80%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-info progress-striped"&gt;
-  &lt;div class="bar" style="width: 20%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-success progress-striped"&gt;
-  &lt;div class="bar" style="width: 40%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-warning progress-striped"&gt;
-  &lt;div class="bar" style="width: 60%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-danger progress-striped"&gt;
-  &lt;div class="bar" style="width: 80%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Browser support</h2>
-          <p>Progress bars use CSS3 gradients, transitions, and animations to achieve all their effects. These features are not supported in IE7-9 or older versions of Firefox.</p>
-          <p>Versions earlier than Internet Explorer 10 and Opera 12 do not support animations.</p>
-
-        </section>
-
-
-
-
-        <!-- Media object
-        ================================================== -->
-        <section id="media">
-          <div class="page-header">
-            <h1>Media object</h1>
-          </div>
-          <p class="lead">Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.</p>
-
-          <h2>Default example</h2>
-          <p>The default media allow to float a media object (images, video, audio) to the left or right of a content block.</p>
-          <div class="bs-docs-example">
-            <div class="media">
-              <a class="pull-left" href="#">
-                <img class="media-object" data-src="holder.js/64x64">
-              </a>
-              <div class="media-body">
-                <h4 class="media-heading">Media heading</h4>
-                Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-              </div>
-            </div>
-            <div class="media">
-              <a class="pull-left" href="#">
-                <img class="media-object" data-src="holder.js/64x64">
-              </a>
-              <div class="media-body">
-                <h4 class="media-heading">Media heading</h4>
-                Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-                <div class="media">
-                  <a class="pull-left" href="#">
-                    <img class="media-object" data-src="holder.js/64x64">
-                  </a>
-                  <div class="media-body">
-                    <h4 class="media-heading">Media heading</h4>
-                    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="media"&gt;
-  &lt;a class="pull-left" href="#"&gt;
-    &lt;img class="media-object" data-src="holder.js/64x64"&gt;
-  &lt;/a&gt;
-  &lt;div class="media-body"&gt;
-    &lt;h4 class="media-heading"&gt;Media heading&lt;/h4&gt;
-    ...
-
-    &lt;!-- Nested media object --&gt;
-    &lt;div class="media"&gt;
-      ...
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Media list</h2>
-          <p>With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).</p>
-          <div class="bs-docs-example">
-            <ul class="media-list">
-              <li class="media">
-                <a class="pull-left" href="#">
-                  <img class="media-object" data-src="holder.js/64x64">
-                </a>
-                <div class="media-body">
-                  <h4 class="media-heading">Media heading</h4>
-                  <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.</p>
-                  <!-- Nested media object -->
-                  <div class="media">
-                    <a class="pull-left" href="#">
-                      <img class="media-object" data-src="holder.js/64x64">
-                    </a>
-                    <div class="media-body">
-                      <h4 class="media-heading">Nested media heading</h4>
-                      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                      <!-- Nested media object -->
-                      <div class="media">
-                        <a class="pull-left" href="#">
-                          <img class="media-object" data-src="holder.js/64x64">
-                        </a>
-                        <div class="media-body">
-                          <h4 class="media-heading">Nested media heading</h4>
-                          Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <!-- Nested media object -->
-                  <div class="media">
-                    <a class="pull-left" href="#">
-                      <img class="media-object" data-src="holder.js/64x64">
-                    </a>
-                    <div class="media-body">
-                      <h4 class="media-heading">Nested media heading</h4>
-                      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                    </div>
-                  </div>
-                </div>
-              </li>
-              <li class="media">
-                <a class="pull-right" href="#">
-                  <img class="media-object" data-src="holder.js/64x64">
-                </a>
-                <div class="media-body">
-                  <h4 class="media-heading">Media heading</h4>
-                  Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                </div>
-              </li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="media-list"&gt;
-  &lt;li class="media"&gt;
-    &lt;a class="pull-left" href="#"&gt;
-      &lt;img class="media-object" data-src="holder.js/64x64"&gt;
-    &lt;/a&gt;
-    &lt;div class="media-body"&gt;
-      &lt;h4 class="media-heading"&gt;Media heading&lt;/h4&gt;
-      ...
-
-      &lt;!-- Nested media object --&gt;
-      &lt;div class="media"&gt;
-        ...
-     &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-</section>
-
-
-
-
-
-        <!-- Miscellaneous
-        ================================================== -->
-        <section id="misc">
-          <div class="page-header">
-            <h1>Miscellaneous <small>Lightweight utility components</small></h1>
-          </div>
-
-          <h2>Wells</h2>
-          <p>Use the well as a simple effect on an element to give it an inset effect.</p>
-          <div class="bs-docs-example">
-            <div class="well">
-              Look, I'm in a well!
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <h3>Optional classes</h3>
-          <p>Control padding and rounded corners with two optional modifier classes.</p>
-          <div class="bs-docs-example">
-            <div class="well well-large">
-              Look, I'm in a well!
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well well-large"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <div class="bs-docs-example">
-            <div class="well well-small">
-              Look, I'm in a well!
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well well-small"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h2>Close icon</h2>
-          <p>Use the generic close icon for dismissing content like modals and alerts.</p>
-          <div class="bs-docs-example">
-            <p><button class="close" style="float: none;">&times;</button></p>
-          </div>
-          <pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre>
-          <p>iOS devices require an <code>href="#"</code> for click events if you would rather use an anchor.</p>
-          <pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
-
-          <h2>Helper classes</h2>
-          <p>Simple, focused classes for small display or behavior tweaks.</p>
-
-          <h4>.pull-left</h4>
-          <p>Float an element left</p>
-<pre class="prettyprint linenums">
-class="pull-left"
-</pre>
-<pre class="prettyprint linenums">
-.pull-left {
-  float: left;
-}
-</pre>
-
-          <h4>.pull-right</h4>
-          <p>Float an element right</p>
-<pre class="prettyprint linenums">
-class="pull-right"
-</pre>
-<pre class="prettyprint linenums">
-.pull-right {
-  float: right;
-}
-</pre>
-
-          <h4>.muted</h4>
-          <p>Change an element's color to <code>#999</code></p>
-<pre class="prettyprint linenums">
-class="muted"
-</pre>
-<pre class="prettyprint linenums">
-.muted {
-  color: #999;
-}
-</pre>
-
-          <h4>.clearfix</h4>
-          <p>Clear the <code>float</code> on any element</p>
-<pre class="prettyprint linenums">
-class="clearfix"
-</pre>
-<pre class="prettyprint linenums">
-.clearfix {
-  *zoom: 1;
-  &:before,
-  &:after {
-    display: table;
-    content: "";
-  }
-  &:after {
-    clear: both;
-  }
-}
-</pre>
-
-        </section>
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/customize.html b/src/main/webapp/bower_components/bootstrap/docs/customize.html
deleted file mode 100644
index a3c6ec68..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/customize.html
+++ /dev/null
@@ -1,514 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Customize · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="active">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Masthead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Customize and download</h1>
-    <p class="lead"><a href="https://github.com/twitter/bootstrap/zipball/master">Download Bootstrap</a> or customize variables, components, JavaScript plugins, and more.</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#components"><i class="icon-chevron-right"></i> 1. Choose components</a></li>
-          <li><a href="#plugins"><i class="icon-chevron-right"></i> 2. Select jQuery plugins</a></li>
-          <li><a href="#variables"><i class="icon-chevron-right"></i> 3. Customize variables</a></li>
-          <li><a href="#download"><i class="icon-chevron-right"></i> 4. Download</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-        <!-- Customize form
-        ================================================== -->
-        <form>
-          <section class="download" id="components">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">Toggle all</a>
-              <h1>
-                1. Choose components
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <h3>Scaffolding</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="reset.less"> Normalize and reset</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="scaffolding.less"> Body type and links</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="grid.less"> Grid system</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="layouts.less"> Layouts</label>
-                <h3>Base CSS</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="type.less"> Headings, body, etc</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="code.less"> Code and pre</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="labels-badges.less"> Labels and badges</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="tables.less"> Tables</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="forms.less"> Forms</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="buttons.less"> Buttons</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="sprites.less"> Icons</label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h3>Components</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="button-groups.less"> Button groups and dropdowns</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="navs.less"> Navs, tabs, and pills</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="navbar.less"> Navbar</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="breadcrumbs.less"> Breadcrumbs</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="pagination.less"> Pagination</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="pager.less"> Pager</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="thumbnails.less"> Thumbnails</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="alerts.less"> Alerts</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="progress-bars.less"> Progress bars</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="hero-unit.less"> Hero unit</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="media.less"> Media component</label>
-                <h3>JS Components</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="tooltip.less"> Tooltips</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="popovers.less"> Popovers</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="modals.less"> Modals</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="dropdowns.less"> Dropdowns</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="accordion.less"> Collapse</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="carousel.less"> Carousel</label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h3>Miscellaneous</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="wells.less"> Wells</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="close.less"> Close icon</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="utilities.less"> Utilities</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="component-animations.less"> Component animations</label>
-                <h3>Responsive</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-utilities.less"> Visible/hidden classes</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-767px-max.less"> Narrow tablets and below (<767px)</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-768px-979px.less"> Tablets to desktops (767-979px)</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-1200px-min.less"> Large desktops (>1200px)</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-navbar.less"> Responsive navbar</label>
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-          <section class="download" id="plugins">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">Toggle all</a>
-              <h1>
-                2. Select jQuery plugins
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-transition.js">
-                  Transitions <small>(required for any animation)</small>
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-modal.js">
-                  Modals
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-dropdown.js">
-                  Dropdowns
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-scrollspy.js">
-                  Scrollspy
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-tab.js">
-                  Togglable tabs
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-tooltip.js">
-                  Tooltips
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-popover.js">
-                  Popovers <small>(requires Tooltips)</small>
-                </label>
-              </div><!-- /span -->
-              <div class="span3">
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-affix.js">
-                  Affix
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-alert.js">
-                  Alert messages
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-button.js">
-                  Buttons
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-collapse.js">
-                  Collapse
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-carousel.js">
-                  Carousel
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-typeahead.js">
-                  Typeahead
-                </label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h4 class="muted">Heads up!</h4>
-                <p class="muted">All checked plugins will be compiled into a single file, bootstrap.js. All plugins require the latest version of <a href="http://jquery.com/" target="_blank">jQuery</a> to be included.</p>
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-
-          <section class="download" id="variables">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">Reset to defaults</a>
-              <h1>
-                3. Customize variables
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <h3>Scaffolding</h3>
-                <label>@bodyBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@textColor</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-
-                <h3>Links</h3>
-                <label>@linkColor</label>
-                <input type="text" class="span3" placeholder="#08c">
-                <label>@linkColorHover</label>
-                <input type="text" class="span3" placeholder="darken(@linkColor, 15%)">
-                <h3>Colors</h3>
-                <label>@blue</label>
-                <input type="text" class="span3" placeholder="#049cdb">
-                <label>@green</label>
-                <input type="text" class="span3" placeholder="#46a546">
-                <label>@red</label>
-                <input type="text" class="span3" placeholder="#9d261d">
-                <label>@yellow</label>
-                <input type="text" class="span3" placeholder="#ffc40d">
-                <label>@orange</label>
-                <input type="text" class="span3" placeholder="#f89406">
-                <label>@pink</label>
-                <input type="text" class="span3" placeholder="#c3325f">
-                <label>@purple</label>
-                <input type="text" class="span3" placeholder="#7a43b6">
-
-                <h3>Sprites</h3>
-                <label>@iconSpritePath</label>
-                <input type="text" class="span3" placeholder="'../img/glyphicons-halflings.png'">
-                <label>@iconWhiteSpritePath</label>
-                <input type="text" class="span3" placeholder="'../img/glyphicons-halflings-white.png'">
-
-                <h3>Grid system</h3>
-                <label>@gridColumns</label>
-                <input type="text" class="span3" placeholder="12">
-                <label>@gridColumnWidth</label>
-                <input type="text" class="span3" placeholder="60px">
-                <label>@gridGutterWidth</label>
-                <input type="text" class="span3" placeholder="20px">
-                <label>@gridColumnWidth1200</label>
-                <input type="text" class="span3" placeholder="70px">
-                <label>@gridGutterWidth1200</label>
-                <input type="text" class="span3" placeholder="30px">
-                <label>@gridColumnWidth768</label>
-                <input type="text" class="span3" placeholder="42px">
-                <label>@gridGutterWidth768</label>
-                <input type="text" class="span3" placeholder="20px">
-
-              </div><!-- /span -->
-              <div class="span3">
-
-                <h3>Typography</h3>
-                <label>@sansFontFamily</label>
-                <input type="text" class="span3" placeholder="'Helvetica Neue', Helvetica, Arial, sans-serif">
-                <label>@serifFontFamily</label>
-                <input type="text" class="span3" placeholder="Georgia, 'Times New Roman', Times, serif">
-                <label>@monoFontFamily</label>
-                <input type="text" class="span3" placeholder="Menlo, Monaco, 'Courier New', monospace">
-
-                <label>@baseFontSize</label>
-                <input type="text" class="span3" placeholder="14px">
-                <label>@baseFontFamily</label>
-                <input type="text" class="span3" placeholder="@sansFontFamily">
-                <label>@baseLineHeight</label>
-                <input type="text" class="span3" placeholder="20px">
-
-                <label>@altFontFamily</label>
-                <input type="text" class="span3" placeholder="@serifFontFamily">
-                <label>@headingsFontFamily</label>
-                <input type="text" class="span3" placeholder="inherit">
-                <label>@headingsFontWeight</label>
-                <input type="text" class="span3" placeholder="bold">
-                <label>@headingsColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-
-                <label>@fontSizeLarge</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 1.25">
-                <label>@fontSizeSmall</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 0.85">
-                <label>@fontSizeMini</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 0.75">
-
-                <label>@paddingLarge</label>
-                <input type="text" class="span3" placeholder="11px 19px">
-                <label>@paddingSmall</label>
-                <input type="text" class="span3" placeholder="2px 10px">
-                <label>@paddingMini</label>
-                <input type="text" class="span3" placeholder="1px 6px">
-
-                <label>@baseBorderRadius</label>
-                <input type="text" class="span3" placeholder="4px">
-                <label>@borderRadiusLarge</label>
-                <input type="text" class="span3" placeholder="6px">
-                <label>@borderRadiusSmall</label>
-                <input type="text" class="span3" placeholder="3px">
-
-                <label>@heroUnitBackground</label>
-                <input type="text" class="span3" placeholder="@grayLighter">
-                <label>@heroUnitHeadingColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-                <label>@heroUnitLeadColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-
-                <h3>Tables</h3>
-                <label>@tableBackground</label>
-                <input type="text" class="span3" placeholder="transparent">
-                <label>@tableBackgroundAccent</label>
-                <input type="text" class="span3" placeholder="#f9f9f9">
-                <label>@tableBackgroundHover</label>
-                <input type="text" class="span3" placeholder="#f5f5f5">
-                <label>@tableBorder</label>
-                <input type="text" class="span3" placeholder="#ddd">
-
-                <h3>Forms</h3>
-                <label>@placeholderText</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@inputBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@inputBorder</label>
-                <input type="text" class="span3" placeholder="#ccc">
-                <label>@inputBorderRadius</label>
-                <input type="text" class="span3" placeholder="3px">
-                <label>@inputDisabledBackground</label>
-                <input type="text" class="span3" placeholder="@grayLighter">
-                <label>@formActionsBackground</label>
-                <input type="text" class="span3" placeholder="#f5f5f5">
-                <label>@btnPrimaryBackground</label>
-                <input type="text" class="span3" placeholder="@linkColor">
-                <label>@btnPrimaryBackgroundHighlight</label>
-                <input type="text" class="span3" placeholder="darken(@white, 10%)">
-
-              </div><!-- /span -->
-              <div class="span3">
-
-                <h3>Form states &amp; alerts</h3>
-                <label>@warningText</label>
-                <input type="text" class="span3" placeholder="#c09853">
-                <label>@warningBackground</label>
-                <input type="text" class="span3" placeholder="#fcf8e3">
-                <label>@errorText</label>
-                <input type="text" class="span3" placeholder="#b94a48">
-                <label>@errorBackground</label>
-                <input type="text" class="span3" placeholder="#f2dede">
-                <label>@successText</label>
-                <input type="text" class="span3" placeholder="#468847">
-                <label>@successBackground</label>
-                <input type="text" class="span3" placeholder="#dff0d8">
-                <label>@infoText</label>
-                <input type="text" class="span3" placeholder="#3a87ad">
-                <label>@infoBackground</label>
-                <input type="text" class="span3" placeholder="#d9edf7">
-
-                <h3>Navbar</h3>
-                <label>@navbarHeight</label>
-                <input type="text" class="span3" placeholder="40px">
-                <label>@navbarBackground</label>
-                <input type="text" class="span3" placeholder="@grayDarker">
-                <label>@navbarBackgroundHighlight</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-                <label>@navbarText</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@navbarBrandColor</label>
-                <input type="text" class="span3" placeholder="@navbarLinkColor">
-                <label>@navbarLinkColor</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@navbarLinkColorHover</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@navbarLinkColorActive</label>
-                <input type="text" class="span3" placeholder="@navbarLinkColorHover">
-                <label>@navbarLinkBackgroundHover</label>
-                <input type="text" class="span3" placeholder="transparent">
-                <label>@navbarLinkBackgroundActive</label>
-                <input type="text" class="span3" placeholder="@navbarBackground">
-                <label>@navbarSearchBackground</label>
-                <input type="text" class="span3" placeholder="lighten(@navbarBackground, 25%)">
-                <label>@navbarSearchBackgroundFocus</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@navbarSearchBorder</label>
-                <input type="text" class="span3" placeholder="darken(@navbarSearchBackground, 30%)">
-                <label>@navbarSearchPlaceholderColor</label>
-                <input type="text" class="span3" placeholder="#ccc">
-
-                <label>@navbarCollapseWidth</label>
-                <input type="text" class="span3" placeholder="979px">
-                <label>@navbarCollapseDesktopWidth</label>
-                <input type="text" class="span3" placeholder="@navbarCollapseWidth + 1">
-
-                <h3>Dropdowns</h3>
-                <label>@dropdownBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@dropdownBorder</label>
-                <input type="text" class="span3" placeholder="rgba(0,0,0,.2)">
-                <label>@dropdownLinkColor</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-                <label>@dropdownLinkColorHover</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@dropdownLinkBackgroundHover</label>
-                <input type="text" class="span3" placeholder="@linkColor">
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-          <section class="download" id="download">
-            <div class="page-header">
-              <h1>
-                4. Download
-              </h1>
-            </div>
-            <div class="download-btn">
-              <a class="btn btn-primary" href="#" >Customize and Download</a>
-              <h4>What's included?</h4>
-              <p>Downloads include compiled CSS, compiled and minified CSS, and compiled jQuery plugins, all nicely packed up into a zipball for your convenience.</p>
-            </div>
-          </section><!-- /download -->
-        </form>
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/carousel.html b/src/main/webapp/bower_components/bootstrap/docs/examples/carousel.html
deleted file mode 100644
index 81d1a28a..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/carousel.html
+++ /dev/null
@@ -1,454 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Carousel Template &middot; Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <style>
-
-    /* GLOBAL STYLES
-    -------------------------------------------------- */
-    /* Padding below the footer and lighter body text */
-
-    body {
-      padding-bottom: 40px;
-      color: #5a5a5a;
-    }
-
-
-
-    /* CUSTOMIZE THE NAVBAR
-    -------------------------------------------------- */
-
-    /* Special class on .container surrounding .navbar, used for positioning it into place. */
-    .navbar-wrapper {
-      position: absolute;
-      top: 0;
-      left: 0;
-      right: 0;
-      z-index: 10;
-      margin-top: 20px;
-      margin-bottom: -90px; /* Negative margin to pull up carousel. 90px is roughly margins and height of navbar. */
-    }
-    .navbar-wrapper .navbar {
-
-    }
-
-    /* Remove border and change up box shadow for more contrast */
-    .navbar .navbar-inner {
-      border: 0;
-      -webkit-box-shadow: 0 2px 10px rgba(0,0,0,.25);
-         -moz-box-shadow: 0 2px 10px rgba(0,0,0,.25);
-              box-shadow: 0 2px 10px rgba(0,0,0,.25);
-    }
-
-    /* Downsize the brand/project name a bit */
-    .navbar .brand {
-      padding: 14px 20px 16px; /* Increase vertical padding to match navbar links */
-      font-size: 16px;
-      font-weight: bold;
-      text-shadow: 0 -1px 0 rgba(0,0,0,.5);
-    }
-
-    /* Navbar links: increase padding for taller navbar */
-    .navbar .nav > li > a {
-      padding: 15px 20px;
-    }
-
-    /* Offset the responsive button for proper vertical alignment */
-    .navbar .btn-navbar {
-      margin-top: 10px;
-    }
-
-
-
-    /* CUSTOMIZE THE CAROUSEL
-    -------------------------------------------------- */
-
-    /* Carousel base class */
-    .carousel {
-      margin-bottom: 60px;
-    }
-
-    .carousel .container {
-      position: relative;
-      z-index: 9;
-    }
-
-    .carousel-control {
-      height: 80px;
-      margin-top: 0;
-      font-size: 120px;
-      text-shadow: 0 1px 1px rgba(0,0,0,.4);
-      background-color: transparent;
-      border: 0;
-      z-index: 10;
-    }
-
-    .carousel .item {
-      height: 500px;
-    }
-    .carousel img {
-      position: absolute;
-      top: 0;
-      left: 0;
-      min-width: 100%;
-      height: 500px;
-    }
-
-    .carousel-caption {
-      background-color: transparent;
-      position: static;
-      max-width: 550px;
-      padding: 0 20px;
-      margin-top: 200px;
-    }
-    .carousel-caption h1,
-    .carousel-caption .lead {
-      margin: 0;
-      line-height: 1.25;
-      color: #fff;
-      text-shadow: 0 1px 1px rgba(0,0,0,.4);
-    }
-    .carousel-caption .btn {
-      margin-top: 10px;
-    }
-
-
-
-    /* MARKETING CONTENT
-    -------------------------------------------------- */
-
-    /* Center align the text within the three columns below the carousel */
-    .marketing .span4 {
-      text-align: center;
-    }
-    .marketing h2 {
-      font-weight: normal;
-    }
-    .marketing .span4 p {
-      margin-left: 10px;
-      margin-right: 10px;
-    }
-
-
-    /* Featurettes
-    ------------------------- */
-
-    .featurette-divider {
-      margin: 80px 0; /* Space out the Bootstrap <hr> more */
-    }
-    .featurette {
-      padding-top: 120px; /* Vertically center images part 1: add padding above and below text. */
-      overflow: hidden; /* Vertically center images part 2: clear their floats. */
-    }
-    .featurette-image {
-      margin-top: -120px; /* Vertically center images part 3: negative margin up the image the same amount of the padding to center it. */
-    }
-
-    /* Give some space on the sides of the floated elements so text doesn't run right into it. */
-    .featurette-image.pull-left {
-      margin-right: 40px;
-    }
-    .featurette-image.pull-right {
-      margin-left: 40px;
-    }
-
-    /* Thin out the marketing headings */
-    .featurette-heading {
-      font-size: 50px;
-      font-weight: 300;
-      line-height: 1;
-      letter-spacing: -1px;
-    }
-
-
-
-    /* RESPONSIVE CSS
-    -------------------------------------------------- */
-
-    @media (max-width: 979px) {
-
-      .container.navbar-wrapper {
-        margin-bottom: 0;
-        width: auto;
-      }
-      .navbar-inner {
-        border-radius: 0;
-        margin: -20px 0;
-      }
-
-      .carousel .item {
-        height: 500px;
-      }
-      .carousel img {
-        width: auto;
-        height: 500px;
-      }
-
-      .featurette {
-        height: auto;
-        padding: 0;
-      }
-      .featurette-image.pull-left,
-      .featurette-image.pull-right {
-        display: block;
-        float: none;
-        max-width: 40%;
-        margin: 0 auto 20px;
-      }
-    }
-
-
-    @media (max-width: 767px) {
-
-      .navbar-inner {
-        margin: -20px;
-      }
-
-      .carousel {
-        margin-left: -20px;
-        margin-right: -20px;
-      }
-      .carousel .container {
-
-      }
-      .carousel .item {
-        height: 300px;
-      }
-      .carousel img {
-        height: 300px;
-      }
-      .carousel-caption {
-        width: 65%;
-        padding: 0 70px;
-        margin-top: 100px;
-      }
-      .carousel-caption h1 {
-        font-size: 30px;
-      }
-      .carousel-caption .lead,
-      .carousel-caption .btn {
-        font-size: 18px;
-      }
-
-      .marketing .span4 + .span4 {
-        margin-top: 40px;
-      }
-
-      .featurette-heading {
-        font-size: 30px;
-      }
-      .featurette .lead {
-        font-size: 18px;
-        line-height: 1.5;
-      }
-
-    }
-    </style>
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-
-
-    <!-- NAVBAR
-    ================================================== -->
-    <div class="navbar-wrapper">
-      <!-- Wrap the .navbar in .container to center it within the absolutely positioned parent. -->
-      <div class="container">
-
-        <div class="navbar navbar-inverse">
-          <div class="navbar-inner">
-            <!-- Responsive Navbar Part 1: Button for triggering responsive navbar (not covered in tutorial). Include responsive CSS to utilize. -->
-            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-            <a class="brand" href="#">Project name</a>
-            <!-- Responsive Navbar Part 2: Place all navbar contents you want collapsed withing .navbar-collapse.collapse. -->
-            <div class="nav-collapse collapse">
-              <ul class="nav">
-                <li class="active"><a href="#">Home</a></li>
-                <li><a href="#about">About</a></li>
-                <li><a href="#contact">Contact</a></li>
-                <!-- Read about Bootstrap dropdowns at http://twitter.github.com/bootstrap/javascript.html#dropdowns -->
-                <li class="dropdown">
-                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                  <ul class="dropdown-menu">
-                    <li><a href="#">Action</a></li>
-                    <li><a href="#">Another action</a></li>
-                    <li><a href="#">Something else here</a></li>
-                    <li class="divider"></li>
-                    <li class="nav-header">Nav header</li>
-                    <li><a href="#">Separated link</a></li>
-                    <li><a href="#">One more separated link</a></li>
-                  </ul>
-                </li>
-              </ul>
-            </div><!--/.nav-collapse -->
-          </div><!-- /.navbar-inner -->
-        </div><!-- /.navbar -->
-
-      </div> <!-- /.container -->
-    </div><!-- /.navbar-wrapper -->
-
-
-
-    <!-- Carousel
-    ================================================== -->
-    <div id="myCarousel" class="carousel slide">
-      <div class="carousel-inner">
-        <div class="item active">
-          <img src="../assets/img/examples/slide-01.jpg" alt="">
-          <div class="container">
-            <div class="carousel-caption">
-              <h1>Example headline.</h1>
-              <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-              <a class="btn btn-large btn-primary" href="#">Sign up today</a>
-            </div>
-          </div>
-        </div>
-        <div class="item">
-          <img src="../assets/img/examples/slide-02.jpg" alt="">
-          <div class="container">
-            <div class="carousel-caption">
-              <h1>Another example headline.</h1>
-              <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-              <a class="btn btn-large btn-primary" href="#">Learn more</a>
-            </div>
-          </div>
-        </div>
-        <div class="item">
-          <img src="../assets/img/examples/slide-03.jpg" alt="">
-          <div class="container">
-            <div class="carousel-caption">
-              <h1>One more for good measure.</h1>
-              <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-              <a class="btn btn-large btn-primary" href="#">Browse gallery</a>
-            </div>
-          </div>
-        </div>
-      </div>
-      <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>
-      <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>
-    </div><!-- /.carousel -->
-
-
-
-    <!-- Marketing messaging and featurettes
-    ================================================== -->
-    <!-- Wrap the rest of the page in another container to center all the content. -->
-
-    <div class="container marketing">
-
-      <!-- Three columns of text below the carousel -->
-      <div class="row">
-        <div class="span4">
-          <img class="img-circle" data-src="holder.js/140x140">
-          <h2>Heading</h2>
-          <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div><!-- /.span4 -->
-        <div class="span4">
-          <img class="img-circle" data-src="holder.js/140x140">
-          <h2>Heading</h2>
-          <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div><!-- /.span4 -->
-        <div class="span4">
-          <img class="img-circle" data-src="holder.js/140x140">
-          <h2>Heading</h2>
-          <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div><!-- /.span4 -->
-      </div><!-- /.row -->
-
-
-      <!-- START THE FEATURETTES -->
-
-      <hr class="featurette-divider">
-
-      <div class="featurette">
-        <img class="featurette-image pull-right" src="../assets/img/examples/browser-icon-chrome.png">
-        <h2 class="featurette-heading">First featurette headling. <span class="muted">It'll blow your mind.</span></h2>
-        <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
-      </div>
-
-      <hr class="featurette-divider">
-
-      <div class="featurette">
-        <img class="featurette-image pull-left" src="../assets/img/examples/browser-icon-firefox.png">
-        <h2 class="featurette-heading">Oh yeah, it's that good. <span class="muted">See for yourself.</span></h2>
-        <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
-      </div>
-
-      <hr class="featurette-divider">
-
-      <div class="featurette">
-        <img class="featurette-image pull-right" src="../assets/img/examples/browser-icon-safari.png">
-        <h2 class="featurette-heading">And lastly, this one. <span class="muted">Checkmate.</span></h2>
-        <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
-      </div>
-
-      <hr class="featurette-divider">
-
-      <!-- /END THE FEATURETTES -->
-
-
-      <!-- FOOTER -->
-      <footer>
-        <p class="pull-right"><a href="#">Back to top</a></p>
-        <p>&copy; 2013 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
-      </footer>
-
-    </div><!-- /.container -->
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-    <script>
-      !function ($) {
-        $(function(){
-          // carousel demo
-          $('#myCarousel').carousel()
-        })
-      }(window.jQuery)
-    </script>
-    <script src="../assets/js/holder/holder.js"></script>
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/fluid.html b/src/main/webapp/bower_components/bootstrap/docs/examples/fluid.html
deleted file mode 100644
index 502062a2..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/fluid.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-      body {
-        padding-top: 60px;
-        padding-bottom: 40px;
-      }
-      .sidebar-nav {
-        padding: 9px 0;
-      }
-
-      @media (max-width: 980px) {
-        /* Enable use of floated navbar text */
-        .navbar-text.pull-right {
-          float: none;
-          padding-left: 5px;
-          padding-right: 5px;
-        }
-      }
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container-fluid">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="#">Project name</a>
-          <div class="nav-collapse collapse">
-            <p class="navbar-text pull-right">
-              Logged in as <a href="#" class="navbar-link">Username</a>
-            </p>
-            <ul class="nav">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#about">About</a></li>
-              <li><a href="#contact">Contact</a></li>
-            </ul>
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-
-    <div class="container-fluid">
-      <div class="row-fluid">
-        <div class="span3">
-          <div class="well sidebar-nav">
-            <ul class="nav nav-list">
-              <li class="nav-header">Sidebar</li>
-              <li class="active"><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li class="nav-header">Sidebar</li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li class="nav-header">Sidebar</li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-              <li><a href="#">Link</a></li>
-            </ul>
-          </div><!--/.well -->
-        </div><!--/span-->
-        <div class="span9">
-          <div class="hero-unit">
-            <h1>Hello, world!</h1>
-            <p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
-            <p><a href="#" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
-          </div>
-          <div class="row-fluid">
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-          </div><!--/row-->
-          <div class="row-fluid">
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-            <div class="span4">
-              <h2>Heading</h2>
-              <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-              <p><a class="btn" href="#">View details &raquo;</a></p>
-            </div><!--/span-->
-          </div><!--/row-->
-        </div><!--/span-->
-      </div><!--/row-->
-
-      <hr>
-
-      <footer>
-        <p>&copy; Company 2013</p>
-      </footer>
-
-    </div><!--/.fluid-container-->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/hero.html b/src/main/webapp/bower_components/bootstrap/docs/examples/hero.html
deleted file mode 100644
index 6fb7a2c4..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/hero.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-      body {
-        padding-top: 60px;
-        padding-bottom: 40px;
-      }
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="#">Project name</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#about">About</a></li>
-              <li><a href="#contact">Contact</a></li>
-              <li class="dropdown">
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="nav-header">Nav header</li>
-                  <li><a href="#">Separated link</a></li>
-                  <li><a href="#">One more separated link</a></li>
-                </ul>
-              </li>
-            </ul>
-            <form class="navbar-form pull-right">
-              <input class="span2" type="text" placeholder="Email">
-              <input class="span2" type="password" placeholder="Password">
-              <button type="submit" class="btn">Sign in</button>
-            </form>
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-
-    <div class="container">
-
-      <!-- Main hero unit for a primary marketing message or call to action -->
-      <div class="hero-unit">
-        <h1>Hello, world!</h1>
-        <p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
-        <p><a href="#" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
-      </div>
-
-      <!-- Example row of columns -->
-      <div class="row">
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div>
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-       </div>
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div>
-      </div>
-
-      <hr>
-
-      <footer>
-        <p>&copy; Company 2013</p>
-      </footer>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/justified-nav.html b/src/main/webapp/bower_components/bootstrap/docs/examples/justified-nav.html
deleted file mode 100644
index ef8f8d42..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/justified-nav.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Template &middot; Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-      body {
-        padding-top: 20px;
-        padding-bottom: 60px;
-      }
-
-      /* Custom container */
-      .container {
-        margin: 0 auto;
-        max-width: 1000px;
-      }
-      .container > hr {
-        margin: 60px 0;
-      }
-
-      /* Main marketing message and sign up button */
-      .jumbotron {
-        margin: 80px 0;
-        text-align: center;
-      }
-      .jumbotron h1 {
-        font-size: 100px;
-        line-height: 1;
-      }
-      .jumbotron .lead {
-        font-size: 24px;
-        line-height: 1.25;
-      }
-      .jumbotron .btn {
-        font-size: 21px;
-        padding: 14px 24px;
-      }
-
-      /* Supporting marketing content */
-      .marketing {
-        margin: 60px 0;
-      }
-      .marketing p + h4 {
-        margin-top: 28px;
-      }
-
-
-      /* Customize the navbar links to be fill the entire space of the .navbar */
-      .navbar .navbar-inner {
-        padding: 0;
-      }
-      .navbar .nav {
-        margin: 0;
-        display: table;
-        width: 100%;
-      }
-      .navbar .nav li {
-        display: table-cell;
-        width: 1%;
-        float: none;
-      }
-      .navbar .nav li a {
-        font-weight: bold;
-        text-align: center;
-        border-left: 1px solid rgba(255,255,255,.75);
-        border-right: 1px solid rgba(0,0,0,.1);
-      }
-      .navbar .nav li:first-child a {
-        border-left: 0;
-        border-radius: 3px 0 0 3px;
-      }
-      .navbar .nav li:last-child a {
-        border-right: 0;
-        border-radius: 0 3px 3px 0;
-      }
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container">
-
-      <div class="masthead">
-        <h3 class="muted">Project name</h3>
-        <div class="navbar">
-          <div class="navbar-inner">
-            <div class="container">
-              <ul class="nav">
-                <li class="active"><a href="#">Home</a></li>
-                <li><a href="#">Projects</a></li>
-                <li><a href="#">Services</a></li>
-                <li><a href="#">Downloads</a></li>
-                <li><a href="#">About</a></li>
-                <li><a href="#">Contact</a></li>
-              </ul>
-            </div>
-          </div>
-        </div><!-- /.navbar -->
-      </div>
-
-      <!-- Jumbotron -->
-      <div class="jumbotron">
-        <h1>Marketing stuff!</h1>
-        <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-        <a class="btn btn-large btn-success" href="#">Get started today</a>
-      </div>
-
-      <hr>
-
-      <!-- Example row of columns -->
-      <div class="row-fluid">
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div>
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-       </div>
-        <div class="span4">
-          <h2>Heading</h2>
-          <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
-          <p><a class="btn" href="#">View details &raquo;</a></p>
-        </div>
-      </div>
-
-      <hr>
-
-      <div class="footer">
-        <p>&copy; Company 2013</p>
-      </div>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/marketing-narrow.html b/src/main/webapp/bower_components/bootstrap/docs/examples/marketing-narrow.html
deleted file mode 100644
index f6f5d168..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/marketing-narrow.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Template &middot; Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-      body {
-        padding-top: 20px;
-        padding-bottom: 40px;
-      }
-
-      /* Custom container */
-      .container-narrow {
-        margin: 0 auto;
-        max-width: 700px;
-      }
-      .container-narrow > hr {
-        margin: 30px 0;
-      }
-
-      /* Main marketing message and sign up button */
-      .jumbotron {
-        margin: 60px 0;
-        text-align: center;
-      }
-      .jumbotron h1 {
-        font-size: 72px;
-        line-height: 1;
-      }
-      .jumbotron .btn {
-        font-size: 21px;
-        padding: 14px 24px;
-      }
-
-      /* Supporting marketing content */
-      .marketing {
-        margin: 60px 0;
-      }
-      .marketing p + h4 {
-        margin-top: 28px;
-      }
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container-narrow">
-
-      <div class="masthead">
-        <ul class="nav nav-pills pull-right">
-          <li class="active"><a href="#">Home</a></li>
-          <li><a href="#">About</a></li>
-          <li><a href="#">Contact</a></li>
-        </ul>
-        <h3 class="muted">Project name</h3>
-      </div>
-
-      <hr>
-
-      <div class="jumbotron">
-        <h1>Super awesome marketing speak!</h1>
-        <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-        <a class="btn btn-large btn-success" href="#">Sign up today</a>
-      </div>
-
-      <hr>
-
-      <div class="row-fluid marketing">
-        <div class="span6">
-          <h4>Subheading</h4>
-          <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
-
-          <h4>Subheading</h4>
-          <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
-
-          <h4>Subheading</h4>
-          <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
-        </div>
-
-        <div class="span6">
-          <h4>Subheading</h4>
-          <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
-
-          <h4>Subheading</h4>
-          <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
-
-          <h4>Subheading</h4>
-          <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
-        </div>
-      </div>
-
-      <hr>
-
-      <div class="footer">
-        <p>&copy; Company 2013</p>
-      </div>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/signin.html b/src/main/webapp/bower_components/bootstrap/docs/examples/signin.html
deleted file mode 100644
index 03105278..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/signin.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Sign in &middot; Twitter Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-      body {
-        padding-top: 40px;
-        padding-bottom: 40px;
-        background-color: #f5f5f5;
-      }
-
-      .form-signin {
-        max-width: 300px;
-        padding: 19px 29px 29px;
-        margin: 0 auto 20px;
-        background-color: #fff;
-        border: 1px solid #e5e5e5;
-        -webkit-border-radius: 5px;
-           -moz-border-radius: 5px;
-                border-radius: 5px;
-        -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
-           -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
-                box-shadow: 0 1px 2px rgba(0,0,0,.05);
-      }
-      .form-signin .form-signin-heading,
-      .form-signin .checkbox {
-        margin-bottom: 10px;
-      }
-      .form-signin input[type="text"],
-      .form-signin input[type="password"] {
-        font-size: 16px;
-        height: auto;
-        margin-bottom: 15px;
-        padding: 7px 9px;
-      }
-
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container">
-
-      <form class="form-signin">
-        <h2 class="form-signin-heading">Please sign in</h2>
-        <input type="text" class="input-block-level" placeholder="Email address">
-        <input type="password" class="input-block-level" placeholder="Password">
-        <label class="checkbox">
-          <input type="checkbox" value="remember-me"> Remember me
-        </label>
-        <button class="btn btn-large btn-primary" type="submit">Sign in</button>
-      </form>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/starter-template.html b/src/main/webapp/bower_components/bootstrap/docs/examples/starter-template.html
deleted file mode 100644
index 29c47a89..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/starter-template.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
-      }
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="#">Project name</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#about">About</a></li>
-              <li><a href="#contact">Contact</a></li>
-            </ul>
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-
-    <div class="container">
-
-      <h1>Bootstrap starter template</h1>
-      <p>Use this document as a way to quick start any new project.<br> All you get is this message and a barebones HTML document.</p>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer-navbar.html b/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer-navbar.html
deleted file mode 100644
index a9027c8c..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer-navbar.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Sticky footer &middot; Twitter Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- CSS -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-
-      /* Sticky footer styles
-      -------------------------------------------------- */
-
-      html,
-      body {
-        height: 100%;
-        /* The html and body elements cannot have any padding or margin. */
-      }
-
-      /* Wrapper for page content to push down footer */
-      #wrap {
-        min-height: 100%;
-        height: auto !important;
-        height: 100%;
-        /* Negative indent footer by it's height */
-        margin: 0 auto -60px;
-      }
-
-      /* Set the fixed height of the footer here */
-      #push,
-      #footer {
-        height: 60px;
-      }
-      #footer {
-        background-color: #f5f5f5;
-      }
-
-      /* Lastly, apply responsive CSS fixes as necessary */
-      @media (max-width: 767px) {
-        #footer {
-          margin-left: -20px;
-          margin-right: -20px;
-          padding-left: 20px;
-          padding-right: 20px;
-        }
-      }
-
-
-
-      /* Custom page CSS
-      -------------------------------------------------- */
-      /* Not required for template or sticky footer method. */
-
-      #wrap > .container {
-        padding-top: 60px;
-      }
-      .container .credit {
-        margin: 20px 0;
-      }
-
-      code {
-        font-size: 80%;
-      }
-
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-
-    <!-- Part 1: Wrap all page content here -->
-    <div id="wrap">
-
-      <!-- Fixed navbar -->
-      <div class="navbar navbar-fixed-top">
-        <div class="navbar-inner">
-          <div class="container">
-            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </button>
-            <a class="brand" href="#">Project name</a>
-            <div class="nav-collapse collapse">
-              <ul class="nav">
-                <li class="active"><a href="#">Home</a></li>
-                <li><a href="#about">About</a></li>
-                <li><a href="#contact">Contact</a></li>
-                <li class="dropdown">
-                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                  <ul class="dropdown-menu">
-                    <li><a href="#">Action</a></li>
-                    <li><a href="#">Another action</a></li>
-                    <li><a href="#">Something else here</a></li>
-                    <li class="divider"></li>
-                    <li class="nav-header">Nav header</li>
-                    <li><a href="#">Separated link</a></li>
-                    <li><a href="#">One more separated link</a></li>
-                  </ul>
-                </li>
-              </ul>
-            </div><!--/.nav-collapse -->
-          </div>
-        </div>
-      </div>
-
-      <!-- Begin page content -->
-      <div class="container">
-        <div class="page-header">
-          <h1>Sticky footer with fixed navbar</h1>
-        </div>
-        <p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added within <code>#wrap</code> with <code>padding-top: 60px;</code> on the <code>.container</code>.</p>
-        <p>Back to <a href="./sticky-footer.html">the sticky footer</a> minus the navbar.</p>
-      </div>
-
-      <div id="push"></div>
-    </div>
-
-    <div id="footer">
-      <div class="container">
-        <p class="muted credit">Example courtesy <a href="http://martinbean.co.uk">Martin Bean</a> and <a href="http://ryanfait.com/sticky-footer/">Ryan Fait</a>.</p>
-      </div>
-    </div>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer.html b/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer.html
deleted file mode 100644
index d307d793..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/examples/sticky-footer.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Sticky footer &middot; Twitter Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- CSS -->
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-
-      /* Sticky footer styles
-      -------------------------------------------------- */
-
-      html,
-      body {
-        height: 100%;
-        /* The html and body elements cannot have any padding or margin. */
-      }
-
-      /* Wrapper for page content to push down footer */
-      #wrap {
-        min-height: 100%;
-        height: auto !important;
-        height: 100%;
-        /* Negative indent footer by it's height */
-        margin: 0 auto -60px;
-      }
-
-      /* Set the fixed height of the footer here */
-      #push,
-      #footer {
-        height: 60px;
-      }
-      #footer {
-        background-color: #f5f5f5;
-      }
-
-      /* Lastly, apply responsive CSS fixes as necessary */
-      @media (max-width: 767px) {
-        #footer {
-          margin-left: -20px;
-          margin-right: -20px;
-          padding-left: 20px;
-          padding-right: 20px;
-        }
-      }
-
-
-
-      /* Custom page CSS
-      -------------------------------------------------- */
-      /* Not required for template or sticky footer method. */
-
-      .container {
-        width: auto;
-        max-width: 680px;
-      }
-      .container .credit {
-        margin: 20px 0;
-      }
-
-    </style>
-    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="../assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-
-    <!-- Part 1: Wrap all page content here -->
-    <div id="wrap">
-
-      <!-- Begin page content -->
-      <div class="container">
-        <div class="page-header">
-          <h1>Sticky footer</h1>
-        </div>
-        <p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p>
-        <p>Use <a href="./sticky-footer-navbar.html">the sticky footer</a> with a fixed navbar if need be, too.</p>
-      </div>
-
-      <div id="push"></div>
-    </div>
-
-    <div id="footer">
-      <div class="container">
-        <p class="muted credit">Example courtesy <a href="http://martinbean.co.uk">Martin Bean</a> and <a href="http://ryanfait.com/sticky-footer/">Ryan Fait</a>.</p>
-      </div>
-    </div>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../assets/js/jquery.js"></script>
-    <script src="../assets/js/bootstrap-transition.js"></script>
-    <script src="../assets/js/bootstrap-alert.js"></script>
-    <script src="../assets/js/bootstrap-modal.js"></script>
-    <script src="../assets/js/bootstrap-dropdown.js"></script>
-    <script src="../assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../assets/js/bootstrap-tab.js"></script>
-    <script src="../assets/js/bootstrap-tooltip.js"></script>
-    <script src="../assets/js/bootstrap-popover.js"></script>
-    <script src="../assets/js/bootstrap-button.js"></script>
-    <script src="../assets/js/bootstrap-collapse.js"></script>
-    <script src="../assets/js/bootstrap-carousel.js"></script>
-    <script src="../assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/extend.html b/src/main/webapp/bower_components/bootstrap/docs/extend.html
deleted file mode 100644
index 59281293..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/extend.html
+++ /dev/null
@@ -1,282 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Extend · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Extending Bootstrap</h1>
-    <p class="lead">Extend Bootstrap to take advantage of included styles and components, as well as LESS variables and mixins.</p>
-  <div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#built-with-less"><i class="icon-chevron-right"></i> Built with LESS</a></li>
-          <li><a href="#compiling"><i class="icon-chevron-right"></i> Compiling Bootstrap</a></li>
-          <li><a href="#static-assets"><i class="icon-chevron-right"></i> Use as static assets</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- BUILT WITH LESS
-        ================================================== -->
-        <section id="built-with-less">
-          <div class="page-header">
-            <h1>Built with LESS</h1>
-          </div>
-
-          <img style="float: right; height: 36px; margin: 10px 20px 20px" src="assets/img/less-logo-large.png" alt="LESS CSS">
-          <p class="lead">Bootstrap is made with LESS at its core, a dynamic stylesheet language created by our good friend, <a href="http://cloudhead.io">Alexis Sellier</a>. It makes developing systems-based CSS faster, easier, and more fun.</p>
-
-          <h3>Why LESS?</h3>
-          <p>One of Bootstrap's creators wrote a quick <a href="http://www.wordsbyf.at/2012/03/08/why-less/">blog post about this</a>, summarized here:</p>
-          <ul>
-            <li>Bootstrap compiles faster ~6x faster with Less compared to Sass</li>
-            <li>Less is written in JavaScript, making it easier to us to dive in and patch compared to Ruby with Sass.</li>
-            <li>Less is more; we want to feel like we're writing CSS and making Bootstrap approachable to all.</li>
-          </ul>
-
-          <h3>What's included?</h3>
-          <p>As an extension of CSS, LESS includes variables, mixins for reusable snippets of code, operations for simple math, nesting, and even color functions.</p>
-
-          <h3>Learn more</h3>
-          <p>Visit the official website at <a href="http://lesscss.org">http://lesscss.org</a> to learn more.</p>
-        </section>
-
-
-
-        <!-- COMPILING LESS AND BOOTSTRAP
-        ================================================== -->
-        <section id="compiling">
-          <div class="page-header">
-            <h1>Compiling Bootstrap with Less</h1>
-          </div>
-
-          <p class="lead">Since our CSS is written with Less and utilizes variables and mixins, it needs to be compiled for final production implementation. Here's how.</p>
-
-          <div class="alert alert-info">
-            <strong>Note:</strong> If you're submitting a pull request to GitHub with modified CSS, you <strong>must</strong> recompile the CSS via any of these methods.
-          </div>
-
-          <h2>Tools for compiling</h2>
-
-          <h3>Command line</h3>
-          <p>Follow <a href="https://github.com/twitter/bootstrap#developers">the instructions in the project readme</a> on GitHub for compiling via command line.</p>
-
-          <h3>JavaScript</h3>
-          <p><a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.</p>
-<pre class="prettyprint">
-&lt;link rel="stylesheet/less" href="/path/to/bootstrap.less"&gt;
-&lt;script src="/path/to/less.js"&gt;&lt;/script&gt;
-</pre>
-          <p>To recompile the .less files, just save them and reload your page. Less.js compiles them and stores them in local storage.</p>
-
-          <h3>Unofficial Mac app</h3>
-          <p><a href="http://incident57.com/less/">The unofficial Mac app</a> watches directories of .less files and compiles the code to local files after every save of a watched .less file. If you like, you can toggle preferences in the app for automatic minifying and which directory the compiled files end up in.</p>
-
-          <h3>More apps</h3>
-          <h4><a href="http://crunchapp.net/" target="_blank">Crunch</a></h4>
-          <p>Crunch is a great looking LESS editor and compiler built on Adobe Air.</p>
-          <h4><a href="http://incident57.com/codekit/" target="_blank">CodeKit</a></h4>
-          <p>Created by the same guy as the unofficial Mac app, CodeKit is a Mac app that compiles LESS, SASS, Stylus, and CoffeeScript.</p>
-          <h4><a href="http://wearekiss.com/simpless" target="_blank">Simpless</a></h4>
-          <p>Mac, Linux, and Windows app for drag and drop compiling of LESS files. Plus, the <a href="https://github.com/Paratron/SimpLESS" target="_blank">source code is on GitHub</a>.</p>
-
-        </section>
-
-
-
-        <!-- Static assets
-        ================================================== -->
-        <section id="static-assets">
-          <div class="page-header">
-            <h1>Use as static assets</h1>
-          </div>
-          <p class="lead"><a href="./getting-started.html">Quickly start</a> any web project by dropping in the compiled or minified CSS and JS. Layer on custom styles separately for easy upgrades and maintenance moving forward.</p>
-
-          <h3>Setup file structure</h3>
-          <p>Download the latest compiled Bootstrap and place into your project. For example, you might have something like this:</p>
-<pre>
-  <span class="icon-folder-open"></span> app/
-      <span class="icon-folder-open"></span> layouts/
-      <span class="icon-folder-open"></span> templates/
-  <span class="icon-folder-open"></span> public/
-      <span class="icon-folder-open"></span> css/
-          <span class="icon-file"></span> bootstrap.min.css
-      <span class="icon-folder-open"></span> js/
-          <span class="icon-file"></span> bootstrap.min.js
-      <span class="icon-folder-open"></span> img/
-          <span class="icon-file"></span> glyphicons-halflings.png
-          <span class="icon-file"></span> glyphicons-halflings-white.png
-</pre>
-
-          <h3>Utilize starter template</h3>
-          <p>Copy the following base HTML to get started.</p>
-<pre class="prettyprint linenums">
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="public/css/bootstrap.min.css" rel="stylesheet"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;script src="public/js/bootstrap.min.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-
-          <h3>Layer on custom code</h3>
-          <p>Work in your custom CSS, JS, and more as necessary to make Bootstrap your own with your own separate CSS and JS files.</p>
-<pre class="prettyprint linenums">
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="public/css/bootstrap.min.css" rel="stylesheet"&gt;
-    &lt;!-- Project --&gt;
-    &lt;link href="public/css/application.css" rel="stylesheet"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;script src="public/js/bootstrap.min.js"&gt;&lt;/script&gt;
-    &lt;!-- Project --&gt;
-    &lt;script src="public/js/application.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-
-        </section>
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/getting-started.html b/src/main/webapp/bower_components/bootstrap/docs/getting-started.html
deleted file mode 100644
index c54da9a6..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/getting-started.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Getting · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="active">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Getting started</h1>
-    <p class="lead">Overview of the project, its contents, and how to get started with a simple template.</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#download-bootstrap"><i class="icon-chevron-right"></i> Download</a></li>
-          <li><a href="#file-structure"><i class="icon-chevron-right"></i> File structure</a></li>
-          <li><a href="#contents"><i class="icon-chevron-right"></i> What's included</a></li>
-          <li><a href="#html-template"><i class="icon-chevron-right"></i> HTML template</a></li>
-          <li><a href="#examples"><i class="icon-chevron-right"></i> Examples</a></li>
-          <li><a href="#what-next"><i class="icon-chevron-right"></i> What next?</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Download
-        ================================================== -->
-        <section id="download-bootstrap">
-          <div class="page-header">
-            <h1>1. Download</h1>
-          </div>
-          <p class="lead">Before downloading, be sure to have a code editor (we recommend <a href="http://sublimetext.com/2">Sublime Text 2</a>) and some working knowledge of HTML and CSS. We won't walk through the source files here, but they are available for download. We'll focus on getting started with the compiled Bootstrap files.</p>
-
-          <div class="row-fluid">
-            <div class="span6">
-              <h2>Download compiled</h2>
-              <p><strong>Fastest way to get started:</strong> get the compiled and minified versions of our CSS, JS, and images. No docs or original source files.</p>
-              <p><a class="btn btn-large btn-primary" href="assets/bootstrap.zip" >Download Bootstrap</a></p>
-            </div>
-            <div class="span6">
-              <h2>Download source</h2>
-              <p>Get the original files for all CSS and JavaScript, along with a local copy of the docs by downloading the latest version directly from GitHub.</p>
-              <p><a class="btn btn-large" href="https://github.com/twitter/bootstrap/zipball/master" >Download Bootstrap source</a></p>
-            </div>
-          </div>
-        </section>
-
-
-
-        <!-- File structure
-        ================================================== -->
-        <section id="file-structure">
-          <div class="page-header">
-            <h1>2. File structure</h1>
-          </div>
-          <p class="lead">Within the download you'll find the following file structure and contents, logically grouping common assets and providing both compiled and minified variations.</p>
-          <p>Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:</p>
-<pre class="prettyprint">
-  bootstrap/
-  ├── css/
-  │   ├── bootstrap.css
-  │   ├── bootstrap.min.css
-  ├── js/
-  │   ├── bootstrap.js
-  │   ├── bootstrap.min.js
-  └── img/
-      ├── glyphicons-halflings.png
-      └── glyphicons-halflings-white.png
-</pre>
-          <p>This is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (<code>bootstrap.*</code>), as well as compiled and minified CSS and JS (<code>bootstrap.min.*</code>). The image files are compressed using <a href="http://imageoptim.com/">ImageOptim</a>, a Mac app for compressing PNGs.</p>
-          <p>Please note that all JavaScript plugins require jQuery to be included.</p>
-        </section>
-
-
-
-        <!-- Contents
-        ================================================== -->
-        <section id="contents">
-          <div class="page-header">
-            <h1>3. What's included</h1>
-          </div>
-          <p class="lead">Bootstrap comes equipped with HTML, CSS, and JS for all sorts of things, but they can be summarized with a handful of categories visible at the top of the <a href="http://getbootstrap.com">Bootstrap documentation</a>.</p>
-
-          <h2>Docs sections</h2>
-          <h4><a href="http://twitter.github.com/bootstrap/scaffolding.html">Scaffolding</a></h4>
-          <p>Global styles for the body to reset type and background, link styles, grid system, and two simple layouts.</p>
-          <h4><a href="http://twitter.github.com/bootstrap/base-css.html">Base CSS</a></h4>
-          <p>Styles for common HTML elements like typography, code, tables, forms, and buttons. Also includes <a href="http://glyphicons.com">Glyphicons</a>, a great little icon set.</p>
-          <h4><a href="http://twitter.github.com/bootstrap/components.html">Components</a></h4>
-          <p>Basic styles for common interface components like tabs and pills, navbar, alerts, page headers, and more.</p>
-          <h4><a href="http://twitter.github.com/bootstrap/javascript.html">JavaScript plugins</a></h4>
-          <p>Similar to Components, these JavaScript plugins are interactive components for things like tooltips, popovers, modals, and more.</p>
-
-          <h2>List of components</h2>
-          <p>Together, the <strong>Components</strong> and <strong>JavaScript plugins</strong> sections provide the following interface elements:</p>
-          <ul>
-            <li>Button groups</li>
-            <li>Button dropdowns</li>
-            <li>Navigational tabs, pills, and lists</li>
-            <li>Navbar</li>
-            <li>Labels</li>
-            <li>Badges</li>
-            <li>Page headers and hero unit</li>
-            <li>Thumbnails</li>
-            <li>Alerts</li>
-            <li>Progress bars</li>
-            <li>Modals</li>
-            <li>Dropdowns</li>
-            <li>Tooltips</li>
-            <li>Popovers</li>
-            <li>Accordion</li>
-            <li>Carousel</li>
-            <li>Typeahead</li>
-          </ul>
-          <p>In future guides, we may walk through these components individually in more detail. Until then, look for each of these in the documentation for information on how to utilize and customize them.</p>
-        </section>
-
-
-
-        <!-- HTML template
-        ================================================== -->
-        <section id="html-template">
-          <div class="page-header">
-            <h1>4. Basic HTML template</h1>
-          </div>
-          <p class="lead">With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="./getting-started.html#file-structure">File structure</a>.</p>
-          <p>Now, here's a look at a <strong>typical HTML file</strong>:</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-          <p>To make this <strong>a Bootstrapped template</strong>, just include the appropriate CSS and JS files:</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
-    &lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-          <p><strong>And you're set!</strong> With those two files added, you can begin to develop any site or application with Bootstrap.</p>
-        </section>
-
-
-
-        <!-- Examples
-        ================================================== -->
-        <section id="examples">
-          <div class="page-header">
-            <h1>5. Examples</h1>
-          </div>
-          <p class="lead">Move beyond the base template with a few example layouts. We encourage folks to iterate on these examples and not simply use them as an end result.</p>
-          <ul class="thumbnails bootstrap-examples">
-            <li class="span3">
-              <a class="thumbnail" href="examples/starter-template.html">
-                <img src="assets/img/examples/bootstrap-example-starter.png" alt="">
-              </a>
-              <h4>Starter template</h4>
-              <p>A barebones HTML document with all the Bootstrap CSS and JavaScript included.</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/hero.html">
-                <img src="assets/img/examples/bootstrap-example-marketing.png" alt="">
-              </a>
-              <h4>Basic marketing site</h4>
-              <p>Featuring a hero unit for a primary message and three supporting elements.</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/fluid.html">
-                <img src="assets/img/examples/bootstrap-example-fluid.png" alt="">
-              </a>
-              <h4>Fluid layout</h4>
-              <p>Uses our new responsive, fluid grid system to create a seamless liquid layout.</p>
-            </li>
-
-            <li class="span3">
-              <a class="thumbnail" href="examples/marketing-narrow.html">
-                <img src="assets/img/examples/bootstrap-example-marketing-narrow.png" alt="">
-              </a>
-              <h4>Narrow marketing</h4>
-              <p>Slim, lightweight marketing template for small projects or teams.</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/justified-nav.html">
-                <img src="assets/img/examples/bootstrap-example-justified-nav.png" alt="">
-              </a>
-              <h4>Justified nav</h4>
-              <p>Marketing page with equal-width navigation links in a modified navbar.</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/signin.html">
-                <img src="assets/img/examples/bootstrap-example-signin.png" alt="">
-              </a>
-              <h4>Sign in</h4>
-              <p>Barebones sign in form with custom, larger form controls and a flexible layout.</p>
-            </li>
-
-            <li class="span3">
-              <a class="thumbnail" href="examples/sticky-footer.html">
-                <img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt="">
-              </a>
-              <h4>Sticky footer</h4>
-              <p>Pin a fixed-height footer to the bottom of the user's viewport.</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/carousel.html">
-                <img src="assets/img/examples/bootstrap-example-carousel.png" alt="">
-              </a>
-              <h4>Carousel jumbotron</h4>
-              <p>A more interactive riff on the basic marketing site featuring a prominent carousel.</p>
-            </li>
-          </ul>
-        </section>
-
-
-
-
-        <!-- Next
-        ================================================== -->
-        <section id="what-next">
-          <div class="page-header">
-            <h1>What next?</h1>
-          </div>
-          <p class="lead">Head to the docs for information, examples, and code snippets, or take the next leap and customize Bootstrap for any upcoming project.</p>
-          <a class="btn btn-large btn-primary" href="./scaffolding.html" >Visit the Bootstrap docs</a>
-          <a class="btn btn-large" href="./customize.html" style="margin-left: 5px;" >Customize Bootstrap</a>
-        </section>
-
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/index.html b/src/main/webapp/bower_components/bootstrap/docs/index.html
deleted file mode 100644
index 1040bcf6..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/index.html
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="active">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<div class="jumbotron masthead">
-  <div class="container">
-    <h1>Bootstrap</h1>
-    <p>Sleek, intuitive, and powerful front-end framework for faster and easier web development.</p>
-    <p>
-      <a href="assets/bootstrap.zip" class="btn btn-primary btn-large" >Download Bootstrap</a>
-    </p>
-    <ul class="masthead-links">
-      <li>
-        <a href="http://github.com/twitter/bootstrap" >GitHub project</a>
-      </li>
-      <li>
-        <a href="./getting-started.html#examples" >Examples</a>
-      </li>
-      <li>
-        <a href="./extend.html" >Extend</a>
-      </li>
-      <li>
-        Version 2.3.0
-      </li>
-    </ul>
-  </div>
-</div>
-
-<div class="bs-docs-social">
-  <div class="container">
-    <ul class="bs-docs-social-buttons">
-      <li>
-        <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=twitter&repo=bootstrap&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
-      </li>
-      <li>
-        <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=twitter&repo=bootstrap&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
-      </li>
-      <li class="follow-btn">
-        <a href="https://twitter.com/twbootstrap" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @twbootstrap</a>
-      </li>
-      <li class="tweet-btn">
-        <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://twitter.github.com/bootstrap/" data-count="horizontal" data-via="twbootstrap" data-related="mdo:Creator of Twitter Bootstrap">Tweet</a>
-      </li>
-    </ul>
-  </div>
-</div>
-
-<div class="container">
-
-  <div class="marketing">
-
-    <h1>Introducing Bootstrap.</h1>
-    <p class="marketing-byline">Need reasons to love Bootstrap? Look no further.</p>
-
-    <div class="row-fluid">
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-twitter-github.png">
-        <h2>By nerds, for nerds.</h2>
-        <p>Built at Twitter by <a href="http://twitter.com/mdo">@mdo</a> and <a href="http://twitter.com/fat">@fat</a>, Bootstrap utilizes <a href="http://lesscss.org">LESS CSS</a>, is compiled via <a href="http://nodejs.org">Node</a>, and is managed through <a href="http://github.com">GitHub</a> to help nerds do awesome stuff on the web.</p>
-      </div>
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-responsive-illustrations.png">
-        <h2>Made for everyone.</h2>
-        <p>Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via <a href="./scaffolding.html#responsive">responsive CSS</a> as well.</p>
-      </div>
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-bootstrap-features.png">
-        <h2>Packed with features.</h2>
-        <p>A 12-column responsive <a href="./scaffolding.html#gridSystem">grid</a>, dozens of components, <a href="./javascript.html">JavaScript plugins</a>, typography, form controls, and even a <a href="./customize.html">web-based Customizer</a> to make Bootstrap your own.</p>
-      </div>
-    </div>
-
-    <hr class="soften">
-
-    <h1>Built with Bootstrap.</h1>
-    <p class="marketing-byline">For even more sites built with Bootstrap, <a href="http://builtwithbootstrap.tumblr.com/" target="_blank">visit the unofficial Tumblr</a> or <a href="./getting-started.html#examples">browse the examples</a>.</p>
-    <div class="row-fluid">
-      <ul class="thumbnails example-sites">
-        <li class="span3">
-          <a class="thumbnail" href="http://soundready.fm/" target="_blank">
-            <img src="assets/img/example-sites/soundready.png" alt="SoundReady.fm">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://kippt.com/" target="_blank">
-            <img src="assets/img/example-sites/kippt.png" alt="Kippt">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://www.gathercontent.com/" target="_blank">
-            <img src="assets/img/example-sites/gathercontent.png" alt="Gather Content">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://www.jshint.com/" target="_blank">
-            <img src="assets/img/example-sites/jshint.png" alt="JS Hint">
-          </a>
-        </li>
-      </ul>
-     </div>
-
-  </div>
-
-</div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/javascript.html b/src/main/webapp/bower_components/bootstrap/docs/javascript.html
deleted file mode 100644
index f4957d91..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/javascript.html
+++ /dev/null
@@ -1,1780 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Javascript · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="active">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead">
-  <div class="container">
-    <h1>JavaScript</h1>
-    <p class="lead">Bring Bootstrap's components to life&mdash;now with 13 custom jQuery plugins.
-  </div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#overview"><i class="icon-chevron-right"></i> Overview</a></li>
-          <li><a href="#transitions"><i class="icon-chevron-right"></i> Transitions</a></li>
-          <li><a href="#modals"><i class="icon-chevron-right"></i> Modal</a></li>
-          <li><a href="#dropdowns"><i class="icon-chevron-right"></i> Dropdown</a></li>
-          <li><a href="#scrollspy"><i class="icon-chevron-right"></i> Scrollspy</a></li>
-          <li><a href="#tabs"><i class="icon-chevron-right"></i> Tab</a></li>
-          <li><a href="#tooltips"><i class="icon-chevron-right"></i> Tooltip</a></li>
-          <li><a href="#popovers"><i class="icon-chevron-right"></i> Popover</a></li>
-          <li><a href="#alerts"><i class="icon-chevron-right"></i> Alert</a></li>
-          <li><a href="#buttons"><i class="icon-chevron-right"></i> Button</a></li>
-          <li><a href="#collapse"><i class="icon-chevron-right"></i> Collapse</a></li>
-          <li><a href="#carousel"><i class="icon-chevron-right"></i> Carousel</a></li>
-          <li><a href="#typeahead"><i class="icon-chevron-right"></i> Typeahead</a></li>
-          <li><a href="#affix"><i class="icon-chevron-right"></i> Affix</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-        <!-- Overview
-        ================================================== -->
-        <section id="overview">
-          <div class="page-header">
-            <h1>JavaScript in Bootstrap</h1>
-          </div>
-
-          <h3>Individual or compiled</h3>
-          <p>Plugins can be included individually (though some have required dependencies), or all at once. Both <strong>bootstrap.js</strong> and <strong>bootstrap.min.js</strong> contain all plugins in a single file.</p>
-
-          <h3>Data attributes</h3>
-          <p>You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.</p>
-
-          <p>That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:
-          <pre class="prettyprint linenums">$('body').off('.data-api')</pre>
-
-          <p>Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:</p>
-          <pre class="prettyprint linenums">$('body').off('.alert.data-api')</pre>
-
-          <h3>Programmatic API</h3>
-          <p>We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.</p>
-          <pre class="prettyprint linenums">$(".btn.danger").button("toggle").addClass("fat")</pre>
-          <p>All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):</p>
-<pre class="prettyprint linenums">
-$("#myModal").modal()                       // initialized with defaults
-$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
-$("#myModal").modal('show')                // initializes and invokes show immediately</p>
-</pre>
-          <p>Each plugin also exposes its raw constructor on a `Constructor` property: <code>$.fn.popover.Constructor</code>. If you'd like to get a particular plugin instance, retrieve it directly from an element: <code>$('[rel=popover]').data('popover')</code>.</p>
-
-          <h3>No Conflict</h3>
-          <p>Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances,  namespace collisions can occasionally occur. If this happens, you may call <code>.noConflict</code> on the plugin you wish to revert the value of.</p>
-
-<pre class="prettyprint linenums">
-var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
-$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
-</pre>
-
-          <h3>Events</h3>
-          <p>Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. <code>show</code>) is triggered at the start of an event, and its past participle form (ex. <code>shown</code>) is trigger on the completion of an action.</p>
-          <p>All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.</p>
-<pre class="prettyprint linenums">
-$('#myModal').on('show', function (e) {
-    if (!data) return e.preventDefault() // stops modal from being shown
-})
-</pre>
-        </section>
-
-
-
-        <!-- Transitions
-        ================================================== -->
-        <section id="transitions">
-          <div class="page-header">
-            <h1>Transitions <small>bootstrap-transition.js</small></h1>
-          </div>
-          <h3>About transitions</h3>
-          <p>For simple transition effects, include <strong>bootstrap-transition.js</strong> once alongside the other JS files. If you're using the compiled (or minified) <strong>bootstrap.js</strong>, there is no need to include this&mdash;it's already there.</p>
-          <h3>Use cases</h3>
-          <p>A few examples of the transition plugin:</p>
-          <ul>
-            <li>Sliding or fading in modals</li>
-            <li>Fading out tabs</li>
-            <li>Fading out alerts</li>
-            <li>Sliding carousel panes</li>
-          </ul>
-
-        </section>
-
-
-
-        <!-- Modal
-        ================================================== -->
-        <section id="modals">
-          <div class="page-header">
-            <h1>Modals <small>bootstrap-modal.js</small></h1>
-          </div>
-
-
-          <h2>Examples</h2>
-          <p>Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.</p>
-
-          <h3>Static example</h3>
-          <p>A rendered modal with header, body, and set of actions in the footer.</p>
-          <div class="bs-docs-example" style="background-color: #f5f5f5;">
-            <div class="modal" style="position: relative; top: auto; left: auto; right: auto; margin: 0 auto 20px; z-index: 1; max-width: 100%;">
-              <div class="modal-header">
-                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-                <h3>Modal header</h3>
-              </div>
-              <div class="modal-body">
-                <p>One fine body&hellip;</p>
-              </div>
-              <div class="modal-footer">
-                <a href="#" class="btn">Close</a>
-                <a href="#" class="btn btn-primary">Save changes</a>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="modal hide fade"&gt;
-  &lt;div class="modal-header"&gt;
-    &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&amp;times;&lt;/button&gt;
-    &lt;h3&gt;Modal header&lt;/h3&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-body"&gt;
-    &lt;p&gt;One fine body&hellip;&lt;/p&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-footer"&gt;
-    &lt;a href="#" class="btn"&gt;Close&lt;/a&gt;
-    &lt;a href="#" class="btn btn-primary"&gt;Save changes&lt;/a&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Live demo</h3>
-          <p>Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.</p>
-          <!-- sample modal content -->
-          <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
-            <div class="modal-header">
-              <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-              <h3 id="myModalLabel">Modal Heading</h3>
-            </div>
-            <div class="modal-body">
-              <h4>Text in a modal</h4>
-              <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem.</p>
-
-              <h4>Popover in a modal</h4>
-              <p>This <a href="#" role="button" class="btn popover-test" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">button</a> should trigger a popover on click.</p>
-
-              <h4>Tooltips in a modal</h4>
-              <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> should have tooltips on hover.</p>
-
-              <hr>
-
-              <h4>Overflowing text to show optional scrollbar</h4>
-              <p>We set a fixed <code>max-height</code> on the <code>.modal-body</code>. Watch it overflow with all this extra lorem ipsum text we've included.</p>
-              <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
-              <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
-              <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
-              <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
-              <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
-              <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
-            </div>
-            <div class="modal-footer">
-              <button class="btn" data-dismiss="modal">Close</button>
-              <button class="btn btn-primary">Save changes</button>
-            </div>
-          </div>
-          <div class="bs-docs-example" style="padding-bottom: 24px;">
-            <a data-toggle="modal" href="#myModal" class="btn btn-primary btn-large">Launch demo modal</a>
-          </div>
-<pre class="prettyprint linenums">
-&lt!-- Button to trigger modal --&gt;
-&lt;a href="#myModal" role="button" class="btn" data-toggle="modal"&gt;Launch demo modal&lt;/a&gt;
-
-&lt!-- Modal --&gt;
-&lt;div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"&gt;
-  &lt;div class="modal-header"&gt;
-    &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&times;&lt;/button&gt;
-    &lt;h3 id="myModalLabel"&gt;Modal header&lt;/h3&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-body"&gt;
-    &lt;p&gt;One fine body&hellip;&lt;/p&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-footer"&gt;
-    &lt;button class="btn" data-dismiss="modal" aria-hidden="true"&gt;Close&lt;/button&gt;
-    &lt;button class="btn btn-primary"&gt;Save changes&lt;/button&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Usage</h2>
-
-          <h3>Via data attributes</h3>
-          <p>Activate a modal without writing JavaScript. Set <code>data-toggle="modal"</code> on a controller element, like a button, along with a <code>data-target="#foo"</code> or <code>href="#foo"</code> to target a specific modal to toggle.</p>
-          <pre class="prettyprint linenums">&lt;button type="button" data-toggle="modal" data-target="#myModal"&gt;Launch modal&lt;/button&gt;</pre>
-
-          <h3>Via JavaScript</h3>
-          <p>Call a modal with id <code>myModal</code> with a single line of JavaScript:</p>
-          <pre class="prettyprint linenums">$('#myModal').modal(options)</pre>
-
-          <h3>Options</h3>
-          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-backdrop=""</code>.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">Name</th>
-               <th style="width: 50px;">type</th>
-               <th style="width: 50px;">default</th>
-               <th>description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>backdrop</td>
-               <td>boolean</td>
-               <td>true</td>
-               <td>Includes a modal-backdrop element. Alternatively, specify <code>static</code> for a backdrop which doesn't close the modal on click.</td>
-             </tr>
-             <tr>
-               <td>keyboard</td>
-               <td>boolean</td>
-               <td>true</td>
-               <td>Closes the modal when escape key is pressed</td>
-             </tr>
-             <tr>
-               <td>show</td>
-               <td>boolean</td>
-               <td>true</td>
-               <td>Shows the modal when initialized.</td>
-             </tr>
-             <tr>
-               <td>remote</td>
-               <td>path</td>
-               <td>false</td>
-               <td><p>If a remote url is provided, content will be loaded via jQuery's <code>load</code> method and injected into the <code>.modal-body</code>. If you're using the data api, you may alternatively use the <code>href</code> tag to specify the remote source. An example of this is shown below:</p>
-              <pre class="prettyprint linenums"><code>&lt;a data-toggle="modal" href="remote.html" data-target="#modal"&gt;click me&lt;/a&gt;</code></pre></td>
-             </tr>
-            </tbody>
-          </table>
-
-          <h3>Methods</h3>
-          <h4>.modal(options)</h4>
-          <p>Activates your content as a modal. Accepts an optional options <code>object</code>.</p>
-<pre class="prettyprint linenums">
-$('#myModal').modal({
-  keyboard: false
-})
-</pre>
-          <h4>.modal('toggle')</h4>
-          <p>Manually toggles a modal.</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('toggle')</pre>
-          <h4>.modal('show')</h4>
-          <p>Manually opens a modal.</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('show')</pre>
-          <h4>.modal('hide')</h4>
-          <p>Manually hides a modal.</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('hide')</pre>
-          <h3>Events</h3>
-          <p>Bootstrap's modal class exposes a few events for hooking into modal functionality.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">Event</th>
-               <th>Description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>show</td>
-               <td>This event fires immediately when the <code>show</code> instance method is called.</td>
-             </tr>
-             <tr>
-               <td>shown</td>
-               <td>This event is fired when the modal has been made visible to the user (will wait for css transitions to complete).</td>
-             </tr>
-             <tr>
-               <td>hide</td>
-               <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
-             </tr>
-             <tr>
-               <td>hidden</td>
-               <td>This event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).</td>
-             </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-$('#myModal').on('hidden', function () {
-  // do something…
-})
-</pre>
-        </section>
-
-
-
-        <!-- Dropdowns
-        ================================================== -->
-        <section id="dropdowns">
-          <div class="page-header">
-            <h1>Dropdowns <small>bootstrap-dropdown.js</small></h1>
-          </div>
-
-
-          <h2>Examples</h2>
-          <p>Add dropdown menus to nearly anything with this simple plugin, including the navbar, tabs, and pills.</p>
-
-          <h3>Within a navbar</h3>
-          <div class="bs-docs-example">
-            <div id="navbar-example" class="navbar navbar-static">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto;">
-                  <a class="brand" href="#">Project Name</a>
-                  <ul class="nav" role="navigation">
-                    <li class="dropdown">
-                      <a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://google.com">Action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#anotherAction">Another action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                      </ul>
-                    </li>
-                    <li class="dropdown">
-                      <a href="#" id="drop2" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 2 <b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop2">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                  <ul class="nav pull-right">
-                    <li id="fat-menu" class="dropdown">
-                      <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 3 <b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop3">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                </div>
-              </div>
-            </div> <!-- /navbar-example -->
-          </div> 
-
-          <h3>Within tabs</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">Regular link</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop4" role="button" data-toggle="dropdown" href="#">Dropdown <b class="caret"></b></a>
-                <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop4">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                </ul>
-              </li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop5" role="button" data-toggle="dropdown" href="#">Dropdown 2 <b class="caret"></b></a>
-                <ul id="menu2" class="dropdown-menu" role="menu" aria-labelledby="drop5">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                </ul>
-              </li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop5" role="button" data-toggle="dropdown" href="#">Dropdown 3 <b class="caret"></b></a>
-                <ul id="menu3" class="dropdown-menu" role="menu" aria-labelledby="drop5">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
-                </ul>
-              </li>
-            </ul> <!-- /tabs -->
-          </div> 
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Usage</h2>
-
-          <h3>Via data attributes</h3>
-          <p>Add <code>data-toggle="dropdown"</code> to a link or button to toggle a dropdown.</p>
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;a class="dropdown-toggle" data-toggle="dropdown" href="#"&gt;Dropdown trigger&lt;/a&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-          <p>To keep URLs intact, use the <code>data-target</code> attribute instead of <code>href="#"</code>.</p>
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;a class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="/page.html"&gt;
-    Dropdown
-    &lt;b class="caret"&gt;&lt;/b&gt;
-  &lt;/a&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Via JavaScript</h3>
-          <p>Call the dropdowns via JavaScript:</p>
-          <pre class="prettyprint linenums">$('.dropdown-toggle').dropdown()</pre>
-
-          <h3>Options</h3>
-          <p><em>None</em></p>
-
-          <h3>Methods</h3>
-          <h4>$().dropdown('toggle')</h4>
-          <p>A programmatic api for toggling menus for a given navbar or tabbed navigation.</p>
-        </section>
-
-
-
-        <!-- ScrollSpy
-        ================================================== -->
-        <section id="scrollspy">
-          <div class="page-header">
-            <h1>ScrollSpy <small>bootstrap-scrollspy.js</small></h1>
-          </div>
-
-
-          <h2>Example in navbar</h2>
-          <p>The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.</p>
-          <div class="bs-docs-example">
-            <div id="navbarExample" class="navbar navbar-static">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto;">
-                  <a class="brand" href="#">Project Name</a>
-                  <ul class="nav">
-                    <li><a href="#fat">@fat</a></li>
-                    <li><a href="#mdo">@mdo</a></li>
-                    <li class="dropdown">
-                      <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                      <ul class="dropdown-menu">
-                        <li><a href="#one">one</a></li>
-                        <li><a href="#two">two</a></li>
-                        <li class="divider"></li>
-                        <li><a href="#three">three</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-            <div data-spy="scroll" data-target="#navbarExample" data-offset="0" class="scrollspy-example">
-              <h4 id="fat">@fat</h4>
-              <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
-              <h4 id="mdo">@mdo</h4>
-              <p>Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.</p>
-              <h4 id="one">one</h4>
-              <p>Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.</p>
-              <h4 id="two">two</h4>
-              <p>In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.</p>
-              <h4 id="three">three</h4>
-              <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
-              <p>Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.
-              </p>
-            </div>
-          </div>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Usage</h2>
-
-          <h3>Via data attributes</h3>
-          <p>To easily add scrollspy behavior to your topbar navigation, just add <code>data-spy="scroll"</code> to the element you want to spy on (most typically this would be the body) and <code>data-target=".navbar"</code> to select which nav to use. You'll want to use scrollspy with a <code>.nav</code> component.</p>
-          <pre class="prettyprint linenums">&lt;body data-spy="scroll" data-target=".navbar"&gt;...&lt;/body&gt;</pre>
-
-          <h3>Via JavaScript</h3>
-          <p>Call the scrollspy via JavaScript:</p>
-          <pre class="prettyprint linenums">$('#navbar').scrollspy()</pre>
-
-          <div class="alert alert-info">
-            <strong>Heads up!</strong>
-            Navbar links must have resolvable id targets. For example, a <code>&lt;a href="#home"&gt;home&lt;/a&gt;</code> must correspond to something in the dom like <code>&lt;div id="home"&gt;&lt;/div&gt;</code>.
-          </div>
-
-          <h3>Methods</h3>
-          <h4>.scrollspy('refresh')</h4>
-          <p>When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:</p>
-<pre class="prettyprint linenums">
-$('[data-spy="scroll"]').each(function () {
-  var $spy = $(this).scrollspy('refresh')
-});
-</pre>
-
-          <h3>Options</h3>
-          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset=""</code>.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">Name</th>
-               <th style="width: 100px;">type</th>
-               <th style="width: 50px;">default</th>
-               <th>description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>offset</td>
-               <td>number</td>
-               <td>10</td>
-               <td>Pixels to offset from top when calculating position of scroll.</td>
-             </tr>
-            </tbody>
-          </table>
-
-          <h3>Events</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">Event</th>
-               <th>Description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>activate</td>
-               <td>This event fires whenever a new item becomes activated by the scrollspy.</td>
-            </tr>
-            </tbody>
-          </table>
-        </section>
-
-
-
-        <!-- Tabs
-        ================================================== -->
-        <section id="tabs">
-          <div class="page-header">
-            <h1>Togglable tabs <small>bootstrap-tab.js</small></h1>
-          </div>
-
-
-          <h2>Example tabs</h2>
-          <p>Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.</p>
-          <div class="bs-docs-example">
-            <ul id="myTab" class="nav nav-tabs">
-              <li class="active"><a href="#home" data-toggle="tab">Home</a></li>
-              <li><a href="#profile" data-toggle="tab">Profile</a></li>
-              <li class="dropdown">
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#dropdown1" data-toggle="tab">@fat</a></li>
-                  <li><a href="#dropdown2" data-toggle="tab">@mdo</a></li>
-                </ul>
-              </li>
-            </ul>
-            <div id="myTabContent" class="tab-content">
-              <div class="tab-pane fade in active" id="home">
-                <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>
-              </div>
-              <div class="tab-pane fade" id="profile">
-                <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>
-              </div>
-              <div class="tab-pane fade" id="dropdown1">
-                <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>
-              </div>
-              <div class="tab-pane fade" id="dropdown2">
-                <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>
-              </div>
-            </div>
-          </div>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Usage</h2>
-          <p>Enable tabbable tabs via JavaScript (each tab needs to be activated individually):</p>
-<pre class="prettyprint linenums">
-$('#myTab a').click(function (e) {
-  e.preventDefault();
-  $(this).tab('show');
-})</pre>
-          <p>You can activate individual tabs in several ways:</p>
-<pre class="prettyprint linenums">
-$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
-$('#myTab a:first').tab('show'); // Select first tab
-$('#myTab a:last').tab('show'); // Select last tab
-$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
-</pre>
-
-          <h3>Markup</h3>
-          <p>You can activate a tab or pill navigation without writing any JavaScript by simply specifying <code>data-toggle="tab"</code> or <code>data-toggle="pill"</code> on an element. Adding the <code>nav</code> and <code>nav-tabs</code> classes to the tab <code>ul</code> will apply the Bootstrap tab styling.</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li&gt;&lt;a href="#home" data-toggle="tab"&gt;Home&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#profile" data-toggle="tab"&gt;Profile&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#messages" data-toggle="tab"&gt;Messages&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#settings" data-toggle="tab"&gt;Settings&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;</pre>
-
-          <h3>Methods</h3>
-          <h4>$().tab</h4>
-          <p>
-            Activates a tab element and content container. Tab should have either a <code>data-target</code> or an <code>href</code> targeting a container node in the DOM.
-          </p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs" id="myTab"&gt;
-  &lt;li class="active"&gt;&lt;a href="#home"&gt;Home&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#profile"&gt;Profile&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#messages"&gt;Messages&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#settings"&gt;Settings&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;div class="tab-content"&gt;
-  &lt;div class="tab-pane active" id="home"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="profile"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="messages"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="settings"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-
-&lt;script&gt;
-  $(function () {
-    $('#myTab a:last').tab('show');
-  })
-&lt;/script&gt;
-</pre>
-
-          <h3>Events</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">Event</th>
-               <th>Description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>show</td>
-               <td>This event fires on tab show, but before the new tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td>
-            </tr>
-            <tr>
-               <td>shown</td>
-               <td>This event fires on tab show after a tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.</td>
-             </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-$('a[data-toggle="tab"]').on('shown', function (e) {
-  e.target // activated tab
-  e.relatedTarget // previous tab
-})
-</pre>
-        </section>
-
-
-        <!-- Tooltips
-        ================================================== -->
-        <section id="tooltips">
-          <div class="page-header">
-            <h1>Tooltips <small>bootstrap-tooltip.js</small></h1>
-          </div>
-
-
-          <h2>Examples</h2>
-          <p>Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.</p>
-          <p>For performance reasons, the tooltip and popover data-apis are opt in, meaning <strong>you must initialize them yourself</strong>.</p>
-          <p>Hover over the links below to see tooltips:</p>
-          <div class="bs-docs-example tooltip-demo">
-            <p class="muted" style="margin-bottom: 0;">Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="A much longer tooltip belongs right here to demonstrate the max-width we apply.">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.
-            </p>
-          </div>
-
-          <h3>Four directions</h3>
-          <div class="bs-docs-example tooltip-demo">
-            <ul class="bs-docs-tooltip-examples">
-              <li><a href="#" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</a></li>
-            </ul>
-          </div>
-
-
-          <h3>Tooltips in input groups</h3>
-          <p>When using tooltips and popovers with the Bootstrap input groups, you'll have to set the <code>container</code> (documented below) option to avoid unwanted side effects.</p>
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>Usage</h2>
-          <p>Trigger the tooltip via JavaScript:</p>
-          <pre class="prettyprint linenums">$('#example').tooltip(options)</pre>
-
-          <h3>Options</h3>
-          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">Name</th>
-               <th style="width: 100px;">type</th>
-               <th style="width: 50px;">default</th>
-               <th>description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>animation</td>
-               <td>boolean</td>
-               <td>true</td>
-               <td>apply a css fade transition to the tooltip</td>
-             </tr>
-             <tr>
-               <td>html</td>
-               <td>boolean</td>
-               <td>false</td>
-               <td>Insert html into the tooltip. If false, jquery's <code>text</code> method will be used to insert content into the dom. Use text if you're worried about XSS attacks.</td>
-             </tr>
-             <tr>
-               <td>placement</td>
-               <td>string | function</td>
-               <td>'top'</td>
-               <td>how to position the tooltip - top | bottom | left | right</td>
-             </tr>
-             <tr>
-               <td>selector</td>
-               <td>string</td>
-               <td>false</td>
-               <td>If a selector is provided, tooltip objects will be delegated to the specified targets.</td>
-             </tr>
-             <tr>
-               <td>title</td>
-               <td>string | function</td>
-               <td>''</td>
-               <td>default title value if `title` tag isn't present</td>
-             </tr>
-             <tr>
-               <td>trigger</td>
-               <td>string</td>
-               <td>'hover focus'</td>
-               <td>how tooltip is triggered - click | hover | focus | manual. Note you case pass trigger mutliple, space seperated, trigger types.</td>
-             </tr>
-             <tr>
-               <td>delay</td>
-               <td>number | object</td>
-               <td>0</td>
-               <td>
-                <p>delay showing and hiding the tooltip (ms) - does not apply to manual trigger type</p>
-                <p>If a number is supplied, delay is applied to both hide/show</p>
-                <p>Object structure is: <code>delay: { show: 500, hide: 100 }</code></p>
-               </td>
-             </tr>
-             <tr>
-               <td>container</td>
-               <td>string | false</td>
-               <td>false</td>
-               <td>
-                <p>Appends the tooltip to a specific element <code>container: 'body'</code></p>
-               </td>
-             </tr>
-            </tbody>
-          </table>
-          <div class="alert alert-info">
-            <strong>Heads up!</strong>
-            Options for individual tooltips can alternatively be specified through the use of data attributes.
-          </div>
-
-          <h3>Markup</h3>
-          <pre class="prettyprint linenums">&lt;a href="#" data-toggle="tooltip" title="first tooltip"&gt;hover over me&lt;/a&gt;</pre>
-
-          <h3>Methods</h3>
-          <h4>$().tooltip(options)</h4>
-          <p>Attaches a tooltip handler to an element collection.</p>
-          <h4>.tooltip('show')</h4>
-          <p>Reveals an element's tooltip.</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('show')</pre>
-          <h4>.tooltip('hide')</h4>
-          <p>Hides an element's tooltip.</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('hide')</pre>
-          <h4>.tooltip('toggle')</h4>
-          <p>Toggles an element's tooltip.</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('toggle')</pre>
-          <h4>.tooltip('destroy')</h4>
-          <p>Hides and destroys an element's tooltip.</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('destroy')</pre>
-        </section>
-
-
-
-      <!-- Popovers
-      ================================================== -->
-      <section id="popovers">
-        <div class="page-header">
-          <h1>Popovers <small>bootstrap-popover.js</small></h1>
-        </div>
-
-        <h2>Examples</h2>
-        <p>Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. <strong>Requires <a href="#tooltips">Tooltip</a> to be included.</strong></p>
-
-        <h3>Static popover</h3>
-        <p>Four options are available: top, right, bottom, and left aligned.</p>
-        <div class="bs-docs-example bs-docs-example-popover">
-          <div class="popover top">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover top</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover right">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover right</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover bottom">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover bottom</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover left">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover left</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="clearfix"></div>
-        </div>
-        <p>No markup shown as popovers are generated from JavaScript and content within a <code>data</code> attribute.</p>
-
-        <h3>Live demo</h3>
-        <div class="bs-docs-example" style="padding-bottom: 24px;">
-          <a href="#" class="btn btn-large btn-danger" data-toggle="popover" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">Click to toggle popover</a>
-        </div>
-
-        <h4>Four directions</h4>
-        <div class="bs-docs-example tooltip-demo">
-          <ul class="bs-docs-tooltip-examples">
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on top">Popover on top</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on right">Popover on right</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on bottom">Popover on bottom</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on left">Popover on left</a></li>
-          </ul>
-        </div>
-
-
-        <hr class="bs-docs-separator">
-
-
-        <h2>Usage</h2>
-        <p>Enable popovers via JavaScript:</p>
-        <pre class="prettyprint linenums">$('#example').popover(options)</pre>
-
-        <h3>Options</h3>
-        <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
-        <table class="table table-bordered table-striped">
-          <thead>
-           <tr>
-             <th style="width: 100px;">Name</th>
-             <th style="width: 100px;">type</th>
-             <th style="width: 50px;">default</th>
-             <th>description</th>
-           </tr>
-          </thead>
-          <tbody>
-           <tr>
-             <td>animation</td>
-             <td>boolean</td>
-             <td>true</td>
-             <td>apply a css fade transition to the tooltip</td>
-           </tr>
-           <tr>
-             <td>html</td>
-             <td>boolean</td>
-             <td>false</td>
-             <td>Insert html into the popover. If false, jquery's <code>text</code> method will be used to insert content into the dom. Use text if you're worried about XSS attacks.</td>
-           </tr>
-           <tr>
-             <td>placement</td>
-             <td>string | function</td>
-             <td>'right'</td>
-             <td>how to position the popover - top | bottom | left | right</td>
-           </tr>
-           <tr>
-             <td>selector</td>
-             <td>string</td>
-             <td>false</td>
-             <td>if a selector is provided, tooltip objects will be delegated to the specified targets</td>
-           </tr>
-           <tr>
-             <td>trigger</td>
-             <td>string</td>
-             <td>'click'</td>
-             <td>how popover is triggered - click | hover | focus | manual</td>
-           </tr>
-           <tr>
-             <td>title</td>
-             <td>string | function</td>
-             <td>''</td>
-             <td>default title value if `title` attribute isn't present</td>
-           </tr>
-           <tr>
-             <td>content</td>
-             <td>string | function</td>
-             <td>''</td>
-             <td>default content value if `data-content` attribute isn't present</td>
-           </tr>
-           <tr>
-             <td>delay</td>
-             <td>number | object</td>
-             <td>0</td>
-             <td>
-              <p>delay showing and hiding the popover (ms) - does not apply to manual trigger type</p>
-              <p>If a number is supplied, delay is applied to both hide/show</p>
-              <p>Object structure is: <code>delay: { show: 500, hide: 100 }</code></p>
-             </td>
-           </tr>
-           <tr>
-             <td>container</td>
-             <td>string | false</td>
-             <td>false</td>
-             <td>
-              <p>Appends the popover to a specific element <code>container: 'body'</code></p>
-             </td>
-           </tr>
-          </tbody>
-        </table>
-        <div class="alert alert-info">
-          <strong>Heads up!</strong>
-          Options for individual popovers can alternatively be specified through the use of data attributes.
-        </div>
-
-        <h3>Markup</h3>
-        <p>For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.</p>
-
-        <h3>Methods</h3>
-        <h4>$().popover(options)</h4>
-        <p>Initializes popovers for an element collection.</p>
-        <h4>.popover('show')</h4>
-        <p>Reveals an elements popover.</p>
-        <pre class="prettyprint linenums">$('#element').popover('show')</pre>
-        <h4>.popover('hide')</h4>
-        <p>Hides an elements popover.</p>
-        <pre class="prettyprint linenums">$('#element').popover('hide')</pre>
-        <h4>.popover('toggle')</h4>
-        <p>Toggles an elements popover.</p>
-        <pre class="prettyprint linenums">$('#element').popover('toggle')</pre>
-        <h4>.popover('destroy')</h4>
-        <p>Hides and destroys an element's popover.</p>
-        <pre class="prettyprint linenums">$('#element').popover('destroy')</pre>
-      </section>
-
-
-
-      <!-- Alert
-      ================================================== -->
-      <section id="alerts">
-        <div class="page-header">
-          <h1>Alert messages <small>bootstrap-alert.js</small></h1>
-        </div>
-
-
-        <h2>Example alerts</h2>
-        <p>Add dismiss functionality to all alert messages with this plugin.</p>
-        <div class="bs-docs-example">
-          <div class="alert fade in">
-            <button type="button" class="close" data-dismiss="alert">&times;</button>
-            <strong>Holy guacamole!</strong> Best check yo self, you're not looking too good.
-          </div>
-        </div>
-
-        <div class="bs-docs-example">
-          <div class="alert alert-block alert-error fade in">
-            <button type="button" class="close" data-dismiss="alert">&times;</button>
-            <h4 class="alert-heading">Oh snap! You got an error!</h4>
-            <p>Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.</p>
-            <p>
-              <a class="btn btn-danger" href="#">Take this action</a> <a class="btn" href="#">Or do this</a>
-            </p>
-          </div>
-        </div>
-
-
-        <hr class="bs-docs-separator">
-
-
-        <h2>Usage</h2>
-        <p>Enable dismissal of an alert via JavaScript:</p>
-        <pre class="prettyprint linenums">$(".alert").alert()</pre>
-
-        <h3>Markup</h3>
-        <p>Just add <code>data-dismiss="alert"</code> to your close button to automatically give an alert close functionality.</p>
-        <pre class="prettyprint linenums">&lt;a class="close" data-dismiss="alert" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
-
-        <h3>Methods</h3>
-        <h4>$().alert()</h4>
-        <p>Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the <code>.fade</code> and <code>.in</code> class already applied to them.</p>
-        <h4>.alert('close')</h4>
-        <p>Closes an alert.</p>
-        <pre class="prettyprint linenums">$(".alert").alert('close')</pre>
-
-
-        <h3>Events</h3>
-        <p>Bootstrap's alert class exposes a few events for hooking into alert functionality.</p>
-        <table class="table table-bordered table-striped">
-          <thead>
-           <tr>
-             <th style="width: 150px;">Event</th>
-             <th>Description</th>
-           </tr>
-          </thead>
-          <tbody>
-           <tr>
-             <td>close</td>
-             <td>This event fires immediately when the <code>close</code> instance method is called.</td>
-           </tr>
-           <tr>
-             <td>closed</td>
-             <td>This event is fired when the alert has been closed (will wait for css transitions to complete).</td>
-           </tr>
-          </tbody>
-        </table>
-<pre class="prettyprint linenums">
-$('#my-alert').bind('closed', function () {
-  // do something…
-})
-</pre>
-      </section>
-
-
-
-          <!-- Buttons
-          ================================================== -->
-          <section id="buttons">
-            <div class="page-header">
-              <h1>Buttons <small>bootstrap-button.js</small></h1>
-            </div>
-
-            <h2>Example uses</h2>
-            <p>Do more with buttons. Control button states or create groups of buttons for more components like toolbars.</p>
-
-            <h4>Stateful</h4>
-            <p>Add <code>data-loading-text="Loading..."</code> to use a loading state on a button.</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <button type="button" id="fat-btn" data-loading-text="loading..." class="btn btn-primary">
-                Loading state
-              </button>
-            </div>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn btn-primary" data-loading-text="Loading..."&gt;Loading state&lt;/button&gt;</pre>
-
-            <h4>Single toggle</h4>
-            <p>Add <code>data-toggle="button"</code> to activate toggling on a single button.</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <button type="button" class="btn btn-primary" data-toggle="button">Single Toggle</button>
-            </div>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn btn-primary" data-toggle="button"&gt;Single Toggle&lt;/button&gt;</pre>
-
-            <h4>Checkbox</h4>
-            <p>Add <code>data-toggle="buttons-checkbox"</code> for checkbox style toggling on btn-group.</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <div class="btn-group" data-toggle="buttons-checkbox">
-                <button type="button" class="btn btn-primary">Left</button>
-                <button type="button" class="btn btn-primary">Middle</button>
-                <button type="button" class="btn btn-primary">Right</button>
-              </div>
-            </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group" data-toggle="buttons-checkbox"&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Left&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Middle&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-            <h4>Radio</h4>
-            <p>Add <code>data-toggle="buttons-radio"</code> for radio style toggling on btn-group.</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <div class="btn-group" data-toggle="buttons-radio">
-                <button type="button" class="btn btn-primary">Left</button>
-                <button type="button" class="btn btn-primary">Middle</button>
-                <button type="button" class="btn btn-primary">Right</button>
-              </div>
-            </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group" data-toggle="buttons-radio"&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Left&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Middle&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>Usage</h2>
-            <p>Enable buttons via JavaScript:</p>
-            <pre class="prettyprint linenums">$('.nav-tabs').button()</pre>
-
-            <h3>Markup</h3>
-            <p>Data attributes are integral to the button plugin. Check out the example code below for the various markup types.</p>
-
-            <h3>Options</h3>
-            <p><em>None</em></p>
-
-            <h3>Methods</h3>
-            <h4>$().button('toggle')</h4>
-            <p>Toggles push state. Gives the button the appearance that it has been activated.</p>
-            <div class="alert alert-info">
-              <strong>Heads up!</strong>
-              You can enable auto toggling of a button by using the <code>data-toggle</code> attribute.
-            </div>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn" data-toggle="button" &gt;…&lt;/button&gt;</pre>
-            <h4>$().button('loading')</h4>
-            <p>Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute <code>data-loading-text</code>.
-            </p>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn" data-loading-text="loading stuff..." &gt;...&lt;/button&gt;</pre>
-            <div class="alert alert-info">
-              <strong>Heads up!</strong>
-              <a href="https://github.com/twitter/bootstrap/issues/793">Firefox persists the disabled state across page loads</a>. A workaround for this is to use <code>autocomplete="off"</code>.
-            </div>
-            <h4>$().button('reset')</h4>
-            <p>Resets button state - swaps text to original text.</p>
-            <h4>$().button(string)</h4>
-            <p>Resets button state - swaps text to any data defined text state.</p>
-<pre class="prettyprint linenums">&lt;button type="button" class="btn" data-complete-text="finished!" &gt;...&lt;/button&gt;
-&lt;script&gt;
-  $('.btn').button('complete')
-&lt;/script&gt;
-</pre>
-          </section>
-
-
-
-          <!-- Collapse
-          ================================================== -->
-          <section id="collapse">
-            <div class="page-header">
-              <h1>Collapse <small>bootstrap-collapse.js</small></h1>
-            </div>
-
-            <h3>About</h3>
-            <p>Get base styles and flexible support for collapsible components like accordions and navigation.</p>
-            <p class="muted"><strong>*</strong> Requires the Transitions plugin to be included.</p>
-
-            <h2>Example accordion</h2>
-            <p>Using the collapse plugin, we built a simple accordion style widget:</p>
-
-            <div class="bs-docs-example">
-              <div class="accordion" id="accordion2">
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
-                      Collapsible Group Item #1
-                    </a>
-                  </div>
-                  <div id="collapseOne" class="accordion-body collapse in">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
-                      Collapsible Group Item #2
-                    </a>
-                  </div>
-                  <div id="collapseTwo" class="accordion-body collapse">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
-                      Collapsible Group Item #3
-                    </a>
-                  </div>
-                  <div id="collapseThree" class="accordion-body collapse">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-<pre class="prettyprint linenums">
-&lt;div class="accordion" id="accordion2"&gt;
-  &lt;div class="accordion-group"&gt;
-    &lt;div class="accordion-heading"&gt;
-      &lt;a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne"&gt;
-        Collapsible Group Item #1
-      &lt;/a&gt;
-    &lt;/div&gt;
-    &lt;div id="collapseOne" class="accordion-body collapse in"&gt;
-      &lt;div class="accordion-inner"&gt;
-        Anim pariatur cliche...
-      &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="accordion-group"&gt;
-    &lt;div class="accordion-heading"&gt;
-      &lt;a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo"&gt;
-        Collapsible Group Item #2
-      &lt;/a&gt;
-    &lt;/div&gt;
-    &lt;div id="collapseTwo" class="accordion-body collapse"&gt;
-      &lt;div class="accordion-inner"&gt;
-        Anim pariatur cliche...
-      &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-...
-</pre>
-            <p>You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.</p>
-<pre class="prettyprint linenums">
-&lt;button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo"&gt;
-  simple collapsible
-&lt;/button&gt;
-
-&lt;div id="demo" class="collapse in"&gt; … &lt;/div&gt;
-</pre>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>Usage</h2>
-
-            <h3>Via data attributes</h3>
-            <p>Just add <code>data-toggle="collapse"</code> and a <code>data-target</code> to element to automatically assign control of a collapsible element. The <code>data-target</code> attribute accepts a css selector to apply the collapse to. Be sure to add the class <code>collapse</code> to the collapsible element. If you'd like it to default open, add the additional class <code>in</code>.</p>
-            <p>To add accordion-like group management to a collapsible control, add the data attribute <code>data-parent="#selector"</code>. Refer to the demo to see this in action.</p>
-
-            <h3>Via JavaScript</h3>
-            <p>Enable manually with:</p>
-            <pre class="prettyprint linenums">$(".collapse").collapse()</pre>
-
-            <h3>Options</h3>
-            <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-parent=""</code>.</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">Name</th>
-                 <th style="width: 50px;">type</th>
-                 <th style="width: 50px;">default</th>
-                 <th>description</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>parent</td>
-                 <td>selector</td>
-                 <td>false</td>
-                 <td>If selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior)</td>
-               </tr>
-               <tr>
-                 <td>toggle</td>
-                 <td>boolean</td>
-                 <td>true</td>
-                 <td>Toggles the collapsible element on invocation</td>
-               </tr>
-              </tbody>
-            </table>
-
-
-            <h3>Methods</h3>
-            <h4>.collapse(options)</h4>
-            <p>Activates your content as a collapsible element. Accepts an optional options <code>object</code>.
-<pre class="prettyprint linenums">
-$('#myCollapsible').collapse({
-  toggle: false
-})
-</pre>
-            <h4>.collapse('toggle')</h4>
-            <p>Toggles a collapsible element to shown or hidden.</p>
-            <h4>.collapse('show')</h4>
-            <p>Shows a collapsible element.</p>
-            <h4>.collapse('hide')</h4>
-            <p>Hides a collapsible element.</p>
-
-            <h3>Events</h3>
-            <p>Bootstrap's collapse class exposes a few events for hooking into collapse functionality.</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 150px;">Event</th>
-                 <th>Description</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>show</td>
-                 <td>This event fires immediately when the <code>show</code> instance method is called.</td>
-               </tr>
-               <tr>
-                 <td>shown</td>
-                 <td>This event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).</td>
-               </tr>
-               <tr>
-                 <td>hide</td>
-                 <td>
-                  This event is fired immediately when the <code>hide</code> method has been called.
-                 </td>
-               </tr>
-               <tr>
-                 <td>hidden</td>
-                 <td>This event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).</td>
-               </tr>
-              </tbody>
-            </table>
-<pre class="prettyprint linenums">
-$('#myCollapsible').on('hidden', function () {
-  // do something…
-})</pre>
-          </section>
-
-
-
-           <!-- Carousel
-          ================================================== -->
-          <section id="carousel">
-            <div class="page-header">
-              <h1>Carousel <small>bootstrap-carousel.js</small></h1>
-            </div>
-
-            <h2>Example carousel</h2>
-            <p>The slideshow below shows a generic plugin and component for cycling through elements like a carousel.</p>
-            <div class="bs-docs-example">
-              <div id="myCarousel" class="carousel slide">
-                <ol class="carousel-indicators">
-                  <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
-                  <li data-target="#myCarousel" data-slide-to="1"></li>
-                  <li data-target="#myCarousel" data-slide-to="2"></li>
-                </ol>
-                <div class="carousel-inner">
-                  <div class="item active">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>First Thumbnail label</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                  <div class="item">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-02.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>Second Thumbnail label</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                  <div class="item">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-03.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>Third Thumbnail label</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                </div>
-                <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>
-                <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>
-              </div>
-            </div>
-<pre class="prettyprint linenums">
-&lt;div id="myCarousel" class="carousel slide"&gt;
-  &lt;ol class="carousel-indicators"&gt
-    &lt;li data-target="#myCarousel" data-slide-to="0" class="active"&gt&lt;/li&gt
-    &lt;li data-target="#myCarousel" data-slide-to="1"&gt&lt;/li&gt
-    &lt;li data-target="#myCarousel" data-slide-to="2"&gt&lt;/li&gt
-  &lt;/ol&gt
-  &lt;!-- Carousel items --&gt;
-  &lt;div class="carousel-inner"&gt;
-    &lt;div class="active item"&gt;…&lt;/div&gt;
-    &lt;div class="item"&gt;…&lt;/div&gt;
-    &lt;div class="item"&gt;…&lt;/div&gt;
-  &lt;/div&gt;
-  &lt;!-- Carousel nav --&gt;
-  &lt;a class="carousel-control left" href="#myCarousel" data-slide="prev"&gt;&amp;lsaquo;&lt;/a&gt;
-  &lt;a class="carousel-control right" href="#myCarousel" data-slide="next"&gt;&amp;rsaquo;&lt;/a&gt;
-&lt;/div&gt;
-</pre>
-
-            <div class="alert alert-warning">
-              <strong>Heads up!</strong>
-              When implementing this carousel, remove the images we have provided and replace them with your own.
-            </div>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>Usage</h2>
-
-            <h3>Via data attributes</h3>
-            <p>Use data attributes to easily control the position of the carousel. <code>data-slide</code> accepts the keywords <code>prev</code> or <code>next</code>, which alters the slide position relative to it's current position. Alternatively, use <code>data-slide-to</code> to pass a raw slide index to the carousel <code>data-slide-to="2"</code>, which jump's the slide position to a particular index beginning with <code>0</code>.</p>
-
-            <h3>Via JavaScript</h3>
-            <p>Call carousel manually with:</p>
-            <pre class="prettyprint linenums">$('.carousel').carousel()</pre>
-
-            <h3>Options</h3>
-            <p>Options can be passed via data attributes or JavaScriptz. For data attributes, append the option name to <code>data-</code>, as in <code>data-interval=""</code>.</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">Name</th>
-                 <th style="width: 50px;">type</th>
-                 <th style="width: 50px;">default</th>
-                 <th>description</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>interval</td>
-                 <td>number</td>
-                 <td>5000</td>
-                 <td>The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.</td>
-               </tr>
-               <tr>
-                 <td>pause</td>
-                 <td>string</td>
-                 <td>"hover"</td>
-                 <td>Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.</td>
-               </tr>
-              </tbody>
-            </table>
-
-            <h3>Methods</h3>
-            <h4>.carousel(options)</h4>
-            <p>Initializes the carousel with an optional options <code>object</code> and starts cycling through items.</p>
-<pre class="prettyprint linenums">
-$('.carousel').carousel({
-  interval: 2000
-})
-</pre>
-            <h4>.carousel('cycle')</h4>
-            <p>Cycles through the carousel items from left to right.</p>
-            <h4>.carousel('pause')</h4>
-            <p>Stops the carousel from cycling through items.</p>
-            <h4>.carousel(number)</h4>
-            <p>Cycles the carousel to a particular frame (0 based, similar to an array).</p>
-            <h4>.carousel('prev')</h4>
-            <p>Cycles to the previous item.</p>
-            <h4>.carousel('next')</h4>
-            <p>Cycles to the next item.</p>
-
-            <h3>Events</h3>
-            <p>Bootstrap's carousel class exposes two events for hooking into carousel functionality.</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 150px;">Event</th>
-                 <th>Description</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>slide</td>
-                 <td>This event fires immediately when the <code>slide</code> instance method is invoked.</td>
-               </tr>
-               <tr>
-                 <td>slid</td>
-                 <td>This event is fired when the carousel has completed its slide transition.</td>
-               </tr>
-              </tbody>
-            </table>
-          </section>
-
-
-
-          <!-- Typeahead
-          ================================================== -->
-          <section id="typeahead">
-            <div class="page-header">
-              <h1>Typeahead <small>bootstrap-typeahead.js</small></h1>
-            </div>
-
-
-            <h2>Example</h2>
-            <p>A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.</p>
-            <div class="bs-docs-example" style="background-color: #f5f5f5;">
-              <input type="text" class="span3" style="margin: 0 auto;" data-provide="typeahead" data-items="4" data-source='["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Dakota","North Carolina","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]'>
-            </div>
-            <pre class="prettyprint linenums">&lt;input type="text" data-provide="typeahead"&gt;</pre>
-            <p>You'll want to set <code>autocomplete="off"</code> to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.</p>
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>Usage</h2>
-
-            <h3>Via data attributes</h3>
-            <p>Add data attributes to register an element with typeahead functionality as shown in the example above.</p>
-
-            <h3>Via JavaScript</h3>
-            <p>Call the typeahead manually with:</p>
-            <pre class="prettyprint linenums">$('.typeahead').typeahead()</pre>
-
-            <h3>Options</h3>
-            <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-source=""</code>.</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">Name</th>
-                 <th style="width: 50px;">type</th>
-                 <th style="width: 100px;">default</th>
-                 <th>description</th>
-               </tr>
-              </thead>
-              <tbody>
-                <tr>
-                 <td>source</td>
-                 <td>array, function</td>
-                 <td>[ ]</td>
-                 <td>The data source to query against. May be an array of strings or a function. The function is passed two arguments, the <code>query</code> value in the input field and the <code>process</code> callback. The function may be used synchronously by returning the data source directly or asynchronously via the <code>process</code> callback's single argument.</td>
-               </tr>
-               <tr>
-                 <td>items</td>
-                 <td>number</td>
-                 <td>8</td>
-                 <td>The max number of items to display in the dropdown.</td>
-               </tr>
-               <tr>
-                 <td>minLength</td>
-                 <td>number</td>
-                 <td>1</td>
-                 <td>The minimum character length needed before triggering autocomplete suggestions</td>
-               </tr>
-               <tr>
-                 <td>matcher</td>
-                 <td>function</td>
-                 <td>case insensitive</td>
-                 <td>The method used to determine if a query matches an item. Accepts a single argument, the <code>item</code> against which to test the query. Access the current query with <code>this.query</code>. Return a boolean <code>true</code> if query is a match.</td>
-               </tr>
-               <tr>
-                 <td>sorter</td>
-                 <td>function</td>
-                 <td>exact match,<br> case sensitive,<br> case insensitive</td>
-                 <td>Method used to sort autocomplete results. Accepts a single argument <code>items</code> and has the scope of the typeahead instance. Reference the current query with <code>this.query</code>.</td>
-               </tr>
-               <tr>
-                 <td>updater</td>
-                 <td>function</td>
-                 <td>returns selected item</td>
-                 <td>The method used to return selected item. Accepts a single argument, the <code>item</code> and has the scope of the typeahead instance.</td>
-               </tr>
-               <tr>
-                 <td>highlighter</td>
-                 <td>function</td>
-                 <td>highlights all default matches</td>
-                 <td>Method used to highlight autocomplete results. Accepts a single argument <code>item</code> and has the scope of the typeahead instance. Should return html.</td>
-               </tr>
-              </tbody>
-            </table>
-
-            <h3>Methods</h3>
-            <h4>.typeahead(options)</h4>
-            <p>Initializes an input with a typeahead.</p>
-          </section>
-
-
-
-          <!-- Affix
-          ================================================== -->
-          <section id="affix">
-            <div class="page-header">
-              <h1>Affix <small>bootstrap-affix.js</small></h1>
-            </div>
-
-            <h2>Example</h2>
-            <p>The subnavigation on the left is a live demo of the affix plugin.</p>
-
-            <hr class="bs-docs-separator">
-
-            <h2>Usage</h2>
-
-            <h3>Via data attributes</h3>
-            <p>To easily add affix behavior to any element, just add <code>data-spy="affix"</code> to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.</p>
-
-            <pre class="prettyprint linenums">&lt;div data-spy="affix" data-offset-top="200"&gt;...&lt;/div&gt;</pre>
-
-            <div class="alert alert-info">
-              <strong>Heads up!</strong>
-              You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by <code>affix</code>, <code>affix-top</code>, and <code>affix-bottom</code>. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page.
-            </div>
-
-            <h3>Via JavaScript</h3>
-            <p>Call the affix plugin via JavaScript:</p>
-            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
-
-          <h3>Options</h3>
-          <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">Name</th>
-               <th style="width: 100px;">type</th>
-               <th style="width: 50px;">default</th>
-               <th>description</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>offset</td>
-               <td>number | function | object</td>
-               <td>10</td>
-               <td>Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object <code>offset: { x: 10 }</code>. Use a function when you need to dynamically provide an offset (useful for some responsive designs).</td>
-             </tr>
-            </tbody>
-          </table>
-        </section>
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/scaffolding.html b/src/main/webapp/bower_components/bootstrap/docs/scaffolding.html
deleted file mode 100644
index 87a9bb00..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/scaffolding.html
+++ /dev/null
@@ -1,602 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Scaffolding · Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="">
-                <a href="./index.html">Home</a>
-              </li>
-              <li class="">
-                <a href="./getting-started.html">Get started</a>
-              </li>
-              <li class="active">
-                <a href="./scaffolding.html">Scaffolding</a>
-              </li>
-              <li class="">
-                <a href="./base-css.html">Base CSS</a>
-              </li>
-              <li class="">
-                <a href="./components.html">Components</a>
-              </li>
-              <li class="">
-                <a href="./javascript.html">JavaScript</a>
-              </li>
-              <li class="">
-                <a href="./customize.html">Customize</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>Scaffolding</h1>
-    <p class="lead">Bootstrap is built on responsive 12-column grids, layouts, and components.</p>
-  </div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#global"><i class="icon-chevron-right"></i> Global styles</a></li>
-          <li><a href="#gridSystem"><i class="icon-chevron-right"></i> Grid system</a></li>
-          <li><a href="#fluidGridSystem"><i class="icon-chevron-right"></i> Fluid grid system</a></li>
-          <li><a href="#layouts"><i class="icon-chevron-right"></i> Layouts</a></li>
-          <li><a href="#responsive"><i class="icon-chevron-right"></i> Responsive design</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Global Bootstrap settings
-        ================================================== -->
-        <section id="global">
-          <div class="page-header">
-            <h1>Global settings</h1>
-          </div>
-
-          <h3>Requires HTML5 doctype</h3>
-          <p>Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html lang="en"&gt;
-  ...
-&lt;/html&gt;
-</pre>
-
-          <h3>Typography and links</h3>
-          <p>Bootstrap sets basic global display, typography, and link styles. Specifically, we:</p>
-          <ul>
-            <li>Remove <code>margin</code> on the body</li>
-            <li>Set <code>background-color: white;</code> on the <code>body</code></li>
-            <li>Use the <code>@baseFontFamily</code>, <code>@baseFontSize</code>, and <code>@baseLineHeight</code> attributes as our typographic base</li>
-            <li>Set the global link color via <code>@linkColor</code> and apply link underlines only on <code>:hover</code></li>
-          </ul>
-          <p>These styles can be found within <strong>scaffolding.less</strong>.</p>
-
-          <h3>Reset via Normalize</h3>
-          <p>With Bootstrap 2, the old reset block has been dropped in favor of <a href="http://necolas.github.com/normalize.css/" target="_blank">Normalize.css</a>, a project by <a href="http://twitter.com/necolas" target="_blank">Nicolas Gallagher</a> and <a href="http://twitter.com/jon_neal" target="_blank">Jonathan Neal</a> that also powers the <a href="http://html5boilerplate.com" target="_blank">HTML5 Boilerplate</a>. While we use much of Normalize within our <strong>reset.less</strong>, we have removed some elements specifically for Bootstrap.</p>
-
-        </section>
-
-
-
-
-        <!-- Grid system
-        ================================================== -->
-        <section id="gridSystem">
-          <div class="page-header">
-            <h1>Default grid system</h1>
-          </div>
-
-          <h2>Live grid example</h2>
-          <p>The default Bootstrap grid system utilizes <strong>12 columns</strong>, making for a 940px wide container without <a href="./scaffolding.html#responsive">responsive features</a> enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.</p>
-          <div class="bs-docs-grid">
-            <div class="row show-grid">
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span2">2</div>
-              <div class="span3">3</div>
-              <div class="span4">4</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span4">4</div>
-              <div class="span5">5</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span9">9</div>
-            </div>
-          </div>
-
-          <h3>Basic grid HTML</h3>
-          <p>For a simple two column layout, create a <code>.row</code> and add the appropriate number of <code>.span*</code> columns. As this is a 12-column grid, each <code>.span*</code> spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).</p>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span8"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-          <p>Given this example, we have <code>.span4</code> and <code>.span8</code>, making for 12 total columns and a complete row.</p>
-
-          <h2>Offsetting columns</h2>
-          <p>Move columns to the right using <code>.offset*</code> classes. Each class increases the left margin of a column by a whole column. For example, <code>.offset4</code> moves <code>.span4</code> over four columns.</p>
-          <div class="bs-docs-grid">
-            <div class="row show-grid">
-              <div class="span4">4</div>
-              <div class="span3 offset2">3 offset 2</div>
-            </div><!-- /row -->
-            <div class="row show-grid">
-              <div class="span3 offset1">3 offset 1</div>
-              <div class="span3 offset2">3 offset 2</div>
-            </div><!-- /row -->
-            <div class="row show-grid">
-              <div class="span6 offset3">6 offset 3</div>
-            </div><!-- /row -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span3 offset2"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>Nesting columns</h2>
-          <p>To nest your content with the default grid, add a new <code>.row</code> and set of <code>.span*</code> columns within an existing <code>.span*</code> column. Nested rows should include a set of columns that add up to the number of columns of its parent.</p>
-          <div class="row show-grid">
-            <div class="span9">
-              Level 1 column
-              <div class="row show-grid">
-                <div class="span6">
-                  Level 2
-                </div>
-                <div class="span3">
-                  Level 2
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span9"&gt;
-    Level 1 column
-    &lt;div class="row"&gt;
-      &lt;div class="span6"&gt;Level 2&lt;/div&gt;
-      &lt;div class="span3"&gt;Level 2&lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-        </section>
-
-
-
-        <!-- Fluid grid system
-        ================================================== -->
-        <section id="fluidGridSystem">
-          <div class="page-header">
-            <h1>Fluid grid system</h1>
-          </div>
-
-          <h2>Live fluid grid example</h2>
-          <p>The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.</p>
-          <div class="bs-docs-grid">
-            <div class="row-fluid show-grid">
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span4">4</div>
-              <div class="span4">4</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span8">8</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span6">6</div>
-              <div class="span6">6</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span12">12</div>
-            </div>
-          </div>
-
-          <h3>Basic fluid grid HTML</h3>
-          <p>Make any row "fluid" by changing <code>.row</code> to <code>.row-fluid</code>. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.</p>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span8"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>Fluid offsetting</h2>
-          <p>Operates the same way as the fixed grid system offsetting: add <code>.offset*</code> to any column to offset by that many columns.</p>
-          <div class="bs-docs-grid">
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span4 offset4">4 offset 4</div>
-            </div><!-- /row -->
-            <div class="row-fluid show-grid">
-              <div class="span3 offset3">3 offset 3</div>
-              <div class="span3 offset3">3 offset 3</div>
-            </div><!-- /row -->
-            <div class="row-fluid show-grid">
-              <div class="span6 offset6">6 offset 6</div>
-            </div><!-- /row -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span4 offset2"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>Fluid nesting</h2>
-          <p>Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.</p>
-          <div class="row-fluid show-grid">
-            <div class="span12">
-              Fluid 12
-              <div class="row-fluid show-grid">
-                <div class="span6">
-                  Fluid 6
-                  <div class="row-fluid show-grid">
-                    <div class="span6">
-                      Fluid 6
-                    </div>
-                    <div class="span6">
-                      Fluid 6
-                    </div>
-                  </div>
-                </div>
-                <div class="span6">
-                  Fluid 6
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span12"&gt;
-    Fluid 12
-    &lt;div class="row-fluid"&gt;
-      &lt;div class="span6"&gt;
-        Fluid 6
-        &lt;div class="row-fluid"&gt;
-          &lt;div class="span6"&gt;Fluid 6&lt;/div&gt;
-          &lt;div class="span6"&gt;Fluid 6&lt;/div&gt;
-        &lt;/div&gt;
-      &lt;/div&gt;
-      &lt;div class="span6"&gt;Fluid 6&lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Layouts (Default and fluid)
-        ================================================== -->
-        <section id="layouts">
-          <div class="page-header">
-            <h1>Layouts</h1>
-          </div>
-
-          <h2>Fixed layout</h2>
-          <p>Provides a common fixed-width (and optionally responsive) layout with only <code>&lt;div class="container"&gt;</code> required.</p>
-          <div class="mini-layout">
-            <div class="mini-layout-body"></div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;body&gt;
-  &lt;div class="container"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/body&gt;
-</pre>
-
-          <h2>Fluid layout</h2>
-          <p>Create a fluid, two-column page with <code>&lt;div class="container-fluid"&gt;</code>&mdash;great for applications and docs.</p>
-          <div class="mini-layout fluid">
-            <div class="mini-layout-sidebar"></div>
-            <div class="mini-layout-body"></div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="container-fluid"&gt;
-  &lt;div class="row-fluid"&gt;
-    &lt;div class="span2"&gt;
-      &lt;!--Sidebar content--&gt;
-    &lt;/div&gt;
-    &lt;div class="span10"&gt;
-      &lt;!--Body content--&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-        </section>
-
-
-
-
-        <!-- Responsive design
-        ================================================== -->
-        <section id="responsive">
-          <div class="page-header">
-            <h1>Responsive design</h1>
-          </div>
-
-          <h2>Enabling responsive features</h2>
-          <p>Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <code>&lt;head&gt;</code> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.</p>
-<pre class="prettyprint linenums">
-&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-&lt;link href="assets/css/bootstrap-responsive.css" rel="stylesheet"&gt;
-</pre>
-          <p><span class="label label-info">Heads up!</span>  Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.</p>
-
-          <h2>About responsive Bootstrap</h2>
-          <img src="assets/img/responsive-illustrations.png" alt="Responsive devices" style="float: right; margin: 0 0 20px 20px;">
-          <p>Media queries allow for custom CSS based on a number of conditions&mdash;ratios, widths, display type, etc&mdash;but usually focuses around <code>min-width</code> and <code>max-width</code>.</p>
-          <ul>
-            <li>Modify the width of column in our grid</li>
-            <li>Stack elements instead of float wherever necessary</li>
-            <li>Resize headings and text to be more appropriate for devices</li>
-          </ul>
-          <p>Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.</p>
-
-          <h2>Supported devices</h2>
-          <p>Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>Label</th>
-                <th>Layout width</th>
-                <th>Column width</th>
-                <th>Gutter width</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>Large display</td>
-                <td>1200px and up</td>
-                <td>70px</td>
-                <td>30px</td>
-              </tr>
-              <tr>
-                <td>Default</td>
-                <td>980px and up</td>
-                <td>60px</td>
-                <td>20px</td>
-              </tr>
-              <tr>
-                <td>Portrait tablets</td>
-                <td>768px and above</td>
-                <td>42px</td>
-                <td>20px</td>
-              </tr>
-              <tr>
-                <td>Phones to tablets</td>
-                <td>767px and below</td>
-                <td class="muted" colspan="2">Fluid columns, no fixed widths</td>
-              </tr>
-              <tr>
-                <td>Phones</td>
-                <td>480px and below</td>
-                <td class="muted" colspan="2">Fluid columns, no fixed widths</td>
-              </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-/* Large desktop */
-@media (min-width: 1200px) { ... }
-
-/* Portrait tablet to landscape and desktop */
-@media (min-width: 768px) and (max-width: 979px) { ... }
-
-/* Landscape phone to portrait tablet */
-@media (max-width: 767px) { ... }
-
-/* Landscape phones and down */
-@media (max-width: 480px) { ... }
-</pre>
-
-
-          <h2>Responsive utility classes</h2>
-          <p>For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in <code>responsive.less</code>.</p>
-          <table class="table table-bordered table-striped responsive-utilities">
-            <thead>
-              <tr>
-                <th>Class</th>
-                <th>Phones <small>767px and below</small></th>
-                <th>Tablets <small>979px to 768px</small></th>
-                <th>Desktops <small>Default</small></th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <th><code>.visible-phone</code></th>
-                <td class="is-visible">Visible</td>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-hidden">Hidden</td>
-              </tr>
-              <tr>
-                <th><code>.visible-tablet</code></th>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-visible">Visible</td>
-                <td class="is-hidden">Hidden</td>
-              </tr>
-              <tr>
-                <th><code>.visible-desktop</code></th>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-visible">Visible</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-phone</code></th>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-visible">Visible</td>
-                <td class="is-visible">Visible</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-tablet</code></th>
-                <td class="is-visible">Visible</td>
-                <td class="is-hidden">Hidden</td>
-                <td class="is-visible">Visible</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-desktop</code></th>
-                <td class="is-visible">Visible</td>
-                <td class="is-visible">Visible</td>
-                <td class="is-hidden">Hidden</td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>When to use</h3>
-          <p>Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.</p>
-
-          <h3>Responsive utilities test case</h3>
-          <p>Resize your browser or load on different devices to test the above classes.</p>
-          <h4>Visible on...</h4>
-          <p>Green checkmarks indicate that class is visible in your current viewport.</p>
-          <ul class="responsive-utilities-test">
-            <li>Phone<span class="visible-phone">&#10004; Phone</span></li>
-            <li>Tablet<span class="visible-tablet">&#10004; Tablet</span></li>
-            <li>Desktop<span class="visible-desktop">&#10004; Desktop</span></li>
-          </ul>
-          <h4>Hidden on...</h4>
-          <p>Here, green checkmarks indicate that class is hidden in your current viewport.</p>
-          <ul class="responsive-utilities-test hidden-on">
-            <li>Phone<span class="hidden-phone">&#10004; Phone</span></li>
-            <li>Tablet<span class="hidden-tablet">&#10004; Tablet</span></li>
-            <li>Desktop<span class="hidden-desktop">&#10004; Desktop</span></li>
-          </ul>
-
-        </section>
-
-
-
-      </div>
-    </div>
-
-  </div>
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p><a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Blog</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Issues</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">Changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/layout.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/layout.mustache
deleted file mode 100644
index 993b4462..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/layout.mustache
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>{{title}}</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
-    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="assets/css/docs.css" rel="stylesheet">
-    <link href="assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="assets/js/html5shiv.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="assets/ico/favicon.png">
-
-    {{#production}}
-    <script type="text/javascript">
-      var _gaq = _gaq || [];
-      _gaq.push(['_setAccount', 'UA-146052-10']);
-      _gaq.push(['_trackPageview']);
-      (function() {
-        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-      })();
-    </script>
-    {{/production}}
-  </head>
-
-  <body data-spy="scroll" data-target=".bs-docs-sidebar">
-
-    <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="brand" href="./index.html">Bootstrap</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="{{index}}">
-                <a href="./index.html">{{_i}}Home{{/i}}</a>
-              </li>
-              <li class="{{getting-started}}">
-                <a href="./getting-started.html">{{_i}}Get started{{/i}}</a>
-              </li>
-              <li class="{{scaffolding}}">
-                <a href="./scaffolding.html">{{_i}}Scaffolding{{/i}}</a>
-              </li>
-              <li class="{{base-css}}">
-                <a href="./base-css.html">{{_i}}Base CSS{{/i}}</a>
-              </li>
-              <li class="{{components}}">
-                <a href="./components.html">{{_i}}Components{{/i}}</a>
-              </li>
-              <li class="{{javascript}}">
-                <a href="./javascript.html">{{_i}}JavaScript{{/i}}</a>
-              </li>
-              <li class="{{customize}}">
-                <a href="./customize.html">{{_i}}Customize{{/i}}</a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-{{>body}}
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p>{{_i}}Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.{{/i}}</p>
-        <p>{{_i}}Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.{{/i}}</p>
-        <p>{{_i}}<a href="http://glyphicons.com">Glyphicons Free</a> licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.{{/i}}</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">{{_i}}Blog{{/i}}</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">{{_i}}Issues{{/i}}</a></li>
-          <li class="muted">&middot;</li>
-          <li><a href="https://github.com/twitter/bootstrap/blob/master/CHANGELOG.md">{{_i}}Changelog{{/i}}</a></li>
-        </ul>
-      </div>
-    </footer>
-
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="assets/js/jquery.js"></script>
-    <script src="assets/js/bootstrap-transition.js"></script>
-    <script src="assets/js/bootstrap-alert.js"></script>
-    <script src="assets/js/bootstrap-modal.js"></script>
-    <script src="assets/js/bootstrap-dropdown.js"></script>
-    <script src="assets/js/bootstrap-scrollspy.js"></script>
-    <script src="assets/js/bootstrap-tab.js"></script>
-    <script src="assets/js/bootstrap-tooltip.js"></script>
-    <script src="assets/js/bootstrap-popover.js"></script>
-    <script src="assets/js/bootstrap-button.js"></script>
-    <script src="assets/js/bootstrap-collapse.js"></script>
-    <script src="assets/js/bootstrap-carousel.js"></script>
-    <script src="assets/js/bootstrap-typeahead.js"></script>
-    <script src="assets/js/bootstrap-affix.js"></script>
-
-    <script src="assets/js/holder/holder.js"></script>
-    <script src="assets/js/google-code-prettify/prettify.js"></script>
-
-    <script src="assets/js/application.js"></script>
-
-
-    {{#production}}
-    <!-- Analytics
-    ================================================== -->
-    <script>
-      var _gauges = _gauges || [];
-      (function() {
-        var t   = document.createElement('script');
-        t.type  = 'text/javascript';
-        t.async = true;
-        t.id    = 'gauges-tracker';
-        t.setAttribute('data-site-id', '4f0dc9fef5a1f55508000013');
-        t.src = '//secure.gaug.es/track.js';
-        var s = document.getElementsByTagName('script')[0];
-        s.parentNode.insertBefore(t, s);
-      })();
-    </script>
-    {{/production}}
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/base-css.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/base-css.mustache
deleted file mode 100644
index 1f40f371..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/base-css.mustache
+++ /dev/null
@@ -1,2102 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Base CSS{{/i}}</h1>
-    <p class="lead">{{_i}}Fundamental HTML elements styled and enhanced with extensible classes.{{/i}}</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#typography"><i class="icon-chevron-right"></i> {{_i}}Typography{{/i}}</a></li>
-          <li><a href="#code"><i class="icon-chevron-right"></i> {{_i}}Code{{/i}}</a></li>
-          <li><a href="#tables"><i class="icon-chevron-right"></i> {{_i}}Tables{{/i}}</a></li>
-          <li><a href="#forms"><i class="icon-chevron-right"></i> {{_i}}Forms{{/i}}</a></li>
-          <li><a href="#buttons"><i class="icon-chevron-right"></i> {{_i}}Buttons{{/i}}</a></li>
-          <li><a href="#images"><i class="icon-chevron-right"></i> {{_i}}Images{{/i}}</a></li>
-          <li><a href="#icons"><i class="icon-chevron-right"></i> {{_i}}Icons by Glyphicons{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Typography
-        ================================================== -->
-        <section id="typography">
-          <div class="page-header">
-            <h1>{{_i}}Typography{{/i}}</h1>
-          </div>
-
-          {{! Headings }}
-          <h2 id="headings">{{_i}}Headings{{/i}}</h2>
-          <p>{{_i}}All HTML headings, <code>&lt;h1&gt;</code> through <code>&lt;h6&gt;</code> are available.{{/i}}</p>
-          <div class="bs-docs-example">
-            <h1>h1. {{_i}}Heading 1{{/i}}</h1>
-            <h2>h2. {{_i}}Heading 2{{/i}}</h2>
-            <h3>h3. {{_i}}Heading 3{{/i}}</h3>
-            <h4>h4. {{_i}}Heading 4{{/i}}</h4>
-            <h5>h5. {{_i}}Heading 5{{/i}}</h5>
-            <h6>h6. {{_i}}Heading 6{{/i}}</h6>
-          </div>
-
-          {{! Body copy }}
-          <h2 id="body-copy">{{_i}}Body copy{{/i}}</h2>
-          <p>{{_i}}Bootstrap's global default <code>font-size</code> is <strong>14px</strong>, with a <code>line-height</code> of <strong>20px</strong>. This is applied to the <code>&lt;body&gt;</code> and all paragraphs. In addition, <code>&lt;p&gt;</code> (paragraphs) receive a bottom margin of half their line-height (10px by default).{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.</p>
-            <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.</p>
-            <p>Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
-          </div>
-          <pre class="prettyprint">&lt;p&gt;...&lt;/p&gt;</pre>
-
-          {{! Body copy .lead }}
-          <h3>{{_i}}Lead body copy{{/i}}</h3>
-          <p>{{_i}}Make a paragraph stand out by adding <code>.lead</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p class="lead">Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.</p>
-          </div>
-          <pre class="prettyprint">&lt;p class="lead"&gt;...&lt;/p&gt;</pre>
-
-          {{! Using LESS }}
-          <h3>{{_i}}Built with Less{{/i}}</h3>
-          <p>{{_i}}The typographic scale is based on two LESS variables in <strong>variables.less</strong>: <code>@baseFontSize</code> and <code>@baseLineHeight</code>. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          {{! Emphasis }}
-          <h2 id="emphasis">{{_i}}Emphasis{{/i}}</h2>
-          <p>{{_i}}Make use of HTML's default emphasis tags with lightweight styles.{{/i}}</p>
-
-          <h3><code>&lt;small&gt;</code></h3>
-          <p>{{_i}}For de-emphasizing inline or blocks of text, <small>use the small tag.</small>{{/i}}</p>
-          <div class="bs-docs-example">
-            <p><small>This line of text is meant to be treated as fine print.</small></p>
-          </div>
-<pre class="prettyprint">
-&lt;p&gt;
-  &lt;small&gt;This line of text is meant to be treated as fine print.&lt;/small&gt;
-&lt;/p&gt;
-</pre>
-
-          <h3>{{_i}}Bold{{/i}}</h3>
-          <p>{{_i}}For emphasizing a snippet of text with a heavier font-weight.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>The following snippet of text is <strong>rendered as bold text</strong>.</p>
-          </div>
-          <pre class="prettyprint">&lt;strong&gt;rendered as bold text&lt;/strong&gt;</pre>
-
-          <h3>{{_i}}Italics{{/i}}</h3>
-          <p>{{_i}}For emphasizing a snippet of text with italics.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>The following snippet of text is <em>rendered as italicized text</em>.</p>
-          </div>
-          <pre class="prettyprint">&lt;em&gt;rendered as italicized text&lt;/em&gt;</pre>
-
-          <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}Feel free to use <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code> in HTML5. <code>&lt;b&gt;</code> is meant to highlight words or phrases without conveying additional importance while <code>&lt;i&gt;</code> is mostly for voice, technical terms, etc.{{/i}}</p>
-
-          <h3>{{_i}}Alignment classes{{/i}}</h3>
-          <p>{{_i}}Easily realign text to components with text alignment classes.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p class="text-left">Left aligned text.</p>
-            <p class="text-center">Center aligned text.</p>
-            <p class="text-right">Right aligned text.</p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p class="text-left"&gt;Left aligned text.&lt;/p&gt;
-&lt;p class="text-center"&gt;Center aligned text.&lt;/p&gt;
-&lt;p class="text-right"&gt;Right aligned text.&lt;/p&gt;
-</pre>
-
-          <h3>{{_i}}Emphasis classes{{/i}}</h3>
-          <p>{{_i}}Convey meaning through color with a handful of emphasis utility classes.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p class="muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
-            <p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
-            <p class="text-error">Donec ullamcorper nulla non metus auctor fringilla.</p>
-            <p class="text-info">Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.</p>
-            <p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p class="muted"&gt;Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.&lt;/p&gt;
-&lt;p class="text-warning"&gt;Etiam porta sem malesuada magna mollis euismod.&lt;/p&gt;
-&lt;p class="text-error"&gt;Donec ullamcorper nulla non metus auctor fringilla.&lt;/p&gt;
-&lt;p class="text-info"&gt;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis.&lt;/p&gt;
-&lt;p class="text-success"&gt;Duis mollis, est non commodo luctus, nisi erat porttitor ligula.&lt;/p&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          {{! Abbreviations }}
-          <h2 id="abbreviations">{{_i}}Abbreviations{{/i}}</h2>
-          <p>{{_i}}Stylized implementation of HTML's <code>&lt;abbr&gt;</code> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a <code>title</code> attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.{{/i}}</p>
-
-          <h3><code>&lt;abbr&gt;</code></h3>
-          <p>{{_i}}For expanded text on long hover of an abbreviation, include the <code>title</code> attribute.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>{{_i}}An abbreviation of the word attribute is <abbr title="attribute">attr</abbr>.{{/i}}</p>
-          </div>
-          <pre class="prettyprint">&lt;abbr title="attribute"&gt;attr&lt;/abbr&gt;</pre>
-
-          <h3><code>&lt;abbr class="initialism"&gt;</code></h3>
-          <p>{{_i}}Add <code>.initialism</code> to an abbreviation for a slightly smaller font-size.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>{{_i}}<abbr title="HyperText Markup Language" class="initialism">HTML</abbr> is the best thing since sliced bread.{{/i}}</p>
-          </div>
-          <pre class="prettyprint">&lt;abbr title="HyperText Markup Language" class="initialism"&gt;HTML&lt;/abbr&gt;</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          {{! Addresses }}
-          <h2 id="addresses">{{_i}}Addresses{{/i}}</h2>
-          <p>{{_i}}Present contact information for the nearest ancestor or the entire body of work.{{/i}}</p>
-
-          <h3><code>&lt;address&gt;</code></h3>
-          <p>{{_i}}Preserve formatting by ending all lines with <code>&lt;br&gt;</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <address>
-              <strong>Twitter, Inc.</strong><br>
-              795 Folsom Ave, Suite 600<br>
-              San Francisco, CA 94107<br>
-              <abbr title="Phone">P:</abbr> (123) 456-7890
-            </address>
-            <address>
-              <strong>{{_i}}Full Name{{/i}}</strong><br>
-              <a href="mailto:#">{{_i}}first.last@example.com{{/i}}</a>
-            </address>
-          </div>
-<pre class="prettyprint linenums">
-&lt;address&gt;
-  &lt;strong&gt;Twitter, Inc.&lt;/strong&gt;&lt;br&gt;
-  795 Folsom Ave, Suite 600&lt;br&gt;
-  San Francisco, CA 94107&lt;br&gt;
-  &lt;abbr title="Phone"&gt;P:&lt;/abbr&gt; (123) 456-7890
-&lt;/address&gt;
-
-&lt;address&gt;
-  &lt;strong&gt;{{_i}}Full Name{{/i}}&lt;/strong&gt;&lt;br&gt;
-  &lt;a href="mailto:#"&gt;{{_i}}first.last@example.com{{/i}}&lt;/a&gt;
-&lt;/address&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          {{! Blockquotes }}
-          <h2 id="blockquotes">{{_i}}Blockquotes{{/i}}</h2>
-          <p>{{_i}}For quoting blocks of content from another source within your document.{{/i}}</p>
-
-          <h3>{{_i}}Default blockquote{{/i}}</h3>
-          <p>{{_i}}Wrap <code>&lt;blockquote&gt;</code> around any <abbr title="HyperText Markup Language">HTML</abbr> as the quote. For straight quotes we recommend a <code>&lt;p&gt;</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <blockquote>
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote&gt;
-  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.&lt;/p&gt;
-&lt;/blockquote&gt;
-</pre>
-
-          <h3>{{_i}}Blockquote options{{/i}}</h3>
-          <p>{{_i}}Style and content changes for simple variations on a standard blockquote.{{/i}}</p>
-
-          <h4>{{_i}}Naming a source{{/i}}</h4>
-          <p>{{_i}}Add <code>&lt;small&gt;</code> tag for identifying the source. Wrap the name of the source work in <code>&lt;cite&gt;</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <blockquote>
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-              <small>{{_i}}Someone famous in <cite title="Source Title">Source Title</cite>{{/i}}</small>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote&gt;
-  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.&lt;/p&gt;
-  &lt;small&gt;{{_i}}Someone famous &lt;cite title="Source Title"&gt;Source Title&lt;/cite&gt;{{/i}}&lt;/small&gt;
-&lt;/blockquote&gt;
-</pre>
-
-          <h4>{{_i}}Alternate displays{{/i}}</h4>
-          <p>{{_i}}Use <code>.pull-right</code> for a floated, right-aligned blockquote.{{/i}}</p>
-          <div class="bs-docs-example" style="overflow: hidden;">
-            <blockquote class="pull-right">
-              <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
-              <small>{{_i}}Someone famous in <cite title="Source Title">Source Title</cite>{{/i}}</small>
-            </blockquote>
-          </div>
-<pre class="prettyprint linenums">
-&lt;blockquote class="pull-right"&gt;
-  ...
-&lt;/blockquote&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <!-- Lists -->
-          <h2 id="lists">{{_i}}Lists{{/i}}</h2>
-
-          <h3>{{_i}}Unordered{{/i}}</h3>
-          <p>{{_i}}A list of items in which the order does <em>not</em> explicitly matter.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul>
-              <li>Lorem ipsum dolor sit amet</li>
-              <li>Consectetur adipiscing elit</li>
-              <li>Integer molestie lorem at massa</li>
-              <li>Facilisis in pretium nisl aliquet</li>
-              <li>Nulla volutpat aliquam velit
-                <ul>
-                  <li>Phasellus iaculis neque</li>
-                  <li>Purus sodales ultricies</li>
-                  <li>Vestibulum laoreet porttitor sem</li>
-                  <li>Ac tristique libero volutpat at</li>
-                </ul>
-              </li>
-              <li>Faucibus porta lacus fringilla vel</li>
-              <li>Aenean sit amet erat nunc</li>
-              <li>Eget porttitor lorem</li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Ordered{{/i}}</h3>
-          <p>{{_i}}A list of items in which the order <em>does</em> explicitly matter.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ol>
-              <li>Lorem ipsum dolor sit amet</li>
-              <li>Consectetur adipiscing elit</li>
-              <li>Integer molestie lorem at massa</li>
-              <li>Facilisis in pretium nisl aliquet</li>
-              <li>Nulla volutpat aliquam velit</li>
-              <li>Faucibus porta lacus fringilla vel</li>
-              <li>Aenean sit amet erat nunc</li>
-              <li>Eget porttitor lorem</li>
-            </ol>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ol&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ol&gt;
-</pre>
-
-        <h3>{{_i}}Unstyled{{/i}}</h3>
-        <p>{{_i}}Remove the default <code>list-style</code> and left padding on list items (immediate children only).{{/i}}</p>
-        <div class="bs-docs-example">
-          <ul class="unstyled">
-            <li>Lorem ipsum dolor sit amet</li>
-            <li>Consectetur adipiscing elit</li>
-            <li>Integer molestie lorem at massa</li>
-            <li>Facilisis in pretium nisl aliquet</li>
-            <li>Nulla volutpat aliquam velit
-              <ul>
-                <li>Phasellus iaculis neque</li>
-                <li>Purus sodales ultricies</li>
-                <li>Vestibulum laoreet porttitor sem</li>
-                <li>Ac tristique libero volutpat at</li>
-              </ul>
-            </li>
-            <li>Faucibus porta lacus fringilla vel</li>
-            <li>Aenean sit amet erat nunc</li>
-            <li>Eget porttitor lorem</li>
-          </ul>
-        </div>
-<pre class="prettyprint linenums">
-&lt;ul class="unstyled"&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        <h3>{{_i}}Inline{{/i}}</h3>
-        <p>{{_i}}Place all list items on a single line with <code>inline-block</code> and some light padding.{{/i}}</p>
-        <div class="bs-docs-example">
-          <ul class="inline">
-            <li>Lorem ipsum</li>
-            <li>Phasellus iaculis</li>
-            <li>Nulla volutpat</li>
-          </ul>
-        </div>
-<pre class="prettyprint linenums">
-&lt;ul class="inline"&gt;
-  &lt;li&gt;...&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        <h3>{{_i}}Description{{/i}}</h3>
-        <p>{{_i}}A list of terms with their associated descriptions.{{/i}}</p>
-        <div class="bs-docs-example">
-          <dl>
-            <dt>{{_i}}Description lists{{/i}}</dt>
-            <dd>{{_i}}A description list is perfect for defining terms.{{/i}}</dd>
-            <dt>Euismod</dt>
-            <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
-            <dd>Donec id elit non mi porta gravida at eget metus.</dd>
-            <dt>Malesuada porta</dt>
-            <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
-          </dl>
-        </div>
-<pre class="prettyprint linenums">
-&lt;dl&gt;
-  &lt;dt&gt;...&lt;/dt&gt;
-  &lt;dd&gt;...&lt;/dd&gt;
-&lt;/dl&gt;
-</pre>
-
-        <h4>{{_i}}Horizontal description{{/i}}</h4>
-        <p>{{_i}}Make terms and descriptions in <code>&lt;dl&gt;</code> line up side-by-side.{{/i}}</p>
-        <div class="bs-docs-example">
-          <dl class="dl-horizontal">
-            <dt>{{_i}}Description lists{{/i}}</dt>
-            <dd>{{_i}}A description list is perfect for defining terms.{{/i}}</dd>
-            <dt>Euismod</dt>
-            <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
-            <dd>Donec id elit non mi porta gravida at eget metus.</dd>
-            <dt>Malesuada porta</dt>
-            <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
-            <dt>Felis euismod semper eget lacinia</dt>
-            <dd>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
-          </dl>
-        </div>
-<pre class="prettyprint linenums">
-&lt;dl class="dl-horizontal"&gt;
-  &lt;dt&gt;...&lt;/dt&gt;
-  &lt;dd&gt;...&lt;/dd&gt;
-&lt;/dl&gt;
-</pre>
-        <p>
-          <span class="label label-info">{{_i}}Heads up!{{/i}}</span>
-          {{_i}}Horizontal description lists will truncate terms that are too long to fit in the left column fix <code>text-overflow</code>. In narrower viewports, they will change to the default stacked layout.{{/i}}
-        </p>
-      </section>
-
-
-
-        <!-- Code
-        ================================================== -->
-        <section id="code">
-          <div class="page-header">
-            <h1>{{_i}}Code{{/i}}</h1>
-          </div>
-
-          <h2>Inline</h2>
-          <p>Wrap inline snippets of code with <code>&lt;code&gt;</code>.</p>
-<div class="bs-docs-example">
-  For example, <code>&lt;section&gt;</code> should be wrapped as inline.
-</div>
-<pre class="prettyprint linenums">
-{{_i}}For example, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; should be wrapped as inline.{{/i}}
-</pre>
-
-          <h2>Basic block</h2>
-          <p>{{_i}}Use <code>&lt;pre&gt;</code> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.{{/i}}</p>
-<div class="bs-docs-example">
-  <pre>&lt;p&gt;{{_i}}Sample text here...{{/i}}&lt;/p&gt;</pre>
-</div>
-<pre class="prettyprint linenums" style="margin-bottom: 9px;">
-&lt;pre&gt;
-  &amp;lt;p&amp;gt;{{_i}}Sample text here...{{/i}}&amp;lt;/p&amp;gt;
-&lt;/pre&gt;
-</pre>
-          <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}Be sure to keep code within <code>&lt;pre&gt;</code> tags as close to the left as possible; it will render all tabs.{{/i}}</p>
-          <p>{{_i}}You may optionally add the <code>.pre-scrollable</code> class which will set a max-height of 350px and provide a y-axis scrollbar.{{/i}}</p>
-        </section>
-
-
-
-        <!-- Tables
-        ================================================== -->
-        <section id="tables">
-          <div class="page-header">
-            <h1>{{_i}}Tables{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Default styles{{/i}}</h2>
-          <p>{{_i}}For basic styling&mdash;light padding and only horizontal dividers&mdash;add the base class <code>.table</code> to any <code>&lt;table&gt;</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <table class="table">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}First Name{{/i}}</th>
-                  <th>{{_i}}Last Name{{/i}}</th>
-                  <th>{{_i}}Username{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td>Larry</td>
-                  <td>the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;table class="table"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Optional classes{{/i}}</h2>
-          <p>{{_i}}Add any of the following classes to the <code>.table</code> base class.{{/i}}</p>
-
-          <h3><code>{{_i}}.table-striped{{/i}}</code></h3>
-          <p>{{_i}}Adds zebra-striping to any table row within the <code>&lt;tbody&gt;</code> via the <code>:nth-child</code> CSS selector (not available in IE7-8).{{/i}}</p>
-          <div class="bs-docs-example">
-            <table class="table table-striped">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}First Name{{/i}}</th>
-                  <th>{{_i}}Last Name{{/i}}</th>
-                  <th>{{_i}}Username{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td>Larry</td>
-                  <td>the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-striped"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>{{_i}}.table-bordered{{/i}}</code></h3>
-          <p>{{_i}}Add borders and rounded corners to the table.{{/i}}</p>
-          <div class="bs-docs-example">
-            <table class="table table-bordered">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}First Name{{/i}}</th>
-                  <th>{{_i}}Last Name{{/i}}</th>
-                  <th>{{_i}}Username{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td rowspan="2">1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@TwBootstrap</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;table class="table table-bordered"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>{{_i}}.table-hover{{/i}}</code></h3>
-          <p>{{_i}}Enable a hover state on table rows within a <code>&lt;tbody&gt;</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <table class="table table-hover">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}First Name{{/i}}</th>
-                  <th>{{_i}}Last Name{{/i}}</th>
-                  <th>{{_i}}Username{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-hover"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-          <h3><code>{{_i}}.table-condensed{{/i}}</code></h3>
-          <p>{{_i}}Makes tables more compact by cutting cell padding in half.{{/i}}</p>
-          <div class="bs-docs-example">
-            <table class="table table-condensed">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}First Name{{/i}}</th>
-                  <th>{{_i}}Last Name{{/i}}</th>
-                  <th>{{_i}}Username{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>1</td>
-                  <td>Mark</td>
-                  <td>Otto</td>
-                  <td>@mdo</td>
-                </tr>
-                <tr>
-                  <td>2</td>
-                  <td>Jacob</td>
-                  <td>Thornton</td>
-                  <td>@fat</td>
-                </tr>
-                <tr>
-                  <td>3</td>
-                  <td colspan="2">Larry the Bird</td>
-                  <td>@twitter</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums" style="margin-bottom: 18px;">
-&lt;table class="table table-condensed"&gt;
-  …
-&lt;/table&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Optional row classes{{/i}}</h2>
-          <p>{{_i}}Use contextual classes to color table rows.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <colgroup>
-              <col class="span1">
-              <col class="span7">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>{{_i}}Class{{/i}}</th>
-                <th>{{_i}}Description{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <code>.success</code>
-                </td>
-                <td>{{_i}}Indicates a successful or positive action.{{/i}}</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.error</code>
-                </td>
-                <td>{{_i}}Indicates a dangerous or potentially negative action.{{/i}}</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.warning</code>
-                </td>
-                <td>{{_i}}Indicates a warning that might need attention.{{/i}}</td>
-              </tr>
-              <tr>
-                <td>
-                  <code>.info</code>
-                </td>
-                <td>{{_i}}Used as an alternative to the default styles.{{/i}}</td>
-              </tr>
-            </tbody>
-          </table>
-          <div class="bs-docs-example">
-            <table class="table">
-              <thead>
-                <tr>
-                  <th>#</th>
-                  <th>{{_i}}Product{{/i}}</th>
-                  <th>{{_i}}Payment Taken{{/i}}</th>
-                  <th>{{_i}}Status{{/i}}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr class="success">
-                  <td>1</td>
-                  <td>TB - Monthly</td>
-                  <td>01/04/2012</td>
-                  <td>Approved</td>
-                </tr>
-                <tr class="error">
-                  <td>2</td>
-                  <td>TB - Monthly</td>
-                  <td>02/04/2012</td>
-                  <td>Declined</td>
-                </tr>
-                <tr class="warning">
-                  <td>3</td>
-                  <td>TB - Monthly</td>
-                  <td>03/04/2012</td>
-                  <td>Pending</td>
-                </tr>
-                <tr class="info">
-                  <td>4</td>
-                  <td>TB - Monthly</td>
-                  <td>04/04/2012</td>
-                  <td>Call in to confirm</td>
-                </tr>
-              </tbody>
-            </table>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-...
-  &lt;tr class="success"&gt;
-    &lt;td&gt;1&lt;/td&gt;
-    &lt;td&gt;TB - Monthly&lt;/td&gt;
-    &lt;td&gt;01/04/2012&lt;/td&gt;
-    &lt;td&gt;Approved&lt;/td&gt;
-  &lt;/tr&gt;
-...
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Supported table markup{{/i}}</h2>
-          <p>{{_i}}List of supported table HTML elements and how they should be used.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <colgroup>
-              <col class="span1">
-              <col class="span7">
-            </colgroup>
-            <thead>
-              <tr>
-                <th>{{_i}}Tag{{/i}}</th>
-                <th>{{_i}}Description{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <code>&lt;table&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Wrapping element for displaying data in a tabular format{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;thead&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Container element for table header rows (<code>&lt;tr&gt;</code>) to label table columns{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;tbody&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Container element for table rows (<code>&lt;tr&gt;</code>) in the body of the table{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;tr&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Container element for a set of table cells (<code>&lt;td&gt;</code> or <code>&lt;th&gt;</code>) that appears on a single row{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;td&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Default table cell{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;th&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Special table cell for column (or row, depending on scope and placement) labels{{/i}}
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <code>&lt;caption&gt;</code>
-                </td>
-                <td>
-                  {{_i}}Description or summary of what the table holds, especially useful for screen readers{{/i}}
-                </td>
-              </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-&lt;table&gt;
-  &lt;caption&gt;...&lt;/caption&gt;
-  &lt;thead&gt;
-    &lt;tr&gt;
-      &lt;th&gt;...&lt;/th&gt;
-      &lt;th&gt;...&lt;/th&gt;
-    &lt;/tr&gt;
-  &lt;/thead&gt;
-  &lt;tbody&gt;
-    &lt;tr&gt;
-      &lt;td&gt;...&lt;/td&gt;
-      &lt;td&gt;...&lt;/td&gt;
-    &lt;/tr&gt;
-  &lt;/tbody&gt;
-&lt;/table&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Forms
-        ================================================== -->
-        <section id="forms">
-          <div class="page-header">
-            <h1>{{_i}}Forms{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Default styles{{/i}}</h2>
-          <p>{{_i}}Individual form controls receive styling, but without any required base class on the <code>&lt;form&gt;</code> or large changes in markup. Results in stacked, left-aligned labels on top of form controls.{{/i}}</p>
-          <form class="bs-docs-example">
-            <fieldset>
-              <legend>Legend</legend>
-              <label>{{_i}}Label name{{/i}}</label>
-              <input type="text" placeholder="{{_i}}Type something…{{/i}}">
-              <span class="help-block">{{_i}}Example block-level help text here.{{/i}}</span>
-              <label class="checkbox">
-                <input type="checkbox"> {{_i}}Check me out{{/i}}
-              </label>
-              <button type="submit" class="btn">{{_i}}Submit{{/i}}</button>
-            </fieldset>
-          </form>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form&gt;
-  &lt;fieldset&gt;
-    &lt;legend&gt;{{_i}}Legend{{/i}}&lt;/legend&gt;
-    &lt;label&gt;{{_i}}Label name{{/i}}&lt;/label&gt;
-    &lt;input type="text" placeholder="{{_i}}Type something…{{/i}}"&gt;
-    &lt;span class="help-block"&gt;Example block-level help text here.&lt;/span&gt;
-    &lt;label class="checkbox"&gt;
-      &lt;input type="checkbox"&gt; {{_i}}Check me out{{/i}}
-    &lt;/label&gt;
-    &lt;button type="submit" class="btn"&gt;{{_i}}Submit{{/i}}&lt;/button&gt;
-  &lt;/fieldset&gt;
-&lt;/form&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Optional layouts{{/i}}</h2>
-          <p>{{_i}}Included with Bootstrap are three optional form layouts for common use cases.{{/i}}</p>
-
-          <h3>{{_i}}Search form{{/i}}</h3>
-          <p>{{_i}}Add <code>.form-search</code> to the form and <code>.search-query</code> to the <code>&lt;input&gt;</code> for an extra-rounded text input.{{/i}}</p>
-          <form class="bs-docs-example form-search">
-            <input type="text" class="input-medium search-query">
-            <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-          </form>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form class="form-search"&gt;
-  &lt;input type="text" class="input-medium search-query"&gt;
-  &lt;button type="submit" class="btn"&gt;{{_i}}Search{{/i}}&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>{{_i}}Inline form{{/i}}</h3>
-          <p>{{_i}}Add <code>.form-inline</code> for left-aligned labels and inline-block controls for a compact layout.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <input type="text" class="input-small" placeholder="{{_i}}Email{{/i}}">
-            <input type="password" class="input-small" placeholder="{{_i}}Password{{/i}}">
-            <label class="checkbox">
-              <input type="checkbox"> {{_i}}Remember me{{/i}}
-            </label>
-            <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
-          </form>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form class="form-inline"&gt;
-  &lt;input type="text" class="input-small" placeholder="{{_i}}Email{{/i}}"&gt;
-  &lt;input type="password" class="input-small" placeholder="{{_i}}Password{{/i}}"&gt;
-  &lt;label class="checkbox"&gt;
-    &lt;input type="checkbox"&gt; {{_i}}Remember me{{/i}}
-  &lt;/label&gt;
-  &lt;button type="submit" class="btn"&gt;{{_i}}Sign in{{/i}}&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>{{_i}}Horizontal form{{/i}}</h3>
-          <p>{{_i}}Right align labels and float them to the left to make them appear on the same line as controls. Requires the most markup changes from a default form:{{/i}}</p>
-          <ul>
-            <li>{{_i}}Add <code>.form-horizontal</code> to the form{{/i}}</li>
-            <li>{{_i}}Wrap labels and controls in <code>.control-group</code>{{/i}}</li>
-            <li>{{_i}}Add <code>.control-label</code> to the label{{/i}}</li>
-            <li>{{_i}}Wrap any associated controls in <code>.controls</code> for proper alignment{{/i}}</li>
-          </ul>
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="inputEmail">{{_i}}Email{{/i}}</label>
-              <div class="controls">
-                <input type="text" id="inputEmail" placeholder="{{_i}}Email{{/i}}">
-              </div>
-            </div>
-            <div class="control-group">
-              <label class="control-label" for="inputPassword">{{_i}}Password{{/i}}</label>
-              <div class="controls">
-                <input type="password" id="inputPassword" placeholder="{{_i}}Password{{/i}}">
-              </div>
-            </div>
-            <div class="control-group">
-              <div class="controls">
-                <label class="checkbox">
-                  <input type="checkbox"> {{_i}}Remember me{{/i}}
-                </label>
-                <button type="submit" class="btn">{{_i}}Sign in{{/i}}</button>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form class="form-horizontal"&gt;
-  &lt;div class="control-group"&gt;
-    &lt;label class="control-label" for="inputEmail"&gt;{{_i}}Email{{/i}}&lt;/label&gt;
-    &lt;div class="controls"&gt;
-      &lt;input type="text" id="inputEmail" placeholder="{{_i}}Email{{/i}}"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="control-group"&gt;
-    &lt;label class="control-label" for="inputPassword"&gt;{{_i}}Password{{/i}}&lt;/label&gt;
-    &lt;div class="controls"&gt;
-      &lt;input type="password" id="inputPassword" placeholder="{{_i}}Password{{/i}}"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="control-group"&gt;
-    &lt;div class="controls"&gt;
-      &lt;label class="checkbox"&gt;
-        &lt;input type="checkbox"&gt; {{_i}}Remember me{{/i}}
-      &lt;/label&gt;
-      &lt;button type="submit" class="btn"&gt;{{_i}}Sign in{{/i}}&lt;/button&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Supported form controls{{/i}}</h2>
-          <p>{{_i}}Examples of standard form controls supported in an example form layout.{{/i}}</p>
-
-          <h3>{{_i}}Inputs{{/i}}</h3>
-          <p>{{_i}}Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.{{/i}}</p>
-          <p>{{_i}}Requires the use of a specified <code>type</code> at all times.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <input type="text" placeholder="Text input">
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text" placeholder="Text input"&gt;
-</pre>
-
-          <h3>{{_i}}Textarea{{/i}}</h3>
-          <p>{{_i}}Form control which supports multiple lines of text. Change <code>rows</code> attribute as necessary.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <textarea rows="3"></textarea>
-          </form>
-<pre class="prettyprint linenums">
-&lt;textarea rows="3"&gt;&lt;/textarea&gt;
-</pre>
-
-          <h3>{{_i}}Checkboxes and radios{{/i}}</h3>
-          <p>{{_i}}Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.{{/i}}</p>
-          <h4>{{_i}}Default (stacked){{/i}}</h4>
-          <form class="bs-docs-example">
-            <label class="checkbox">
-              <input type="checkbox" value="">
-              {{_i}}Option one is this and that&mdash;be sure to include why it's great{{/i}}
-            </label>
-            <br>
-            <label class="radio">
-              <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
-              {{_i}}Option one is this and that&mdash;be sure to include why it's great{{/i}}
-            </label>
-            <label class="radio">
-              <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
-              {{_i}}Option two can be something else and selecting it will deselect option one{{/i}}
-            </label>
-          </form>
-<pre class="prettyprint linenums">
-&lt;label class="checkbox"&gt;
-  &lt;input type="checkbox" value=""&gt;
-  {{_i}}Option one is this and that&mdash;be sure to include why it's great{{/i}}
-&lt;/label&gt;
-
-&lt;label class="radio"&gt;
-  &lt;input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked&gt;
-  {{_i}}Option one is this and that&mdash;be sure to include why it's great{{/i}}
-&lt;/label&gt;
-&lt;label class="radio"&gt;
-  &lt;input type="radio" name="optionsRadios" id="optionsRadios2" value="option2"&gt;
-  {{_i}}Option two can be something else and selecting it will deselect option one{{/i}}
-&lt;/label&gt;
-</pre>
-
-          <h4>{{_i}}Inline checkboxes{{/i}}</h4>
-          <p>{{_i}}Add the <code>.inline</code> class to a series of checkboxes or radios for controls appear on the same line.{{/i}}</p>
-          <form class="bs-docs-example">
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
-            </label>
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
-            </label>
-            <label class="checkbox inline">
-              <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
-            </label>
-          </form>
-<pre class="prettyprint linenums">
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox1" value="option1"&gt; 1
-&lt;/label&gt;
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox2" value="option2"&gt; 2
-&lt;/label&gt;
-&lt;label class="checkbox inline"&gt;
-  &lt;input type="checkbox" id="inlineCheckbox3" value="option3"&gt; 3
-&lt;/label&gt;
-</pre>
-
-          <h3>{{_i}}Selects{{/i}}</h3>
-          <p>{{_i}}Use the default option or specify a <code>multiple="multiple"</code> to show multiple options at once.{{/i}}</p>
-          <form class="bs-docs-example">
-            <select>
-              <option>1</option>
-              <option>2</option>
-              <option>3</option>
-              <option>4</option>
-              <option>5</option>
-            </select>
-            <br>
-            <select multiple="multiple">
-              <option>1</option>
-              <option>2</option>
-              <option>3</option>
-              <option>4</option>
-              <option>5</option>
-            </select>
-          </form>
-<pre class="prettyprint linenums">
-&lt;select&gt;
-  &lt;option&gt;1&lt;/option&gt;
-  &lt;option&gt;2&lt;/option&gt;
-  &lt;option&gt;3&lt;/option&gt;
-  &lt;option&gt;4&lt;/option&gt;
-  &lt;option&gt;5&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;select multiple="multiple"&gt;
-  &lt;option&gt;1&lt;/option&gt;
-  &lt;option&gt;2&lt;/option&gt;
-  &lt;option&gt;3&lt;/option&gt;
-  &lt;option&gt;4&lt;/option&gt;
-  &lt;option&gt;5&lt;/option&gt;
-&lt;/select&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Extending form controls{{/i}}</h2>
-          <p>{{_i}}Adding on top of existing browser controls, Bootstrap includes other useful form components.{{/i}}</p>
-
-          <h3>{{_i}}Prepended and appended inputs{{/i}}</h3>
-          <p>{{_i}}Add text or buttons before or after any text-based input. Do note that <code>select</code> elements are not supported here.{{/i}}</p>
-
-          <h4>{{_i}}Default options{{/i}}</h4>
-          <p>{{_i}}Wrap an <code>.add-on</code> and an <code>input</code> with one of two classes to prepend or append text to an input.{{/i}}</p>
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <span class="add-on">@</span>
-              <input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
-            </div>
-            <br>
-            <div class="input-append">
-              <input class="span2" id="appendedInput" type="text">
-              <span class="add-on">.00</span>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend"&gt;
-  &lt;span class="add-on"&gt;@&lt;/span&gt;
-  &lt;input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}"&gt;
-&lt;/div&gt;
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInput" type="text"&gt;
-  &lt;span class="add-on"&gt;.00&lt;/span&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Combined{{/i}}</h4>
-          <p>{{_i}}Use both classes and two instances of <code>.add-on</code> to prepend and append an input.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <div class="input-prepend input-append">
-              <span class="add-on">$</span>
-              <input class="span2" id="appendedPrependedInput" type="text">
-              <span class="add-on">.00</span>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend input-append"&gt;
-  &lt;span class="add-on"&gt;$&lt;/span&gt;
-  &lt;input class="span2" id="appendedPrependedInput" type="text"&gt;
-  &lt;span class="add-on"&gt;.00&lt;/span&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Buttons instead of text{{/i}}</h4>
-          <p>{{_i}}Instead of a <code>&lt;span&gt;</code> with text, use a <code>.btn</code> to attach a button (or two) to an input.{{/i}}</p>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedInputButton" type="text">
-              <button class="btn" type="button">Go!</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInputButton" type="text"&gt;
-  &lt;button class="btn" type="button"&gt;Go!&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedInputButtons" type="text">
-              <button class="btn" type="button">Search</button>
-              <button class="btn" type="button">Options</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedInputButtons" type="text"&gt;
-  &lt;button class="btn" type="button"&gt;Search&lt;/button&gt;
-  &lt;button class="btn" type="button"&gt;Options&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Button dropdowns{{/i}}</h4>
-          <p>{{_i}}{{/i}}</p>
-          <form class="bs-docs-example">
-            <div class="input-append">
-              <input class="span2" id="appendedDropdownButton" type="text">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /input-append -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-append"&gt;
-  &lt;input class="span2" id="appendedDropdownButton" type="text"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      {{_i}}Action{{/i}}
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <input class="span2" id="prependedDropdownButton" type="text">
-            </div><!-- /input-prepend -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      {{_i}}Action{{/i}}
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-  &lt;input class="span2" id="prependedDropdownButton" type="text"&gt;
-&lt;/div&gt;
-</pre>
-
-          <form class="bs-docs-example">
-            <div class="input-prepend input-append">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <input class="span2" id="appendedPrependedDropdownButton" type="text">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /input-prepend input-append -->
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="input-prepend input-append"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      {{_i}}Action{{/i}}
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-  &lt;input class="span2" id="appendedPrependedDropdownButton" type="text"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-      {{_i}}Action{{/i}}
-      &lt;span class="caret"&gt;&lt;/span&gt;
-    &lt;/button&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Segmented dropdown groups{{/i}}</h4>
-          <form class="bs-docs-example">
-            <div class="input-prepend">
-              <div class="btn-group">
-                <button class="btn" tabindex="-1">Action</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown" tabindex="-1">
-                  <span class="caret"></span>
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div>
-              <input type="text">
-            </div>
-            <div class="input-append">
-              <input type="text">
-              <div class="btn-group">
-                <button class="btn" tabindex="-1">Action</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown" tabindex="-1">
-                  <span class="caret"></span>
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;form&gt;
-  &lt;div class="input-prepend"&gt;
-    &lt;div class="btn-group"&gt;...&lt;/div&gt;
-    &lt;input type="text"&gt;
-  &lt;/div&gt;
-  &lt;div class="input-append"&gt;
-    &lt;input type="text"&gt;
-    &lt;div class="btn-group"&gt;...&lt;/div&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-          <h4>{{_i}}Search form{{/i}}</h4>
-          <form class="bs-docs-example form-search">
-            <div class="input-append">
-              <input type="text" class="span2 search-query">
-              <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-            </div>
-            <div class="input-prepend">
-              <button type="submit" class="btn">{{_i}}Search{{/i}}</button>
-              <input type="text" class="span2 search-query">
-            </div>
-          </form>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form class="form-search"&gt;
-  &lt;div class="input-append"&gt;
-    &lt;input type="text" class="span2 search-query"&gt;
-    &lt;button type="submit" class="btn"&gt;{{_i}}Search{{/i}}&lt;/button&gt;
-  &lt;/div&gt;
-  &lt;div class="input-prepend"&gt;
-    &lt;button type="submit" class="btn"&gt;{{_i}}Search{{/i}}&lt;/button&gt;
-    &lt;input type="text" class="span2 search-query"&gt;
-  &lt;/div&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>{{_i}}Control sizing{{/i}}</h3>
-          <p>{{_i}}Use relative sizing classes like <code>.input-large</code> or match your inputs to the grid column sizes using <code>.span*</code> classes.{{/i}}</p>
-
-          <h4>{{_i}}Block level inputs{{/i}}</h4>
-          <p>{{_i}}Make any <code>&lt;input&gt;</code> or <code>&lt;textarea&gt;</code> element behave like a block level element.{{/i}}</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls">
-              <input class="input-block-level" type="text" placeholder=".input-block-level">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-block-level" type="text" placeholder=".input-block-level"&gt;
-</pre>
-
-          <h4>{{_i}}Relative sizing{{/i}}</h4>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls docs-input-sizes">
-              <input class="input-mini" type="text" placeholder=".input-mini">
-              <input class="input-small" type="text" placeholder=".input-small">
-              <input class="input-medium" type="text" placeholder=".input-medium">
-              <input class="input-large" type="text" placeholder=".input-large">
-              <input class="input-xlarge" type="text" placeholder=".input-xlarge">
-              <input class="input-xxlarge" type="text" placeholder=".input-xxlarge">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-mini" type="text" placeholder=".input-mini"&gt;
-&lt;input class="input-small" type="text" placeholder=".input-small"&gt;
-&lt;input class="input-medium" type="text" placeholder=".input-medium"&gt;
-&lt;input class="input-large" type="text" placeholder=".input-large"&gt;
-&lt;input class="input-xlarge" type="text" placeholder=".input-xlarge"&gt;
-&lt;input class="input-xxlarge" type="text" placeholder=".input-xxlarge"&gt;
-</pre>
-          <p>
-            <span class="label label-info">{{_i}}Heads up!{{/i}}</span> In future versions, we'll be altering the use of these relative input classes to match our button sizes. For example, <code>.input-large</code> will increase the padding and font-size of an input.
-          </p>
-
-          <h4>{{_i}}Grid sizing{{/i}}</h4>
-          <p>{{_i}}Use <code>.span1</code> to <code>.span12</code> for inputs that match the same sizes of the grid columns.{{/i}}</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls docs-input-sizes">
-              <input class="span1" type="text" placeholder=".span1">
-              <input class="span2" type="text" placeholder=".span2">
-              <input class="span3" type="text" placeholder=".span3">
-              <select class="span1">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-              <select class="span2">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-              <select class="span3">
-                <option>1</option>
-                <option>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-              </select>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="span1" type="text" placeholder=".span1"&gt;
-&lt;input class="span2" type="text" placeholder=".span2"&gt;
-&lt;input class="span3" type="text" placeholder=".span3"&gt;
-&lt;select class="span1"&gt;
-  ...
-&lt;/select&gt;
-&lt;select class="span2"&gt;
-  ...
-&lt;/select&gt;
-&lt;select class="span3"&gt;
-  ...
-&lt;/select&gt;
-</pre>
-
-          <p>{{_i}}For multiple grid inputs per line, <strong>use the <code>.controls-row</code> modifier class for proper spacing</strong>. It floats the inputs to collapse white-space, sets the proper margins, and clears the float.{{/i}}</p>
-          <form class="bs-docs-example" style="padding-bottom: 15px;">
-            <div class="controls">
-              <input class="span5" type="text" placeholder=".span5">
-            </div>
-            <div class="controls controls-row">
-              <input class="span4" type="text" placeholder=".span4">
-              <input class="span1" type="text" placeholder=".span1">
-            </div>
-            <div class="controls controls-row">
-              <input class="span3" type="text" placeholder=".span3">
-              <input class="span2" type="text" placeholder=".span2">
-            </div>
-            <div class="controls controls-row">
-              <input class="span2" type="text" placeholder=".span2">
-              <input class="span3" type="text" placeholder=".span3">
-            </div>
-            <div class="controls controls-row">
-              <input class="span1" type="text" placeholder=".span1">
-              <input class="span4" type="text" placeholder=".span4">
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="controls"&gt;
-  &lt;input class="span5" type="text" placeholder=".span5"&gt;
-&lt;/div&gt;
-&lt;div class="controls controls-row"&gt;
-  &lt;input class="span4" type="text" placeholder=".span4"&gt;
-  &lt;input class="span1" type="text" placeholder=".span1"&gt;
-&lt;/div&gt;
-...
-</pre>
-
-          <h3>{{_i}}Uneditable inputs{{/i}}</h3>
-          <p>{{_i}}Present data in a form that's not editable without using actual form markup.{{/i}}</p>
-          <form class="bs-docs-example">
-            <span class="input-xlarge uneditable-input">Some value here</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;span class="input-xlarge uneditable-input"&gt;Some value here&lt;/span&gt;
-</pre>
-
-          <h3>{{_i}}Form actions{{/i}}</h3>
-          <p>{{_i}}End a form with a group of actions (buttons). When placed within a <code>.form-actions</code>, the buttons will automatically indent to line up with the form controls.{{/i}}</p>
-          <form class="bs-docs-example">
-            <div class="form-actions">
-              <button type="submit" class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
-              <button type="button" class="btn">{{_i}}Cancel{{/i}}</button>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="form-actions"&gt;
-  &lt;button type="submit" class="btn btn-primary"&gt;{{_i}}Save changes{{/i}}&lt;/button&gt;
-  &lt;button type="button" class="btn"&gt;{{_i}}Cancel{{/i}}&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Help text{{/i}}</h3>
-          <p>{{_i}}Inline and block level support for help text that appears around form controls.{{/i}}</p>
-          <h4>{{_i}}Inline help{{/i}}</h4>
-          <form class="bs-docs-example form-inline">
-            <input type="text"> <span class="help-inline">Inline help text</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text"&gt;&lt;span class="help-inline"&gt;Inline help text&lt;/span&gt;
-</pre>
-
-          <h4>{{_i}}Block help{{/i}}</h4>
-          <form class="bs-docs-example form-inline">
-            <input type="text">
-            <span class="help-block">A longer block of help text that breaks onto a new line and may extend beyond one line.</span>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input type="text"&gt;&lt;span class="help-block"&gt;A longer block of help text that breaks onto a new line and may extend beyond one line.&lt;/span&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Form control states{{/i}}</h2>
-          <p>{{_i}}Provide feedback to users or visitors with basic feedback states on form controls and labels.{{/i}}</p>
-
-          <h3>{{_i}}Input focus{{/i}}</h3>
-          <p>{{_i}}We remove the default <code>outline</code> styles on some form controls and apply a <code>box-shadow</code> in its place for <code>:focus</code>.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <input class="input-xlarge focused" id="focusedInput" type="text" value="{{_i}}This is focused...{{/i}}">
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-xlarge" id="focusedInput" type="text" value="{{_i}}This is focused...{{/i}}"&gt;
-</pre>
-
-          <h3>{{_i}}Invalid inputs{{/i}}</h3>
-          <p>{{_i}}Style inputs via default browser functionality with <code>:invalid</code>. Specify a <code>type</code>, add the <code>required</code> attribute if the field is not optional, and (if applicable) specify a <code>pattern</code>.{{/i}}</p>
-          <p>{{_i}}This is not available in versions of Internet Explorer 7-9 due to lack of support for CSS pseudo selectors.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <input class="span3" type="email" placeholder="test@example.com" required>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="span3" type="email" required&gt;
-</pre>
-
-          <h3>{{_i}}Disabled inputs{{/i}}</h3>
-          <p>{{_i}}Add the <code>disabled</code> attribute on an input to prevent user input and trigger a slightly different look.{{/i}}</p>
-          <form class="bs-docs-example form-inline">
-            <input class="input-xlarge" id="disabledInput" type="text" placeholder="{{_i}}Disabled input here…{{/i}}" disabled>
-          </form>
-<pre class="prettyprint linenums">
-&lt;input class="input-xlarge" id="disabledInput" type="text" placeholder="{{_i}}Disabled input here...{{/i}}" disabled&gt;
-</pre>
-
-          <h3>{{_i}}Validation states{{/i}}</h3>
-          <p>{{_i}}Bootstrap includes validation styles for error, warning, info, and success messages. To use, add the appropriate class to the surrounding <code>.control-group</code>.{{/i}}</p>
-
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group warning">
-              <label class="control-label" for="inputWarning">{{_i}}Input with warning{{/i}}</label>
-              <div class="controls">
-                <input type="text" id="inputWarning">
-                <span class="help-inline">{{_i}}Something may have gone wrong{{/i}}</span>
-              </div>
-            </div>
-            <div class="control-group error">
-              <label class="control-label" for="inputError">{{_i}}Input with error{{/i}}</label>
-              <div class="controls">
-                <input type="text" id="inputError">
-                <span class="help-inline">{{_i}}Please correct the error{{/i}}</span>
-              </div>
-            </div>
-            <div class="control-group info">
-              <label class="control-label" for="inputInfo">{{_i}}Input with info{{/i}}</label>
-              <div class="controls">
-                <input type="text" id="inputInfo">
-                <span class="help-inline">{{_i}}Username is taken{{/i}}</span>
-              </div>
-            </div>
-            <div class="control-group success">
-              <label class="control-label" for="inputSuccess">{{_i}}Input with success{{/i}}</label>
-              <div class="controls">
-                <input type="text" id="inputSuccess">
-                <span class="help-inline">{{_i}}Woohoo!{{/i}}</span>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="control-group warning"&gt;
-  &lt;label class="control-label" for="inputWarning"&gt;{{_i}}Input with warning{{/i}}&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputWarning"&gt;
-    &lt;span class="help-inline"&gt;{{_i}}Something may have gone wrong{{/i}}&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group error"&gt;
-  &lt;label class="control-label" for="inputError"&gt;{{_i}}Input with error{{/i}}&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputError"&gt;
-    &lt;span class="help-inline"&gt;{{_i}}Please correct the error{{/i}}&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group info"&gt;
-  &lt;label class="control-label" for="inputInfo"&gt;{{_i}}Input with info{{/i}}&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputInfo"&gt;
-    &lt;span class="help-inline"&gt;{{_i}}Username is already taken{{/i}}&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-
-&lt;div class="control-group success"&gt;
-  &lt;label class="control-label" for="inputSuccess"&gt;{{_i}}Input with success{{/i}}&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;input type="text" id="inputSuccess"&gt;
-    &lt;span class="help-inline"&gt;{{_i}}Woohoo!{{/i}}&lt;/span&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Buttons
-        ================================================== -->
-        <section id="buttons">
-          <div class="page-header">
-            <h1>{{_i}}Buttons{{/i}}</h1>
-          </div>
-
-          <h2>Default buttons</h2>
-          <p>{{_i}}Button styles can be applied to anything with the <code>.btn</code> class applied. However, typically you'll want to apply these to only <code>&lt;a&gt;</code> and <code>&lt;button&gt;</code> elements for the best rendering.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>{{_i}}Button{{/i}}</th>
-                <th>{{_i}}class=""{{/i}}</th>
-                <th>{{_i}}Description{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td><button type="button" class="btn">{{_i}}Default{{/i}}</button></td>
-                <td><code>btn</code></td>
-                <td>{{_i}}Standard gray button with gradient{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-primary">{{_i}}Primary{{/i}}</button></td>
-                <td><code>btn btn-primary</code></td>
-                <td>{{_i}}Provides extra visual weight and identifies the primary action in a set of buttons{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-info">{{_i}}Info{{/i}}</button></td>
-                <td><code>btn btn-info</code></td>
-                <td>{{_i}}Used as an alternative to the default styles{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-success">{{_i}}Success{{/i}}</button></td>
-                <td><code>btn btn-success</code></td>
-                <td>{{_i}}Indicates a successful or positive action{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-warning">{{_i}}Warning{{/i}}</button></td>
-                <td><code>btn btn-warning</code></td>
-                <td>{{_i}}Indicates caution should be taken with this action{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-danger">{{_i}}Danger{{/i}}</button></td>
-                <td><code>btn btn-danger</code></td>
-                <td>{{_i}}Indicates a dangerous or potentially negative action{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-inverse">{{_i}}Inverse{{/i}}</button></td>
-                <td><code>btn btn-inverse</code></td>
-                <td>{{_i}}Alternate dark gray button, not tied to a semantic action or use{{/i}}</td>
-              </tr>
-              <tr>
-                <td><button type="button" class="btn btn-link">{{_i}}Link{{/i}}</button></td>
-                <td><code>btn btn-link</code></td>
-                <td>{{_i}}Deemphasize a button by making it look like a link while maintaining button behavior{{/i}}</td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h4>{{_i}}Cross browser compatibility{{/i}}</h4>
-          <p>{{_i}}IE9 doesn't crop background gradients on rounded corners, so we remove it. Related, IE9 jankifies disabled <code>button</code> elements, rendering text gray with a nasty text-shadow that we cannot fix.{{/i}}</p>
-
-
-          <h2>{{_i}}Button sizes{{/i}}</h2>
-          <p>{{_i}}Fancy larger or smaller buttons? Add <code>.btn-large</code>, <code>.btn-small</code>, or <code>.btn-mini</code> for additional sizes.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p>
-              <button type="button" class="btn btn-large btn-primary">{{_i}}Large button{{/i}}</button>
-              <button type="button" class="btn btn-large">{{_i}}Large button{{/i}}</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-primary">{{_i}}Default button{{/i}}</button>
-              <button type="button" class="btn">{{_i}}Default button{{/i}}</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-small btn-primary">{{_i}}Small button{{/i}}</button>
-              <button type="button" class="btn btn-small">{{_i}}Small button{{/i}}</button>
-            </p>
-            <p>
-              <button type="button" class="btn btn-mini btn-primary">{{_i}}Mini button{{/i}}</button>
-              <button type="button" class="btn btn-mini">{{_i}}Mini button{{/i}}</button>
-            </p>
-          </div>
-<pre class="prettyprint linenums">
-&lt;p&gt;
-  &lt;button class="btn btn-large btn-primary" type="button"&gt;{{_i}}Large button{{/i}}&lt;/button&gt;
-  &lt;button class="btn btn-large" type="button"&gt;{{_i}}Large button{{/i}}&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-primary" type="button"&gt;{{_i}}Default button{{/i}}&lt;/button&gt;
-  &lt;button class="btn" type="button"&gt;{{_i}}Default button{{/i}}&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-small btn-primary" type="button"&gt;{{_i}}Small button{{/i}}&lt;/button&gt;
-  &lt;button class="btn btn-small" type="button"&gt;{{_i}}Small button{{/i}}&lt;/button&gt;
-&lt;/p&gt;
-&lt;p&gt;
-  &lt;button class="btn btn-mini btn-primary" type="button"&gt;{{_i}}Mini button{{/i}}&lt;/button&gt;
-  &lt;button class="btn btn-mini" type="button"&gt;{{_i}}Mini button{{/i}}&lt;/button&gt;
-&lt;/p&gt;
-</pre>
-          <p>{{_i}}Create block level buttons&mdash;those that span the full width of a parent&mdash; by adding <code>.btn-block</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="well" style="max-width: 400px; margin: 0 auto 10px;">
-              <button type="button" class="btn btn-large btn-block btn-primary">{{_i}}Block level button{{/i}}</button>
-              <button type="button" class="btn btn-large btn-block">{{_i}}Block level button{{/i}}</button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;button class="btn btn-large btn-block btn-primary" type="button"&gt;{{_i}}Block level button{{/i}}&lt;/button&gt;
-&lt;button class="btn btn-large btn-block" type="button"&gt;{{_i}}Block level button{{/i}}&lt;/button&gt;
-</pre>
-
-
-          <h2>{{_i}}Disabled state{{/i}}</h2>
-          <p>{{_i}}Make buttons look unclickable by fading them back 50%.{{/i}}</p>
-
-          <h3>Anchor element</h3>
-          <p>{{_i}}Add the <code>.disabled</code> class to <code>&lt;a&gt;</code> buttons.{{/i}}</p>
-          <p class="bs-docs-example">
-            <a href="#" class="btn btn-large btn-primary disabled">{{_i}}Primary link{{/i}}</a>
-            <a href="#" class="btn btn-large disabled">{{_i}}Link{{/i}}</a>
-          </p>
-<pre class="prettyprint linenums">
-&lt;a href="#" class="btn btn-large btn-primary disabled"&gt;{{_i}}Primary link{{/i}}&lt;/a&gt;
-&lt;a href="#" class="btn btn-large disabled"&gt;{{_i}}Link{{/i}}&lt;/a&gt;
-</pre>
-          <p>
-            <span class="label label-info">{{_i}}Heads up!{{/i}}</span>
-            {{_i}}We use <code>.disabled</code> as a utility class here, similar to the common <code>.active</code> class, so no prefix is required. Also, this class is only for aesthetic; you must use custom JavaScript to disable links here.{{/i}}
-          </p>
-
-          <h3>Button element</h3>
-          <p>{{_i}}Add the <code>disabled</code> attribute to <code>&lt;button&gt;</code> buttons.{{/i}}</p>
-          <p class="bs-docs-example">
-            <button type="button" class="btn btn-large btn-primary disabled" disabled="disabled">{{_i}}Primary button{{/i}}</button>
-            <button type="button" class="btn btn-large" disabled>{{_i}}Button{{/i}}</button>
-          </p>
-<pre class="prettyprint linenums">
-&lt;button type="button" class="btn btn-large btn-primary disabled" disabled="disabled"&gt;{{_i}}Primary button{{/i}}&lt;/button&gt;
-&lt;button type="button" class="btn btn-large" disabled&gt;{{_i}}Button{{/i}}&lt;/button&gt;
-</pre>
-
-
-          <h2>{{_i}}One class, multiple tags{{/i}}</h2>
-          <p>{{_i}}Use the <code>.btn</code> class on an <code>&lt;a&gt;</code>, <code>&lt;button&gt;</code>, or <code>&lt;input&gt;</code> element.{{/i}}</p>
-          <form class="bs-docs-example">
-            <a class="btn" href="">{{_i}}Link{{/i}}</a>
-            <button class="btn" type="submit">{{_i}}Button{{/i}}</button>
-            <input class="btn" type="button" value="{{_i}}Input{{/i}}">
-            <input class="btn" type="submit" value="{{_i}}Submit{{/i}}">
-          </form>
-<pre class="prettyprint linenums">
-&lt;a class="btn" href=""&gt;{{_i}}Link{{/i}}&lt;/a&gt;
-&lt;button class="btn" type="submit"&gt;{{_i}}Button{{/i}}&lt;/button&gt;
-&lt;input class="btn" type="button" value="{{_i}}Input{{/i}}"&gt;
-&lt;input class="btn" type="submit" value="{{_i}}Submit{{/i}}"&gt;
-</pre>
-          <p>{{_i}}As a best practice, try to match the element for your context to ensure matching cross-browser rendering. If you have an <code>input</code>, use an <code>&lt;input type="submit"&gt;</code> for your button.{{/i}}</p>
-
-        </section>
-
-
-
-        <!-- Images
-        ================================================== -->
-        <section id="images">
-          <div class="page-header">
-            <h1>{{_i}}Images{{/i}}</h1>
-          </div>
-
-          <p>{{_i}}Add classes to an <code>&lt;img&gt;</code> element to easily style images in any project.{{/i}}</p>
-          <div class="bs-docs-example bs-docs-example-images">
-            <img data-src="holder.js/140x140" class="img-rounded">
-            <img data-src="holder.js/140x140" class="img-circle">
-            <img data-src="holder.js/140x140" class="img-polaroid">
-          </div>
-<pre class="prettyprint linenums">
-&lt;img src="..." class="img-rounded"&gt;
-&lt;img src="..." class="img-circle"&gt;
-&lt;img src="..." class="img-polaroid"&gt;
-</pre>
-          <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}<code>.img-rounded</code> and <code>.img-circle</code> do not work in IE7-8 due to lack of <code>border-radius</code> support.{{/i}}</p>
-
-
-        </section>
-
-
-
-        <!-- Icons
-        ================================================== -->
-        <section id="icons">
-          <div class="page-header">
-            <h1>{{_i}}Icons <small>by <a href="http://glyphicons.com" target="_blank">Glyphicons</a></small>{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Icon glyphs{{/i}}</h2>
-          <p>{{_i}}140 icons in sprite form, available in dark gray (default) and white, provided by <a href="http://glyphicons.com" target="_blank">Glyphicons</a>.{{/i}}</p>
-          <ul class="the-icons clearfix">
-            <li><i class="icon-glass"></i> icon-glass</li>
-            <li><i class="icon-music"></i> icon-music</li>
-            <li><i class="icon-search"></i> icon-search</li>
-            <li><i class="icon-envelope"></i> icon-envelope</li>
-            <li><i class="icon-heart"></i> icon-heart</li>
-            <li><i class="icon-star"></i> icon-star</li>
-            <li><i class="icon-star-empty"></i> icon-star-empty</li>
-            <li><i class="icon-user"></i> icon-user</li>
-            <li><i class="icon-film"></i> icon-film</li>
-            <li><i class="icon-th-large"></i> icon-th-large</li>
-            <li><i class="icon-th"></i> icon-th</li>
-            <li><i class="icon-th-list"></i> icon-th-list</li>
-            <li><i class="icon-ok"></i> icon-ok</li>
-            <li><i class="icon-remove"></i> icon-remove</li>
-            <li><i class="icon-zoom-in"></i> icon-zoom-in</li>
-            <li><i class="icon-zoom-out"></i> icon-zoom-out</li>
-            <li><i class="icon-off"></i> icon-off</li>
-            <li><i class="icon-signal"></i> icon-signal</li>
-            <li><i class="icon-cog"></i> icon-cog</li>
-            <li><i class="icon-trash"></i> icon-trash</li>
-            <li><i class="icon-home"></i> icon-home</li>
-            <li><i class="icon-file"></i> icon-file</li>
-            <li><i class="icon-time"></i> icon-time</li>
-            <li><i class="icon-road"></i> icon-road</li>
-            <li><i class="icon-download-alt"></i> icon-download-alt</li>
-            <li><i class="icon-download"></i> icon-download</li>
-            <li><i class="icon-upload"></i> icon-upload</li>
-            <li><i class="icon-inbox"></i> icon-inbox</li>
-
-            <li><i class="icon-play-circle"></i> icon-play-circle</li>
-            <li><i class="icon-repeat"></i> icon-repeat</li>
-            <li><i class="icon-refresh"></i> icon-refresh</li>
-            <li><i class="icon-list-alt"></i> icon-list-alt</li>
-            <li><i class="icon-lock"></i> icon-lock</li>
-            <li><i class="icon-flag"></i> icon-flag</li>
-            <li><i class="icon-headphones"></i> icon-headphones</li>
-            <li><i class="icon-volume-off"></i> icon-volume-off</li>
-            <li><i class="icon-volume-down"></i> icon-volume-down</li>
-            <li><i class="icon-volume-up"></i> icon-volume-up</li>
-            <li><i class="icon-qrcode"></i> icon-qrcode</li>
-            <li><i class="icon-barcode"></i> icon-barcode</li>
-            <li><i class="icon-tag"></i> icon-tag</li>
-            <li><i class="icon-tags"></i> icon-tags</li>
-            <li><i class="icon-book"></i> icon-book</li>
-            <li><i class="icon-bookmark"></i> icon-bookmark</li>
-            <li><i class="icon-print"></i> icon-print</li>
-            <li><i class="icon-camera"></i> icon-camera</li>
-            <li><i class="icon-font"></i> icon-font</li>
-            <li><i class="icon-bold"></i> icon-bold</li>
-            <li><i class="icon-italic"></i> icon-italic</li>
-            <li><i class="icon-text-height"></i> icon-text-height</li>
-            <li><i class="icon-text-width"></i> icon-text-width</li>
-            <li><i class="icon-align-left"></i> icon-align-left</li>
-            <li><i class="icon-align-center"></i> icon-align-center</li>
-            <li><i class="icon-align-right"></i> icon-align-right</li>
-            <li><i class="icon-align-justify"></i> icon-align-justify</li>
-            <li><i class="icon-list"></i> icon-list</li>
-
-            <li><i class="icon-indent-left"></i> icon-indent-left</li>
-            <li><i class="icon-indent-right"></i> icon-indent-right</li>
-            <li><i class="icon-facetime-video"></i> icon-facetime-video</li>
-            <li><i class="icon-picture"></i> icon-picture</li>
-            <li><i class="icon-pencil"></i> icon-pencil</li>
-            <li><i class="icon-map-marker"></i> icon-map-marker</li>
-            <li><i class="icon-adjust"></i> icon-adjust</li>
-            <li><i class="icon-tint"></i> icon-tint</li>
-            <li><i class="icon-edit"></i> icon-edit</li>
-            <li><i class="icon-share"></i> icon-share</li>
-            <li><i class="icon-check"></i> icon-check</li>
-            <li><i class="icon-move"></i> icon-move</li>
-            <li><i class="icon-step-backward"></i> icon-step-backward</li>
-            <li><i class="icon-fast-backward"></i> icon-fast-backward</li>
-            <li><i class="icon-backward"></i> icon-backward</li>
-            <li><i class="icon-play"></i> icon-play</li>
-            <li><i class="icon-pause"></i> icon-pause</li>
-            <li><i class="icon-stop"></i> icon-stop</li>
-            <li><i class="icon-forward"></i> icon-forward</li>
-            <li><i class="icon-fast-forward"></i> icon-fast-forward</li>
-            <li><i class="icon-step-forward"></i> icon-step-forward</li>
-            <li><i class="icon-eject"></i> icon-eject</li>
-            <li><i class="icon-chevron-left"></i> icon-chevron-left</li>
-            <li><i class="icon-chevron-right"></i> icon-chevron-right</li>
-            <li><i class="icon-plus-sign"></i> icon-plus-sign</li>
-            <li><i class="icon-minus-sign"></i> icon-minus-sign</li>
-            <li><i class="icon-remove-sign"></i> icon-remove-sign</li>
-            <li><i class="icon-ok-sign"></i> icon-ok-sign</li>
-
-            <li><i class="icon-question-sign"></i> icon-question-sign</li>
-            <li><i class="icon-info-sign"></i> icon-info-sign</li>
-            <li><i class="icon-screenshot"></i> icon-screenshot</li>
-            <li><i class="icon-remove-circle"></i> icon-remove-circle</li>
-            <li><i class="icon-ok-circle"></i> icon-ok-circle</li>
-            <li><i class="icon-ban-circle"></i> icon-ban-circle</li>
-            <li><i class="icon-arrow-left"></i> icon-arrow-left</li>
-            <li><i class="icon-arrow-right"></i> icon-arrow-right</li>
-            <li><i class="icon-arrow-up"></i> icon-arrow-up</li>
-            <li><i class="icon-arrow-down"></i> icon-arrow-down</li>
-            <li><i class="icon-share-alt"></i> icon-share-alt</li>
-            <li><i class="icon-resize-full"></i> icon-resize-full</li>
-            <li><i class="icon-resize-small"></i> icon-resize-small</li>
-            <li><i class="icon-plus"></i> icon-plus</li>
-            <li><i class="icon-minus"></i> icon-minus</li>
-            <li><i class="icon-asterisk"></i> icon-asterisk</li>
-            <li><i class="icon-exclamation-sign"></i> icon-exclamation-sign</li>
-            <li><i class="icon-gift"></i> icon-gift</li>
-            <li><i class="icon-leaf"></i> icon-leaf</li>
-            <li><i class="icon-fire"></i> icon-fire</li>
-            <li><i class="icon-eye-open"></i> icon-eye-open</li>
-            <li><i class="icon-eye-close"></i> icon-eye-close</li>
-            <li><i class="icon-warning-sign"></i> icon-warning-sign</li>
-            <li><i class="icon-plane"></i> icon-plane</li>
-            <li><i class="icon-calendar"></i> icon-calendar</li>
-            <li><i class="icon-random"></i> icon-random</li>
-            <li><i class="icon-comment"></i> icon-comment</li>
-            <li><i class="icon-magnet"></i> icon-magnet</li>
-
-            <li><i class="icon-chevron-up"></i> icon-chevron-up</li>
-            <li><i class="icon-chevron-down"></i> icon-chevron-down</li>
-            <li><i class="icon-retweet"></i> icon-retweet</li>
-            <li><i class="icon-shopping-cart"></i> icon-shopping-cart</li>
-            <li><i class="icon-folder-close"></i> icon-folder-close</li>
-            <li><i class="icon-folder-open"></i> icon-folder-open</li>
-            <li><i class="icon-resize-vertical"></i> icon-resize-vertical</li>
-            <li><i class="icon-resize-horizontal"></i> icon-resize-horizontal</li>
-            <li><i class="icon-hdd"></i> icon-hdd</li>
-            <li><i class="icon-bullhorn"></i> icon-bullhorn</li>
-            <li><i class="icon-bell"></i> icon-bell</li>
-            <li><i class="icon-certificate"></i> icon-certificate</li>
-            <li><i class="icon-thumbs-up"></i> icon-thumbs-up</li>
-            <li><i class="icon-thumbs-down"></i> icon-thumbs-down</li>
-            <li><i class="icon-hand-right"></i> icon-hand-right</li>
-            <li><i class="icon-hand-left"></i> icon-hand-left</li>
-            <li><i class="icon-hand-up"></i> icon-hand-up</li>
-            <li><i class="icon-hand-down"></i> icon-hand-down</li>
-            <li><i class="icon-circle-arrow-right"></i> icon-circle-arrow-right</li>
-            <li><i class="icon-circle-arrow-left"></i> icon-circle-arrow-left</li>
-            <li><i class="icon-circle-arrow-up"></i> icon-circle-arrow-up</li>
-            <li><i class="icon-circle-arrow-down"></i> icon-circle-arrow-down</li>
-            <li><i class="icon-globe"></i> icon-globe</li>
-            <li><i class="icon-wrench"></i> icon-wrench</li>
-            <li><i class="icon-tasks"></i> icon-tasks</li>
-            <li><i class="icon-filter"></i> icon-filter</li>
-            <li><i class="icon-briefcase"></i> icon-briefcase</li>
-            <li><i class="icon-fullscreen"></i> icon-fullscreen</li>
-          </ul>
-
-          <h3>Glyphicons attribution</h3>
-          <p>{{_i}}<a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but an arrangement between Bootstrap and the Glyphicons creators have made this possible at no cost to you as developers. As a thank you, we ask you to include an optional link back to <a href="http://glyphicons.com/">Glyphicons</a> whenever practical.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}How to use{{/i}}</h2>
-          <p>{{_i}}All icons require an <code>&lt;i&gt;</code> tag with a unique class, prefixed with <code>icon-</code>. To use, place the following code just about anywhere:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;i class="icon-search"&gt;&lt;/i&gt;
-</pre>
-          <p>{{_i}}There are also styles available for inverted (white) icons, made ready with one extra class. We will specifically enforce this class on hover and active states for nav and dropdown links.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;i class="icon-search icon-white"&gt;&lt;/i&gt;
-</pre>
-          <p>
-            <span class="label label-info">{{_i}}Heads up!{{/i}}</span>
-            {{_i}}When using beside strings of text, as in buttons or nav links, be sure to leave a space after the <code>&lt;i&gt;</code> tag for proper spacing.{{/i}}
-          </p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Icon examples{{/i}}</h2>
-          <p>{{_i}}Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.{{/i}}</p>
-
-          <h4>{{_i}}Buttons{{/i}}</h4>
-
-          <h5>{{_i}}Button group in a button toolbar{{/i}}</h5>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <a class="btn" href="#"><i class="icon-align-left"></i></a>
-                <a class="btn" href="#"><i class="icon-align-center"></i></a>
-                <a class="btn" href="#"><i class="icon-align-right"></i></a>
-                <a class="btn" href="#"><i class="icon-align-justify"></i></a>
-              </div>
-            </div>
-          </div>{{! /bs-docs-example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-toolbar"&gt;
-  &lt;div class="btn-group"&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-left"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-center"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-right"&gt;&lt;/i&gt;&lt;/a&gt;
-    &lt;a class="btn" href="#"&gt;&lt;i class="icon-align-justify"&gt;&lt;/i&gt;&lt;/a&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h5>{{_i}}Dropdown in a button group{{/i}}</h5>
-          <div class="bs-docs-example">
-            <div class="btn-group">
-              <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> {{_i}}User{{/i}}</a>
-              <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
-              <ul class="dropdown-menu">
-                <li><a href="#"><i class="icon-pencil"></i> {{_i}}Edit{{/i}}</a></li>
-                <li><a href="#"><i class="icon-trash"></i> {{_i}}Delete{{/i}}</a></li>
-                <li><a href="#"><i class="icon-ban-circle"></i> {{_i}}Ban{{/i}}</a></li>
-                <li class="divider"></li>
-                <li><a href="#"><i class="i"></i> {{_i}}Make admin{{/i}}</a></li>
-              </ul>
-            </div>
-          </div>{{! /bs-docs-example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;a class="btn btn-primary" href="#"&gt;&lt;i class="icon-user icon-white"&gt;&lt;/i&gt; {{_i}}User{{/i}}&lt;/a&gt;
-  &lt;a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"&gt;&lt;span class="caret"&gt;&lt;/span&gt;&lt;/a&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-pencil"&gt;&lt;/i&gt; {{_i}}Edit{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-trash"&gt;&lt;/i&gt; {{_i}}Delete{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-ban-circle"&gt;&lt;/i&gt; {{_i}}Ban{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="divider"&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;&lt;i class="i"&gt;&lt;/i&gt; {{_i}}Make admin{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h5>{{_i}}Button sizes{{/i}}</h5>
-          <div class="bs-docs-example">
-            <a class="btn btn-large" href="#"><i class="icon-star"></i> Star</a>
-            <a class="btn btn-small" href="#"><i class="icon-star"></i> Star</a>
-            <a class="btn btn-mini" href="#"><i class="icon-star"></i> Star</a>
-          </div>{{! /bs-docs-example }}
-<pre class="prettyprint linenums">
-&lt;a class="btn btn-large" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-&lt;a class="btn btn-small" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-&lt;a class="btn btn-mini" href="#"&gt;&lt;i class="icon-star"&gt;&lt;/i&gt; Star&lt;/a&gt;
-</pre>
-
-          <h4>{{_i}}Navigation{{/i}}</h4>
-          <div class="bs-docs-example">
-            <div class="well" style="padding: 8px 0; margin-bottom: 0;">
-              <ul class="nav nav-list">
-                <li class="active"><a href="#"><i class="icon-home icon-white"></i> {{_i}}Home{{/i}}</a></li>
-                <li><a href="#"><i class="icon-book"></i> {{_i}}Library{{/i}}</a></li>
-                <li><a href="#"><i class="icon-pencil"></i> {{_i}}Applications{{/i}}</a></li>
-                <li><a href="#"><i class="i"></i> {{_i}}Misc{{/i}}</a></li>
-              </ul>
-            </div>{{! /well }}
-          </div>{{! /bs-docs-example }}
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  &lt;li class="active"&gt;&lt;a href="#"&gt;&lt;i class="icon-home icon-white"&gt;&lt;/i&gt; {{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-book"&gt;&lt;/i&gt; {{_i}}Library{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="icon-pencil"&gt;&lt;/i&gt; {{_i}}Applications{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;&lt;i class="i"&gt;&lt;/i&gt; {{_i}}Misc{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h4>{{_i}}Form fields{{/i}}</h4>
-          <form class="bs-docs-example form-horizontal">
-            <div class="control-group">
-              <label class="control-label" for="inputIcon">{{_i}}Email address{{/i}}</label>
-              <div class="controls">
-                <div class="input-prepend">
-                  <span class="add-on"><i class="icon-envelope"></i></span><input class="span2" id="inputIcon" type="text">
-                </div>
-              </div>
-            </div>
-          </form>
-<pre class="prettyprint linenums">
-&lt;div class="control-group"&gt;
-  &lt;label class="control-label" for="inputIcon"&gt;{{_i}}Email address{{/i}}&lt;/label&gt;
-  &lt;div class="controls"&gt;
-    &lt;div class="input-prepend"&gt;
-      &lt;span class="add-on"&gt;&lt;i class="icon-envelope"&gt;&lt;/i&gt;&lt;/span&gt;
-      &lt;input class="span2" id="inputIcon" type="text"&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/components.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/components.mustache
deleted file mode 100644
index 6d3ff9be..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/components.mustache
+++ /dev/null
@@ -1,2505 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Components{{/i}}</h1>
-    <p class="lead">{{_i}}Dozens of reusable components built to provide navigation, alerts, popovers, and more.{{/i}}</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#dropdowns"><i class="icon-chevron-right"></i> {{_i}}Dropdowns{{/i}}</a></li>
-          <li><a href="#buttonGroups"><i class="icon-chevron-right"></i> {{_i}}Button groups{{/i}}</a></li>
-          <li><a href="#buttonDropdowns"><i class="icon-chevron-right"></i> {{_i}}Button dropdowns{{/i}}</a></li>
-          <li><a href="#navs"><i class="icon-chevron-right"></i> {{_i}}Navs{{/i}}</a></li>
-          <li><a href="#navbar"><i class="icon-chevron-right"></i> {{_i}}Navbar{{/i}}</a></li>
-          <li><a href="#breadcrumbs"><i class="icon-chevron-right"></i> {{_i}}Breadcrumbs{{/i}}</a></li>
-          <li><a href="#pagination"><i class="icon-chevron-right"></i> {{_i}}Pagination{{/i}}</a></li>
-          <li><a href="#labels-badges"><i class="icon-chevron-right"></i> {{_i}}Labels and badges{{/i}}</a></li>
-          <li><a href="#typography"><i class="icon-chevron-right"></i> {{_i}}Typography{{/i}}</a></li>
-          <li><a href="#thumbnails"><i class="icon-chevron-right"></i> {{_i}}Thumbnails{{/i}}</a></li>
-          <li><a href="#alerts"><i class="icon-chevron-right"></i> {{_i}}Alerts{{/i}}</a></li>
-          <li><a href="#progress"><i class="icon-chevron-right"></i> {{_i}}Progress bars{{/i}}</a></li>
-          <li><a href="#media"><i class="icon-chevron-right"></i> {{_i}}Media object{{/i}}</a></li>
-          <li><a href="#misc"><i class="icon-chevron-right"></i> {{_i}}Misc{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Dropdowns
-        ================================================== -->
-        <section id="dropdowns">
-          <div class="page-header">
-            <h1>{{_i}}Dropdown menus{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Example{{/i}}</h2>
-          <p>{{_i}}Toggleable, contextual menu for displaying lists of links. Made interactive with the <a href="./javascript.html#dropdowns">dropdown JavaScript plugin</a>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="dropdown clearfix">
-              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
-                <li><a tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                <li><a tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                <li><a tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                <li class="divider"></li>
-                <li><a tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-              </ul>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Action{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Another action{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Something else here{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li class="divider"&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Separated link{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h2>{{_i}}Markup{{/i}}</h2>
-          <p>{{_i}}Looking at just the dropdown menu, here's the required HTML. You need to wrap the dropdown's trigger and the dropdown menu within <code>.dropdown</code>, or another element that declares <code>position: relative;</code>. Then just create the menu.{{/i}}</p>
-
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;!-- Link or button to toggle dropdown --&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Action{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Another action{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Something else here{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="divider"&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Separated link{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Options{{/i}}</h2>
-          <p>{{_i}}Align menus to the right and add include additional levels of dropdowns.{{/i}}</p>
-
-          <h3>{{_i}}Aligning the menus{{/i}}</h3>
-          <p>{{_i}}Add <code>.pull-right</code> to a <code>.dropdown-menu</code> to right align the dropdown menu.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Disabled menu options{{/i}}</h3>
-          <p>{{_i}}Add <code>.disabled</code> to a <code>&lt;li&gt;</code> in the dropdown to disable the link.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="dropdown clearfix">
-              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
-                <li><a tabindex="-1" href="#">{{_i}}Regular link{{/i}}</a></li>
-                <li class="disabled"><a tabindex="-1" href="#">{{_i}}Disabled link{{/i}}</a></li>
-                <li><a tabindex="-1" href="#">{{_i}}Another link{{/i}}</a></li>
-              </ul>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Regular link{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li class="disabled"&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Disabled link{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a tabindex="-1" href="#"&gt;{{_i}}Another link{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Sub menus on dropdowns{{/i}}</h3>
-          <p>{{_i}}Add an extra level of dropdown menus, appearing on hover like those of OS X, with some simple markup additions. Add <code>.dropdown-submenu</code> to any <code>li</code> in an existing dropdown menu for automatic styling.{{/i}}</p>
-          <div class="bs-docs-example bs-docs-example-submenus">
-
-            <div class="pull-left">
-              <p class="muted">Default</p>
-              <div class="dropdown clearfix">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu">
-                    <a tabindex="-1" href="#">{{_i}}More options{{/i}}</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>{{! /.pull-left }}
-
-            <div class="pull-left">
-              <p class="muted">Dropup</p>
-              <div class="dropup">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu">
-                    <a tabindex="-1" href="#">{{_i}}More options{{/i}}</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>{{! /.pull-left }}
-
-            <div class="pull-left">
-              <p class="muted">Left submenu</p>
-              <div class="dropdown">
-                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
-                  <li><a tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li class="dropdown-submenu pull-left">
-                    <a tabindex="-1" href="#">{{_i}}More options{{/i}}</a>
-                    <ul class="dropdown-menu">
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                      <li><a tabindex="-1" href="#">{{_i}}Second level link{{/i}}</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </div>
-            </div>{{! /.pull-left }}
-
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-  ...
-  &lt;li class="dropdown-submenu"&gt;
-    &lt;a tabindex="-1" href="#"&gt;{{_i}}More options{{/i}}&lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Button Groups
-        ================================================== -->
-        <section id="buttonGroups">
-          <div class="page-header">
-            <h1>{{_i}}Button groups{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Examples{{/i}}</h2>
-          <p>{{_i}}Two basic options, along with two more specific variations.{{/i}}</p>
-
-          <h3>{{_i}}Single button group{{/i}}</h3>
-          <p>{{_i}}Wrap a series of buttons with <code>.btn</code> in <code>.btn-group</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-group" style="margin: 9px 0 5px;">
-              <button class="btn">{{_i}}Left{{/i}}</button>
-              <button class="btn">{{_i}}Middle{{/i}}</button>
-              <button class="btn">{{_i}}Right{{/i}}</button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn"&gt;Left&lt;/button&gt;
-  &lt;button class="btn"&gt;Middle&lt;/button&gt;
-  &lt;button class="btn"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Multiple button groups{{/i}}</h3>
-          <p>{{_i}}Combine sets of <code>&lt;div class="btn-group"&gt;</code> into a <code>&lt;div class="btn-toolbar"&gt;</code> for more complex components.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn">1</button>
-                <button class="btn">2</button>
-                <button class="btn">3</button>
-                <button class="btn">4</button>
-              </div>
-              <div class="btn-group">
-                <button class="btn">5</button>
-                <button class="btn">6</button>
-                <button class="btn">7</button>
-              </div>
-              <div class="btn-group">
-                <button class="btn">8</button>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-toolbar"&gt;
-  &lt;div class="btn-group"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Vertical button groups{{/i}}</h3>
-          <p>{{_i}}Make a set of buttons appear vertically stacked rather than horizontally.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-group btn-group-vertical">
-              <button type="button" class="btn"><i class="icon-align-left"></i></button>
-              <button type="button" class="btn"><i class="icon-align-center"></i></button>
-              <button type="button" class="btn"><i class="icon-align-right"></i></button>
-              <button type="button" class="btn"><i class="icon-align-justify"></i></button>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="btn-group btn-group-vertical"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h4>{{_i}}Checkbox and radio flavors{{/i}}</h4>
-          <p>{{_i}}Button groups can also function as radios, where only one button may be active, or checkboxes, where any number of buttons may be active. View <a href="./javascript.html#buttons">the JavaScript docs</a> for that.{{/i}}</p>
-
-          <h4>{{_i}}Dropdowns in button groups{{/i}}</h4>
-          <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}}Buttons with dropdowns must be individually wrapped in their own <code>.btn-group</code> within a <code>.btn-toolbar</code> for proper rendering.{{/i}}</p>
-        </section>
-
-
-
-        <!-- Split button dropdowns
-        ================================================== -->
-        <section id="buttonDropdowns">
-          <div class="page-header">
-            <h1>{{_i}}Button dropdown menus{{/i}}</h1>
-          </div>
-
-
-          <h2>{{_i}}Overview and examples{{/i}}</h2>
-          <p>{{_i}}Use any button to trigger a dropdown menu by placing it within a <code>.btn-group</code> and providing the proper menu markup.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown">{{_i}}Danger{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown">{{_i}}Warning{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-success dropdown-toggle" data-toggle="dropdown">{{_i}}Success{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-info dropdown-toggle" data-toggle="dropdown">{{_i}}Info{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown">{{_i}}Inverse{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;a class="btn dropdown-toggle" data-toggle="dropdown" href="#"&gt;
-    {{_i}}Action{{/i}}
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/a&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- {{_i}}dropdown menu links{{/i}} --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Works with all button sizes{{/i}}</h3>
-          <p>{{_i}}Button dropdowns work at any size:  <code>.btn-large</code>, <code>.btn-small</code>, or <code>.btn-mini</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn btn-large dropdown-toggle" data-toggle="dropdown">{{_i}}Large button{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-small dropdown-toggle" data-toggle="dropdown">{{_i}}Small button{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">{{_i}}Mini button{{/i}} <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>{{! /example }}
-
-          <h3>{{_i}}Requires JavaScript{{/i}}</h3>
-          <p>{{_i}}Button dropdowns require the <a href="./javascript.html#dropdowns">Bootstrap dropdown plugin</a> to function.{{/i}}</p>
-          <p>{{_i}}In some cases&mdash;like mobile&mdash;dropdown menus will extend outside the viewport. You need to resolve the alignment manually or with custom JavaScript.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Split button dropdowns{{/i}}</h2>
-          <p>{{_i}}Building on the button group styles and markup, we can easily create a split button. Split buttons feature a standard action on the left and a dropdown toggle on the right with contextual links.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group">
-                <button class="btn">{{_i}}Action{{/i}}</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-primary">{{_i}}Action{{/i}}</button>
-                <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-danger">{{_i}}Danger{{/i}}</button>
-                <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-warning">{{_i}}Warning{{/i}}</button>
-                <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-success">{{_i}}Success{{/i}}</button>
-                <button class="btn btn-success dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-info">{{_i}}Info{{/i}}</button>
-                <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group">
-                <button class="btn btn-inverse">{{_i}}Inverse{{/i}}</button>
-                <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn"&gt;{{_i}}Action{{/i}}&lt;/button&gt;
-  &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- {{_i}}dropdown menu links{{/i}} --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Sizes{{/i}}</h3>
-          <p>{{_i}}Utilize the extra button classes <code>.btn-mini</code>, <code>.btn-small</code>, or <code>.btn-large</code> for sizing.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-large">{{_i}}Large action{{/i}}</button>
-                <button class="btn btn-large dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-small">{{_i}}Small action{{/i}}</button>
-                <button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-            <div class="btn-toolbar">
-              <div class="btn-group">
-                <button class="btn btn-mini">{{_i}}Mini action{{/i}}</button>
-                <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div><!-- /btn-toolbar -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group"&gt;
-  &lt;button class="btn btn-mini"&gt;{{_i}}Action{{/i}}&lt;/button&gt;
-  &lt;button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- {{_i}}dropdown menu links{{/i}} --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Dropup menus{{/i}}</h3>
-          <p>{{_i}}Dropdown menus can also be toggled from the bottom up by adding a single class to the immediate parent of <code>.dropdown-menu</code>. It will flip the direction of the <code>.caret</code> and reposition the menu itself to move from the bottom up instead of top down.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="btn-toolbar" style="margin: 0;">
-              <div class="btn-group dropup">
-                <button class="btn">{{_i}}Dropup{{/i}}</button>
-                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-              <div class="btn-group dropup">
-                <button class="btn primary">{{_i}}Right dropup{{/i}}</button>
-                <button class="btn primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-                <ul class="dropdown-menu pull-right">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </div><!-- /btn-group -->
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group dropup"&gt;
-  &lt;button class="btn"&gt;{{_i}}Dropup{{/i}}&lt;/button&gt;
-  &lt;button class="btn dropdown-toggle" data-toggle="dropdown"&gt;
-    &lt;span class="caret"&gt;&lt;/span&gt;
-  &lt;/button&gt;
-  &lt;ul class="dropdown-menu"&gt;
-    &lt;!-- {{_i}}dropdown menu links{{/i}} --&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Nav, Tabs, & Pills
-        ================================================== -->
-        <section id="navs">
-          <div class="page-header">
-            <h1>{{_i}}Nav: tabs, pills, and lists{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Lightweight defaults{{/i}} <small>{{_i}}Same markup, different classes{{/i}}</small></h2>
-          <p>{{_i}}All nav components here&mdash;tabs, pills, and lists&mdash;<strong>share the same base markup and styles</strong> through the <code>.nav</code> class.{{/i}}</p>
-
-          <h3>{{_i}}Basic tabs{{/i}}</h3>
-          <p>{{_i}}Take a regular <code>&lt;ul&gt;</code> of links and add <code>.nav-tabs</code>:{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Profile{{/i}}</a></li>
-              <li><a href="#">{{_i}}Messages{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Basic pills{{/i}}</h3>
-          <p>{{_i}}Take that same HTML, but use <code>.nav-pills</code> instead:{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Profile{{/i}}</a></li>
-              <li><a href="#">{{_i}}Messages{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;...&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Disabled state{{/i}}</h3>
-          <p>{{_i}}For any nav component (tabs, pills, or list), add <code>.disabled</code> for <strong>gray links and no hover effects</strong>. Links will remain clickable, however, unless you remove the <code>href</code> attribute. Alternatively, you could implement custom JavaScript to prevent those clicks.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li><a href="#">{{_i}}Clickable link{{/i}}</a></li>
-              <li><a href="#">{{_i}}Clickable link{{/i}}</a></li>
-              <li class="disabled"><a href="#">{{_i}}Disabled link{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  ...
-  &lt;li class="disabled"&gt;&lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Component alignment{{/i}}</h3>
-          <p>{{_i}}To align nav links, use the <code>.pull-left</code> or <code>.pull-right</code> utility classes. Both classes will add a CSS float in the specified direction.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Stackable{{/i}}</h2>
-          <p>{{_i}}As tabs and pills are horizontal by default, just add a second class, <code>.nav-stacked</code>, to make them appear vertically stacked.{{/i}}</p>
-
-          <h3>{{_i}}Stacked tabs{{/i}}</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs nav-stacked">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Profile{{/i}}</a></li>
-              <li><a href="#">{{_i}}Messages{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs nav-stacked"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Stacked pills{{/i}}</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills nav-stacked">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Profile{{/i}}</a></li>
-              <li><a href="#">{{_i}}Messages{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills nav-stacked"&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Dropdowns{{/i}}</h2>
-          <p>{{_i}}Add dropdown menus with a little extra HTML and the <a href="./javascript.html#dropdowns">dropdowns JavaScript plugin</a>.{{/i}}</p>
-
-          <h3>{{_i}}Tabs with dropdowns{{/i}}</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-tabs">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Help{{/i}}</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a class="dropdown-toggle"
-       data-toggle="dropdown"
-       href="#"&gt;
-        {{_i}}Dropdown{{/i}}
-        &lt;b class="caret"&gt;&lt;/b&gt;
-      &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      &lt;!-- {{_i}}links{{/i}} --&gt;
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Pills with dropdowns{{/i}}</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#">{{_i}}Help{{/i}}</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li class="divider"></li>
-                  <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-pills"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a class="dropdown-toggle"
-       data-toggle="dropdown"
-       href="#"&gt;
-        {{_i}}Dropdown{{/i}}
-        &lt;b class="caret"&gt;&lt;/b&gt;
-      &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      &lt;!-- {{_i}}links{{/i}} --&gt;
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Nav lists{{/i}}</h2>
-          <p>{{_i}}A simple and easy way to build groups of nav links with optional headers. They're best used in sidebars like the Finder in OS X.{{/i}}</p>
-
-          <h3>{{_i}}Example nav list{{/i}}</h3>
-          <p>{{_i}}Take a list of links and add <code>class="nav nav-list"</code>:{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="well" style="max-width: 340px; padding: 8px 0;">
-              <ul class="nav nav-list">
-                <li class="nav-header">{{_i}}List header{{/i}}</li>
-                <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                <li><a href="#">{{_i}}Library{{/i}}</a></li>
-                <li><a href="#">{{_i}}Applications{{/i}}</a></li>
-                <li class="nav-header">{{_i}}Another list header{{/i}}</li>
-                <li><a href="#">{{_i}}Profile{{/i}}</a></li>
-                <li><a href="#">{{_i}}Settings{{/i}}</a></li>
-                <li class="divider"></li>
-                <li><a href="#">{{_i}}Help{{/i}}</a></li>
-              </ul>
-            </div> <!-- /well -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  &lt;li class="nav-header"&gt;{{_i}}List header{{/i}}&lt;/li&gt;
-  &lt;li class="active"&gt;&lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Library{{/i}}&lt;/a&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-          <p>
-            <span class="label label-info">{{_i}}Note{{/i}}</span>
-            {{_i}}For nesting within a nav list, include <code>class="nav nav-list"</code> on any nested <code>&lt;ul&gt;</code>.{{/i}}
-          </p>
-
-          <h3>{{_i}}Horizontal dividers{{/i}}</h3>
-          <p>{{_i}}Add a horizontal divider by creating an empty list item with the class <code>.divider</code>, like so:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-list"&gt;
-  ...
-  &lt;li class="divider"&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Tabbable nav{{/i}}</h2>
-          <p>{{_i}}Bring your tabs to life with a simple plugin to toggle between content via tabs. Bootstrap integrates tabbable tabs in four styles: top (default), right, bottom, and left.{{/i}}</p>
-
-          <h3>{{_i}}Tabbable example{{/i}}</h3>
-          <p>{{_i}}To make tabs tabbable, create a <code>.tab-pane</code> with unique ID for every tab and wrap them in <code>.tab-content</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="tabbable" style="margin-bottom: 18px;">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#tab1" data-toggle="tab">{{_i}}Section 1{{/i}}</a></li>
-                <li><a href="#tab2" data-toggle="tab">{{_i}}Section 2{{/i}}</a></li>
-                <li><a href="#tab3" data-toggle="tab">{{_i}}Section 3{{/i}}</a></li>
-              </ul>
-              <div class="tab-content" style="padding-bottom: 9px; border-bottom: 1px solid #ddd;">
-                <div class="tab-pane active" id="tab1">
-                  <p>{{_i}}I'm in Section 1.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="tab2">
-                  <p>{{_i}}Howdy, I'm in Section 2.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="tab3">
-                  <p>{{_i}}What up girl, this is Section 3.{{/i}}</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="tabbable"&gt; &lt;!-- Only required for left/right tabs --&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    &lt;li class="active"&gt;&lt;a href="#tab1" data-toggle="tab"&gt;{{_i}}Section 1{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#tab2" data-toggle="tab"&gt;{{_i}}Section 2{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    &lt;div class="tab-pane active" id="tab1"&gt;
-      &lt;p&gt;{{_i}}I'm in Section 1.{{/i}}&lt;/p&gt;
-    &lt;/div&gt;
-    &lt;div class="tab-pane" id="tab2"&gt;
-      &lt;p&gt;{{_i}}Howdy, I'm in Section 2.{{/i}}&lt;/p&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Fade in tabs{{/i}}</h4>
-          <p>{{_i}}To make tabs fade in, add <code>.fade</code> to each <code>.tab-pane</code>.{{/i}}</p>
-
-          <h4>{{_i}}Requires jQuery plugin{{/i}}</h4>
-          <p>{{_i}}All tabbable tabs are powered by our lightweight jQuery plugin. Read more about how to bring tabbable tabs to life <a href="./javascript.html#tabs">on the JavaScript docs page</a>.{{/i}}</p>
-
-          <h3>{{_i}}Tabbable in any direction{{/i}}</h3>
-
-          <h4>{{_i}}Tabs on the bottom{{/i}}</h4>
-          <p>{{_i}}Flip the order of the HTML and add a class to put tabs on the bottom.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-below">
-              <div class="tab-content">
-                <div class="tab-pane active" id="A">
-                  <p>{{_i}}I'm in Section A.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="B">
-                  <p>{{_i}}Howdy, I'm in Section B.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="C">
-                  <p>{{_i}}What up girl, this is Section C.{{/i}}</p>
-                </div>
-              </div>
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#A" data-toggle="tab">{{_i}}Section 1{{/i}}</a></li>
-                <li><a href="#B" data-toggle="tab">{{_i}}Section 2{{/i}}</a></li>
-                <li><a href="#C" data-toggle="tab">{{_i}}Section 3{{/i}}</a></li>
-              </ul>
-            </div> <!-- /tabbable -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-below"&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Tabs on the left{{/i}}</h4>
-          <p>{{_i}}Swap the class to put tabs on the left.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-left">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#lA" data-toggle="tab">{{_i}}Section 1{{/i}}</a></li>
-                <li><a href="#lB" data-toggle="tab">{{_i}}Section 2{{/i}}</a></li>
-                <li><a href="#lC" data-toggle="tab">{{_i}}Section 3{{/i}}</a></li>
-              </ul>
-              <div class="tab-content">
-                <div class="tab-pane active" id="lA">
-                  <p>{{_i}}I'm in Section A.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="lB">
-                  <p>{{_i}}Howdy, I'm in Section B.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="lC">
-                  <p>{{_i}}What up girl, this is Section C.{{/i}}</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-left"&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h4>{{_i}}Tabs on the right{{/i}}</h4>
-          <p>{{_i}}Swap the class to put tabs on the right.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="tabbable tabs-right">
-              <ul class="nav nav-tabs">
-                <li class="active"><a href="#rA" data-toggle="tab">{{_i}}Section 1{{/i}}</a></li>
-                <li><a href="#rB" data-toggle="tab">{{_i}}Section 2{{/i}}</a></li>
-                <li><a href="#rC" data-toggle="tab">{{_i}}Section 3{{/i}}</a></li>
-              </ul>
-              <div class="tab-content">
-                <div class="tab-pane active" id="rA">
-                  <p>{{_i}}I'm in Section A.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="rB">
-                  <p>{{_i}}Howdy, I'm in Section B.{{/i}}</p>
-                </div>
-                <div class="tab-pane" id="rC">
-                  <p>{{_i}}What up girl, this is Section C.{{/i}}</p>
-                </div>
-              </div>
-            </div> <!-- /tabbable -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="tabbable tabs-right"&gt;
-  &lt;ul class="nav nav-tabs"&gt;
-    ...
-  &lt;/ul&gt;
-  &lt;div class="tab-content"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Navbar
-        ================================================== -->
-        <section id="navbar">
-          <div class="page-header">
-            <h1>{{_i}}Navbar{{/i}}</h1>
-          </div>
-
-
-          <h2>{{_i}}Basic navbar{{/i}}</h2>
-          <p>{{_i}}To start, navbars are static (not fixed to the top) and include support for a project name and basic navigation. Place one anywhere within a <code>.container</code>, which sets the width of your site and content.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                <ul class="nav">
-                  <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                </ul>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar"&gt;
-  &lt;div class="navbar-inner"&gt;
-    &lt;a class="brand" href="#"&gt;{{_i}}Title{{/i}}&lt;/a&gt;
-    &lt;ul class="nav"&gt;
-      &lt;li class="active"&gt;&lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;a href="#"&gt;{{_i}}Link{{/i}}&lt;/a&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;a href="#"&gt;{{_i}}Link{{/i}}&lt;/a&gt;&lt;/li&gt;
-    &lt;/ul&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Navbar components{{/i}}</h2>
-
-          <h3>{{_i}}Brand{{/i}}</h3>
-          <p>{{_i}}A simple link to show your brand or project name only requires an anchor tag.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;a class="brand" href="#"&gt;{{_i}}Project name{{/i}}&lt;/a&gt;
-</pre>
-
-          <h3>{{_i}}Nav links{{/i}}</h3>
-          <p>{{_i}}Nav items are simple to add via unordered lists.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <ul class="nav">
-                  <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                </ul>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  &lt;li class="active"&gt;
-    &lt;a href="#">{{_i}}Home{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Link{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Link{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-          <p>{{_i}}You can easily add dividers to your nav links with an empty list item and a simple class. Just add this between links:{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <ul class="nav">
-                  <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                  <li class="divider-vertical"></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  <li class="divider-vertical"></li>
-                  <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  <li class="divider-vertical"></li>
-                </ul>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  ...
-  &lt;li class="divider-vertical"&gt;&lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Forms{{/i}}</h3>
-          <p>{{_i}}To properly style and position a form within the navbar, add the appropriate classes as shown below. For a default form, include <code>.navbar-form</code> and either <code>.pull-left</code> or <code>.pull-right</code> to properly align it.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <form class="navbar-form pull-left">
-                  <input type="text" class="span2">
-                  <button type="submit" class="btn">{{_i}}Submit{{/i}}</button>
-                </form>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form class="navbar-form pull-left"&gt;
-  &lt;input type="text" class="span2"&gt;
-  &lt;button type="submit" class="btn"&gt;{{_i}}Submit{{/i}}&lt;/button&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>{{_i}}Search form{{/i}}</h3>
-          <p>{{_i}}For a more customized search form, add <code>.navbar-search</code> to the <code>form</code> and <code>.search-query</code> to the input for specialized styles in the navbar.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <form class="navbar-search pull-left">
-                  <input type="text" class="search-query" placeholder="{{_i}}Search{{/i}}">
-                </form>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;form class="navbar-search pull-left"&gt;
-  &lt;input type="text" class="search-query" placeholder="{{_i}}Search{{/i}}"&gt;
-&lt;/form&gt;
-</pre>
-
-          <h3>{{_i}}Component alignment{{/i}}</h3>
-          <p>{{_i}}Align nav links, search form, or text, use the <code>.pull-left</code> or <code>.pull-right</code> utility classes. Both classes will add a CSS float in the specified direction.{{/i}}</p>
-
-          <h3>{{_i}}Using dropdowns{{/i}}</h3>
-          <p>{{_i}}Add dropdowns and dropups to the nav with a bit of markup and the <a href="./javascript.html#dropdowns">dropdowns JavaScript plugin</a>.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav"&gt;
-  &lt;li class="dropdown"&gt;
-    &lt;a href="#" class="dropdown-toggle" data-toggle="dropdown">
-      {{_i}}Account{{/i}}
-      &lt;b class="caret"&gt;&lt;/b&gt;
-    &lt;/a&gt;
-    &lt;ul class="dropdown-menu"&gt;
-      ...
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-          <p>{{_i}}Visit the <a href="./javascript.html#dropdowns">JavaScript dropdowns documentation</a> for more markup and information on calling dropdowns.{{/i}}</p>
-
-          <h3>{{_i}}Text{{/i}}</h3>
-          <p>{{_i}}Wrap strings of text in an element with <code>.navbar-text</code>, usually on a <code>&lt;p&gt;</code> tag for proper leading and color.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Optional display variations{{/i}}</h2>
-          <p>{{_i}}Fix the navbar to the top or bottom of the viewport with an additional class on the outermost div, <code>.navbar</code>.{{/i}}</p>
-
-          <h3>Fixed to top</h3>
-          <p>{{_i}}Add <code>.navbar-fixed-top</code> and remember to account for the hidden area underneath it by adding at least 40px <code>padding</code> to the <code>&lt;body&gt;</code>. Be sure to add this after the core Bootstrap CSS and before the optional responsive CSS.{{/i}}</p>
-          <div class="bs-docs-example bs-navbar-top-example">
-            <div class="navbar navbar-fixed-top" style="position: absolute;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-fixed-top"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>Fixed to bottom</h3>
-          <p>{{_i}}Add <code>.navbar-fixed-bottom</code> instead.{{/i}}</p>
-          <div class="bs-docs-example bs-navbar-bottom-example">
-            <div class="navbar navbar-fixed-bottom" style="position: absolute;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-fixed-bottom"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Static top navbar{{/i}}</h3>
-          <p>{{_i}}Create a full-width navbar that scrolls away with the page by adding <code>.navbar-static-top</code>. Unlike the <code>.navbar-fixed-top</code> class, you do not need to change any padding on the <code>body</code>.{{/i}}</p>
-          <div class="bs-docs-example bs-navbar-top-example">
-            <div class="navbar navbar-static-top" style="margin: -1px -1px 0;">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto; padding: 0 20px;">
-                  <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                  <ul class="nav">
-                    <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                    <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-static-top"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Responsive navbar{{/i}}</h2>
-          <p>{{_i}}To implement a collapsing responsive navbar, wrap your navbar content in a containing div, <code>.nav-collapse.collapse</code>, and add the navbar toggle button, <code>.btn-navbar</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar">
-              <div class="navbar-inner">
-                <div class="container">
-                  <a class="btn btn-navbar" data-toggle="collapse" data-target=".navbar-responsive-collapse">
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                  </a>
-                  <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                  <div class="nav-collapse collapse navbar-responsive-collapse">
-                    <ul class="nav">
-                      <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                          <li class="divider"></li>
-                          <li class="nav-header">Nav header</li>
-                          <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                          <li><a href="#">{{_i}}One more separated link{{/i}}</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                    <form class="navbar-search pull-left" action="">
-                      <input type="text" class="search-query span2" placeholder="Search">
-                    </form>
-                    <ul class="nav pull-right">
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li class="divider-vertical"></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                          <li class="divider"></li>
-                          <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                  </div><!-- /.nav-collapse -->
-                </div>
-              </div><!-- /navbar-inner -->
-            </div><!-- /navbar -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar"&gt;
-  &lt;div class="navbar-inner"&gt;
-    &lt;div class="container"&gt;
-
-      &lt;!-- {{_i}}.btn-navbar is used as the toggle for collapsed navbar content{{/i}} --&gt;
-      &lt;a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-        &lt;span class="icon-bar"&gt;&lt;/span&gt;
-      &lt;/a&gt;
-
-      &lt;!-- {{_i}}Be sure to leave the brand out there if you want it shown{{/i}} --&gt;
-      &lt;a class="brand" href="#"&gt;{{_i}}Project name{{/i}}&lt;/a&gt;
-
-      &lt;!-- {{_i}}Everything you want hidden at 940px or less, place within here{{/i}} --&gt;
-      &lt;div class="nav-collapse collapse"&gt;
-        &lt;!-- .nav, .navbar-search, .navbar-form, etc --&gt;
-      &lt;/div&gt;
-
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-          <div class="alert alert-info">
-            <strong>{{_i}}Heads up!{{/i}}</strong> The responsive navbar requires the <a href="./javascript.html#collapse">collapse plugin</a> and <a href="./scaffolding.html#responsive">responsive Bootstrap CSS file</a>.
-          </div>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Inverted variation{{/i}}</h2>
-          <p>{{_i}}Modify the look of the navbar by adding <code>.navbar-inverse</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="navbar navbar-inverse" style="position: static;">
-              <div class="navbar-inner">
-                <div class="container">
-                  <a class="btn btn-navbar" data-toggle="collapse" data-target=".navbar-inverse-collapse">
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                  </a>
-                  <a class="brand" href="#">{{_i}}Title{{/i}}</a>
-                  <div class="nav-collapse collapse navbar-inverse-collapse">
-                    <ul class="nav">
-                      <li class="active"><a href="#">{{_i}}Home{{/i}}</a></li>
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                          <li class="divider"></li>
-                          <li class="nav-header">Nav header</li>
-                          <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                          <li><a href="#">{{_i}}One more separated link{{/i}}</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                    <form class="navbar-search pull-left" action="">
-                      <input type="text" class="search-query span2" placeholder="Search">
-                    </form>
-                    <ul class="nav pull-right">
-                      <li><a href="#">{{_i}}Link{{/i}}</a></li>
-                      <li class="divider-vertical"></li>
-                      <li class="dropdown">
-                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                        <ul class="dropdown-menu">
-                          <li><a href="#">{{_i}}Action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Another action{{/i}}</a></li>
-                          <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
-                          <li class="divider"></li>
-                          <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
-                        </ul>
-                      </li>
-                    </ul>
-                  </div><!-- /.nav-collapse -->
-                </div>
-              </div><!-- /navbar-inner -->
-            </div><!-- /navbar -->
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="navbar navbar-inverse"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Breadcrumbs
-        ================================================== -->
-        <section id="breadcrumbs">
-          <div class="page-header">
-            <h1>{{_i}}Breadcrumbs{{/i}} <small></small></h1>
-          </div>
-
-          <h2>{{_i}}Examples{{/i}}</h2>
-          <p>{{_i}}A single example shown as it might be displayed across multiple pages.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="breadcrumb">
-              <li class="active">{{_i}}Home{{/i}}</li>
-            </ul>
-            <ul class="breadcrumb">
-              <li><a href="#">{{_i}}Home{{/i}}</a> <span class="divider">/</span></li>
-              <li class="active">{{_i}}Library{{/i}}</li>
-            </ul>
-            <ul class="breadcrumb" style="margin-bottom: 5px;">
-              <li><a href="#">{{_i}}Home{{/i}}</a> <span class="divider">/</span></li>
-              <li><a href="#">{{_i}}Library{{/i}}</a> <span class="divider">/</span></li>
-              <li class="active">{{_i}}Data{{/i}}</li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="breadcrumb"&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Home{{/i}}&lt;/a&gt; &lt;span class="divider"&gt;/&lt;/span&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Library{{/i}}&lt;/a&gt; &lt;span class="divider"&gt;/&lt;/span&gt;&lt;/li&gt;
-  &lt;li class="active"&gt;{{_i}}Data{{/i}}&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Pagination
-        ================================================== -->
-        <section id="pagination">
-          <div class="page-header">
-            <h1>{{_i}}Pagination{{/i}} <small>{{_i}}Two options for paging through content{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Standard pagination{{/i}}</h2>
-          <p>{{_i}}Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="pagination">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li&gt;&lt;a href="#"&gt;Prev&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;2&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;3&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;4&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;5&lt;/a&gt;&lt;/li&gt;
-    &lt;li&gt;&lt;a href="#"&gt;Next&lt;/a&gt;&lt;/li&gt;
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Options{{/i}}</h2>
-
-          <h3>{{_i}}Disabled and active states{{/i}}</h3>
-          <p>{{_i}}Links are customizable for different circumstances. Use <code>.disabled</code> for unclickable links and <code>.active</code> to indicate the current page.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-centered">
-              <ul>
-                <li class="disabled"><a href="#">&laquo;</a></li>
-                <li class="active"><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li class="disabled"&gt;&lt;a href="#"&gt;&amp;laquo;&lt;/a&gt;&lt;/li&gt;
-    &lt;li class="active"&gt;&lt;a href="#"&gt;1&lt;/a&gt;&lt;/li&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-          <p>{{_i}}You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    &lt;li class="disabled"&gt;&lt;span&gt;&amp;laquo;&lt;/span&gt;&lt;/li&gt;
-    &lt;li class="active"&gt;&lt;span&gt;1&lt;/span&gt;&lt;/li&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Sizes{{/i}}</h3>
-          <p>{{_i}}Fancy larger or smaller pagination? Add <code>.pagination-large</code>, <code>.pagination-small</code>, or <code>.pagination-mini</code> for additional sizes.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-large">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-            <div class="pagination">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-            <div class="pagination pagination-small">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-            <div class="pagination pagination-mini">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-large"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination pagination-small"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-&lt;div class="pagination pagination-mini"&gt;
-  &lt;ul&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Alignment{{/i}}</h3>
-          <p>{{_i}}Add one of two optional classes to change the alignment of pagination links: <code>.pagination-centered</code> and <code>.pagination-right</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-centered">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-             </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-centered"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <div class="bs-docs-example">
-            <div class="pagination pagination-right">
-              <ul>
-                <li><a href="#">&laquo;</a></li>
-                <li><a href="#">1</a></li>
-                <li><a href="#">2</a></li>
-                <li><a href="#">3</a></li>
-                <li><a href="#">4</a></li>
-                <li><a href="#">5</a></li>
-                <li><a href="#">&raquo;</a></li>
-              </ul>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="pagination pagination-right"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Pager{{/i}}</h2>
-          <p>{{_i}}Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.{{/i}}</p>
-
-          <h3>{{_i}}Default example{{/i}}</h3>
-          <p>{{_i}}By default, the pager centers links.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li><a href="#">{{_i}}Previous{{/i}}</a></li>
-              <li><a href="#">{{_i}}Next{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Previous{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#"&gt;{{_i}}Next{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Aligned links{{/i}}</h3>
-          <p>{{_i}}Alternatively, you can align each link to the sides:{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li class="previous"><a href="#">{{_i}}&larr; Older{{/i}}</a></li>
-              <li class="next"><a href="#">{{_i}}Newer &rarr;{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li class="previous"&gt;
-    &lt;a href="#"&gt;{{_i}}&amp;larr; Older{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-  &lt;li class="next"&gt;
-    &lt;a href="#"&gt;{{_i}}Newer &amp;rarr;{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-          <h3>{{_i}}Optional disabled state{{/i}}</h3>
-          <p>{{_i}}Pager links also use the general <code>.disabled</code> utility class from the pagination.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="pager">
-              <li class="previous disabled"><a href="#">{{_i}}&larr; Older{{/i}}</a></li>
-              <li class="next"><a href="#">{{_i}}Newer &rarr;{{/i}}</a></li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="pager"&gt;
-  &lt;li class="previous disabled"&gt;
-    &lt;a href="#"&gt;{{_i}}&amp;larr; Older{{/i}}&lt;/a&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Labels and badges
-        ================================================== -->
-        <section id="labels-badges">
-          <div class="page-header">
-            <h1>{{_i}}Labels and badges{{/i}}</h1>
-          </div>
-          <h3>{{_i}}Labels{{/i}}</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>{{_i}}Labels{{/i}}</th>
-                <th>{{_i}}Markup{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  <span class="label">{{_i}}Default{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label"&gt;{{_i}}Default{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-success">{{_i}}Success{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-success"&gt;{{_i}}Success{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-warning">{{_i}}Warning{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-warning"&gt;{{_i}}Warning{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-important">{{_i}}Important{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-important"&gt;{{_i}}Important{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-info">{{_i}}Info{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-info"&gt;{{_i}}Info{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  <span class="label label-inverse">{{_i}}Inverse{{/i}}</span>
-                </td>
-                <td>
-                  <code>&lt;span class="label label-inverse"&gt;{{_i}}Inverse{{/i}}&lt;/span&gt;</code>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>{{_i}}Badges{{/i}}</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>{{_i}}Name{{/i}}</th>
-                <th>{{_i}}Example{{/i}}</th>
-                <th>{{_i}}Markup{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>
-                  {{_i}}Default{{/i}}
-                </td>
-                <td>
-                  <span class="badge">1</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge"&gt;1&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  {{_i}}Success{{/i}}
-                </td>
-                <td>
-                  <span class="badge badge-success">2</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-success"&gt;2&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  {{_i}}Warning{{/i}}
-                </td>
-                <td>
-                  <span class="badge badge-warning">4</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-warning"&gt;4&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  {{_i}}Important{{/i}}
-                </td>
-                <td>
-                  <span class="badge badge-important">6</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-important"&gt;6&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  {{_i}}Info{{/i}}
-                </td>
-                <td>
-                  <span class="badge badge-info">8</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-info"&gt;8&lt;/span&gt;</code>
-                </td>
-              </tr>
-              <tr>
-                <td>
-                  {{_i}}Inverse{{/i}}
-                </td>
-                <td>
-                  <span class="badge badge-inverse">10</span>
-                </td>
-                <td>
-                  <code>&lt;span class="badge badge-inverse"&gt;10&lt;/span&gt;</code>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>{{_i}}Easily collapsible{{/i}}</h3>
-          <p>{{_i}}For easy implementation, labels and badges will simply collapse (via CSS's <code>:empty</code> selector) when no content exists within.{{/i}}</p>
-
-        </section>
-
-
-
-        <!-- Typographic components
-        ================================================== -->
-        <section id="typography">
-          <div class="page-header">
-            <h1>{{_i}}Typographic components{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Hero unit{{/i}}</h2>
-          <p>{{_i}}A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="hero-unit">
-              <h1>{{_i}}Hello, world!{{/i}}</h1>
-              <p>{{_i}}This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.{{/i}}</p>
-              <p><a class="btn btn-primary btn-large">{{_i}}Learn more{{/i}}</a></p>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="hero-unit"&gt;
-  &lt;h1&gt;{{_i}}Heading{{/i}}&lt;/h1&gt;
-  &lt;p&gt;{{_i}}Tagline{{/i}}&lt;/p&gt;
-  &lt;p&gt;
-    &lt;a class="btn btn-primary btn-large"&gt;
-      {{_i}}Learn more{{/i}}
-    &lt;/a&gt;
-  &lt;/p&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Page header{{/i}}</h2>
-          <p>{{_i}}A simple shell for an <code>h1</code> to appropriately space out and segment sections of content on a page. It can utilize the <code>h1</code>'s default <code>small</code>, element as well most other components (with additional styles).{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="page-header">
-              <h1>{{_i}}Example page header{{/i}} <small>{{_i}}Subtext for header{{/i}}</small></h1>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="page-header"&gt;
-  &lt;h1&gt;{{_i}}Example page header{{/i}} &lt;small&gt;{{_i}}Subtext for header{{/i}}&lt;/small&gt;&lt;/h1&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-        <!-- Thumbnails
-        ================================================== -->
-        <section id="thumbnails">
-          <div class="page-header">
-            <h1>{{_i}}Thumbnails{{/i}} <small>{{_i}}Grids of images, videos, text, and more{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Default thumbnails{{/i}}</h2>
-          <p>{{_i}}By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.{{/i}}</p>
-          <div class="row-fluid">
-            <ul class="thumbnails">
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-              <li class="span3">
-                <a href="#" class="thumbnail">
-                  <img data-src="holder.js/260x180" alt="">
-                </a>
-              </li>
-            </ul>
-          </div>
-
-          <h2>{{_i}}Highly customizable{{/i}}</h2>
-          <p>{{_i}}With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.{{/i}}</p>
-          <div class="row-fluid">
-            <ul class="thumbnails">
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>{{_i}}Thumbnail label{{/i}}</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">{{_i}}Action{{/i}}</a> <a href="#" class="btn">{{_i}}Action{{/i}}</a></p>
-                  </div>
-                </div>
-              </li>
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>{{_i}}Thumbnail label{{/i}}</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">{{_i}}Action{{/i}}</a> <a href="#" class="btn">{{_i}}Action{{/i}}</a></p>
-                  </div>
-                </div>
-              </li>
-              <li class="span4">
-                <div class="thumbnail">
-                  <img data-src="holder.js/300x200" alt="">
-                  <div class="caption">
-                    <h3>{{_i}}Thumbnail label{{/i}}</h3>
-                    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    <p><a href="#" class="btn btn-primary">{{_i}}Action{{/i}}</a> <a href="#" class="btn">{{_i}}Action{{/i}}</a></p>
-                  </div>
-                </div>
-              </li>
-            </ul>
-          </div>
-
-          <h3>{{_i}}Why use thumbnails{{/i}}</h3>
-          <p>{{_i}}Thumbnails (previously <code>.media-grid</code> up until v1.4) are great for grids of photos or videos, image search results, retail products, portfolios, and much more. They can be links or static content.{{/i}}</p>
-
-          <h3>{{_i}}Simple, flexible markup{{/i}}</h3>
-          <p>{{_i}}Thumbnail markup is simple&mdash;a <code>ul</code> with any number of <code>li</code> elements is all that is required. It's also super flexible, allowing for any type of content with just a bit more markup to wrap your contents.{{/i}}</p>
-
-          <h3>{{_i}}Uses grid column sizes{{/i}}</h3>
-          <p>{{_i}}Lastly, the thumbnails component uses existing grid system classes&mdash;like <code>.span2</code> or <code>.span3</code>&mdash;for control of thumbnail dimensions.{{/i}}</p>
-
-          <h2>{{_i}}Markup{{/i}}</h2>
-          <p>{{_i}}As mentioned previously, the required markup for thumbnails is light and straightforward. Here's a look at the default setup <strong>for linked images</strong>:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="thumbnails"&gt;
-  &lt;li class="span4"&gt;
-    &lt;a href="#" class="thumbnail"&gt;
-      &lt;img data-src="holder.js/300x200" alt=""&gt;
-    &lt;/a&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-          <p>{{_i}}For custom HTML content in thumbnails, the markup changes slightly. To allow block level content anywhere, we swap the <code>&lt;a&gt;</code> for a <code>&lt;div&gt;</code> like so:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="thumbnails"&gt;
-  &lt;li class="span4"&gt;
-    &lt;div class="thumbnail"&gt;
-      &lt;img data-src="holder.js/300x200" alt=""&gt;
-      &lt;h3&gt;{{_i}}Thumbnail label{{/i}}&lt;/h3&gt;
-      &lt;p&gt;{{_i}}Thumbnail caption...{{/i}}&lt;/p&gt;
-    &lt;/div&gt;
-  &lt;/li&gt;
-  ...
-&lt;/ul&gt;
-</pre>
-
-          <h2>{{_i}}More examples{{/i}}</h2>
-          <p>{{_i}}Explore all your options with the various grid classes available to you. You can also mix and match different sizes.{{/i}}</p>
-          <ul class="thumbnails">
-            <li class="span4">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/360x270" alt="">
-              </a>
-            </li>
-            <li class="span3">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/260x120" alt="">
-              </a>
-            </li>
-            <li class="span2">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/160x120" alt="">
-              </a>
-            </li>
-            <li class="span3">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/260x120" alt="">
-              </a>
-            </li>
-            <li class="span2">
-              <a href="#" class="thumbnail">
-                <img data-src="holder.js/160x120" alt="">
-              </a>
-            </li>
-          </ul>
-
-        </section>
-
-
-
-
-        <!-- Alerts
-        ================================================== -->
-        <section id="alerts">
-          <div class="page-header">
-            <h1>{{_i}}Alerts{{/i}} <small>{{_i}}Styles for success, warning, and error messages{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Default alert{{/i}}</h2>
-          <p>{{_i}}Wrap any text and an optional dismiss button in <code>.alert</code> for a basic warning alert message.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="alert">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>{{_i}}Warning!{{/i}}</strong> {{_i}}Best check yo self, you're not looking too good.{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert"&gt;
-  &lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;
-  &lt;strong&gt;{{_i}}Warning!{{/i}}&lt;/strong&gt; {{_i}}Best check yo self, you're not looking too good.{{/i}}
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Dismiss buttons{{/i}}</h3>
-          <p>{{_i}}Mobile Safari and Mobile Opera browsers, in addition to the <code>data-dismiss="alert"</code> attribute, require an <code>href="#"</code> for the dismissal of alerts when using an <code>&lt;a&gt;</code> tag.{{/i}}</p>
-          <pre class="prettyprint linenums">&lt;a href="#" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/a&gt;</pre>
-          <p>{{_i}}Alternatively, you may use a <code>&lt;button&gt;</code> element with the data attribute, which we have opted to do for our docs. When using <code>&lt;button&gt;</code>, you must include <code>type="button"</code> or your forms may not submit.{{/i}}</p>
-          <pre class="prettyprint linenums">&lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;</pre>
-
-          <h3>{{_i}}Dismiss alerts via JavaScript{{/i}}</h3>
-          <p>{{_i}}Use the <a href="./javascript.html#alerts">alerts jQuery plugin</a> for quick and easy dismissal of alerts.{{/i}}</p>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Options{{/i}}</h2>
-          <p>{{_i}}For longer messages, increase the padding on the top and bottom of the alert wrapper by adding <code>.alert-block</code>.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="alert alert-block">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <h4>{{_i}}Warning!{{/i}}</h4>
-              <p>{{_i}}Best check yo self, you're not looking too good.{{/i}} Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-block"&gt;
-  &lt;button type="button" class="close" data-dismiss="alert"&gt;&amp;times;&lt;/button&gt;
-  &lt;h4&gt;{{_i}}Warning!{{/i}}&lt;/h4&gt;
-  {{_i}}Best check yo self, you're not...{{/i}}
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Contextual alternatives{{/i}}</h2>
-          <p>{{_i}}Add optional classes to change an alert's connotation.{{/i}}</p>
-
-          <h3>{{_i}}Error or danger{{/i}}</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-error">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>{{_i}}Oh snap!{{/i}}</strong> {{_i}}Change a few things up and try submitting again.{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-error"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Success{{/i}}</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-success">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>{{_i}}Well done!{{/i}}</strong> {{_i}}You successfully read this important alert message.{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-success"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Information{{/i}}</h3>
-          <div class="bs-docs-example">
-            <div class="alert alert-info">
-              <button type="button" class="close" data-dismiss="alert">&times;</button>
-              <strong>{{_i}}Heads up!{{/i}}</strong> {{_i}}This alert needs your attention, but it's not super important.{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="alert alert-info"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Progress bars
-        ================================================== -->
-        <section id="progress">
-          <div class="page-header">
-            <h1>{{_i}}Progress bars{{/i}} <small>{{_i}}For loading, redirecting, or action status{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Examples and markup{{/i}}</h2>
-
-          <h3>{{_i}}Basic{{/i}}</h3>
-          <p>{{_i}}Default progress bar with a vertical gradient.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="progress">
-              <div class="bar" style="width: 60%;"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress"&gt;
-  &lt;div class="bar" style="width: 60%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Striped{{/i}}</h3>
-          <p>{{_i}}Uses a gradient to create a striped effect. Not available in IE7-8.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-striped">
-              <div class="bar" style="width: 20%;"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-striped"&gt;
-  &lt;div class="bar" style="width: 20%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Animated{{/i}}</h3>
-          <p>{{_i}}Add <code>.active</code> to <code>.progress-striped</code> to animate the stripes right to left. Not available in all versions of IE.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-striped active">
-              <div class="bar" style="width: 45%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-striped active"&gt;
-  &lt;div class="bar" style="width: 40%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>Stacked</h3>
-          <p>Place multiple bars into the same <code>.progress</code> to stack them.</p>
-          <div class="bs-docs-example">
-            <div class="progress">
-              <div class="bar bar-success" style="width: 35%"></div>
-              <div class="bar bar-warning" style="width: 20%"></div>
-              <div class="bar bar-danger" style="width: 10%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress"&gt;
-  &lt;div class="bar bar-success" style="width: 35%;"&gt;&lt;/div&gt;
-  &lt;div class="bar bar-warning" style="width: 20%;"&gt;&lt;/div&gt;
-  &lt;div class="bar bar-danger" style="width: 10%;"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Options{{/i}}</h2>
-
-          <h3>{{_i}}Additional colors{{/i}}</h3>
-          <p>{{_i}}Progress bars use some of the same button and alert classes for consistent styles.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-info" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 20%"></div>
-            </div>
-            <div class="progress progress-success" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 40%"></div>
-            </div>
-            <div class="progress progress-warning" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 60%"></div>
-            </div>
-            <div class="progress progress-danger">
-              <div class="bar" style="width: 80%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-info"&gt;
-  &lt;div class="bar" style="width: 20%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-success"&gt;
-  &lt;div class="bar" style="width: 40%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-warning"&gt;
-  &lt;div class="bar" style="width: 60%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-danger"&gt;
-  &lt;div class="bar" style="width: 80%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Striped bars{{/i}}</h3>
-          <p>{{_i}}Similar to the solid colors, we have varied striped progress bars.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="progress progress-info progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 20%"></div>
-            </div>
-            <div class="progress progress-success progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 40%"></div>
-            </div>
-            <div class="progress progress-warning progress-striped" style="margin-bottom: 9px;">
-              <div class="bar" style="width: 60%"></div>
-            </div>
-            <div class="progress progress-danger progress-striped">
-              <div class="bar" style="width: 80%"></div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="progress progress-info progress-striped"&gt;
-  &lt;div class="bar" style="width: 20%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-success progress-striped"&gt;
-  &lt;div class="bar" style="width: 40%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-warning progress-striped"&gt;
-  &lt;div class="bar" style="width: 60%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="progress progress-danger progress-striped"&gt;
-  &lt;div class="bar" style="width: 80%"&gt;&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Browser support{{/i}}</h2>
-          <p>{{_i}}Progress bars use CSS3 gradients, transitions, and animations to achieve all their effects. These features are not supported in IE7-9 or older versions of Firefox.{{/i}}</p>
-          <p>{{_i}}Versions earlier than Internet Explorer 10 and Opera 12 do not support animations.{{/i}}</p>
-
-        </section>
-
-
-
-
-        <!-- Media object
-        ================================================== -->
-        <section id="media">
-          <div class="page-header">
-            <h1>{{_i}}Media object{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.{{/i}}</p>
-
-          <h2>{{_i}}Default example{{/i}}</h2>
-          <p>{{_i}}The default media allow to float a media object (images, video, audio) to the left or right of a content block.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="media">
-              <a class="pull-left" href="#">
-                <img class="media-object" data-src="holder.js/64x64">
-              </a>
-              <div class="media-body">
-                <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-                Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-              </div>
-            </div>
-            <div class="media">
-              <a class="pull-left" href="#">
-                <img class="media-object" data-src="holder.js/64x64">
-              </a>
-              <div class="media-body">
-                <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-                Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-                <div class="media">
-                  <a class="pull-left" href="#">
-                    <img class="media-object" data-src="holder.js/64x64">
-                  </a>
-                  <div class="media-body">
-                    <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-                    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>{{! /.bs-docs-example }}
-<pre class="prettyprint linenums">
-&lt;div class="media"&gt;
-  &lt;a class="pull-left" href="#"&gt;
-    &lt;img class="media-object" data-src="holder.js/64x64"&gt;
-  &lt;/a&gt;
-  &lt;div class="media-body"&gt;
-    &lt;h4 class="media-heading"&gt;{{_i}}Media heading{{/i}}&lt;/h4&gt;
-    ...
-
-    &lt;!-- Nested media object --&gt;
-    &lt;div class="media"&gt;
-      ...
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Media list{{/i}}</h2>
-          <p>{{_i}}With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul class="media-list">
-              <li class="media">
-                <a class="pull-left" href="#">
-                  <img class="media-object" data-src="holder.js/64x64">
-                </a>
-                <div class="media-body">
-                  <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-                  <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.</p>
-                  <!-- Nested media object -->
-                  <div class="media">
-                    <a class="pull-left" href="#">
-                      <img class="media-object" data-src="holder.js/64x64">
-                    </a>
-                    <div class="media-body">
-                      <h4 class="media-heading">{{_i}}Nested media heading{{/i}}</h4>
-                      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                      <!-- Nested media object -->
-                      <div class="media">
-                        <a class="pull-left" href="#">
-                          <img class="media-object" data-src="holder.js/64x64">
-                        </a>
-                        <div class="media-body">
-                          <h4 class="media-heading">{{_i}}Nested media heading{{/i}}</h4>
-                          Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <!-- Nested media object -->
-                  <div class="media">
-                    <a class="pull-left" href="#">
-                      <img class="media-object" data-src="holder.js/64x64">
-                    </a>
-                    <div class="media-body">
-                      <h4 class="media-heading">{{_i}}Nested media heading{{/i}}</h4>
-                      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                    </div>
-                  </div>
-                </div>
-              </li>
-              <li class="media">
-                <a class="pull-right" href="#">
-                  <img class="media-object" data-src="holder.js/64x64">
-                </a>
-                <div class="media-body">
-                  <h4 class="media-heading">{{_i}}Media heading{{/i}}</h4>
-                  Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
-                </div>
-              </li>
-            </ul>
-          </div>
-<pre class="prettyprint linenums">
-&lt;ul class="media-list"&gt;
-  &lt;li class="media"&gt;
-    &lt;a class="pull-left" href="#"&gt;
-      &lt;img class="media-object" data-src="holder.js/64x64"&gt;
-    &lt;/a&gt;
-    &lt;div class="media-body"&gt;
-      &lt;h4 class="media-heading"&gt;{{_i}}Media heading{{/i}}&lt;/h4&gt;
-      ...
-
-      &lt;!-- Nested media object --&gt;
-      &lt;div class="media"&gt;
-        ...
-     &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-</pre>
-
-</section>
-
-
-
-
-
-        <!-- Miscellaneous
-        ================================================== -->
-        <section id="misc">
-          <div class="page-header">
-            <h1>{{_i}}Miscellaneous{{/i}} <small>{{_i}}Lightweight utility components{{/i}}</small></h1>
-          </div>
-
-          <h2>{{_i}}Wells{{/i}}</h2>
-          <p>{{_i}}Use the well as a simple effect on an element to give it an inset effect.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="well">
-              {{_i}}Look, I'm in a well!{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <h3>{{_i}}Optional classes{{/i}}</h3>
-          <p>{{_i}}Control padding and rounded corners with two optional modifier classes.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div class="well well-large">
-              {{_i}}Look, I'm in a well!{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well well-large"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-          <div class="bs-docs-example">
-            <div class="well well-small">
-              {{_i}}Look, I'm in a well!{{/i}}
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="well well-small"&gt;
-  ...
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Close icon{{/i}}</h2>
-          <p>{{_i}}Use the generic close icon for dismissing content like modals and alerts.{{/i}}</p>
-          <div class="bs-docs-example">
-            <p><button class="close" style="float: none;">&times;</button></p>
-          </div>
-          <pre class="prettyprint linenums">&lt;button class="close"&gt;&amp;times;&lt;/button&gt;</pre>
-          <p>{{_i}}iOS devices require an <code>href="#"</code> for click events if you would rather use an anchor.{{/i}}</p>
-          <pre class="prettyprint linenums">&lt;a class="close" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
-
-          <h2>{{_i}}Helper classes{{/i}}</h2>
-          <p>{{_i}}Simple, focused classes for small display or behavior tweaks.{{/i}}</p>
-
-          <h4>{{_i}}.pull-left{{/i}}</h4>
-          <p>{{_i}}Float an element left{{/i}}</p>
-<pre class="prettyprint linenums">
-class="pull-left"
-</pre>
-<pre class="prettyprint linenums">
-.pull-left {
-  float: left;
-}
-</pre>
-
-          <h4>{{_i}}.pull-right{{/i}}</h4>
-          <p>{{_i}}Float an element right{{/i}}</p>
-<pre class="prettyprint linenums">
-class="pull-right"
-</pre>
-<pre class="prettyprint linenums">
-.pull-right {
-  float: right;
-}
-</pre>
-
-          <h4>{{_i}}.muted{{/i}}</h4>
-          <p>{{_i}}Change an element's color to <code>#999</code>{{/i}}</p>
-<pre class="prettyprint linenums">
-class="muted"
-</pre>
-<pre class="prettyprint linenums">
-.muted {
-  color: #999;
-}
-</pre>
-
-          <h4>{{_i}}.clearfix{{/i}}</h4>
-          <p>{{_i}}Clear the <code>float</code> on any element{{/i}}</p>
-<pre class="prettyprint linenums">
-class="clearfix"
-</pre>
-<pre class="prettyprint linenums">
-.clearfix {
-  *zoom: 1;
-  &:before,
-  &:after {
-    display: table;
-    content: "";
-  }
-  &:after {
-    clear: both;
-  }
-}
-</pre>
-
-        </section>
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/customize.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/customize.mustache
deleted file mode 100644
index 8d8a2f92..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/customize.mustache
+++ /dev/null
@@ -1,393 +0,0 @@
-<!-- Masthead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Customize and download{{/i}}</h1>
-    <p class="lead">{{_i}}<a href="https://github.com/twitter/bootstrap/zipball/master">Download Bootstrap</a> or customize variables, components, JavaScript plugins, and more.{{/i}}</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#components"><i class="icon-chevron-right"></i> {{_i}}1. Choose components{{/i}}</a></li>
-          <li><a href="#plugins"><i class="icon-chevron-right"></i> {{_i}}2. Select jQuery plugins{{/i}}</a></li>
-          <li><a href="#variables"><i class="icon-chevron-right"></i> {{_i}}3. Customize variables{{/i}}</a></li>
-          <li><a href="#download"><i class="icon-chevron-right"></i> {{_i}}4. Download{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-        <!-- Customize form
-        ================================================== -->
-        <form>
-          <section class="download" id="components">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">{{_i}}Toggle all{{/i}}</a>
-              <h1>
-                {{_i}}1. Choose components{{/i}}
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <h3>{{_i}}Scaffolding{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="reset.less"> {{_i}}Normalize and reset{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="scaffolding.less"> {{_i}}Body type and links{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="grid.less"> {{_i}}Grid system{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="layouts.less"> {{_i}}Layouts{{/i}}</label>
-                <h3>{{_i}}Base CSS{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="type.less"> {{_i}}Headings, body, etc{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="code.less"> {{_i}}Code and pre{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="labels-badges.less"> {{_i}}Labels and badges{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="tables.less"> {{_i}}Tables{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="forms.less"> {{_i}}Forms{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="buttons.less"> {{_i}}Buttons{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="sprites.less"> {{_i}}Icons{{/i}}</label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h3>{{_i}}Components{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="button-groups.less"> {{_i}}Button groups and dropdowns{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="navs.less"> {{_i}}Navs, tabs, and pills{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="navbar.less"> {{_i}}Navbar{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="breadcrumbs.less"> {{_i}}Breadcrumbs{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="pagination.less"> {{_i}}Pagination{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="pager.less"> {{_i}}Pager{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="thumbnails.less"> {{_i}}Thumbnails{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="alerts.less"> {{_i}}Alerts{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="progress-bars.less"> {{_i}}Progress bars{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="hero-unit.less"> {{_i}}Hero unit{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="media.less"> {{_i}}Media component{{/i}}</label>
-                <h3>{{_i}}JS Components{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="tooltip.less"> {{_i}}Tooltips{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="popovers.less"> {{_i}}Popovers{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="modals.less"> {{_i}}Modals{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="dropdowns.less"> {{_i}}Dropdowns{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="accordion.less"> {{_i}}Collapse{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="carousel.less"> {{_i}}Carousel{{/i}}</label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h3>{{_i}}Miscellaneous{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="wells.less"> {{_i}}Wells{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="close.less"> {{_i}}Close icon{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="utilities.less"> {{_i}}Utilities{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="component-animations.less"> {{_i}}Component animations{{/i}}</label>
-                <h3>{{_i}}Responsive{{/i}}</h3>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-utilities.less"> {{_i}}Visible/hidden classes{{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-767px-max.less"> {{_i}}Narrow tablets and below (<767px){{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-768px-979px.less"> {{_i}}Tablets to desktops (767-979px){{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-1200px-min.less"> {{_i}}Large desktops (>1200px){{/i}}</label>
-                <label class="checkbox"><input checked="checked" type="checkbox" value="responsive-navbar.less"> {{_i}}Responsive navbar{{/i}}</label>
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-          <section class="download" id="plugins">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">{{_i}}Toggle all{{/i}}</a>
-              <h1>
-                {{_i}}2. Select jQuery plugins{{/i}}
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-transition.js">
-                  {{_i}}Transitions <small>(required for any animation)</small>{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-modal.js">
-                  {{_i}}Modals{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-dropdown.js">
-                  {{_i}}Dropdowns{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-scrollspy.js">
-                  {{_i}}Scrollspy{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-tab.js">
-                  {{_i}}Togglable tabs{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-tooltip.js">
-                  {{_i}}Tooltips{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-popover.js">
-                  {{_i}}Popovers <small>(requires Tooltips)</small>{{/i}}
-                </label>
-              </div><!-- /span -->
-              <div class="span3">
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-affix.js">
-                  {{_i}}Affix{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-alert.js">
-                  {{_i}}Alert messages{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-button.js">
-                  {{_i}}Buttons{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-collapse.js">
-                  {{_i}}Collapse{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-carousel.js">
-                  {{_i}}Carousel{{/i}}
-                </label>
-                <label class="checkbox">
-                  <input type="checkbox" checked="true" value="bootstrap-typeahead.js">
-                  {{_i}}Typeahead{{/i}}
-                </label>
-              </div><!-- /span -->
-              <div class="span3">
-                <h4 class="muted">{{_i}}Heads up!{{/i}}</h4>
-                <p class="muted">{{_i}}All checked plugins will be compiled into a single file, bootstrap.js. All plugins require the latest version of <a href="http://jquery.com/" target="_blank">jQuery</a> to be included.{{/i}}</p>
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-
-          <section class="download" id="variables">
-            <div class="page-header">
-              <a class="btn btn-small pull-right toggle-all" href="#">{{_i}}Reset to defaults{{/i}}</a>
-              <h1>
-                {{_i}}3. Customize variables{{/i}}
-              </h1>
-            </div>
-            <div class="row download-builder">
-              <div class="span3">
-                <h3>{{_i}}Scaffolding{{/i}}</h3>
-                <label>@bodyBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@textColor</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-
-                <h3>{{_i}}Links{{/i}}</h3>
-                <label>@linkColor</label>
-                <input type="text" class="span3" placeholder="#08c">
-                <label>@linkColorHover</label>
-                <input type="text" class="span3" placeholder="darken(@linkColor, 15%)">
-                <h3>{{_i}}Colors{{/i}}</h3>
-                <label>@blue</label>
-                <input type="text" class="span3" placeholder="#049cdb">
-                <label>@green</label>
-                <input type="text" class="span3" placeholder="#46a546">
-                <label>@red</label>
-                <input type="text" class="span3" placeholder="#9d261d">
-                <label>@yellow</label>
-                <input type="text" class="span3" placeholder="#ffc40d">
-                <label>@orange</label>
-                <input type="text" class="span3" placeholder="#f89406">
-                <label>@pink</label>
-                <input type="text" class="span3" placeholder="#c3325f">
-                <label>@purple</label>
-                <input type="text" class="span3" placeholder="#7a43b6">
-
-                <h3>{{_i}}Sprites{{/i}}</h3>
-                <label>@iconSpritePath</label>
-                <input type="text" class="span3" placeholder="'../img/glyphicons-halflings.png'">
-                <label>@iconWhiteSpritePath</label>
-                <input type="text" class="span3" placeholder="'../img/glyphicons-halflings-white.png'">
-
-                <h3>{{_i}}Grid system{{/i}}</h3>
-                <label>@gridColumns</label>
-                <input type="text" class="span3" placeholder="12">
-                <label>@gridColumnWidth</label>
-                <input type="text" class="span3" placeholder="60px">
-                <label>@gridGutterWidth</label>
-                <input type="text" class="span3" placeholder="20px">
-                <label>@gridColumnWidth1200</label>
-                <input type="text" class="span3" placeholder="70px">
-                <label>@gridGutterWidth1200</label>
-                <input type="text" class="span3" placeholder="30px">
-                <label>@gridColumnWidth768</label>
-                <input type="text" class="span3" placeholder="42px">
-                <label>@gridGutterWidth768</label>
-                <input type="text" class="span3" placeholder="20px">
-
-              </div><!-- /span -->
-              <div class="span3">
-
-                <h3>{{_i}}Typography{{/i}}</h3>
-                <label>@sansFontFamily</label>
-                <input type="text" class="span3" placeholder="'Helvetica Neue', Helvetica, Arial, sans-serif">
-                <label>@serifFontFamily</label>
-                <input type="text" class="span3" placeholder="Georgia, 'Times New Roman', Times, serif">
-                <label>@monoFontFamily</label>
-                <input type="text" class="span3" placeholder="Menlo, Monaco, 'Courier New', monospace">
-
-                <label>@baseFontSize</label>
-                <input type="text" class="span3" placeholder="14px">
-                <label>@baseFontFamily</label>
-                <input type="text" class="span3" placeholder="@sansFontFamily">
-                <label>@baseLineHeight</label>
-                <input type="text" class="span3" placeholder="20px">
-
-                <label>@altFontFamily</label>
-                <input type="text" class="span3" placeholder="@serifFontFamily">
-                <label>@headingsFontFamily</label>
-                <input type="text" class="span3" placeholder="inherit">
-                <label>@headingsFontWeight</label>
-                <input type="text" class="span3" placeholder="bold">
-                <label>@headingsColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-
-                <label>@fontSizeLarge</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 1.25">
-                <label>@fontSizeSmall</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 0.85">
-                <label>@fontSizeMini</label>
-                <input type="text" class="span3" placeholder="@baseFontSize * 0.75">
-
-                <label>@paddingLarge</label>
-                <input type="text" class="span3" placeholder="11px 19px">
-                <label>@paddingSmall</label>
-                <input type="text" class="span3" placeholder="2px 10px">
-                <label>@paddingMini</label>
-                <input type="text" class="span3" placeholder="1px 6px">
-
-                <label>@baseBorderRadius</label>
-                <input type="text" class="span3" placeholder="4px">
-                <label>@borderRadiusLarge</label>
-                <input type="text" class="span3" placeholder="6px">
-                <label>@borderRadiusSmall</label>
-                <input type="text" class="span3" placeholder="3px">
-
-                <label>@heroUnitBackground</label>
-                <input type="text" class="span3" placeholder="@grayLighter">
-                <label>@heroUnitHeadingColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-                <label>@heroUnitLeadColor</label>
-                <input type="text" class="span3" placeholder="inherit">
-
-                <h3>{{_i}}Tables{{/i}}</h3>
-                <label>@tableBackground</label>
-                <input type="text" class="span3" placeholder="transparent">
-                <label>@tableBackgroundAccent</label>
-                <input type="text" class="span3" placeholder="#f9f9f9">
-                <label>@tableBackgroundHover</label>
-                <input type="text" class="span3" placeholder="#f5f5f5">
-                <label>@tableBorder</label>
-                <input type="text" class="span3" placeholder="#ddd">
-
-                <h3>{{_i}}Forms{{/i}}</h3>
-                <label>@placeholderText</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@inputBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@inputBorder</label>
-                <input type="text" class="span3" placeholder="#ccc">
-                <label>@inputBorderRadius</label>
-                <input type="text" class="span3" placeholder="3px">
-                <label>@inputDisabledBackground</label>
-                <input type="text" class="span3" placeholder="@grayLighter">
-                <label>@formActionsBackground</label>
-                <input type="text" class="span3" placeholder="#f5f5f5">
-                <label>@btnPrimaryBackground</label>
-                <input type="text" class="span3" placeholder="@linkColor">
-                <label>@btnPrimaryBackgroundHighlight</label>
-                <input type="text" class="span3" placeholder="darken(@white, 10%)">
-
-              </div><!-- /span -->
-              <div class="span3">
-
-                <h3>{{_i}}Form states &amp; alerts{{/i}}</h3>
-                <label>@warningText</label>
-                <input type="text" class="span3" placeholder="#c09853">
-                <label>@warningBackground</label>
-                <input type="text" class="span3" placeholder="#fcf8e3">
-                <label>@errorText</label>
-                <input type="text" class="span3" placeholder="#b94a48">
-                <label>@errorBackground</label>
-                <input type="text" class="span3" placeholder="#f2dede">
-                <label>@successText</label>
-                <input type="text" class="span3" placeholder="#468847">
-                <label>@successBackground</label>
-                <input type="text" class="span3" placeholder="#dff0d8">
-                <label>@infoText</label>
-                <input type="text" class="span3" placeholder="#3a87ad">
-                <label>@infoBackground</label>
-                <input type="text" class="span3" placeholder="#d9edf7">
-
-                <h3>{{_i}}Navbar{{/i}}</h3>
-                <label>@navbarHeight</label>
-                <input type="text" class="span3" placeholder="40px">
-                <label>@navbarBackground</label>
-                <input type="text" class="span3" placeholder="@grayDarker">
-                <label>@navbarBackgroundHighlight</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-                <label>@navbarText</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@navbarBrandColor</label>
-                <input type="text" class="span3" placeholder="@navbarLinkColor">
-                <label>@navbarLinkColor</label>
-                <input type="text" class="span3" placeholder="@grayLight">
-                <label>@navbarLinkColorHover</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@navbarLinkColorActive</label>
-                <input type="text" class="span3" placeholder="@navbarLinkColorHover">
-                <label>@navbarLinkBackgroundHover</label>
-                <input type="text" class="span3" placeholder="transparent">
-                <label>@navbarLinkBackgroundActive</label>
-                <input type="text" class="span3" placeholder="@navbarBackground">
-                <label>@navbarSearchBackground</label>
-                <input type="text" class="span3" placeholder="lighten(@navbarBackground, 25%)">
-                <label>@navbarSearchBackgroundFocus</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@navbarSearchBorder</label>
-                <input type="text" class="span3" placeholder="darken(@navbarSearchBackground, 30%)">
-                <label>@navbarSearchPlaceholderColor</label>
-                <input type="text" class="span3" placeholder="#ccc">
-
-                <label>@navbarCollapseWidth</label>
-                <input type="text" class="span3" placeholder="979px">
-                <label>@navbarCollapseDesktopWidth</label>
-                <input type="text" class="span3" placeholder="@navbarCollapseWidth + 1">
-
-                <h3>{{_i}}Dropdowns{{/i}}</h3>
-                <label>@dropdownBackground</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@dropdownBorder</label>
-                <input type="text" class="span3" placeholder="rgba(0,0,0,.2)">
-                <label>@dropdownLinkColor</label>
-                <input type="text" class="span3" placeholder="@grayDark">
-                <label>@dropdownLinkColorHover</label>
-                <input type="text" class="span3" placeholder="@white">
-                <label>@dropdownLinkBackgroundHover</label>
-                <input type="text" class="span3" placeholder="@linkColor">
-              </div><!-- /span -->
-            </div><!-- /row -->
-          </section>
-
-          <section class="download" id="download">
-            <div class="page-header">
-              <h1>
-                {{_i}}4. Download{{/i}}
-              </h1>
-            </div>
-            <div class="download-btn">
-              <a class="btn btn-primary" href="#" {{#production}}onclick="_gaq.push(['_trackEvent', 'Customize', 'Download', 'Customize and Download']);"{{/production}}>{{_i}}Customize and Download{{/i}}</a>
-              <h4>{{_i}}What's included?{{/i}}</h4>
-              <p>{{_i}}Downloads include compiled CSS, compiled and minified CSS, and compiled jQuery plugins, all nicely packed up into a zipball for your convenience.{{/i}}</p>
-            </div>
-          </section><!-- /download -->
-        </form>
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/extend.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/extend.mustache
deleted file mode 100644
index b5c8d574..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/extend.mustache
+++ /dev/null
@@ -1,161 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Extending Bootstrap{{/i}}</h1>
-    <p class="lead">{{_i}}Extend Bootstrap to take advantage of included styles and components, as well as LESS variables and mixins.{{/i}}</p>
-  <div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#built-with-less"><i class="icon-chevron-right"></i> {{_i}}Built with LESS{{/i}}</a></li>
-          <li><a href="#compiling"><i class="icon-chevron-right"></i> {{_i}}Compiling Bootstrap{{/i}}</a></li>
-          <li><a href="#static-assets"><i class="icon-chevron-right"></i> {{_i}}Use as static assets{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- BUILT WITH LESS
-        ================================================== -->
-        <section id="built-with-less">
-          <div class="page-header">
-            <h1>{{_i}}Built with LESS{{/i}}</h1>
-          </div>
-
-          <img style="float: right; height: 36px; margin: 10px 20px 20px" src="assets/img/less-logo-large.png" alt="LESS CSS">
-          <p class="lead">{{_i}}Bootstrap is made with LESS at its core, a dynamic stylesheet language created by our good friend, <a href="http://cloudhead.io">Alexis Sellier</a>. It makes developing systems-based CSS faster, easier, and more fun.{{/i}}</p>
-
-          <h3>{{_i}}Why LESS?{{/i}}</h3>
-          <p>{{_i}}One of Bootstrap's creators wrote a quick <a href="http://www.wordsbyf.at/2012/03/08/why-less/">blog post about this</a>, summarized here:{{/i}}</p>
-          <ul>
-            <li>{{_i}}Bootstrap compiles faster ~6x faster with Less compared to Sass{{/i}}</li>
-            <li>{{_i}}Less is written in JavaScript, making it easier to us to dive in and patch compared to Ruby with Sass.{{/i}}</li>
-            <li>{{_i}}Less is more; we want to feel like we're writing CSS and making Bootstrap approachable to all.{{/i}}</li>
-          </ul>
-
-          <h3>{{_i}}What's included?{{/i}}</h3>
-          <p>{{_i}}As an extension of CSS, LESS includes variables, mixins for reusable snippets of code, operations for simple math, nesting, and even color functions.{{/i}}</p>
-
-          <h3>{{_i}}Learn more{{/i}}</h3>
-          <p>{{_i}}Visit the official website at <a href="http://lesscss.org">http://lesscss.org</a> to learn more.{{/i}}</p>
-        </section>
-
-
-
-        <!-- COMPILING LESS AND BOOTSTRAP
-        ================================================== -->
-        <section id="compiling">
-          <div class="page-header">
-            <h1>{{_i}}Compiling Bootstrap with Less{{/i}}</h1>
-          </div>
-
-          <p class="lead">{{_i}}Since our CSS is written with Less and utilizes variables and mixins, it needs to be compiled for final production implementation. Here's how.{{/i}}</p>
-
-          <div class="alert alert-info">
-            {{_i}}<strong>Note:</strong> If you're submitting a pull request to GitHub with modified CSS, you <strong>must</strong> recompile the CSS via any of these methods.{{/i}}
-          </div>
-
-          <h2>{{_i}}Tools for compiling{{/i}}</h2>
-
-          <h3>{{_i}}Command line{{/i}}</h3>
-          <p>{{_i}}Follow <a href="https://github.com/twitter/bootstrap#developers">the instructions in the project readme</a> on GitHub for compiling via command line.{{/i}}</p>
-
-          <h3>{{_i}}JavaScript{{/i}}</h3>
-          <p>{{_i}}<a href="http://lesscss.org/">Download the latest Less.js</a> and include the path to it (and Bootstrap) in the <code>&lt;head&gt;</code>.{{/i}}</p>
-<pre class="prettyprint">
-&lt;link rel="stylesheet/less" href="/path/to/bootstrap.less"&gt;
-&lt;script src="/path/to/less.js"&gt;&lt;/script&gt;
-</pre>
-          <p>{{_i}}To recompile the .less files, just save them and reload your page. Less.js compiles them and stores them in local storage.{{/i}}</p>
-
-          <h3>{{_i}}Unofficial Mac app{{/i}}</h3>
-          <p>{{_i}}<a href="http://incident57.com/less/">The unofficial Mac app</a> watches directories of .less files and compiles the code to local files after every save of a watched .less file. If you like, you can toggle preferences in the app for automatic minifying and which directory the compiled files end up in.{{/i}}</p>
-
-          <h3>{{_i}}More apps{{/i}}</h3>
-          <h4><a href="http://crunchapp.net/" target="_blank">Crunch</a></h4>
-          <p>{{_i}}Crunch is a great looking LESS editor and compiler built on Adobe Air.{{/i}}</p>
-          <h4><a href="http://incident57.com/codekit/" target="_blank">CodeKit</a></h4>
-          <p>{{_i}}Created by the same guy as the unofficial Mac app, CodeKit is a Mac app that compiles LESS, SASS, Stylus, and CoffeeScript.{{/i}}</p>
-          <h4><a href="http://wearekiss.com/simpless" target="_blank">Simpless</a></h4>
-          <p>{{_i}}Mac, Linux, and Windows app for drag and drop compiling of LESS files. Plus, the <a href="https://github.com/Paratron/SimpLESS" target="_blank">source code is on GitHub</a>.{{/i}}</p>
-
-        </section>
-
-
-
-        <!-- Static assets
-        ================================================== -->
-        <section id="static-assets">
-          <div class="page-header">
-            <h1>{{_i}}Use as static assets{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}<a href="./getting-started.html">Quickly start</a> any web project by dropping in the compiled or minified CSS and JS. Layer on custom styles separately for easy upgrades and maintenance moving forward.{{/i}}</p>
-
-          <h3>{{_i}}Setup file structure{{/i}}</h3>
-          <p>{{_i}}Download the latest compiled Bootstrap and place into your project. For example, you might have something like this:{{/i}}</p>
-<pre>
-  <span class="icon-folder-open"></span> app/
-      <span class="icon-folder-open"></span> layouts/
-      <span class="icon-folder-open"></span> templates/
-  <span class="icon-folder-open"></span> public/
-      <span class="icon-folder-open"></span> css/
-          <span class="icon-file"></span> bootstrap.min.css
-      <span class="icon-folder-open"></span> js/
-          <span class="icon-file"></span> bootstrap.min.js
-      <span class="icon-folder-open"></span> img/
-          <span class="icon-file"></span> glyphicons-halflings.png
-          <span class="icon-file"></span> glyphicons-halflings-white.png
-</pre>
-
-          <h3>{{_i}}Utilize starter template{{/i}}</h3>
-          <p>{{_i}}Copy the following base HTML to get started.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="public/css/bootstrap.min.css" rel="stylesheet"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;script src="public/js/bootstrap.min.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-
-          <h3>{{_i}}Layer on custom code{{/i}}</h3>
-          <p>{{_i}}Work in your custom CSS, JS, and more as necessary to make Bootstrap your own with your own separate CSS and JS files.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="public/css/bootstrap.min.css" rel="stylesheet"&gt;
-    &lt;!-- Project --&gt;
-    &lt;link href="public/css/application.css" rel="stylesheet"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;script src="public/js/bootstrap.min.js"&gt;&lt;/script&gt;
-    &lt;!-- Project --&gt;
-    &lt;script src="public/js/application.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-
-        </section>
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/getting-started.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/getting-started.mustache
deleted file mode 100644
index ae1534ce..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/getting-started.mustache
+++ /dev/null
@@ -1,256 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Getting started{{/i}}</h1>
-    <p class="lead">{{_i}}Overview of the project, its contents, and how to get started with a simple template.{{/i}}</p>
-  </div>
-</header>
-
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#download-bootstrap"><i class="icon-chevron-right"></i> {{_i}}Download{{/i}}</a></li>
-          <li><a href="#file-structure"><i class="icon-chevron-right"></i> {{_i}}File structure{{/i}}</a></li>
-          <li><a href="#contents"><i class="icon-chevron-right"></i> {{_i}}What's included{{/i}}</a></li>
-          <li><a href="#html-template"><i class="icon-chevron-right"></i> {{_i}}HTML template{{/i}}</a></li>
-          <li><a href="#examples"><i class="icon-chevron-right"></i> {{_i}}Examples{{/i}}</a></li>
-          <li><a href="#what-next"><i class="icon-chevron-right"></i> {{_i}}What next?{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Download
-        ================================================== -->
-        <section id="download-bootstrap">
-          <div class="page-header">
-            <h1>{{_i}}1. Download{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Before downloading, be sure to have a code editor (we recommend <a href="http://sublimetext.com/2">Sublime Text 2</a>) and some working knowledge of HTML and CSS. We won't walk through the source files here, but they are available for download. We'll focus on getting started with the compiled Bootstrap files.{{/i}}</p>
-
-          <div class="row-fluid">
-            <div class="span6">
-              <h2>{{_i}}Download compiled{{/i}}</h2>
-              <p>{{_i}}<strong>Fastest way to get started:</strong> get the compiled and minified versions of our CSS, JS, and images. No docs or original source files.{{/i}}</p>
-              <p><a class="btn btn-large btn-primary" href="assets/bootstrap.zip" {{#production}}onclick="_gaq.push(['_trackEvent', 'Getting started', 'Download', 'Download compiled']);"{{/production}}>{{_i}}Download Bootstrap{{/i}}</a></p>
-            </div>
-            <div class="span6">
-              <h2>Download source</h2>
-              <p>Get the original files for all CSS and JavaScript, along with a local copy of the docs by downloading the latest version directly from GitHub.</p>
-              <p><a class="btn btn-large" href="https://github.com/twitter/bootstrap/zipball/master" {{#production}}onclick="_gaq.push(['_trackEvent', 'Getting started', 'Download', 'Download source']);"{{/production}}>{{_i}}Download Bootstrap source{{/i}}</a></p>
-            </div>
-          </div>
-        </section>
-
-
-
-        <!-- File structure
-        ================================================== -->
-        <section id="file-structure">
-          <div class="page-header">
-            <h1>{{_i}}2. File structure{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Within the download you'll find the following file structure and contents, logically grouping common assets and providing both compiled and minified variations.{{/i}}</p>
-          <p>{{_i}}Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:{{/i}}</p>
-<pre class="prettyprint">
-  bootstrap/
-  ├── css/
-  │   ├── bootstrap.css
-  │   ├── bootstrap.min.css
-  ├── js/
-  │   ├── bootstrap.js
-  │   ├── bootstrap.min.js
-  └── img/
-      ├── glyphicons-halflings.png
-      └── glyphicons-halflings-white.png
-</pre>
-          <p>{{_i}}This is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (<code>bootstrap.*</code>), as well as compiled and minified CSS and JS (<code>bootstrap.min.*</code>). The image files are compressed using <a href="http://imageoptim.com/">ImageOptim</a>, a Mac app for compressing PNGs.{{/i}}</p>
-          <p>{{_i}}Please note that all JavaScript plugins require jQuery to be included.{{/i}}</p>
-        </section>
-
-
-
-        <!-- Contents
-        ================================================== -->
-        <section id="contents">
-          <div class="page-header">
-            <h1>{{_i}}3. What's included{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Bootstrap comes equipped with HTML, CSS, and JS for all sorts of things, but they can be summarized with a handful of categories visible at the top of the <a href="http://getbootstrap.com">Bootstrap documentation</a>.{{/i}}</p>
-
-          <h2>{{_i}}Docs sections{{/i}}</h2>
-          <h4><a href="http://twitter.github.com/bootstrap/scaffolding.html">{{_i}}Scaffolding{{/i}}</a></h4>
-          <p>{{_i}}Global styles for the body to reset type and background, link styles, grid system, and two simple layouts.{{/i}}</p>
-          <h4><a href="http://twitter.github.com/bootstrap/base-css.html">{{_i}}Base CSS{{/i}}</a></h4>
-          <p>{{_i}}Styles for common HTML elements like typography, code, tables, forms, and buttons. Also includes <a href="http://glyphicons.com">Glyphicons</a>, a great little icon set.{{/i}}</p>
-          <h4><a href="http://twitter.github.com/bootstrap/components.html">{{_i}}Components{{/i}}</a></h4>
-          <p>{{_i}}Basic styles for common interface components like tabs and pills, navbar, alerts, page headers, and more.{{/i}}</p>
-          <h4><a href="http://twitter.github.com/bootstrap/javascript.html">{{_i}}JavaScript plugins{{/i}}</a></h4>
-          <p>{{_i}}Similar to Components, these JavaScript plugins are interactive components for things like tooltips, popovers, modals, and more.{{/i}}</p>
-
-          <h2>{{_i}}List of components{{/i}}</h2>
-          <p>{{_i}}Together, the <strong>Components</strong> and <strong>JavaScript plugins</strong> sections provide the following interface elements:{{/i}}</p>
-          <ul>
-            <li>{{_i}}Button groups{{/i}}</li>
-            <li>{{_i}}Button dropdowns{{/i}}</li>
-            <li>{{_i}}Navigational tabs, pills, and lists{{/i}}</li>
-            <li>{{_i}}Navbar{{/i}}</li>
-            <li>{{_i}}Labels{{/i}}</li>
-            <li>{{_i}}Badges{{/i}}</li>
-            <li>{{_i}}Page headers and hero unit{{/i}}</li>
-            <li>{{_i}}Thumbnails{{/i}}</li>
-            <li>{{_i}}Alerts{{/i}}</li>
-            <li>{{_i}}Progress bars{{/i}}</li>
-            <li>{{_i}}Modals{{/i}}</li>
-            <li>{{_i}}Dropdowns{{/i}}</li>
-            <li>{{_i}}Tooltips{{/i}}</li>
-            <li>{{_i}}Popovers{{/i}}</li>
-            <li>{{_i}}Accordion{{/i}}</li>
-            <li>{{_i}}Carousel{{/i}}</li>
-            <li>{{_i}}Typeahead{{/i}}</li>
-          </ul>
-          <p>{{_i}}In future guides, we may walk through these components individually in more detail. Until then, look for each of these in the documentation for information on how to utilize and customize them.{{/i}}</p>
-        </section>
-
-
-
-        <!-- HTML template
-        ================================================== -->
-        <section id="html-template">
-          <div class="page-header">
-            <h1>{{_i}}4. Basic HTML template{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}With a brief intro into the contents out of the way, we can focus on putting Bootstrap to use. To do that, we'll utilize a basic HTML template that includes everything we mentioned in the <a href="./getting-started.html#file-structure">File structure</a>.{{/i}}</p>
-          <p>{{_i}}Now, here's a look at a <strong>typical HTML file</strong>:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-          <p>{{_i}}To make this <strong>a Bootstrapped template</strong>, just include the appropriate CSS and JS files:{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;Bootstrap 101 Template&lt;/title&gt;
-    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-    &lt;!-- Bootstrap --&gt;
-    &lt;link href="css/bootstrap.min.css" rel="stylesheet" media="screen"&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;h1&gt;Hello, world!&lt;/h1&gt;
-    &lt;script src="http://code.jquery.com/jquery.js"&gt;&lt;/script&gt;
-    &lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
-</pre>
-          <p>{{_i}}<strong>And you're set!</strong> With those two files added, you can begin to develop any site or application with Bootstrap.{{/i}}</p>
-        </section>
-
-
-
-        <!-- Examples
-        ================================================== -->
-        <section id="examples">
-          <div class="page-header">
-            <h1>{{_i}}5. Examples{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Move beyond the base template with a few example layouts. We encourage folks to iterate on these examples and not simply use them as an end result.{{/i}}</p>
-          <ul class="thumbnails bootstrap-examples">
-            <li class="span3">
-              <a class="thumbnail" href="examples/starter-template.html">
-                <img src="assets/img/examples/bootstrap-example-starter.png" alt="">
-              </a>
-              <h4>{{_i}}Starter template{{/i}}</h4>
-              <p>{{_i}}A barebones HTML document with all the Bootstrap CSS and JavaScript included.{{/i}}</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/hero.html">
-                <img src="assets/img/examples/bootstrap-example-marketing.png" alt="">
-              </a>
-              <h4>{{_i}}Basic marketing site{{/i}}</h4>
-              <p>{{_i}}Featuring a hero unit for a primary message and three supporting elements.{{/i}}</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/fluid.html">
-                <img src="assets/img/examples/bootstrap-example-fluid.png" alt="">
-              </a>
-              <h4>{{_i}}Fluid layout{{/i}}</h4>
-              <p>{{_i}}Uses our new responsive, fluid grid system to create a seamless liquid layout.{{/i}}</p>
-            </li>
-
-            <li class="span3">
-              <a class="thumbnail" href="examples/marketing-narrow.html">
-                <img src="assets/img/examples/bootstrap-example-marketing-narrow.png" alt="">
-              </a>
-              <h4>{{_i}}Narrow marketing{{/i}}</h4>
-              <p>{{_i}}Slim, lightweight marketing template for small projects or teams.{{/i}}</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/justified-nav.html">
-                <img src="assets/img/examples/bootstrap-example-justified-nav.png" alt="">
-              </a>
-              <h4>{{_i}}Justified nav{{/i}}</h4>
-              <p>{{_i}}Marketing page with equal-width navigation links in a modified navbar.{{/i}}</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/signin.html">
-                <img src="assets/img/examples/bootstrap-example-signin.png" alt="">
-              </a>
-              <h4>{{_i}}Sign in{{/i}}</h4>
-              <p>{{_i}}Barebones sign in form with custom, larger form controls and a flexible layout.{{/i}}</p>
-            </li>
-
-            <li class="span3">
-              <a class="thumbnail" href="examples/sticky-footer.html">
-                <img src="assets/img/examples/bootstrap-example-sticky-footer.png" alt="">
-              </a>
-              <h4>{{_i}}Sticky footer{{/i}}</h4>
-              <p>{{_i}}Pin a fixed-height footer to the bottom of the user's viewport.{{/i}}</p>
-            </li>
-            <li class="span3">
-              <a class="thumbnail" href="examples/carousel.html">
-                <img src="assets/img/examples/bootstrap-example-carousel.png" alt="">
-              </a>
-              <h4>{{_i}}Carousel jumbotron{{/i}}</h4>
-              <p>{{_i}}A more interactive riff on the basic marketing site featuring a prominent carousel.{{/i}}</p>
-            </li>
-          </ul>
-        </section>
-
-
-
-
-        <!-- Next
-        ================================================== -->
-        <section id="what-next">
-          <div class="page-header">
-            <h1>{{_i}}What next?{{/i}}</h1>
-          </div>
-          <p class="lead">{{_i}}Head to the docs for information, examples, and code snippets, or take the next leap and customize Bootstrap for any upcoming project.{{/i}}</p>
-          <a class="btn btn-large btn-primary" href="./scaffolding.html" {{#production}}onclick="_gaq.push(['_trackEvent', 'Getting started', 'Next steps', 'Visit docs']);"{{/production}}>{{_i}}Visit the Bootstrap docs{{/i}}</a>
-          <a class="btn btn-large" href="./customize.html" style="margin-left: 5px;" {{#production}}onclick="_gaq.push(['_trackEvent', 'Getting started', 'Next steps', 'Customize']);"{{/production}}>{{_i}}Customize Bootstrap{{/i}}</a>
-        </section>
-
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/index.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/index.mustache
deleted file mode 100644
index b38ddec2..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/index.mustache
+++ /dev/null
@@ -1,100 +0,0 @@
-<div class="jumbotron masthead">
-  <div class="container">
-    <h1>{{_i}}Bootstrap{{/i}}</h1>
-    <p>{{_i}}Sleek, intuitive, and powerful front-end framework for faster and easier web development.{{/i}}</p>
-    <p>
-      <a href="assets/bootstrap.zip" class="btn btn-primary btn-large" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Download', 'Download 2.3.0']);"{{/production}}>{{_i}}Download Bootstrap{{/i}}</a>
-    </p>
-    <ul class="masthead-links">
-      <li>
-        <a href="http://github.com/twitter/bootstrap" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'GitHub project']);"{{/production}}>{{_i}}GitHub project{{/i}}</a>
-      </li>
-      <li>
-        <a href="./getting-started.html#examples" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Examples']);"{{/production}}>{{_i}}Examples{{/i}}</a>
-      </li>
-      <li>
-        <a href="./extend.html" {{#production}}onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'Extend']);"{{/production}}>{{_i}}Extend{{/i}}</a>
-      </li>
-      <li>
-        {{_i}}Version 2.3.0{{/i}}
-      </li>
-    </ul>
-  </div>
-</div>
-
-<div class="bs-docs-social">
-  <div class="container">
-    <ul class="bs-docs-social-buttons">
-      <li>
-        <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=twitter&repo=bootstrap&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
-      </li>
-      <li>
-        <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=twitter&repo=bootstrap&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="102px" height="20px"></iframe>
-      </li>
-      <li class="follow-btn">
-        <a href="https://twitter.com/twbootstrap" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">{{_i}}Follow @twbootstrap{{/i}}</a>
-      </li>
-      <li class="tweet-btn">
-        <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://twitter.github.com/bootstrap/" data-count="horizontal" data-via="twbootstrap" data-related="mdo:Creator of Twitter Bootstrap">Tweet</a>
-      </li>
-    </ul>
-  </div>
-</div>
-
-<div class="container">
-
-  <div class="marketing">
-
-    <h1>{{_i}}Introducing Bootstrap.{{/i}}</h1>
-    <p class="marketing-byline">{{_i}}Need reasons to love Bootstrap? Look no further.{{/i}}</p>
-
-    <div class="row-fluid">
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-twitter-github.png">
-        <h2>{{_i}}By nerds, for nerds.{{/i}}</h2>
-        <p>{{_i}}Built at Twitter by <a href="http://twitter.com/mdo">@mdo</a> and <a href="http://twitter.com/fat">@fat</a>, Bootstrap utilizes <a href="http://lesscss.org">LESS CSS</a>, is compiled via <a href="http://nodejs.org">Node</a>, and is managed through <a href="http://github.com">GitHub</a> to help nerds do awesome stuff on the web.{{/i}}</p>
-      </div>
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-responsive-illustrations.png">
-        <h2>{{_i}}Made for everyone.{{/i}}</h2>
-        <p>{{_i}}Bootstrap was made to not only look and behave great in the latest desktop browsers (as well as IE7!), but in tablet and smartphone browsers via <a href="./scaffolding.html#responsive">responsive CSS</a> as well.{{/i}}</p>
-      </div>
-      <div class="span4">
-        <img class="marketing-img" src="assets/img/bs-docs-bootstrap-features.png">
-        <h2>{{_i}}Packed with features.{{/i}}</h2>
-        <p>{{_i}}A 12-column responsive <a href="./scaffolding.html#gridSystem">grid</a>, dozens of components, <a href="./javascript.html">JavaScript plugins</a>, typography, form controls, and even a <a href="./customize.html">web-based Customizer</a> to make Bootstrap your own.{{/i}}</p>
-      </div>
-    </div>
-
-    <hr class="soften">
-
-    <h1>{{_i}}Built with Bootstrap.{{/i}}</h1>
-    <p class="marketing-byline">{{_i}}For even more sites built with Bootstrap, <a href="http://builtwithbootstrap.tumblr.com/" target="_blank">visit the unofficial Tumblr</a> or <a href="./getting-started.html#examples">browse the examples</a>.{{/i}}</p>
-    <div class="row-fluid">
-      <ul class="thumbnails example-sites">
-        <li class="span3">
-          <a class="thumbnail" href="http://soundready.fm/" target="_blank">
-            <img src="assets/img/example-sites/soundready.png" alt="SoundReady.fm">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://kippt.com/" target="_blank">
-            <img src="assets/img/example-sites/kippt.png" alt="Kippt">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://www.gathercontent.com/" target="_blank">
-            <img src="assets/img/example-sites/gathercontent.png" alt="Gather Content">
-          </a>
-        </li>
-        <li class="span3">
-          <a class="thumbnail" href="http://www.jshint.com/" target="_blank">
-            <img src="assets/img/example-sites/jshint.png" alt="JS Hint">
-          </a>
-        </li>
-      </ul>
-     </div>
-
-  </div>{{! /.marketing }}
-
-</div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/javascript.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/javascript.mustache
deleted file mode 100644
index 744988f4..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/javascript.mustache
+++ /dev/null
@@ -1,1660 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead">
-  <div class="container">
-    <h1>{{_i}}JavaScript{{/i}}</h1>
-    <p class="lead">{{_i}}Bring Bootstrap's components to life&mdash;now with 13 custom jQuery plugins.{{/i}}
-  </div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#overview"><i class="icon-chevron-right"></i> {{_i}}Overview{{/i}}</a></li>
-          <li><a href="#transitions"><i class="icon-chevron-right"></i> {{_i}}Transitions{{/i}}</a></li>
-          <li><a href="#modals"><i class="icon-chevron-right"></i> {{_i}}Modal{{/i}}</a></li>
-          <li><a href="#dropdowns"><i class="icon-chevron-right"></i> {{_i}}Dropdown{{/i}}</a></li>
-          <li><a href="#scrollspy"><i class="icon-chevron-right"></i> {{_i}}Scrollspy{{/i}}</a></li>
-          <li><a href="#tabs"><i class="icon-chevron-right"></i> {{_i}}Tab{{/i}}</a></li>
-          <li><a href="#tooltips"><i class="icon-chevron-right"></i> {{_i}}Tooltip{{/i}}</a></li>
-          <li><a href="#popovers"><i class="icon-chevron-right"></i> {{_i}}Popover{{/i}}</a></li>
-          <li><a href="#alerts"><i class="icon-chevron-right"></i> {{_i}}Alert{{/i}}</a></li>
-          <li><a href="#buttons"><i class="icon-chevron-right"></i> {{_i}}Button{{/i}}</a></li>
-          <li><a href="#collapse"><i class="icon-chevron-right"></i> {{_i}}Collapse{{/i}}</a></li>
-          <li><a href="#carousel"><i class="icon-chevron-right"></i> {{_i}}Carousel{{/i}}</a></li>
-          <li><a href="#typeahead"><i class="icon-chevron-right"></i> {{_i}}Typeahead{{/i}}</a></li>
-          <li><a href="#affix"><i class="icon-chevron-right"></i> {{_i}}Affix{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-        <!-- Overview
-        ================================================== -->
-        <section id="overview">
-          <div class="page-header">
-            <h1>{{_i}}JavaScript in Bootstrap{{/i}}</h1>
-          </div>
-
-          <h3>{{_i}}Individual or compiled{{/i}}</h3>
-          <p>{{_i}}Plugins can be included individually (though some have required dependencies), or all at once. Both <strong>bootstrap.js</strong> and <strong>bootstrap.min.js</strong> contain all plugins in a single file.{{/i}}</p>
-
-          <h3>{{_i}}Data attributes{{/i}}</h3>
-          <p>{{_i}}You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first class API and should be your first consideration when using a plugin.{{/i}}</p>
-
-          <p>{{_i}}That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the body namespaced with `'data-api'`. This looks like this:{{/i}}
-          <pre class="prettyprint linenums">$('body').off('.data-api')</pre>
-
-          <p>{{_i}}Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:{{/i}}</p>
-          <pre class="prettyprint linenums">$('body').off('.alert.data-api')</pre>
-
-          <h3>{{_i}}Programmatic API{{/i}}</h3>
-          <p>{{_i}}We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.{{/i}}</p>
-          <pre class="prettyprint linenums">$(".btn.danger").button("toggle").addClass("fat")</pre>
-          <p>{{_i}}All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):{{/i}}</p>
-<pre class="prettyprint linenums">
-$("#myModal").modal()                       // initialized with defaults
-$("#myModal").modal({ keyboard: false })   // initialized with no keyboard
-$("#myModal").modal('show')                // initializes and invokes show immediately</p>
-</pre>
-          <p>{{_i}}Each plugin also exposes its raw constructor on a `Constructor` property: <code>$.fn.popover.Constructor</code>. If you'd like to get a particular plugin instance, retrieve it directly from an element: <code>$('[rel=popover]').data('popover')</code>.{{/i}}</p>
-
-          <h3>{{_i}}No Conflict{{/i}}</h3>
-          <p>{{_i}}Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances,  namespace collisions can occasionally occur. If this happens, you may call <code>.noConflict</code> on the plugin you wish to revert the value of.{{/i}}</p>
-
-<pre class="prettyprint linenums">
-var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
-$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the bootstrap functionality
-</pre>
-
-          <h3>{{_i}}Events{{/i}}</h3>
-          <p>{{_i}}Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. <code>show</code>) is triggered at the start of an event, and its past participle form (ex. <code>shown</code>) is trigger on the completion of an action.{{/i}}</p>
-          <p>{{_i}}All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.{{/i}}</p>
-<pre class="prettyprint linenums">
-$('#myModal').on('show', function (e) {
-    if (!data) return e.preventDefault() // stops modal from being shown
-})
-</pre>
-        </section>
-
-
-
-        <!-- Transitions
-        ================================================== -->
-        <section id="transitions">
-          <div class="page-header">
-            <h1>{{_i}}Transitions{{/i}} <small>bootstrap-transition.js</small></h1>
-          </div>
-          <h3>{{_i}}About transitions{{/i}}</h3>
-          <p>{{_i}}For simple transition effects, include <strong>bootstrap-transition.js</strong> once alongside the other JS files. If you're using the compiled (or minified) <strong>bootstrap.js</strong>, there is no need to include this&mdash;it's already there.{{/i}}</p>
-          <h3>{{_i}}Use cases{{/i}}</h3>
-          <p>{{_i}}A few examples of the transition plugin:{{/i}}</p>
-          <ul>
-            <li>{{_i}}Sliding or fading in modals{{/i}}</li>
-            <li>{{_i}}Fading out tabs{{/i}}</li>
-            <li>{{_i}}Fading out alerts{{/i}}</li>
-            <li>{{_i}}Sliding carousel panes{{/i}}</li>
-          </ul>
-
-          {{! Ideas: include docs for .fade.in, .slide.in, etc }}
-        </section>
-
-
-
-        <!-- Modal
-        ================================================== -->
-        <section id="modals">
-          <div class="page-header">
-            <h1>{{_i}}Modals{{/i}} <small>bootstrap-modal.js</small></h1>
-          </div>
-
-
-          <h2>{{_i}}Examples{{/i}}</h2>
-          <p>{{_i}}Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.{{/i}}</p>
-
-          <h3>{{_i}}Static example{{/i}}</h3>
-          <p>{{_i}}A rendered modal with header, body, and set of actions in the footer.{{/i}}</p>
-          <div class="bs-docs-example" style="background-color: #f5f5f5;">
-            <div class="modal" style="position: relative; top: auto; left: auto; right: auto; margin: 0 auto 20px; z-index: 1; max-width: 100%;">
-              <div class="modal-header">
-                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-                <h3>{{_i}}Modal header{{/i}}</h3>
-              </div>
-              <div class="modal-body">
-                <p>{{_i}}One fine body&hellip;{{/i}}</p>
-              </div>
-              <div class="modal-footer">
-                <a href="#" class="btn">{{_i}}Close{{/i}}</a>
-                <a href="#" class="btn btn-primary">{{_i}}Save changes{{/i}}</a>
-              </div>
-            </div>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="modal hide fade"&gt;
-  &lt;div class="modal-header"&gt;
-    &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&amp;times;&lt;/button&gt;
-    &lt;h3&gt;{{_i}}Modal header{{/i}}&lt;/h3&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-body"&gt;
-    &lt;p&gt;{{_i}}One fine body&hellip;{{/i}}&lt;/p&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-footer"&gt;
-    &lt;a href="#" class="btn"&gt;{{_i}}Close{{/i}}&lt;/a&gt;
-    &lt;a href="#" class="btn btn-primary"&gt;{{_i}}Save changes{{/i}}&lt;/a&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Live demo{{/i}}</h3>
-          <p>{{_i}}Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.{{/i}}</p>
-          <!-- sample modal content -->
-          <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
-            <div class="modal-header">
-              <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-              <h3 id="myModalLabel">{{_i}}Modal Heading{{/i}}</h3>
-            </div>
-            <div class="modal-body">
-              <h4>{{_i}}Text in a modal{{/i}}</h4>
-              <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem.</p>
-
-              <h4>{{_i}}Popover in a modal{{/i}}</h4>
-              <p>{{_i}}This <a href="#" role="button" class="btn popover-test" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">button</a> should trigger a popover on click.{{/i}}</p>
-
-              <h4>{{_i}}Tooltips in a modal{{/i}}</h4>
-              <p>{{_i}}<a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> should have tooltips on hover.{{/i}}</p>
-
-              <hr>
-
-              <h4>{{_i}}Overflowing text to show optional scrollbar{{/i}}</h4>
-              <p>{{_i}}We set a fixed <code>max-height</code> on the <code>.modal-body</code>. Watch it overflow with all this extra lorem ipsum text we've included.{{/i}}</p>
-              <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
-              <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
-              <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
-              <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
-              <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
-              <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
-            </div>
-            <div class="modal-footer">
-              <button class="btn" data-dismiss="modal">{{_i}}Close{{/i}}</button>
-              <button class="btn btn-primary">{{_i}}Save changes{{/i}}</button>
-            </div>
-          </div>
-          <div class="bs-docs-example" style="padding-bottom: 24px;">
-            <a data-toggle="modal" href="#myModal" class="btn btn-primary btn-large">{{_i}}Launch demo modal{{/i}}</a>
-          </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt!-- Button to trigger modal --&gt;
-&lt;a href="#myModal" role="button" class="btn" data-toggle="modal"&gt;{{_i}}Launch demo modal{{/i}}&lt;/a&gt;
-
-&lt!-- Modal --&gt;
-&lt;div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"&gt;
-  &lt;div class="modal-header"&gt;
-    &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&times;&lt;/button&gt;
-    &lt;h3 id="myModalLabel"&gt;Modal header&lt;/h3&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-body"&gt;
-    &lt;p&gt;{{_i}}One fine body&hellip;{{/i}}&lt;/p&gt;
-  &lt;/div&gt;
-  &lt;div class="modal-footer"&gt;
-    &lt;button class="btn" data-dismiss="modal" aria-hidden="true"&gt;{{_i}}Close{{/i}}&lt;/button&gt;
-    &lt;button class="btn btn-primary"&gt;{{_i}}Save changes{{/i}}&lt;/button&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Usage{{/i}}</h2>
-
-          <h3>{{_i}}Via data attributes{{/i}}</h3>
-          <p>{{_i}}Activate a modal without writing JavaScript. Set <code>data-toggle="modal"</code> on a controller element, like a button, along with a <code>data-target="#foo"</code> or <code>href="#foo"</code> to target a specific modal to toggle.{{/i}}</p>
-          <pre class="prettyprint linenums">&lt;button type="button" data-toggle="modal" data-target="#myModal"&gt;Launch modal&lt;/button&gt;</pre>
-
-          <h3>{{_i}}Via JavaScript{{/i}}</h3>
-          <p>{{_i}}Call a modal with id <code>myModal</code> with a single line of JavaScript:{{/i}}</p>
-          <pre class="prettyprint linenums">$('#myModal').modal(options)</pre>
-
-          <h3>{{_i}}Options{{/i}}</h3>
-          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-backdrop=""</code>.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-               <th style="width: 50px;">{{_i}}type{{/i}}</th>
-               <th style="width: 50px;">{{_i}}default{{/i}}</th>
-               <th>{{_i}}description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}backdrop{{/i}}</td>
-               <td>{{_i}}boolean{{/i}}</td>
-               <td>{{_i}}true{{/i}}</td>
-               <td>{{_i}}Includes a modal-backdrop element. Alternatively, specify <code>static</code> for a backdrop which doesn't close the modal on click.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}keyboard{{/i}}</td>
-               <td>{{_i}}boolean{{/i}}</td>
-               <td>{{_i}}true{{/i}}</td>
-               <td>{{_i}}Closes the modal when escape key is pressed{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}show{{/i}}</td>
-               <td>{{_i}}boolean{{/i}}</td>
-               <td>{{_i}}true{{/i}}</td>
-               <td>{{_i}}Shows the modal when initialized.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}remote{{/i}}</td>
-               <td>{{_i}}path{{/i}}</td>
-               <td>{{_i}}false{{/i}}</td>
-               <td><p>{{_i}}If a remote url is provided, content will be loaded via jQuery's <code>load</code> method and injected into the <code>.modal-body</code>. If you're using the data api, you may alternatively use the <code>href</code> tag to specify the remote source. An example of this is shown below:{{/i}}</p>
-              <pre class="prettyprint linenums"><code>&lt;a data-toggle="modal" href="remote.html" data-target="#modal"&gt;click me&lt;/a&gt;</code></pre></td>
-             </tr>
-            </tbody>
-          </table>
-
-          <h3{{_i}}>Methods{{/i}}</h3>
-          <h4>.modal({{_i}}options{{/i}})</h4>
-          <p>{{_i}}Activates your content as a modal. Accepts an optional options <code>object</code>.{{/i}}</p>
-<pre class="prettyprint linenums">
-$('#myModal').modal({
-  keyboard: false
-})
-</pre>
-          <h4>.modal('toggle')</h4>
-          <p>{{_i}}Manually toggles a modal.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('toggle')</pre>
-          <h4>.modal('show')</h4>
-          <p>{{_i}}Manually opens a modal.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('show')</pre>
-          <h4>.modal('hide')</h4>
-          <p>{{_i}}Manually hides a modal.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#myModal').modal('hide')</pre>
-          <h3>{{_i}}Events{{/i}}</h3>
-          <p>{{_i}}Bootstrap's modal class exposes a few events for hooking into modal functionality.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-               <th>{{_i}}Description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}show{{/i}}</td>
-               <td>{{_i}}This event fires immediately when the <code>show</code> instance method is called.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}shown{{/i}}</td>
-               <td>{{_i}}This event is fired when the modal has been made visible to the user (will wait for css transitions to complete).{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}hide{{/i}}</td>
-               <td>{{_i}}This event is fired immediately when the <code>hide</code> instance method has been called.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}hidden{{/i}}</td>
-               <td>{{_i}}This event is fired when the modal has finished being hidden from the user (will wait for css transitions to complete).{{/i}}</td>
-             </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-$('#myModal').on('hidden', function () {
-  // {{_i}}do something…{{/i}}
-})
-</pre>
-        </section>
-
-
-
-        <!-- Dropdowns
-        ================================================== -->
-        <section id="dropdowns">
-          <div class="page-header">
-            <h1>{{_i}}Dropdowns{{/i}} <small>bootstrap-dropdown.js</small></h1>
-          </div>
-
-
-          <h2>{{_i}}Examples{{/i}}</h2>
-          <p>{{_i}}Add dropdown menus to nearly anything with this simple plugin, including the navbar, tabs, and pills.{{/i}}</p>
-
-          <h3>{{_i}}Within a navbar{{/i}}</h3>
-          <div class="bs-docs-example">
-            <div id="navbar-example" class="navbar navbar-static">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto;">
-                  <a class="brand" href="#">{{_i}}Project Name{{/i}}</a>
-                  <ul class="nav" role="navigation">
-                    <li class="dropdown">
-                      <a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://google.com">{{_i}}Action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#anotherAction">{{_i}}Another action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                      </ul>
-                    </li>
-                    <li class="dropdown">
-                      <a href="#" id="drop2" role="button" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown 2 {{/i}}<b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop2">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                  <ul class="nav pull-right">
-                    <li id="fat-menu" class="dropdown">
-                      <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown 3{{/i}} <b class="caret"></b></a>
-                      <ul class="dropdown-menu" role="menu" aria-labelledby="drop3">
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                        <li role="presentation" class="divider"></li>
-                        <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                </div>
-              </div>
-            </div> <!-- /navbar-example -->
-          </div> {{! /example }}
-
-          <h3>{{_i}}Within tabs{{/i}}</h3>
-          <div class="bs-docs-example">
-            <ul class="nav nav-pills">
-              <li class="active"><a href="#">{{_i}}Regular link{{/i}}</a></li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop4" role="button" data-toggle="dropdown" href="#">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop4">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop5" role="button" data-toggle="dropdown" href="#">{{_i}}Dropdown 2{{/i}} <b class="caret"></b></a>
-                <ul id="menu2" class="dropdown-menu" role="menu" aria-labelledby="drop5">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </li>
-              <li class="dropdown">
-                <a class="dropdown-toggle" id="drop5" role="button" data-toggle="dropdown" href="#">{{_i}}Dropdown 3{{/i}} <b class="caret"></b></a>
-                <ul id="menu3" class="dropdown-menu" role="menu" aria-labelledby="drop5">
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Another action{{/i}}</a></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Something else here{{/i}}</a></li>
-                  <li role="presentation" class="divider"></li>
-                  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">{{_i}}Separated link{{/i}}</a></li>
-                </ul>
-              </li>
-            </ul> <!-- /tabs -->
-          </div> {{! /example }}
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Usage{{/i}}</h2>
-
-          <h3>{{_i}}Via data attributes{{/i}}</h3>
-          <p>{{_i}}Add <code>data-toggle="dropdown"</code> to a link or button to toggle a dropdown.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;a class="dropdown-toggle" data-toggle="dropdown" href="#"&gt;Dropdown trigger&lt;/a&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-          <p>{{_i}}To keep URLs intact, use the <code>data-target</code> attribute instead of <code>href="#"</code>.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;div class="dropdown"&gt;
-  &lt;a class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="/page.html"&gt;
-    {{_i}}Dropdown{{/i}}
-    &lt;b class="caret"&gt;&lt;/b&gt;
-  &lt;/a&gt;
-  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"&gt;
-    ...
-  &lt;/ul&gt;
-&lt;/div&gt;
-</pre>
-
-          <h3>{{_i}}Via JavaScript{{/i}}</h3>
-          <p>{{_i}}Call the dropdowns via JavaScript:{{/i}}</p>
-          <pre class="prettyprint linenums">$('.dropdown-toggle').dropdown()</pre>
-
-          <h3>{{_i}}Options{{/i}}</h3>
-          <p><em>{{_i}}None{{/i}}</em></p>
-
-          <h3>{{_i}}Methods{{/i}}</h3>
-          <h4>$().dropdown('toggle')</h4>
-          <p>{{_i}}A programmatic api for toggling menus for a given navbar or tabbed navigation.{{/i}}</p>
-        </section>
-
-
-
-        <!-- ScrollSpy
-        ================================================== -->
-        <section id="scrollspy">
-          <div class="page-header">
-            <h1>{{_i}}ScrollSpy{{/i}} <small>bootstrap-scrollspy.js</small></h1>
-          </div>
-
-
-          <h2>{{_i}}Example in navbar{{/i}}</h2>
-          <p>{{_i}}The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.{{/i}}</p>
-          <div class="bs-docs-example">
-            <div id="navbarExample" class="navbar navbar-static">
-              <div class="navbar-inner">
-                <div class="container" style="width: auto;">
-                  <a class="brand" href="#">{{_i}}Project Name{{/i}}</a>
-                  <ul class="nav">
-                    <li><a href="#fat">@fat</a></li>
-                    <li><a href="#mdo">@mdo</a></li>
-                    <li class="dropdown">
-                      <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                      <ul class="dropdown-menu">
-                        <li><a href="#one">{{_i}}one{{/i}}</a></li>
-                        <li><a href="#two">{{_i}}two{{/i}}</a></li>
-                        <li class="divider"></li>
-                        <li><a href="#three">{{_i}}three{{/i}}</a></li>
-                      </ul>
-                    </li>
-                  </ul>
-                </div>
-              </div>
-            </div>
-            <div data-spy="scroll" data-target="#navbarExample" data-offset="0" class="scrollspy-example">
-              <h4 id="fat">@fat</h4>
-              <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
-              <h4 id="mdo">@mdo</h4>
-              <p>Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.</p>
-              <h4 id="one">one</h4>
-              <p>Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.</p>
-              <h4 id="two">two</h4>
-              <p>In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.</p>
-              <h4 id="three">three</h4>
-              <p>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</p>
-              <p>Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.
-              </p>
-            </div>
-          </div>{{! /example }}
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Usage{{/i}}</h2>
-
-          <h3>{{_i}}Via data attributes{{/i}}</h3>
-          <p>{{_i}}To easily add scrollspy behavior to your topbar navigation, just add <code>data-spy="scroll"</code> to the element you want to spy on (most typically this would be the body) and <code>data-target=".navbar"</code> to select which nav to use. You'll want to use scrollspy with a <code>.nav</code> component.{{/i}}</p>
-          <pre class="prettyprint linenums">&lt;body data-spy="scroll" data-target=".navbar"&gt;...&lt;/body&gt;</pre>
-
-          <h3>{{_i}}Via JavaScript{{/i}}</h3>
-          <p>{{_i}}Call the scrollspy via JavaScript:{{/i}}</p>
-          <pre class="prettyprint linenums">$('#navbar').scrollspy()</pre>
-
-          <div class="alert alert-info">
-            <strong>{{_i}}Heads up!{{/i}}</strong>
-            {{_i}}Navbar links must have resolvable id targets. For example, a <code>&lt;a href="#home"&gt;home&lt;/a&gt;</code> must correspond to something in the dom like <code>&lt;div id="home"&gt;&lt;/div&gt;</code>.{{/i}}
-          </div>
-
-          <h3>{{_i}}Methods{{/i}}</h3>
-          <h4>.scrollspy('refresh')</h4>
-          <p>{{_i}}When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:{{/i}}</p>
-<pre class="prettyprint linenums">
-$('[data-spy="scroll"]').each(function () {
-  var $spy = $(this).scrollspy('refresh')
-});
-</pre>
-
-          <h3>{{_i}}Options{{/i}}</h3>
-          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset=""</code>.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-               <th style="width: 100px;">{{_i}}type{{/i}}</th>
-               <th style="width: 50px;">{{_i}}default{{/i}}</th>
-               <th>{{_i}}description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}offset{{/i}}</td>
-               <td>{{_i}}number{{/i}}</td>
-               <td>{{_i}}10{{/i}}</td>
-               <td>{{_i}}Pixels to offset from top when calculating position of scroll.{{/i}}</td>
-             </tr>
-            </tbody>
-          </table>
-
-          <h3>{{_i}}Events{{/i}}</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-               <th>{{_i}}Description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}activate{{/i}}</td>
-               <td>{{_i}}This event fires whenever a new item becomes activated by the scrollspy.{{/i}}</td>
-            </tr>
-            </tbody>
-          </table>
-        </section>
-
-
-
-        <!-- Tabs
-        ================================================== -->
-        <section id="tabs">
-          <div class="page-header">
-            <h1>{{_i}}Togglable tabs{{/i}} <small>bootstrap-tab.js</small></h1>
-          </div>
-
-
-          <h2>{{_i}}Example tabs{{/i}}</h2>
-          <p>{{_i}}Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.{{/i}}</p>
-          <div class="bs-docs-example">
-            <ul id="myTab" class="nav nav-tabs">
-              <li class="active"><a href="#home" data-toggle="tab">{{_i}}Home{{/i}}</a></li>
-              <li><a href="#profile" data-toggle="tab">{{_i}}Profile{{/i}}</a></li>
-              <li class="dropdown">
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{_i}}Dropdown{{/i}} <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#dropdown1" data-toggle="tab">@fat</a></li>
-                  <li><a href="#dropdown2" data-toggle="tab">@mdo</a></li>
-                </ul>
-              </li>
-            </ul>
-            <div id="myTabContent" class="tab-content">
-              <div class="tab-pane fade in active" id="home">
-                <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>
-              </div>
-              <div class="tab-pane fade" id="profile">
-                <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>
-              </div>
-              <div class="tab-pane fade" id="dropdown1">
-                <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>
-              </div>
-              <div class="tab-pane fade" id="dropdown2">
-                <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>
-              </div>
-            </div>
-          </div>{{! /example }}
-
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Usage{{/i}}</h2>
-          <p>{{_i}}Enable tabbable tabs via JavaScript (each tab needs to be activated individually):{{/i}}</p>
-<pre class="prettyprint linenums">
-$('#myTab a').click(function (e) {
-  e.preventDefault();
-  $(this).tab('show');
-})</pre>
-          <p>{{_i}}You can activate individual tabs in several ways:{{/i}}</p>
-<pre class="prettyprint linenums">
-$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
-$('#myTab a:first').tab('show'); // Select first tab
-$('#myTab a:last').tab('show'); // Select last tab
-$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)
-</pre>
-
-          <h3>{{_i}}Markup{{/i}}</h3>
-          <p>{{_i}}You can activate a tab or pill navigation without writing any JavaScript by simply specifying <code>data-toggle="tab"</code> or <code>data-toggle="pill"</code> on an element. Adding the <code>nav</code> and <code>nav-tabs</code> classes to the tab <code>ul</code> will apply the Bootstrap tab styling.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs"&gt;
-  &lt;li&gt;&lt;a href="#home" data-toggle="tab"&gt;{{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#profile" data-toggle="tab"&gt;{{_i}}Profile{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#messages" data-toggle="tab"&gt;{{_i}}Messages{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#settings" data-toggle="tab"&gt;{{_i}}Settings{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;</pre>
-
-          <h3>{{_i}}Methods{{/i}}</h3>
-          <h4>$().tab</h4>
-          <p>
-            {{_i}}Activates a tab element and content container. Tab should have either a <code>data-target</code> or an <code>href</code> targeting a container node in the DOM.{{/i}}
-          </p>
-<pre class="prettyprint linenums">
-&lt;ul class="nav nav-tabs" id="myTab"&gt;
-  &lt;li class="active"&gt;&lt;a href="#home"&gt;{{_i}}Home{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#profile"&gt;{{_i}}Profile{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#messages"&gt;{{_i}}Messages{{/i}}&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;&lt;a href="#settings"&gt;{{_i}}Settings{{/i}}&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;div class="tab-content"&gt;
-  &lt;div class="tab-pane active" id="home"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="profile"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="messages"&gt;...&lt;/div&gt;
-  &lt;div class="tab-pane" id="settings"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-
-&lt;script&gt;
-  $(function () {
-    $('#myTab a:last').tab('show');
-  })
-&lt;/script&gt;
-</pre>
-
-          <h3>{{_i}}Events{{/i}}</h3>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-               <th>{{_i}}Description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}show{{/i}}</td>
-               <td>{{_i}}This event fires on tab show, but before the new tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.{{/i}}</td>
-            </tr>
-            <tr>
-               <td>{{_i}}shown{{/i}}</td>
-               <td>{{_i}}This event fires on tab show after a tab has been shown. Use <code>event.target</code> and <code>event.relatedTarget</code> to target the active tab and the previous active tab (if available) respectively.{{/i}}</td>
-             </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-$('a[data-toggle="tab"]').on('shown', function (e) {
-  e.target // activated tab
-  e.relatedTarget // previous tab
-})
-</pre>
-        </section>
-
-
-        <!-- Tooltips
-        ================================================== -->
-        <section id="tooltips">
-          <div class="page-header">
-            <h1>{{_i}}Tooltips{{/i}} <small>bootstrap-tooltip.js</small></h1>
-          </div>
-
-
-          <h2>{{_i}}Examples{{/i}}</h2>
-          <p>{{_i}}Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.{{/i}}</p>
-          <p>{{_i}}For performance reasons, the tooltip and popover data-apis are opt in, meaning <strong>you must initialize them yourself</strong>.{{/i}}</p>
-          <p>{{_i}}Hover over the links below to see tooltips:{{/i}}</p>
-          <div class="bs-docs-example tooltip-demo">
-            <p class="muted" style="margin-bottom: 0;">{{_i}}Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="A much longer tooltip belongs right here to demonstrate the max-width we apply.">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.{{/i}}
-            </p>
-          </div>{{! /example }}
-
-          <h3>{{_i}}Four directions{{/i}}</h3>
-          <div class="bs-docs-example tooltip-demo">
-            <ul class="bs-docs-tooltip-examples">
-              <li><a href="#" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</a></li>
-              <li><a href="#" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</a></li>
-            </ul>
-          </div>{{! /example }}
-
-
-          <h3>{{_i}}Tooltips in input groups{{/i}}</h3>
-          <p>{{_i}}When using tooltips and popovers with the Bootstrap input groups, you'll have to set the <code>container</code> (documented below) option to avoid unwanted side effects.{{/i}}</p>
-
-          <hr class="bs-docs-separator">
-
-
-          <h2>{{_i}}Usage{{/i}}</h2>
-          <p>{{_i}}Trigger the tooltip via JavaScript:{{/i}}</p>
-          <pre class="prettyprint linenums">$('#example').tooltip({{_i}}options{{/i}})</pre>
-
-          <h3>{{_i}}Options{{/i}}</h3>
-          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-               <th style="width: 100px;">{{_i}}type{{/i}}</th>
-               <th style="width: 50px;">{{_i}}default{{/i}}</th>
-               <th>{{_i}}description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}animation{{/i}}</td>
-               <td>{{_i}}boolean{{/i}}</td>
-               <td>true</td>
-               <td>{{_i}}apply a css fade transition to the tooltip{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}html{{/i}}</td>
-               <td>{{_i}}boolean{{/i}}</td>
-               <td>false</td>
-               <td>{{_i}}Insert html into the tooltip. If false, jquery's <code>text</code> method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}placement{{/i}}</td>
-               <td>{{_i}}string | function{{/i}}</td>
-               <td>'top'</td>
-               <td>{{_i}}how to position the tooltip{{/i}} - top | bottom | left | right</td>
-             </tr>
-             <tr>
-               <td>{{_i}}selector{{/i}}</td>
-               <td>{{_i}}string{{/i}}</td>
-               <td>false</td>
-               <td>{{_i}}If a selector is provided, tooltip objects will be delegated to the specified targets.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}title{{/i}}</td>
-               <td>{{_i}}string | function{{/i}}</td>
-               <td>''</td>
-               <td>{{_i}}default title value if `title` tag isn't present{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}trigger{{/i}}</td>
-               <td>{{_i}}string{{/i}}</td>
-               <td>'hover focus'</td>
-               <td>{{_i}}how tooltip is triggered{{/i}} - click | hover | focus | manual. {{_i}}Note you case pass trigger mutliple, space seperated, trigger types.{{/i}}</td>
-             </tr>
-             <tr>
-               <td>{{_i}}delay{{/i}}</td>
-               <td>{{_i}}number | object{{/i}}</td>
-               <td>0</td>
-               <td>
-                <p>{{_i}}delay showing and hiding the tooltip (ms) - does not apply to manual trigger type{{/i}}</p>
-                <p>{{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}</p>
-                <p>{{_i}}Object structure is: <code>delay: { show: 500, hide: 100 }</code>{{/i}}</p>
-               </td>
-             </tr>
-             <tr>
-               <td>{{_i}}container{{/i}}</td>
-               <td>{{_i}}string | false{{/i}}</td>
-               <td>{{_i}}false{{/i}}</td>
-               <td>
-                <p>{{_i}}Appends the tooltip to a specific element <code>container: 'body'</code>{{/i}}</p>
-               </td>
-             </tr>
-            </tbody>
-          </table>
-          <div class="alert alert-info">
-            <strong>{{_i}}Heads up!{{/i}}</strong>
-            {{_i}}Options for individual tooltips can alternatively be specified through the use of data attributes.{{/i}}
-          </div>
-
-          <h3>{{_i}}Markup{{/i}}</h3>
-          <pre class="prettyprint linenums">&lt;a href="#" data-toggle="tooltip" title="{{_i}}first tooltip{{/i}}"&gt;{{_i}}hover over me{{/i}}&lt;/a&gt;</pre>
-
-          <h3>{{_i}}Methods{{/i}}</h3>
-          <h4>$().tooltip({{_i}}options{{/i}})</h4>
-          <p>{{_i}}Attaches a tooltip handler to an element collection.{{/i}}</p>
-          <h4>.tooltip('show')</h4>
-          <p>{{_i}}Reveals an element's tooltip.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('show')</pre>
-          <h4>.tooltip('hide')</h4>
-          <p>{{_i}}Hides an element's tooltip.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('hide')</pre>
-          <h4>.tooltip('toggle')</h4>
-          <p>{{_i}}Toggles an element's tooltip.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('toggle')</pre>
-          <h4>.tooltip('destroy')</h4>
-          <p>{{_i}}Hides and destroys an element's tooltip.{{/i}}</p>
-          <pre class="prettyprint linenums">$('#element').tooltip('destroy')</pre>
-        </section>
-
-
-
-      <!-- Popovers
-      ================================================== -->
-      <section id="popovers">
-        <div class="page-header">
-          <h1>{{_i}}Popovers{{/i}} <small>bootstrap-popover.js</small></h1>
-        </div>
-
-        <h2>{{_i}}Examples{{/i}}</h2>
-        <p>{{_i}}Add small overlays of content, like those on the iPad, to any element for housing secondary information. Hover over the button to trigger the popover. <strong>Requires <a href="#tooltips">Tooltip</a> to be included.</strong>{{/i}}</p>
-
-        <h3>{{_i}}Static popover{{/i}}</h3>
-        <p>{{_i}}Four options are available: top, right, bottom, and left aligned.{{/i}}</p>
-        <div class="bs-docs-example bs-docs-example-popover">
-          <div class="popover top">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover top</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover right">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover right</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover bottom">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover bottom</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="popover left">
-            <div class="arrow"></div>
-            <h3 class="popover-title">Popover left</h3>
-            <div class="popover-content">
-              <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-            </div>
-          </div>
-
-          <div class="clearfix"></div>
-        </div>
-        <p>{{_i}}No markup shown as popovers are generated from JavaScript and content within a <code>data</code> attribute.{{/i}}</p>
-
-        <h3>Live demo</h3>
-        <div class="bs-docs-example" style="padding-bottom: 24px;">
-          <a href="#" class="btn btn-large btn-danger" data-toggle="popover" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">{{_i}}Click to toggle popover{{/i}}</a>
-        </div>
-
-        <h4>{{_i}}Four directions{{/i}}</h4>
-        <div class="bs-docs-example tooltip-demo">
-          <ul class="bs-docs-tooltip-examples">
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on top">Popover on top</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on right">Popover on right</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on bottom">Popover on bottom</a></li>
-            <li><a href="#" class="btn" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus." title="Popover on left">Popover on left</a></li>
-          </ul>
-        </div>{{! /example }}
-
-
-        <hr class="bs-docs-separator">
-
-
-        <h2>{{_i}}Usage{{/i}}</h2>
-        <p>{{_i}}Enable popovers via JavaScript:{{/i}}</p>
-        <pre class="prettyprint linenums">$('#example').popover({{_i}}options{{/i}})</pre>
-
-        <h3>{{_i}}Options{{/i}}</h3>
-        <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.{{/i}}</p>
-        <table class="table table-bordered table-striped">
-          <thead>
-           <tr>
-             <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-             <th style="width: 100px;">{{_i}}type{{/i}}</th>
-             <th style="width: 50px;">{{_i}}default{{/i}}</th>
-             <th>{{_i}}description{{/i}}</th>
-           </tr>
-          </thead>
-          <tbody>
-           <tr>
-             <td>{{_i}}animation{{/i}}</td>
-             <td>{{_i}}boolean{{/i}}</td>
-             <td>true</td>
-             <td>{{_i}}apply a css fade transition to the tooltip{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}html{{/i}}</td>
-             <td>{{_i}}boolean{{/i}}</td>
-             <td>false</td>
-             <td>{{_i}}Insert html into the popover. If false, jquery's <code>text</code> method will be used to insert content into the dom. Use text if you're worried about XSS attacks.{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}placement{{/i}}</td>
-             <td>{{_i}}string | function{{/i}}</td>
-             <td>'right'</td>
-             <td>{{_i}}how to position the popover{{/i}} - top | bottom | left | right</td>
-           </tr>
-           <tr>
-             <td>{{_i}}selector{{/i}}</td>
-             <td>{{_i}}string{{/i}}</td>
-             <td>false</td>
-             <td>{{_i}}if a selector is provided, tooltip objects will be delegated to the specified targets{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}trigger{{/i}}</td>
-             <td>{{_i}}string{{/i}}</td>
-             <td>'click'</td>
-             <td>{{_i}}how popover is triggered{{/i}} - click | hover | focus | manual</td>
-           </tr>
-           <tr>
-             <td>{{_i}}title{{/i}}</td>
-             <td>{{_i}}string | function{{/i}}</td>
-             <td>''</td>
-             <td>{{_i}}default title value if `title` attribute isn't present{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}content{{/i}}</td>
-             <td>{{_i}}string | function{{/i}}</td>
-             <td>''</td>
-             <td>{{_i}}default content value if `data-content` attribute isn't present{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}delay{{/i}}</td>
-             <td>{{_i}}number | object{{/i}}</td>
-             <td>0</td>
-             <td>
-              <p>{{_i}}delay showing and hiding the popover (ms) - does not apply to manual trigger type{{/i}}</p>
-              <p>{{_i}}If a number is supplied, delay is applied to both hide/show{{/i}}</p>
-              <p>{{_i}}Object structure is: <code>delay: { show: 500, hide: 100 }</code>{{/i}}</p>
-             </td>
-           </tr>
-           <tr>
-             <td>{{_i}}container{{/i}}</td>
-             <td>{{_i}}string | false{{/i}}</td>
-             <td>{{_i}}false{{/i}}</td>
-             <td>
-              <p>{{_i}}Appends the popover to a specific element <code>container: 'body'</code>{{/i}}</p>
-             </td>
-           </tr>
-          </tbody>
-        </table>
-        <div class="alert alert-info">
-          <strong>{{_i}}Heads up!{{/i}}</strong>
-          {{_i}}Options for individual popovers can alternatively be specified through the use of data attributes.{{/i}}
-        </div>
-
-        <h3>{{_i}}Markup{{/i}}</h3>
-        <p>{{_i}}For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.{{/i}}</p>
-
-        <h3>{{_i}}Methods{{/i}}</h3>
-        <h4>$().popover({{_i}}options{{/i}})</h4>
-        <p>{{_i}}Initializes popovers for an element collection.{{/i}}</p>
-        <h4>.popover('show')</h4>
-        <p>{{_i}}Reveals an elements popover.{{/i}}</p>
-        <pre class="prettyprint linenums">$('#element').popover('show')</pre>
-        <h4>.popover('hide')</h4>
-        <p>{{_i}}Hides an elements popover.{{/i}}</p>
-        <pre class="prettyprint linenums">$('#element').popover('hide')</pre>
-        <h4>.popover('toggle')</h4>
-        <p>{{_i}}Toggles an elements popover.{{/i}}</p>
-        <pre class="prettyprint linenums">$('#element').popover('toggle')</pre>
-        <h4>.popover('destroy')</h4>
-        <p>{{_i}}Hides and destroys an element's popover.{{/i}}</p>
-        <pre class="prettyprint linenums">$('#element').popover('destroy')</pre>
-      </section>
-
-
-
-      <!-- Alert
-      ================================================== -->
-      <section id="alerts">
-        <div class="page-header">
-          <h1>{{_i}}Alert messages{{/i}} <small>bootstrap-alert.js</small></h1>
-        </div>
-
-
-        <h2>{{_i}}Example alerts{{/i}}</h2>
-        <p>{{_i}}Add dismiss functionality to all alert messages with this plugin.{{/i}}</p>
-        <div class="bs-docs-example">
-          <div class="alert fade in">
-            <button type="button" class="close" data-dismiss="alert">&times;</button>
-            <strong>{{_i}}Holy guacamole!{{/i}}</strong> {{_i}}Best check yo self, you're not looking too good.{{/i}}
-          </div>
-        </div>{{! /example }}
-
-        <div class="bs-docs-example">
-          <div class="alert alert-block alert-error fade in">
-            <button type="button" class="close" data-dismiss="alert">&times;</button>
-            <h4 class="alert-heading">{{_i}}Oh snap! You got an error!{{/i}}</h4>
-            <p>{{_i}}Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.{{/i}}</p>
-            <p>
-              <a class="btn btn-danger" href="#">{{_i}}Take this action{{/i}}</a> <a class="btn" href="#">{{_i}}Or do this{{/i}}</a>
-            </p>
-          </div>
-        </div>{{! /example }}
-
-
-        <hr class="bs-docs-separator">
-
-
-        <h2>{{_i}}Usage{{/i}}</h2>
-        <p>{{_i}}Enable dismissal of an alert via JavaScript:{{/i}}</p>
-        <pre class="prettyprint linenums">$(".alert").alert()</pre>
-
-        <h3>{{_i}}Markup{{/i}}</h3>
-        <p>{{_i}}Just add <code>data-dismiss="alert"</code> to your close button to automatically give an alert close functionality.{{/i}}</p>
-        <pre class="prettyprint linenums">&lt;a class="close" data-dismiss="alert" href="#"&gt;&amp;times;&lt;/a&gt;</pre>
-
-        <h3>{{_i}}Methods{{/i}}</h3>
-        <h4>$().alert()</h4>
-        <p>{{_i}}Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the <code>.fade</code> and <code>.in</code> class already applied to them.{{/i}}</p>
-        <h4>.alert('close')</h4>
-        <p>{{_i}}Closes an alert.{{/i}}</p>
-        <pre class="prettyprint linenums">$(".alert").alert('close')</pre>
-
-
-        <h3>{{_i}}Events{{/i}}</h3>
-        <p>{{_i}}Bootstrap's alert class exposes a few events for hooking into alert functionality.{{/i}}</p>
-        <table class="table table-bordered table-striped">
-          <thead>
-           <tr>
-             <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-             <th>{{_i}}Description{{/i}}</th>
-           </tr>
-          </thead>
-          <tbody>
-           <tr>
-             <td>{{_i}}close{{/i}}</td>
-             <td>{{_i}}This event fires immediately when the <code>close</code> instance method is called.{{/i}}</td>
-           </tr>
-           <tr>
-             <td>{{_i}}closed{{/i}}</td>
-             <td>{{_i}}This event is fired when the alert has been closed (will wait for css transitions to complete).{{/i}}</td>
-           </tr>
-          </tbody>
-        </table>
-<pre class="prettyprint linenums">
-$('#my-alert').bind('closed', function () {
-  // {{_i}}do something…{{/i}}
-})
-</pre>
-      </section>
-
-
-
-          <!-- Buttons
-          ================================================== -->
-          <section id="buttons">
-            <div class="page-header">
-              <h1>{{_i}}Buttons{{/i}} <small>bootstrap-button.js</small></h1>
-            </div>
-
-            <h2>{{_i}}Example uses{{/i}}</h2>
-            <p>{{_i}}Do more with buttons. Control button states or create groups of buttons for more components like toolbars.{{/i}}</p>
-
-            <h4>{{_i}}Stateful{{/i}}</h4>
-            <p>{{_i}}Add <code>data-loading-text="Loading..."</code> to use a loading state on a button.{{/i}}</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <button type="button" id="fat-btn" data-loading-text="loading..." class="btn btn-primary">
-                {{_i}}Loading state{{/i}}
-              </button>
-            </div>{{! /example }}
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn btn-primary" data-loading-text="Loading..."&gt;Loading state&lt;/button&gt;</pre>
-
-            <h4>{{_i}}Single toggle{{/i}}</h4>
-            <p>{{_i}}Add <code>data-toggle="button"</code> to activate toggling on a single button.{{/i}}</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <button type="button" class="btn btn-primary" data-toggle="button">{{_i}}Single Toggle{{/i}}</button>
-            </div>{{! /example }}
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn btn-primary" data-toggle="button"&gt;Single Toggle&lt;/button&gt;</pre>
-
-            <h4>{{_i}}Checkbox{{/i}}</h4>
-            <p>{{_i}}Add <code>data-toggle="buttons-checkbox"</code> for checkbox style toggling on btn-group.{{/i}}</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <div class="btn-group" data-toggle="buttons-checkbox">
-                <button type="button" class="btn btn-primary">{{_i}}Left{{/i}}</button>
-                <button type="button" class="btn btn-primary">{{_i}}Middle{{/i}}</button>
-                <button type="button" class="btn btn-primary">{{_i}}Right{{/i}}</button>
-              </div>
-            </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group" data-toggle="buttons-checkbox"&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Left&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Middle&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-            <h4>{{_i}}Radio{{/i}}</h4>
-            <p>{{_i}}Add <code>data-toggle="buttons-radio"</code> for radio style toggling on btn-group.{{/i}}</p>
-            <div class="bs-docs-example" style="padding-bottom: 24px;">
-              <div class="btn-group" data-toggle="buttons-radio">
-                <button type="button" class="btn btn-primary">{{_i}}Left{{/i}}</button>
-                <button type="button" class="btn btn-primary">{{_i}}Middle{{/i}}</button>
-                <button type="button" class="btn btn-primary">{{_i}}Right{{/i}}</button>
-              </div>
-            </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="btn-group" data-toggle="buttons-radio"&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Left&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Middle&lt;/button&gt;
-  &lt;button type="button" class="btn btn-primary"&gt;Right&lt;/button&gt;
-&lt;/div&gt;
-</pre>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>{{_i}}Usage{{/i}}</h2>
-            <p>{{_i}}Enable buttons via JavaScript:{{/i}}</p>
-            <pre class="prettyprint linenums">$('.nav-tabs').button()</pre>
-
-            <h3>{{_i}}Markup{{/i}}</h3>
-            <p>{{_i}}Data attributes are integral to the button plugin. Check out the example code below for the various markup types.{{/i}}</p>
-
-            <h3>{{_i}}Options{{/i}}</h3>
-            <p><em>{{_i}}None{{/i}}</em></p>
-
-            <h3>{{_i}}Methods{{/i}}</h3>
-            <h4>$().button('toggle')</h4>
-            <p>{{_i}}Toggles push state. Gives the button the appearance that it has been activated.{{/i}}</p>
-            <div class="alert alert-info">
-              <strong>{{_i}}Heads up!{{/i}}</strong>
-              {{_i}}You can enable auto toggling of a button by using the <code>data-toggle</code> attribute.{{/i}}
-            </div>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn" data-toggle="button" &gt;…&lt;/button&gt;</pre>
-            <h4>$().button('loading')</h4>
-            <p>{{_i}}Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute <code>data-loading-text</code>.{{/i}}
-            </p>
-            <pre class="prettyprint linenums">&lt;button type="button" class="btn" data-loading-text="loading stuff..." &gt;...&lt;/button&gt;</pre>
-            <div class="alert alert-info">
-              <strong>{{_i}}Heads up!{{/i}}</strong>
-              {{_i}}<a href="https://github.com/twitter/bootstrap/issues/793">Firefox persists the disabled state across page loads</a>. A workaround for this is to use <code>autocomplete="off"</code>.{{/i}}
-            </div>
-            <h4>$().button('reset')</h4>
-            <p>{{_i}}Resets button state - swaps text to original text.{{/i}}</p>
-            <h4>$().button(string)</h4>
-            <p>{{_i}}Resets button state - swaps text to any data defined text state.{{/i}}</p>
-<pre class="prettyprint linenums">&lt;button type="button" class="btn" data-complete-text="finished!" &gt;...&lt;/button&gt;
-&lt;script&gt;
-  $('.btn').button('complete')
-&lt;/script&gt;
-</pre>
-          </section>
-
-
-
-          <!-- Collapse
-          ================================================== -->
-          <section id="collapse">
-            <div class="page-header">
-              <h1>{{_i}}Collapse{{/i}} <small>bootstrap-collapse.js</small></h1>
-            </div>
-
-            <h3>{{_i}}About{{/i}}</h3>
-            <p>{{_i}}Get base styles and flexible support for collapsible components like accordions and navigation.{{/i}}</p>
-            <p class="muted"><strong>*</strong> {{_i}}Requires the Transitions plugin to be included.{{/i}}</p>
-
-            <h2>{{_i}}Example accordion{{/i}}</h2>
-            <p>{{_i}}Using the collapse plugin, we built a simple accordion style widget:{{/i}}</p>
-
-            <div class="bs-docs-example">
-              <div class="accordion" id="accordion2">
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
-                      {{_i}}Collapsible Group Item #1{{/i}}
-                    </a>
-                  </div>
-                  <div id="collapseOne" class="accordion-body collapse in">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
-                      {{_i}}Collapsible Group Item #2{{/i}}
-                    </a>
-                  </div>
-                  <div id="collapseTwo" class="accordion-body collapse">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-                <div class="accordion-group">
-                  <div class="accordion-heading">
-                    <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
-                      {{_i}}Collapsible Group Item #3{{/i}}
-                    </a>
-                  </div>
-                  <div id="collapseThree" class="accordion-body collapse">
-                    <div class="accordion-inner">
-                      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div class="accordion" id="accordion2"&gt;
-  &lt;div class="accordion-group"&gt;
-    &lt;div class="accordion-heading"&gt;
-      &lt;a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne"&gt;
-        {{_i}}Collapsible Group Item #1{{/i}}
-      &lt;/a&gt;
-    &lt;/div&gt;
-    &lt;div id="collapseOne" class="accordion-body collapse in"&gt;
-      &lt;div class="accordion-inner"&gt;
-        Anim pariatur cliche...
-      &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-  &lt;div class="accordion-group"&gt;
-    &lt;div class="accordion-heading"&gt;
-      &lt;a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo"&gt;
-        {{_i}}Collapsible Group Item #2{{/i}}
-      &lt;/a&gt;
-    &lt;/div&gt;
-    &lt;div id="collapseTwo" class="accordion-body collapse"&gt;
-      &lt;div class="accordion-inner"&gt;
-        Anim pariatur cliche...
-      &lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-...
-</pre>
-            <p>{{_i}}You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo"&gt;
-  {{_i}}simple collapsible{{/i}}
-&lt;/button&gt;
-
-&lt;div id="demo" class="collapse in"&gt; … &lt;/div&gt;
-</pre>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>{{_i}}Usage{{/i}}</h2>
-
-            <h3>{{_i}}Via data attributes{{/i}}</h3>
-            <p>{{_i}}Just add <code>data-toggle="collapse"</code> and a <code>data-target</code> to element to automatically assign control of a collapsible element. The <code>data-target</code> attribute accepts a css selector to apply the collapse to. Be sure to add the class <code>collapse</code> to the collapsible element. If you'd like it to default open, add the additional class <code>in</code>.{{/i}}</p>
-            <p>{{_i}}To add accordion-like group management to a collapsible control, add the data attribute <code>data-parent="#selector"</code>. Refer to the demo to see this in action.{{/i}}</p>
-
-            <h3>{{_i}}Via JavaScript{{/i}}</h3>
-            <p>{{_i}}Enable manually with:{{/i}}</p>
-            <pre class="prettyprint linenums">$(".collapse").collapse()</pre>
-
-            <h3>{{_i}}Options{{/i}}</h3>
-            <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-parent=""</code>.{{/i}}</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-                 <th style="width: 50px;">{{_i}}type{{/i}}</th>
-                 <th style="width: 50px;">{{_i}}default{{/i}}</th>
-                 <th>{{_i}}description{{/i}}</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>{{_i}}parent{{/i}}</td>
-                 <td>{{_i}}selector{{/i}}</td>
-                 <td>false</td>
-                 <td>{{_i}}If selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior){{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}toggle{{/i}}</td>
-                 <td>{{_i}}boolean{{/i}}</td>
-                 <td>true</td>
-                 <td>{{_i}}Toggles the collapsible element on invocation{{/i}}</td>
-               </tr>
-              </tbody>
-            </table>
-
-
-            <h3>{{_i}}Methods{{/i}}</h3>
-            <h4>.collapse({{_i}}options{{/i}})</h4>
-            <p>{{_i}}Activates your content as a collapsible element. Accepts an optional options <code>object</code>.{{/i}}
-<pre class="prettyprint linenums">
-$('#myCollapsible').collapse({
-  toggle: false
-})
-</pre>
-            <h4>.collapse('toggle')</h4>
-            <p>{{_i}}Toggles a collapsible element to shown or hidden.{{/i}}</p>
-            <h4>.collapse('show')</h4>
-            <p>{{_i}}Shows a collapsible element.{{/i}}</p>
-            <h4>.collapse('hide')</h4>
-            <p>{{_i}}Hides a collapsible element.{{/i}}</p>
-
-            <h3>{{_i}}Events{{/i}}</h3>
-            <p>{{_i}}Bootstrap's collapse class exposes a few events for hooking into collapse functionality.{{/i}}</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-                 <th>{{_i}}Description{{/i}}</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>{{_i}}show{{/i}}</td>
-                 <td>{{_i}}This event fires immediately when the <code>show</code> instance method is called.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}shown{{/i}}</td>
-                 <td>{{_i}}This event is fired when a collapse element has been made visible to the user (will wait for css transitions to complete).{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}hide{{/i}}</td>
-                 <td>
-                  {{_i}}This event is fired immediately when the <code>hide</code> method has been called.{{/i}}
-                 </td>
-               </tr>
-               <tr>
-                 <td>{{_i}}hidden{{/i}}</td>
-                 <td>{{_i}}This event is fired when a collapse element has been hidden from the user (will wait for css transitions to complete).{{/i}}</td>
-               </tr>
-              </tbody>
-            </table>
-<pre class="prettyprint linenums">
-$('#myCollapsible').on('hidden', function () {
-  // {{_i}}do something…{{/i}}
-})</pre>
-          </section>
-
-
-
-           <!-- Carousel
-          ================================================== -->
-          <section id="carousel">
-            <div class="page-header">
-              <h1>{{_i}}Carousel{{/i}} <small>bootstrap-carousel.js</small></h1>
-            </div>
-
-            <h2>{{_i}}Example carousel{{/i}}</h2>
-            <p>{{_i}}The slideshow below shows a generic plugin and component for cycling through elements like a carousel.{{/i}}</p>
-            <div class="bs-docs-example">
-              <div id="myCarousel" class="carousel slide">
-                <ol class="carousel-indicators">
-                  <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
-                  <li data-target="#myCarousel" data-slide-to="1"></li>
-                  <li data-target="#myCarousel" data-slide-to="2"></li>
-                </ol>
-                <div class="carousel-inner">
-                  <div class="item active">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>{{_i}}First Thumbnail label{{/i}}</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                  <div class="item">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-02.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>{{_i}}Second Thumbnail label{{/i}}</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                  <div class="item">
-                    <img src="assets/img/bootstrap-mdo-sfmoma-03.jpg" alt="">
-                    <div class="carousel-caption">
-                      <h4>{{_i}}Third Thumbnail label{{/i}}</h4>
-                      <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
-                    </div>
-                  </div>
-                </div>
-                <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>
-                <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>
-              </div>
-            </div>{{! /example }}
-<pre class="prettyprint linenums">
-&lt;div id="myCarousel" class="carousel slide"&gt;
-  &lt;ol class="carousel-indicators"&gt
-    &lt;li data-target="#myCarousel" data-slide-to="0" class="active"&gt&lt;/li&gt
-    &lt;li data-target="#myCarousel" data-slide-to="1"&gt&lt;/li&gt
-    &lt;li data-target="#myCarousel" data-slide-to="2"&gt&lt;/li&gt
-  &lt;/ol&gt
-  &lt;!-- {{_i}}Carousel items{{/i}} --&gt;
-  &lt;div class="carousel-inner"&gt;
-    &lt;div class="active item"&gt;…&lt;/div&gt;
-    &lt;div class="item"&gt;…&lt;/div&gt;
-    &lt;div class="item"&gt;…&lt;/div&gt;
-  &lt;/div&gt;
-  &lt;!-- {{_i}}Carousel nav{{/i}} --&gt;
-  &lt;a class="carousel-control left" href="#myCarousel" data-slide="prev"&gt;&amp;lsaquo;&lt;/a&gt;
-  &lt;a class="carousel-control right" href="#myCarousel" data-slide="next"&gt;&amp;rsaquo;&lt;/a&gt;
-&lt;/div&gt;
-</pre>
-
-            <div class="alert alert-warning">
-              <strong>{{_i}}Heads up!{{/i}}</strong>
-              {{_i}}When implementing this carousel, remove the images we have provided and replace them with your own.{{/i}}
-            </div>
-
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>{{_i}}Usage{{/i}}</h2>
-
-            <h3>{{_i}}Via data attributes{{/i}}</h3>
-            <p>{{_i}}Use data attributes to easily control the position of the carousel. <code>data-slide</code> accepts the keywords <code>prev</code> or <code>next</code>, which alters the slide position relative to it's current position. Alternatively, use <code>data-slide-to</code> to pass a raw slide index to the carousel <code>data-slide-to="2"</code>, which jump's the slide position to a particular index beginning with <code>0</code>.{{/i}}</p>
-
-            <h3>{{_i}}Via JavaScript{{/i}}</h3>
-            <p>{{_i}}Call carousel manually with:{{/i}}</p>
-            <pre class="prettyprint linenums">$('.carousel').carousel()</pre>
-
-            <h3>{{_i}}Options{{/i}}</h3>
-            <p>{{_i}}Options can be passed via data attributes or JavaScriptz. For data attributes, append the option name to <code>data-</code>, as in <code>data-interval=""</code>.{{/i}}</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-                 <th style="width: 50px;">{{_i}}type{{/i}}</th>
-                 <th style="width: 50px;">{{_i}}default{{/i}}</th>
-                 <th>{{_i}}description{{/i}}</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>{{_i}}interval{{/i}}</td>
-                 <td>{{_i}}number{{/i}}</td>
-                 <td>5000</td>
-                 <td>{{_i}}The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}pause{{/i}}</td>
-                 <td>{{_i}}string{{/i}}</td>
-                 <td>"hover"</td>
-                 <td>{{_i}}Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.{{/i}}</td>
-               </tr>
-              </tbody>
-            </table>
-
-            <h3>{{_i}}Methods{{/i}}</h3>
-            <h4>.carousel({{_i}}options{{/i}})</h4>
-            <p>{{_i}}Initializes the carousel with an optional options <code>object</code> and starts cycling through items.{{/i}}</p>
-<pre class="prettyprint linenums">
-$('.carousel').carousel({
-  interval: 2000
-})
-</pre>
-            <h4>.carousel('cycle')</h4>
-            <p>{{_i}}Cycles through the carousel items from left to right.{{/i}}</p>
-            <h4>.carousel('pause')</h4>
-            <p>{{_i}}Stops the carousel from cycling through items.{{/i}}</p>
-            <h4>.carousel(number)</h4>
-            <p>{{_i}}Cycles the carousel to a particular frame (0 based, similar to an array).{{/i}}</p>
-            <h4>.carousel('prev')</h4>
-            <p>{{_i}}Cycles to the previous item.{{/i}}</p>
-            <h4>.carousel('next')</h4>
-            <p>{{_i}}Cycles to the next item.{{/i}}</p>
-
-            <h3>{{_i}}Events{{/i}}</h3>
-            <p>{{_i}}Bootstrap's carousel class exposes two events for hooking into carousel functionality.{{/i}}</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 150px;">{{_i}}Event{{/i}}</th>
-                 <th>{{_i}}Description{{/i}}</th>
-               </tr>
-              </thead>
-              <tbody>
-               <tr>
-                 <td>{{_i}}slide{{/i}}</td>
-                 <td>{{_i}}This event fires immediately when the <code>slide</code> instance method is invoked.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}slid{{/i}}</td>
-                 <td>{{_i}}This event is fired when the carousel has completed its slide transition.{{/i}}</td>
-               </tr>
-              </tbody>
-            </table>
-          </section>
-
-
-
-          <!-- Typeahead
-          ================================================== -->
-          <section id="typeahead">
-            <div class="page-header">
-              <h1>{{_i}}Typeahead{{/i}} <small>bootstrap-typeahead.js</small></h1>
-            </div>
-
-
-            <h2>{{_i}}Example{{/i}}</h2>
-            <p>{{_i}}A basic, easily extended plugin for quickly creating elegant typeaheads with any form text input.{{/i}}</p>
-            <div class="bs-docs-example" style="background-color: #f5f5f5;">
-              <input type="text" class="span3" style="margin: 0 auto;" data-provide="typeahead" data-items="4" data-source='["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Dakota","North Carolina","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]'>
-            </div>{{! /example }}
-            <pre class="prettyprint linenums">&lt;input type="text" data-provide="typeahead"&gt;</pre>
-            <p>You'll want to set <code>autocomplete="off"</code> to prevent default browser menus from appearing over the Bootstrap typeahead dropdown.</p>
-
-            <hr class="bs-docs-separator">
-
-
-            <h2>{{_i}}Usage{{/i}}</h2>
-
-            <h3>{{_i}}Via data attributes{{/i}}</h3>
-            <p>{{_i}}Add data attributes to register an element with typeahead functionality as shown in the example above.{{/i}}</p>
-
-            <h3>{{_i}}Via JavaScript{{/i}}</h3>
-            <p>{{_i}}Call the typeahead manually with:{{/i}}</p>
-            <pre class="prettyprint linenums">$('.typeahead').typeahead()</pre>
-
-            <h3>{{_i}}Options{{/i}}</h3>
-            <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-source=""</code>.{{/i}}</p>
-            <table class="table table-bordered table-striped">
-              <thead>
-               <tr>
-                 <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-                 <th style="width: 50px;">{{_i}}type{{/i}}</th>
-                 <th style="width: 100px;">{{_i}}default{{/i}}</th>
-                 <th>{{_i}}description{{/i}}</th>
-               </tr>
-              </thead>
-              <tbody>
-                <tr>
-                 <td>{{_i}}source{{/i}}</td>
-                 <td>{{_i}}array, function{{/i}}</td>
-                 <td>[ ]</td>
-                 <td>{{_i}}The data source to query against. May be an array of strings or a function. The function is passed two arguments, the <code>query</code> value in the input field and the <code>process</code> callback. The function may be used synchronously by returning the data source directly or asynchronously via the <code>process</code> callback's single argument.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}items{{/i}}</td>
-                 <td>{{_i}}number{{/i}}</td>
-                 <td>8</td>
-                 <td>{{_i}}The max number of items to display in the dropdown.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}minLength{{/i}}</td>
-                 <td>{{_i}}number{{/i}}</td>
-                 <td>{{_i}}1{{/i}}</td>
-                 <td>{{_i}}The minimum character length needed before triggering autocomplete suggestions{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}matcher{{/i}}</td>
-                 <td>{{_i}}function{{/i}}</td>
-                 <td>{{_i}}case insensitive{{/i}}</td>
-                 <td>{{_i}}The method used to determine if a query matches an item. Accepts a single argument, the <code>item</code> against which to test the query. Access the current query with <code>this.query</code>. Return a boolean <code>true</code> if query is a match.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}sorter{{/i}}</td>
-                 <td>{{_i}}function{{/i}}</td>
-                 <td>{{_i}}exact match,<br> case sensitive,<br> case insensitive{{/i}}</td>
-                 <td>{{_i}}Method used to sort autocomplete results. Accepts a single argument <code>items</code> and has the scope of the typeahead instance. Reference the current query with <code>this.query</code>.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}updater{{/i}}</td>
-                 <td>{{_i}}function{{/i}}</td>
-                 <td>{{_i}}returns selected item{{/i}}</td>
-                 <td>{{_i}}The method used to return selected item. Accepts a single argument, the <code>item</code> and has the scope of the typeahead instance.{{/i}}</td>
-               </tr>
-               <tr>
-                 <td>{{_i}}highlighter{{/i}}</td>
-                 <td>{{_i}}function{{/i}}</td>
-                 <td>{{_i}}highlights all default matches{{/i}}</td>
-                 <td>{{_i}}Method used to highlight autocomplete results. Accepts a single argument <code>item</code> and has the scope of the typeahead instance. Should return html.{{/i}}</td>
-               </tr>
-              </tbody>
-            </table>
-
-            <h3>{{_i}}Methods{{/i}}</h3>
-            <h4>.typeahead({{_i}}options{{/i}})</h4>
-            <p>{{_i}}Initializes an input with a typeahead.{{/i}}</p>
-          </section>
-
-
-
-          <!-- Affix
-          ================================================== -->
-          <section id="affix">
-            <div class="page-header">
-              <h1>{{_i}}Affix{{/i}} <small>bootstrap-affix.js</small></h1>
-            </div>
-
-            <h2>{{_i}}Example{{/i}}</h2>
-            <p>{{_i}}The subnavigation on the left is a live demo of the affix plugin.{{/i}}</p>
-
-            <hr class="bs-docs-separator">
-
-            <h2>{{_i}}Usage{{/i}}</h2>
-
-            <h3>{{_i}}Via data attributes{{/i}}</h3>
-            <p>{{_i}}To easily add affix behavior to any element, just add <code>data-spy="affix"</code> to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.{{/i}}</p>
-
-            <pre class="prettyprint linenums">&lt;div data-spy="affix" data-offset-top="200"&gt;...&lt;/div&gt;</pre>
-
-            <div class="alert alert-info">
-              <strong>{{_i}}Heads up!{{/i}}</strong>
-              {{_i}}You must manage the position of a pinned element and the behavior of its immediate parent. Position is controlled by <code>affix</code>, <code>affix-top</code>, and <code>affix-bottom</code>. Remember to check for a potentially collapsed parent when the affix kicks in as it's removing content from the normal flow of the page.{{/i}}
-            </div>
-
-            <h3>{{_i}}Via JavaScript{{/i}}</h3>
-            <p>{{_i}}Call the affix plugin via JavaScript:{{/i}}</p>
-            <pre class="prettyprint linenums">$('#navbar').affix()</pre>
-
-          <h3>{{_i}}Options{{/i}}</h3>
-          <p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-             <tr>
-               <th style="width: 100px;">{{_i}}Name{{/i}}</th>
-               <th style="width: 100px;">{{_i}}type{{/i}}</th>
-               <th style="width: 50px;">{{_i}}default{{/i}}</th>
-               <th>{{_i}}description{{/i}}</th>
-             </tr>
-            </thead>
-            <tbody>
-             <tr>
-               <td>{{_i}}offset{{/i}}</td>
-               <td>{{_i}}number | function | object{{/i}}</td>
-               <td>{{_i}}10{{/i}}</td>
-               <td>{{_i}}Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To listen for a single direction, or multiple unique offsets, just provide an object <code>offset: { x: 10 }</code>. Use a function when you need to dynamically provide an offset (useful for some responsive designs).{{/i}}</td>
-             </tr>
-            </tbody>
-          </table>
-        </section>
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/scaffolding.mustache b/src/main/webapp/bower_components/bootstrap/docs/templates/pages/scaffolding.mustache
deleted file mode 100644
index a6f2f9da..00000000
--- a/src/main/webapp/bower_components/bootstrap/docs/templates/pages/scaffolding.mustache
+++ /dev/null
@@ -1,485 +0,0 @@
-<!-- Subhead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>{{_i}}Scaffolding{{/i}}</h1>
-    <p class="lead">{{_i}}Bootstrap is built on responsive 12-column grids, layouts, and components.{{/i}}</p>
-  </div>
-</header>
-
-  <div class="container">
-
-    <!-- Docs nav
-    ================================================== -->
-    <div class="row">
-      <div class="span3 bs-docs-sidebar">
-        <ul class="nav nav-list bs-docs-sidenav">
-          <li><a href="#global"><i class="icon-chevron-right"></i> {{_i}}Global styles{{/i}}</a></li>
-          <li><a href="#gridSystem"><i class="icon-chevron-right"></i> {{_i}}Grid system{{/i}}</a></li>
-          <li><a href="#fluidGridSystem"><i class="icon-chevron-right"></i> {{_i}}Fluid grid system{{/i}}</a></li>
-          <li><a href="#layouts"><i class="icon-chevron-right"></i> {{_i}}Layouts{{/i}}</a></li>
-          <li><a href="#responsive"><i class="icon-chevron-right"></i> {{_i}}Responsive design{{/i}}</a></li>
-        </ul>
-      </div>
-      <div class="span9">
-
-
-
-        <!-- Global Bootstrap settings
-        ================================================== -->
-        <section id="global">
-          <div class="page-header">
-            <h1>{{_i}}Global settings{{/i}}</h1>
-          </div>
-
-          <h3>{{_i}}Requires HTML5 doctype{{/i}}</h3>
-          <p>{{_i}}Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;!DOCTYPE html&gt;
-&lt;html lang="en"&gt;
-  ...
-&lt;/html&gt;
-</pre>
-
-          <h3>{{_i}}Typography and links{{/i}}</h3>
-          <p>{{_i}}Bootstrap sets basic global display, typography, and link styles. Specifically, we:{{/i}}</p>
-          <ul>
-            <li>{{_i}}Remove <code>margin</code> on the body{{/i}}</li>
-            <li>{{_i}}Set <code>background-color: white;</code> on the <code>body</code>{{/i}}</li>
-            <li>{{_i}}Use the <code>@baseFontFamily</code>, <code>@baseFontSize</code>, and <code>@baseLineHeight</code> attributes as our typographic base{{/i}}</li>
-            <li>{{_i}}Set the global link color via <code>@linkColor</code> and apply link underlines only on <code>:hover</code>{{/i}}</li>
-          </ul>
-          <p>{{_i}}These styles can be found within <strong>scaffolding.less</strong>.{{/i}}</p>
-
-          <h3>{{_i}}Reset via Normalize{{/i}}</h3>
-          <p>{{_i}}With Bootstrap 2, the old reset block has been dropped in favor of <a href="http://necolas.github.com/normalize.css/" target="_blank">Normalize.css</a>, a project by <a href="http://twitter.com/necolas" target="_blank">Nicolas Gallagher</a> and <a href="http://twitter.com/jon_neal" target="_blank">Jonathan Neal</a> that also powers the <a href="http://html5boilerplate.com" target="_blank">HTML5 Boilerplate</a>. While we use much of Normalize within our <strong>reset.less</strong>, we have removed some elements specifically for Bootstrap.{{/i}}</p>
-
-        </section>
-
-
-
-
-        <!-- Grid system
-        ================================================== -->
-        <section id="gridSystem">
-          <div class="page-header">
-            <h1>{{_i}}Default grid system{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Live grid example{{/i}}</h2>
-          <p>{{_i}}The default Bootstrap grid system utilizes <strong>12 columns</strong>, making for a 940px wide container without <a href="./scaffolding.html#responsive">responsive features</a> enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.{{/i}}</p>
-          <div class="bs-docs-grid">
-            <div class="row show-grid">
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span2">2</div>
-              <div class="span3">3</div>
-              <div class="span4">4</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span4">4</div>
-              <div class="span5">5</div>
-            </div>
-            <div class="row show-grid">
-              <div class="span9">9</div>
-            </div>
-          </div>
-
-          <h3>{{_i}}Basic grid HTML{{/i}}</h3>
-          <p>{{_i}}For a simple two column layout, create a <code>.row</code> and add the appropriate number of <code>.span*</code> columns. As this is a 12-column grid, each <code>.span*</code> spans a number of those 12 columns, and should always add up to 12 for each row (or the number of columns in the parent).{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span8"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-          <p>{{_i}}Given this example, we have <code>.span4</code> and <code>.span8</code>, making for 12 total columns and a complete row.{{/i}}</p>
-
-          <h2>{{_i}}Offsetting columns{{/i}}</h2>
-          <p>{{_i}}Move columns to the right using <code>.offset*</code> classes. Each class increases the left margin of a column by a whole column. For example, <code>.offset4</code> moves <code>.span4</code> over four columns.{{/i}}</p>
-          <div class="bs-docs-grid">
-            <div class="row show-grid">
-              <div class="span4">4</div>
-              <div class="span3 offset2">3 offset 2</div>
-            </div><!-- /row -->
-            <div class="row show-grid">
-              <div class="span3 offset1">3 offset 1</div>
-              <div class="span3 offset2">3 offset 2</div>
-            </div><!-- /row -->
-            <div class="row show-grid">
-              <div class="span6 offset3">6 offset 3</div>
-            </div><!-- /row -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span3 offset2"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Nesting columns{{/i}}</h2>
-          <p>{{_i}}To nest your content with the default grid, add a new <code>.row</code> and set of <code>.span*</code> columns within an existing <code>.span*</code> column. Nested rows should include a set of columns that add up to the number of columns of its parent.{{/i}}</p>
-          <div class="row show-grid">
-            <div class="span9">
-              {{_i}}Level 1 column{{/i}}
-              <div class="row show-grid">
-                <div class="span6">
-                  {{_i}}Level 2{{/i}}
-                </div>
-                <div class="span3">
-                  {{_i}}Level 2{{/i}}
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row"&gt;
-  &lt;div class="span9"&gt;
-    {{_i}}Level 1 column{{/i}}
-    &lt;div class="row"&gt;
-      &lt;div class="span6"&gt;{{_i}}Level 2{{/i}}&lt;/div&gt;
-      &lt;div class="span3"&gt;{{_i}}Level 2{{/i}}&lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-        </section>
-
-
-
-        <!-- Fluid grid system
-        ================================================== -->
-        <section id="fluidGridSystem">
-          <div class="page-header">
-            <h1>{{_i}}Fluid grid system{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Live fluid grid example{{/i}}</h2>
-          <p>{{_i}}The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.{{/i}}</p>
-          <div class="bs-docs-grid">
-            <div class="row-fluid show-grid">
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-              <div class="span1">1</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span4">4</div>
-              <div class="span4">4</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span8">8</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span6">6</div>
-              <div class="span6">6</div>
-            </div>
-            <div class="row-fluid show-grid">
-              <div class="span12">12</div>
-            </div>
-          </div>
-
-          <h3>{{_i}}Basic fluid grid HTML{{/i}}</h3>
-          <p>{{_i}}Make any row "fluid" by changing <code>.row</code> to <code>.row-fluid</code>. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span8"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Fluid offsetting{{/i}}</h2>
-          <p>{{_i}}Operates the same way as the fixed grid system offsetting: add <code>.offset*</code> to any column to offset by that many columns.{{/i}}</p>
-          <div class="bs-docs-grid">
-            <div class="row-fluid show-grid">
-              <div class="span4">4</div>
-              <div class="span4 offset4">4 offset 4</div>
-            </div><!-- /row -->
-            <div class="row-fluid show-grid">
-              <div class="span3 offset3">3 offset 3</div>
-              <div class="span3 offset3">3 offset 3</div>
-            </div><!-- /row -->
-            <div class="row-fluid show-grid">
-              <div class="span6 offset6">6 offset 6</div>
-            </div><!-- /row -->
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span4"&gt;...&lt;/div&gt;
-  &lt;div class="span4 offset2"&gt;...&lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-          <h2>{{_i}}Fluid nesting{{/i}}</h2>
-          <p>{{_i}}Fluid grids utilize nesting differently: each nested level of columns should add up to 12 columns. This is because the fluid grid uses percentages, not pixels, for setting widths.{{/i}}</p>
-          <div class="row-fluid show-grid">
-            <div class="span12">
-              {{_i}}Fluid 12{{/i}}
-              <div class="row-fluid show-grid">
-                <div class="span6">
-                  {{_i}}Fluid 6{{/i}}
-                  <div class="row-fluid show-grid">
-                    <div class="span6">
-                      {{_i}}Fluid 6{{/i}}
-                    </div>
-                    <div class="span6">
-                      {{_i}}Fluid 6{{/i}}
-                    </div>
-                  </div>
-                </div>
-                <div class="span6">
-                  {{_i}}Fluid 6{{/i}}
-                </div>
-              </div>
-            </div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="row-fluid"&gt;
-  &lt;div class="span12"&gt;
-    {{_i}}Fluid 12{{/i}}
-    &lt;div class="row-fluid"&gt;
-      &lt;div class="span6"&gt;
-        {{_i}}Fluid 6{{/i}}
-        &lt;div class="row-fluid"&gt;
-          &lt;div class="span6"&gt;{{_i}}Fluid 6{{/i}}&lt;/div&gt;
-          &lt;div class="span6"&gt;{{_i}}Fluid 6{{/i}}&lt;/div&gt;
-        &lt;/div&gt;
-      &lt;/div&gt;
-      &lt;div class="span6"&gt;{{_i}}Fluid 6{{/i}}&lt;/div&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-
-        </section>
-
-
-
-
-        <!-- Layouts (Default and fluid)
-        ================================================== -->
-        <section id="layouts">
-          <div class="page-header">
-            <h1>{{_i}}Layouts{{/i}}</h1>
-          </div>
-
-          <h2>{{_i}}Fixed layout{{/i}}</h2>
-          <p>{{_i}}Provides a common fixed-width (and optionally responsive) layout with only <code>&lt;div class="container"&gt;</code> required.{{/i}}</p>
-          <div class="mini-layout">
-            <div class="mini-layout-body"></div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;body&gt;
-  &lt;div class="container"&gt;
-    ...
-  &lt;/div&gt;
-&lt;/body&gt;
-</pre>
-
-          <h2>{{_i}}Fluid layout{{/i}}</h2>
-          <p>{{_i}}Create a fluid, two-column page with <code>&lt;div class="container-fluid"&gt;</code>&mdash;great for applications and docs.{{/i}}</p>
-          <div class="mini-layout fluid">
-            <div class="mini-layout-sidebar"></div>
-            <div class="mini-layout-body"></div>
-          </div>
-<pre class="prettyprint linenums">
-&lt;div class="container-fluid"&gt;
-  &lt;div class="row-fluid"&gt;
-    &lt;div class="span2"&gt;
-      &lt;!--{{_i}}Sidebar content{{/i}}--&gt;
-    &lt;/div&gt;
-    &lt;div class="span10"&gt;
-      &lt;!--{{_i}}Body content{{/i}}--&gt;
-    &lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-</pre>
-        </section>
-
-
-
-
-        <!-- Responsive design
-        ================================================== -->
-        <section id="responsive">
-          <div class="page-header">
-            <h1>{{_i}}Responsive design{{/i}}</h1>
-          </div>
-
-          {{! Enabling }}
-          <h2>{{_i}}Enabling responsive features{{/i}}</h2>
-          <p>{{_i}}Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the <code>&lt;head&gt;</code> of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.{{/i}}</p>
-<pre class="prettyprint linenums">
-&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
-&lt;link href="assets/css/bootstrap-responsive.css" rel="stylesheet"&gt;
-</pre>
-          <p><span class="label label-info">{{_i}}Heads up!{{/i}}</span> {{_i}} Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.{{/i}}</p>
-
-          {{! About }}
-          <h2>{{_i}}About responsive Bootstrap{{/i}}</h2>
-          <img src="assets/img/responsive-illustrations.png" alt="Responsive devices" style="float: right; margin: 0 0 20px 20px;">
-          <p>{{_i}}Media queries allow for custom CSS based on a number of conditions&mdash;ratios, widths, display type, etc&mdash;but usually focuses around <code>min-width</code> and <code>max-width</code>.{{/i}}</p>
-          <ul>
-            <li>{{_i}}Modify the width of column in our grid{{/i}}</li>
-            <li>{{_i}}Stack elements instead of float wherever necessary{{/i}}</li>
-            <li>{{_i}}Resize headings and text to be more appropriate for devices{{/i}}</li>
-          </ul>
-          <p>{{_i}}Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.{{/i}}</p>
-
-          {{! Supported }}
-          <h2>{{_i}}Supported devices{{/i}}</h2>
-          <p>{{_i}}Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:{{/i}}</p>
-          <table class="table table-bordered table-striped">
-            <thead>
-              <tr>
-                <th>{{_i}}Label{{/i}}</th>
-                <th>{{_i}}Layout width{{/i}}</th>
-                <th>{{_i}}Column width{{/i}}</th>
-                <th>{{_i}}Gutter width{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td>{{_i}}Large display{{/i}}</td>
-                <td>1200px and up</td>
-                <td>70px</td>
-                <td>30px</td>
-              </tr>
-              <tr>
-                <td>{{_i}}Default{{/i}}</td>
-                <td>980px and up</td>
-                <td>60px</td>
-                <td>20px</td>
-              </tr>
-              <tr>
-                <td>{{_i}}Portrait tablets{{/i}}</td>
-                <td>768px and above</td>
-                <td>42px</td>
-                <td>20px</td>
-              </tr>
-              <tr>
-                <td>{{_i}}Phones to tablets{{/i}}</td>
-                <td>767px and below</td>
-                <td class="muted" colspan="2">{{_i}}Fluid columns, no fixed widths{{/i}}</td>
-              </tr>
-              <tr>
-                <td>{{_i}}Phones{{/i}}</td>
-                <td>480px and below</td>
-                <td class="muted" colspan="2">{{_i}}Fluid columns, no fixed widths{{/i}}</td>
-              </tr>
-            </tbody>
-          </table>
-<pre class="prettyprint linenums">
-/* {{_i}}Large desktop{{/i}} */
-@media (min-width: 1200px) { ... }
-
-/* {{_i}}Portrait tablet to landscape and desktop{{/i}} */
-@media (min-width: 768px) and (max-width: 979px) { ... }
-
-/* {{_i}}Landscape phone to portrait tablet{{/i}} */
-@media (max-width: 767px) { ... }
-
-/* {{_i}}Landscape phones and down{{/i}} */
-@media (max-width: 480px) { ... }
-</pre>
-
-
-          {{! Responsive utility classes }}
-          <h2>{{_i}}Responsive utility classes{{/i}}</h2>
-          <p>{{_i}}For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in <code>responsive.less</code>.{{/i}}</p>
-          <table class="table table-bordered table-striped responsive-utilities">
-            <thead>
-              <tr>
-                <th>{{_i}}Class{{/i}}</th>
-                <th>{{_i}}Phones <small>767px and below</small>{{/i}}</th>
-                <th>{{_i}}Tablets <small>979px to 768px</small>{{/i}}</th>
-                <th>{{_i}}Desktops <small>Default</small>{{/i}}</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <th><code>.visible-phone</code></th>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-              </tr>
-              <tr>
-                <th><code>.visible-tablet</code></th>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-              </tr>
-              <tr>
-                <th><code>.visible-desktop</code></th>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-phone</code></th>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-tablet</code></th>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-              </tr>
-              <tr>
-                <th><code>.hidden-desktop</code></th>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-visible">{{_i}}Visible{{/i}}</td>
-                <td class="is-hidden">{{_i}}Hidden{{/i}}</td>
-              </tr>
-            </tbody>
-          </table>
-
-          <h3>{{_i}}When to use{{/i}}</h3>
-          <p>{{_i}}Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities should not be used with tables, and as such are not supported.{{/i}}</p>
-
-          <h3>{{_i}}Responsive utilities test case{{/i}}</h3>
-          <p>{{_i}}Resize your browser or load on different devices to test the above classes.{{/i}}</p>
-          <h4>{{_i}}Visible on...{{/i}}</h4>
-          <p>{{_i}}Green checkmarks indicate that class is visible in your current viewport.{{/i}}</p>
-          <ul class="responsive-utilities-test">
-            <li>{{_i}}Phone{{/i}}<span class="visible-phone">&#10004; {{_i}}Phone{{/i}}</span></li>
-            <li>{{_i}}Tablet{{/i}}<span class="visible-tablet">&#10004; {{_i}}Tablet{{/i}}</span></li>
-            <li>{{_i}}Desktop{{/i}}<span class="visible-desktop">&#10004; {{_i}}Desktop{{/i}}</span></li>
-          </ul>
-          <h4>{{_i}}Hidden on...{{/i}}</h4>
-          <p>{{_i}}Here, green checkmarks indicate that class is hidden in your current viewport.{{/i}}</p>
-          <ul class="responsive-utilities-test hidden-on">
-            <li>{{_i}}Phone{{/i}}<span class="hidden-phone">&#10004; {{_i}}Phone{{/i}}</span></li>
-            <li>{{_i}}Tablet{{/i}}<span class="hidden-tablet">&#10004; {{_i}}Tablet{{/i}}</span></li>
-            <li>{{_i}}Desktop{{/i}}<span class="hidden-desktop">&#10004; {{_i}}Desktop{{/i}}</span></li>
-          </ul>
-
-        </section>
-
-
-
-      </div>{{! /span9 }}
-    </div>{{! row}}
-
-  </div>{{! /.container }}
diff --git a/src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings-white.png b/src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484a29d8da269f9bc874b25493a45fae3bae..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8777
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
B7G?kd

diff --git a/src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings.png b/src/main/webapp/bower_components/bootstrap/img/glyphicons-halflings.png
deleted file mode 100644
index a9969993201f9cee63cf9f49217646347297b643..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/src/main/webapp/bower_components/bootstrap/js/.jshintrc b/src/main/webapp/bower_components/bootstrap/js/.jshintrc
deleted file mode 100644
index e0722690..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/.jshintrc
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "validthis": true,
-    "laxcomma" : true,
-    "laxbreak" : true,
-    "browser"  : true,
-    "eqnull"   : true,
-    "debug"    : true,
-    "devel"    : true,
-    "boss"     : true,
-    "expr"     : true,
-    "asi"      : true
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-affix.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-affix.js
deleted file mode 100644
index 7595fdb0..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-affix.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ==========================================================
- * bootstrap-affix.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#affix
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* AFFIX CLASS DEFINITION
-  * ====================== */
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, $.fn.affix.defaults, options)
-    this.$window = $(window)
-      .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.affix.data-api',  $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
-    this.$element = $(element)
-    this.checkPosition()
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-      , scrollTop = this.$window.scrollTop()
-      , position = this.$element.offset()
-      , offset = this.options.offset
-      , offsetBottom = offset.bottom
-      , offsetTop = offset.top
-      , reset = 'affix affix-top affix-bottom'
-      , affix
-
-    if (typeof offset != 'object') offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function') offsetTop = offset.top()
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
-    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
-      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
-      'bottom' : offsetTop != null && scrollTop <= offsetTop ?
-      'top'    : false
-
-    if (this.affixed === affix) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
-    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
-  }
-
-
- /* AFFIX PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.affix
-
-  $.fn.affix = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('affix')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.affix.Constructor = Affix
-
-  $.fn.affix.defaults = {
-    offset: 0
-  }
-
-
- /* AFFIX NO CONFLICT
-  * ================= */
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
- /* AFFIX DATA-API
-  * ============== */
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-        , data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      data.offsetBottom && (data.offset.bottom = data.offsetBottom)
-      data.offsetTop && (data.offset.top = data.offsetTop)
-
-      $spy.affix(data)
-    })
-  })
-
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-alert.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-alert.js
deleted file mode 100644
index b5627984..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-alert.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/* ==========================================================
- * bootstrap-alert.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#alerts
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* ALERT CLASS DEFINITION
-  * ====================== */
-
-  var dismiss = '[data-dismiss="alert"]'
-    , Alert = function (el) {
-        $(el).on('click', dismiss, this.close)
-      }
-
-  Alert.prototype.close = function (e) {
-    var $this = $(this)
-      , selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = $(selector)
-
-    e && e.preventDefault()
-
-    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
-
-    $parent.trigger(e = $.Event('close'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      $parent
-        .trigger('closed')
-        .remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent.on($.support.transition.end, removeElement) :
-      removeElement()
-  }
-
-
- /* ALERT PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.alert
-
-  $.fn.alert = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('alert')
-      if (!data) $this.data('alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.alert.Constructor = Alert
-
-
- /* ALERT NO CONFLICT
-  * ================= */
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
- /* ALERT DATA-API
-  * ============== */
-
-  $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-button.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-button.js
deleted file mode 100644
index 045927b6..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-button.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/* ============================================================
- * bootstrap-button.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#buttons
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* BUTTON PUBLIC CLASS DEFINITION
-  * ============================== */
-
-  var Button = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.button.defaults, options)
-  }
-
-  Button.prototype.setState = function (state) {
-    var d = 'disabled'
-      , $el = this.$element
-      , data = $el.data()
-      , val = $el.is('input') ? 'val' : 'html'
-
-    state = state + 'Text'
-    data.resetText || $el.data('resetText', $el[val]())
-
-    $el[val](data[state] || this.options[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d)
-    }, 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
-
-    $parent && $parent
-      .find('.active')
-      .removeClass('active')
-
-    this.$element.toggleClass('active')
-  }
-
-
- /* BUTTON PLUGIN DEFINITION
-  * ======================== */
-
-  var old = $.fn.button
-
-  $.fn.button = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('button')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('button', (data = new Button(this, options)))
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  $.fn.button.defaults = {
-    loadingText: 'loading...'
-  }
-
-  $.fn.button.Constructor = Button
-
-
- /* BUTTON NO CONFLICT
-  * ================== */
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
- /* BUTTON DATA-API
-  * =============== */
-
-  $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    $btn.button('toggle')
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-carousel.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-carousel.js
deleted file mode 100644
index 60455201..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-carousel.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/* ==========================================================
- * bootstrap-carousel.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#carousel
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* CAROUSEL CLASS DEFINITION
-  * ========================= */
-
-  var Carousel = function (element, options) {
-    this.$element = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options = options
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter', $.proxy(this.pause, this))
-      .on('mouseleave', $.proxy(this.cycle, this))
-  }
-
-  Carousel.prototype = {
-
-    cycle: function (e) {
-      if (!e) this.paused = false
-      if (this.interval) clearInterval(this.interval);
-      this.options.interval
-        && !this.paused
-        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-      return this
-    }
-
-  , getActiveIndex: function () {
-      this.$active = this.$element.find('.item.active')
-      this.$items = this.$active.parent().children()
-      return this.$items.index(this.$active)
-    }
-
-  , to: function (pos) {
-      var activeIndex = this.getActiveIndex()
-        , that = this
-
-      if (pos > (this.$items.length - 1) || pos < 0) return
-
-      if (this.sliding) {
-        return this.$element.one('slid', function () {
-          that.to(pos)
-        })
-      }
-
-      if (activeIndex == pos) {
-        return this.pause().cycle()
-      }
-
-      return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-    }
-
-  , pause: function (e) {
-      if (!e) this.paused = true
-      if (this.$element.find('.next, .prev').length && $.support.transition.end) {
-        this.$element.trigger($.support.transition.end)
-        this.cycle()
-      }
-      clearInterval(this.interval)
-      this.interval = null
-      return this
-    }
-
-  , next: function () {
-      if (this.sliding) return
-      return this.slide('next')
-    }
-
-  , prev: function () {
-      if (this.sliding) return
-      return this.slide('prev')
-    }
-
-  , slide: function (type, next) {
-      var $active = this.$element.find('.item.active')
-        , $next = next || $active[type]()
-        , isCycling = this.interval
-        , direction = type == 'next' ? 'left' : 'right'
-        , fallback  = type == 'next' ? 'first' : 'last'
-        , that = this
-        , e
-
-      this.sliding = true
-
-      isCycling && this.pause()
-
-      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
-
-      e = $.Event('slide', {
-        relatedTarget: $next[0]
-      , direction: direction
-      })
-
-      if ($next.hasClass('active')) return
-
-      if (this.$indicators.length) {
-        this.$indicators.find('.active').removeClass('active')
-        this.$element.one('slid', function () {
-          var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
-          $nextIndicator && $nextIndicator.addClass('active')
-        })
-      }
-
-      if ($.support.transition && this.$element.hasClass('slide')) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $next.addClass(type)
-        $next[0].offsetWidth // force reflow
-        $active.addClass(direction)
-        $next.addClass(direction)
-        this.$element.one($.support.transition.end, function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
-        })
-      } else {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $active.removeClass('active')
-        $next.addClass('active')
-        this.sliding = false
-        this.$element.trigger('slid')
-      }
-
-      isCycling && this.cycle()
-
-      return this
-    }
-
-  }
-
-
- /* CAROUSEL PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.carousel
-
-  $.fn.carousel = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('carousel')
-        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
-        , action = typeof option == 'string' ? option : options.slide
-      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  $.fn.carousel.defaults = {
-    interval: 5000
-  , pause: 'hover'
-  }
-
-  $.fn.carousel.Constructor = Carousel
-
-
- /* CAROUSEL NO CONFLICT
-  * ==================== */
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
- /* CAROUSEL DATA-API
-  * ================= */
-
-  $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var $this = $(this), href
-      , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      , options = $.extend({}, $target.data(), $this.data())
-      , slideIndex
-
-    $target.carousel(options)
-
-    if (slideIndex = $this.attr('data-slide-to')) {
-      $target.data('carousel').pause().to(slideIndex).cycle()
-    }
-
-    e.preventDefault()
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-collapse.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-collapse.js
deleted file mode 100644
index 7bbad8e4..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-collapse.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/* =============================================================
- * bootstrap-collapse.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#collapse
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* COLLAPSE PUBLIC CLASS DEFINITION
-  * ================================ */
-
-  var Collapse = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.collapse.defaults, options)
-
-    if (this.options.parent) {
-      this.$parent = $(this.options.parent)
-    }
-
-    this.options.toggle && this.toggle()
-  }
-
-  Collapse.prototype = {
-
-    constructor: Collapse
-
-  , dimension: function () {
-      var hasWidth = this.$element.hasClass('width')
-      return hasWidth ? 'width' : 'height'
-    }
-
-  , show: function () {
-      var dimension
-        , scroll
-        , actives
-        , hasData
-
-      if (this.transitioning || this.$element.hasClass('in')) return
-
-      dimension = this.dimension()
-      scroll = $.camelCase(['scroll', dimension].join('-'))
-      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
-
-      if (actives && actives.length) {
-        hasData = actives.data('collapse')
-        if (hasData && hasData.transitioning) return
-        actives.collapse('hide')
-        hasData || actives.data('collapse', null)
-      }
-
-      this.$element[dimension](0)
-      this.transition('addClass', $.Event('show'), 'shown')
-      $.support.transition && this.$element[dimension](this.$element[0][scroll])
-    }
-
-  , hide: function () {
-      var dimension
-      if (this.transitioning || !this.$element.hasClass('in')) return
-      dimension = this.dimension()
-      this.reset(this.$element[dimension]())
-      this.transition('removeClass', $.Event('hide'), 'hidden')
-      this.$element[dimension](0)
-    }
-
-  , reset: function (size) {
-      var dimension = this.dimension()
-
-      this.$element
-        .removeClass('collapse')
-        [dimension](size || 'auto')
-        [0].offsetWidth
-
-      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
-
-      return this
-    }
-
-  , transition: function (method, startEvent, completeEvent) {
-      var that = this
-        , complete = function () {
-            if (startEvent.type == 'show') that.reset()
-            that.transitioning = 0
-            that.$element.trigger(completeEvent)
-          }
-
-      this.$element.trigger(startEvent)
-
-      if (startEvent.isDefaultPrevented()) return
-
-      this.transitioning = 1
-
-      this.$element[method]('in')
-
-      $.support.transition && this.$element.hasClass('collapse') ?
-        this.$element.one($.support.transition.end, complete) :
-        complete()
-    }
-
-  , toggle: function () {
-      this[this.$element.hasClass('in') ? 'hide' : 'show']()
-    }
-
-  }
-
-
- /* COLLAPSE PLUGIN DEFINITION
-  * ========================== */
-
-  var old = $.fn.collapse
-
-  $.fn.collapse = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('collapse')
-        , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.collapse.defaults = {
-    toggle: true
-  }
-
-  $.fn.collapse.Constructor = Collapse
-
-
- /* COLLAPSE NO CONFLICT
-  * ==================== */
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
- /* COLLAPSE DATA-API
-  * ================= */
-
-  $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
-    var $this = $(this), href
-      , target = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
-      , option = $(target).data('collapse') ? 'toggle' : $this.data()
-    $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    $(target).collapse(option)
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-dropdown.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-dropdown.js
deleted file mode 100644
index ec86cf0d..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-dropdown.js
+++ /dev/null
@@ -1,165 +0,0 @@
-/* ============================================================
- * bootstrap-dropdown.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* DROPDOWN CLASS DEFINITION
-  * ========================= */
-
-  var toggle = '[data-toggle=dropdown]'
-    , Dropdown = function (element) {
-        var $el = $(element).on('click.dropdown.data-api', this.toggle)
-        $('html').on('click.dropdown.data-api', function () {
-          $el.parent().removeClass('open')
-        })
-      }
-
-  Dropdown.prototype = {
-
-    constructor: Dropdown
-
-  , toggle: function (e) {
-      var $this = $(this)
-        , $parent
-        , isActive
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      clearMenus()
-
-      if (!isActive) {
-        $parent.toggleClass('open')
-      }
-
-      $this.focus()
-
-      return false
-    }
-
-  , keydown: function (e) {
-      var $this
-        , $items
-        , $active
-        , $parent
-        , isActive
-        , index
-
-      if (!/(38|40|27)/.test(e.keyCode)) return
-
-      $this = $(this)
-
-      e.preventDefault()
-      e.stopPropagation()
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      if (!isActive || (isActive && e.keyCode == 27)) {
-        if (e.which == 27) $parent.find(toggle).focus()
-        return $this.click()
-      }
-
-      $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
-      if (!$items.length) return
-
-      index = $items.index($items.filter(':focus'))
-
-      if (e.keyCode == 38 && index > 0) index--                                        // up
-      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-      if (!~index) index = 0
-
-      $items
-        .eq(index)
-        .focus()
-    }
-
-  }
-
-  function clearMenus() {
-    $(toggle).each(function () {
-      getParent($(this)).removeClass('open')
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = selector && $(selector)
-
-    if (!$parent || !$parent.length) $parent = $this.parent()
-
-    return $parent
-  }
-
-
-  /* DROPDOWN PLUGIN DEFINITION
-   * ========================== */
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('dropdown')
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.dropdown.Constructor = Dropdown
-
-
- /* DROPDOWN NO CONFLICT
-  * ==================== */
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  /* APPLY TO STANDARD DROPDOWN ELEMENTS
-   * =================================== */
-
-  $(document)
-    .on('click.dropdown.data-api', clearMenus)
-    .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('.dropdown-menu', function (e) { e.stopPropagation() })
-    .on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
-    .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-modal.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-modal.js
deleted file mode 100644
index b5ffa95b..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-modal.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/* =========================================================
- * bootstrap-modal.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================= */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* MODAL CLASS DEFINITION
-  * ====================== */
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$element = $(element)
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
-    this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
-  }
-
-  Modal.prototype = {
-
-      constructor: Modal
-
-    , toggle: function () {
-        return this[!this.isShown ? 'show' : 'hide']()
-      }
-
-    , show: function () {
-        var that = this
-          , e = $.Event('show')
-
-        this.$element.trigger(e)
-
-        if (this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = true
-
-        this.escape()
-
-        this.backdrop(function () {
-          var transition = $.support.transition && that.$element.hasClass('fade')
-
-          if (!that.$element.parent().length) {
-            that.$element.appendTo(document.body) //don't move modals dom position
-          }
-
-          that.$element.show()
-
-          if (transition) {
-            that.$element[0].offsetWidth // force reflow
-          }
-
-          that.$element
-            .addClass('in')
-            .attr('aria-hidden', false)
-
-          that.enforceFocus()
-
-          transition ?
-            that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
-            that.$element.focus().trigger('shown')
-
-        })
-      }
-
-    , hide: function (e) {
-        e && e.preventDefault()
-
-        var that = this
-
-        e = $.Event('hide')
-
-        this.$element.trigger(e)
-
-        if (!this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = false
-
-        this.escape()
-
-        $(document).off('focusin.modal')
-
-        this.$element
-          .removeClass('in')
-          .attr('aria-hidden', true)
-
-        $.support.transition && this.$element.hasClass('fade') ?
-          this.hideWithTransition() :
-          this.hideModal()
-      }
-
-    , enforceFocus: function () {
-        var that = this
-        $(document).on('focusin.modal', function (e) {
-          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
-            that.$element.focus()
-          }
-        })
-      }
-
-    , escape: function () {
-        var that = this
-        if (this.isShown && this.options.keyboard) {
-          this.$element.on('keyup.dismiss.modal', function ( e ) {
-            e.which == 27 && that.hide()
-          })
-        } else if (!this.isShown) {
-          this.$element.off('keyup.dismiss.modal')
-        }
-      }
-
-    , hideWithTransition: function () {
-        var that = this
-          , timeout = setTimeout(function () {
-              that.$element.off($.support.transition.end)
-              that.hideModal()
-            }, 500)
-
-        this.$element.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          that.hideModal()
-        })
-      }
-
-    , hideModal: function () {
-        var that = this
-        this.$element.hide()
-        this.backdrop(function () {
-          that.removeBackdrop()
-          that.$element.trigger('hidden')
-        })
-      }
-
-    , removeBackdrop: function () {
-        this.$backdrop.remove()
-        this.$backdrop = null
-      }
-
-    , backdrop: function (callback) {
-        var that = this
-          , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-        if (this.isShown && this.options.backdrop) {
-          var doAnimate = $.support.transition && animate
-
-          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-            .appendTo(document.body)
-
-          this.$backdrop.click(
-            this.options.backdrop == 'static' ?
-              $.proxy(this.$element[0].focus, this.$element[0])
-            : $.proxy(this.hide, this)
-          )
-
-          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-          this.$backdrop.addClass('in')
-
-          if (!callback) return
-
-          doAnimate ?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (!this.isShown && this.$backdrop) {
-          this.$backdrop.removeClass('in')
-
-          $.support.transition && this.$element.hasClass('fade')?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (callback) {
-          callback()
-        }
-      }
-  }
-
-
- /* MODAL PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.modal
-
-  $.fn.modal = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('modal')
-        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option]()
-      else if (options.show) data.show()
-    })
-  }
-
-  $.fn.modal.defaults = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
- /* MODAL NO CONFLICT
-  * ================= */
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
- /* MODAL DATA-API
-  * ============== */
-
-  $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this = $(this)
-      , href = $this.attr('href')
-      , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
-      , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
-
-    e.preventDefault()
-
-    $target
-      .modal(option)
-      .one('hide', function () {
-        $this.focus()
-      })
-  })
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-popover.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-popover.js
deleted file mode 100644
index 0e7774bf..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-popover.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/* ===========================================================
- * bootstrap-popover.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#popovers
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * =========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* POPOVER PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-
-  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
-     ========================================== */
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
-
-    constructor: Popover
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-        , content = this.getContent()
-
-      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-      $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
-      $tip.removeClass('fade top bottom left right in')
-    }
-
-  , hasContent: function () {
-      return this.getTitle() || this.getContent()
-    }
-
-  , getContent: function () {
-      var content
-        , $e = this.$element
-        , o = this.options
-
-      content = (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
-        || $e.attr('data-content')
-
-      return content
-    }
-
-  , tip: function () {
-      if (!this.$tip) {
-        this.$tip = $(this.options.template)
-      }
-      return this.$tip
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  })
-
-
- /* POPOVER PLUGIN DEFINITION
-  * ======================= */
-
-  var old = $.fn.popover
-
-  $.fn.popover = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('popover')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.popover.Constructor = Popover
-
-  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
-    placement: 'right'
-  , trigger: 'click'
-  , content: ''
-  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
- /* POPOVER NO CONFLICT
-  * =================== */
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-scrollspy.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-scrollspy.js
deleted file mode 100644
index dff9a3b3..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-scrollspy.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/* =============================================================
- * bootstrap-scrollspy.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* SCROLLSPY CLASS DEFINITION
-  * ========================== */
-
-  function ScrollSpy(element, options) {
-    var process = $.proxy(this.process, this)
-      , $element = $(element).is('body') ? $(window) : $(element)
-      , href
-    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
-    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
-    this.selector = (this.options.target
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      || '') + ' .nav li > a'
-    this.$body = $('body')
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.prototype = {
-
-      constructor: ScrollSpy
-
-    , refresh: function () {
-        var self = this
-          , $targets
-
-        this.offsets = $([])
-        this.targets = $([])
-
-        $targets = this.$body
-          .find(this.selector)
-          .map(function () {
-            var $el = $(this)
-              , href = $el.data('target') || $el.attr('href')
-              , $href = /^#\w/.test(href) && $(href)
-            return ( $href
-              && $href.length
-              && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
-          })
-          .sort(function (a, b) { return a[0] - b[0] })
-          .each(function () {
-            self.offsets.push(this[0])
-            self.targets.push(this[1])
-          })
-      }
-
-    , process: function () {
-        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
-          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
-          , maxScroll = scrollHeight - this.$scrollElement.height()
-          , offsets = this.offsets
-          , targets = this.targets
-          , activeTarget = this.activeTarget
-          , i
-
-        if (scrollTop >= maxScroll) {
-          return activeTarget != (i = targets.last()[0])
-            && this.activate ( i )
-        }
-
-        for (i = offsets.length; i--;) {
-          activeTarget != targets[i]
-            && scrollTop >= offsets[i]
-            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-            && this.activate( targets[i] )
-        }
-      }
-
-    , activate: function (target) {
-        var active
-          , selector
-
-        this.activeTarget = target
-
-        $(this.selector)
-          .parent('.active')
-          .removeClass('active')
-
-        selector = this.selector
-          + '[data-target="' + target + '"],'
-          + this.selector + '[href="' + target + '"]'
-
-        active = $(selector)
-          .parent('li')
-          .addClass('active')
-
-        if (active.parent('.dropdown-menu').length)  {
-          active = active.closest('li.dropdown').addClass('active')
-        }
-
-        active.trigger('activate')
-      }
-
-  }
-
-
- /* SCROLLSPY PLUGIN DEFINITION
-  * =========================== */
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('scrollspy')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-  $.fn.scrollspy.defaults = {
-    offset: 10
-  }
-
-
- /* SCROLLSPY NO CONFLICT
-  * ===================== */
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
- /* SCROLLSPY DATA-API
-  * ================== */
-
-  $(window).on('load', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      $spy.scrollspy($spy.data())
-    })
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-tab.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-tab.js
deleted file mode 100644
index bd77eb5c..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-tab.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ========================================================
- * bootstrap-tab.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
-  * ==================== */
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.prototype = {
-
-    constructor: Tab
-
-  , show: function () {
-      var $this = this.element
-        , $ul = $this.closest('ul:not(.dropdown-menu)')
-        , selector = $this.attr('data-target')
-        , previous
-        , $target
-        , e
-
-      if (!selector) {
-        selector = $this.attr('href')
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-      }
-
-      if ( $this.parent('li').hasClass('active') ) return
-
-      previous = $ul.find('.active:last a')[0]
-
-      e = $.Event('show', {
-        relatedTarget: previous
-      })
-
-      $this.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      $target = $(selector)
-
-      this.activate($this.parent('li'), $ul)
-      this.activate($target, $target.parent(), function () {
-        $this.trigger({
-          type: 'shown'
-        , relatedTarget: previous
-        })
-      })
-    }
-
-  , activate: function ( element, container, callback) {
-      var $active = container.find('> .active')
-        , transition = callback
-            && $.support.transition
-            && $active.hasClass('fade')
-
-      function next() {
-        $active
-          .removeClass('active')
-          .find('> .dropdown-menu > .active')
-          .removeClass('active')
-
-        element.addClass('active')
-
-        if (transition) {
-          element[0].offsetWidth // reflow for transition
-          element.addClass('in')
-        } else {
-          element.removeClass('fade')
-        }
-
-        if ( element.parent('.dropdown-menu') ) {
-          element.closest('li.dropdown').addClass('active')
-        }
-
-        callback && callback()
-      }
-
-      transition ?
-        $active.one($.support.transition.end, next) :
-        next()
-
-      $active.removeClass('in')
-    }
-  }
-
-
- /* TAB PLUGIN DEFINITION
-  * ===================== */
-
-  var old = $.fn.tab
-
-  $.fn.tab = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tab')
-      if (!data) $this.data('tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tab.Constructor = Tab
-
-
- /* TAB NO CONFLICT
-  * =============== */
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
- /* TAB DATA-API
-  * ============ */
-
-  $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    $(this).tab('show')
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-tooltip.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-tooltip.js
deleted file mode 100644
index 98131907..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-tooltip.js
+++ /dev/null
@@ -1,353 +0,0 @@
-/* ===========================================================
- * bootstrap-tooltip.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Tooltip = function (element, options) {
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.prototype = {
-
-    constructor: Tooltip
-
-  , init: function (type, element, options) {
-      var eventIn
-        , eventOut
-        , triggers
-        , trigger
-        , i
-
-      this.type = type
-      this.$element = $(element)
-      this.options = this.getOptions(options)
-      this.enabled = true
-
-      triggers = this.options.trigger.split(' ')
-
-      for (i = triggers.length; i--;) {
-        trigger = triggers[i]
-        if (trigger == 'click') {
-          this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-        } else if (trigger != 'manual') {
-          eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
-          eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-          this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-          this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-        }
-      }
-
-      this.options.selector ?
-        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-        this.fixTitle()
-    }
-
-  , getOptions: function (options) {
-      options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
-
-      if (options.delay && typeof options.delay == 'number') {
-        options.delay = {
-          show: options.delay
-        , hide: options.delay
-        }
-      }
-
-      return options
-    }
-
-  , enter: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (!self.options.delay || !self.options.delay.show) return self.show()
-
-      clearTimeout(this.timeout)
-      self.hoverState = 'in'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'in') self.show()
-      }, self.options.delay.show)
-    }
-
-  , leave: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (this.timeout) clearTimeout(this.timeout)
-      if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-      self.hoverState = 'out'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'out') self.hide()
-      }, self.options.delay.hide)
-    }
-
-  , show: function () {
-      var $tip
-        , pos
-        , actualWidth
-        , actualHeight
-        , placement
-        , tp
-        , e = $.Event('show')
-
-      if (this.hasContent() && this.enabled) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $tip = this.tip()
-        this.setContent()
-
-        if (this.options.animation) {
-          $tip.addClass('fade')
-        }
-
-        placement = typeof this.options.placement == 'function' ?
-          this.options.placement.call(this, $tip[0], this.$element[0]) :
-          this.options.placement
-
-        $tip
-          .detach()
-          .css({ top: 0, left: 0, display: 'block' })
-
-        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-        pos = this.getPosition()
-
-        actualWidth = $tip[0].offsetWidth
-        actualHeight = $tip[0].offsetHeight
-
-        switch (placement) {
-          case 'bottom':
-            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'top':
-            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'left':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
-            break
-          case 'right':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
-            break
-        }
-
-        this.applyPlacement(tp, placement)
-        this.$element.trigger('shown')
-      }
-    }
-
-  , applyPlacement: function(offset, placement){
-      var $tip = this.tip()
-        , width = $tip[0].offsetWidth
-        , height = $tip[0].offsetHeight
-        , actualWidth
-        , actualHeight
-        , delta
-        , replace
-
-      $tip
-        .offset(offset)
-        .addClass(placement)
-        .addClass('in')
-
-      actualWidth = $tip[0].offsetWidth
-      actualHeight = $tip[0].offsetHeight
-
-      if (placement == 'top' && actualHeight != height) {
-        offset.top = offset.top + height - actualHeight
-        replace = true
-      }
-
-      if (placement == 'bottom' || placement == 'top') {
-        delta = 0
-
-        if (offset.left < 0){
-          delta = offset.left * -2
-          offset.left = 0
-          $tip.offset(offset)
-          actualWidth = $tip[0].offsetWidth
-          actualHeight = $tip[0].offsetHeight
-        }
-
-        this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
-      } else {
-        this.replaceArrow(actualHeight - height, actualHeight, 'top')
-      }
-
-      if (replace) $tip.offset(offset)
-    }
-
-  , replaceArrow: function(delta, dimension, position){
-      this
-        .arrow()
-        .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
-    }
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-
-      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-      $tip.removeClass('fade in top bottom left right')
-    }
-
-  , hide: function () {
-      var that = this
-        , $tip = this.tip()
-        , e = $.Event('hide')
-
-      this.$element.trigger(e)
-      if (e.isDefaultPrevented()) return
-
-      $tip.removeClass('in')
-
-      function removeWithAnimation() {
-        var timeout = setTimeout(function () {
-          $tip.off($.support.transition.end).detach()
-        }, 500)
-
-        $tip.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          $tip.detach()
-        })
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        removeWithAnimation() :
-        $tip.detach()
-
-      this.$element.trigger('hidden')
-
-      return this
-    }
-
-  , fixTitle: function () {
-      var $e = this.$element
-      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
-        $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-      }
-    }
-
-  , hasContent: function () {
-      return this.getTitle()
-    }
-
-  , getPosition: function () {
-      var el = this.$element[0]
-      return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
-        width: el.offsetWidth
-      , height: el.offsetHeight
-      }, this.$element.offset())
-    }
-
-  , getTitle: function () {
-      var title
-        , $e = this.$element
-        , o = this.options
-
-      title = $e.attr('data-original-title')
-        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-      return title
-    }
-
-  , tip: function () {
-      return this.$tip = this.$tip || $(this.options.template)
-    }
-
-  , arrow: function(){
-      return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
-    }
-
-  , validate: function () {
-      if (!this.$element[0].parentNode) {
-        this.hide()
-        this.$element = null
-        this.options = null
-      }
-    }
-
-  , enable: function () {
-      this.enabled = true
-    }
-
-  , disable: function () {
-      this.enabled = false
-    }
-
-  , toggleEnabled: function () {
-      this.enabled = !this.enabled
-    }
-
-  , toggle: function (e) {
-      var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
-      self.tip().hasClass('in') ? self.hide() : self.show()
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  }
-
-
- /* TOOLTIP PLUGIN DEFINITION
-  * ========================= */
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tooltip')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tooltip.Constructor = Tooltip
-
-  $.fn.tooltip.defaults = {
-    animation: true
-  , placement: 'top'
-  , selector: false
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
-  , trigger: 'hover focus'
-  , title: ''
-  , delay: 0
-  , html: false
-  , container: false
-  }
-
-
- /* TOOLTIP NO CONFLICT
-  * =================== */
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-transition.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-transition.js
deleted file mode 100644
index 64f27577..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-transition.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ===================================================
- * bootstrap-transition.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#transitions
- * ===================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
-  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
-   * ======================================================= */
-
-  $(function () {
-
-    $.support.transition = (function () {
-
-      var transitionEnd = (function () {
-
-        var el = document.createElement('bootstrap')
-          , transEndEventNames = {
-               'WebkitTransition' : 'webkitTransitionEnd'
-            ,  'MozTransition'    : 'transitionend'
-            ,  'OTransition'      : 'oTransitionEnd otransitionend'
-            ,  'transition'       : 'transitionend'
-            }
-          , name
-
-        for (name in transEndEventNames){
-          if (el.style[name] !== undefined) {
-            return transEndEventNames[name]
-          }
-        }
-
-      }())
-
-      return transitionEnd && {
-        end: transitionEnd
-      }
-
-    })()
-
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/bootstrap-typeahead.js b/src/main/webapp/bower_components/bootstrap/js/bootstrap-typeahead.js
deleted file mode 100644
index 960f2af8..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/bootstrap-typeahead.js
+++ /dev/null
@@ -1,335 +0,0 @@
-/* =============================================================
- * bootstrap-typeahead.js v2.3.0
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function($){
-
-  "use strict"; // jshint ;_;
-
-
- /* TYPEAHEAD PUBLIC CLASS DEFINITION
-  * ================================= */
-
-  var Typeahead = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.typeahead.defaults, options)
-    this.matcher = this.options.matcher || this.matcher
-    this.sorter = this.options.sorter || this.sorter
-    this.highlighter = this.options.highlighter || this.highlighter
-    this.updater = this.options.updater || this.updater
-    this.source = this.options.source
-    this.$menu = $(this.options.menu)
-    this.shown = false
-    this.listen()
-  }
-
-  Typeahead.prototype = {
-
-    constructor: Typeahead
-
-  , select: function () {
-      var val = this.$menu.find('.active').attr('data-value')
-      this.$element
-        .val(this.updater(val))
-        .change()
-      return this.hide()
-    }
-
-  , updater: function (item) {
-      return item
-    }
-
-  , show: function () {
-      var pos = $.extend({}, this.$element.position(), {
-        height: this.$element[0].offsetHeight
-      })
-
-      this.$menu
-        .insertAfter(this.$element)
-        .css({
-          top: pos.top + pos.height
-        , left: pos.left
-        })
-        .show()
-
-      this.shown = true
-      return this
-    }
-
-  , hide: function () {
-      this.$menu.hide()
-      this.shown = false
-      return this
-    }
-
-  , lookup: function (event) {
-      var items
-
-      this.query = this.$element.val()
-
-      if (!this.query || this.query.length < this.options.minLength) {
-        return this.shown ? this.hide() : this
-      }
-
-      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
-
-      return items ? this.process(items) : this
-    }
-
-  , process: function (items) {
-      var that = this
-
-      items = $.grep(items, function (item) {
-        return that.matcher(item)
-      })
-
-      items = this.sorter(items)
-
-      if (!items.length) {
-        return this.shown ? this.hide() : this
-      }
-
-      return this.render(items.slice(0, this.options.items)).show()
-    }
-
-  , matcher: function (item) {
-      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
-    }
-
-  , sorter: function (items) {
-      var beginswith = []
-        , caseSensitive = []
-        , caseInsensitive = []
-        , item
-
-      while (item = items.shift()) {
-        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
-        else if (~item.indexOf(this.query)) caseSensitive.push(item)
-        else caseInsensitive.push(item)
-      }
-
-      return beginswith.concat(caseSensitive, caseInsensitive)
-    }
-
-  , highlighter: function (item) {
-      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
-      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
-        return '<strong>' + match + '</strong>'
-      })
-    }
-
-  , render: function (items) {
-      var that = this
-
-      items = $(items).map(function (i, item) {
-        i = $(that.options.item).attr('data-value', item)
-        i.find('a').html(that.highlighter(item))
-        return i[0]
-      })
-
-      items.first().addClass('active')
-      this.$menu.html(items)
-      return this
-    }
-
-  , next: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , next = active.next()
-
-      if (!next.length) {
-        next = $(this.$menu.find('li')[0])
-      }
-
-      next.addClass('active')
-    }
-
-  , prev: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , prev = active.prev()
-
-      if (!prev.length) {
-        prev = this.$menu.find('li').last()
-      }
-
-      prev.addClass('active')
-    }
-
-  , listen: function () {
-      this.$element
-        .on('focus',    $.proxy(this.focus, this))
-        .on('blur',     $.proxy(this.blur, this))
-        .on('keypress', $.proxy(this.keypress, this))
-        .on('keyup',    $.proxy(this.keyup, this))
-
-      if (this.eventSupported('keydown')) {
-        this.$element.on('keydown', $.proxy(this.keydown, this))
-      }
-
-      this.$menu
-        .on('click', $.proxy(this.click, this))
-        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
-        .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
-    }
-
-  , eventSupported: function(eventName) {
-      var isSupported = eventName in this.$element
-      if (!isSupported) {
-        this.$element.setAttribute(eventName, 'return;')
-        isSupported = typeof this.$element[eventName] === 'function'
-      }
-      return isSupported
-    }
-
-  , move: function (e) {
-      if (!this.shown) return
-
-      switch(e.keyCode) {
-        case 9: // tab
-        case 13: // enter
-        case 27: // escape
-          e.preventDefault()
-          break
-
-        case 38: // up arrow
-          e.preventDefault()
-          this.prev()
-          break
-
-        case 40: // down arrow
-          e.preventDefault()
-          this.next()
-          break
-      }
-
-      e.stopPropagation()
-    }
-
-  , keydown: function (e) {
-      this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
-      this.move(e)
-    }
-
-  , keypress: function (e) {
-      if (this.suppressKeyPressRepeat) return
-      this.move(e)
-    }
-
-  , keyup: function (e) {
-      switch(e.keyCode) {
-        case 40: // down arrow
-        case 38: // up arrow
-        case 16: // shift
-        case 17: // ctrl
-        case 18: // alt
-          break
-
-        case 9: // tab
-        case 13: // enter
-          if (!this.shown) return
-          this.select()
-          break
-
-        case 27: // escape
-          if (!this.shown) return
-          this.hide()
-          break
-
-        default:
-          this.lookup()
-      }
-
-      e.stopPropagation()
-      e.preventDefault()
-  }
-
-  , focus: function (e) {
-      this.focused = true
-    }
-
-  , blur: function (e) {
-      this.focused = false
-      if (!this.mousedover && this.shown) this.hide()
-    }
-
-  , click: function (e) {
-      e.stopPropagation()
-      e.preventDefault()
-      this.select()
-      this.$element.focus()
-    }
-
-  , mouseenter: function (e) {
-      this.mousedover = true
-      this.$menu.find('.active').removeClass('active')
-      $(e.currentTarget).addClass('active')
-    }
-
-  , mouseleave: function (e) {
-      this.mousedover = false
-      if (!this.focused && this.shown) this.hide()
-    }
-
-  }
-
-
-  /* TYPEAHEAD PLUGIN DEFINITION
-   * =========================== */
-
-  var old = $.fn.typeahead
-
-  $.fn.typeahead = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('typeahead')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.typeahead.defaults = {
-    source: []
-  , items: 8
-  , menu: '<ul class="typeahead dropdown-menu"></ul>'
-  , item: '<li><a href="#"></a></li>'
-  , minLength: 1
-  }
-
-  $.fn.typeahead.Constructor = Typeahead
-
-
- /* TYPEAHEAD NO CONFLICT
-  * =================== */
-
-  $.fn.typeahead.noConflict = function () {
-    $.fn.typeahead = old
-    return this
-  }
-
-
- /* TYPEAHEAD DATA-API
-  * ================== */
-
-  $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
-    var $this = $(this)
-    if ($this.data('typeahead')) return
-    $this.typeahead($this.data())
-  })
-
-}(window.jQuery);
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/index.html b/src/main/webapp/bower_components/bootstrap/js/tests/index.html
deleted file mode 100644
index 976ca168..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/index.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>Bootstrap Plugin Test Suite</title>
-
-  <!-- jquery -->
-  <!--<script src="http://code.jquery.com/jquery-1.7.min.js"></script>-->
-  <script src="vendor/jquery.js"></script>
-
-  <!-- qunit -->
-  <link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
-  <script src="vendor/qunit.js"></script>
-
-  <!-- phantomjs logging script-->
-  <script src="unit/bootstrap-phantom.js"></script>
-
-  <!--  plugin sources -->
-  <script src="../../js/bootstrap-transition.js"></script>
-  <script src="../../js/bootstrap-alert.js"></script>
-  <script src="../../js/bootstrap-button.js"></script>
-  <script src="../../js/bootstrap-carousel.js"></script>
-  <script src="../../js/bootstrap-collapse.js"></script>
-  <script src="../../js/bootstrap-dropdown.js"></script>
-  <script src="../../js/bootstrap-modal.js"></script>
-  <script src="../../js/bootstrap-scrollspy.js"></script>
-  <script src="../../js/bootstrap-tab.js"></script>
-  <script src="../../js/bootstrap-tooltip.js"></script>
-  <script src="../../js/bootstrap-popover.js"></script>
-  <script src="../../js/bootstrap-typeahead.js"></script>
-  <script src="../../js/bootstrap-affix.js"></script>
-
-  <!-- unit tests -->
-  <script src="unit/bootstrap-transition.js"></script>
-  <script src="unit/bootstrap-alert.js"></script>
-  <script src="unit/bootstrap-button.js"></script>
-  <script src="unit/bootstrap-carousel.js"></script>
-  <script src="unit/bootstrap-collapse.js"></script>
-  <script src="unit/bootstrap-dropdown.js"></script>
-  <script src="unit/bootstrap-modal.js"></script>
-  <script src="unit/bootstrap-scrollspy.js"></script>
-  <script src="unit/bootstrap-tab.js"></script>
-  <script src="unit/bootstrap-tooltip.js"></script>
-  <script src="unit/bootstrap-popover.js"></script>
-  <script src="unit/bootstrap-typeahead.js"></script>
-  <script src="unit/bootstrap-affix.js"></script>
-</head>
-<body>
-  <div>
-    <h1 id="qunit-header">Bootstrap Plugin Test Suite</h1>
-    <h2 id="qunit-banner"></h2>
-    <h2 id="qunit-userAgent"></h2>
-    <ol id="qunit-tests"></ol>
-    <div id="qunit-fixture"></div>
-  </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/phantom.js b/src/main/webapp/bower_components/bootstrap/js/tests/phantom.js
deleted file mode 100644
index 4105bf52..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/phantom.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Simple phantom.js integration script
-// Adapted from Modernizr
-
-function waitFor(testFx, onReady, timeOutMillis) {
-  var maxtimeOutMillis = timeOutMillis ? timeOutMillis :  5001 //< Default Max Timout is 5s
-    , start = new Date().getTime()
-    , condition = false
-    , interval = setInterval(function () {
-        if ((new Date().getTime() - start < maxtimeOutMillis) && !condition) {
-          // If not time-out yet and condition not yet fulfilled
-          condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()) //< defensive code
-        } else {
-          if (!condition) {
-            // If condition still not fulfilled (timeout but condition is 'false')
-            console.log("'waitFor()' timeout")
-            phantom.exit(1)
-          } else {
-            // Condition fulfilled (timeout and/or condition is 'true')
-            typeof(onReady) === "string" ? eval(onReady) : onReady() //< Do what it's supposed to do once the condition is fulfilled
-            clearInterval(interval) //< Stop this interval
-          }
-        }
-    }, 100) //< repeat check every 100ms
-}
-
-
-if (phantom.args.length === 0 || phantom.args.length > 2) {
-  console.log('Usage: phantom.js URL')
-  phantom.exit()
-}
-
-var page = new WebPage()
-
-// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
-page.onConsoleMessage = function(msg) {
-  console.log(msg)
-};
-
-page.open(phantom.args[0], function(status){
-  if (status !== "success") {
-    console.log("Unable to access network")
-    phantom.exit()
-  } else {
-    waitFor(function(){
-      return page.evaluate(function(){
-        var el = document.getElementById('qunit-testresult')
-        if (el && el.innerText.match('completed')) {
-          return true
-        }
-        return false
-      })
-    }, function(){
-      var failedNum = page.evaluate(function(){
-        var el = document.getElementById('qunit-testresult')
-        try {
-          return el.getElementsByClassName('failed')[0].innerHTML
-        } catch (e) { }
-        return 10000
-      });
-      phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0)
-    })
-  }
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/server.js b/src/main/webapp/bower_components/bootstrap/js/tests/server.js
deleted file mode 100644
index 7c8445fe..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/server.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Simple connect server for phantom.js
- * Adapted from Modernizr
- */
-
-var connect = require('connect')
-  , http = require('http')
-  , fs   = require('fs')
-  , app = connect()
-      .use(connect.static(__dirname + '/../../'));
-
-http.createServer(app).listen(3000);
-
-fs.writeFileSync(__dirname + '/pid.txt', process.pid, 'utf-8')
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-affix.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-affix.js
deleted file mode 100644
index c9788789..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-affix.js
+++ /dev/null
@@ -1,25 +0,0 @@
-$(function () {
-
-    module("bootstrap-affix")
-
-      test("should provide no conflict", function () {
-        var affix = $.fn.affix.noConflict()
-        ok(!$.fn.affix, 'affix was set back to undefined (org value)')
-        $.fn.affix = affix
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).affix, 'affix method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).affix()[0] == document.body, 'document.body returned')
-      })
-
-      test("should exit early if element is not visible", function () {
-        var $affix = $('<div style="display: none"></div>').affix()
-        $affix.data('affix').checkPosition()
-        ok(!$affix.hasClass('affix'), 'affix class was not added')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-alert.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-alert.js
deleted file mode 100644
index 9a6b514c..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-alert.js
+++ /dev/null
@@ -1,62 +0,0 @@
-$(function () {
-
-    module("bootstrap-alerts")
-
-      test("should provide no conflict", function () {
-        var alert = $.fn.alert.noConflict()
-        ok(!$.fn.alert, 'alert was set back to undefined (org value)')
-        $.fn.alert = alert
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).alert, 'alert method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).alert()[0] == document.body, 'document.body returned')
-      })
-
-      test("should fade element out on clicking .close", function () {
-        var alertHTML = '<div class="alert-message warning fade in">'
-          + '<a class="close" href="#" data-dismiss="alert">×</a>'
-          + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>'
-          + '</div>'
-          , alert = $(alertHTML).alert()
-
-        alert.find('.close').click()
-
-        ok(!alert.hasClass('in'), 'remove .in class on .close click')
-      })
-
-      test("should remove element when clicking .close", function () {
-        $.support.transition = false
-
-        var alertHTML = '<div class="alert-message warning fade in">'
-          + '<a class="close" href="#" data-dismiss="alert">×</a>'
-          + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>'
-          + '</div>'
-          , alert = $(alertHTML).appendTo('#qunit-fixture').alert()
-
-        ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom')
-
-        alert.find('.close').click()
-
-        ok(!$('#qunit-fixture').find('.alert-message').length, 'element removed from dom')
-      })
-
-      test("should not fire closed when close is prevented", function () {
-        $.support.transition = false
-        stop();
-        $('<div class="alert"/>')
-          .bind('close', function (e) {
-            e.preventDefault();
-            ok(true);
-            start();
-          })
-          .bind('closed', function () {
-            ok(false);
-          })
-          .alert('close')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-button.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-button.js
deleted file mode 100644
index e23ff9e3..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-button.js
+++ /dev/null
@@ -1,102 +0,0 @@
-$(function () {
-
-    module("bootstrap-buttons")
-
-      test("should provide no conflict", function () {
-        var button = $.fn.button.noConflict()
-        ok(!$.fn.button, 'button was set back to undefined (org value)')
-        $.fn.button = button
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).button, 'button method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).button()[0] == document.body, 'document.body returned')
-      })
-
-      test("should return set state to loading", function () {
-        var btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
-        equals(btn.html(), 'mdo', 'btn text equals mdo')
-        btn.button('loading')
-        equals(btn.html(), 'fat', 'btn text equals fat')
-        stop()
-        setTimeout(function () {
-          ok(btn.attr('disabled'), 'btn is disabled')
-          ok(btn.hasClass('disabled'), 'btn has disabled class')
-          start()
-        }, 0)
-      })
-
-      test("should return reset state", function () {
-        var btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
-        equals(btn.html(), 'mdo', 'btn text equals mdo')
-        btn.button('loading')
-        equals(btn.html(), 'fat', 'btn text equals fat')
-        stop()
-        setTimeout(function () {
-          ok(btn.attr('disabled'), 'btn is disabled')
-          ok(btn.hasClass('disabled'), 'btn has disabled class')
-          start()
-          stop()
-        }, 0)
-        btn.button('reset')
-        equals(btn.html(), 'mdo', 'btn text equals mdo')
-        setTimeout(function () {
-          ok(!btn.attr('disabled'), 'btn is not disabled')
-          ok(!btn.hasClass('disabled'), 'btn does not have disabled class')
-          start()
-        }, 0)
-      })
-
-      test("should toggle active", function () {
-        var btn = $('<button class="btn">mdo</button>')
-        ok(!btn.hasClass('active'), 'btn does not have active class')
-        btn.button('toggle')
-        ok(btn.hasClass('active'), 'btn has class active')
-      })
-
-      test("should toggle active when btn children are clicked", function () {
-        var btn = $('<button class="btn" data-toggle="button">mdo</button>')
-          , inner = $('<i></i>')
-        btn
-          .append(inner)
-          .appendTo($('#qunit-fixture'))
-        ok(!btn.hasClass('active'), 'btn does not have active class')
-        inner.click()
-        ok(btn.hasClass('active'), 'btn has class active')
-      })
-
-      test("should toggle active when btn children are clicked within btn-group", function () {
-        var btngroup = $('<div class="btn-group" data-toggle="buttons-checkbox"></div>')
-          , btn = $('<button class="btn">fat</button>')
-          , inner = $('<i></i>')
-        btngroup
-          .append(btn.append(inner))
-          .appendTo($('#qunit-fixture'))
-        ok(!btn.hasClass('active'), 'btn does not have active class')
-        inner.click()
-        ok(btn.hasClass('active'), 'btn has class active')
-      })
-
-      test("should check for closest matching toggle", function () {
-        var group = $("<div data-toggle='buttons-radio'></div>")
-          , btn1  = $("<button class='btn active'></button>")
-          , btn2  = $("<button class='btn'></button>")
-          , wrap  = $("<div></div>")
-
-        wrap.append(btn1, btn2)
-
-        group
-          .append(wrap)
-          .appendTo($('#qunit-fixture'))
-
-        ok(btn1.hasClass('active'), 'btn1 has active class')
-        ok(!btn2.hasClass('active'), 'btn2 does not have active class')
-        btn2.click()
-        ok(!btn1.hasClass('active'), 'btn1 does not have active class')
-        ok(btn2.hasClass('active'), 'btn2 has active class')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-carousel.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-carousel.js
deleted file mode 100644
index 80b6e139..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-carousel.js
+++ /dev/null
@@ -1,81 +0,0 @@
-$(function () {
-
-    module("bootstrap-carousel")
-
-      test("should provide no conflict", function () {
-        var carousel = $.fn.carousel.noConflict()
-        ok(!$.fn.carousel, 'carousel was set back to undefined (org value)')
-        $.fn.carousel = carousel
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).carousel, 'carousel method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).carousel()[0] == document.body, 'document.body returned')
-      })
-
-      test("should not fire sliden when slide is prevented", function () {
-        $.support.transition = false
-        stop()
-        $('<div class="carousel"/>')
-          .bind('slide', function (e) {
-            e.preventDefault();
-            ok(true);
-            start();
-          })
-          .bind('slid', function () {
-            ok(false);
-          })
-          .carousel('next')
-      })
-
-      test("should fire slide event with direction", function () {
-        var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>'
-        $.support.transition = false
-        stop()
-        $(template).on('slide', function (e) {
-          e.preventDefault()
-          ok(e.direction)
-          ok(e.direction === 'right' || e.direction === 'left')
-          start()
-        }).carousel('next')
-      })
-
-      test("should fire slide event with relatedTarget", function () {
-        var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>'
-        $.support.transition = false
-        stop()
-        $(template)
-          .on('slide', function (e) {
-            e.preventDefault();
-            ok(e.relatedTarget);
-            ok($(e.relatedTarget).hasClass('item'));
-            start();
-          })
-          .carousel('next')
-      })
-
-      test("should set interval from data attribute", 3,function () {
-        var template = $('<div id="myCarousel" class="carousel slide"> <div class="carousel-inner"> <div class="item active"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}First Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> <div class="item"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}Second Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> <div class="item"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}Third Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> </div> <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a> <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a> </div>');
-        template.attr("data-interval", 1814);
-
-        template.appendTo("body");
-        $('[data-slide]').first().click();
-        ok($('#myCarousel').data('carousel').options.interval == 1814);
-        $('#myCarousel').remove();
-
-        template.appendTo("body").attr("data-modal", "foobar");
-        $('[data-slide]').first().click();
-        ok($('#myCarousel').data('carousel').options.interval == 1814, "even if there is an data-modal attribute set");
-        $('#myCarousel').remove();
-
-        template.appendTo("body");
-        $('[data-slide]').first().click();
-        $('#myCarousel').attr('data-interval', 1860);
-        $('[data-slide]').first().click();
-        ok($('#myCarousel').data('carousel').options.interval == 1814, "attributes should be read only on intitialization");
-        $('#myCarousel').remove();
-      })
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-collapse.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-collapse.js
deleted file mode 100644
index 4c5916ec..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-collapse.js
+++ /dev/null
@@ -1,94 +0,0 @@
-$(function () {
-
-    module("bootstrap-collapse")
-
-      test("should provide no conflict", function () {
-        var collapse = $.fn.collapse.noConflict()
-        ok(!$.fn.collapse, 'collapse was set back to undefined (org value)')
-        $.fn.collapse = collapse
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).collapse, 'collapse method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).collapse()[0] == document.body, 'document.body returned')
-      })
-
-      test("should show a collapsed element", function () {
-        var el = $('<div class="collapse"></div>').collapse('show')
-        ok(el.hasClass('in'), 'has class in')
-        ok(/height/.test(el.attr('style')), 'has height set')
-      })
-
-      test("should hide a collapsed element", function () {
-        var el = $('<div class="collapse"></div>').collapse('hide')
-        ok(!el.hasClass('in'), 'does not have class in')
-        ok(/height/.test(el.attr('style')), 'has height set')
-      })
-
-      test("should not fire shown when show is prevented", function () {
-        $.support.transition = false
-        stop()
-        $('<div class="collapse"/>')
-          .bind('show', function (e) {
-            e.preventDefault();
-            ok(true);
-            start();
-          })
-          .bind('shown', function () {
-            ok(false);
-          })
-          .collapse('show')
-      })
-
-      test("should reset style to auto after finishing opening collapse", function () {
-        $.support.transition = false
-        stop()
-        $('<div class="collapse" style="height: 0px"/>')
-          .bind('show', function () {
-            ok(this.style.height == '0px')
-          })
-          .bind('shown', function () {
-            ok(this.style.height == 'auto')
-            start()
-          })
-          .collapse('show')
-      })
-
-      test("should add active class to target when collapse shown", function () {
-        $.support.transition = false
-        stop()
-
-        var target = $('<a data-toggle="collapse" href="#test1"></a>')
-          .appendTo($('#qunit-fixture'))
-
-        var collapsible = $('<div id="test1"></div>')
-          .appendTo($('#qunit-fixture'))
-          .on('show', function () {
-            ok(!target.hasClass('collapsed'))
-            start()
-          })
-
-        target.click()
-      })
-
-      test("should remove active class to target when collapse hidden", function () {
-        $.support.transition = false
-        stop()
-
-        var target = $('<a data-toggle="collapse" href="#test1"></a>')
-          .appendTo($('#qunit-fixture'))
-
-        var collapsible = $('<div id="test1" class="in"></div>')
-          .appendTo($('#qunit-fixture'))
-          .on('hide', function () {
-            ok(target.hasClass('collapsed'))
-            start()
-          })
-
-        target.click()
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-dropdown.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-dropdown.js
deleted file mode 100644
index 2f0d2d29..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-dropdown.js
+++ /dev/null
@@ -1,151 +0,0 @@
-$(function () {
-
-    module("bootstrap-dropdowns")
-
-      test("should provide no conflict", function () {
-        var dropdown = $.fn.dropdown.noConflict()
-        ok(!$.fn.dropdown, 'dropdown was set back to undefined (org value)')
-        $.fn.dropdown = dropdown
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).dropdown, 'dropdown method is defined')
-      })
-
-      test("should return element", function () {
-        var el = $("<div />")
-        ok(el.dropdown()[0] === el[0], 'same element returned')
-      })
-
-      test("should not open dropdown if target is disabled", function () {
-        var dropdownHTML = '<ul class="tabs">'
-          + '<li class="dropdown">'
-          + '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#">Secondary link</a></li>'
-          + '<li><a href="#">Something else here</a></li>'
-          + '<li class="divider"></li>'
-          + '<li><a href="#">Another link</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-          , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
-
-        ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
-      })
-
-      test("should not open dropdown if target is disabled", function () {
-        var dropdownHTML = '<ul class="tabs">'
-          + '<li class="dropdown">'
-          + '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#">Secondary link</a></li>'
-          + '<li><a href="#">Something else here</a></li>'
-          + '<li class="divider"></li>'
-          + '<li><a href="#">Another link</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-          , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
-
-        ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
-      })
-
-      test("should add class open to menu if clicked", function () {
-        var dropdownHTML = '<ul class="tabs">'
-          + '<li class="dropdown">'
-          + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#">Secondary link</a></li>'
-          + '<li><a href="#">Something else here</a></li>'
-          + '<li class="divider"></li>'
-          + '<li><a href="#">Another link</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-          , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
-
-        ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
-      })
-
-      test("should test if element has a # before assuming it's a selector", function () {
-        var dropdownHTML = '<ul class="tabs">'
-          + '<li class="dropdown">'
-          + '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#">Secondary link</a></li>'
-          + '<li><a href="#">Something else here</a></li>'
-          + '<li class="divider"></li>'
-          + '<li><a href="#">Another link</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-          , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
-
-        ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
-      })
-
-
-      test("should remove open class if body clicked", function () {
-        var dropdownHTML = '<ul class="tabs">'
-          + '<li class="dropdown">'
-          + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#">Secondary link</a></li>'
-          + '<li><a href="#">Something else here</a></li>'
-          + '<li class="divider"></li>'
-          + '<li><a href="#">Another link</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-          , dropdown = $(dropdownHTML)
-            .appendTo('#qunit-fixture')
-            .find('[data-toggle="dropdown"]')
-            .dropdown()
-            .click()
-        ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
-        $('body').click()
-        ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class removed')
-        dropdown.remove()
-      })
-
-      test("should remove open class if body clicked, with multiple drop downs", function () {
-          var dropdownHTML =
-            '<ul class="nav">'
-            + '    <li><a href="#menu1">Menu 1</a></li>'
-            + '    <li class="dropdown" id="testmenu">'
-            + '      <a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <b class="caret"></b></a>'
-            + '      <ul class="dropdown-menu" role="menu">'
-            + '        <li><a href="#sub1">Submenu 1</a></li>'
-            + '      </ul>'
-            + '    </li>'
-            + '</ul>'
-            + '<div class="btn-group">'
-            + '    <button class="btn">Actions</button>'
-            + '    <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>'
-            + '    <ul class="dropdown-menu">'
-            + '        <li><a href="#">Action 1</a></li>'
-            + '    </ul>'
-            + '</div>'
-          , dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
-          , first = dropdowns.first()
-          , last = dropdowns.last()
-
-        ok(dropdowns.length == 2, "Should be two dropdowns")
-
-        first.click()
-        ok(first.parents('.open').length == 1, 'open class added on click')
-        ok($('#qunit-fixture .open').length == 1, 'only one object is open')
-        $('body').click()
-        ok($("#qunit-fixture .open").length === 0, 'open class removed')
-
-        last.click()
-        ok(last.parent('.open').length == 1, 'open class added on click')
-        ok($('#qunit-fixture .open').length == 1, 'only one object is open')
-        $('body').click()
-        ok($("#qunit-fixture .open").length === 0, 'open class removed')
-
-        $("#qunit-fixture").html("")
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-modal.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-modal.js
deleted file mode 100644
index 98aa990a..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-modal.js
+++ /dev/null
@@ -1,120 +0,0 @@
-$(function () {
-
-    module("bootstrap-modal")
-
-      test("should provide no conflict", function () {
-        var modal = $.fn.modal.noConflict()
-        ok(!$.fn.modal, 'modal was set back to undefined (org value)')
-        $.fn.modal = modal
-      })
-
-      test("should be defined on jquery object", function () {
-        var div = $("<div id='modal-test'></div>")
-        ok(div.modal, 'modal method is defined')
-      })
-
-      test("should return element", function () {
-        var div = $("<div id='modal-test'></div>")
-        ok(div.modal() == div, 'document.body returned')
-        $('#modal-test').remove()
-      })
-
-      test("should expose defaults var for settings", function () {
-        ok($.fn.modal.defaults, 'default object exposed')
-      })
-
-      test("should insert into dom when show method is called", function () {
-        stop()
-        $.support.transition = false
-        $("<div id='modal-test'></div>")
-          .bind("shown", function () {
-            ok($('#modal-test').length, 'modal insterted into dom')
-            $(this).remove()
-            start()
-          })
-          .modal("show")
-      })
-
-      test("should fire show event", function () {
-        stop()
-        $.support.transition = false
-        $("<div id='modal-test'></div>")
-          .bind("show", function () {
-            ok(true, "show was called")
-          })
-          .bind("shown", function () {
-            $(this).remove()
-            start()
-          })
-          .modal("show")
-      })
-
-      test("should not fire shown when default prevented", function () {
-        stop()
-        $.support.transition = false
-        $("<div id='modal-test'></div>")
-          .bind("show", function (e) {
-            e.preventDefault()
-            ok(true, "show was called")
-            start()
-          })
-          .bind("shown", function () {
-            ok(false, "shown was called")
-          })
-          .modal("show")
-      })
-
-      test("should hide modal when hide is called", function () {
-        stop()
-        $.support.transition = false
-
-        $("<div id='modal-test'></div>")
-          .bind("shown", function () {
-            ok($('#modal-test').is(":visible"), 'modal visible')
-            ok($('#modal-test').length, 'modal insterted into dom')
-            $(this).modal("hide")
-          })
-          .bind("hidden", function() {
-            ok(!$('#modal-test').is(":visible"), 'modal hidden')
-            $('#modal-test').remove()
-            start()
-          })
-          .modal("show")
-      })
-
-      test("should toggle when toggle is called", function () {
-        stop()
-        $.support.transition = false
-        var div = $("<div id='modal-test'></div>")
-        div
-          .bind("shown", function () {
-            ok($('#modal-test').is(":visible"), 'modal visible')
-            ok($('#modal-test').length, 'modal insterted into dom')
-            div.modal("toggle")
-          })
-          .bind("hidden", function() {
-            ok(!$('#modal-test').is(":visible"), 'modal hidden')
-            div.remove()
-            start()
-          })
-          .modal("toggle")
-      })
-
-      test("should remove from dom when click [data-dismiss=modal]", function () {
-        stop()
-        $.support.transition = false
-        var div = $("<div id='modal-test'><span class='close' data-dismiss='modal'></span></div>")
-        div
-          .bind("shown", function () {
-            ok($('#modal-test').is(":visible"), 'modal visible')
-            ok($('#modal-test').length, 'modal insterted into dom')
-            div.find('.close').click()
-          })
-          .bind("hidden", function() {
-            ok(!$('#modal-test').is(":visible"), 'modal hidden')
-            div.remove()
-            start()
-          })
-          .modal("toggle")
-      })
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-phantom.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-phantom.js
deleted file mode 100644
index a04aeaa8..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-phantom.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Logging setup for phantom integration
-// adapted from Modernizr
-
-QUnit.begin = function () {
-  console.log("Starting test suite")
-  console.log("================================================\n")
-}
-
-QUnit.moduleDone = function (opts) {
-  if (opts.failed === 0) {
-    console.log("\u2714 All tests passed in '" + opts.name + "' module")
-  } else {
-    console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
-  }
-}
-
-QUnit.done = function (opts) {
-  console.log("\n================================================")
-  console.log("Tests completed in " + opts.runtime + " milliseconds")
-  console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-popover.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-popover.js
deleted file mode 100644
index 20234e14..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-popover.js
+++ /dev/null
@@ -1,113 +0,0 @@
-$(function () {
-
-    module("bootstrap-popover")
-
-      test("should provide no conflict", function () {
-        var popover = $.fn.popover.noConflict()
-        ok(!$.fn.popover, 'popover was set back to undefined (org value)')
-        $.fn.popover = popover
-      })
-
-      test("should be defined on jquery object", function () {
-        var div = $('<div></div>')
-        ok(div.popover, 'popover method is defined')
-      })
-
-      test("should return element", function () {
-        var div = $('<div></div>')
-        ok(div.popover() == div, 'document.body returned')
-      })
-
-      test("should render popover element", function () {
-        $.support.transition = false
-        var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
-          .appendTo('#qunit-fixture')
-          .popover('show')
-
-        ok($('.popover').length, 'popover was inserted')
-        popover.popover('hide')
-        ok(!$(".popover").length, 'popover removed')
-      })
-
-      test("should store popover instance in popover data object", function () {
-        $.support.transition = false
-        var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
-          .popover()
-
-        ok(!!popover.data('popover'), 'popover instance exists')
-      })
-
-      test("should get title and content from options", function () {
-        $.support.transition = false
-        var popover = $('<a href="#">@fat</a>')
-          .appendTo('#qunit-fixture')
-          .popover({
-            title: function () {
-              return '@fat'
-            }
-          , content: function () {
-              return 'loves writing tests (╯°□°)╯︵ ┻━┻'
-            }
-          })
-
-        popover.popover('show')
-
-        ok($('.popover').length, 'popover was inserted')
-        equals($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
-        equals($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
-
-        popover.popover('hide')
-        ok(!$('.popover').length, 'popover was removed')
-        $('#qunit-fixture').empty()
-      })
-
-      test("should get title and content from attributes", function () {
-        $.support.transition = false
-        var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
-          .appendTo('#qunit-fixture')
-          .popover()
-          .popover('show')
-
-        ok($('.popover').length, 'popover was inserted')
-        equals($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
-        equals($('.popover .popover-content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
-
-        popover.popover('hide')
-        ok(!$('.popover').length, 'popover was removed')
-        $('#qunit-fixture').empty()
-      })
-
-      test("should respect custom classes", function() {
-        $.support.transition = false
-        var popover = $('<a href="#">@fat</a>')
-          .appendTo('#qunit-fixture')
-          .popover({
-            title: 'Test'
-          , content: 'Test'
-          , template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div></div>'
-          })
-
-        popover.popover('show')
-
-        ok($('.popover').length, 'popover was inserted')
-        ok($('.popover').hasClass('foobar'), 'custom class is present')
-
-        popover.popover('hide')
-        ok(!$('.popover').length, 'popover was removed')
-        $('#qunit-fixture').empty()
-      })
-
-      test("should destroy popover", function () {
-        var popover = $('<div/>').popover({trigger: 'hover'}).on('click.foo', function(){})
-        ok(popover.data('popover'), 'popover has data')
-        ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
-        ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
-        popover.popover('show')
-        popover.popover('destroy')
-        ok(!popover.hasClass('in'), 'popover is hidden')
-        ok(!popover.data('popover'), 'popover does not have data')
-        ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo')
-        ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-scrollspy.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-scrollspy.js
deleted file mode 100644
index 32bfa713..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-scrollspy.js
+++ /dev/null
@@ -1,37 +0,0 @@
-$(function () {
-
-    module("bootstrap-scrollspy")
-
-      test("should provide no conflict", function () {
-        var scrollspy = $.fn.scrollspy.noConflict()
-        ok(!$.fn.scrollspy, 'scrollspy was set back to undefined (org value)')
-        $.fn.scrollspy = scrollspy
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).scrollspy, 'scrollspy method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).scrollspy()[0] == document.body, 'document.body returned')
-      })
-
-      test("should switch active class on scroll", function () {
-        var sectionHTML = '<div id="masthead"></div>'
-          , $section = $(sectionHTML).append('#qunit-fixture')
-          , topbarHTML ='<div class="topbar">'
-          + '<div class="topbar-inner">'
-          + '<div class="container">'
-          + '<h3><a href="#">Bootstrap</a></h3>'
-          + '<ul class="nav">'
-          + '<li><a href="#masthead">Overview</a></li>'
-          + '</ul>'
-          + '</div>'
-          + '</div>'
-          + '</div>'
-          , $topbar = $(topbarHTML).scrollspy()
-
-        ok($topbar.find('.active', true))
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tab.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tab.js
deleted file mode 100644
index ba5910d5..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tab.js
+++ /dev/null
@@ -1,86 +0,0 @@
-$(function () {
-
-    module("bootstrap-tabs")
-
-      test("should provide no conflict", function () {
-        var tab = $.fn.tab.noConflict()
-        ok(!$.fn.tab, 'tab was set back to undefined (org value)')
-        $.fn.tab = tab
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).tab, 'tabs method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).tab()[0] == document.body, 'document.body returned')
-      })
-
-      test("should activate element by tab id", function () {
-        var tabsHTML =
-            '<ul class="tabs">'
-          + '<li><a href="#home">Home</a></li>'
-          + '<li><a href="#profile">Profile</a></li>'
-          + '</ul>'
-
-        $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
-
-        $(tabsHTML).find('li:last a').tab('show')
-        equals($("#qunit-fixture").find('.active').attr('id'), "profile")
-
-        $(tabsHTML).find('li:first a').tab('show')
-        equals($("#qunit-fixture").find('.active').attr('id'), "home")
-      })
-
-      test("should activate element by tab id", function () {
-        var pillsHTML =
-            '<ul class="pills">'
-          + '<li><a href="#home">Home</a></li>'
-          + '<li><a href="#profile">Profile</a></li>'
-          + '</ul>'
-
-        $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
-
-        $(pillsHTML).find('li:last a').tab('show')
-        equals($("#qunit-fixture").find('.active').attr('id'), "profile")
-
-        $(pillsHTML).find('li:first a').tab('show')
-        equals($("#qunit-fixture").find('.active').attr('id'), "home")
-      })
-
-
-      test("should not fire closed when close is prevented", function () {
-        $.support.transition = false
-        stop();
-        $('<div class="tab"/>')
-          .bind('show', function (e) {
-            e.preventDefault();
-            ok(true);
-            start();
-          })
-          .bind('shown', function () {
-            ok(false);
-          })
-          .tab('show')
-      })
-
-      test("show and shown events should reference correct relatedTarget", function () {
-        var dropHTML =
-            '<ul class="drop">'
-          + '<li class="dropdown"><a data-toggle="dropdown" href="#">1</a>'
-          + '<ul class="dropdown-menu">'
-          + '<li><a href="#1-1" data-toggle="tab">1-1</a></li>'
-          + '<li><a href="#1-2" data-toggle="tab">1-2</a></li>'
-          + '</ul>'
-          + '</li>'
-          + '</ul>'
-
-        $(dropHTML).find('ul>li:first a').tab('show').end()
-          .find('ul>li:last a').on('show', function(event){
-            equals(event.relatedTarget.hash, "#1-1")
-          }).on('shown', function(event){
-            equals(event.relatedTarget.hash, "#1-1")
-          }).tab('show')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tooltip.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tooltip.js
deleted file mode 100644
index 5b37b4e6..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-tooltip.js
+++ /dev/null
@@ -1,294 +0,0 @@
-$(function () {
-
-    module("bootstrap-tooltip")
-
-      test("should provide no conflict", function () {
-        var tooltip = $.fn.tooltip.noConflict()
-        ok(!$.fn.tooltip, 'tooltip was set back to undefined (org value)')
-        $.fn.tooltip = tooltip
-      })
-
-      test("should be defined on jquery object", function () {
-        var div = $("<div></div>")
-        ok(div.tooltip, 'popover method is defined')
-      })
-
-      test("should return element", function () {
-        var div = $("<div></div>")
-        ok(div.tooltip() == div, 'document.body returned')
-      })
-
-      test("should expose default settings", function () {
-        ok(!!$.fn.tooltip.defaults, 'defaults is defined')
-      })
-
-      test("should empty title attribute", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
-        ok(tooltip.attr('title') === '', 'title attribute was emptied')
-      })
-
-      test("should add data attribute for referencing original title", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
-        equals(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
-      })
-
-      test("should place tooltips relative to placement option", function () {
-        $.support.transition = false
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({placement: 'bottom'})
-          .tooltip('show')
-
-        ok($(".tooltip").is('.fade.bottom.in'), 'has correct classes applied')
-        tooltip.tooltip('hide')
-      })
-
-      test("should allow html entities", function () {
-        $.support.transition = false
-        var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({html: true})
-          .tooltip('show')
-
-        ok($('.tooltip b').length, 'b tag was inserted')
-        tooltip.tooltip('hide')
-        ok(!$(".tooltip").length, 'tooltip removed')
-      })
-
-      test("should respect custom classes", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'})
-          .tooltip('show')
-
-        ok($('.tooltip').hasClass('some-class'), 'custom class is present')
-        tooltip.tooltip('hide')
-        ok(!$(".tooltip").length, 'tooltip removed')
-      })
-
-      test("should fire show event", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("show", function() {
-            ok(true, "show was called")
-            start()
-          })
-          .tooltip('show')
-      })
-
-      test("should fire shown event", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("shown", function() {
-            ok(true, "shown was called")
-            start()
-          })
-          .tooltip('show')
-      })
-
-      test("should not fire shown event when default prevented", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("show", function(e) {
-            e.preventDefault()
-            ok(true, "show was called")
-            start()
-          })
-          .bind("shown", function() {
-            ok(false, "shown was called")
-          })
-          .tooltip('show')
-      })
-
-      test("should fire hide event", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("shown", function() {
-            $(this).tooltip('hide')
-          })
-          .bind("hide", function() {
-            ok(true, "hide was called")
-            start()
-          })
-          .tooltip('show')
-      })
-
-      test("should fire hidden event", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("shown", function() {
-            $(this).tooltip('hide')
-          })
-          .bind("hidden", function() {
-            ok(true, "hidden was called")
-            start()
-          })
-          .tooltip('show')
-      })
-
-      test("should not fire hidden event when default prevented", function () {
-        stop()
-        var tooltip = $('<div title="tooltip title"></div>')
-          .bind("shown", function() {
-            $(this).tooltip('hide')
-          })
-          .bind("hide", function(e) {
-            e.preventDefault()
-            ok(true, "hide was called")
-            start()
-          })
-          .bind("hidden", function() {
-            ok(false, "hidden was called")
-          })
-          .tooltip('show')
-      })
-
-      test("should not show tooltip if leave event occurs before delay expires", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({ delay: 200 })
-
-        stop()
-
-        tooltip.trigger('mouseenter')
-
-        setTimeout(function () {
-          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-          tooltip.trigger('mouseout')
-          setTimeout(function () {
-            ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-            start()
-          }, 200)
-        }, 100)
-      })
-
-      test("should not show tooltip if leave event occurs before delay expires, even if hide delay is 0", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({ delay: { show: 200, hide: 0} })
-
-        stop()
-
-        tooltip.trigger('mouseenter')
-
-        setTimeout(function () {
-          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-          tooltip.trigger('mouseout')
-          setTimeout(function () {
-            ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-            start()
-          }, 200)
-        }, 100)
-      })
-
-      test("should not show tooltip if leave event occurs before delay expires", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({ delay: 100 })
-        stop()
-        tooltip.trigger('mouseenter')
-        setTimeout(function () {
-          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-          tooltip.trigger('mouseout')
-          setTimeout(function () {
-            ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-            start()
-          }, 100)
-        }, 50)
-      })
-
-      test("should show tooltip if leave event hasn't occured before delay expires", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({ delay: 150 })
-        stop()
-        tooltip.trigger('mouseenter')
-        setTimeout(function () {
-          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
-        }, 100)
-        setTimeout(function () {
-          ok($(".tooltip").is('.fade.in'), 'tooltip has faded in')
-          start()
-        }, 200)
-      })
-
-      test("should destroy tooltip", function () {
-        var tooltip = $('<div/>').tooltip().on('click.foo', function(){})
-        ok(tooltip.data('tooltip'), 'tooltip has data')
-        ok($._data(tooltip[0], 'events').mouseover && $._data(tooltip[0], 'events').mouseout, 'tooltip has hover event')
-        ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip has extra click.foo event')
-        tooltip.tooltip('show')
-        tooltip.tooltip('destroy')
-        ok(!tooltip.hasClass('in'), 'tooltip is hidden')
-        ok(!$._data(tooltip[0], 'tooltip'), 'tooltip does not have data')
-        ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip still has click.foo')
-        ok(!$._data(tooltip[0], 'events').mouseover && !$._data(tooltip[0], 'events').mouseout, 'tooltip does not have any events')
-      })
-
-      test("should show tooltip with delegate selector on click", function () {
-        var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
-        var tooltip = div.appendTo('#qunit-fixture')
-                         .tooltip({ selector: 'a[rel=tooltip]',
-                                    trigger: 'click' })
-        div.find('a').trigger('click')
-        ok($(".tooltip").is('.fade.in'), 'tooltip is faded in')
-      })
-
-      test("should show tooltip when toggle is called", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="tooltip on toggle"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({trigger: 'manual'})
-          .tooltip('toggle')
-        ok($(".tooltip").is('.fade.in'), 'tooltip should be toggled in')
-      })
-
-      test("should place tooltips inside the body", function () {
-        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
-          .appendTo('#qunit-fixture')
-          .tooltip({container:'body'})
-          .tooltip('show')
-        ok($("body > .tooltip").length, 'inside the body')
-        ok(!$("#qunit-fixture > .tooltip").length, 'not found in parent')
-        tooltip.tooltip('hide')
-      })
-
-      test("should place tooltip inside window", function(){
-        var container = $("<div />").appendTo("body")
-            .css({position: "absolute", width: 200, height: 200, bottom: 0, left: 0})
-          , tooltip = $("<a href='#' title='Very very very very very very very very long tooltip'>Hover me</a>")
-          .css({position: "absolute", top:0, left: 0})
-          .appendTo(container)
-          .tooltip({placement: "top", animate: false})
-          .tooltip("show")
-
-        stop()
-
-        setTimeout(function(){
-          ok($(".tooltip").offset().left >= 0)
-
-          start()
-          container.remove()
-        }, 100)
-      })
-
-      test("should place tooltip on top of element", function(){
-        var container = $("<div />").appendTo("body")
-              .css({position: "absolute", bottom: 0, left: 0, textAlign: "right", width: 300, height: 300})
-            , p = $("<p style='margin-top:200px' />").appendTo(container)
-            , tooltiped = $("<a href='#' title='very very very very very very very long tooltip'>Hover me</a>")
-              .css({marginTop: 200})
-              .appendTo(p)
-              .tooltip({placement: "top", animate: false})
-              .tooltip("show")
-
-        stop()
-
-        setTimeout(function(){
-          var tooltip = container.find(".tooltip")
-
-          start()
-          ok(tooltip.offset().top + tooltip.outerHeight() <= tooltiped.offset().top)
-          container.remove()
-        }, 100)
-      })
-})
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-transition.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-transition.js
deleted file mode 100644
index 086773fa..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-transition.js
+++ /dev/null
@@ -1,13 +0,0 @@
-$(function () {
-
-    module("bootstrap-transition")
-
-      test("should be defined on jquery support object", function () {
-        ok($.support.transition !== undefined, 'transition object is defined')
-      })
-
-      test("should provide an end object", function () {
-        ok($.support.transition ? $.support.transition.end : true, 'end string is defined')
-      })
-
-})
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-typeahead.js b/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-typeahead.js
deleted file mode 100644
index 0aa2d61b..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/unit/bootstrap-typeahead.js
+++ /dev/null
@@ -1,236 +0,0 @@
-$(function () {
-
-    module("bootstrap-typeahead")
-
-      test("should provide no conflict", function () {
-        var typeahead = $.fn.typeahead.noConflict()
-        ok(!$.fn.typeahead, 'typeahead was set back to undefined (org value)')
-        $.fn.typeahead = typeahead
-      })
-
-      test("should be defined on jquery object", function () {
-        ok($(document.body).typeahead, 'alert method is defined')
-      })
-
-      test("should return element", function () {
-        ok($(document.body).typeahead()[0] == document.body, 'document.body returned')
-      })
-
-      test("should listen to an input", function () {
-        var $input = $('<input />')
-        $input.typeahead()
-        ok($._data($input[0], 'events').blur, 'has a blur event')
-        ok($._data($input[0], 'events').keypress, 'has a keypress event')
-        ok($._data($input[0], 'events').keyup, 'has a keyup event')
-      })
-
-      test("should create a menu", function () {
-        var $input = $('<input />')
-        ok($input.typeahead().data('typeahead').$menu, 'has a menu')
-      })
-
-      test("should listen to the menu", function () {
-        var $input = $('<input />')
-          , $menu = $input.typeahead().data('typeahead').$menu
-
-        ok($._data($menu[0], 'events').mouseover, 'has a mouseover(pseudo: mouseenter)')
-        ok($._data($menu[0], 'events').click, 'has a click')
-      })
-
-      test("should show menu when query entered", function () {
-        var $input = $('<input />')
-            .appendTo('body')
-            .typeahead({
-              source: ['aa', 'ab', 'ac']
-            })
-          , typeahead = $input.data('typeahead')
-
-        $input.val('a')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should accept data source via synchronous function", function () {
-        var $input = $('<input />').typeahead({
-              source: function () {
-                return ['aa', 'ab', 'ac']
-              }
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('a')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should accept data source via asynchronous function", function () {
-        var $input = $('<input />').typeahead({
-              source: function (query, process) {
-                process(['aa', 'ab', 'ac'])
-              }
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('a')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should not explode when regex chars are entered", function () {
-        var $input = $('<input />').typeahead({
-              source: ['aa', 'ab', 'ac', 'mdo*', 'fat+']
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('+')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 1, 'has 1 item in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should hide menu when query entered", function () {
-        stop()
-        var $input = $('<input />').typeahead({
-              source: ['aa', 'ab', 'ac']
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('a')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-
-        $input.blur()
-
-        setTimeout(function () {
-          ok(!typeahead.$menu.is(":visible"), "typeahead is no longer visible")
-          start()
-        }, 200)
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should set next item when down arrow is pressed", function () {
-        var $input = $('<input />').typeahead({
-              source: ['aa', 'ab', 'ac']
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('a')
-        typeahead.lookup()
-
-        ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-        equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
-        ok(typeahead.$menu.find('li').first().hasClass('active'), "first item is active")
-
-        // simulate entire key pressing event
-        $input.trigger({
-          type: 'keydown'
-        , keyCode: 40
-        })
-        .trigger({
-          type: 'keypress'
-        , keyCode: 40
-        })
-        .trigger({
-          type: 'keyup'
-        , keyCode: 40
-        })
-
-        ok(typeahead.$menu.find('li').first().next().hasClass('active'), "second item is active")
-
-        $input.trigger({
-          type: 'keydown'
-        , keyCode: 38
-        })
-        .trigger({
-          type: 'keypress'
-        , keyCode: 38
-        })
-        .trigger({
-          type: 'keyup'
-        , keyCode: 38
-        })
-
-        ok(typeahead.$menu.find('li').first().hasClass('active'), "first item is active")
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-
-      test("should set input value to selected item", function () {
-        var $input = $('<input />').typeahead({
-              source: ['aa', 'ab', 'ac']
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-          , changed = false
-          , focus = false
-          , blur = false
-
-        $input.val('a')
-        typeahead.lookup()
-
-        $input.change(function() { changed = true });
-        $input.focus(function() { focus = true; blur = false });
-        $input.blur(function() { blur = true; focus = false });
-
-        $(typeahead.$menu.find('li')[2]).mouseover().click()
-
-        equals($input.val(), 'ac', 'input value was correctly set')
-        ok(!typeahead.$menu.is(':visible'), 'the menu was hidden')
-        ok(changed, 'a change event was fired')
-        ok(focus && !blur, 'focus is still set')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-
-      test("should start querying when minLength is met", function () {
-        var $input = $('<input />').typeahead({
-              source: ['aaaa', 'aaab', 'aaac'],
-              minLength: 3
-            }).appendTo('body')
-          , typeahead = $input.data('typeahead')
-
-        $input.val('aa')
-        typeahead.lookup()
-
-        equals(typeahead.$menu.find('li').length, 0, 'has 0 items in menu')
-
-        $input.val('aaa')
-        typeahead.lookup()
-
-        equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
-
-        $input.remove()
-        typeahead.$menu.remove()
-      })
-})
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/jquery.js b/src/main/webapp/bower_components/bootstrap/js/tests/vendor/jquery.js
deleted file mode 100644
index 006e9531..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/jquery.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery.min.map
-*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
-return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
-}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.css b/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.css
deleted file mode 100644
index b3e3d002..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.css
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * QUnit - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 15px 15px 0 0;
-	-moz-border-radius: 15px 15px 0 0;
-	-webkit-border-top-right-radius: 15px;
-	-webkit-border-top-left-radius: 15px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 15px;
-	-moz-border-radius: 15px;
-	-webkit-border-radius: 15px;
-
-	box-shadow: inset 0px 2px 13px #999;
-	-moz-box-shadow: inset 0px 2px 13px #999;
-	-webkit-box-shadow: inset 0px 2px 13px #999;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	margin: 0.5em;
-	padding: 0.4em 0.5em 0.4em 0.5em;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #5E740B;
-	background-color: #fff;
-	border-left: 26px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 26px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 15px 15px;
-	-moz-border-radius: 0 0 15px 15px;
-	-webkit-border-bottom-right-radius: 15px;
-	-webkit-border-bottom-left-radius: 15px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-}
-
-/** Runoff */
-
-#qunit-fixture {
-  display:none;
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.js b/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.js
deleted file mode 100644
index 46c95b29..00000000
--- a/src/main/webapp/bower_components/bootstrap/js/tests/vendor/qunit.js
+++ /dev/null
@@ -1,1510 +0,0 @@
-/**
- * QUnit - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2012 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- */
-
-(function(window) {
-
-var defined = {
-	setTimeout: typeof window.setTimeout !== "undefined",
-	sessionStorage: (function() {
-		try {
-			return !!sessionStorage.getItem;
-		} catch(e) {
-			return false;
-		}
-	})()
-};
-
-var testId = 0;
-
-var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
-	this.name = name;
-	this.testName = testName;
-	this.expected = expected;
-	this.testEnvironmentArg = testEnvironmentArg;
-	this.async = async;
-	this.callback = callback;
-	this.assertions = [];
-};
-Test.prototype = {
-	init: function() {
-		var tests = id("qunit-tests");
-		if (tests) {
-			var b = document.createElement("strong");
-				b.innerHTML = "Running " + this.name;
-			var li = document.createElement("li");
-				li.appendChild( b );
-				li.className = "running";
-				li.id = this.id = "test-output" + testId++;
-			tests.appendChild( li );
-		}
-	},
-	setup: function() {
-		if (this.module != config.previousModule) {
-			if ( config.previousModule ) {
-				QUnit.moduleDone( {
-					name: config.previousModule,
-					failed: config.moduleStats.bad,
-					passed: config.moduleStats.all - config.moduleStats.bad,
-					total: config.moduleStats.all
-				} );
-			}
-			config.previousModule = this.module;
-			config.moduleStats = { all: 0, bad: 0 };
-			QUnit.moduleStart( {
-				name: this.module
-			} );
-		}
-
-		config.current = this;
-		this.testEnvironment = extend({
-			setup: function() {},
-			teardown: function() {}
-		}, this.moduleTestEnvironment);
-		if (this.testEnvironmentArg) {
-			extend(this.testEnvironment, this.testEnvironmentArg);
-		}
-
-		QUnit.testStart( {
-			name: this.testName
-		} );
-
-		// allow utility functions to access the current test environment
-		// TODO why??
-		QUnit.current_testEnvironment = this.testEnvironment;
-
-		try {
-			if ( !config.pollution ) {
-				saveGlobal();
-			}
-
-			this.testEnvironment.setup.call(this.testEnvironment);
-		} catch(e) {
-			QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
-		}
-	},
-	run: function() {
-		if ( this.async ) {
-			QUnit.stop();
-		}
-
-		if ( config.notrycatch ) {
-			this.callback.call(this.testEnvironment);
-			return;
-		}
-		try {
-			this.callback.call(this.testEnvironment);
-		} catch(e) {
-			fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
-			QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
-			// else next test will carry the responsibility
-			saveGlobal();
-
-			// Restart the tests if they're blocking
-			if ( config.blocking ) {
-				start();
-			}
-		}
-	},
-	teardown: function() {
-		try {
-			this.testEnvironment.teardown.call(this.testEnvironment);
-			checkPollution();
-		} catch(e) {
-			QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
-		}
-	},
-	finish: function() {
-		if ( this.expected && this.expected != this.assertions.length ) {
-			QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
-		}
-
-		var good = 0, bad = 0,
-			tests = id("qunit-tests");
-
-		config.stats.all += this.assertions.length;
-		config.moduleStats.all += this.assertions.length;
-
-		if ( tests ) {
-			var ol = document.createElement("ol");
-
-			for ( var i = 0; i < this.assertions.length; i++ ) {
-				var assertion = this.assertions[i];
-
-				var li = document.createElement("li");
-				li.className = assertion.result ? "pass" : "fail";
-				li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
-				ol.appendChild( li );
-
-				if ( assertion.result ) {
-					good++;
-				} else {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-
-			// store result when possible
-			if ( QUnit.config.reorder && defined.sessionStorage ) {
-				if (bad) {
-					sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad);
-				} else {
-					sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName);
-				}
-			}
-
-			if (bad == 0) {
-				ol.style.display = "none";
-			}
-
-			var b = document.createElement("strong");
-			b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
-
-			var a = document.createElement("a");
-			a.innerHTML = "Rerun";
-			a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
-
-			addEvent(b, "click", function() {
-				var next = b.nextSibling.nextSibling,
-					display = next.style.display;
-				next.style.display = display === "none" ? "block" : "none";
-			});
-
-			addEvent(b, "dblclick", function(e) {
-				var target = e && e.target ? e.target : window.event.srcElement;
-				if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
-					target = target.parentNode;
-				}
-				if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-					window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
-				}
-			});
-
-			var li = id(this.id);
-			li.className = bad ? "fail" : "pass";
-			li.removeChild( li.firstChild );
-			li.appendChild( b );
-			li.appendChild( a );
-			li.appendChild( ol );
-
-		} else {
-			for ( var i = 0; i < this.assertions.length; i++ ) {
-				if ( !this.assertions[i].result ) {
-					bad++;
-					config.stats.bad++;
-					config.moduleStats.bad++;
-				}
-			}
-		}
-
-		try {
-			QUnit.reset();
-		} catch(e) {
-			fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
-		}
-
-		QUnit.testDone( {
-			name: this.testName,
-			failed: bad,
-			passed: this.assertions.length - bad,
-			total: this.assertions.length
-		} );
-	},
-
-	queue: function() {
-		var test = this;
-		synchronize(function() {
-			test.init();
-		});
-		function run() {
-			// each of these can by async
-			synchronize(function() {
-				test.setup();
-			});
-			synchronize(function() {
-				test.run();
-			});
-			synchronize(function() {
-				test.teardown();
-			});
-			synchronize(function() {
-				test.finish();
-			});
-		}
-		// defer when previous test run passed, if storage is available
-		var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName);
-		if (bad) {
-			run();
-		} else {
-			synchronize(run);
-		};
-	}
-
-};
-
-var QUnit = {
-
-	// call on start of module test to prepend name to all tests
-	module: function(name, testEnvironment) {
-		config.currentModule = name;
-		config.currentModuleTestEnviroment = testEnvironment;
-	},
-
-	asyncTest: function(testName, expected, callback) {
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = 0;
-		}
-
-		QUnit.test(testName, expected, callback, true);
-	},
-
-	test: function(testName, expected, callback, async) {
-		var name = '<span class="test-name">' + testName + '</span>', testEnvironmentArg;
-
-		if ( arguments.length === 2 ) {
-			callback = expected;
-			expected = null;
-		}
-		// is 2nd argument a testEnvironment?
-		if ( expected && typeof expected === 'object') {
-			testEnvironmentArg = expected;
-			expected = null;
-		}
-
-		if ( config.currentModule ) {
-			name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
-		}
-
-		if ( !validTest(config.currentModule + ": " + testName) ) {
-			return;
-		}
-
-		var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
-		test.module = config.currentModule;
-		test.moduleTestEnvironment = config.currentModuleTestEnviroment;
-		test.queue();
-	},
-
-	/**
-	 * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-	 */
-	expect: function(asserts) {
-		config.current.expected = asserts;
-	},
-
-	/**
-	 * Asserts true.
-	 * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-	 */
-	ok: function(a, msg) {
-		a = !!a;
-		var details = {
-			result: a,
-			message: msg
-		};
-		msg = escapeHtml(msg);
-		QUnit.log(details);
-		config.current.assertions.push({
-			result: a,
-			message: msg
-		});
-	},
-
-	/**
-	 * Checks that the first two arguments are equal, with an optional message.
-	 * Prints out both actual and expected values.
-	 *
-	 * Prefered to ok( actual == expected, message )
-	 *
-	 * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
-	 *
-	 * @param Object actual
-	 * @param Object expected
-	 * @param String message (optional)
-	 */
-	equal: function(actual, expected, message) {
-		QUnit.push(expected == actual, actual, expected, message);
-	},
-
-	notEqual: function(actual, expected, message) {
-		QUnit.push(expected != actual, actual, expected, message);
-	},
-
-	deepEqual: function(actual, expected, message) {
-		QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
-	},
-
-	notDeepEqual: function(actual, expected, message) {
-		QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
-	},
-
-	strictEqual: function(actual, expected, message) {
-		QUnit.push(expected === actual, actual, expected, message);
-	},
-
-	notStrictEqual: function(actual, expected, message) {
-		QUnit.push(expected !== actual, actual, expected, message);
-	},
-
-	raises: function(block, expected, message) {
-		var actual, ok = false;
-
-		if (typeof expected === 'string') {
-			message = expected;
-			expected = null;
-		}
-
-		try {
-			block();
-		} catch (e) {
-			actual = e;
-		}
-
-		if (actual) {
-			// we don't want to validate thrown error
-			if (!expected) {
-				ok = true;
-			// expected is a regexp
-			} else if (QUnit.objectType(expected) === "regexp") {
-				ok = expected.test(actual);
-			// expected is a constructor
-			} else if (actual instanceof expected) {
-				ok = true;
-			// expected is a validation function which returns true is validation passed
-			} else if (expected.call({}, actual) === true) {
-				ok = true;
-			}
-		}
-
-		QUnit.ok(ok, message);
-	},
-
-	start: function() {
-		config.semaphore--;
-		if (config.semaphore > 0) {
-			// don't start until equal number of stop-calls
-			return;
-		}
-		if (config.semaphore < 0) {
-			// ignore if start is called more often then stop
-			config.semaphore = 0;
-		}
-		// A slight delay, to avoid any current callbacks
-		if ( defined.setTimeout ) {
-			window.setTimeout(function() {
-				if (config.semaphore > 0) {
-					return;
-				}
-				if ( config.timeout ) {
-					clearTimeout(config.timeout);
-				}
-
-				config.blocking = false;
-				process();
-			}, 13);
-		} else {
-			config.blocking = false;
-			process();
-		}
-	},
-
-	stop: function(timeout) {
-		config.semaphore++;
-		config.blocking = true;
-
-		if ( timeout && defined.setTimeout ) {
-			clearTimeout(config.timeout);
-			config.timeout = window.setTimeout(function() {
-				QUnit.ok( false, "Test timed out" );
-				QUnit.start();
-			}, timeout);
-		}
-	}
-};
-
-// Backwards compatibility, deprecated
-QUnit.equals = QUnit.equal;
-QUnit.same = QUnit.deepEqual;
-
-// Maintain internal state
-var config = {
-	// The queue of tests to run
-	queue: [],
-
-	// block until document ready
-	blocking: true,
-
-	// when enabled, show only failing tests
-	// gets persisted through sessionStorage and can be changed in UI via checkbox
-	hidepassed: false,
-
-	// by default, run previously failed tests first
-	// very useful in combination with "Hide passed tests" checked
-	reorder: true,
-
-	// by default, modify document.title when suite is done
-	altertitle: true,
-
-	urlConfig: ['noglobals', 'notrycatch']
-};
-
-// Load paramaters
-(function() {
-	var location = window.location || { search: "", protocol: "file:" },
-		params = location.search.slice( 1 ).split( "&" ),
-		length = params.length,
-		urlParams = {},
-		current;
-
-	if ( params[ 0 ] ) {
-		for ( var i = 0; i < length; i++ ) {
-			current = params[ i ].split( "=" );
-			current[ 0 ] = decodeURIComponent( current[ 0 ] );
-			// allow just a key to turn on a flag, e.g., test.html?noglobals
-			current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
-			urlParams[ current[ 0 ] ] = current[ 1 ];
-		}
-	}
-
-	QUnit.urlParams = urlParams;
-	config.filter = urlParams.filter;
-
-	// Figure out if we're running the tests from a server or not
-	QUnit.isLocal = !!(location.protocol === 'file:');
-})();
-
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
-	extend(window, QUnit);
-	window.QUnit = QUnit;
-} else {
-	extend(exports, QUnit);
-	exports.QUnit = QUnit;
-}
-
-// define these after exposing globals to keep them in these QUnit namespace only
-extend(QUnit, {
-	config: config,
-
-	// Initialize the configuration options
-	init: function() {
-		extend(config, {
-			stats: { all: 0, bad: 0 },
-			moduleStats: { all: 0, bad: 0 },
-			started: +new Date,
-			updateRate: 1000,
-			blocking: false,
-			autostart: true,
-			autorun: false,
-			filter: "",
-			queue: [],
-			semaphore: 0
-		});
-
-		var tests = id( "qunit-tests" ),
-			banner = id( "qunit-banner" ),
-			result = id( "qunit-testresult" );
-
-		if ( tests ) {
-			tests.innerHTML = "";
-		}
-
-		if ( banner ) {
-			banner.className = "";
-		}
-
-		if ( result ) {
-			result.parentNode.removeChild( result );
-		}
-
-		if ( tests ) {
-			result = document.createElement( "p" );
-			result.id = "qunit-testresult";
-			result.className = "result";
-			tests.parentNode.insertBefore( result, tests );
-			result.innerHTML = 'Running...<br/>&nbsp;';
-		}
-	},
-
-	/**
-	 * Resets the test setup. Useful for tests that modify the DOM.
-	 *
-	 * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
-	 */
-	reset: function() {
-		if ( window.jQuery ) {
-			jQuery( "#qunit-fixture" ).html( config.fixture );
-		} else {
-			var main = id( 'qunit-fixture' );
-			if ( main ) {
-				main.innerHTML = config.fixture;
-			}
-		}
-	},
-
-	/**
-	 * Trigger an event on an element.
-	 *
-	 * @example triggerEvent( document.body, "click" );
-	 *
-	 * @param DOMElement elem
-	 * @param String type
-	 */
-	triggerEvent: function( elem, type, event ) {
-		if ( document.createEvent ) {
-			event = document.createEvent("MouseEvents");
-			event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
-				0, 0, 0, 0, 0, false, false, false, false, 0, null);
-			elem.dispatchEvent( event );
-
-		} else if ( elem.fireEvent ) {
-			elem.fireEvent("on"+type);
-		}
-	},
-
-	// Safe object type checking
-	is: function( type, obj ) {
-		return QUnit.objectType( obj ) == type;
-	},
-
-	objectType: function( obj ) {
-		if (typeof obj === "undefined") {
-				return "undefined";
-
-		// consider: typeof null === object
-		}
-		if (obj === null) {
-				return "null";
-		}
-
-		var type = Object.prototype.toString.call( obj )
-			.match(/^\[object\s(.*)\]$/)[1] || '';
-
-		switch (type) {
-				case 'Number':
-						if (isNaN(obj)) {
-								return "nan";
-						} else {
-								return "number";
-						}
-				case 'String':
-				case 'Boolean':
-				case 'Array':
-				case 'Date':
-				case 'RegExp':
-				case 'Function':
-						return type.toLowerCase();
-		}
-		if (typeof obj === "object") {
-				return "object";
-		}
-		return undefined;
-	},
-
-	push: function(result, actual, expected, message) {
-		var details = {
-			result: result,
-			message: message,
-			actual: actual,
-			expected: expected
-		};
-
-		message = escapeHtml(message) || (result ? "okay" : "failed");
-		message = '<span class="test-message">' + message + "</span>";
-		expected = escapeHtml(QUnit.jsDump.parse(expected));
-		actual = escapeHtml(QUnit.jsDump.parse(actual));
-		var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
-		if (actual != expected) {
-			output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
-			output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
-		}
-		if (!result) {
-			var source = sourceFromStacktrace();
-			if (source) {
-				details.source = source;
-				output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeHtml(source) + '</pre></td></tr>';
-			}
-		}
-		output += "</table>";
-
-		QUnit.log(details);
-
-		config.current.assertions.push({
-			result: !!result,
-			message: output
-		});
-	},
-
-	url: function( params ) {
-		params = extend( extend( {}, QUnit.urlParams ), params );
-		var querystring = "?",
-			key;
-		for ( key in params ) {
-			querystring += encodeURIComponent( key ) + "=" +
-				encodeURIComponent( params[ key ] ) + "&";
-		}
-		return window.location.pathname + querystring.slice( 0, -1 );
-	},
-
-	extend: extend,
-	id: id,
-	addEvent: addEvent,
-
-	// Logging callbacks; all receive a single argument with the listed properties
-	// run test/logs.html for any related changes
-	begin: function() {},
-	// done: { failed, passed, total, runtime }
-	done: function() {},
-	// log: { result, actual, expected, message }
-	log: function() {},
-	// testStart: { name }
-	testStart: function() {},
-	// testDone: { name, failed, passed, total }
-	testDone: function() {},
-	// moduleStart: { name }
-	moduleStart: function() {},
-	// moduleDone: { name, failed, passed, total }
-	moduleDone: function() {}
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
-	config.autorun = true;
-}
-
-QUnit.load = function() {
-	QUnit.begin({});
-
-	// Initialize the config, saving the execution queue
-	var oldconfig = extend({}, config);
-	QUnit.init();
-	extend(config, oldconfig);
-
-	config.blocking = false;
-
-	var urlConfigHtml = '', len = config.urlConfig.length;
-	for ( var i = 0, val; i < len, val = config.urlConfig[i]; i++ ) {
-		config[val] = QUnit.urlParams[val];
-		urlConfigHtml += '<label><input name="' + val + '" type="checkbox"' + ( config[val] ? ' checked="checked"' : '' ) + '>' + val + '</label>';
-	}
-
-	var userAgent = id("qunit-userAgent");
-	if ( userAgent ) {
-		userAgent.innerHTML = navigator.userAgent;
-	}
-	var banner = id("qunit-header");
-	if ( banner ) {
-		banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;
-		addEvent( banner, "change", function( event ) {
-			var params = {};
-			params[ event.target.name ] = event.target.checked ? true : undefined;
-			window.location = QUnit.url( params );
-		});
-	}
-
-	var toolbar = id("qunit-testrunner-toolbar");
-	if ( toolbar ) {
-		var filter = document.createElement("input");
-		filter.type = "checkbox";
-		filter.id = "qunit-filter-pass";
-		addEvent( filter, "click", function() {
-			var ol = document.getElementById("qunit-tests");
-			if ( filter.checked ) {
-				ol.className = ol.className + " hidepass";
-			} else {
-				var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-				ol.className = tmp.replace(/ hidepass /, " ");
-			}
-			if ( defined.sessionStorage ) {
-				if (filter.checked) {
-					sessionStorage.setItem("qunit-filter-passed-tests", "true");
-				} else {
-					sessionStorage.removeItem("qunit-filter-passed-tests");
-				}
-			}
-		});
-		if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
-			filter.checked = true;
-			var ol = document.getElementById("qunit-tests");
-			ol.className = ol.className + " hidepass";
-		}
-		toolbar.appendChild( filter );
-
-		var label = document.createElement("label");
-		label.setAttribute("for", "qunit-filter-pass");
-		label.innerHTML = "Hide passed tests";
-		toolbar.appendChild( label );
-	}
-
-	var main = id('qunit-fixture');
-	if ( main ) {
-		config.fixture = main.innerHTML;
-	}
-
-	if (config.autostart) {
-		QUnit.start();
-	}
-};
-
-addEvent(window, "load", QUnit.load);
-
-function done() {
-	config.autorun = true;
-
-	// Log the last module results
-	if ( config.currentModule ) {
-		QUnit.moduleDone( {
-			name: config.currentModule,
-			failed: config.moduleStats.bad,
-			passed: config.moduleStats.all - config.moduleStats.bad,
-			total: config.moduleStats.all
-		} );
-	}
-
-	var banner = id("qunit-banner"),
-		tests = id("qunit-tests"),
-		runtime = +new Date - config.started,
-		passed = config.stats.all - config.stats.bad,
-		html = [
-			'Tests completed in ',
-			runtime,
-			' milliseconds.<br/>',
-			'<span class="passed">',
-			passed,
-			'</span> tests of <span class="total">',
-			config.stats.all,
-			'</span> passed, <span class="failed">',
-			config.stats.bad,
-			'</span> failed.'
-		].join('');
-
-	if ( banner ) {
-		banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
-	}
-
-	if ( tests ) {
-		id( "qunit-testresult" ).innerHTML = html;
-	}
-
-	if ( config.altertitle && typeof document !== "undefined" && document.title ) {
-		// show ✖ for good, ✔ for bad suite result in title
-		// use escape sequences in case file gets loaded with non-utf-8-charset
-		document.title = [
-			(config.stats.bad ? "\u2716" : "\u2714"),
-			document.title.replace(/^[\u2714\u2716] /i, "")
-		].join(" ");
-	}
-
-	QUnit.done( {
-		failed: config.stats.bad,
-		passed: passed,
-		total: config.stats.all,
-		runtime: runtime
-	} );
-}
-
-function validTest( name ) {
-	var filter = config.filter,
-		run = false;
-
-	if ( !filter ) {
-		return true;
-	}
-
-	var not = filter.charAt( 0 ) === "!";
-	if ( not ) {
-		filter = filter.slice( 1 );
-	}
-
-	if ( name.indexOf( filter ) !== -1 ) {
-		return !not;
-	}
-
-	if ( not ) {
-		run = true;
-	}
-
-	return run;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy)
-// could be extended in the future to use something like https://github.com/csnover/TraceKit
-function sourceFromStacktrace() {
-	try {
-		throw new Error();
-	} catch ( e ) {
-		if (e.stacktrace) {
-			// Opera
-			return e.stacktrace.split("\n")[6];
-		} else if (e.stack) {
-			// Firefox, Chrome
-			return e.stack.split("\n")[4];
-		} else if (e.sourceURL) {
-			// Safari, PhantomJS
-			// TODO sourceURL points at the 'throw new Error' line above, useless
-			//return e.sourceURL + ":" + e.line;
-		}
-	}
-}
-
-function escapeHtml(s) {
-	if (!s) {
-		return "";
-	}
-	s = s + "";
-	return s.replace(/[\&"<>\\]/g, function(s) {
-		switch(s) {
-			case "&": return "&amp;";
-			case "\\": return "\\\\";
-			case '"': return '\"';
-			case "<": return "&lt;";
-			case ">": return "&gt;";
-			default: return s;
-		}
-	});
-}
-
-function synchronize( callback ) {
-	config.queue.push( callback );
-
-	if ( config.autorun && !config.blocking ) {
-		process();
-	}
-}
-
-function process() {
-	var start = (new Date()).getTime();
-
-	while ( config.queue.length && !config.blocking ) {
-		if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
-			config.queue.shift()();
-		} else {
-			window.setTimeout( process, 13 );
-			break;
-		}
-	}
-	if (!config.blocking && !config.queue.length) {
-		done();
-	}
-}
-
-function saveGlobal() {
-	config.pollution = [];
-
-	if ( config.noglobals ) {
-		for ( var key in window ) {
-			config.pollution.push( key );
-		}
-	}
-}
-
-function checkPollution( name ) {
-	var old = config.pollution;
-	saveGlobal();
-
-	var newGlobals = diff( config.pollution, old );
-	if ( newGlobals.length > 0 ) {
-		ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
-	}
-
-	var deletedGlobals = diff( old, config.pollution );
-	if ( deletedGlobals.length > 0 ) {
-		ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
-	}
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
-	var result = a.slice();
-	for ( var i = 0; i < result.length; i++ ) {
-		for ( var j = 0; j < b.length; j++ ) {
-			if ( result[i] === b[j] ) {
-				result.splice(i, 1);
-				i--;
-				break;
-			}
-		}
-	}
-	return result;
-}
-
-function fail(message, exception, callback) {
-	if ( typeof console !== "undefined" && console.error && console.warn ) {
-		console.error(message);
-		console.error(exception);
-		console.warn(callback.toString());
-
-	} else if ( window.opera && opera.postError ) {
-		opera.postError(message, exception, callback.toString);
-	}
-}
-
-function extend(a, b) {
-	for ( var prop in b ) {
-		if ( b[prop] === undefined ) {
-			delete a[prop];
-		} else {
-			a[prop] = b[prop];
-		}
-	}
-
-	return a;
-}
-
-function addEvent(elem, type, fn) {
-	if ( elem.addEventListener ) {
-		elem.addEventListener( type, fn, false );
-	} else if ( elem.attachEvent ) {
-		elem.attachEvent( "on" + type, fn );
-	} else {
-		fn();
-	}
-}
-
-function id(name) {
-	return !!(typeof document !== "undefined" && document && document.getElementById) &&
-		document.getElementById( name );
-}
-
-// Test for equality any JavaScript type.
-// Discussions and reference: http://philrathe.com/articles/equiv
-// Test suites: http://philrathe.com/tests/equiv
-// Author: Philippe Rathé <prathe@gmail.com>
-QUnit.equiv = function () {
-
-	var innerEquiv; // the real equiv function
-	var callers = []; // stack to decide between skip/abort functions
-	var parents = []; // stack to avoiding loops from circular referencing
-
-	// Call the o related callback with the given arguments.
-	function bindCallbacks(o, callbacks, args) {
-		var prop = QUnit.objectType(o);
-		if (prop) {
-			if (QUnit.objectType(callbacks[prop]) === "function") {
-				return callbacks[prop].apply(callbacks, args);
-			} else {
-				return callbacks[prop]; // or undefined
-			}
-		}
-	}
-
-	var callbacks = function () {
-
-		// for string, boolean, number and null
-		function useStrictEquality(b, a) {
-			if (b instanceof a.constructor || a instanceof b.constructor) {
-				// to catch short annotaion VS 'new' annotation of a
-				// declaration
-				// e.g. var i = 1;
-				// var j = new Number(1);
-				return a == b;
-			} else {
-				return a === b;
-			}
-		}
-
-		return {
-			"string" : useStrictEquality,
-			"boolean" : useStrictEquality,
-			"number" : useStrictEquality,
-			"null" : useStrictEquality,
-			"undefined" : useStrictEquality,
-
-			"nan" : function(b) {
-				return isNaN(b);
-			},
-
-			"date" : function(b, a) {
-				return QUnit.objectType(b) === "date"
-						&& a.valueOf() === b.valueOf();
-			},
-
-			"regexp" : function(b, a) {
-				return QUnit.objectType(b) === "regexp"
-						&& a.source === b.source && // the regex itself
-						a.global === b.global && // and its modifers
-													// (gmi) ...
-						a.ignoreCase === b.ignoreCase
-						&& a.multiline === b.multiline;
-			},
-
-			// - skip when the property is a method of an instance (OOP)
-			// - abort otherwise,
-			// initial === would have catch identical references anyway
-			"function" : function() {
-				var caller = callers[callers.length - 1];
-				return caller !== Object && typeof caller !== "undefined";
-			},
-
-			"array" : function(b, a) {
-				var i, j, loop;
-				var len;
-
-				// b could be an object literal here
-				if (!(QUnit.objectType(b) === "array")) {
-					return false;
-				}
-
-				len = a.length;
-				if (len !== b.length) { // safe and faster
-					return false;
-				}
-
-				// track reference to avoid circular references
-				parents.push(a);
-				for (i = 0; i < len; i++) {
-					loop = false;
-					for (j = 0; j < parents.length; j++) {
-						if (parents[j] === a[i]) {
-							loop = true;// dont rewalk array
-						}
-					}
-					if (!loop && !innerEquiv(a[i], b[i])) {
-						parents.pop();
-						return false;
-					}
-				}
-				parents.pop();
-				return true;
-			},
-
-			"object" : function(b, a) {
-				var i, j, loop;
-				var eq = true; // unless we can proove it
-				var aProperties = [], bProperties = []; // collection of
-														// strings
-
-				// comparing constructors is more strict than using
-				// instanceof
-				if (a.constructor !== b.constructor) {
-					return false;
-				}
-
-				// stack constructor before traversing properties
-				callers.push(a.constructor);
-				// track reference to avoid circular references
-				parents.push(a);
-
-				for (i in a) { // be strict: don't ensures hasOwnProperty
-								// and go deep
-					loop = false;
-					for (j = 0; j < parents.length; j++) {
-						if (parents[j] === a[i])
-							loop = true; // don't go down the same path
-											// twice
-					}
-					aProperties.push(i); // collect a's properties
-
-					if (!loop && !innerEquiv(a[i], b[i])) {
-						eq = false;
-						break;
-					}
-				}
-
-				callers.pop(); // unstack, we are done
-				parents.pop();
-
-				for (i in b) {
-					bProperties.push(i); // collect b's properties
-				}
-
-				// Ensures identical properties name
-				return eq
-						&& innerEquiv(aProperties.sort(), bProperties
-								.sort());
-			}
-		};
-	}();
-
-	innerEquiv = function() { // can take multiple arguments
-		var args = Array.prototype.slice.apply(arguments);
-		if (args.length < 2) {
-			return true; // end transition
-		}
-
-		return (function(a, b) {
-			if (a === b) {
-				return true; // catch the most you can
-			} else if (a === null || b === null || typeof a === "undefined"
-					|| typeof b === "undefined"
-					|| QUnit.objectType(a) !== QUnit.objectType(b)) {
-				return false; // don't lose time with error prone cases
-			} else {
-				return bindCallbacks(a, callbacks, [ b, a ]);
-			}
-
-			// apply transition with (1..n) arguments
-		})(args[0], args[1])
-				&& arguments.callee.apply(this, args.splice(1,
-						args.length - 1));
-	};
-
-	return innerEquiv;
-
-}();
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
-	function quote( str ) {
-		return '"' + str.toString().replace(/"/g, '\\"') + '"';
-	};
-	function literal( o ) {
-		return o + '';
-	};
-	function join( pre, arr, post ) {
-		var s = jsDump.separator(),
-			base = jsDump.indent(),
-			inner = jsDump.indent(1);
-		if ( arr.join )
-			arr = arr.join( ',' + s + inner );
-		if ( !arr )
-			return pre + post;
-		return [ pre, inner + arr, base + post ].join(s);
-	};
-	function array( arr, stack ) {
-		var i = arr.length, ret = Array(i);
-		this.up();
-		while ( i-- )
-			ret[i] = this.parse( arr[i] , undefined , stack);
-		this.down();
-		return join( '[', ret, ']' );
-	};
-
-	var reName = /^function (\w+)/;
-
-	var jsDump = {
-		parse:function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-			stack = stack || [ ];
-			var parser = this.parsers[ type || this.typeOf(obj) ];
-			type = typeof parser;
-			var inStack = inArray(obj, stack);
-			if (inStack != -1) {
-				return 'recursion('+(inStack - stack.length)+')';
-			}
-			//else
-			if (type == 'function')  {
-					stack.push(obj);
-					var res = parser.call( this, obj, stack );
-					stack.pop();
-					return res;
-			}
-			// else
-			return (type == 'string') ? parser : this.parsers.error;
-		},
-		typeOf:function( obj ) {
-			var type;
-			if ( obj === null ) {
-				type = "null";
-			} else if (typeof obj === "undefined") {
-				type = "undefined";
-			} else if (QUnit.is("RegExp", obj)) {
-				type = "regexp";
-			} else if (QUnit.is("Date", obj)) {
-				type = "date";
-			} else if (QUnit.is("Function", obj)) {
-				type = "function";
-			} else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
-				type = "window";
-			} else if (obj.nodeType === 9) {
-				type = "document";
-			} else if (obj.nodeType) {
-				type = "node";
-			} else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
-				type = "array";
-			} else {
-				type = typeof obj;
-			}
-			return type;
-		},
-		separator:function() {
-			return this.multiline ?	this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
-		},
-		indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-			if ( !this.multiline )
-				return '';
-			var chr = this.indentChar;
-			if ( this.HTML )
-				chr = chr.replace(/\t/g,'   ').replace(/ /g,'&nbsp;');
-			return Array( this._depth_ + (extra||0) ).join(chr);
-		},
-		up:function( a ) {
-			this._depth_ += a || 1;
-		},
-		down:function( a ) {
-			this._depth_ -= a || 1;
-		},
-		setParser:function( name, parser ) {
-			this.parsers[name] = parser;
-		},
-		// The next 3 are exposed so you can use them
-		quote:quote,
-		literal:literal,
-		join:join,
-		//
-		_depth_: 1,
-		// This is the list of parsers, to modify them, use jsDump.setParser
-		parsers:{
-			window: '[Window]',
-			document: '[Document]',
-			error:'[ERROR]', //when no parser is found, shouldn't happen
-			unknown: '[Unknown]',
-			'null':'null',
-			'undefined':'undefined',
-			'function':function( fn ) {
-				var ret = 'function',
-					name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
-				if ( name )
-					ret += ' ' + name;
-				ret += '(';
-
-				ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
-				return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
-			},
-			array: array,
-			nodelist: array,
-			arguments: array,
-			object:function( map, stack ) {
-				var ret = [ ];
-				QUnit.jsDump.up();
-				for ( var key in map ) {
-				    var val = map[key];
-					ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(val, undefined, stack));
-                }
-				QUnit.jsDump.down();
-				return join( '{', ret, '}' );
-			},
-			node:function( node ) {
-				var open = QUnit.jsDump.HTML ? '&lt;' : '<',
-					close = QUnit.jsDump.HTML ? '&gt;' : '>';
-
-				var tag = node.nodeName.toLowerCase(),
-					ret = open + tag;
-
-				for ( var a in QUnit.jsDump.DOMAttrs ) {
-					var val = node[QUnit.jsDump.DOMAttrs[a]];
-					if ( val )
-						ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
-				}
-				return ret + close + open + '/' + tag + close;
-			},
-			functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
-				var l = fn.length;
-				if ( !l ) return '';
-
-				var args = Array(l);
-				while ( l-- )
-					args[l] = String.fromCharCode(97+l);//97 is 'a'
-				return ' ' + args.join(', ') + ' ';
-			},
-			key:quote, //object calls it internally, the key part of an item in a map
-			functionCode:'[code]', //function calls it internally, it's the content of the function
-			attribute:quote, //node calls it internally, it's an html attribute value
-			string:quote,
-			date:quote,
-			regexp:literal, //regex
-			number:literal,
-			'boolean':literal
-		},
-		DOMAttrs:{//attributes to dump from nodes, name=>realName
-			id:'id',
-			name:'name',
-			'class':'className'
-		},
-		HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
-		indentChar:'  ',//indentation unit
-		multiline:true //if true, items in a collection, are separated by a \n, else just a space.
-	};
-
-	return jsDump;
-})();
-
-// from Sizzle.js
-function getText( elems ) {
-	var ret = "", elem;
-
-	for ( var i = 0; elems[i]; i++ ) {
-		elem = elems[i];
-
-		// Get the text from text nodes and CDATA nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
-			ret += elem.nodeValue;
-
-		// Traverse everything else, except comment nodes
-		} else if ( elem.nodeType !== 8 ) {
-			ret += getText( elem.childNodes );
-		}
-	}
-
-	return ret;
-};
-
-//from jquery.js
-function inArray( elem, array ) {
-	if ( array.indexOf ) {
-		return array.indexOf( elem );
-	}
-
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[ i ] === elem ) {
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- *  By John Resig (http://ejohn.org/)
- *  Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- *  http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
- */
-QUnit.diff = (function() {
-	function diff(o, n) {
-		var ns = {};
-		var os = {};
-
-		for (var i = 0; i < n.length; i++) {
-			if (ns[n[i]] == null)
-				ns[n[i]] = {
-					rows: [],
-					o: null
-				};
-			ns[n[i]].rows.push(i);
-		}
-
-		for (var i = 0; i < o.length; i++) {
-			if (os[o[i]] == null)
-				os[o[i]] = {
-					rows: [],
-					n: null
-				};
-			os[o[i]].rows.push(i);
-		}
-
-		for (var i in ns) {
-			if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
-				n[ns[i].rows[0]] = {
-					text: n[ns[i].rows[0]],
-					row: os[i].rows[0]
-				};
-				o[os[i].rows[0]] = {
-					text: o[os[i].rows[0]],
-					row: ns[i].rows[0]
-				};
-			}
-		}
-
-		for (var i = 0; i < n.length - 1; i++) {
-			if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
-			n[i + 1] == o[n[i].row + 1]) {
-				n[i + 1] = {
-					text: n[i + 1],
-					row: n[i].row + 1
-				};
-				o[n[i].row + 1] = {
-					text: o[n[i].row + 1],
-					row: i + 1
-				};
-			}
-		}
-
-		for (var i = n.length - 1; i > 0; i--) {
-			if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
-			n[i - 1] == o[n[i].row - 1]) {
-				n[i - 1] = {
-					text: n[i - 1],
-					row: n[i].row - 1
-				};
-				o[n[i].row - 1] = {
-					text: o[n[i].row - 1],
-					row: i - 1
-				};
-			}
-		}
-
-		return {
-			o: o,
-			n: n
-		};
-	}
-
-	return function(o, n) {
-		o = o.replace(/\s+$/, '');
-		n = n.replace(/\s+$/, '');
-		var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
-
-		var str = "";
-
-		var oSpace = o.match(/\s+/g);
-		if (oSpace == null) {
-			oSpace = [" "];
-		}
-		else {
-			oSpace.push(" ");
-		}
-		var nSpace = n.match(/\s+/g);
-		if (nSpace == null) {
-			nSpace = [" "];
-		}
-		else {
-			nSpace.push(" ");
-		}
-
-		if (out.n.length == 0) {
-			for (var i = 0; i < out.o.length; i++) {
-				str += '<del>' + out.o[i] + oSpace[i] + "</del>";
-			}
-		}
-		else {
-			if (out.n[0].text == null) {
-				for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
-					str += '<del>' + out.o[n] + oSpace[n] + "</del>";
-				}
-			}
-
-			for (var i = 0; i < out.n.length; i++) {
-				if (out.n[i].text == null) {
-					str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
-				}
-				else {
-					var pre = "";
-
-					for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
-						pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
-					}
-					str += " " + out.n[i].text + nSpace[i] + pre;
-				}
-			}
-		}
-
-		return str;
-	};
-})();
-
-})(this);
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/less/accordion.less b/src/main/webapp/bower_components/bootstrap/less/accordion.less
deleted file mode 100644
index d63523bc..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/accordion.less
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Accordion
-// --------------------------------------------------
-
-
-// Parent container
-.accordion {
-  margin-bottom: @baseLineHeight;
-}
-
-// Group == heading + body
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  .border-radius(@baseBorderRadius);
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-
-// General toggle styles
-.accordion-toggle {
-  cursor: pointer;
-}
-
-// Inner needs the styles because you can't animate properly with any styles on the element
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/alerts.less b/src/main/webapp/bower_components/bootstrap/less/alerts.less
deleted file mode 100644
index 0116b191..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/alerts.less
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: @baseLineHeight;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-  background-color: @warningBackground;
-  border: 1px solid @warningBorder;
-  .border-radius(@baseBorderRadius);
-}
-.alert,
-.alert h4 {
-  // Specified for the h4 to prevent conflicts of changing @headingsColor
-  color: @warningText;
-}
-.alert h4 {
-  margin: 0;
-}
-
-// Adjust close link position
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: @baseLineHeight;
-}
-
-
-// Alternate styles
-// -------------------------
-
-.alert-success {
-  background-color: @successBackground;
-  border-color: @successBorder;
-  color: @successText;
-}
-.alert-success h4 {
-  color: @successText;
-}
-.alert-danger,
-.alert-error {
-  background-color: @errorBackground;
-  border-color: @errorBorder;
-  color: @errorText;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: @errorText;
-}
-.alert-info {
-  background-color: @infoBackground;
-  border-color: @infoBorder;
-  color: @infoText;
-}
-.alert-info h4 {
-  color: @infoText;
-}
-
-
-// Block alerts
-// -------------------------
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/bootstrap.less b/src/main/webapp/bower_components/bootstrap/less/bootstrap.less
deleted file mode 100644
index 47af2c4e..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/bootstrap.less
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!
- * Bootstrap v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-// Core variables and mixins
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "mixins.less";
-
-// CSS Reset
-@import "reset.less";
-
-// Grid system and page structure
-@import "scaffolding.less";
-@import "grid.less";
-@import "layouts.less";
-
-// Base CSS
-@import "type.less";
-@import "code.less";
-@import "forms.less";
-@import "tables.less";
-
-// Components: common
-@import "sprites.less";
-@import "dropdowns.less";
-@import "wells.less";
-@import "component-animations.less";
-@import "close.less";
-
-// Components: Buttons & Alerts
-@import "buttons.less";
-@import "button-groups.less";
-@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
-
-// Components: Nav
-@import "navs.less";
-@import "navbar.less";
-@import "breadcrumbs.less";
-@import "pagination.less";
-@import "pager.less";
-
-// Components: Popovers
-@import "modals.less";
-@import "tooltip.less";
-@import "popovers.less";
-
-// Components: Misc
-@import "thumbnails.less";
-@import "media.less";
-@import "labels-badges.less";
-@import "progress-bars.less";
-@import "accordion.less";
-@import "carousel.less";
-@import "hero-unit.less";
-
-// Utility classes
-@import "utilities.less"; // Has to be last to override when necessary
diff --git a/src/main/webapp/bower_components/bootstrap/less/breadcrumbs.less b/src/main/webapp/bower_components/bootstrap/less/breadcrumbs.less
deleted file mode 100644
index f753df6b..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/breadcrumbs.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin: 0 0 @baseLineHeight;
-  list-style: none;
-  background-color: #f5f5f5;
-  .border-radius(@baseBorderRadius);
-  > li {
-    display: inline-block;
-    .ie7-inline-block();
-    text-shadow: 0 1px 0 @white;
-    > .divider {
-      padding: 0 5px;
-      color: #ccc;
-    }
-  }
-  > .active {
-    color: @grayLight;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/button-groups.less b/src/main/webapp/bower_components/bootstrap/less/button-groups.less
deleted file mode 100644
index 55cdc603..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/button-groups.less
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// Button groups
-// --------------------------------------------------
-
-
-// Make the div behave like a button
-.btn-group {
-  position: relative;
-  display: inline-block;
-  .ie7-inline-block();
-  font-size: 0; // remove as part 1 of font-size inline-block hack
-  vertical-align: middle; // match .btn alignment given font-size hack above
-  white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page)
-  .ie7-restore-left-whitespace();
-}
-
-// Space out series of button groups
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
-  font-size: 0; // Hack to remove whitespace that results from using inline-block
-  margin-top: @baseLineHeight / 2;
-  margin-bottom: @baseLineHeight / 2;
-  > .btn + .btn,
-  > .btn-group + .btn,
-  > .btn + .btn-group {
-    margin-left: 5px;
-  }
-}
-
-// Float them, remove border radius, then re-add to first and last elements
-.btn-group > .btn {
-  position: relative;
-  .border-radius(0);
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack
-}
-
-// Reset fonts for other sizes
-.btn-group > .btn-mini {
-  font-size: @fontSizeMini;
-}
-.btn-group > .btn-small {
-  font-size: @fontSizeSmall;
-}
-.btn-group > .btn-large {
-  font-size: @fontSizeLarge;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  .border-top-left-radius(@baseBorderRadius);
-  .border-bottom-left-radius(@baseBorderRadius);
-}
-// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  .border-top-right-radius(@baseBorderRadius);
-  .border-bottom-right-radius(@baseBorderRadius);
-}
-// Reset corners for large buttons
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  .border-top-left-radius(@borderRadiusLarge);
-  .border-bottom-left-radius(@borderRadiusLarge);
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  .border-top-right-radius(@borderRadiusLarge);
-  .border-bottom-right-radius(@borderRadiusLarge);
-}
-
-// On hover/focus/active, bring the proper btn to front
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  .box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-.btn-group.open {
-
-  // The clickable button for toggling the menu
-  // Remove the gradient and set the same inset shadow as the :active state
-  .dropdown-toggle {
-    background-image: none;
-    .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
-  }
-
-  // Keep the hover's background when dropdown is open
-  .btn.dropdown-toggle {
-    background-color: @btnBackgroundHighlight;
-  }
-  .btn-primary.dropdown-toggle {
-    background-color: @btnPrimaryBackgroundHighlight;
-  }
-  .btn-warning.dropdown-toggle {
-    background-color: @btnWarningBackgroundHighlight;
-  }
-  .btn-danger.dropdown-toggle {
-    background-color: @btnDangerBackgroundHighlight;
-  }
-  .btn-success.dropdown-toggle {
-    background-color: @btnSuccessBackgroundHighlight;
-  }
-  .btn-info.dropdown-toggle {
-    background-color: @btnInfoBackgroundHighlight;
-  }
-  .btn-inverse.dropdown-toggle {
-    background-color: @btnInverseBackgroundHighlight;
-  }
-}
-
-
-// Reposition the caret
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-// Carets in other button sizes
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width:  5px;
-  border-right-width: 5px;
-  border-top-width:   5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-// Upside down carets for .dropup
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-
-
-
-// Account for other colors
-.btn-primary,
-.btn-warning,
-.btn-danger,
-.btn-info,
-.btn-success,
-.btn-inverse {
-  .caret {
-    border-top-color: @white;
-    border-bottom-color: @white;
-  }
-}
-
-
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
-  display: inline-block; // makes buttons only take up the width they need
-  .ie7-inline-block();
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  .border-radius(0);
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  .border-radius(@baseBorderRadius @baseBorderRadius 0 0);
-}
-.btn-group-vertical > .btn:last-child {
-  .border-radius(0 0 @baseBorderRadius @baseBorderRadius);
-}
-.btn-group-vertical > .btn-large:first-child {
-  .border-radius(@borderRadiusLarge @borderRadiusLarge 0 0);
-}
-.btn-group-vertical > .btn-large:last-child {
-  .border-radius(0 0 @borderRadiusLarge @borderRadiusLarge);
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/buttons.less b/src/main/webapp/bower_components/bootstrap/less/buttons.less
deleted file mode 100644
index 4cd4d862..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/buttons.less
+++ /dev/null
@@ -1,228 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core
-.btn {
-  display: inline-block;
-  .ie7-inline-block();
-  padding: 4px 12px;
-  margin-bottom: 0; // For input.btn
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75));
-  border: 1px solid @btnBorder;
-  *border: 0; // Remove the border to prevent IE7's black border on input:focus
-  border-bottom-color: darken(@btnBorder, 10%);
-  .border-radius(@baseBorderRadius);
-  .ie7-restore-left-whitespace(); // Give IE7 some love
-  .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
-
-  // Hover/focus state
-  &:hover,
-  &:focus {
-    color: @grayDark;
-    text-decoration: none;
-    background-position: 0 -15px;
-
-    // transition is only when going to hover/focus, otherwise the background
-    // behind the gradient (there for IE<=9 fallback) gets mismatched
-    .transition(background-position .1s linear);
-  }
-
-  // Focus state for keyboard and accessibility
-  &:focus {
-    .tab-focus();
-  }
-
-  // Active state
-  &.active,
-  &:active {
-    background-image: none;
-    outline: 0;
-    .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
-  }
-
-  // Disabled state
-  &.disabled,
-  &[disabled] {
-    cursor: default;
-    background-image: none;
-    .opacity(65);
-    .box-shadow(none);
-  }
-
-}
-
-
-
-// Button Sizes
-// --------------------------------------------------
-
-// Large
-.btn-large {
-  padding: @paddingLarge;
-  font-size: @fontSizeLarge;
-  .border-radius(@borderRadiusLarge);
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-
-// Small
-.btn-small {
-  padding: @paddingSmall;
-  font-size: @fontSizeSmall;
-  .border-radius(@borderRadiusSmall);
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-
-// Mini
-.btn-mini {
-  padding: @paddingMini;
-  font-size: @fontSizeMini;
-  .border-radius(@borderRadiusSmall);
-}
-
-
-// Block button
-// -------------------------
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  .box-sizing(border-box);
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
-  &.btn-block {
-    width: 100%;
-  }
-}
-
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-// Provide *some* extra contrast for those who can get it
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255,255,255,.75);
-}
-
-// Set the backgrounds
-// -------------------------
-.btn-primary {
-  .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
-}
-// Warning appears are orange
-.btn-warning {
-  .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
-}
-// Danger and error appear as red
-.btn-danger {
-  .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
-}
-// Success appears as green
-.btn-success {
-  .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
-}
-// Info appears as a neutral blue
-.btn-info {
-  .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
-}
-// Inverse appears as dark gray
-.btn-inverse {
-  .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
-}
-
-
-// Cross-browser Jank
-// --------------------------------------------------
-
-button.btn,
-input[type="submit"].btn {
-
-  // Firefox 3.6 only I believe
-  &::-moz-focus-inner {
-    padding: 0;
-    border: 0;
-  }
-
-  // IE7 has some default padding on button controls
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-
-  &.btn-large {
-    *padding-top: 7px;
-    *padding-bottom: 7px;
-  }
-  &.btn-small {
-    *padding-top: 3px;
-    *padding-bottom: 3px;
-  }
-  &.btn-mini {
-    *padding-top: 1px;
-    *padding-bottom: 1px;
-  }
-}
-
-
-// Link buttons
-// --------------------------------------------------
-
-// Make a button look and behave like a link
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  .box-shadow(none);
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: @linkColor;
-  .border-radius(0);
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: @linkColorHover;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: @grayDark;
-  text-decoration: none;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/carousel.less b/src/main/webapp/bower_components/bootstrap/less/carousel.less
deleted file mode 100644
index 55bc0501..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/carousel.less
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// Carousel
-// --------------------------------------------------
-
-
-.carousel {
-  position: relative;
-  margin-bottom: @baseLineHeight;
-  line-height: 1;
-}
-
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-
-.carousel-inner {
-
-  > .item {
-    display: none;
-    position: relative;
-    .transition(.6s ease-in-out left);
-
-    // Account for jankitude on images
-    > img,
-    > a > img {
-      display: block;
-      line-height: 1;
-    }
-  }
-
-  > .active,
-  > .next,
-  > .prev { display: block; }
-
-  > .active {
-    left: 0;
-  }
-
-  > .next,
-  > .prev {
-    position: absolute;
-    top: 0;
-    width: 100%;
-  }
-
-  > .next {
-    left: 100%;
-  }
-  > .prev {
-    left: -100%;
-  }
-  > .next.left,
-  > .prev.right {
-    left: 0;
-  }
-
-  > .active.left {
-    left: -100%;
-  }
-  > .active.right {
-    left: 100%;
-  }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: @white;
-  text-align: center;
-  background: @grayDarker;
-  border: 3px solid @white;
-  .border-radius(23px);
-  .opacity(50);
-
-  // we can't have this transition here
-  // because webkit cancels the carousel
-  // animation if you trip this while
-  // in the middle of another animation
-  // ;_;
-  // .transition(opacity .2s linear);
-
-  // Reposition the right one
-  &.right {
-    left: auto;
-    right: 15px;
-  }
-
-  // Hover/focus state
-  &:hover,
-  &:focus {
-    color: @white;
-    text-decoration: none;
-    .opacity(90);
-  }
-}
-
-// Carousel indicator pips
-// -----------------------------
-.carousel-indicators {
-  position: absolute;
-  top: 15px;
-  right: 15px;
-  z-index: 5;
-  margin: 0;
-  list-style: none;
-
-  li {
-    display: block;
-    float: left;
-    width: 10px;
-    height: 10px;
-    margin-left: 5px;
-    text-indent: -999px;
-    background-color: #ccc;
-    background-color: rgba(255,255,255,.25);
-    border-radius: 5px;
-  }
-  .active {
-    background-color: #fff;
-  }
-}
-
-// Caption for text below images
-// -----------------------------
-
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 15px;
-  background: @grayDark;
-  background: rgba(0,0,0,.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: @white;
-  line-height: @baseLineHeight;
-}
-.carousel-caption h4 {
-  margin: 0 0 5px;
-}
-.carousel-caption p {
-  margin-bottom: 0;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/close.less b/src/main/webapp/bower_components/bootstrap/less/close.less
deleted file mode 100644
index 4c626bda..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/close.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: @baseLineHeight;
-  color: @black;
-  text-shadow: 0 1px 0 rgba(255,255,255,1);
-  .opacity(20);
-  &:hover,
-  &:focus {
-    color: @black;
-    text-decoration: none;
-    cursor: pointer;
-    .opacity(40);
-  }
-}
-
-// Additional properties for button version
-// iOS requires the button element instead of an anchor tag.
-// If you want the anchor version, it requires `href="#"`.
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/less/code.less b/src/main/webapp/bower_components/bootstrap/less/code.less
deleted file mode 100644
index 266a926e..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/code.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Code (inline and blocK)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-pre {
-  padding: 0 3px 2px;
-  #font > #family > .monospace;
-  font-size: @baseFontSize - 2;
-  color: @grayDark;
-  .border-radius(3px);
-}
-
-// Inline code
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-
-// Blocks of code
-pre {
-  display: block;
-  padding: (@baseLineHeight - 1) / 2;
-  margin: 0 0 @baseLineHeight / 2;
-  font-size: @baseFontSize - 1; // 14px to 13px
-  line-height: @baseLineHeight;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc; // fallback for IE7-8
-  border: 1px solid rgba(0,0,0,.15);
-  .border-radius(@baseBorderRadius);
-
-  // Make prettyprint styles more spaced out for readability
-  &.prettyprint {
-    margin-bottom: @baseLineHeight;
-  }
-
-  // Account for some code outputs that place code tags in pre tags
-  code {
-    padding: 0;
-    color: inherit;
-    white-space: pre;
-    white-space: pre-wrap;
-    background-color: transparent;
-    border: 0;
-  }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/less/component-animations.less b/src/main/webapp/bower_components/bootstrap/less/component-animations.less
deleted file mode 100644
index d614263a..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/component-animations.less
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// Component animations
-// --------------------------------------------------
-
-
-.fade {
-  opacity: 0;
-  .transition(opacity .15s linear);
-  &.in {
-    opacity: 1;
-  }
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  .transition(height .35s ease);
-  &.in {
-    height: auto;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/dropdowns.less b/src/main/webapp/bower_components/bootstrap/less/dropdowns.less
deleted file mode 100644
index bbfe3fd3..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/dropdowns.less
+++ /dev/null
@@ -1,237 +0,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  // The caret makes the toggle a bit too tall in IE7
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-// Dropdown arrow/caret
-// --------------------
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top:   4px solid @black;
-  border-right: 4px solid transparent;
-  border-left:  4px solid transparent;
-  content: "";
-}
-
-// Place the caret
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-// The dropdown menu (ul)
-// ----------------------
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: @zindexDropdown;
-  display: none; // none by default, but block on "open" of the menu
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0; // override default ul
-  list-style: none;
-  background-color: @dropdownBackground;
-  border: 1px solid #ccc; // Fallback for IE7-8
-  border: 1px solid @dropdownBorder;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  .border-radius(6px);
-  .box-shadow(0 5px 10px rgba(0,0,0,.2));
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-
-  // Aligns the dropdown menu to right
-  &.pull-right {
-    right: 0;
-    left: auto;
-  }
-
-  // Dividers (basically an hr) within the dropdown
-  .divider {
-    .nav-divider(@dropdownDividerTop, @dropdownDividerBottom);
-  }
-
-  // Links within the dropdown menu
-  > li > a {
-    display: block;
-    padding: 3px 20px;
-    clear: both;
-    font-weight: normal;
-    line-height: @baseLineHeight;
-    color: @dropdownLinkColor;
-    white-space: nowrap;
-  }
-}
-
-// Hover/Focus state
-// -----------
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: @dropdownLinkColorHover;
-  #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
-}
-
-// Active state
-// ------------
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: @dropdownLinkColorActive;
-  text-decoration: none;
-  outline: 0;
-  #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%));
-}
-
-// Disabled state
-// --------------
-// Gray out text and ensure the hover/focus state remains gray
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: @grayLight;
-}
-// Nuke hover/focus effects
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none; // Remove CSS gradient
-  .reset-filter();
-  cursor: default;
-}
-
-// Open state for the dropdown
-// ---------------------------
-.open {
-  // IE7's z-index only goes to the nearest positioned ancestor, which would
-  // make the menu appear below buttons that appeared later on the page
-  *z-index: @zindexDropdown;
-
-  & > .dropdown-menu {
-    display: block;
-  }
-}
-
-// Right aligned dropdowns
-// ---------------------------
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-// ------------------------------------------------------
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-.dropup,
-.navbar-fixed-bottom .dropdown {
-  // Reverse the caret
-  .caret {
-    border-top: 0;
-    border-bottom: 4px solid @black;
-    content: "";
-  }
-  // Different positioning for bottom up menu
-  .dropdown-menu {
-    top: auto;
-    bottom: 100%;
-    margin-bottom: 1px;
-  }
-}
-
-// Sub menus
-// ---------------------------
-.dropdown-submenu {
-  position: relative;
-}
-// Default dropdowns
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  .border-radius(0 6px 6px 6px);
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-// Dropups
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  .border-radius(5px 5px 5px 0);
-}
-
-// Caret to indicate there is a submenu
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: darken(@dropdownBackground, 20%);
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: @dropdownLinkColorHover;
-}
-
-// Left aligned submenus
-.dropdown-submenu.pull-left {
-  // Undo the float
-  // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere.
-  float: none;
-
-  // Positioning the submenu
-  > .dropdown-menu {
-    left: -100%;
-    margin-left: 10px;
-    .border-radius(6px 0 6px 6px);
-  }
-}
-
-// Tweak nav headers
-// -----------------
-// Increase padding from 15px to 20px on sides
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-
-// Typeahead
-// ---------
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px; // give it some space to breathe
-  .border-radius(@baseBorderRadius);
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/forms.less b/src/main/webapp/bower_components/bootstrap/less/forms.less
deleted file mode 100644
index 06767bdd..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/forms.less
+++ /dev/null
@@ -1,690 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-
-// GENERAL STYLES
-// --------------
-
-// Make all forms have space below them
-form {
-  margin: 0 0 @baseLineHeight;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-// Groups of fields with labels on top (legends)
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: @baseLineHeight;
-  font-size: @baseFontSize * 1.5;
-  line-height: @baseLineHeight * 2;
-  color: @grayDark;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-
-  // Small
-  small {
-    font-size: @baseLineHeight * .75;
-    color: @grayLight;
-  }
-}
-
-// Set font for forms
-label,
-input,
-button,
-select,
-textarea {
-  #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here
-}
-input,
-button,
-select,
-textarea {
-  font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
-}
-
-// Identify controls by their labels
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-// Form controls
-// -------------------------
-
-// Shared size and type resets
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: @baseLineHeight;
-  padding: 4px 6px;
-  margin-bottom: @baseLineHeight / 2;
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  color: @gray;
-  .border-radius(@inputBorderRadius);
-  vertical-align: middle;
-}
-
-// Reset appearance properties for textual inputs and textarea
-// Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
-input,
-textarea,
-.uneditable-input {
-  width: 206px; // plus 12px padding and 2px border
-}
-// Reset height since textareas have rows
-textarea {
-  height: auto;
-}
-// Everything else
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: @inputBackground;
-  border: 1px solid @inputBorder;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
-  .transition(~"border linear .2s, box-shadow linear .2s");
-
-  // Focus state
-  &:focus {
-    border-color: rgba(82,168,236,.8);
-    outline: 0;
-    outline: thin dotted \9; /* IE6-9 */
-    .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
-  }
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0; /* IE7 */
-  margin-top: 1px \9; /* IE8-9 */
-  line-height: normal;
-}
-
-// Reset width of input images, buttons, radios, checkboxes
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto; // Override of generic input selector
-}
-
-// Set the height of select and file controls to match text inputs
-select,
-input[type="file"] {
-  height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */
-  *margin-top: 4px; /* For IE7, add top margin to align select with labels */
-  line-height: @inputHeight;
-}
-
-// Make select elements obey height by applying a border
-select {
-  width: 220px; // default input width + 10px of padding that doesn't get applied
-  border: 1px solid @inputBorder;
-  background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-// Focus for select, file, radio, and checkbox
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  .tab-focus();
-}
-
-
-// Uneditable inputs
-// -------------------------
-
-// Make uneditable inputs look inactive
-.uneditable-input,
-.uneditable-textarea {
-  color: @grayLight;
-  background-color: darken(@inputBackground, 1%);
-  border-color: @inputBorder;
-  .box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
-  cursor: not-allowed;
-}
-
-// For text that needs to appear as an input but should not be an input
-.uneditable-input {
-  overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
-  white-space: nowrap;
-}
-
-// Make uneditable textareas behave like a textarea
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-
-// Placeholder
-// -------------------------
-
-// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
-input,
-textarea {
-  .placeholder();
-}
-
-
-// CHECKBOXES & RADIOS
-// -------------------
-
-// Indent the labels to position radios/checkboxes as hanging
-.radio,
-.checkbox {
-  min-height: @baseLineHeight; // clear the floating input if there is no label text
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-// Move the options list down to align with labels
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px; // has to be padding because margin collaspes
-}
-
-// Radios and checkboxes on same line
-// TODO v3: Convert .inline to .control-inline
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px; // space out consecutive inline controls
-}
-
-
-
-// INPUT SIZES
-// -----------
-
-// General classes for quick sizes
-.input-mini       { width: 60px; }
-.input-small      { width: 90px; }
-.input-medium     { width: 150px; }
-.input-large      { width: 210px; }
-.input-xlarge     { width: 270px; }
-.input-xxlarge    { width: 530px; }
-
-// Grid style input sizes
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-// Redeclare since the fluid row class is more specific
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-// Ensure input-prepend/append never wraps
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-
-
-// GRID SIZING FOR INPUTS
-// ----------------------
-
-// Grid sizes
-#grid > .input(@gridColumnWidth, @gridGutterWidth);
-
-// Control row for multiple inputs per line
-.controls-row {
-  .clearfix(); // Clear the float from controls
-}
-
-// Float to collapse white-space for proper grid alignment
-.controls-row [class*="span"],
-// Redeclare the fluid grid collapse since we undo the float for inputs
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-// Explicity set top padding on all checkboxes/radios, not just first-child
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-
-
-
-
-// DISABLED STATE
-// --------------
-
-// Disabled and read-only inputs
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: @inputDisabledBackground;
-}
-// Explicitly reset the colors here
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-
-
-
-// FORM FIELD FEEDBACK STATES
-// --------------------------
-
-// Warning
-.control-group.warning {
-  .formFieldState(@warningText, @warningText, @warningBackground);
-}
-// Error
-.control-group.error {
-  .formFieldState(@errorText, @errorText, @errorBackground);
-}
-// Success
-.control-group.success {
-  .formFieldState(@successText, @successText, @successBackground);
-}
-// Success
-.control-group.info {
-  .formFieldState(@infoText, @infoText, @infoBackground);
-}
-
-// HTML5 invalid states
-// Shares styles with the .control-group.error above
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-  &:focus {
-    border-color: darken(#ee5f5b, 10%);
-    @shadow: 0 0 6px lighten(#ee5f5b, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-
-
-// FORM ACTIONS
-// ------------
-
-.form-actions {
-  padding: (@baseLineHeight - 1) 20px @baseLineHeight;
-  margin-top: @baseLineHeight;
-  margin-bottom: @baseLineHeight;
-  background-color: @formActionsBackground;
-  border-top: 1px solid #e5e5e5;
-  .clearfix(); // Adding clearfix to allow for .pull-right button containers
-}
-
-
-
-// HELP TEXT
-// ---------
-
-.help-block,
-.help-inline {
-  color: lighten(@textColor, 15%); // lighten the text some for contrast
-}
-
-.help-block {
-  display: block; // account for any element using help-block
-  margin-bottom: @baseLineHeight / 2;
-}
-
-.help-inline {
-  display: inline-block;
-  .ie7-inline-block();
-  vertical-align: middle;
-  padding-left: 5px;
-}
-
-
-
-// INPUT GROUPS
-// ------------
-
-// Allow us to put symbols and text within the input field for a cleaner look
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: @baseLineHeight / 2;
-  vertical-align: middle;
-  font-size: 0; // white space collapse hack
-  white-space: nowrap; // Prevent span and input from separating
-
-  // Reset the white space collapse hack
-  input,
-  select,
-  .uneditable-input,
-  .dropdown-menu,
-  .popover {
-    font-size: @baseFontSize;
-  }
-
-  input,
-  select,
-  .uneditable-input {
-    position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
-    margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
-    *margin-left: 0;
-    vertical-align: top;
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    // Make input on top when focused so blue border and shadow always show
-    &:focus {
-      z-index: 2;
-    }
-  }
-  .add-on {
-    display: inline-block;
-    width: auto;
-    height: @baseLineHeight;
-    min-width: 16px;
-    padding: 4px 5px;
-    font-size: @baseFontSize;
-    font-weight: normal;
-    line-height: @baseLineHeight;
-    text-align: center;
-    text-shadow: 0 1px 0 @white;
-    background-color: @grayLighter;
-    border: 1px solid #ccc;
-  }
-  .add-on,
-  .btn,
-  .btn-group > .dropdown-toggle {
-    vertical-align: top;
-    .border-radius(0);
-  }
-  .active {
-    background-color: lighten(@green, 30);
-    border-color: @green;
-  }
-}
-
-.input-prepend {
-  .add-on,
-  .btn {
-    margin-right: -1px;
-  }
-  .add-on:first-child,
-  .btn:first-child {
-    // FYI, `.btn:first-child` accounts for a button group that's prepended
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-  }
-}
-
-.input-append {
-  input,
-  select,
-  .uneditable-input {
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-    + .btn-group .btn:last-child {
-      .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    }
-  }
-  .add-on,
-  .btn,
-  .btn-group {
-    margin-left: -1px;
-  }
-  .add-on:last-child,
-  .btn:last-child,
-  .btn-group:last-child > .dropdown-toggle {
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-  }
-}
-
-// Remove all border-radius for inputs with both prepend and append
-.input-prepend.input-append {
-  input,
-  select,
-  .uneditable-input {
-    .border-radius(0);
-    + .btn-group .btn {
-      .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-    }
-  }
-  .add-on:first-child,
-  .btn:first-child {
-    margin-right: -1px;
-    .border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
-  }
-  .add-on:last-child,
-  .btn:last-child {
-    margin-left: -1px;
-    .border-radius(0 @inputBorderRadius @inputBorderRadius 0);
-  }
-  .btn-group:first-child {
-    margin-left: 0;
-  }
-}
-
-
-
-
-// SEARCH FORM
-// -----------
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
-  margin-bottom: 0; // Remove the default margin on all inputs
-  .border-radius(15px);
-}
-
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  .border-radius(0); // Override due to specificity
-}
-.form-search .input-append .search-query {
-  .border-radius(14px 0 0 14px);
-}
-.form-search .input-append .btn {
-  .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .search-query {
-  .border-radius(0 14px 14px 0);
-}
-.form-search .input-prepend .btn {
-  .border-radius(14px 0 0 14px);
-}
-
-
-
-
-// HORIZONTAL & VERTICAL FORMS
-// ---------------------------
-
-// Common properties
-// -----------------
-
-.form-search,
-.form-inline,
-.form-horizontal {
-  input,
-  textarea,
-  select,
-  .help-inline,
-  .uneditable-input,
-  .input-prepend,
-  .input-append {
-    display: inline-block;
-    .ie7-inline-block();
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  // Re-hide hidden elements due to specifity
-  .hide {
-    display: none;
-  }
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-// Remove margin for input-prepend/-append
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-// Inline checkbox/radio labels (remove padding on left)
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-// Remove float and margin, set to inline-block
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-
-// Margin to space out fieldsets
-.control-group {
-  margin-bottom: @baseLineHeight / 2;
-}
-
-// Legend collapses margin, so next element is responsible for spacing
-legend + .control-group {
-  margin-top: @baseLineHeight;
-  -webkit-margin-top-collapse: separate;
-}
-
-// Horizontal-specific styles
-// --------------------------
-
-.form-horizontal {
-  // Increase spacing between groups
-  .control-group {
-    margin-bottom: @baseLineHeight;
-    .clearfix();
-  }
-  // Float the labels left
-  .control-label {
-    float: left;
-    width: @horizontalComponentOffset - 20;
-    padding-top: 5px;
-    text-align: right;
-  }
-  // Move over all input controls and content
-  .controls {
-    // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
-    // don't inherit the margin of the parent, in this case .controls
-    *display: inline-block;
-    *padding-left: 20px;
-    margin-left: @horizontalComponentOffset;
-    *margin-left: 0;
-    &:first-child {
-      *padding-left: @horizontalComponentOffset;
-    }
-  }
-  // Remove bottom margin on block level help text since that's accounted for on .control-group
-  .help-block {
-    margin-bottom: 0;
-  }
-  // And apply it only to .help-block instances that follow a form control
-  input,
-  select,
-  textarea,
-  .uneditable-input,
-  .input-prepend,
-  .input-append {
-    + .help-block {
-      margin-top: @baseLineHeight / 2;
-    }
-  }
-  // Move over buttons in .form-actions to align with .controls
-  .form-actions {
-    padding-left: @horizontalComponentOffset;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/grid.less b/src/main/webapp/bower_components/bootstrap/less/grid.less
deleted file mode 100644
index 750d2035..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/grid.less
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Grid system
-// --------------------------------------------------
-
-
-// Fixed (940px)
-#grid > .core(@gridColumnWidth, @gridGutterWidth);
-
-// Fluid (940px)
-#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
-
-// Reset utility classes due to specificity
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/hero-unit.less b/src/main/webapp/bower_components/bootstrap/less/hero-unit.less
deleted file mode 100644
index 763d86ae..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/hero-unit.less
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Hero unit
-// --------------------------------------------------
-
-
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  font-size: 18px;
-  font-weight: 200;
-  line-height: @baseLineHeight * 1.5;
-  color: @heroUnitLeadColor;
-  background-color: @heroUnitBackground;
-  .border-radius(6px);
-  h1 {
-    margin-bottom: 0;
-    font-size: 60px;
-    line-height: 1;
-    color: @heroUnitHeadingColor;
-    letter-spacing: -1px;
-  }
-  li {
-    line-height: @baseLineHeight * 1.5; // Reset since we specify in type.less
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/labels-badges.less b/src/main/webapp/bower_components/bootstrap/less/labels-badges.less
deleted file mode 100644
index bc321fe5..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/labels-badges.less
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// Labels and badges
-// --------------------------------------------------
-
-
-// Base classes
-.label,
-.badge {
-  display: inline-block;
-  padding: 2px 4px;
-  font-size: @baseFontSize * .846;
-  font-weight: bold;
-  line-height: 14px; // ensure proper line-height if floated
-  color: @white;
-  vertical-align: baseline;
-  white-space: nowrap;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-  background-color: @grayLight;
-}
-// Set unique padding and border-radii
-.label {
-  .border-radius(3px);
-}
-.badge {
-  padding-left: 9px;
-  padding-right: 9px;
-  .border-radius(9px);
-}
-
-// Empty labels/badges collapse
-.label,
-.badge {
-  &:empty {
-    display: none;
-  }
-}
-
-// Hover/focus state, but only for links
-a {
-  &.label:hover,
-  &.label:focus,
-  &.badge:hover,
-  &.badge:focus {
-    color: @white;
-    text-decoration: none;
-    cursor: pointer;
-  }
-}
-
-// Colors
-// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
-.label,
-.badge {
-  // Important (red)
-  &-important         { background-color: @errorText; }
-  &-important[href]   { background-color: darken(@errorText, 10%); }
-  // Warnings (orange)
-  &-warning           { background-color: @orange; }
-  &-warning[href]     { background-color: darken(@orange, 10%); }
-  // Success (green)
-  &-success           { background-color: @successText; }
-  &-success[href]     { background-color: darken(@successText, 10%); }
-  // Info (turquoise)
-  &-info              { background-color: @infoText; }
-  &-info[href]        { background-color: darken(@infoText, 10%); }
-  // Inverse (black)
-  &-inverse           { background-color: @grayDark; }
-  &-inverse[href]     { background-color: darken(@grayDark, 10%); }
-}
-
-// Quick fix for labels/badges in buttons
-.btn {
-  .label,
-  .badge {
-    position: relative;
-    top: -1px;
-  }
-}
-.btn-mini {
-  .label,
-  .badge {
-    top: 0;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/layouts.less b/src/main/webapp/bower_components/bootstrap/less/layouts.less
deleted file mode 100644
index 24a20621..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/layouts.less
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// Layouts
-// --------------------------------------------------
-
-
-// Container (centered, fixed-width layouts)
-.container {
-  .container-fixed();
-}
-
-// Fluid layouts (left aligned, with sidebar, min- & max-width content)
-.container-fluid {
-  padding-right: @gridGutterWidth;
-  padding-left: @gridGutterWidth;
-  .clearfix();
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/less/media.less b/src/main/webapp/bower_components/bootstrap/less/media.less
deleted file mode 100644
index e461e446..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/media.less
+++ /dev/null
@@ -1,55 +0,0 @@
-// Media objects
-// Source: http://stubbornella.org/content/?p=497
-// --------------------------------------------------
-
-
-// Common styles
-// -------------------------
-
-// Clear the floats
-.media,
-.media-body {
-  overflow: hidden;
-  *overflow: visible;
-  zoom: 1;
-}
-
-// Proper spacing between instances of .media
-.media,
-.media .media {
-  margin-top: 15px;
-}
-.media:first-child {
-  margin-top: 0;
-}
-
-// For images and videos, set to block
-.media-object {
-  display: block;
-}
-
-// Reset margins on headings for tighter default spacing
-.media-heading {
-  margin: 0 0 5px;
-}
-
-
-// Media image alignment
-// -------------------------
-
-.media > .pull-left {
-  margin-right: 10px;
-}
-.media > .pull-right {
-  margin-left: 10px;
-}
-
-
-// Media list variation
-// -------------------------
-
-// Undo default ul/ol styles
-.media-list {
-  margin-left: 0;
-  list-style: none;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/mixins.less b/src/main/webapp/bower_components/bootstrap/less/mixins.less
deleted file mode 100644
index 79d88921..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/mixins.less
+++ /dev/null
@@ -1,702 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-
-// UTILITY MIXINS
-// --------------------------------------------------
-
-// Clearfix
-// --------
-// For clearing floats like a boss h5bp.com/q
-.clearfix {
-  *zoom: 1;
-  &:before,
-  &:after {
-    display: table;
-    content: "";
-    // Fixes Opera/contenteditable bug:
-    // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952
-    line-height: 0;
-  }
-  &:after {
-    clear: both;
-  }
-}
-
-// Webkit-style focus
-// ------------------
-.tab-focus() {
-  // Default
-  outline: thin dotted #333;
-  // Webkit
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-// Center-align a block level element
-// ----------------------------------
-.center-block() {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-// IE7 inline-block
-// ----------------
-.ie7-inline-block() {
-  *display: inline; /* IE7 inline-block hack */
-  *zoom: 1;
-}
-
-// IE7 likes to collapse whitespace on either side of the inline-block elements.
-// Ems because we're attempting to match the width of a space character. Left
-// version is for form buttons, which typically come after other elements, and
-// right version is for icons, which come before. Applying both is ok, but it will
-// mean that space between those elements will be .6em (~2 space characters) in IE7,
-// instead of the 1 space in other browsers.
-.ie7-restore-left-whitespace() {
-  *margin-left: .3em;
-
-  &:first-child {
-    *margin-left: 0;
-  }
-}
-
-.ie7-restore-right-whitespace() {
-  *margin-right: .3em;
-}
-
-// Sizing shortcuts
-// -------------------------
-.size(@height, @width) {
-  width: @width;
-  height: @height;
-}
-.square(@size) {
-  .size(@size, @size);
-}
-
-// Placeholder text
-// -------------------------
-.placeholder(@color: @placeholderText) {
-  &:-moz-placeholder {
-    color: @color;
-  }
-  &:-ms-input-placeholder {
-    color: @color;
-  }
-  &::-webkit-input-placeholder {
-    color: @color;
-  }
-}
-
-// Text overflow
-// -------------------------
-// Requires inline-block or block for proper styling
-.text-overflow() {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-// CSS image replacement
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-
-// FONTS
-// --------------------------------------------------
-
-#font {
-  #family {
-    .serif() {
-      font-family: @serifFontFamily;
-    }
-    .sans-serif() {
-      font-family: @sansFontFamily;
-    }
-    .monospace() {
-      font-family: @monoFontFamily;
-    }
-  }
-  .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    font-size: @size;
-    font-weight: @weight;
-    line-height: @lineHeight;
-  }
-  .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .serif;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-  .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .sans-serif;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-  .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
-    #font > #family > .monospace;
-    #font > .shorthand(@size, @weight, @lineHeight);
-  }
-}
-
-
-// FORMS
-// --------------------------------------------------
-
-// Block level inputs
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: @inputHeight; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
-  .box-sizing(border-box); // Makes inputs behave like true block-level elements
-}
-
-
-
-// Mixin for form field states
-.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
-  // Set the text color
-  .control-label,
-  .help-block,
-  .help-inline {
-    color: @textColor;
-  }
-  // Style inputs accordingly
-  .checkbox,
-  .radio,
-  input,
-  select,
-  textarea {
-    color: @textColor;
-  }
-  input,
-  select,
-  textarea {
-    border-color: @borderColor;
-    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-    &:focus {
-      border-color: darken(@borderColor, 10%);
-      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%);
-      .box-shadow(@shadow);
-    }
-  }
-  // Give a small background color for input-prepend/-append
-  .input-prepend .add-on,
-  .input-append .add-on {
-    color: @textColor;
-    background-color: @backgroundColor;
-    border-color: @textColor;
-  }
-}
-
-
-
-// CSS3 PROPERTIES
-// --------------------------------------------------
-
-// Border Radius
-.border-radius(@radius) {
-  -webkit-border-radius: @radius;
-     -moz-border-radius: @radius;
-          border-radius: @radius;
-}
-
-// Single Corner Border Radius
-.border-top-left-radius(@radius) {
-  -webkit-border-top-left-radius: @radius;
-      -moz-border-radius-topleft: @radius;
-          border-top-left-radius: @radius;
-}
-.border-top-right-radius(@radius) {
-  -webkit-border-top-right-radius: @radius;
-      -moz-border-radius-topright: @radius;
-          border-top-right-radius: @radius;
-}
-.border-bottom-right-radius(@radius) {
-  -webkit-border-bottom-right-radius: @radius;
-      -moz-border-radius-bottomright: @radius;
-          border-bottom-right-radius: @radius;
-}
-.border-bottom-left-radius(@radius) {
-  -webkit-border-bottom-left-radius: @radius;
-      -moz-border-radius-bottomleft: @radius;
-          border-bottom-left-radius: @radius;
-}
-
-// Single Side Border Radius
-.border-top-radius(@radius) {
-  .border-top-right-radius(@radius);
-  .border-top-left-radius(@radius);
-}
-.border-right-radius(@radius) {
-  .border-top-right-radius(@radius);
-  .border-bottom-right-radius(@radius);
-}
-.border-bottom-radius(@radius) {
-  .border-bottom-right-radius(@radius);
-  .border-bottom-left-radius(@radius);
-}
-.border-left-radius(@radius) {
-  .border-top-left-radius(@radius);
-  .border-bottom-left-radius(@radius);
-}
-
-// Drop shadows
-.box-shadow(@shadow) {
-  -webkit-box-shadow: @shadow;
-     -moz-box-shadow: @shadow;
-          box-shadow: @shadow;
-}
-
-// Transitions
-.transition(@transition) {
-  -webkit-transition: @transition;
-     -moz-transition: @transition;
-       -o-transition: @transition;
-          transition: @transition;
-}
-.transition-delay(@transition-delay) {
-  -webkit-transition-delay: @transition-delay;
-     -moz-transition-delay: @transition-delay;
-       -o-transition-delay: @transition-delay;
-          transition-delay: @transition-delay;
-}
-.transition-duration(@transition-duration) {
-  -webkit-transition-duration: @transition-duration;
-     -moz-transition-duration: @transition-duration;
-       -o-transition-duration: @transition-duration;
-          transition-duration: @transition-duration;
-}
-
-// Transformations
-.rotate(@degrees) {
-  -webkit-transform: rotate(@degrees);
-     -moz-transform: rotate(@degrees);
-      -ms-transform: rotate(@degrees);
-       -o-transform: rotate(@degrees);
-          transform: rotate(@degrees);
-}
-.scale(@ratio) {
-  -webkit-transform: scale(@ratio);
-     -moz-transform: scale(@ratio);
-      -ms-transform: scale(@ratio);
-       -o-transform: scale(@ratio);
-          transform: scale(@ratio);
-}
-.translate(@x, @y) {
-  -webkit-transform: translate(@x, @y);
-     -moz-transform: translate(@x, @y);
-      -ms-transform: translate(@x, @y);
-       -o-transform: translate(@x, @y);
-          transform: translate(@x, @y);
-}
-.skew(@x, @y) {
-  -webkit-transform: skew(@x, @y);
-     -moz-transform: skew(@x, @y);
-      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885
-       -o-transform: skew(@x, @y);
-          transform: skew(@x, @y);
-  -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
-}
-.translate3d(@x, @y, @z) {
-  -webkit-transform: translate3d(@x, @y, @z);
-     -moz-transform: translate3d(@x, @y, @z);
-       -o-transform: translate3d(@x, @y, @z);
-          transform: translate3d(@x, @y, @z);
-}
-
-// Backface visibility
-// Prevent browsers from flickering when using CSS 3D transforms.
-// Default value is `visible`, but can be changed to `hidden
-// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
-.backface-visibility(@visibility){
-	-webkit-backface-visibility: @visibility;
-	   -moz-backface-visibility: @visibility;
-	        backface-visibility: @visibility;
-}
-
-// Background clipping
-// Heads up: FF 3.6 and under need "padding" instead of "padding-box"
-.background-clip(@clip) {
-  -webkit-background-clip: @clip;
-     -moz-background-clip: @clip;
-          background-clip: @clip;
-}
-
-// Background sizing
-.background-size(@size) {
-  -webkit-background-size: @size;
-     -moz-background-size: @size;
-       -o-background-size: @size;
-          background-size: @size;
-}
-
-
-// Box sizing
-.box-sizing(@boxmodel) {
-  -webkit-box-sizing: @boxmodel;
-     -moz-box-sizing: @boxmodel;
-          box-sizing: @boxmodel;
-}
-
-// User select
-// For selecting text on the page
-.user-select(@select) {
-  -webkit-user-select: @select;
-     -moz-user-select: @select;
-      -ms-user-select: @select;
-       -o-user-select: @select;
-          user-select: @select;
-}
-
-// Resize anything
-.resizable(@direction) {
-  resize: @direction; // Options: horizontal, vertical, both
-  overflow: auto; // Safari fix
-}
-
-// CSS3 Content Columns
-.content-columns(@columnCount, @columnGap: @gridGutterWidth) {
-  -webkit-column-count: @columnCount;
-     -moz-column-count: @columnCount;
-          column-count: @columnCount;
-  -webkit-column-gap: @columnGap;
-     -moz-column-gap: @columnGap;
-          column-gap: @columnGap;
-}
-
-// Optional hyphenation
-.hyphens(@mode: auto) {
-  word-wrap: break-word;
-  -webkit-hyphens: @mode;
-     -moz-hyphens: @mode;
-      -ms-hyphens: @mode;
-       -o-hyphens: @mode;
-          hyphens: @mode;
-}
-
-// Opacity
-.opacity(@opacity) {
-  opacity: @opacity / 100;
-  filter: ~"alpha(opacity=@{opacity})";
-}
-
-
-
-// BACKGROUNDS
-// --------------------------------------------------
-
-// Add an alphatransparency value to any background or border color (via Elyse Holladay)
-#translucent {
-  .background(@color: @white, @alpha: 1) {
-    background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
-  }
-  .border(@color: @white, @alpha: 1) {
-    border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
-    .background-clip(padding-box);
-  }
-}
-
-// Gradient Bar Colors for buttons and alerts
-.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
-  color: @textColor;
-  text-shadow: @textShadow;
-  #gradient > .vertical(@primaryColor, @secondaryColor);
-  border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
-  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
-}
-
-// Gradients
-#gradient {
-  .horizontal(@startColor: #555, @endColor: #333) {
-    background-color: @endColor;
-    background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
-    background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
-    background-repeat: repeat-x;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
-  }
-  .vertical(@startColor: #555, @endColor: #333) {
-    background-color: mix(@startColor, @endColor, 60%);
-    background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
-    background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
-    background-repeat: repeat-x;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
-  }
-  .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
-    background-color: @endColor;
-    background-repeat: repeat-x;
-    background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
-    background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
-    background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
-    background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
-  }
-  .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
-    background-color: mix(@midColor, @endColor, 80%);
-    background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
-    background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
-    background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
-    background-repeat: no-repeat;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
-  }
-
-  .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
-    background-color: mix(@midColor, @endColor, 80%);
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
-    background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
-    background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
-    background-repeat: no-repeat;
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
-  }
-  .radial(@innerColor: #555, @outerColor: #333) {
-    background-color: @outerColor;
-    background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
-    background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
-    background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
-    background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
-    background-repeat: no-repeat;
-  }
-  .striped(@color: #555, @angle: 45deg) {
-    background-color: @color;
-    background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
-    background-image: -webkit-linear-gradient(@angle, 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: -moz-linear-gradient(@angle, 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(@angle, 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(@angle, 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);
-  }
-}
-// Reset filters for IE
-.reset-filter() {
-  filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
-}
-
-
-
-// COMPONENT MIXINS
-// --------------------------------------------------
-
-// Horizontal dividers
-// -------------------------
-// Dividers (basically an hr) within dropdowns and nav lists
-.nav-divider(@top: #e5e5e5, @bottom: @white) {
-  // IE7 needs a set width since we gave a height. Restricting just
-  // to IE7 to keep the 1px left/right space in other browsers.
-  // It is unclear where IE is getting the extra space that we need
-  // to negative-margin away, but so it goes.
-  *width: 100%;
-  height: 1px;
-  margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: @top;
-  border-bottom: 1px solid @bottom;
-}
-
-// Button backgrounds
-// ------------------
-.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
-  // gradientBar will set the background to a pleasing blend of these, to support IE<=9
-  .gradientBar(@startColor, @endColor, @textColor, @textShadow);
-  *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-  .reset-filter();
-
-  // in these cases the gradient won't cover the background, so we override
-  &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
-    color: @textColor;
-    background-color: @endColor;
-    *background-color: darken(@endColor, 5%);
-  }
-
-  // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
-  &:active,
-  &.active {
-    background-color: darken(@endColor, 10%) e("\9");
-  }
-}
-
-// Navbar vertical align
-// -------------------------
-// Vertically center elements in the navbar.
-// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
-.navbarVerticalAlign(@elementHeight) {
-  margin-top: (@navbarHeight - @elementHeight) / 2;
-}
-
-
-
-// Grid System
-// -----------
-
-// Centered container element
-.container-fixed() {
-  margin-right: auto;
-  margin-left: auto;
-  .clearfix();
-}
-
-// Table columns
-.tableColumns(@columnSpan: 1) {
-  float: none; // undo default grid column styles
-  width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
-  margin-left: 0; // undo default grid column styles
-}
-
-// Make a Grid
-// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
-.makeRow() {
-  margin-left: @gridGutterWidth * -1;
-  .clearfix();
-}
-.makeColumn(@columns: 1, @offset: 0) {
-  float: left;
-  margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
-  width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-}
-
-// The Grid
-#grid {
-
-  .core (@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
-    }
-
-    .span (@columns) {
-      width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
-    }
-
-    .row {
-      margin-left: @gridGutterWidth * -1;
-      .clearfix();
-    }
-
-    [class*="span"] {
-      float: left;
-      min-height: 1px; // prevent collapsing columns
-      margin-left: @gridGutterWidth;
-    }
-
-    // Set the container width, and override it for fixed navbars in media queries
-    .container,
-    .navbar-static-top .container,
-    .navbar-fixed-top .container,
-    .navbar-fixed-bottom .container { .span(@gridColumns); }
-
-    // generate .spanX and .offsetX
-    .spanX (@gridColumns);
-    .offsetX (@gridColumns);
-
-  }
-
-  .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      .span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .offsetX (@index) when (@index > 0) {
-      .offset@{index} { .offset(@index); }
-      .offset@{index}:first-child { .offsetFirstChild(@index); }
-      .offsetX(@index - 1);
-    }
-    .offsetX (0) {}
-
-    .offset (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
-  	  *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .offsetFirstChild (@columns) {
-      margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
-      *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .span (@columns) {
-      width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
-      *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
-    }
-
-    .row-fluid {
-      width: 100%;
-      .clearfix();
-      [class*="span"] {
-        .input-block-level();
-        float: left;
-        margin-left: @fluidGridGutterWidth;
-        *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
-      }
-      [class*="span"]:first-child {
-        margin-left: 0;
-      }
-
-      // Space grid-sized controls properly if multiple per line
-      .controls-row [class*="span"] + [class*="span"] {
-        margin-left: @fluidGridGutterWidth;
-      }
-
-      // generate .spanX and .offsetX
-      .spanX (@gridColumns);
-      .offsetX (@gridColumns);
-    }
-
-  }
-
-  .input(@gridColumnWidth, @gridGutterWidth) {
-
-    .spanX (@index) when (@index > 0) {
-      input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
-      .spanX(@index - 1);
-    }
-    .spanX (0) {}
-
-    .span(@columns) {
-      width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
-    }
-
-    input,
-    textarea,
-    .uneditable-input {
-      margin-left: 0; // override margin-left from core grid system
-    }
-
-    // Space grid-sized controls properly if multiple per line
-    .controls-row [class*="span"] + [class*="span"] {
-      margin-left: @gridGutterWidth;
-    }
-
-    // generate .spanX
-    .spanX (@gridColumns);
-
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/modals.less b/src/main/webapp/bower_components/bootstrap/less/modals.less
deleted file mode 100644
index 8e272d40..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/modals.less
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// Modals
-// --------------------------------------------------
-
-// Background
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: @zindexModalBackdrop;
-  background-color: @black;
-  // Fade for backdrop
-  &.fade { opacity: 0; }
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  .opacity(80);
-}
-
-// Base modal
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: @zindexModal;
-  width: 560px;
-  margin-left: -280px;
-  background-color: @white;
-  border: 1px solid #999;
-  border: 1px solid rgba(0,0,0,.3);
-  *border: 1px solid #999; /* IE6-7 */
-  .border-radius(6px);
-  .box-shadow(0 3px 7px rgba(0,0,0,0.3));
-  .background-clip(padding-box);
-  // Remove focus outline from opened modal
-  outline: none;
-
-  &.fade {
-    .transition(e('opacity .3s linear, top .3s ease-out'));
-    top: -25%;
-  }
-  &.fade.in { top: 10%; }
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-  // Close icon
-  .close { margin-top: 2px; }
-  // Heading
-  h3 {
-    margin: 0;
-    line-height: 30px;
-  }
-}
-
-// Body (where all modal content resides)
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-// Remove bottom margin if need be
-.modal-form {
-  margin-bottom: 0;
-}
-
-// Footer (for actions)
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right; // right align buttons
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  .border-radius(0 0 6px 6px);
-  .box-shadow(inset 0 1px 0 @white);
-  .clearfix(); // clear it in case folks use .pull-* classes on buttons
-
-  // Properly space out buttons
-  .btn + .btn {
-    margin-left: 5px;
-    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
-  }
-  // but override that for button groups
-  .btn-group .btn + .btn {
-    margin-left: -1px;
-  }
-  // and override it for block buttons as well
-  .btn-block + .btn-block {
-    margin-left: 0;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/navbar.less b/src/main/webapp/bower_components/bootstrap/less/navbar.less
deleted file mode 100644
index 93d09bca..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/navbar.less
+++ /dev/null
@@ -1,497 +0,0 @@
-//
-// Navbars (Redux)
-// --------------------------------------------------
-
-
-// COMMON STYLES
-// -------------
-
-// Base class and wrapper
-.navbar {
-  overflow: visible;
-  margin-bottom: @baseLineHeight;
-
-  // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
-  *position: relative;
-  *z-index: 2;
-}
-
-// Inner for background effects
-// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present
-.navbar-inner {
-  min-height: @navbarHeight;
-  padding-left:  20px;
-  padding-right: 20px;
-  #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
-  border: 1px solid @navbarBorder;
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 4px rgba(0,0,0,.065));
-
-  // Prevent floats from breaking the navbar
-  .clearfix();
-}
-
-// Set width to auto for default container
-// We then reset it for fixed navbars in the #gridSystem mixin
-.navbar .container {
-  width: auto;
-}
-
-// Override the default collapsed state
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-
-
-// Brand: website or project name
-// -------------------------
-.navbar .brand {
-  float: left;
-  display: block;
-  // Vertically center the text given @navbarHeight
-  padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2);
-  margin-left: -20px; // negative indent to left-align the text down the page
-  font-size: 20px;
-  font-weight: 200;
-  color: @navbarBrandColor;
-  text-shadow: 0 1px 0 @navbarBackgroundHighlight;
-  &:hover,
-  &:focus {
-    text-decoration: none;
-  }
-}
-
-// Plain text in topbar
-// -------------------------
-.navbar-text {
-  margin-bottom: 0;
-  line-height: @navbarHeight;
-  color: @navbarText;
-}
-
-// Janky solution for now to account for links outside the .nav
-// -------------------------
-.navbar-link {
-  color: @navbarLinkColor;
-  &:hover,
-  &:focus {
-    color: @navbarLinkColorHover;
-  }
-}
-
-// Dividers in navbar
-// -------------------------
-.navbar .divider-vertical {
-  height: @navbarHeight;
-  margin: 0 9px;
-  border-left: 1px solid @navbarBackground;
-  border-right: 1px solid @navbarBackgroundHighlight;
-}
-
-// Buttons in navbar
-// -------------------------
-.navbar .btn,
-.navbar .btn-group {
-  .navbarVerticalAlign(30px); // Vertically center in navbar
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0; // then undo the margin here so we don't accidentally double it
-}
-
-// Navbar forms
-// -------------------------
-.navbar-form {
-  margin-bottom: 0; // remove default bottom margin
-  .clearfix();
-  input,
-  select,
-  .radio,
-  .checkbox {
-    .navbarVerticalAlign(30px); // Vertically center in navbar
-  }
-  input,
-  select,
-  .btn {
-    display: inline-block;
-    margin-bottom: 0;
-  }
-  input[type="image"],
-  input[type="checkbox"],
-  input[type="radio"] {
-    margin-top: 3px;
-  }
-  .input-append,
-  .input-prepend {
-    margin-top: 5px;
-    white-space: nowrap; // preven two  items from separating within a .navbar-form that has .pull-left
-    input {
-      margin-top: 0; // remove the margin on top since it's on the parent
-    }
-  }
-}
-
-// Navbar search
-// -------------------------
-.navbar-search {
-  position: relative;
-  float: left;
-  .navbarVerticalAlign(30px); // Vertically center in navbar
-  margin-bottom: 0;
-  .search-query {
-    margin-bottom: 0;
-    padding: 4px 14px;
-    #font > .sans-serif(13px, normal, 1);
-    .border-radius(15px); // redeclare because of specificity of the type attribute
-  }
-}
-
-
-
-// Static navbar
-// -------------------------
-
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0; // remove 18px margin for default navbar
-  .navbar-inner {
-    .border-radius(0);
-  }
-}
-
-
-
-// Fixed navbar
-// -------------------------
-
-// Shared (top/bottom) styles
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: @zindexFixedNavbar;
-  margin-bottom: 0; // remove 18px margin for default navbar
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left:  0;
-  padding-right: 0;
-  .border-radius(0);
-}
-
-// Reset container width
-// Required here as we reset the width earlier on and the grid mixins don't override early enough
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  #grid > .core > .span(@gridColumns);
-}
-
-// Fixed to top
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top,
-.navbar-static-top {
-  .navbar-inner {
-    .box-shadow(~"0 1px 10px rgba(0,0,0,.1)");
-  }
-}
-
-// Fixed to bottom
-.navbar-fixed-bottom {
-  bottom: 0;
-  .navbar-inner {
-    .box-shadow(~"0 -1px 10px rgba(0,0,0,.1)");
-  }
-}
-
-
-
-// NAVIGATION
-// ----------
-
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right; // redeclare due to specificity
-  margin-right: 0; // remove margin on float right nav
-}
-.navbar .nav > li {
-  float: left;
-}
-
-// Links
-.navbar .nav > li > a {
-  float: none;
-  // Vertically center the text given @navbarHeight
-  padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2);
-  color: @navbarLinkColor;
-  text-decoration: none;
-  text-shadow: 0 1px 0 @navbarBackgroundHighlight;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-// Hover/focus
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
-  color: @navbarLinkColorHover;
-  text-decoration: none;
-}
-
-// Active nav items
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: @navbarLinkColorActive;
-  text-decoration: none;
-  background-color: @navbarLinkBackgroundActive;
-  .box-shadow(inset 0 3px 8px rgba(0,0,0,.125));
-}
-
-// Navbar button for toggling navbar items in responsive layouts
-// These definitions need to come after '.navbar .btn'
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%));
-  .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  .border-radius(1px);
-  .box-shadow(0 1px 0 rgba(0,0,0,.25));
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-
-
-
-// Dropdown menus
-// --------------
-
-// Menu position and menu carets
-.navbar .nav > li > .dropdown-menu {
-  &:before {
-    content: '';
-    display: inline-block;
-    border-left:   7px solid transparent;
-    border-right:  7px solid transparent;
-    border-bottom: 7px solid #ccc;
-    border-bottom-color: @dropdownBorder;
-    position: absolute;
-    top: -7px;
-    left: 9px;
-  }
-  &:after {
-    content: '';
-    display: inline-block;
-    border-left:   6px solid transparent;
-    border-right:  6px solid transparent;
-    border-bottom: 6px solid @dropdownBackground;
-    position: absolute;
-    top: -6px;
-    left: 10px;
-  }
-}
-// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .nav > li > .dropdown-menu {
-  &:before {
-    border-top: 7px solid #ccc;
-    border-top-color: @dropdownBorder;
-    border-bottom: 0;
-    bottom: -7px;
-    top: auto;
-  }
-  &:after {
-    border-top: 6px solid @dropdownBackground;
-    border-bottom: 0;
-    bottom: -6px;
-    top: auto;
-  }
-}
-
-// Caret should match text color on hover/focus
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: @navbarLinkColorHover;
-  border-bottom-color: @navbarLinkColorHover;
-}
-
-// Remove background color from open dropdown
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: @navbarLinkBackgroundActive;
-  color: @navbarLinkColorActive;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: @navbarLinkColor;
-  border-bottom-color: @navbarLinkColor;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: @navbarLinkColorActive;
-  border-bottom-color: @navbarLinkColorActive;
-}
-
-// Right aligned menus need alt position
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-  &:before {
-    left: auto;
-    right: 12px;
-  }
-  &:after {
-    left: auto;
-    right: 13px;
-  }
-  .dropdown-menu {
-    left: auto;
-    right: 100%;
-    margin-left: 0;
-    margin-right: -1px;
-    .border-radius(6px 0 6px 6px);
-  }
-}
-
-
-// Inverted navbar
-// -------------------------
-
-.navbar-inverse {
-
-  .navbar-inner {
-    #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground);
-    border-color: @navbarInverseBorder;
-  }
-
-  .brand,
-  .nav > li > a {
-    color: @navbarInverseLinkColor;
-    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-    &:hover,
-    &:focus {
-      color: @navbarInverseLinkColorHover;
-    }
-  }
-
-  .brand {
-    color: @navbarInverseBrandColor;
-  }
-
-  .navbar-text {
-    color: @navbarInverseText;
-  }
-
-  .nav > li > a:focus,
-  .nav > li > a:hover {
-    background-color: @navbarInverseLinkBackgroundHover;
-    color: @navbarInverseLinkColorHover;
-  }
-
-  .nav .active > a,
-  .nav .active > a:hover,
-  .nav .active > a:focus {
-    color: @navbarInverseLinkColorActive;
-    background-color: @navbarInverseLinkBackgroundActive;
-  }
-
-  // Inline text links
-  .navbar-link {
-    color: @navbarInverseLinkColor;
-    &:hover,
-    &:focus {
-      color: @navbarInverseLinkColorHover;
-    }
-  }
-
-  // Dividers in navbar
-  .divider-vertical {
-    border-left-color: @navbarInverseBackground;
-    border-right-color: @navbarInverseBackgroundHighlight;
-  }
-
-  // Dropdowns
-  .nav li.dropdown.open > .dropdown-toggle,
-  .nav li.dropdown.active > .dropdown-toggle,
-  .nav li.dropdown.open.active > .dropdown-toggle {
-    background-color: @navbarInverseLinkBackgroundActive;
-    color: @navbarInverseLinkColorActive;
-  }
-  .nav li.dropdown > a:hover .caret,
-  .nav li.dropdown > a:focus .caret {
-    border-top-color: @navbarInverseLinkColorActive;
-    border-bottom-color: @navbarInverseLinkColorActive;
-  }
-  .nav li.dropdown > .dropdown-toggle .caret {
-    border-top-color: @navbarInverseLinkColor;
-    border-bottom-color: @navbarInverseLinkColor;
-  }
-  .nav li.dropdown.open > .dropdown-toggle .caret,
-  .nav li.dropdown.active > .dropdown-toggle .caret,
-  .nav li.dropdown.open.active > .dropdown-toggle .caret {
-    border-top-color: @navbarInverseLinkColorActive;
-    border-bottom-color: @navbarInverseLinkColorActive;
-  }
-
-  // Navbar search
-  .navbar-search {
-    .search-query {
-      color: @white;
-      background-color: @navbarInverseSearchBackground;
-      border-color: @navbarInverseSearchBorder;
-      .box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)");
-      .transition(none);
-      .placeholder(@navbarInverseSearchPlaceholderColor);
-
-      // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
-      &:focus,
-      &.focused {
-        padding: 5px 15px;
-        color: @grayDark;
-        text-shadow: 0 1px 0 @white;
-        background-color: @navbarInverseSearchBackgroundFocus;
-        border: 0;
-        .box-shadow(0 0 3px rgba(0,0,0,.15));
-        outline: 0;
-      }
-    }
-  }
-
-  // Navbar collapse button
-  .btn-navbar {
-    .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%));
-  }
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/navs.less b/src/main/webapp/bower_components/bootstrap/less/navs.less
deleted file mode 100644
index 01cd805b..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/navs.less
+++ /dev/null
@@ -1,409 +0,0 @@
-//
-// Navs
-// --------------------------------------------------
-
-
-// BASE CLASS
-// ----------
-
-.nav {
-  margin-left: 0;
-  margin-bottom: @baseLineHeight;
-  list-style: none;
-}
-
-// Make links block level
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: @grayLighter;
-}
-
-// Prevent IE8 from misplacing imgs
-// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
-.nav > li > a > img {
-  max-width: none;
-}
-
-// Redeclare pull classes because of specifity
-.nav > .pull-right {
-  float: right;
-}
-
-// Nav headers (for dropdowns and lists)
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: @baseLineHeight;
-  color: @grayLight;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-  text-transform: uppercase;
-}
-// Space them out when they follow another list item (link)
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-
-
-// NAV LIST
-// --------
-
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left:  -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255,255,255,.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: @white;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.2);
-  background-color: @linkColor;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-// Dividers (basically an hr) within the dropdown
-.nav-list .divider {
-  .nav-divider();
-}
-
-
-
-// TABS AND PILLS
-// -------------
-
-// Common styles
-.nav-tabs,
-.nav-pills {
-  .clearfix();
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px; // keeps the overall height an even number
-}
-
-// TABS
-// ----
-
-// Give the tabs something to sit on
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-// Make the list-items overlay the bottom border
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-// Actual tabs (as links)
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: @baseLineHeight;
-  border: 1px solid transparent;
-  .border-radius(4px 4px 0 0);
-  &:hover,
-  &:focus {
-    border-color: @grayLighter @grayLighter #ddd;
-  }
-}
-// Active state, and it's :hover/:focus to override normal :hover/:focus
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: @gray;
-  background-color: @bodyBackground;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-
-
-// PILLS
-// -----
-
-// Links rendered as pills
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  .border-radius(5px);
-}
-
-// Active state
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: @white;
-  background-color: @linkColor;
-}
-
-
-
-// STACKED NAV
-// -----------
-
-// Stacked tabs and pills
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0; // no need for the gap between nav items
-}
-
-// Tabs
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  .border-radius(0);
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  .border-top-radius(4px);
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  .border-bottom-radius(4px);
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-
-// Pills
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
-}
-
-
-
-// DROPDOWNS
-// ---------
-
-.nav-tabs .dropdown-menu {
-  .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu
-}
-.nav-pills .dropdown-menu {
-  .border-radius(6px); // make rounded corners match the pills
-}
-
-// Default dropdown links
-// -------------------------
-// Make carets use linkColor to start
-.nav .dropdown-toggle .caret {
-  border-top-color: @linkColor;
-  border-bottom-color: @linkColor;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: @linkColorHover;
-  border-bottom-color: @linkColorHover;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-// Active dropdown links
-// -------------------------
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: @gray;
-  border-bottom-color: @gray;
-}
-
-// Active:hover/:focus dropdown links
-// -------------------------
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-
-// Open dropdowns
-// -------------------------
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: @white;
-  background-color: @grayLight;
-  border-color: @grayLight;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: @white;
-  border-bottom-color: @white;
-  .opacity(100);
-}
-
-// Dropdowns in stacked tabs
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: @grayLight;
-}
-
-
-
-// TABBABLE
-// --------
-
-
-// COMMON STYLES
-// -------------
-
-// Clear any floats
-.tabbable {
-  .clearfix();
-}
-.tab-content {
-  overflow: auto; // prevent content from running below tabs
-}
-
-// Remove border on bottom, left, right
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-// Show/hide tabbable areas
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-
-// BOTTOM
-// ------
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  .border-radius(0 0 4px 4px);
-  &:hover,
-  &:focus {
-    border-bottom-color: transparent;
-    border-top-color: #ddd;
-  }
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-// LEFT & RIGHT
-// ------------
-
-// Common styles
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-// Tabs on the left
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  .border-radius(4px 0 0 4px);
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: @grayLighter #ddd @grayLighter @grayLighter;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: @white;
-}
-
-// Tabs on the right
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  .border-radius(0 4px 4px 0);
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: @grayLighter @grayLighter @grayLighter #ddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: @white;
-}
-
-
-
-// DISABLED STATES
-// ---------------
-
-// Gray out text
-.nav > .disabled > a {
-  color: @grayLight;
-}
-// Nuke hover/focus effects
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/pager.less b/src/main/webapp/bower_components/bootstrap/less/pager.less
deleted file mode 100644
index 14761882..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/pager.less
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Pager pagination
-// --------------------------------------------------
-
-
-.pager {
-  margin: @baseLineHeight 0;
-  list-style: none;
-  text-align: center;
-  .clearfix();
-}
-.pager li {
-  display: inline;
-}
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  .border-radius(15px);
-}
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: @grayLight;
-  background-color: #fff;
-  cursor: default;
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/bootstrap/less/pagination.less b/src/main/webapp/bower_components/bootstrap/less/pagination.less
deleted file mode 100644
index a789db2d..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/pagination.less
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-
-// Space out pagination from surrounding content
-.pagination {
-  margin: @baseLineHeight 0;
-}
-
-.pagination ul {
-  // Allow for text-based alignment
-  display: inline-block;
-  .ie7-inline-block();
-  // Reset default ul styles
-  margin-left: 0;
-  margin-bottom: 0;
-  // Visuals
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 2px rgba(0,0,0,.05));
-}
-.pagination ul > li {
-  display: inline; // Remove list-style and block-level defaults
-}
-.pagination ul > li > a,
-.pagination ul > li > span {
-  float: left; // Collapse white-space
-  padding: 4px 12px;
-  line-height: @baseLineHeight;
-  text-decoration: none;
-  background-color: @paginationBackground;
-  border: 1px solid @paginationBorder;
-  border-left-width: 0;
-}
-.pagination ul > li > a:hover,
-.pagination ul > li > a:focus,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  background-color: @paginationActiveBackground;
-}
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: @grayLight;
-  cursor: default;
-}
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover,
-.pagination ul > .disabled > a:focus {
-  color: @grayLight;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
-  border-left-width: 1px;
-  .border-left-radius(@baseBorderRadius);
-}
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  .border-right-radius(@baseBorderRadius);
-}
-
-
-// Alignment
-// --------------------------------------------------
-
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-large {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingLarge;
-    font-size: @fontSizeLarge;
-  }
-  ul > li:first-child > a,
-  ul > li:first-child > span {
-    .border-left-radius(@borderRadiusLarge);
-  }
-  ul > li:last-child > a,
-  ul > li:last-child > span {
-    .border-right-radius(@borderRadiusLarge);
-  }
-}
-
-// Small and mini
-.pagination-mini,
-.pagination-small {
-  ul > li:first-child > a,
-  ul > li:first-child > span {
-    .border-left-radius(@borderRadiusSmall);
-  }
-  ul > li:last-child > a,
-  ul > li:last-child > span {
-    .border-right-radius(@borderRadiusSmall);
-  }
-}
-
-// Small
-.pagination-small {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingSmall;
-    font-size: @fontSizeSmall;
-  }
-}
-// Mini
-.pagination-mini {
-  ul > li > a,
-  ul > li > span {
-    padding: @paddingMini;
-    font-size: @fontSizeMini;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/popovers.less b/src/main/webapp/bower_components/bootstrap/less/popovers.less
deleted file mode 100644
index aae35c8c..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/popovers.less
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// Popovers
-// --------------------------------------------------
-
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: @zindexPopover;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left; // Reset given new insertion method
-  background-color: @popoverBackground;
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0,0,0,.2);
-  .border-radius(6px);
-  .box-shadow(0 5px 10px rgba(0,0,0,.2));
-
-  // Overrides for proper insertion
-  white-space: normal;
-
-  // Offset the popover to account for the popover arrow
-  &.top     { margin-top: -10px; }
-  &.right   { margin-left: 10px; }
-  &.bottom  { margin-top: 10px; }
-  &.left    { margin-left: -10px; }
-}
-
-.popover-title {
-  margin: 0; // reset heading margin
-  padding: 8px 14px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: @popoverTitleBackground;
-  border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
-  .border-radius(5px 5px 0 0);
-
-  &:empty {
-    display: none;
-  }
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
-
-// Arrows
-//
-// .arrow is outer, .arrow:after is inner
-
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.popover .arrow {
-  border-width: @popoverArrowOuterWidth;
-}
-.popover .arrow:after {
-  border-width: @popoverArrowWidth;
-  content: "";
-}
-
-.popover {
-  &.top .arrow {
-    left: 50%;
-    margin-left: -@popoverArrowOuterWidth;
-    border-bottom-width: 0;
-    border-top-color: #999; // IE8 fallback
-    border-top-color: @popoverArrowOuterColor;
-    bottom: -@popoverArrowOuterWidth;
-    &:after {
-      bottom: 1px;
-      margin-left: -@popoverArrowWidth;
-      border-bottom-width: 0;
-      border-top-color: @popoverArrowColor;
-    }
-  }
-  &.right .arrow {
-    top: 50%;
-    left: -@popoverArrowOuterWidth;
-    margin-top: -@popoverArrowOuterWidth;
-    border-left-width: 0;
-    border-right-color: #999; // IE8 fallback
-    border-right-color: @popoverArrowOuterColor;
-    &:after {
-      left: 1px;
-      bottom: -@popoverArrowWidth;
-      border-left-width: 0;
-      border-right-color: @popoverArrowColor;
-    }
-  }
-  &.bottom .arrow {
-    left: 50%;
-    margin-left: -@popoverArrowOuterWidth;
-    border-top-width: 0;
-    border-bottom-color: #999; // IE8 fallback
-    border-bottom-color: @popoverArrowOuterColor;
-    top: -@popoverArrowOuterWidth;
-    &:after {
-      top: 1px;
-      margin-left: -@popoverArrowWidth;
-      border-top-width: 0;
-      border-bottom-color: @popoverArrowColor;
-    }
-  }
-
-  &.left .arrow {
-    top: 50%;
-    right: -@popoverArrowOuterWidth;
-    margin-top: -@popoverArrowOuterWidth;
-    border-right-width: 0;
-    border-left-color: #999; // IE8 fallback
-    border-left-color: @popoverArrowOuterColor;
-    &:after {
-      right: 1px;
-      border-right-width: 0;
-      border-left-color: @popoverArrowColor;
-      bottom: -@popoverArrowWidth;
-    }
-  }
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/progress-bars.less b/src/main/webapp/bower_components/bootstrap/less/progress-bars.less
deleted file mode 100644
index 5e0c3dda..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/progress-bars.less
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// Progress bars
-// --------------------------------------------------
-
-
-// ANIMATIONS
-// ----------
-
-// Webkit
-@-webkit-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// Firefox
-@-moz-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// IE9
-@-ms-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// Opera
-@-o-keyframes progress-bar-stripes {
-  from  { background-position: 0 0; }
-  to    { background-position: 40px 0; }
-}
-
-// Spec
-@keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-
-
-// THE BARS
-// --------
-
-// Outer container
-.progress {
-  overflow: hidden;
-  height: @baseLineHeight;
-  margin-bottom: @baseLineHeight;
-  #gradient > .vertical(#f5f5f5, #f9f9f9);
-  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
-  .border-radius(@baseBorderRadius);
-}
-
-// Bar of progress
-.progress .bar {
-  width: 0%;
-  height: 100%;
-  color: @white;
-  float: left;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
-  #gradient > .vertical(#149bdf, #0480be);
-  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
-  .box-sizing(border-box);
-  .transition(width .6s ease);
-}
-.progress .bar + .bar {
-  .box-shadow(~"inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)");
-}
-
-// Striped bars
-.progress-striped .bar {
-  #gradient > .striped(#149bdf);
-  .background-size(40px 40px);
-}
-
-// Call animation for the active one
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-
-
-// COLORS
-// ------
-
-// Danger (red)
-.progress-danger .bar, .progress .bar-danger {
-  #gradient > .vertical(#ee5f5b, #c43c35);
-}
-.progress-danger.progress-striped .bar, .progress-striped .bar-danger {
-  #gradient > .striped(#ee5f5b);
-}
-
-// Success (green)
-.progress-success .bar, .progress .bar-success {
-  #gradient > .vertical(#62c462, #57a957);
-}
-.progress-success.progress-striped .bar, .progress-striped .bar-success {
-  #gradient > .striped(#62c462);
-}
-
-// Info (teal)
-.progress-info .bar, .progress .bar-info {
-  #gradient > .vertical(#5bc0de, #339bb9);
-}
-.progress-info.progress-striped .bar, .progress-striped .bar-info {
-  #gradient > .striped(#5bc0de);
-}
-
-// Warning (orange)
-.progress-warning .bar, .progress .bar-warning {
-  #gradient > .vertical(lighten(@orange, 15%), @orange);
-}
-.progress-warning.progress-striped .bar, .progress-striped .bar-warning {
-  #gradient > .striped(lighten(@orange, 15%));
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/reset.less b/src/main/webapp/bower_components/bootstrap/less/reset.less
deleted file mode 100644
index 4806bd5e..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/reset.less
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Reset CSS
-// Adapted from http://github.com/necolas/normalize.css
-// --------------------------------------------------
-
-
-// Display in IE6-9 and FF3
-// -------------------------
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-// Display block in IE6-9 and FF3
-// -------------------------
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-// Prevents modern browsers from displaying 'audio' without controls
-// -------------------------
-
-audio:not([controls]) {
-    display: none;
-}
-
-// Base settings
-// -------------------------
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-// Focus states
-a:focus {
-  .tab-focus();
-}
-// Hover & Active
-a:hover,
-a:active {
-  outline: 0;
-}
-
-// Prevents sub and sup affecting line-height in all browsers
-// -------------------------
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-
-// Img border in a's and image quality
-// -------------------------
-
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-  max-width: 100%; /* Part 1: Set a maxium relative to the parent */
-  width: auto\9; /* IE7-8 need help adjusting responsive images */
-  height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-// Prevent max-width from affecting Google Maps
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-// Forms
-// -------------------------
-
-// Font size in all browsers, margin changes, misc consistency
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible; // Inner spacing ie IE6/7
-  line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
-    cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-    cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-}
-input[type="search"] { // Appearance in Safari/Chrome
-  .box-sizing(content-box);
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
-}
-textarea {
-  overflow: auto; // Remove vertical scrollbar in IE6-9
-  vertical-align: top; // Readability and alignment cross-browser
-}
-
-
-// Printing
-// -------------------------
-// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
-
-@media print {
-
-  * {
-    text-shadow: none !important;
-    color: #000 !important; // Black prints faster: h5bp.com/s
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-
-  // Don't show links for images, or javascript/internal links
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-
-  thead {
-    display: table-header-group; // h5bp.com/t
-  }
-
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-
-  img {
-    max-width: 100% !important;
-  }
-
-  @page {
-    margin: 0.5cm;
-  }
-
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive-1200px-min.less b/src/main/webapp/bower_components/bootstrap/less/responsive-1200px-min.less
deleted file mode 100644
index 4f35ba6c..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive-1200px-min.less
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Responsive: Large desktop and up
-// --------------------------------------------------
-
-
-@media (min-width: 1200px) {
-
-  // Fixed grid
-  #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200);
-
-  // Fluid grid
-  #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200);
-
-  // Input grid
-  #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200);
-
-  // Thumbnails
-  .thumbnails {
-    margin-left: -@gridGutterWidth1200;
-  }
-  .thumbnails > li {
-    margin-left: @gridGutterWidth1200;
-  }
-  .row-fluid .thumbnails {
-    margin-left: 0;
-  }
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive-767px-max.less b/src/main/webapp/bower_components/bootstrap/less/responsive-767px-max.less
deleted file mode 100644
index 128f4ce3..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive-767px-max.less
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// Responsive: Landscape phone to desktop/tablet
-// --------------------------------------------------
-
-
-@media (max-width: 767px) {
-
-  // Padding to set content in a bit
-  body {
-    padding-left: 20px;
-    padding-right: 20px;
-  }
-  // Negative indent the now static "fixed" navbar
-  .navbar-fixed-top,
-  .navbar-fixed-bottom,
-  .navbar-static-top {
-    margin-left: -20px;
-    margin-right: -20px;
-  }
-  // Remove padding on container given explicit padding set on body
-  .container-fluid {
-    padding: 0;
-  }
-
-  // TYPOGRAPHY
-  // ----------
-  // Reset horizontal dl
-  .dl-horizontal {
-    dt {
-      float: none;
-      clear: none;
-      width: auto;
-      text-align: left;
-    }
-    dd {
-      margin-left: 0;
-    }
-  }
-
-  // GRID & CONTAINERS
-  // -----------------
-  // Remove width from containers
-  .container {
-    width: auto;
-  }
-  // Fluid rows
-  .row-fluid {
-    width: 100%;
-  }
-  // Undo negative margin on rows and thumbnails
-  .row,
-  .thumbnails {
-    margin-left: 0;
-  }
-  .thumbnails > li {
-    float: none;
-    margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present
-  }
-  // Make all grid-sized elements block level again
-  [class*="span"],
-  .uneditable-input[class*="span"], // Makes uneditable inputs full-width when using grid sizing
-  .row-fluid [class*="span"] {
-    float: none;
-    display: block;
-    width: 100%;
-    margin-left: 0;
-    .box-sizing(border-box);
-  }
-  .span12,
-  .row-fluid .span12 {
-    width: 100%;
-    .box-sizing(border-box);
-  }
-  .row-fluid [class*="offset"]:first-child {
-    margin-left: 0;
-  }
-
-  // FORM FIELDS
-  // -----------
-  // Make span* classes full width
-  .input-large,
-  .input-xlarge,
-  .input-xxlarge,
-  input[class*="span"],
-  select[class*="span"],
-  textarea[class*="span"],
-  .uneditable-input {
-    .input-block-level();
-  }
-  // But don't let it screw up prepend/append inputs
-  .input-prepend input,
-  .input-append input,
-  .input-prepend input[class*="span"],
-  .input-append input[class*="span"] {
-    display: inline-block; // redeclare so they don't wrap to new lines
-    width: auto;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 0;
-  }
-
-  // Modals
-  .modal {
-    position: fixed;
-    top:   20px;
-    left:  20px;
-    right: 20px;
-    width: auto;
-    margin: 0;
-    &.fade  { top: -100px; }
-    &.fade.in { top: 20px; }
-  }
-
-}
-
-
-
-// UP TO LANDSCAPE PHONE
-// ---------------------
-
-@media (max-width: 480px) {
-
-  // Smooth out the collapsing/expanding nav
-  .nav-collapse {
-    -webkit-transform: translate3d(0, 0, 0); // activate the GPU
-  }
-
-  // Block level the page header small tag for readability
-  .page-header h1 small {
-    display: block;
-    line-height: @baseLineHeight;
-  }
-
-  // Update checkboxes for iOS
-  input[type="checkbox"],
-  input[type="radio"] {
-    border: 1px solid #ccc;
-  }
-
-  // Remove the horizontal form styles
-  .form-horizontal {
-    .control-label {
-      float: none;
-      width: auto;
-      padding-top: 0;
-      text-align: left;
-    }
-    // Move over all input controls and content
-    .controls {
-      margin-left: 0;
-    }
-    // Move the options list down to align with labels
-    .control-list {
-      padding-top: 0; // has to be padding because margin collaspes
-    }
-    // Move over buttons in .form-actions to align with .controls
-    .form-actions {
-      padding-left: 10px;
-      padding-right: 10px;
-    }
-  }
-
-  // Medias
-  // Reset float and spacing to stack
-  .media .pull-left,
-  .media .pull-right  {
-    float: none;
-    display: block;
-    margin-bottom: 10px;
-  }
-  // Remove side margins since we stack instead of indent
-  .media-object {
-    margin-right: 0;
-    margin-left: 0;
-  }
-
-  // Modals
-  .modal {
-    top:   10px;
-    left:  10px;
-    right: 10px;
-  }
-  .modal-header .close {
-    padding: 10px;
-    margin: -10px;
-  }
-
-  // Carousel
-  .carousel-caption {
-    position: static;
-  }
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive-768px-979px.less b/src/main/webapp/bower_components/bootstrap/less/responsive-768px-979px.less
deleted file mode 100644
index 8e8c486a..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive-768px-979px.less
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Responsive: Tablet to desktop
-// --------------------------------------------------
-
-
-@media (min-width: 768px) and (max-width: 979px) {
-
-  // Fixed grid
-  #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
-
-  // Fluid grid
-  #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
-
-  // Input grid
-  #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
-
-  // No need to reset .thumbnails here since it's the same @gridGutterWidth
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive-navbar.less b/src/main/webapp/bower_components/bootstrap/less/responsive-navbar.less
deleted file mode 100644
index 21cd3ba6..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive-navbar.less
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// Responsive: Navbar
-// --------------------------------------------------
-
-
-// TABLETS AND BELOW
-// -----------------
-@media (max-width: @navbarCollapseWidth) {
-
-  // UNFIX THE TOPBAR
-  // ----------------
-  // Remove any padding from the body
-  body {
-    padding-top: 0;
-  }
-  // Unfix the navbars
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    position: static;
-  }
-  .navbar-fixed-top {
-    margin-bottom: @baseLineHeight;
-  }
-  .navbar-fixed-bottom {
-    margin-top: @baseLineHeight;
-  }
-  .navbar-fixed-top .navbar-inner,
-  .navbar-fixed-bottom .navbar-inner {
-    padding: 5px;
-  }
-  .navbar .container {
-    width: auto;
-    padding: 0;
-  }
-  // Account for brand name
-  .navbar .brand {
-    padding-left: 10px;
-    padding-right: 10px;
-    margin: 0 0 0 -5px;
-  }
-
-  // COLLAPSIBLE NAVBAR
-  // ------------------
-  // Nav collapse clears brand
-  .nav-collapse {
-    clear: both;
-  }
-  // Block-level the nav
-  .nav-collapse .nav {
-    float: none;
-    margin: 0 0 (@baseLineHeight / 2);
-  }
-  .nav-collapse .nav > li {
-    float: none;
-  }
-  .nav-collapse .nav > li > a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > .divider-vertical {
-    display: none;
-  }
-  .nav-collapse .nav .nav-header {
-    color: @navbarText;
-    text-shadow: none;
-  }
-  // Nav and dropdown links in navbar
-  .nav-collapse .nav > li > a,
-  .nav-collapse .dropdown-menu a {
-    padding: 9px 15px;
-    font-weight: bold;
-    color: @navbarLinkColor;
-    .border-radius(3px);
-  }
-  // Buttons
-  .nav-collapse .btn {
-    padding: 4px 10px 4px;
-    font-weight: normal;
-    .border-radius(@baseBorderRadius);
-  }
-  .nav-collapse .dropdown-menu li + li a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > li > a:hover,
-  .nav-collapse .nav > li > a:focus,
-  .nav-collapse .dropdown-menu a:hover,
-  .nav-collapse .dropdown-menu a:focus {
-    background-color: @navbarBackground;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a,
-  .navbar-inverse .nav-collapse .dropdown-menu a {
-    color: @navbarInverseLinkColor;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a:hover,
-  .navbar-inverse .nav-collapse .nav > li > a:focus,
-  .navbar-inverse .nav-collapse .dropdown-menu a:hover,
-  .navbar-inverse .nav-collapse .dropdown-menu a:focus {
-    background-color: @navbarInverseBackground;
-  }
-  // Buttons in the navbar
-  .nav-collapse.in .btn-group {
-    margin-top: 5px;
-    padding: 0;
-  }
-  // Dropdowns in the navbar
-  .nav-collapse .dropdown-menu {
-    position: static;
-    top: auto;
-    left: auto;
-    float: none;
-    display: none;
-    max-width: none;
-    margin: 0 15px;
-    padding: 0;
-    background-color: transparent;
-    border: none;
-    .border-radius(0);
-    .box-shadow(none);
-  }
-  .nav-collapse .open > .dropdown-menu { 
-    display: block; 
-  }
-
-  .nav-collapse .dropdown-menu:before,
-  .nav-collapse .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .dropdown-menu .divider {
-    display: none;
-  }
-  .nav-collapse .nav > li > .dropdown-menu {
-    &:before,
-    &:after {
-      display: none;
-    }
-  }
-  // Forms in navbar
-  .nav-collapse .navbar-form,
-  .nav-collapse .navbar-search {
-    float: none;
-    padding: (@baseLineHeight / 2) 15px;
-    margin: (@baseLineHeight / 2) 0;
-    border-top: 1px solid @navbarBackground;
-    border-bottom: 1px solid @navbarBackground;
-    .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
-  }
-  .navbar-inverse .nav-collapse .navbar-form,
-  .navbar-inverse .nav-collapse .navbar-search {
-    border-top-color: @navbarInverseBackground;
-    border-bottom-color: @navbarInverseBackground;
-  }
-  // Pull right (secondary) nav content
-  .navbar .nav-collapse .nav.pull-right {
-    float: none;
-    margin-left: 0;
-  }
-  // Hide everything in the navbar save .brand and toggle button */
-  .nav-collapse,
-  .nav-collapse.collapse {
-    overflow: hidden;
-    height: 0;
-  }
-  // Navbar button
-  .navbar .btn-navbar {
-    display: block;
-  }
-
-  // STATIC NAVBAR
-  // -------------
-  .navbar-static .navbar-inner {
-    padding-left:  10px;
-    padding-right: 10px;
-  }
-
-
-}
-
-
-// DEFAULT DESKTOP
-// ---------------
-
-@media (min-width: @navbarCollapseDesktopWidth) {
-
-  // Required to make the collapsing navbar work on regular desktops
-  .nav-collapse.collapse {
-    height: auto !important;
-    overflow: visible !important;
-  }
-
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive-utilities.less b/src/main/webapp/bower_components/bootstrap/less/responsive-utilities.less
deleted file mode 100644
index bf43e8ef..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive-utilities.less
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// Responsive: Utility classes
-// --------------------------------------------------
-
-
-// IE10 Metro responsive
-// Required for Windows 8 Metro split-screen snapping with IE10
-// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-@-ms-viewport{
-  width: device-width;
-}
-
-// Hide from screenreaders and browsers
-// Credit: HTML5 Boilerplate
-.hidden {
-  display: none;
-  visibility: hidden;
-}
-
-// Visibility utilities
-
-// For desktops
-.visible-phone     { display: none !important; }
-.visible-tablet    { display: none !important; }
-.hidden-phone      { }
-.hidden-tablet     { }
-.hidden-desktop    { display: none !important; }
-.visible-desktop   { display: inherit !important; }
-
-// Tablets & small desktops only
-@media (min-width: 768px) and (max-width: 979px) {
-  // Hide everything else
-  .hidden-desktop    { display: inherit !important; }
-  .visible-desktop   { display: none !important ; }
-  // Show
-  .visible-tablet    { display: inherit !important; }
-  // Hide
-  .hidden-tablet     { display: none !important; }
-}
-
-// Phones only
-@media (max-width: 767px) {
-  // Hide everything else
-  .hidden-desktop    { display: inherit !important; }
-  .visible-desktop   { display: none !important; }
-  // Show
-  .visible-phone     { display: inherit !important; } // Use inherit to restore previous behavior
-  // Hide
-  .hidden-phone      { display: none !important; }
-}
-
-// Print utilities
-.visible-print    { display: none !important; }
-.hidden-print     { }
-
-@media print {
-  .visible-print  { display: inherit !important; }
-  .hidden-print   { display: none !important; }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/responsive.less b/src/main/webapp/bower_components/bootstrap/less/responsive.less
deleted file mode 100644
index df633406..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/responsive.less
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
- * Bootstrap Responsive v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-
-// Responsive.less
-// For phone and tablet devices
-// -------------------------------------------------------------
-
-
-// REPEAT VARIABLES & MIXINS
-// -------------------------
-// Required since we compile the responsive stuff separately
-
-@import "variables.less"; // Modify this for custom colors, font-sizes, etc
-@import "mixins.less";
-
-
-// RESPONSIVE CLASSES
-// ------------------
-
-@import "responsive-utilities.less";
-
-
-// MEDIA QUERIES
-// ------------------
-
-// Large desktops
-@import "responsive-1200px-min.less";
-
-// Tablets to regular desktops
-@import "responsive-768px-979px.less";
-
-// Phones to portrait tablets and narrow desktops
-@import "responsive-767px-max.less";
-
-
-// RESPONSIVE NAVBAR
-// ------------------
-
-// From 979px and below, show a button to toggle navbar contents
-@import "responsive-navbar.less";
diff --git a/src/main/webapp/bower_components/bootstrap/less/scaffolding.less b/src/main/webapp/bower_components/bootstrap/less/scaffolding.less
deleted file mode 100644
index f17e8cad..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/scaffolding.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Scaffolding
-// --------------------------------------------------
-
-
-// Body reset
-// -------------------------
-
-body {
-  margin: 0;
-  font-family: @baseFontFamily;
-  font-size: @baseFontSize;
-  line-height: @baseLineHeight;
-  color: @textColor;
-  background-color: @bodyBackground;
-}
-
-
-// Links
-// -------------------------
-
-a {
-  color: @linkColor;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: @linkColorHover;
-  text-decoration: underline;
-}
-
-
-// Images
-// -------------------------
-
-// Rounded corners
-.img-rounded {
-  .border-radius(6px);
-}
-
-// Add polaroid-esque trim
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0,0,0,.2);
-  .box-shadow(0 1px 3px rgba(0,0,0,.1));
-}
-
-// Perfect circle
-.img-circle {
-  .border-radius(500px); // crank the border-radius so it works with most reasonably sized images
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/sprites.less b/src/main/webapp/bower_components/bootstrap/less/sprites.less
deleted file mode 100644
index 1812bf71..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/sprites.less
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// Sprites
-// --------------------------------------------------
-
-
-// ICONS
-// -----
-
-// All icons receive the styles of the <i> tag with a base class
-// of .i and are then given a unique class to add width, height,
-// and background-position. Your resulting HTML will look like
-// <i class="icon-inbox"></i>.
-
-// For the white version of the icons, just add the .icon-white class:
-// <i class="icon-inbox icon-white"></i>
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  .ie7-restore-right-whitespace();
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("@{iconSpritePath}");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  margin-top: 1px;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
-  background-image: url("@{iconWhiteSpritePath}");
-}
-
-.icon-glass              { background-position: 0      0; }
-.icon-music              { background-position: -24px  0; }
-.icon-search             { background-position: -48px  0; }
-.icon-envelope           { background-position: -72px  0; }
-.icon-heart              { background-position: -96px  0; }
-.icon-star               { background-position: -120px 0; }
-.icon-star-empty         { background-position: -144px 0; }
-.icon-user               { background-position: -168px 0; }
-.icon-film               { background-position: -192px 0; }
-.icon-th-large           { background-position: -216px 0; }
-.icon-th                 { background-position: -240px 0; }
-.icon-th-list            { background-position: -264px 0; }
-.icon-ok                 { background-position: -288px 0; }
-.icon-remove             { background-position: -312px 0; }
-.icon-zoom-in            { background-position: -336px 0; }
-.icon-zoom-out           { background-position: -360px 0; }
-.icon-off                { background-position: -384px 0; }
-.icon-signal             { background-position: -408px 0; }
-.icon-cog                { background-position: -432px 0; }
-.icon-trash              { background-position: -456px 0; }
-
-.icon-home               { background-position: 0      -24px; }
-.icon-file               { background-position: -24px  -24px; }
-.icon-time               { background-position: -48px  -24px; }
-.icon-road               { background-position: -72px  -24px; }
-.icon-download-alt       { background-position: -96px  -24px; }
-.icon-download           { background-position: -120px -24px; }
-.icon-upload             { background-position: -144px -24px; }
-.icon-inbox              { background-position: -168px -24px; }
-.icon-play-circle        { background-position: -192px -24px; }
-.icon-repeat             { background-position: -216px -24px; }
-.icon-refresh            { background-position: -240px -24px; }
-.icon-list-alt           { background-position: -264px -24px; }
-.icon-lock               { background-position: -287px -24px; } // 1px off
-.icon-flag               { background-position: -312px -24px; }
-.icon-headphones         { background-position: -336px -24px; }
-.icon-volume-off         { background-position: -360px -24px; }
-.icon-volume-down        { background-position: -384px -24px; }
-.icon-volume-up          { background-position: -408px -24px; }
-.icon-qrcode             { background-position: -432px -24px; }
-.icon-barcode            { background-position: -456px -24px; }
-
-.icon-tag                { background-position: 0      -48px; }
-.icon-tags               { background-position: -25px  -48px; } // 1px off
-.icon-book               { background-position: -48px  -48px; }
-.icon-bookmark           { background-position: -72px  -48px; }
-.icon-print              { background-position: -96px  -48px; }
-.icon-camera             { background-position: -120px -48px; }
-.icon-font               { background-position: -144px -48px; }
-.icon-bold               { background-position: -167px -48px; } // 1px off
-.icon-italic             { background-position: -192px -48px; }
-.icon-text-height        { background-position: -216px -48px; }
-.icon-text-width         { background-position: -240px -48px; }
-.icon-align-left         { background-position: -264px -48px; }
-.icon-align-center       { background-position: -288px -48px; }
-.icon-align-right        { background-position: -312px -48px; }
-.icon-align-justify      { background-position: -336px -48px; }
-.icon-list               { background-position: -360px -48px; }
-.icon-indent-left        { background-position: -384px -48px; }
-.icon-indent-right       { background-position: -408px -48px; }
-.icon-facetime-video     { background-position: -432px -48px; }
-.icon-picture            { background-position: -456px -48px; }
-
-.icon-pencil             { background-position: 0      -72px; }
-.icon-map-marker         { background-position: -24px  -72px; }
-.icon-adjust             { background-position: -48px  -72px; }
-.icon-tint               { background-position: -72px  -72px; }
-.icon-edit               { background-position: -96px  -72px; }
-.icon-share              { background-position: -120px -72px; }
-.icon-check              { background-position: -144px -72px; }
-.icon-move               { background-position: -168px -72px; }
-.icon-step-backward      { background-position: -192px -72px; }
-.icon-fast-backward      { background-position: -216px -72px; }
-.icon-backward           { background-position: -240px -72px; }
-.icon-play               { background-position: -264px -72px; }
-.icon-pause              { background-position: -288px -72px; }
-.icon-stop               { background-position: -312px -72px; }
-.icon-forward            { background-position: -336px -72px; }
-.icon-fast-forward       { background-position: -360px -72px; }
-.icon-step-forward       { background-position: -384px -72px; }
-.icon-eject              { background-position: -408px -72px; }
-.icon-chevron-left       { background-position: -432px -72px; }
-.icon-chevron-right      { background-position: -456px -72px; }
-
-.icon-plus-sign          { background-position: 0      -96px; }
-.icon-minus-sign         { background-position: -24px  -96px; }
-.icon-remove-sign        { background-position: -48px  -96px; }
-.icon-ok-sign            { background-position: -72px  -96px; }
-.icon-question-sign      { background-position: -96px  -96px; }
-.icon-info-sign          { background-position: -120px -96px; }
-.icon-screenshot         { background-position: -144px -96px; }
-.icon-remove-circle      { background-position: -168px -96px; }
-.icon-ok-circle          { background-position: -192px -96px; }
-.icon-ban-circle         { background-position: -216px -96px; }
-.icon-arrow-left         { background-position: -240px -96px; }
-.icon-arrow-right        { background-position: -264px -96px; }
-.icon-arrow-up           { background-position: -289px -96px; } // 1px off
-.icon-arrow-down         { background-position: -312px -96px; }
-.icon-share-alt          { background-position: -336px -96px; }
-.icon-resize-full        { background-position: -360px -96px; }
-.icon-resize-small       { background-position: -384px -96px; }
-.icon-plus               { background-position: -408px -96px; }
-.icon-minus              { background-position: -433px -96px; }
-.icon-asterisk           { background-position: -456px -96px; }
-
-.icon-exclamation-sign   { background-position: 0      -120px; }
-.icon-gift               { background-position: -24px  -120px; }
-.icon-leaf               { background-position: -48px  -120px; }
-.icon-fire               { background-position: -72px  -120px; }
-.icon-eye-open           { background-position: -96px  -120px; }
-.icon-eye-close          { background-position: -120px -120px; }
-.icon-warning-sign       { background-position: -144px -120px; }
-.icon-plane              { background-position: -168px -120px; }
-.icon-calendar           { background-position: -192px -120px; }
-.icon-random             { background-position: -216px -120px; width: 16px; }
-.icon-comment            { background-position: -240px -120px; }
-.icon-magnet             { background-position: -264px -120px; }
-.icon-chevron-up         { background-position: -288px -120px; }
-.icon-chevron-down       { background-position: -313px -119px; } // 1px, 1px off
-.icon-retweet            { background-position: -336px -120px; }
-.icon-shopping-cart      { background-position: -360px -120px; }
-.icon-folder-close       { background-position: -384px -120px; width: 16px; }
-.icon-folder-open        { background-position: -408px -120px; width: 16px; }
-.icon-resize-vertical    { background-position: -432px -119px; } // 1px, 1px off
-.icon-resize-horizontal  { background-position: -456px -118px; } // 1px, 2px off
-
-.icon-hdd                     { background-position: 0      -144px; }
-.icon-bullhorn                { background-position: -24px  -144px; }
-.icon-bell                    { background-position: -48px  -144px; }
-.icon-certificate             { background-position: -72px  -144px; }
-.icon-thumbs-up               { background-position: -96px  -144px; }
-.icon-thumbs-down             { background-position: -120px -144px; }
-.icon-hand-right              { background-position: -144px -144px; }
-.icon-hand-left               { background-position: -168px -144px; }
-.icon-hand-up                 { background-position: -192px -144px; }
-.icon-hand-down               { background-position: -216px -144px; }
-.icon-circle-arrow-right      { background-position: -240px -144px; }
-.icon-circle-arrow-left       { background-position: -264px -144px; }
-.icon-circle-arrow-up         { background-position: -288px -144px; }
-.icon-circle-arrow-down       { background-position: -312px -144px; }
-.icon-globe                   { background-position: -336px -144px; }
-.icon-wrench                  { background-position: -360px -144px; }
-.icon-tasks                   { background-position: -384px -144px; }
-.icon-filter                  { background-position: -408px -144px; }
-.icon-briefcase               { background-position: -432px -144px; }
-.icon-fullscreen              { background-position: -456px -144px; }
diff --git a/src/main/webapp/bower_components/bootstrap/less/tables.less b/src/main/webapp/bower_components/bootstrap/less/tables.less
deleted file mode 100644
index 0e35271e..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tables.less
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Tables
-// --------------------------------------------------
-
-
-// BASE TABLES
-// -----------------
-
-table {
-  max-width: 100%;
-  background-color: @tableBackground;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-// BASELINE STYLES
-// ---------------
-
-.table {
-  width: 100%;
-  margin-bottom: @baseLineHeight;
-  // Cells
-  th,
-  td {
-    padding: 8px;
-    line-height: @baseLineHeight;
-    text-align: left;
-    vertical-align: top;
-    border-top: 1px solid @tableBorder;
-  }
-  th {
-    font-weight: bold;
-  }
-  // Bottom align for column headings
-  thead th {
-    vertical-align: bottom;
-  }
-  // Remove top border from thead by default
-  caption + thead tr:first-child th,
-  caption + thead tr:first-child td,
-  colgroup + thead tr:first-child th,
-  colgroup + thead tr:first-child td,
-  thead:first-child tr:first-child th,
-  thead:first-child tr:first-child td {
-    border-top: 0;
-  }
-  // Account for multiple tbody instances
-  tbody + tbody {
-    border-top: 2px solid @tableBorder;
-  }
-
-  // Nesting
-  .table {
-    background-color: @bodyBackground;
-  }
-}
-
-
-
-// CONDENSED TABLE W/ HALF PADDING
-// -------------------------------
-
-.table-condensed {
-  th,
-  td {
-    padding: 4px 5px;
-  }
-}
-
-
-// BORDERED VERSION
-// ----------------
-
-.table-bordered {
-  border: 1px solid @tableBorder;
-  border-collapse: separate; // Done so we can round those corners!
-  *border-collapse: collapse; // IE7 can't round corners anyway
-  border-left: 0;
-  .border-radius(@baseBorderRadius);
-  th,
-  td {
-    border-left: 1px solid @tableBorder;
-  }
-  // Prevent a double border
-  caption + thead tr:first-child th,
-  caption + tbody tr:first-child th,
-  caption + tbody tr:first-child td,
-  colgroup + thead tr:first-child th,
-  colgroup + tbody tr:first-child th,
-  colgroup + tbody tr:first-child td,
-  thead:first-child tr:first-child th,
-  tbody:first-child tr:first-child th,
-  tbody:first-child tr:first-child td {
-    border-top: 0;
-  }
-  // For first th/td in the first row in the first thead or tbody
-  thead:first-child tr:first-child > th:first-child,
-  tbody:first-child tr:first-child > td:first-child,
-  tbody:first-child tr:first-child > th:first-child {
-    .border-top-left-radius(@baseBorderRadius);
-  }
-  // For last th/td in the first row in the first thead or tbody
-  thead:first-child tr:first-child > th:last-child,
-  tbody:first-child tr:first-child > td:last-child,
-  tbody:first-child tr:first-child > th:last-child {
-    .border-top-right-radius(@baseBorderRadius);
-  }
-  // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
-  thead:last-child tr:last-child > th:first-child,
-  tbody:last-child tr:last-child > td:first-child,
-  tbody:last-child tr:last-child > th:first-child,
-  tfoot:last-child tr:last-child > td:first-child,
-  tfoot:last-child tr:last-child > th:first-child {
-    .border-bottom-left-radius(@baseBorderRadius);
-  }
-  // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
-  thead:last-child tr:last-child > th:last-child,
-  tbody:last-child tr:last-child > td:last-child,
-  tbody:last-child tr:last-child > th:last-child,
-  tfoot:last-child tr:last-child > td:last-child,
-  tfoot:last-child tr:last-child > th:last-child {
-    .border-bottom-right-radius(@baseBorderRadius);
-  }
-
-  // Clear border-radius for first and last td in the last row in the last tbody for table with tfoot
-  tfoot + tbody:last-child tr:last-child td:first-child {
-    .border-bottom-left-radius(0);
-  }
-  tfoot + tbody:last-child tr:last-child td:last-child {
-    .border-bottom-right-radius(0);
-  }
-
-  // Special fixes to round the left border on the first td/th
-  caption + thead tr:first-child th:first-child,
-  caption + tbody tr:first-child td:first-child,
-  colgroup + thead tr:first-child th:first-child,
-  colgroup + tbody tr:first-child td:first-child {
-    .border-top-left-radius(@baseBorderRadius);
-  }
-  caption + thead tr:first-child th:last-child,
-  caption + tbody tr:first-child td:last-child,
-  colgroup + thead tr:first-child th:last-child,
-  colgroup + tbody tr:first-child td:last-child {
-    .border-top-right-radius(@baseBorderRadius);
-  }
-
-}
-
-
-
-
-// ZEBRA-STRIPING
-// --------------
-
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-.table-striped {
-  tbody {
-    > tr:nth-child(odd) > td,
-    > tr:nth-child(odd) > th {
-      background-color: @tableBackgroundAccent;
-    }
-  }
-}
-
-
-// HOVER EFFECT
-// ------------
-// Placed here since it has to come after the potential zebra striping
-.table-hover {
-  tbody {
-    tr:hover > td,
-    tr:hover > th {
-      background-color: @tableBackgroundHover;
-    }
-  }
-}
-
-
-// TABLE CELL SIZING
-// -----------------
-
-// Reset default grid behavior
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none; // undo default grid column styles
-  margin-left: 0; // undo default grid column styles
-}
-
-// Change the column widths to account for td/th padding
-.table td,
-.table th {
-  &.span1     { .tableColumns(1); }
-  &.span2     { .tableColumns(2); }
-  &.span3     { .tableColumns(3); }
-  &.span4     { .tableColumns(4); }
-  &.span5     { .tableColumns(5); }
-  &.span6     { .tableColumns(6); }
-  &.span7     { .tableColumns(7); }
-  &.span8     { .tableColumns(8); }
-  &.span9     { .tableColumns(9); }
-  &.span10    { .tableColumns(10); }
-  &.span11    { .tableColumns(11); }
-  &.span12    { .tableColumns(12); }
-}
-
-
-
-// TABLE BACKGROUNDS
-// -----------------
-// Exact selectors below required to override .table-striped
-
-.table tbody tr {
-  &.success > td {
-    background-color: @successBackground;
-  }
-  &.error > td {
-    background-color: @errorBackground;
-  }
-  &.warning > td {
-    background-color: @warningBackground;
-  }
-  &.info > td {
-    background-color: @infoBackground;
-  }
-}
-
-// Hover states for .table-hover
-.table-hover tbody tr {
-  &.success:hover > td {
-    background-color: darken(@successBackground, 5%);
-  }
-  &.error:hover > td {
-    background-color: darken(@errorBackground, 5%);
-  }
-  &.warning:hover > td {
-    background-color: darken(@warningBackground, 5%);
-  }
-  &.info:hover > td {
-    background-color: darken(@infoBackground, 5%);
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/buttons.html b/src/main/webapp/bower_components/bootstrap/less/tests/buttons.html
deleted file mode 100644
index 9b3c2c57..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/buttons.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Buttons &middot; Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 30px;
-        padding-bottom: 30px;
-      }
-    </style>
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container">
-
-      <h2>Dropups</h2>
-      <div class="btn-toolbar">
-        <div class="btn-group dropup">
-          <button class="btn">Dropup</button>
-          <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-primary">Dropup</button>
-          <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-danger">Dropup</button>
-          <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-warning">Dropup</button>
-          <button class="btn btn-warning dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-success">Dropup</button>
-          <button class="btn btn-success dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-info">Dropup</button>
-          <button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-        <div class="btn-group dropup">
-          <button class="btn btn-inverse">Dropup</button>
-          <button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
-          <ul class="dropdown-menu">
-            <li><a href="#">Action</a></li>
-            <li><a href="#">Another action</a></li>
-            <li><a href="#">Something else here</a></li>
-            <li class="divider"></li>
-            <li><a href="#">Separated link</a></li>
-          </ul>
-        </div><!-- /btn-group -->
-      </div><!-- /btn-toolbar -->
-
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.css b/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.css
deleted file mode 100644
index 0f5604ee..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.css
+++ /dev/null
@@ -1,150 +0,0 @@
-/*!
- * Bootstrap CSS Tests
- */
-
-
-/* Remove background image */
-body {
-  background-image: none;
-}
-
-/* Space out subhead */
-.subhead {
-  margin-bottom: 36px;
-}
-/*h4 {
-  margin-bottom: 5px;
-}
-*/
-
-.type-test {
-  margin-bottom: 20px;
-  padding: 0 20px 20px;
-  background: url(../../docs/assets/img/grid-baseline-20px.png);
-}
-.type-test h1,
-.type-test h2,
-.type-test h3,
-.type-test h4,
-.type-test h5,
-.type-test h6 {
-  background-color: rgba(255,0,0,.2);
-}
-
-
-/* colgroup tests */
-.col1 {
-  background-color: rgba(255,0,0,.1);
-}
-.col2 {
-  background-color: rgba(0,255,0,.1);
-}
-.col3 {
-  background-color: rgba(0,0,255,.1);
-}
-
-
-/* Fluid row inputs */
-#rowInputs .row > [class*=span],
-#fluidRowInputs .row-fluid > [class*=span] {
-  background-color: rgba(255,0,0,.1);
-}
-
-
-/* Fluid grid */
-.fluid-grid {
-  margin-bottom: 45px;
-}
-.fluid-grid .row {
-  height: 40px;
-  padding-top: 10px;
-  margin-top: 10px;
-  color: #ddd;
-  text-align: center;
-}
-.fluid-grid .span1 {
-  background-color: #999;
-}
-
-
-/* Gradients */
-
-[class^="gradient-"] {
-  width: 100%;
-  height: 400px;
-  margin: 20px 0;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.gradient-horizontal {
-  background-color: #333333;
-  background-image: -moz-linear-gradient(left, #555555, #333333);
-  background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#555555), to(#333333));
-  background-image: -webkit-linear-gradient(left, #555555, #333333);
-  background-image: -o-linear-gradient(left, #555555, #333333);
-  background-image: linear-gradient(to right, #555555, #333333);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=1);
-}
-
-.gradient-vertical {
-  background-color: #474747;
-  background-image: -moz-linear-gradient(top, #555555, #333333);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333));
-  background-image: -webkit-linear-gradient(top, #555555, #333333);
-  background-image: -o-linear-gradient(top, #555555, #333333);
-  background-image: linear-gradient(to bottom, #555555, #333333);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0);
-}
-
-.gradient-directional {
-  background-color: #333333;
-  background-image: -moz-linear-gradient(45deg, #555555, #333333);
-  background-image: -webkit-linear-gradient(45deg, #555555, #333333);
-  background-image: -o-linear-gradient(45deg, #555555, #333333);
-  background-image: linear-gradient(45deg, #555555, #333333);
-  background-repeat: repeat-x;
-}
-
-.gradient-vertical-three {
-  background-color: #8940a5;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f));
-  background-image: -webkit-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -moz-linear-gradient(top, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -o-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-image: linear-gradient(#00b3ee, #7a43b6 50%, #c3325f);
-  background-repeat: no-repeat;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff00b3ee', endColorstr='#ffc3325f', GradientType=0);
-}
-
-.gradient-radial {
-  background-color: #333333;
-  background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(#555555), to(#333333));
-  background-image: -webkit-radial-gradient(circle, #555555, #333333);
-  background-image: -moz-radial-gradient(circle, #555555, #333333);
-  background-image: -o-radial-gradient(circle, #555555, #333333);
-  background-repeat: no-repeat;
-}
-
-.gradient-striped {
-  background-color: #555555;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  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: -moz-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);
-}
-
-.gradient-horizontal-three {
-  background-color: #00b3ee;
-  background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(#00b3ee), color-stop(50%, #7a43b6), to(#c3325f));
-  background-image: -webkit-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -moz-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: -o-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f);
-  background-image: linear-gradient(to right, #00b3ee, #7a43b6 50%, #c3325f);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00b3ee', endColorstr='#c3325f', GradientType=0);
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.html b/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.html
deleted file mode 100644
index c69688c7..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/css-tests.html
+++ /dev/null
@@ -1,1399 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>CSS Tests · Twitter Bootstrap</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <link href="../../docs/assets/css/docs.css" rel="stylesheet">
-    <link href="../../docs/assets/js/google-code-prettify/prettify.css" rel="stylesheet">
-
-    <!-- CSS just for the tests page -->
-    <link href="css-tests.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-
-  <!-- Navbar
-    ================================================== -->
-    <div class="navbar navbar-inverse navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <a class="brand" href="../../docs/index.html">Bootstrap</a>
-        </div>
-      </div>
-    </div>
-
-
-<!-- Masthead
-================================================== -->
-<header class="jumbotron subhead" id="overview">
-  <div class="container">
-    <h1>CSS Tests</h1>
-    <p class="lead">One stop shop for quick debugging and edge-case tests of CSS.</p>
-  </div>
-</header>
-
-
-<div class="bs-docs-canvas">
-
-  <div class="container">
-
-
-
-<!-- Typography
-================================================== -->
-
-<div class="page-header">
-  <h1>Typography</h1>
-</div>
-
-<div class="row">
-  <div class="span6">
-    <div class="type-test">
-      <h1>h1. Heading 1</h1>
-      <h2>h2. Heading 2</h2>
-      <h3>h3. Heading 3</h3>
-      <h4>h4. Heading 4</h4>
-      <h5>h5. Heading 5</h5>
-      <h6>h6. Heading 6</h6>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-    </div>
-  </div>
-  <div class="span6">
-    <div class="type-test">
-      <h1>h1. Heading 1</h1>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-      <h2>h2. Heading 2</h2>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-      <h3>h3. Heading 3</h3>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-      <h4>h4. Heading 4</h4>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-      <h5>h5. Heading 5</h5>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-      <h6>h6. Heading 6</h6>
-      <p>Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
-    </div>
-  </div>
-</div>
-
-
-
-<!-- Responsive images
-================================================== -->
-
-<div class="page-header">
-  <h1>Responsive images</h1>
-</div>
-
-<div class="row">
-  <div class="span4">
-    <img data-src="holder.js/600x600" height="200">
-  </div>
-  <div class="span4">
-    <img data-src="holder.js/600x600">
-  </div>
-  <div class="span4">
-    <img data-src="holder.js/600x600">
-  </div>
-</div>
-
-<br>
-
-<div class="row">
-  <div class="span4">
-    <img data-src="holder.js/600x900" style="width: 200px;">
-  </div>
-  <div class="span4">
-    <img data-src="holder.js/200x300">
-  </div>
-  <div class="span4">
-    <img data-src="holder.js/600x600">
-  </div>
-</div>
-
-<br><br>
-
-
-
-
-<!-- Fluid grid
-================================================== -->
-
-<div class="page-header">
-  <h1>Fluid grids</h1>
-</div>
-
-<div class="fluid-grid">
-  <div class="row">
-    <div class="span12">12
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span11">11
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span1">1
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span10">10
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span2">2
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span9">9
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span3">3
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span8">8
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span4">4
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span7">7
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span5">5
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="span6">6
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-    <div class="span6">6
-      <div class="row-fluid">
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-        <div class="span1">1</div>
-      </div>
-    </div>
-  </div>
-</div> <!-- fluid grids -->
-
-
-
-<!-- Tables
-================================================== -->
-
-<div class="page-header">
-  <h1>Tables</h1>
-</div>
-
-<div class="row">
-  <div class="span6">
-    <h4>Bordered without thead</h4>
-    <table class="table table-bordered">
-      <tbody>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-      </tbody>
-    </table>
-    <h4>Bordered without thead, with caption</h4>
-    <table class="table table-bordered">
-      <caption>Table caption</caption>
-      <tbody>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-      </tbody>
-    </table>
-    <h4>Bordered without thead, with colgroup</h4>
-    <table class="table table-bordered">
-      <colgroup>
-        <col class="col1">
-        <col class="col2">
-        <col class="col3">
-      </colgroup>
-      <tbody>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-      </tbody>
-      <tfoot>
-        <tr>
-          <td>3</td>
-          <td>6</td>
-          <td>9</td>
-        </tr>
-      </tfoot>
-    </table>
-    <h4>Bordered with thead, with colgroup</h4>
-    <table class="table table-bordered">
-      <colgroup>
-        <col class="col1">
-        <col class="col2">
-        <col class="col3">
-      </colgroup>
-      <thead>
-        <tr>
-          <th>A</th>
-          <th>B</th>
-          <th>C</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-      </tbody>
-      <tfoot>
-        <tr>
-          <td>3</td>
-          <td>6</td>
-          <td>9</td>
-        </tr>
-      </tfoot>
-    </table>
-  </div><!--/span-->
-  <div class="span6">
-    <h4>Bordered with thead and caption</h4>
-    <table class="table table-bordered">
-      <caption>Table caption</caption>
-      <thead>
-        <tr>
-          <th>1</th>
-          <th>2</th>
-          <th>3</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td>2</td>
-          <td>3</td>
-        </tr>
-      </tbody>
-      <tfoot>
-        <tr>
-          <td>3</td>
-          <td>6</td>
-          <td>9</td>
-        </tr>
-      </tfoot>
-    </table>
-    <h4>Bordered with rowspan and colspan</h4>
-    <table class="table table-bordered">
-      <thead>
-        <tr>
-          <th>1</th>
-          <th>2</th>
-          <th>3</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td colspan="2">1 and 2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td rowspan="2">2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td rowspan="2">1</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td colspan="2">2 and 3</td>
-        </tr>
-      </tbody>
-    </table>
-  </div><!--/span-->
-</div><!--/row-->
-
-
-<h4>Grid sizing</h4>
-<div class="row">
-  <div class="span12">
-    <table class="table table-bordered">
-      <thead>
-        <tr>
-          <th class="span3">1</th>
-          <th class="span4">2</th>
-          <th>3</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td colspan="2">1 and 2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td rowspan="2">2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td rowspan="2">1</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td colspan="2">2 and 3</td>
-        </tr>
-      </tbody>
-    </table>
-  </div>
-</div><!--/row-->
-
-<h4>Nesting and striping</h4>
-<table class="table table-bordered table-striped">
-  <thead>
-    <tr>
-      <th>Test</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <td>
-        <table class="table table-bordered table-striped">
-          <thead>
-            <tr>
-              <th>Test</th>
-              <th>Test</th>
-            </tr>
-          </thead>
-          <tbody>
-            <tr>
-              <td>
-                test
-              </td>
-              <td>
-                test
-              </td>
-            </tr>
-            <tr>
-              <td>
-                test
-              </td>
-              <td>
-                test
-              </td>
-            </tr>
-            <tr>
-              <td>
-                test
-              </td>
-              <td>
-                test
-              </td>
-            </tr>
-          </tbody>
-        </table>
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-<h4>Fluid grid sizing</h4>
-<div class="row-fluid">
-  <div class="span12">
-    <table class="table table-bordered">
-      <thead>
-        <tr>
-          <th class="span3">1</th>
-          <th class="span4">2</th>
-          <th>3</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td colspan="2">1 and 2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td>1</td>
-          <td rowspan="2">2</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td rowspan="2">1</td>
-          <td>3</td>
-        </tr>
-        <tr>
-          <td colspan="2">2 and 3</td>
-        </tr>
-      </tbody>
-    </table>
-  </div>
-</div><!--/row-->
-
-
-
-<!-- Forms
-================================================== -->
-
-<div class="page-header">
-  <h1>Forms</h1>
-</div>
-
-<h4>Buttons and button groups</h4>
-<form class="form-inline">
-  <button class="btn btn-success">Save</button>
-  <button class="btn btn-info">Add new</button>
-  <div class="btn-group">
-    <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-      <i class="icon-user"></i> User
-      <span class="caret"></span>
-    </a>
-    <ul class="dropdown-menu">
-      <li><a href="#">Profile</a></li>
-      <li class="divider"></li>
-      <li><a href="#">Sign Out</a></li>
-    </ul>
-  </div>
-</form>
-
-<h4>Horizontal form errors</h4>
-<form class="form-horizontal">
-  <div class="control-group error">
-    <label class="control-label" for="inputError">Radio with error</label>
-    <div class="controls">
-      <label class="radio">
-        <input type="radio" id="inputError"> Oh hai
-      </label>
-      <span class="help-inline">Please correct the error</span>
-    </div>
-  </div>
-</form>
-
-<div class="row">
-  <div class="span4">
-    <h4>Prepend and append on inputs</h4>
-    <form>
-      <div class="controls">
-        <div class="input-prepend">
-          <span class="add-on">@</span>
-          <input class="span2" id="prependedInput" size="16" type="text">
-        </div>
-      </div>
-      <div class="controls">
-        <div class="input-append">
-          <input class="span2" id="prependedInput" size="16" type="text">
-          <span class="add-on">@</span>
-        </div>
-      </div>
-      <div class="controls">
-        <div class="input-prepend input-append">
-          <span class="add-on">$</span>
-          <input class="span2" id="prependedInput" size="16" type="text">
-          <span class="add-on">.00</span>
-        </div>
-      </div>
-    </form>
-  </div><!--/span-->
-  <div class="span4">
-    <h4>Prepend and append with uneditable</h4>
-    <form>
-      <div class="input-prepend">
-        <span class="add-on">$</span>
-        <span class="span2 uneditable-input">Some value here</span>
-      </div>
-      <div class="input-append">
-        <span class="span2 uneditable-input">Some value here</span>
-        <span class="add-on">.00</span>
-      </div>
-      <div class="input-prepend input-append">
-        <span class="add-on">$</span>
-        <span class="span2 uneditable-input">Some value here</span>
-        <span class="add-on">.00</span>
-      </div>
-    </form>
-  </div><!--/span-->
-  <div class="span4">
-    <h4>Prepend with type="submit"</h4>
-    <form class="form-search">
-      <div class="input-append">
-        <input type="text" class="span2 search-query" value="" name="q">
-        <input type="submit" value="Search" class="btn">
-      </div>
-    </form>
-    <div class="input-append">
-      <input type="text" class="span2" value="" name="">
-      <input type="submit" value="Button" class="btn">
-    </div>
-    <div class="input-append">
-      <input type="text" size="16" id="appendedInputButtons" class="span2">
-      <input type="submit" value="Search" class="btn">
-      <button type="button" class="btn">Options</button>
-    </div>
-  </div><!--/span-->
-</div><!--/row-->
-
-<h4>Fluid prepended and appended inputs</h4>
-<div class="row-fluid">
-  <div class="span6">
-    <form>
-      <div class="controls">
-        <div class="input-prepend">
-          <span class="add-on">@</span><input class="span2" id="prependedInput" size="16" type="text">
-        </div>
-      </div>
-      <div class="controls">
-        <div class="input-append">
-          <input class="span2" id="prependedInput" size="16" type="text"><span class="add-on">@</span>
-        </div>
-      </div>
-      <div class="controls">
-        <div class="input-prepend input-append">
-          <span class="add-on">$</span><input class="span2" id="prependedInput" size="16" type="text"><span class="add-on">.00</span>
-        </div>
-      </div>
-    </form>
-  </div>
-</div>
-
-<h4>Fixed row with inputs</h4>
-<p>Inputs should not extend past the light red background, set on their parent, a <code>.span*</code> column.</p>
-
-<div class="rowInputs">
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span1" placeholder="span1">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span2" placeholder="span2">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span3" placeholder="span3">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span4" placeholder="span4">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span5" placeholder="span5">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span6" placeholder="span6">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span7" placeholder="span7">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span8" placeholder="span8">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span9" placeholder="span9">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span10" placeholder="span10">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span11" placeholder="span11">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row">
-    <div class="span12">
-      <input type="text" class="span12" placeholder="span12">
-    </div><!--/span-->
-  </div><!--/row-->
-</div>
-<br>
-
-<h4>Fluid row with inputs</h4>
-<p>Inputs should not extend past the light red background, set on their parent, a <code>.span*</code> column.</p>
-<div id="fluidRowInputs">
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span1" placeholder="span1">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span2" placeholder="span2">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span3" placeholder="span3">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span4" placeholder="span4">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span5" placeholder="span5">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span6" placeholder="span6">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span7" placeholder="span7">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span8" placeholder="span8">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span9" placeholder="span9">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span10" placeholder="span10">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span11" placeholder="span11">
-    </div><!--/span-->
-  </div><!--/row-->
-  <div class="row-fluid">
-    <div class="span12">
-      <input type="text" class="span12" placeholder="span12">
-    </div><!--/span-->
-  </div><!--/row-->
-</div>
-
-<br>
-
-<h4>Inline form in fluid row</h4>
-
-<div class="row-fluid">
-  <div class="span12">
-    <form class="form-inline">
-      <input type="text" class="span3" placeholder="Email">
-      <input type="password" class="span3" placeholder="Password">
-      <label class="checkbox">
-        <input type="checkbox"> Remember me
-      </label>
-      <button type="submit" class="btn">Sign in</button>
-    </form>
-  </div>
-</div>
-
-
-<br>
-
-
-<h4>Fluid textarea at .span12</h4>
-<div class="row-fluid">
-  <div class="span12">
-    <textarea class="span12"></textarea>
-  </div>
-</div>
-
-
-<br>
-
-
-<h4>Selects</h4>
-<form>
-  <select class="span4">
-    <option>Option</option>
-  </select>
-</form>
-
-
-<br>
-
-
-
-
-<!-- Dropdowns
-================================================== -->
-
-<div class="page-header">
-  <h1>Dropdowns</h1>
-</div>
-
-<h4>Dropdown link with hash URL</h4>
-<ul class="nav nav-pills">
-  <li class="active"><a href="#">Link</a></li>
-  <li><a href="#">Example link</a></li>
-  <li class="dropdown">
-    <a class="dropdown-toggle" data-toggle="dropdown" href="#">
-      Dropdown <span class="caret"></span>
-    </a>
-    <ul class="dropdown-menu">
-      <li><a href="#">Action</a></li>
-      <li><a href="#">Another action</a></li>
-      <li><a href="#">Something else here</a></li>
-      <li class="divider"></li>
-      <li><a href="#">Separated link</a></li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Dropdown link with custom URL and data-target</h4>
-<ul class="nav nav-pills">
-  <li class="active"><a href="#">Link</a></li>
-  <li><a href="#">Example link</a></li>
-  <li class="dropdown">
-    <a class="dropdown-toggle" data-toggle="dropdown" data-target="#" href="path/to/page.html">
-      Dropdown <span class="caret"></span>
-    </a>
-    <ul class="dropdown-menu">
-      <li><a href="#">Action</a></li>
-      <li><a href="#">Another action</a></li>
-      <li><a href="#">Something else here</a></li>
-      <li class="divider"></li>
-      <li><a href="#">Separated link</a></li>
-    </ul>
-  </li>
-</ul>
-
-<h4>Dropdown on a button</h4>
-<div style="position: relative;">
-  <button class="btn" type="button" data-toggle="dropdown">Dropdown <span class="caret"></span></button>
-  <ul class="dropdown-menu">
-    <li><a href="#">Action</a></li>
-    <li><a href="#">Another action</a></li>
-    <li><a href="#">Something else here</a></li>
-    <li class="divider"></li>
-    <li><a href="#">Separated link</a></li>
-  </ul>
-</div>
-
-<br>
-
-
-<!-- Thumbnails
-================================================== -->
-
-<div class="page-header">
-  <h1>Thumbnails</h1>
-</div>
-
-<h4>Default thumbnails (no grid sizing)</h4>
-<ul class="thumbnails">
-  <li class="thumbnail">
-    <img data-src="holder.js/260x180" alt="">
-  </li>
-  <li class="thumbnail">
-    <img data-src="holder.js/260x180" alt="">
-  </li>
-  <li class="thumbnail">
-    <img data-src="holder.js/260x180" alt="">
-  </li>
-  <li class="thumbnail">
-    <img data-src="holder.js/260x180" alt="">
-  </li>
-</ul>
-
-<!-- NOT CURRENTLY SUPPORTED
-<h4>Offset thumbnails</h4>
-<ul class="thumbnails">
-  <li class="span3 offset3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-  <li class="span3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-  <li class="span3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-</ul>
--->
-
-<h4>Standard grid sizing</h4>
-<ul class="thumbnails">
-  <li class="span3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-  <li class="span3 offset3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-  <li class="span3">
-    <a href="#" class="thumbnail">
-      <img data-src="holder.js/260x180" alt="">
-    </a>
-  </li>
-</ul>
-
-<h4>Fluid thumbnails</h4>
-<div class="row-fluid">
-  <div class="span8">
-    <ul class="thumbnails">
-      <li class="span4">
-        <a href="#" class="thumbnail">
-          <img data-src="holder.js/260x180" alt="">
-        </a>
-      </li>
-      <li class="span4">
-        <a href="#" class="thumbnail">
-          <img data-src="holder.js/260x180" alt="">
-        </a>
-      </li>
-      <li class="span4">
-        <a href="#" class="thumbnail">
-          <img data-src="holder.js/260x180" alt="">
-        </a>
-      </li>
-    </ul>
-  </div>
-</div>
-
-
-
-<!-- Tabs
-================================================== -->
-
-<div class="page-header">
-  <h1>Tabs</h1>
-</div>
-
-<div class="tabbable tabs-left" style="margin-bottom: 18px;">
-  <ul class="nav nav-tabs">
-    <li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
-    <li><a href="#tab2" data-toggle="tab">Section 2</a></li>
-    <li><a href="#tab3" data-toggle="tab">Section 3</a></li>
-  </ul>
-  <div class="tab-content" style="padding-bottom: 9px; border-bottom: 1px solid #ddd;">
-    <div class="tab-pane active" id="tab1">
-      <p>I'm in Section 1.</p>
-
-      <div class="tabbable" style="background: #f5f5f5; padding: 20px;">
-        <ul class="nav nav-tabs">
-          <li class="active"><a href="#tab1-1" data-toggle="tab">1.1</a></li>
-          <li><a href="#tab1-2" data-toggle="tab">1.2</a></li>
-          <li><a href="#tab1-3" data-toggle="tab">1.3</a></li>
-        </ul>
-        <div class="tab-content" style="padding-bottom: 9px; border-bottom: 1px solid #ddd;">
-          <div class="tab-pane active" id="tab1-1">
-            <p>I'm in Section 1.1.</p>
-          </div>
-          <div class="tab-pane" id="tab1-2">
-            <p>I'm in Section 1.2.</p>
-          </div>
-          <div class="tab-pane" id="tab1-3">
-            <p>I'm in Section 1.3.</p>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="tab-pane" id="tab2">
-      <p>Howdy, I'm in Section 2.</p>
-    </div>
-    <div class="tab-pane" id="tab3">
-      <p>What up girl, this is Section 3.</p>
-    </div>
-  </div>
-</div> <!-- /tabbable -->
-
-<br>
-
-
-<!-- Labels
-================================================== -->
-
-<div class="page-header">
-  <h1>Labels</h1>
-</div>
-
-<div class="row">
-  <div class="span4">
-    <h4>Inline label</h4>
-    <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Maecenas sed diam <span class="label label-warning">Label name</span> eget risus varius blandit sit amet non magna. Fusce <code>.class-name</code> dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
-  </div><!--/span-->
-  <div class="span4">
-    <form class="form-horizontal">
-      <label>Example label</label>
-      <input type="text" placeholder="Input"> <span class="help-inline"><span class="label">Hey!</span> Read this.</span>
-    </form>
-  </div><!--/span-->
-  <div class="span4">
-    <button class="btn">Action <span class="badge">2</span></button>
-    <button class="btn">Action <span class="label">2</span></button>
-  </div><!--/span-->
-</div><!--/row-->
-
-<br>
-
-
-<!-- Button groups
-================================================== -->
-
-<div class="page-header">
-  <h1>Buttons</h1>
-</div>
-
-<table class="table table-bordered">
-  <tbody>
-    <tr>
-      <td>
-        Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
-      </td>
-      <td>
-        <div class="btn-group">
-          <button class="btn">1</button>
-          <button class="btn">2</button>
-          <button class="btn">3</button>
-          <button class="btn">4</button>
-        </div>
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-<h4>Mini buttons: text and icon</h4>
-<div class="btn-group">
-  <button class="btn btn-mini">Button text</button>
-  <button class="btn btn-mini"><i class="icon-cog"></i></button>
-</div>
-
-<br>
-
-
-
-<!-- Responsive utility classes
-================================================== -->
-
-<div class="page-header">
-  <h1>Responsive utility classes</h1>
-</div>
-
-<h4>Visible on...</h4>
-<ul class="responsive-utilities-test visible-on">
-  <li>Phone<span class="visible-phone">✔ Phone</span></li>
-  <li>Tablet<span class="visible-tablet">✔ Tablet</span></li>
-  <li>Desktop<span class="visible-desktop">✔ Desktop</span></li>
-</ul>
-<ul class="responsive-utilities-test visible-on">
-  <li>Phone + Tablet<span class="visible-phone visible-tablet">✔ Phone + Tablet</span></li>
-  <li>Tablet + Desktop<span class="visible-tablet visible-desktop">✔ Tablet + Desktop</span></li>
-  <li>All<span class="visible-phone visible-tablet visible-desktop">✔ All</span></li>
-</ul>
-
-<h4>Hidden on...</h4>
-<ul class="responsive-utilities-test hidden-on">
-  <li>Phone<span class="hidden-phone">✔ Phone</span></li>
-  <li>Tablet<span class="hidden-tablet">✔ Tablet</span></li>
-  <li>Desktop<span class="hidden-desktop">✔ Desktop</span></li>
-</ul>
-<ul class="responsive-utilities-test hidden-on">
-  <li>Phone + Tablet<span class="hidden-phone hidden-tablet">✔ Phone + Tablet</span></li>
-  <li>Tablet + Desktop<span class="hidden-tablet hidden-desktop">✔ Tablet + Desktop</span></li>
-  <li>All<span class="hidden-phone hidden-tablet hidden-desktop">✔ All</span></li>
-</ul>
-
-
-
-<!-- Gradients
-================================================== -->
-
-<div class="page-header">
-  <h1>Gradients</h1>
-</div>
-
-<h4>Horizontal</h4>
-<div class="gradient-horizontal"></div>
-
-<h4>Vertical</h4>
-<div class="gradient-vertical"></div>
-
-<h4>Directional</h4>
-<div class="gradient-directional"></div>
-
-<h4>Three colors</h4>
-<div class="gradient-vertical-three"></div>
-
-<h4>Radial</h4>
-<div class="gradient-radial"></div>
-
-<h4>Striped</h4>
-<div class="gradient-striped"></div>
-
-<h4>Horizontal three colors</h4>
-<div class="gradient-horizontal-three"></div>
-
-
-
-<div class="page-header">
-  <h1>Alerts</h1>
-</div>
-
-<h4>Alert default</h4>
-<div class="alert">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>Alert!</strong> Best check yourself, you're not looking too good.
-</div>
-<div class="alert alert-block">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <p><strong>Alert!</strong> Best check yourself, you're not looking too good.</p>
-</div>
-
-<h4>Success</h4>
-<div class="alert alert-success">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>Success!</strong> Best check yourself, you're not looking too good.
-</div>
-<div class="alert alert-block alert-success">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <p><strong>Success!</strong> Best check yourself, you're not looking too good.</p>
-</div>
-
-<h4>Info</h4>
-<div class="alert alert-info">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>Info!</strong> Best check yourself, you're not looking too good.
-</div>
-<div class="alert alert-block alert-info">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <p><strong>Info!</strong> Best check yourself, you're not looking too good.</p>
-</div>
-
-<h4>Warning</h4>
-<div class="alert ">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>Warning!</strong> Best check yourself, you're not looking too good.
-</div>
-<div class="alert alert-block alert-warning">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <p><strong>Warning!</strong> Best check yourself, you're not looking too good.</p>
-</div>
-
-<h4>Error</h4>
-<div class="alert alert-error">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <strong>Error!</strong> Best check yourself, you're not looking too good.
-</div>
-<div class="alert alert-block alert-error">
-  <button type="button" class="close" data-dismiss="alert">&times;</button>
-  <p><strong>Error!</strong> Best check yourself, you're not looking too good.</p>
-</div>
-
-
-    </div><!-- /container -->
-
-
-
-    <!-- Footer
-    ================================================== -->
-    <footer class="footer">
-      <div class="container">
-        <p class="pull-right"><a href="#">Back to top</a></p>
-        <p>Designed and built with all the love in the world <a href="http://twitter.com/twitter" target="_blank">@twitter</a> by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
-        <p>Code licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>. Documentation licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <p>Icons from <a href="http://glyphicons.com">Glyphicons Free</a>, licensed under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
-        <ul class="footer-links">
-          <li><a href="http://blog.getbootstrap.com">Read the blog</a></li>
-          <li><a href="https://github.com/twitter/bootstrap/issues?state=open">Submit issues</a></li>
-          <li><a href="https://github.com/twitter/bootstrap/wiki">Roadmap and changelog</a></li>
-        </ul>
-      </div>
-    </footer>
-
-</div>
-
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/google-code-prettify/prettify.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-    <script src="../../docs/assets/js/application.js"></script>
-
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/forms-responsive.html b/src/main/webapp/bower_components/bootstrap/less/tests/forms-responsive.html
deleted file mode 100644
index c3e208d0..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/forms-responsive.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 30px;
-        padding-bottom: 30px;
-      }
-    </style>
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <form class="container">
-
-      <div class="page-header">
-        <h1>Fixed grid</h1>
-      </div>
-
-      <h3>Vertical alignment</h3>
-      <input type="text" class="span2" placeholder="span2">
-      <select class="span2"><option>span2</option></select>
-      <span class="uneditable-input span2">span1</span>
-
-      <h3>Width across elements</h3>
-      <div>
-        <input type="text" class="span2" placeholder="span2">
-      </div>
-      <div>
-        <select class="span2"><option>span2</option></select>
-      </div>
-      <div>
-        <span class="uneditable-input span2">span2</span>
-      </div>
-
-
-      <div class="page-header">
-        <h1>Fluid grid</h1>
-      </div>
-
-      <div class="row-fluid">
-        <input type="text" class="span2" placeholder="span2">
-        <select class="span2"><option>span2</option></select>
-        <span class="uneditable-input span2">span1</span>
-      </div>
-
-    </form> <!-- /container -->
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/forms.html b/src/main/webapp/bower_components/bootstrap/less/tests/forms.html
deleted file mode 100644
index a63d728a..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/forms.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 30px;
-        padding-bottom: 30px;
-      }
-    </style>
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="shortcut icon" href="../../docs/assets/ico/favicon.ico">
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-  </head>
-
-  <body>
-
-    <form class="container">
-
-      <div class="page-header">
-        <h1>Form controls</h1>
-      </div>
-
-      <div class="row">
-        <div class="span4">
-
-          <label>Select</label>
-          <select>
-            <option>Select</option>
-            <option>Option 2</option>
-            <option>Option 3</option>
-          </select>
-
-          <hr>
-
-          <label>textarea</label>
-          <textarea>Textarea</textarea>
-
-          <hr>
-
-          <label>text</label>
-          <input type="text" value="Text input">
-
-          <hr>
-
-          <label>password</label>
-          <input type="password" value="Password input">
-
-          <hr>
-
-          <label>checkbox</label>
-          <input type="checkbox" value="">
-
-          <hr>
-
-          <label>radio</label>
-          <input type="radio" value="">
-
-          <hr>
-
-          <label>button</label>
-          <input type="button" value="Button">
-
-          <hr>
-
-          <label>submit</label>
-          <input type="submit" value="Submit">
-
-          <hr>
-
-          <label>reset</label>
-          <input type="reset" value="Reset">
-
-        </div><!-- /span4 -->
-        <div class="span4">
-
-          <label>file</label>
-          <input type="file" value="">
-
-          <hr>
-
-          <label>hidden</label>
-          <input type="hidden" value="hidden">
-
-          <hr>
-
-          <label>image</label>
-          <input type="image" value="">
-
-          <hr>
-
-          <label>datetime</label>
-          <input type="datetime" value="">
-
-          <hr>
-
-          <label>datetime-local</label>
-          <input type="datetime-local" value="">
-
-          <hr>
-
-          <label>date</label>
-          <input type="date" value="">
-
-          <hr>
-
-          <label>month</label>
-          <input type="month" value="">
-
-          <hr>
-
-          <label>time</label>
-          <input type="time" value="">
-
-          <hr>
-
-          <label>week</label>
-          <input type="week" value="">
-
-        </div><!-- /span4 -->
-        <div class="span4">
-
-          <label>number</label>
-          <input type="number" value="">
-
-          <hr>
-
-          <label>range</label>
-          <input type="range" value="">
-
-          <hr>
-
-          <label>email</label>
-          <input type="email" value="">
-
-          <hr>
-
-          <label>url</label>
-          <input type="url" value="">
-
-          <hr>
-
-          <label>search</label>
-          <input type="search" value="">
-
-          <hr>
-
-          <label>tel</label>
-          <input type="tel" value="">
-
-          <hr>
-
-          <label>color</label>
-          <input type="color" value="">
-
-        </div><!-- /span4 -->
-      </div><!-- /row -->
-
-    </form> <!-- /container -->
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/navbar-fixed-top.html b/src/main/webapp/bower_components/bootstrap/less/tests/navbar-fixed-top.html
deleted file mode 100644
index 2d9a7a71..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/navbar-fixed-top.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 60px;
-        padding-bottom: 30px;
-      }
-    </style>
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <!-- Fixed navbar -->
-    <div class="navbar navbar-fixed-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </a>
-          <a class="brand" href="#">Project name</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#about">About</a></li>
-              <li><a href="#contact">Contact</a></li>
-              <li class="dropdown">
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="nav-header">Nav header</li>
-                  <li><a href="#">Separated link</a></li>
-                  <li><a href="#">One more separated link</a></li>
-                </ul>
-              </li>
-            </ul>
-            <ul class="nav pull-right">
-              <li><a href="./navbar.html">Default</a></li>
-              <li><a href="./navbar-static-top.html">Static top</a></li>
-              <li class="active"><a href="./navbar-fixed-top.html">Fixed top</a></li>
-            </ul>
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-
-    <div class="container">
-
-      <!-- Main hero unit for a primary marketing message or call to action -->
-      <div class="hero-unit">
-        <h1>Navbar example</h1>
-        <p>This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
-        <p>
-          <a class="btn btn-large btn-primary" href="../components.html#navbar">View navbar docs &raquo;</a>
-        </p>
-      </div>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/navbar-static-top.html b/src/main/webapp/bower_components/bootstrap/less/tests/navbar-static-top.html
deleted file mode 100644
index 4bead8ec..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/navbar-static-top.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-bottom: 30px;
-      }
-      .hero-unit {
-        margin-top: 20px;
-      }
-    </style>
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <!-- Static navbar -->
-    <div class="navbar navbar-static-top">
-      <div class="navbar-inner">
-        <div class="container">
-          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </a>
-          <a class="brand" href="#">Project name</a>
-          <div class="nav-collapse collapse">
-            <ul class="nav">
-              <li class="active"><a href="#">Home</a></li>
-              <li><a href="#about">About</a></li>
-              <li><a href="#contact">Contact</a></li>
-              <li class="dropdown">
-                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                <ul class="dropdown-menu">
-                  <li><a href="#">Action</a></li>
-                  <li><a href="#">Another action</a></li>
-                  <li><a href="#">Something else here</a></li>
-                  <li class="divider"></li>
-                  <li class="nav-header">Nav header</li>
-                  <li><a href="#">Separated link</a></li>
-                  <li><a href="#">One more separated link</a></li>
-                </ul>
-              </li>
-            </ul>
-          <ul class="nav pull-right">
-            <li><a href="./navbar.html">Default</a></li>
-            <li class="active"><a href="./navbar-static-top.html">Static top</a></li>
-            <li><a href="./navbar-fixed-top.html">Fixed top</a></li>
-          </ul>
-          </div><!--/.nav-collapse -->
-        </div>
-      </div>
-    </div>
-
-
-    <div class="container">
-
-      <!-- Main hero unit for a primary marketing message or call to action -->
-      <div class="hero-unit">
-        <h1>Navbar example</h1>
-        <p>This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
-        <p>
-          <a class="btn btn-large btn-primary" href="../components.html#navbar">View navbar docs &raquo;</a>
-        </p>
-      </div>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/tests/navbar.html b/src/main/webapp/bower_components/bootstrap/less/tests/navbar.html
deleted file mode 100644
index d5ad4784..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tests/navbar.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>Bootstrap, from Twitter</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="../../docs/assets/css/bootstrap.css" rel="stylesheet">
-    <style>
-      body {
-        padding-top: 0;
-        padding-bottom: 30px;
-      }
-      .navbar {
-        margin-top: 20px;
-      }
-    </style>
-    <link href="../../docs/assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <!-- Le fav and touch icons -->
-    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../docs/assets/ico/apple-touch-icon-144-precomposed.png">
-    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../docs/assets/ico/apple-touch-icon-114-precomposed.png">
-      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../docs/assets/ico/apple-touch-icon-72-precomposed.png">
-                    <link rel="apple-touch-icon-precomposed" href="../../docs/assets/ico/apple-touch-icon-57-precomposed.png">
-                                   <link rel="shortcut icon" href="../../docs/assets/ico/favicon.png">
-  </head>
-
-  <body>
-
-    <div class="container">
-
-      <!-- Static navbar -->
-      <div class="navbar">
-        <div class="navbar-inner">
-          <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-              <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="#">Project name</a>
-            <div class="nav-collapse collapse">
-              <ul class="nav">
-                <li class="active"><a href="#">Home</a></li>
-                <li><a href="#about">About</a></li>
-                <li><a href="#contact">Contact</a></li>
-                <li class="dropdown">
-                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
-                  <ul class="dropdown-menu">
-                    <li><a href="#">Action</a></li>
-                    <li><a href="#">Another action</a></li>
-                    <li><a href="#">Something else here</a></li>
-                    <li class="divider"></li>
-                    <li class="nav-header">Nav header</li>
-                    <li><a href="#">Separated link</a></li>
-                    <li><a href="#">One more separated link</a></li>
-                  </ul>
-                </li>
-              </ul>
-              <ul class="nav pull-right">
-                <li class="active"><a href="./navbar.html">Default</a></li>
-                <li><a href="./navbar-static-top.html">Static top</a></li>
-                <li><a href="./navbar-fixed-top.html">Fixed top</a></li>
-              </ul>
-            </div><!--/.nav-collapse -->
-          </div>
-        </div>
-      </div>
-
-      <!-- Main hero unit for a primary marketing message or call to action -->
-      <div class="hero-unit">
-        <h1>Navbar example</h1>
-        <p>This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
-        <p>
-          <a class="btn btn-large btn-primary" href="../components.html#navbar">View navbar docs &raquo;</a>
-        </p>
-      </div>
-
-    </div> <!-- /container -->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="../../docs/assets/js/jquery.js"></script>
-    <script src="../../docs/assets/js/bootstrap-transition.js"></script>
-    <script src="../../docs/assets/js/bootstrap-alert.js"></script>
-    <script src="../../docs/assets/js/bootstrap-modal.js"></script>
-    <script src="../../docs/assets/js/bootstrap-dropdown.js"></script>
-    <script src="../../docs/assets/js/bootstrap-scrollspy.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tab.js"></script>
-    <script src="../../docs/assets/js/bootstrap-tooltip.js"></script>
-    <script src="../../docs/assets/js/bootstrap-popover.js"></script>
-    <script src="../../docs/assets/js/bootstrap-button.js"></script>
-    <script src="../../docs/assets/js/bootstrap-collapse.js"></script>
-    <script src="../../docs/assets/js/bootstrap-carousel.js"></script>
-    <script src="../../docs/assets/js/bootstrap-typeahead.js"></script>
-
-  </body>
-</html>
diff --git a/src/main/webapp/bower_components/bootstrap/less/thumbnails.less b/src/main/webapp/bower_components/bootstrap/less/thumbnails.less
deleted file mode 100644
index 4fd07d25..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/thumbnails.less
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Thumbnails
-// --------------------------------------------------
-
-
-// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
-
-// Make wrapper ul behave like the grid
-.thumbnails {
-  margin-left: -@gridGutterWidth;
-  list-style: none;
-  .clearfix();
-}
-// Fluid rows have no left margin
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-
-// Float li to make thumbnails appear in a row
-.thumbnails > li {
-  float: left; // Explicity set the float since we don't require .span* classes
-  margin-bottom: @baseLineHeight;
-  margin-left: @gridGutterWidth;
-}
-
-// The actual thumbnail (can be `a` or `div`)
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: @baseLineHeight;
-  border: 1px solid #ddd;
-  .border-radius(@baseBorderRadius);
-  .box-shadow(0 1px 3px rgba(0,0,0,.055));
-  .transition(all .2s ease-in-out);
-}
-// Add a hover/focus state for linked versions only
-a.thumbnail:hover,
-a.thumbnail:focus {
-  border-color: @linkColor;
-  .box-shadow(0 1px 4px rgba(0,105,214,.25));
-}
-
-// Images and captions
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-  color: @gray;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/tooltip.less b/src/main/webapp/bower_components/bootstrap/less/tooltip.less
deleted file mode 100644
index 83d5f2bd..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/tooltip.less
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// Tooltips
-// --------------------------------------------------
-
-
-// Base class
-.tooltip {
-  position: absolute;
-  z-index: @zindexTooltip;
-  display: block;
-  visibility: visible;
-  font-size: 11px;
-  line-height: 1.4;
-  .opacity(0);
-  &.in     { .opacity(80); }
-  &.top    { margin-top:  -3px; padding: 5px 0; }
-  &.right  { margin-left:  3px; padding: 0 5px; }
-  &.bottom { margin-top:   3px; padding: 5px 0; }
-  &.left   { margin-left: -3px; padding: 0 5px; }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: @tooltipColor;
-  text-align: center;
-  text-decoration: none;
-  background-color: @tooltipBackground;
-  .border-radius(@baseBorderRadius);
-}
-
-// Arrows
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.tooltip {
-  &.top .tooltip-arrow {
-    bottom: 0;
-    left: 50%;
-    margin-left: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth @tooltipArrowWidth 0;
-    border-top-color: @tooltipArrowColor;
-  }
-  &.right .tooltip-arrow {
-    top: 50%;
-    left: 0;
-    margin-top: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0;
-    border-right-color: @tooltipArrowColor;
-  }
-  &.left .tooltip-arrow {
-    top: 50%;
-    right: 0;
-    margin-top: -@tooltipArrowWidth;
-    border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth;
-    border-left-color: @tooltipArrowColor;
-  }
-  &.bottom .tooltip-arrow {
-    top: 0;
-    left: 50%;
-    margin-left: -@tooltipArrowWidth;
-    border-width: 0 @tooltipArrowWidth @tooltipArrowWidth;
-    border-bottom-color: @tooltipArrowColor;
-  }
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/type.less b/src/main/webapp/bower_components/bootstrap/less/type.less
deleted file mode 100644
index 337138ac..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/type.less
+++ /dev/null
@@ -1,247 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-
-// Body text
-// -------------------------
-
-p {
-  margin: 0 0 @baseLineHeight / 2;
-}
-.lead {
-  margin-bottom: @baseLineHeight;
-  font-size: @baseFontSize * 1.5;
-  font-weight: 200;
-  line-height: @baseLineHeight * 1.5;
-}
-
-
-// Emphasis & misc
-// -------------------------
-
-// Ex: 14px base font * 85% = about 12px
-small   { font-size: 85%; }
-
-strong  { font-weight: bold; }
-em      { font-style: italic; }
-cite    { font-style: normal; }
-
-// Utility classes
-.muted               { color: @grayLight; }
-a.muted:hover,
-a.muted:focus        { color: darken(@grayLight, 10%); }
-
-.text-warning        { color: @warningText; }
-a.text-warning:hover,
-a.text-warning:focus { color: darken(@warningText, 10%); }
-
-.text-error          { color: @errorText; }
-a.text-error:hover,
-a.text-error:focus   { color: darken(@errorText, 10%); }
-
-.text-info           { color: @infoText; }
-a.text-info:hover,
-a.text-info:focus    { color: darken(@infoText, 10%); }
-
-.text-success        { color: @successText; }
-a.text-success:hover,
-a.text-success:focus { color: darken(@successText, 10%); }
-
-.text-left           { text-align: left; }
-.text-right          { text-align: right; }
-.text-center         { text-align: center; }
-
-
-// Headings
-// -------------------------
-
-h1, h2, h3, h4, h5, h6 {
-  margin: (@baseLineHeight / 2) 0;
-  font-family: @headingsFontFamily;
-  font-weight: @headingsFontWeight;
-  line-height: @baseLineHeight;
-  color: @headingsColor;
-  text-rendering: optimizelegibility; // Fix the character spacing for headings
-  small {
-    font-weight: normal;
-    line-height: 1;
-    color: @grayLight;
-  }
-}
-
-h1,
-h2,
-h3 { line-height: @baseLineHeight * 2; }
-
-h1 { font-size: @baseFontSize * 2.75; } // ~38px
-h2 { font-size: @baseFontSize * 2.25; } // ~32px
-h3 { font-size: @baseFontSize * 1.75; } // ~24px
-h4 { font-size: @baseFontSize * 1.25; } // ~18px
-h5 { font-size: @baseFontSize; }
-h6 { font-size: @baseFontSize * 0.85; } // ~12px
-
-h1 small { font-size: @baseFontSize * 1.75; } // ~24px
-h2 small { font-size: @baseFontSize * 1.25; } // ~18px
-h3 small { font-size: @baseFontSize; }
-h4 small { font-size: @baseFontSize; }
-
-
-// Page header
-// -------------------------
-
-.page-header {
-  padding-bottom: (@baseLineHeight / 2) - 1;
-  margin: @baseLineHeight 0 (@baseLineHeight * 1.5);
-  border-bottom: 1px solid @grayLighter;
-}
-
-
-
-// Lists
-// --------------------------------------------------
-
-// Unordered and Ordered lists
-ul, ol {
-  padding: 0;
-  margin: 0 0 @baseLineHeight / 2 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: @baseLineHeight;
-}
-
-// Remove default list styles
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-// Single-line list items
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-  > li {
-    display: inline-block;
-    .ie7-inline-block();
-    padding-left: 5px;
-    padding-right: 5px;
-  }
-}
-
-// Description Lists
-dl {
-  margin-bottom: @baseLineHeight;
-}
-dt,
-dd {
-  line-height: @baseLineHeight;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: @baseLineHeight / 2;
-}
-// Horizontal layout (like forms)
-.dl-horizontal {
-  .clearfix(); // Ensure dl clears floats if empty dd elements present
-  dt {
-    float: left;
-    width: @horizontalComponentOffset - 20;
-    clear: left;
-    text-align: right;
-    .text-overflow();
-  }
-  dd {
-    margin-left: @horizontalComponentOffset;
-  }
-}
-
-// MISC
-// ----
-
-// Horizontal rules
-hr {
-  margin: @baseLineHeight 0;
-  border: 0;
-  border-top: 1px solid @hrBorder;
-  border-bottom: 1px solid @white;
-}
-
-// Abbreviations and acronyms
-abbr[title],
-// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted @grayLight;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-// Blockquotes
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 @baseLineHeight;
-  border-left: 5px solid @grayLighter;
-  p {
-    margin-bottom: 0;
-    font-size: @baseFontSize * 1.25;
-    font-weight: 300;
-    line-height: 1.25;
-  }
-  small {
-    display: block;
-    line-height: @baseLineHeight;
-    color: @grayLight;
-    &:before {
-      content: '\2014 \00A0';
-    }
-  }
-
-  // Float right with text-align: right
-  &.pull-right {
-    float: right;
-    padding-right: 15px;
-    padding-left: 0;
-    border-right: 5px solid @grayLighter;
-    border-left: 0;
-    p,
-    small {
-      text-align: right;
-    }
-    small {
-      &:before {
-        content: '';
-      }
-      &:after {
-        content: '\00A0 \2014';
-      }
-    }
-  }
-}
-
-// Quotes
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-// Addresses
-address {
-  display: block;
-  margin-bottom: @baseLineHeight;
-  font-style: normal;
-  line-height: @baseLineHeight;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/utilities.less b/src/main/webapp/bower_components/bootstrap/less/utilities.less
deleted file mode 100644
index 314b4ffd..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/utilities.less
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Utility classes
-// --------------------------------------------------
-
-
-// Quick floats
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-
-// Toggling content
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-
-// Visibility
-.invisible {
-  visibility: hidden;
-}
-
-// For Affix plugin
-.affix {
-  position: fixed;
-}
diff --git a/src/main/webapp/bower_components/bootstrap/less/variables.less b/src/main/webapp/bower_components/bootstrap/less/variables.less
deleted file mode 100644
index 31c131b1..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/variables.less
+++ /dev/null
@@ -1,301 +0,0 @@
-//
-// Variables
-// --------------------------------------------------
-
-
-// Global values
-// --------------------------------------------------
-
-
-// Grays
-// -------------------------
-@black:                 #000;
-@grayDarker:            #222;
-@grayDark:              #333;
-@gray:                  #555;
-@grayLight:             #999;
-@grayLighter:           #eee;
-@white:                 #fff;
-
-
-// Accent colors
-// -------------------------
-@blue:                  #049cdb;
-@blueDark:              #0064cd;
-@green:                 #46a546;
-@red:                   #9d261d;
-@yellow:                #ffc40d;
-@orange:                #f89406;
-@pink:                  #c3325f;
-@purple:                #7a43b6;
-
-
-// Scaffolding
-// -------------------------
-@bodyBackground:        @white;
-@textColor:             @grayDark;
-
-
-// Links
-// -------------------------
-@linkColor:             #08c;
-@linkColorHover:        darken(@linkColor, 15%);
-
-
-// Typography
-// -------------------------
-@sansFontFamily:        "Helvetica Neue", Helvetica, Arial, sans-serif;
-@serifFontFamily:       Georgia, "Times New Roman", Times, serif;
-@monoFontFamily:        Monaco, Menlo, Consolas, "Courier New", monospace;
-
-@baseFontSize:          14px;
-@baseFontFamily:        @sansFontFamily;
-@baseLineHeight:        20px;
-@altFontFamily:         @serifFontFamily;
-
-@headingsFontFamily:    inherit; // empty to use BS default, @baseFontFamily
-@headingsFontWeight:    bold;    // instead of browser default, bold
-@headingsColor:         inherit; // empty to use BS default, @textColor
-
-
-// Component sizing
-// -------------------------
-// Based on 14px font-size and 20px line-height
-
-@fontSizeLarge:         @baseFontSize * 1.25; // ~18px
-@fontSizeSmall:         @baseFontSize * 0.85; // ~12px
-@fontSizeMini:          @baseFontSize * 0.75; // ~11px
-
-@paddingLarge:          11px 19px; // 44px
-@paddingSmall:          2px 10px;  // 26px
-@paddingMini:           0 6px;   // 22px
-
-@baseBorderRadius:      4px;
-@borderRadiusLarge:     6px;
-@borderRadiusSmall:     3px;
-
-
-// Tables
-// -------------------------
-@tableBackground:                   transparent; // overall background-color
-@tableBackgroundAccent:             #f9f9f9; // for striping
-@tableBackgroundHover:              #f5f5f5; // for hover
-@tableBorder:                       #ddd; // table and cell border
-
-// Buttons
-// -------------------------
-@btnBackground:                     @white;
-@btnBackgroundHighlight:            darken(@white, 10%);
-@btnBorder:                         #ccc;
-
-@btnPrimaryBackground:              @linkColor;
-@btnPrimaryBackgroundHighlight:     spin(@btnPrimaryBackground, 20%);
-
-@btnInfoBackground:                 #5bc0de;
-@btnInfoBackgroundHighlight:        #2f96b4;
-
-@btnSuccessBackground:              #62c462;
-@btnSuccessBackgroundHighlight:     #51a351;
-
-@btnWarningBackground:              lighten(@orange, 15%);
-@btnWarningBackgroundHighlight:     @orange;
-
-@btnDangerBackground:               #ee5f5b;
-@btnDangerBackgroundHighlight:      #bd362f;
-
-@btnInverseBackground:              #444;
-@btnInverseBackgroundHighlight:     @grayDarker;
-
-
-// Forms
-// -------------------------
-@inputBackground:               @white;
-@inputBorder:                   #ccc;
-@inputBorderRadius:             @baseBorderRadius;
-@inputDisabledBackground:       @grayLighter;
-@formActionsBackground:         #f5f5f5;
-@inputHeight:                   @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
-
-
-// Dropdowns
-// -------------------------
-@dropdownBackground:            @white;
-@dropdownBorder:                rgba(0,0,0,.2);
-@dropdownDividerTop:            #e5e5e5;
-@dropdownDividerBottom:         @white;
-
-@dropdownLinkColor:             @grayDark;
-@dropdownLinkColorHover:        @white;
-@dropdownLinkColorActive:       @white;
-
-@dropdownLinkBackgroundActive:  @linkColor;
-@dropdownLinkBackgroundHover:   @dropdownLinkBackgroundActive;
-
-
-
-// COMPONENT VARIABLES
-// --------------------------------------------------
-
-
-// Z-index master list
-// -------------------------
-// Used for a bird's eye view of components dependent on the z-axis
-// Try to avoid customizing these :)
-@zindexDropdown:          1000;
-@zindexPopover:           1010;
-@zindexTooltip:           1030;
-@zindexFixedNavbar:       1030;
-@zindexModalBackdrop:     1040;
-@zindexModal:             1050;
-
-
-// Sprite icons path
-// -------------------------
-@iconSpritePath:          "../img/glyphicons-halflings.png";
-@iconWhiteSpritePath:     "../img/glyphicons-halflings-white.png";
-
-
-// Input placeholder text color
-// -------------------------
-@placeholderText:         @grayLight;
-
-
-// Hr border color
-// -------------------------
-@hrBorder:                @grayLighter;
-
-
-// Horizontal forms & lists
-// -------------------------
-@horizontalComponentOffset:       180px;
-
-
-// Wells
-// -------------------------
-@wellBackground:                  #f5f5f5;
-
-
-// Navbar
-// -------------------------
-@navbarCollapseWidth:             979px;
-@navbarCollapseDesktopWidth:      @navbarCollapseWidth + 1;
-
-@navbarHeight:                    40px;
-@navbarBackgroundHighlight:       #ffffff;
-@navbarBackground:                darken(@navbarBackgroundHighlight, 5%);
-@navbarBorder:                    darken(@navbarBackground, 12%);
-
-@navbarText:                      #777;
-@navbarLinkColor:                 #777;
-@navbarLinkColorHover:            @grayDark;
-@navbarLinkColorActive:           @gray;
-@navbarLinkBackgroundHover:       transparent;
-@navbarLinkBackgroundActive:      darken(@navbarBackground, 5%);
-
-@navbarBrandColor:                @navbarLinkColor;
-
-// Inverted navbar
-@navbarInverseBackground:                #111111;
-@navbarInverseBackgroundHighlight:       #222222;
-@navbarInverseBorder:                    #252525;
-
-@navbarInverseText:                      @grayLight;
-@navbarInverseLinkColor:                 @grayLight;
-@navbarInverseLinkColorHover:            @white;
-@navbarInverseLinkColorActive:           @navbarInverseLinkColorHover;
-@navbarInverseLinkBackgroundHover:       transparent;
-@navbarInverseLinkBackgroundActive:      @navbarInverseBackground;
-
-@navbarInverseSearchBackground:          lighten(@navbarInverseBackground, 25%);
-@navbarInverseSearchBackgroundFocus:     @white;
-@navbarInverseSearchBorder:              @navbarInverseBackground;
-@navbarInverseSearchPlaceholderColor:    #ccc;
-
-@navbarInverseBrandColor:                @navbarInverseLinkColor;
-
-
-// Pagination
-// -------------------------
-@paginationBackground:                #fff;
-@paginationBorder:                    #ddd;
-@paginationActiveBackground:          #f5f5f5;
-
-
-// Hero unit
-// -------------------------
-@heroUnitBackground:              @grayLighter;
-@heroUnitHeadingColor:            inherit;
-@heroUnitLeadColor:               inherit;
-
-
-// Form states and alerts
-// -------------------------
-@warningText:             #c09853;
-@warningBackground:       #fcf8e3;
-@warningBorder:           darken(spin(@warningBackground, -10), 3%);
-
-@errorText:               #b94a48;
-@errorBackground:         #f2dede;
-@errorBorder:             darken(spin(@errorBackground, -10), 3%);
-
-@successText:             #468847;
-@successBackground:       #dff0d8;
-@successBorder:           darken(spin(@successBackground, -10), 5%);
-
-@infoText:                #3a87ad;
-@infoBackground:          #d9edf7;
-@infoBorder:              darken(spin(@infoBackground, -10), 7%);
-
-
-// Tooltips and popovers
-// -------------------------
-@tooltipColor:            #fff;
-@tooltipBackground:       #000;
-@tooltipArrowWidth:       5px;
-@tooltipArrowColor:       @tooltipBackground;
-
-@popoverBackground:       #fff;
-@popoverArrowWidth:       10px;
-@popoverArrowColor:       #fff;
-@popoverTitleBackground:  darken(@popoverBackground, 3%);
-
-// Special enhancement for popovers
-@popoverArrowOuterWidth:  @popoverArrowWidth + 1;
-@popoverArrowOuterColor:  rgba(0,0,0,.25);
-
-
-
-// GRID
-// --------------------------------------------------
-
-
-// Default 940px grid
-// -------------------------
-@gridColumns:             12;
-@gridColumnWidth:         60px;
-@gridGutterWidth:         20px;
-@gridRowWidth:            (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
-
-// 1200px min
-@gridColumnWidth1200:     70px;
-@gridGutterWidth1200:     30px;
-@gridRowWidth1200:        (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
-
-// 768px-979px
-@gridColumnWidth768:      42px;
-@gridGutterWidth768:      20px;
-@gridRowWidth768:         (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
-
-
-// Fluid grid
-// -------------------------
-@fluidGridColumnWidth:    percentage(@gridColumnWidth/@gridRowWidth);
-@fluidGridGutterWidth:    percentage(@gridGutterWidth/@gridRowWidth);
-
-// 1200px min
-@fluidGridColumnWidth1200:     percentage(@gridColumnWidth1200/@gridRowWidth1200);
-@fluidGridGutterWidth1200:     percentage(@gridGutterWidth1200/@gridRowWidth1200);
-
-// 768px-979px
-@fluidGridColumnWidth768:      percentage(@gridColumnWidth768/@gridRowWidth768);
-@fluidGridGutterWidth768:      percentage(@gridGutterWidth768/@gridRowWidth768);
diff --git a/src/main/webapp/bower_components/bootstrap/less/wells.less b/src/main/webapp/bower_components/bootstrap/less/wells.less
deleted file mode 100644
index 84a744b1..00000000
--- a/src/main/webapp/bower_components/bootstrap/less/wells.less
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: @wellBackground;
-  border: 1px solid darken(@wellBackground, 7%);
-  .border-radius(@baseBorderRadius);
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
-  blockquote {
-    border-color: #ddd;
-    border-color: rgba(0,0,0,.15);
-  }
-}
-
-// Sizes
-.well-large {
-  padding: 24px;
-  .border-radius(@borderRadiusLarge);
-}
-.well-small {
-  padding: 9px;
-  .border-radius(@borderRadiusSmall);
-}
diff --git a/src/main/webapp/bower_components/bootstrap/package.json b/src/main/webapp/bower_components/bootstrap/package.json
deleted file mode 100644
index c1108ab1..00000000
--- a/src/main/webapp/bower_components/bootstrap/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "bootstrap"
-  , "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
-  , "version": "2.3.0"
-  , "keywords": ["bootstrap", "css"]
-  , "homepage": "http://twitter.github.com/bootstrap/"
-  , "author": "Twitter Inc."
-  , "scripts": { "test": "make test" }
-  , "repository": {
-      "type": "git"
-    , "url": "https://github.com/twitter/bootstrap.git"
-  }
-  , "licenses": [
-    {
-        "type": "Apache-2.0"
-      , "url": "http://www.apache.org/licenses/LICENSE-2.0"
-    }
-  ]
-  , "devDependencies": {
-      "uglify-js": "1.3.4"
-    , "jshint": "0.9.1"
-    , "recess": "1.1.6"
-    , "connect": "2.1.3"
-    , "hogan.js": "2.0.0"
-  }
-}
diff --git a/src/main/webapp/bower_components/jquery/.bower.json b/src/main/webapp/bower_components/jquery/.bower.json
deleted file mode 100644
index 0fcef941..00000000
--- a/src/main/webapp/bower_components/jquery/.bower.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "name": "jquery",
-  "version": "2.1.3",
-  "main": "dist/jquery.js",
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "build",
-    "speed",
-    "test",
-    "*.md",
-    "AUTHORS.txt",
-    "Gruntfile.js",
-    "package.json"
-  ],
-  "devDependencies": {
-    "sizzle": "2.1.1-jquery.2.1.2",
-    "requirejs": "2.1.10",
-    "qunit": "1.14.0",
-    "sinon": "1.8.1"
-  },
-  "keywords": [
-    "jquery",
-    "javascript",
-    "library"
-  ],
-  "homepage": "https://github.com/jquery/jquery",
-  "_release": "2.1.3",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.1.3",
-    "commit": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0"
-  },
-  "_source": "git://github.com/jquery/jquery.git",
-  "_target": "2.1.3",
-  "_originalSource": "jquery"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/jquery/MIT-LICENSE.txt b/src/main/webapp/bower_components/jquery/MIT-LICENSE.txt
deleted file mode 100644
index cdd31b5c..00000000
--- a/src/main/webapp/bower_components/jquery/MIT-LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2014 jQuery Foundation and other contributors
-http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/main/webapp/bower_components/jquery/bower.json b/src/main/webapp/bower_components/jquery/bower.json
deleted file mode 100644
index 61c94872..00000000
--- a/src/main/webapp/bower_components/jquery/bower.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "jquery",
-  "version": "2.1.3",
-  "main": "dist/jquery.js",
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "build",
-    "speed",
-    "test",
-    "*.md",
-    "AUTHORS.txt",
-    "Gruntfile.js",
-    "package.json"
-  ],
-  "devDependencies": {
-    "sizzle": "2.1.1-jquery.2.1.2",
-    "requirejs": "2.1.10",
-    "qunit": "1.14.0",
-    "sinon": "1.8.1"
-  },
-  "keywords": [
-    "jquery",
-    "javascript",
-    "library"
-  ]
-}
diff --git a/src/main/webapp/bower_components/jquery/dist/jquery.js b/src/main/webapp/bower_components/jquery/dist/jquery.js
deleted file mode 100644
index 79d631ff..00000000
--- a/src/main/webapp/bower_components/jquery/dist/jquery.js
+++ /dev/null
@@ -1,9205 +0,0 @@
-/*!
- * jQuery JavaScript Library v2.1.3
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-12-18T15:11Z
- */
-
-(function( global, factory ) {
-
-	if ( typeof module === "object" && typeof module.exports === "object" ) {
-		// For CommonJS and CommonJS-like environments where a proper `window`
-		// is present, execute the factory and get jQuery.
-		// For environments that do not have a `window` with a `document`
-		// (such as Node.js), expose a factory as module.exports.
-		// This accentuates the need for the creation of a real `window`.
-		// e.g. var jQuery = require("jquery")(window);
-		// See ticket #14549 for more info.
-		module.exports = global.document ?
-			factory( global, true ) :
-			function( w ) {
-				if ( !w.document ) {
-					throw new Error( "jQuery requires a window with a document" );
-				}
-				return factory( w );
-			};
-	} else {
-		factory( global );
-	}
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Support: Firefox 18+
-// Can't be in strict mode, several libs including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-//
-
-var arr = [];
-
-var slice = arr.slice;
-
-var concat = arr.concat;
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var support = {};
-
-
-
-var
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	version = "2.1.3",
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		// Need init if jQuery is called (just allow error to be thrown if not included)
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Support: Android<4.1
-	// Make sure we trim BOM and NBSP
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: version,
-
-	constructor: jQuery,
-
-	// Start with an empty selector
-	selector: "",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return slice.call( this );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num != null ?
-
-			// Return just the one element from the set
-			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
-			// Return all the elements in a clean array
-			slice.call( this );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (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 );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: arr.sort,
-	splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-
-		// Skip the boolean and the target
-		target = arguments[ i ] || {};
-		i++;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// Extend jQuery itself if only one argument is passed
-	if ( i === length ) {
-		target = this;
-		i--;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	// Unique for each copy of jQuery on the page
-	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-	// Assume jQuery is ready without the ready module
-	isReady: true,
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	noop: function() {},
-
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray,
-
-	isWindow: function( obj ) {
-		return obj != null && obj === obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
-		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-		// subtraction forces infinities to NaN
-		// adding 1 corrects loss of precision from parseFloat (#15100)
-		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
-	},
-
-	isPlainObject: function( obj ) {
-		// Not plain objects:
-		// - Any object or value whose internal [[Class]] property is not "[object Object]"
-		// - DOM nodes
-		// - window
-		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		if ( obj.constructor &&
-				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
-			return false;
-		}
-
-		// If the function hasn't returned already, we're confident that
-		// |obj| is a plain object, created by {} or constructed with new Object
-		return true;
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return obj + "";
-		}
-		// Support: Android<4.0, iOS<6 (functionish RegExp)
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	// Evaluates a script in a global context
-	globalEval: function( code ) {
-		var script,
-			indirect = eval;
-
-		code = jQuery.trim( code );
-
-		if ( code ) {
-			// If the code includes a valid, prologue position
-			// strict mode pragma, execute code by injecting a
-			// script tag into the document.
-			if ( code.indexOf("use strict") === 1 ) {
-				script = document.createElement("script");
-				script.text = code;
-				document.head.appendChild( script ).parentNode.removeChild( script );
-			} else {
-			// Otherwise, avoid the DOM node creation, insertion
-			// and removal by using an indirect global eval
-				indirect( code );
-			}
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Support: IE9-11+
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-	},
-
-	// args is for internal usage only
-	each: function( obj, callback, args ) {
-		var value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Support: Android<4.1
-	trim: function( text ) {
-		return text == null ?
-			"" :
-			( text + "" ).replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		return arr == null ? -1 : indexOf.call( arr, elem, i );
-	},
-
-	merge: function( first, second ) {
-		var len = +second.length,
-			j = 0,
-			i = first.length;
-
-		for ( ; j < len; j++ ) {
-			first[ i++ ] = second[ j ];
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, invert ) {
-		var callbackInverse,
-			matches = [],
-			i = 0,
-			length = elems.length,
-			callbackExpect = !invert;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; i < length; i++ ) {
-			callbackInverse = !callback( elems[ i ], i );
-			if ( callbackInverse !== callbackExpect ) {
-				matches.push( elems[ i ] );
-			}
-		}
-
-		return matches;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// Go through the array, translating each of the items to their new values
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		var tmp, args, proxy;
-
-		if ( typeof context === "string" ) {
-			tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		args = slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-		};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	now: Date.now,
-
-	// jQuery.support is not used in Core but other projects attach their
-	// properties to it so it needs to exist.
-	support: support
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( type === "function" || jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v2.2.0-pre
- * http://sizzlejs.com/
- *
- * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-12-16
- */
-(function( window ) {
-
-var i,
-	support,
-	Expr,
-	getText,
-	isXML,
-	tokenize,
-	compile,
-	select,
-	outermostContext,
-	sortInput,
-	hasDuplicate,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + 1 * new Date(),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf as it's faster than native
-	// http://jsperf.com/thor-indexof-vs-for/5
-	indexOf = function( list, elem ) {
-		var i = 0,
-			len = list.length;
-		for ( ; i < len; i++ ) {
-			if ( list[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// 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#" ),
-
-	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
-		// Operator (capture 2)
-		"*([*^$|!~]?=)" + whitespace +
-		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
-		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
-		"*\\]",
-
-	pseudos = ":(" + characterEncoding + ")(?:\\((" +
-		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
-		// 1. quoted (capture 3; capture 4 or capture 5)
-		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
-		// 2. simple (capture 6)
-		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
-		// 3. anything else (capture 2)
-		".*" +
-		")\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rwhitespace = new RegExp( whitespace + "+", "g" ),
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rsibling = /[+~]/,
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox<24
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			high < 0 ?
-				// BMP codepoint
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	},
-
-	// Used for iframes
-	// See setDocument()
-	// Removing the function wrapper causes a "Permission Denied"
-	// error in IE
-	unloadHandler = function() {
-		setDocument();
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-	nodeType = context.nodeType;
-
-	if ( typeof selector !== "string" || !selector ||
-		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
-
-		return results;
-	}
-
-	if ( !seed && documentIsHTML ) {
-
-		// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
-		if ( nodeType !== 11 && (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 (jQuery #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, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = nodeType !== 1 && 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 ( 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 + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key + " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key + " " ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
-	return context && typeof context.getElementsByTagName !== "undefined" && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var hasCompare, parent,
-		doc = node ? node.ownerDocument || node : preferredDoc;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-	parent = doc.defaultView;
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent !== parent.top ) {
-		// IE11 does not have attachEvent, so all must suffer
-		if ( parent.addEventListener ) {
-			parent.addEventListener( "unload", unloadHandler, false );
-		} else if ( parent.attachEvent ) {
-			parent.attachEvent( "onunload", unloadHandler );
-		}
-	}
-
-	/* Support tests
-	---------------------------------------------------------------------- */
-	documentIsHTML = !isXML( doc );
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties
-	// (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Support: IE<9
-	support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
-				var m = context.getElementById( id );
-				// Check parentNode to catch when Blackberry 4.6 returns
-				// nodes that are no longer in the document #6963
-				return m && m.parentNode ? [ m ] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== "undefined" ) {
-				return context.getElementsByTagName( tag );
-
-			// DocumentFragment nodes don't have gEBTN
-			} else if ( support.qsa ) {
-				return context.querySelectorAll( tag );
-			}
-		} :
-
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
-				"<select id='" + expando + "-\f]' msallowcapture=''>" +
-				"<option selected=''></option></select>";
-
-			// Support: IE8, Opera 11-12.16
-			// Nothing should be selected when empty strings follow ^= or $= or *=
-			// The test attribute must be unknown in Opera but "safe" for WinRT
-			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
-			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
-			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
-				rbuggyQSA.push("~=");
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-
-			// Support: Safari 8+, iOS 8+
-			// https://bugs.webkit.org/show_bug.cgi?id=136851
-			// In-page `selector#id sibing-combinator selector` fails
-			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
-				rbuggyQSA.push(".#.+[+~]");
-			}
-		});
-
-		assert(function( div ) {
-			// Support: Windows 8 Native Apps
-			// The type and name attributes are restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "name", "D" );
-
-			// Support: IE8
-			// Enforce case-sensitivity of name attribute
-			if ( div.querySelectorAll("[name=d]").length ) {
-				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-	hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = hasCompare || rnative.test( docElem.contains ) ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = hasCompare ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		// Sort on method existence if only one input has compareDocumentPosition
-		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-		if ( compare ) {
-			return compare;
-		}
-
-		// Calculate position if both inputs belong to the same document
-		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-			a.compareDocumentPosition( b ) :
-
-			// Otherwise we know they are disconnected
-			1;
-
-		// Disconnected nodes
-		if ( compare & 1 ||
-			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-			// Choose the first element that is related to our preferred document
-			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-				return -1;
-			}
-			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-				return 1;
-			}
-
-			// Maintain original order
-			return sortInput ?
-				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
-				0;
-		}
-
-		return compare & 4 ? -1 : 1;
-	} :
-	function( a, b ) {
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Parentless nodes are either documents or disconnected
-		if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch (e) {}
-	}
-
-	return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val !== undefined ?
-		val :
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	// Clear input after sorting to release objects
-	// See https://github.com/jquery/sizzle/pull/225
-	sortInput = null;
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		while ( (node = elem[i++]) ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (jQuery #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[6] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] ) {
-				match[2] = match[4] || match[5] || "";
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					// Don't keep the element (issue #299)
-					input[0] = null;
-					return !results.pop();
-				};
-		}),
-
-		"has": markFunction(function( selector ) {
-			return function( elem ) {
-				return Sizzle( selector, elem ).length > 0;
-			};
-		}),
-
-		"contains": markFunction(function( text ) {
-			text = text.replace( runescape, funescape );
-			return function( elem ) {
-				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
-			//   but not by others (comment: 8; processing instruction: 7; etc.)
-			// nodeType < 6 works because attributes (2) do not appear as children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeType < 6 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-
-				// Support: IE<8
-				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( (tokens = []) );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var oldCache, outerCache,
-				newCache = [ dirruns, doneName ];
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (oldCache = outerCache[ dir ]) &&
-							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
-							// Assign to newCache so results back-propagate to previous elements
-							return (newCache[ 2 ] = oldCache[ 2 ]);
-						} else {
-							// Reuse newcache so results back-propagate to previous elements
-							outerCache[ dir ] = newCache;
-
-							// A match means we're done; a fail means we have to keep checking
-							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
-
-						seed[temp] = !(results[temp] = elem);
-					}
-				}
-			}
-
-		// Add elements to results, through postFinder if defined
-		} else {
-			matcherOut = condense(
-				matcherOut === results ?
-					matcherOut.splice( preexisting, matcherOut.length ) :
-					matcherOut
-			);
-			if ( postFinder ) {
-				postFinder( null, results, matcherOut, xml );
-			} else {
-				push.apply( results, matcherOut );
-			}
-		}
-	});
-}
-
-function matcherFromTokens( tokens ) {
-	var checkContext, matcher, j,
-		len = tokens.length,
-		leadingRelative = Expr.relative[ tokens[0].type ],
-		implicitRelative = leadingRelative || Expr.relative[" "],
-		i = leadingRelative ? 1 : 0,
-
-		// The foundational matcher ensures that elements are reachable from top-level context(s)
-		matchContext = addCombinator( function( elem ) {
-			return elem === checkContext;
-		}, implicitRelative, true ),
-		matchAnyContext = addCombinator( function( elem ) {
-			return indexOf( checkContext, elem ) > -1;
-		}, implicitRelative, true ),
-		matchers = [ function( elem, context, xml ) {
-			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-				(checkContext = context).nodeType ?
-					matchContext( elem, context, xml ) :
-					matchAnyContext( elem, context, xml ) );
-			// Avoid hanging onto element (issue #299)
-			checkContext = null;
-			return ret;
-		} ];
-
-	for ( ; i < len; i++ ) {
-		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-		} else {
-			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-			// Return special upon seeing a positional matcher
-			if ( matcher[ expando ] ) {
-				// Find the next relative operator (if any) for proper handling
-				j = ++i;
-				for ( ; j < len; j++ ) {
-					if ( Expr.relative[ tokens[j].type ] ) {
-						break;
-					}
-				}
-				return setMatcher(
-					i > 1 && elementMatcher( matchers ),
-					i > 1 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	var bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, outermost ) {
-			var elem, j, matcher,
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				setMatched = [],
-				contextBackup = outermostContext,
-				// We must always have either seed elements or outermost context
-				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
-				len = elems.length;
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			// Support: IE<9, Safari
-			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
-			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !match ) {
-			match = tokenize( selector );
-		}
-		i = match.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( match[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
-		// Save selector and tokenization
-		cached.selector = selector;
-	}
-	return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- *  selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- *  selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		compiled = typeof selector === "function" && selector,
-		match = !seed && tokenize( (selector = compiled.selector || selector) );
-
-	results = results || [];
-
-	// Try to minimize operations if there is no seed and 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" &&
-				support.getById && context.nodeType === 9 && documentIsHTML &&
-				Expr.relative[ tokens[1].type ] ) {
-
-			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-			if ( !context ) {
-				return results;
-
-			// Precompiled matchers will still verify ancestry, so step up a level
-			} else if ( compiled ) {
-				context = context.parentNode;
-			}
-
-			selector = selector.slice( tokens.shift().value.length );
-		}
-
-		// Fetch a seed set for right-to-left matching
-		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-		while ( i-- ) {
-			token = tokens[i];
-
-			// Abort if we hit a combinator
-			if ( Expr.relative[ (type = token.type) ] ) {
-				break;
-			}
-			if ( (find = Expr.find[ type ]) ) {
-				// Search, expanding context for leading sibling combinators
-				if ( (seed = find(
-					token.matches[0].replace( runescape, funescape ),
-					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
-				)) ) {
-
-					// If seed is empty or no tokens remain, we can return early
-					tokens.splice( i, 1 );
-					selector = seed.length && toSelector( tokens );
-					if ( !selector ) {
-						push.apply( results, seed );
-						return results;
-					}
-
-					break;
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function if one is not provided
-	// Provide `match` to avoid retokenization if we modified the selector above
-	( compiled || compile( selector, match ) )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector ) && testContext( context.parentNode ) || context
-	);
-	return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome 14-35+
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = "<a href='#'></a>";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = "<input/>";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return elem[ name ] === true ? name.toLowerCase() :
-					(val = elem.getAttributeNode( name )) && val.specified ?
-					val.value :
-				null;
-		}
-	});
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-	if ( jQuery.isFunction( qualifier ) ) {
-		return jQuery.grep( elements, function( elem, i ) {
-			/* jshint -W018 */
-			return !!qualifier.call( elem, i, elem ) !== not;
-		});
-
-	}
-
-	if ( qualifier.nodeType ) {
-		return jQuery.grep( elements, function( elem ) {
-			return ( elem === qualifier ) !== not;
-		});
-
-	}
-
-	if ( typeof qualifier === "string" ) {
-		if ( risSimple.test( qualifier ) ) {
-			return jQuery.filter( qualifier, elements, not );
-		}
-
-		qualifier = jQuery.filter( qualifier, elements );
-	}
-
-	return jQuery.grep( elements, function( elem ) {
-		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
-	});
-}
-
-jQuery.filter = function( expr, elems, not ) {
-	var elem = elems[ 0 ];
-
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return elems.length === 1 && elem.nodeType === 1 ?
-		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-			return elem.nodeType === 1;
-		}));
-};
-
-jQuery.fn.extend({
-	find: function( selector ) {
-		var i,
-			len = this.length,
-			ret = [],
-			self = this;
-
-		if ( typeof selector !== "string" ) {
-			return this.pushStack( jQuery( selector ).filter(function() {
-				for ( i = 0; i < len; i++ ) {
-					if ( jQuery.contains( self[ i ], this ) ) {
-						return true;
-					}
-				}
-			}) );
-		}
-
-		for ( i = 0; i < len; i++ ) {
-			jQuery.find( selector, self[ i ], ret );
-		}
-
-		// Needed because $( selector, context ) becomes $( context ).find( selector )
-		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-		ret.selector = this.selector ? this.selector + " " + selector : selector;
-		return ret;
-	},
-	filter: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], false) );
-	},
-	not: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], true) );
-	},
-	is: function( selector ) {
-		return !!winnow(
-			this,
-
-			// If this is a positional/relative selector, check membership in the returned set
-			// so $("p:first").is("p:last") won't return true for a doc with two "p".
-			typeof selector === "string" && rneedsContext.test( selector ) ?
-				jQuery( selector ) :
-				selector || [],
-			false
-		).length;
-	}
-});
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	init = jQuery.fn.init = function( selector, context ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// Option to run scripts is true for back-compat
-					// Intentionally let the error be thrown if parseHTML is not present
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// HANDLE: $(#id)
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Support: Blackberry 4.6
-					// gEBID returns nodes no longer in the document (#6963)
-					if ( elem && elem.parentNode ) {
-						// Inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return typeof rootjQuery.ready !== "undefined" ?
-				rootjQuery.ready( selector ) :
-				// Execute immediately if ready is not present
-				selector( jQuery );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	};
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-	// Methods guaranteed to produce a unique set when starting from a unique set
-	guaranteedUnique = {
-		children: true,
-		contents: true,
-		next: true,
-		prev: true
-	};
-
-jQuery.extend({
-	dir: function( elem, dir, until ) {
-		var matched = [],
-			truncate = until !== undefined;
-
-		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
-			if ( elem.nodeType === 1 ) {
-				if ( truncate && jQuery( elem ).is( until ) ) {
-					break;
-				}
-				matched.push( elem );
-			}
-		}
-		return matched;
-	},
-
-	sibling: function( n, elem ) {
-		var matched = [];
-
-		for ( ; n; n = n.nextSibling ) {
-			if ( n.nodeType === 1 && n !== elem ) {
-				matched.push( n );
-			}
-		}
-
-		return matched;
-	}
-});
-
-jQuery.fn.extend({
-	has: function( target ) {
-		var targets = jQuery( target, this ),
-			l = targets.length;
-
-		return this.filter(function() {
-			var i = 0;
-			for ( ; i < l; i++ ) {
-				if ( jQuery.contains( this, targets[i] ) ) {
-					return true;
-				}
-			}
-		});
-	},
-
-	closest: function( selectors, context ) {
-		var cur,
-			i = 0,
-			l = this.length,
-			matched = [],
-			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-				jQuery( selectors, context || this.context ) :
-				0;
-
-		for ( ; i < l; i++ ) {
-			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-				// Always skip document fragments
-				if ( cur.nodeType < 11 && (pos ?
-					pos.index(cur) > -1 :
-
-					// Don't pass non-elements to Sizzle
-					cur.nodeType === 1 &&
-						jQuery.find.matchesSelector(cur, selectors)) ) {
-
-					matched.push( cur );
-					break;
-				}
-			}
-		}
-
-		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
-	},
-
-	// Determine the position of an element within the set
-	index: function( elem ) {
-
-		// No argument, return index in parent
-		if ( !elem ) {
-			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
-		}
-
-		// Index in selector
-		if ( typeof elem === "string" ) {
-			return indexOf.call( jQuery( elem ), this[ 0 ] );
-		}
-
-		// Locate the position of the desired element
-		return indexOf.call( this,
-
-			// If it receives a jQuery object, the first element is used
-			elem.jquery ? elem[ 0 ] : elem
-		);
-	},
-
-	add: function( selector, context ) {
-		return this.pushStack(
-			jQuery.unique(
-				jQuery.merge( this.get(), jQuery( selector, context ) )
-			)
-		);
-	},
-
-	addBack: function( selector ) {
-		return this.add( selector == null ?
-			this.prevObject : this.prevObject.filter(selector)
-		);
-	}
-});
-
-function sibling( cur, dir ) {
-	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
-	return cur;
-}
-
-jQuery.each({
-	parent: function( elem ) {
-		var parent = elem.parentNode;
-		return parent && parent.nodeType !== 11 ? parent : null;
-	},
-	parents: function( elem ) {
-		return 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 elem.contentDocument || jQuery.merge( [], elem.childNodes );
-	}
-}, function( name, fn ) {
-	jQuery.fn[ name ] = function( until, selector ) {
-		var matched = jQuery.map( this, fn, until );
-
-		if ( name.slice( -5 ) !== "Until" ) {
-			selector = until;
-		}
-
-		if ( selector && typeof selector === "string" ) {
-			matched = jQuery.filter( selector, matched );
-		}
-
-		if ( this.length > 1 ) {
-			// Remove duplicates
-			if ( !guaranteedUnique[ name ] ) {
-				jQuery.unique( matched );
-			}
-
-			// Reverse order for parents* and prev-derivatives
-			if ( rparentsprev.test( name ) ) {
-				matched.reverse();
-			}
-		}
-
-		return this.pushStack( matched );
-	};
-});
-var rnotwhite = (/\S+/g);
-
-
-
-// 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.match( rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( 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;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				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 ) {
-				if ( list && ( !fired || stack ) ) {
-					args = args || [];
-					args = [ context, args.slice ? args.slice() : args ];
-					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 fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ](function() {
-								var returned = fn && fn.apply( this, arguments );
-								if ( returned && jQuery.isFunction( returned.promise ) ) {
-									returned.promise()
-										.done( newDefer.resolve )
-										.fail( newDefer.reject )
-										.progress( newDefer.notify );
-								} else {
-									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-								}
-							});
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ]
-			deferred[ tuple[0] ] = function() {
-				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-				return this;
-			};
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
-					if ( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-					} else if ( !( --remaining ) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// Add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.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();
-	}
-});
-
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-	// Add the callback
-	jQuery.ready.promise().done( fn );
-
-	return this;
-};
-
-jQuery.extend({
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Remember that the DOM is ready
-		jQuery.isReady = true;
-
-		// If a normal DOM Ready event fired, decrement, and wait if need be
-		if ( wait !== true && --jQuery.readyWait > 0 ) {
-			return;
-		}
-
-		// If there are functions bound, to execute
-		readyList.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.triggerHandler ) {
-			jQuery( document ).triggerHandler( "ready" );
-			jQuery( document ).off( "ready" );
-		}
-	}
-});
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
-	document.removeEventListener( "DOMContentLoaded", completed, false );
-	window.removeEventListener( "load", completed, false );
-	jQuery.ready();
-}
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// 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 );
-
-		} else {
-
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-		}
-	}
-	return readyList.promise( obj );
-};
-
-// Kick off the DOM ready check even if the user does not
-jQuery.ready.promise();
-
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
-	var i = 0,
-		len = elems.length,
-		bulk = key == null;
-
-	// Sets many values
-	if ( jQuery.type( key ) === "object" ) {
-		chainable = true;
-		for ( i in key ) {
-			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-		}
-
-	// Sets one value
-	} else if ( value !== undefined ) {
-		chainable = true;
-
-		if ( !jQuery.isFunction( value ) ) {
-			raw = true;
-		}
-
-		if ( bulk ) {
-			// Bulk operations run against the entire set
-			if ( raw ) {
-				fn.call( elems, value );
-				fn = null;
-
-			// ...except when executing function values
-			} else {
-				bulk = fn;
-				fn = function( elem, key, value ) {
-					return bulk.call( jQuery( elem ), value );
-				};
-			}
-		}
-
-		if ( fn ) {
-			for ( ; i < len; i++ ) {
-				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-			}
-		}
-	}
-
-	return chainable ?
-		elems :
-
-		// Gets
-		bulk ?
-			fn.call( elems ) :
-			len ? fn( elems[0], key ) : emptyGet;
-};
-
-
-/**
- * Determines whether an object can have data
- */
-jQuery.acceptData = function( owner ) {
-	// Accepts only:
-	//  - Node
-	//    - Node.ELEMENT_NODE
-	//    - Node.DOCUMENT_NODE
-	//  - Object
-	//    - Any
-	/* jshint -W018 */
-	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-
-function Data() {
-	// Support: Android<4,
-	// Old WebKit does not have Object.preventExtensions/freeze method,
-	// return new empty object instead with no [[set]] accessor
-	Object.defineProperty( this.cache = {}, 0, {
-		get: function() {
-			return {};
-		}
-	});
-
-	this.expando = jQuery.expando + Data.uid++;
-}
-
-Data.uid = 1;
-Data.accepts = jQuery.acceptData;
-
-Data.prototype = {
-	key: function( owner ) {
-		// We can accept data for non-element nodes in modern browsers,
-		// but we should not, see #8335.
-		// Always return the key for a frozen object.
-		if ( !Data.accepts( owner ) ) {
-			return 0;
-		}
-
-		var descriptor = {},
-			// Check if the owner object already has a cache key
-			unlock = owner[ this.expando ];
-
-		// If not, create one
-		if ( !unlock ) {
-			unlock = Data.uid++;
-
-			// Secure it in a non-enumerable, non-writable property
-			try {
-				descriptor[ this.expando ] = { value: unlock };
-				Object.defineProperties( owner, descriptor );
-
-			// Support: Android<4
-			// Fallback to a less secure definition
-			} catch ( e ) {
-				descriptor[ this.expando ] = unlock;
-				jQuery.extend( owner, descriptor );
-			}
-		}
-
-		// Ensure the cache object
-		if ( !this.cache[ unlock ] ) {
-			this.cache[ unlock ] = {};
-		}
-
-		return unlock;
-	},
-	set: function( owner, data, value ) {
-		var prop,
-			// There may be an unlock assigned to this node,
-			// if there is no entry for this "owner", create one inline
-			// and set the unlock as though an owner entry had always existed
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		// Handle: [ owner, key, value ] args
-		if ( typeof data === "string" ) {
-			cache[ data ] = value;
-
-		// Handle: [ owner, { properties } ] args
-		} else {
-			// Fresh assignments by object are shallow copied
-			if ( jQuery.isEmptyObject( cache ) ) {
-				jQuery.extend( this.cache[ unlock ], data );
-			// Otherwise, copy the properties one-by-one to the cache object
-			} else {
-				for ( prop in data ) {
-					cache[ prop ] = data[ prop ];
-				}
-			}
-		}
-		return cache;
-	},
-	get: function( owner, key ) {
-		// Either a valid cache is found, or will be created.
-		// New caches will be created and the unlock returned,
-		// allowing direct access to the newly created
-		// empty data object. A valid owner object must be provided.
-		var cache = this.cache[ this.key( owner ) ];
-
-		return key === undefined ?
-			cache : cache[ key ];
-	},
-	access: function( owner, key, value ) {
-		var stored;
-		// In cases where either:
-		//
-		//   1. No key was specified
-		//   2. A string key was specified, but no value provided
-		//
-		// Take the "read" path and allow the get method to determine
-		// which value to return, respectively either:
-		//
-		//   1. The entire cache object
-		//   2. The data stored at the key
-		//
-		if ( key === undefined ||
-				((key && typeof key === "string") && value === undefined) ) {
-
-			stored = this.get( owner, key );
-
-			return stored !== undefined ?
-				stored : this.get( owner, jQuery.camelCase(key) );
-		}
-
-		// [*]When the key is not a string, or both a key and value
-		// are specified, set or extend (existing objects) with either:
-		//
-		//   1. An object of properties
-		//   2. A key and value
-		//
-		this.set( owner, key, value );
-
-		// Since the "set" path can have two possible entry points
-		// return the expected data based on which path was taken[*]
-		return value !== undefined ? value : key;
-	},
-	remove: function( owner, key ) {
-		var i, name, camel,
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		if ( key === undefined ) {
-			this.cache[ unlock ] = {};
-
-		} else {
-			// Support array or space separated string of keys
-			if ( jQuery.isArray( key ) ) {
-				// If "name" is an array of keys...
-				// When data is initially created, via ("key", "val") signature,
-				// keys will be converted to camelCase.
-				// Since there is no way to tell _how_ a key was added, remove
-				// both plain key and camelCase key. #12786
-				// This will only penalize the array argument path.
-				name = key.concat( key.map( jQuery.camelCase ) );
-			} else {
-				camel = jQuery.camelCase( key );
-				// Try the string as a key before any manipulation
-				if ( key in cache ) {
-					name = [ key, camel ];
-				} else {
-					// If a key with the spaces exists, use it.
-					// Otherwise, create an array by matching non-whitespace
-					name = camel;
-					name = name in cache ?
-						[ name ] : ( name.match( rnotwhite ) || [] );
-				}
-			}
-
-			i = name.length;
-			while ( i-- ) {
-				delete cache[ name[ i ] ];
-			}
-		}
-	},
-	hasData: function( owner ) {
-		return !jQuery.isEmptyObject(
-			this.cache[ owner[ this.expando ] ] || {}
-		);
-	},
-	discard: function( owner ) {
-		if ( owner[ this.expando ] ) {
-			delete this.cache[ owner[ this.expando ] ];
-		}
-	}
-};
-var data_priv = new Data();
-
-var data_user = new Data();
-
-
-
-//	Implementation Summary
-//
-//	1. Enforce API surface and semantic compatibility with 1.9.x branch
-//	2. Improve the module's maintainability by reducing the storage
-//		paths to a single mechanism.
-//	3. Use the same single mechanism to support "private" and "user" data.
-//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-//	5. Avoid exposing implementation details on user objects (eg. expando properties)
-//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
-
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-function dataAttr( elem, key, data ) {
-	var name;
-
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-		name = "data-" + key.replace( rmultiDash, "-$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
-			data_user.set( elem, key, data );
-		} else {
-			data = undefined;
-		}
-	}
-	return data;
-}
-
-jQuery.extend({
-	hasData: function( elem ) {
-		return data_user.hasData( elem ) || data_priv.hasData( elem );
-	},
-
-	data: function( elem, name, data ) {
-		return data_user.access( elem, name, data );
-	},
-
-	removeData: function( elem, name ) {
-		data_user.remove( elem, name );
-	},
-
-	// TODO: Now that all calls to _data and _removeData have been replaced
-	// with direct calls to data_priv methods, these can be deprecated.
-	_data: function( elem, name, data ) {
-		return data_priv.access( elem, name, data );
-	},
-
-	_removeData: function( elem, name ) {
-		data_priv.remove( elem, name );
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var i, name, data,
-			elem = this[ 0 ],
-			attrs = elem && elem.attributes;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = data_user.get( elem );
-
-				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
-					i = attrs.length;
-					while ( i-- ) {
-
-						// Support: IE11+
-						// The attrs elements can be null (#14894)
-						if ( attrs[ i ] ) {
-							name = attrs[ i ].name;
-							if ( name.indexOf( "data-" ) === 0 ) {
-								name = jQuery.camelCase( name.slice(5) );
-								dataAttr( elem, name, data[ name ] );
-							}
-						}
-					}
-					data_priv.set( elem, "hasDataAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				data_user.set( this, key );
-			});
-		}
-
-		return access( this, function( value ) {
-			var data,
-				camelKey = jQuery.camelCase( key );
-
-			// The calling jQuery object (element matches) is not empty
-			// (and therefore has an element appears at this[ 0 ]) and the
-			// `value` parameter was not undefined. An empty jQuery object
-			// will result in `undefined` for elem = this[ 0 ] which will
-			// throw an exception if an attempt to read a data cache is made.
-			if ( elem && value === undefined ) {
-				// Attempt to get data from the cache
-				// with the key as-is
-				data = data_user.get( elem, key );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to get data from the cache
-				// with the key camelized
-				data = data_user.get( elem, camelKey );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to "discover" the data in
-				// HTML5 custom data-* attrs
-				data = dataAttr( elem, camelKey, undefined );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// We tried really hard, but the data doesn't exist.
-				return;
-			}
-
-			// Set the data...
-			this.each(function() {
-				// First, attempt to store a copy or reference of any
-				// data that might've been store with a camelCased key.
-				var data = data_user.get( this, camelKey );
-
-				// For HTML5 data-* attribute interop, we have to
-				// store property names with dashes in a camelCase form.
-				// This might not apply to all properties...*
-				data_user.set( this, camelKey, value );
-
-				// *... In the case of properties that might _actually_
-				// have dashes, we need to also store a copy of that
-				// unchanged property.
-				if ( key.indexOf("-") !== -1 && data !== undefined ) {
-					data_user.set( this, key, value );
-				}
-			});
-		}, null, value, arguments.length > 1, null, true );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			data_user.remove( this, key );
-		});
-	}
-});
-
-
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		var queue;
-
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			queue = data_priv.get( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !queue || jQuery.isArray( data ) ) {
-					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
-				} else {
-					queue.push( data );
-				}
-			}
-			return queue || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			startLength = queue.length,
-			fn = queue.shift(),
-			hooks = jQuery._queueHooks( elem, type ),
-			next = function() {
-				jQuery.dequeue( elem, type );
-			};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-			startLength--;
-		}
-
-		if ( fn ) {
-
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			// Clear up the last queue stop function
-			delete hooks.stop;
-			fn.call( elem, next, hooks );
-		}
-
-		if ( !startLength && hooks ) {
-			hooks.empty.fire();
-		}
-	},
-
-	// Not public - generate a queueHooks object, or return the current one
-	_queueHooks: function( elem, type ) {
-		var key = type + "queueHooks";
-		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
-			empty: jQuery.Callbacks("once memory").add(function() {
-				data_priv.remove( elem, [ type + "queue", key ] );
-			})
-		});
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				// Ensure a hooks for this queue
-				jQuery._queueHooks( this, type );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, obj ) {
-		var tmp,
-			count = 1,
-			defer = jQuery.Deferred(),
-			elements = this,
-			i = this.length,
-			resolve = function() {
-				if ( !( --count ) ) {
-					defer.resolveWith( elements, [ elements ] );
-				}
-			};
-
-		if ( typeof type !== "string" ) {
-			obj = type;
-			type = undefined;
-		}
-		type = type || "fx";
-
-		while ( i-- ) {
-			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
-			if ( tmp && tmp.empty ) {
-				count++;
-				tmp.empty.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( obj );
-	}
-});
-var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHidden = function( elem, el ) {
-		// isHidden might be called from jQuery#filter function;
-		// in that case, element will be second argument
-		elem = el || elem;
-		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-	};
-
-var rcheckableType = (/^(?:checkbox|radio)$/i);
-
-
-
-(function() {
-	var fragment = document.createDocumentFragment(),
-		div = fragment.appendChild( document.createElement( "div" ) ),
-		input = document.createElement( "input" );
-
-	// Support: Safari<=5.1
-	// Check state lost if the name is set (#11217)
-	// Support: Windows Web Apps (WWA)
-	// `name` and `type` must use .setAttribute for WWA (#14901)
-	input.setAttribute( "type", "radio" );
-	input.setAttribute( "checked", "checked" );
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-
-	// Support: Safari<=5.1, Android<4.2
-	// Older WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Support: IE<=11+
-	// Make sure textarea (and checkbox) defaultValue is properly cloned
-	div.innerHTML = "<textarea>x</textarea>";
-	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-})();
-var strundefined = typeof undefined;
-
-
-
-support.focusinBubbles = "onfocusin" in window;
-
-
-var
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-	return true;
-}
-
-function returnFalse() {
-	return false;
-}
-
-function safeActiveElement() {
-	try {
-		return document.activeElement;
-	} catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	global: {},
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var handleObjIn, eventHandle, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.get( elem );
-
-		// Don't attach events to noData or text/comment nodes (but allow plain objects)
-		if ( !elemData ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		if ( !(events = elemData.events) ) {
-			events = elemData.events = {};
-		}
-		if ( !(eventHandle = elemData.handle) ) {
-			eventHandle = elemData.handle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
-					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
-			};
-		}
-
-		// Handle multiple events separated by a space
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// There *must* be a type, no attaching namespace-only handlers
-			if ( !type ) {
-				continue;
-			}
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: origType,
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			if ( !(handlers = events[ type ]) ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-	},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var j, origCount, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-			handlers = events[ type ] || [];
-			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-			// Remove matching events
-			origCount = j = handlers.length;
-			while ( j-- ) {
-				handleObj = handlers[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					( !handler || handler.guid === handleObj.guid ) &&
-					( !tmp || tmp.test( handleObj.namespace ) ) &&
-					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					handlers.splice( j, 1 );
-
-					if ( handleObj.selector ) {
-						handlers.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( origCount && !handlers.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			delete elemData.handle;
-			data_priv.remove( elem, "events" );
-		}
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-
-		var i, cur, tmp, bubbleType, ontype, handle, special,
-			eventPath = [ elem || document ],
-			type = hasOwn.call( event, "type" ) ? event.type : event,
-			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-		cur = tmp = elem = elem || document;
-
-		// Don't do events on text and comment nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-			return;
-		}
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf(".") >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-		ontype = type.indexOf(":") < 0 && "on" + type;
-
-		// Caller can pass in a jQuery.Event object, Object, or just an event type string
-		event = event[ jQuery.expando ] ?
-			event :
-			new jQuery.Event( type, typeof event === "object" && event );
-
-		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-		event.isTrigger = onlyHandlers ? 2 : 3;
-		event.namespace = namespaces.join(".");
-		event.namespace_re = event.namespace ?
-			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-			null;
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data == null ?
-			[ event ] :
-			jQuery.makeArray( data, [ event ] );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			if ( !rfocusMorph.test( bubbleType + type ) ) {
-				cur = cur.parentNode;
-			}
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push( cur );
-				tmp = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( tmp === (elem.ownerDocument || document) ) {
-				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-			}
-		}
-
-		// Fire handlers on the event path
-		i = 0;
-		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-			event.type = i > 1 ?
-				bubbleType :
-				special.bindType || type;
-
-			// jQuery handler
-			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-
-			// Native handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
-				event.result = handle.apply( cur, data );
-				if ( event.result === false ) {
-					event.preventDefault();
-				}
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the default action, do it now
-		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-				jQuery.acceptData( elem ) ) {
-
-				// Call a native DOM method on the target with the same name name as the event.
-				// Don't do default actions on window, that's where global variables be (#6170)
-				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
-
-					// Don't re-trigger an onFOO event when we call its FOO() method
-					tmp = elem[ ontype ];
-
-					if ( tmp ) {
-						elem[ ontype ] = null;
-					}
-
-					// Prevent re-triggering of the same event, since we already bubbled it above
-					jQuery.event.triggered = type;
-					elem[ type ]();
-					jQuery.event.triggered = undefined;
-
-					if ( tmp ) {
-						elem[ ontype ] = tmp;
-					}
-				}
-			}
-		}
-
-		return event.result;
-	},
-
-	dispatch: function( event ) {
-
-		// Make a writable jQuery.Event from the native event object
-		event = jQuery.event.fix( event );
-
-		var i, j, ret, matched, handleObj,
-			handlerQueue = [],
-			args = slice.call( arguments ),
-			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
-			special = jQuery.event.special[ event.type ] || {};
-
-		// Use the fix-ed jQuery.Event rather than the (read-only) native event
-		args[0] = event;
-		event.delegateTarget = this;
-
-		// Call the preDispatch hook for the mapped type, and let it bail if desired
-		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-			return;
-		}
-
-		// Determine handlers
-		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-		// Run delegates first; they may want to stop propagation beneath us
-		i = 0;
-		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-			event.currentTarget = matched.elem;
-
-			j = 0;
-			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
-				// a subset or equal to those in the bound event (both can have no namespace).
-				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-					event.handleObj = handleObj;
-					event.data = handleObj.data;
-
-					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-							.apply( matched.elem, args );
-
-					if ( ret !== undefined ) {
-						if ( (event.result = ret) === false ) {
-							event.preventDefault();
-							event.stopPropagation();
-						}
-					}
-				}
-			}
-		}
-
-		// Call the postDispatch hook for the mapped type
-		if ( special.postDispatch ) {
-			special.postDispatch.call( this, event );
-		}
-
-		return event.result;
-	},
-
-	handlers: function( event, handlers ) {
-		var i, matches, sel, handleObj,
-			handlerQueue = [],
-			delegateCount = handlers.delegateCount,
-			cur = event.target;
-
-		// Find delegate handlers
-		// Black-hole SVG <use> instance trees (#13180)
-		// Avoid non-left-click bubbling in Firefox (#3861)
-		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-			for ( ; cur !== this; cur = cur.parentNode || this ) {
-
-				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-				if ( cur.disabled !== true || event.type !== "click" ) {
-					matches = [];
-					for ( i = 0; i < delegateCount; i++ ) {
-						handleObj = handlers[ i ];
-
-						// Don't conflict with Object.prototype properties (#13203)
-						sel = handleObj.selector + " ";
-
-						if ( matches[ sel ] === undefined ) {
-							matches[ sel ] = handleObj.needsContext ?
-								jQuery( sel, this ).index( cur ) >= 0 :
-								jQuery.find( sel, this, null, [ cur ] ).length;
-						}
-						if ( matches[ sel ] ) {
-							matches.push( handleObj );
-						}
-					}
-					if ( matches.length ) {
-						handlerQueue.push({ elem: cur, handlers: matches });
-					}
-				}
-			}
-		}
-
-		// Add the remaining (directly-bound) handlers
-		if ( delegateCount < handlers.length ) {
-			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-		}
-
-		return handlerQueue;
-	},
-
-	// Includes some event props shared by KeyEvent and MouseEvent
-	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
-	fixHooks: {},
-
-	keyHooks: {
-		props: "char charCode key keyCode".split(" "),
-		filter: function( event, original ) {
-
-			// Add which for key events
-			if ( event.which == null ) {
-				event.which = original.charCode != null ? original.charCode : original.keyCode;
-			}
-
-			return event;
-		}
-	},
-
-	mouseHooks: {
-		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-		filter: function( event, original ) {
-			var eventDoc, doc, body,
-				button = original.button;
-
-			// Calculate pageX/Y if missing and clientX/Y available
-			if ( event.pageX == null && original.clientX != null ) {
-				eventDoc = event.target.ownerDocument || document;
-				doc = eventDoc.documentElement;
-				body = eventDoc.body;
-
-				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-			}
-
-			// Add which for click: 1 === left; 2 === middle; 3 === right
-			// Note: button is not normalized, so don't use it
-			if ( !event.which && button !== undefined ) {
-				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-			}
-
-			return event;
-		}
-	},
-
-	fix: function( event ) {
-		if ( event[ jQuery.expando ] ) {
-			return event;
-		}
-
-		// Create a writable copy of the event object and normalize some properties
-		var i, prop, copy,
-			type = event.type,
-			originalEvent = event,
-			fixHook = this.fixHooks[ type ];
-
-		if ( !fixHook ) {
-			this.fixHooks[ type ] = fixHook =
-				rmouseEvent.test( type ) ? this.mouseHooks :
-				rkeyEvent.test( type ) ? this.keyHooks :
-				{};
-		}
-		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-		event = new jQuery.Event( originalEvent );
-
-		i = copy.length;
-		while ( i-- ) {
-			prop = copy[ i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Support: Cordova 2.5 (WebKit) (#13255)
-		// All events should have a target; Cordova deviceready doesn't
-		if ( !event.target ) {
-			event.target = document;
-		}
-
-		// Support: Safari 6.0+, Chrome<28
-		// Target should not be a text node (#504, #13143)
-		if ( event.target.nodeType === 3 ) {
-			event.target = event.target.parentNode;
-		}
-
-		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-	},
-
-	special: {
-		load: {
-			// Prevent triggered image.load events from bubbling to window.load
-			noBubble: true
-		},
-		focus: {
-			// Fire native event if possible so blur/focus sequence is correct
-			trigger: function() {
-				if ( this !== safeActiveElement() && this.focus ) {
-					this.focus();
-					return false;
-				}
-			},
-			delegateType: "focusin"
-		},
-		blur: {
-			trigger: function() {
-				if ( this === safeActiveElement() && this.blur ) {
-					this.blur();
-					return false;
-				}
-			},
-			delegateType: "focusout"
-		},
-		click: {
-			// For checkbox, fire native event so checked state will be right
-			trigger: function() {
-				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
-					this.click();
-					return false;
-				}
-			},
-
-			// For cross-browser consistency, don't fire native .click() on links
-			_default: function( event ) {
-				return jQuery.nodeName( event.target, "a" );
-			}
-		},
-
-		beforeunload: {
-			postDispatch: function( event ) {
-
-				// Support: Firefox 20+
-				// Firefox doesn't alert if the returnValue field is not set.
-				if ( event.result !== undefined && event.originalEvent ) {
-					event.originalEvent.returnValue = event.result;
-				}
-			}
-		}
-	},
-
-	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();
-		}
-	}
-};
-
-jQuery.removeEvent = function( elem, type, handle ) {
-	if ( elem.removeEventListener ) {
-		elem.removeEventListener( type, handle, false );
-	}
-};
-
-jQuery.Event = function( src, props ) {
-	// Allow instantiation without the 'new' keyword
-	if ( !(this instanceof jQuery.Event) ) {
-		return new jQuery.Event( src, props );
-	}
-
-	// Event object
-	if ( src && src.type ) {
-		this.originalEvent = src;
-		this.type = src.type;
-
-		// Events bubbling up the document may have been marked as prevented
-		// by a handler lower down the tree; reflect the correct value.
-		this.isDefaultPrevented = src.defaultPrevented ||
-				src.defaultPrevented === undefined &&
-				// Support: Android<4.0
-				src.returnValue === false ?
-			returnTrue :
-			returnFalse;
-
-	// Event type
-	} else {
-		this.type = src;
-	}
-
-	// Put explicitly provided properties onto the event object
-	if ( props ) {
-		jQuery.extend( this, props );
-	}
-
-	// Create a timestamp if incoming event doesn't have one
-	this.timeStamp = src && src.timeStamp || jQuery.now();
-
-	// Mark it as fixed
-	this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse,
-
-	preventDefault: function() {
-		var e = this.originalEvent;
-
-		this.isDefaultPrevented = returnTrue;
-
-		if ( e && e.preventDefault ) {
-			e.preventDefault();
-		}
-	},
-	stopPropagation: function() {
-		var e = this.originalEvent;
-
-		this.isPropagationStopped = returnTrue;
-
-		if ( e && e.stopPropagation ) {
-			e.stopPropagation();
-		}
-	},
-	stopImmediatePropagation: function() {
-		var e = this.originalEvent;
-
-		this.isImmediatePropagationStopped = returnTrue;
-
-		if ( e && e.stopImmediatePropagation ) {
-			e.stopImmediatePropagation();
-		}
-
-		this.stopPropagation();
-	}
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-// Support: Chrome 15+
-jQuery.each({
-	mouseenter: "mouseover",
-	mouseleave: "mouseout",
-	pointerenter: "pointerover",
-	pointerleave: "pointerout"
-}, function( orig, fix ) {
-	jQuery.event.special[ orig ] = {
-		delegateType: fix,
-		bindType: fix,
-
-		handle: function( event ) {
-			var ret,
-				target = this,
-				related = event.relatedTarget,
-				handleObj = event.handleObj;
-
-			// For 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;
-		}
-	};
-});
-
-// Support: Firefox, Chrome, Safari
-// Create "bubbling" focus and blur events
-if ( !support.focusinBubbles ) {
-	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-		// Attach a single capturing handler on the document while someone wants focusin/focusout
-		var handler = function( event ) {
-				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-			};
-
-		jQuery.event.special[ fix ] = {
-			setup: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix );
-
-				if ( !attaches ) {
-					doc.addEventListener( orig, handler, true );
-				}
-				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
-			},
-			teardown: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix ) - 1;
-
-				if ( !attaches ) {
-					doc.removeEventListener( orig, handler, true );
-					data_priv.remove( doc, fix );
-
-				} else {
-					data_priv.access( doc, fix, attaches );
-				}
-			}
-		};
-	});
-}
-
-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" ) {
-				// ( 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 );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function() {
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-	triggerHandler: function( type, data ) {
-		var elem = this[0];
-		if ( elem ) {
-			return jQuery.event.trigger( type, data, elem, true );
-		}
-	}
-});
-
-
-var
-	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-	rtagName = /<([\w:]+)/,
-	rhtml = /<|&#?\w+;/,
-	rnoInnerhtml = /<(?:script|style|link)/i,
-	// checked="checked" or checked
-	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-	rscriptType = /^$|\/(?:java|ecma)script/i,
-	rscriptTypeMasked = /^true\/(.*)/,
-	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-	// We have to close these tags to support XHTML (#13200)
-	wrapMap = {
-
-		// Support: IE9
-		option: [ 1, "<select multiple='multiple'>", "</select>" ],
-
-		thead: [ 1, "<table>", "</table>" ],
-		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
-		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
-		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
-		_default: [ 0, "", "" ]
-	};
-
-// Support: IE9
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// Support: 1.x compatibility
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-	return jQuery.nodeName( elem, "table" ) &&
-		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
-		elem.getElementsByTagName("tbody")[0] ||
-			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-		elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
-	return elem;
-}
-function restoreScript( elem ) {
-	var match = rscriptTypeMasked.exec( elem.type );
-
-	if ( match ) {
-		elem.type = match[ 1 ];
-	} else {
-		elem.removeAttribute("type");
-	}
-
-	return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-	var i = 0,
-		l = elems.length;
-
-	for ( ; i < l; i++ ) {
-		data_priv.set(
-			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
-		);
-	}
-}
-
-function cloneCopyEvent( src, dest ) {
-	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
-
-	if ( dest.nodeType !== 1 ) {
-		return;
-	}
-
-	// 1. Copy private data: events, handlers, etc.
-	if ( data_priv.hasData( src ) ) {
-		pdataOld = data_priv.access( src );
-		pdataCur = data_priv.set( dest, pdataOld );
-		events = pdataOld.events;
-
-		if ( events ) {
-			delete pdataCur.handle;
-			pdataCur.events = {};
-
-			for ( type in events ) {
-				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-					jQuery.event.add( dest, type, events[ type ][ i ] );
-				}
-			}
-		}
-	}
-
-	// 2. Copy user data
-	if ( data_user.hasData( src ) ) {
-		udataOld = data_user.access( src );
-		udataCur = jQuery.extend( {}, udataOld );
-
-		data_user.set( dest, udataCur );
-	}
-}
-
-function getAll( context, tag ) {
-	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
-			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
-			[];
-
-	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-		jQuery.merge( [ context ], ret ) :
-		ret;
-}
-
-// Fix IE bugs, see support tests
-function fixInput( src, dest ) {
-	var nodeName = dest.nodeName.toLowerCase();
-
-	// Fails to persist the checked state of a cloned checkbox or radio button.
-	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
-		dest.checked = src.checked;
-
-	// Fails to return the selected option to the default selected state when cloning options
-	} else if ( nodeName === "input" || nodeName === "textarea" ) {
-		dest.defaultValue = src.defaultValue;
-	}
-}
-
-jQuery.extend({
-	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-		var i, l, srcElements, destElements,
-			clone = elem.cloneNode( true ),
-			inPage = jQuery.contains( elem.ownerDocument, elem );
-
-		// Fix IE cloning issues
-		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
-				!jQuery.isXMLDoc( elem ) ) {
-
-			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-			destElements = getAll( clone );
-			srcElements = getAll( elem );
-
-			for ( i = 0, l = srcElements.length; i < l; i++ ) {
-				fixInput( srcElements[ i ], destElements[ i ] );
-			}
-		}
-
-		// Copy the events from the original to the clone
-		if ( dataAndEvents ) {
-			if ( deepDataAndEvents ) {
-				srcElements = srcElements || getAll( elem );
-				destElements = destElements || getAll( clone );
-
-				for ( i = 0, l = srcElements.length; i < l; i++ ) {
-					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
-				}
-			} else {
-				cloneCopyEvent( elem, clone );
-			}
-		}
-
-		// Preserve script evaluation history
-		destElements = getAll( clone, "script" );
-		if ( destElements.length > 0 ) {
-			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-		}
-
-		// Return the cloned set
-		return clone;
-	},
-
-	buildFragment: function( elems, context, scripts, selection ) {
-		var elem, tmp, tag, wrap, contains, j,
-			fragment = context.createDocumentFragment(),
-			nodes = [],
-			i = 0,
-			l = elems.length;
-
-		for ( ; i < l; i++ ) {
-			elem = elems[ i ];
-
-			if ( elem || elem === 0 ) {
-
-				// Add nodes directly
-				if ( jQuery.type( elem ) === "object" ) {
-					// Support: QtWebKit, PhantomJS
-					// push.apply(_, arraylike) throws on ancient WebKit
-					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-				// Convert non-html into a text node
-				} else if ( !rhtml.test( elem ) ) {
-					nodes.push( context.createTextNode( elem ) );
-
-				// Convert html into DOM nodes
-				} else {
-					tmp = tmp || fragment.appendChild( context.createElement("div") );
-
-					// Deserialize a standard representation
-					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
-					wrap = wrapMap[ tag ] || wrapMap._default;
-					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
-
-					// Descend through wrappers to the right content
-					j = wrap[ 0 ];
-					while ( j-- ) {
-						tmp = tmp.lastChild;
-					}
-
-					// Support: QtWebKit, PhantomJS
-					// push.apply(_, arraylike) throws on ancient WebKit
-					jQuery.merge( nodes, tmp.childNodes );
-
-					// Remember the top-level container
-					tmp = fragment.firstChild;
-
-					// Ensure the created nodes are orphaned (#12392)
-					tmp.textContent = "";
-				}
-			}
-		}
-
-		// Remove wrapper from fragment
-		fragment.textContent = "";
-
-		i = 0;
-		while ( (elem = nodes[ i++ ]) ) {
-
-			// #4087 - If origin and destination elements are the same, and this is
-			// that element, do not do anything
-			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-				continue;
-			}
-
-			contains = jQuery.contains( elem.ownerDocument, elem );
-
-			// Append to fragment
-			tmp = getAll( fragment.appendChild( elem ), "script" );
-
-			// Preserve script evaluation history
-			if ( contains ) {
-				setGlobalEval( tmp );
-			}
-
-			// Capture executables
-			if ( scripts ) {
-				j = 0;
-				while ( (elem = tmp[ j++ ]) ) {
-					if ( rscriptType.test( elem.type || "" ) ) {
-						scripts.push( elem );
-					}
-				}
-			}
-		}
-
-		return fragment;
-	},
-
-	cleanData: function( elems ) {
-		var data, elem, type, key,
-			special = jQuery.event.special,
-			i = 0;
-
-		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
-			if ( jQuery.acceptData( elem ) ) {
-				key = elem[ data_priv.expando ];
-
-				if ( key && (data = data_priv.cache[ key ]) ) {
-					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 );
-							}
-						}
-					}
-					if ( data_priv.cache[ key ] ) {
-						// Discard any remaining `private` data
-						delete data_priv.cache[ key ];
-					}
-				}
-			}
-			// Discard any remaining `user` data
-			delete data_user.cache[ elem[ data_user.expando ] ];
-		}
-	}
-});
-
-jQuery.fn.extend({
-	text: function( value ) {
-		return access( this, function( value ) {
-			return value === undefined ?
-				jQuery.text( this ) :
-				this.empty().each(function() {
-					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-						this.textContent = value;
-					}
-				});
-		}, null, value, arguments.length );
-	},
-
-	append: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.appendChild( elem );
-			}
-		});
-	},
-
-	prepend: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.insertBefore( elem, target.firstChild );
-			}
-		});
-	},
-
-	before: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this );
-			}
-		});
-	},
-
-	after: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this.nextSibling );
-			}
-		});
-	},
-
-	remove: function( selector, keepData /* Internal Use Only */ ) {
-		var elem,
-			elems = selector ? jQuery.filter( selector, this ) : this,
-			i = 0;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-			if ( !keepData && elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem ) );
-			}
-
-			if ( elem.parentNode ) {
-				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-					setGlobalEval( getAll( elem, "script" ) );
-				}
-				elem.parentNode.removeChild( elem );
-			}
-		}
-
-		return this;
-	},
-
-	empty: function() {
-		var elem,
-			i = 0;
-
-		for ( ; (elem = this[i]) != null; i++ ) {
-			if ( elem.nodeType === 1 ) {
-
-				// Prevent memory leaks
-				jQuery.cleanData( getAll( elem, false ) );
-
-				// Remove any remaining nodes
-				elem.textContent = "";
-			}
-		}
-
-		return this;
-	},
-
-	clone: function( dataAndEvents, deepDataAndEvents ) {
-		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-		return this.map(function() {
-			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-		});
-	},
-
-	html: function( value ) {
-		return access( this, function( value ) {
-			var elem = this[ 0 ] || {},
-				i = 0,
-				l = this.length;
-
-			if ( value === undefined && elem.nodeType === 1 ) {
-				return elem.innerHTML;
-			}
-
-			// See if we can take a shortcut and just use innerHTML
-			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
-
-				value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-				try {
-					for ( ; i < l; i++ ) {
-						elem = this[ i ] || {};
-
-						// Remove element nodes and prevent memory leaks
-						if ( elem.nodeType === 1 ) {
-							jQuery.cleanData( getAll( elem, false ) );
-							elem.innerHTML = value;
-						}
-					}
-
-					elem = 0;
-
-				// If using innerHTML throws an exception, use the fallback method
-				} catch( e ) {}
-			}
-
-			if ( elem ) {
-				this.empty().append( value );
-			}
-		}, null, value, arguments.length );
-	},
-
-	replaceWith: function() {
-		var arg = arguments[ 0 ];
-
-		// Make the changes, replacing each context element with the new content
-		this.domManip( arguments, function( elem ) {
-			arg = this.parentNode;
-
-			jQuery.cleanData( getAll( this ) );
-
-			if ( arg ) {
-				arg.replaceChild( elem, this );
-			}
-		});
-
-		// Force removal if there was no new content (e.g., from empty arguments)
-		return arg && (arg.length || arg.nodeType) ? this : this.remove();
-	},
-
-	detach: function( selector ) {
-		return this.remove( selector, true );
-	},
-
-	domManip: function( args, callback ) {
-
-		// Flatten any nested arrays
-		args = concat.apply( [], args );
-
-		var fragment, first, scripts, hasScripts, node, doc,
-			i = 0,
-			l = this.length,
-			set = this,
-			iNoClone = l - 1,
-			value = args[ 0 ],
-			isFunction = jQuery.isFunction( value );
-
-		// We can't cloneNode fragments that contain checked, in WebKit
-		if ( isFunction ||
-				( l > 1 && typeof value === "string" &&
-					!support.checkClone && rchecked.test( value ) ) ) {
-			return this.each(function( index ) {
-				var self = set.eq( index );
-				if ( isFunction ) {
-					args[ 0 ] = value.call( this, index, self.html() );
-				}
-				self.domManip( args, callback );
-			});
-		}
-
-		if ( l ) {
-			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
-			first = fragment.firstChild;
-
-			if ( fragment.childNodes.length === 1 ) {
-				fragment = first;
-			}
-
-			if ( first ) {
-				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-				hasScripts = scripts.length;
-
-				// Use the original fragment for the last item instead of the first because it can end up
-				// being emptied incorrectly in certain situations (#8070).
-				for ( ; i < l; i++ ) {
-					node = fragment;
-
-					if ( i !== iNoClone ) {
-						node = jQuery.clone( node, true, true );
-
-						// Keep references to cloned scripts for later restoration
-						if ( hasScripts ) {
-							// Support: QtWebKit
-							// jQuery.merge because push.apply(_, arraylike) throws
-							jQuery.merge( scripts, getAll( node, "script" ) );
-						}
-					}
-
-					callback.call( this[ i ], node, i );
-				}
-
-				if ( hasScripts ) {
-					doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-					// Reenable scripts
-					jQuery.map( scripts, restoreScript );
-
-					// Evaluate executable scripts on first document insertion
-					for ( i = 0; i < hasScripts; i++ ) {
-						node = scripts[ i ];
-						if ( rscriptType.test( node.type || "" ) &&
-							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-							if ( node.src ) {
-								// Optional AJAX dependency, but won't run scripts if not present
-								if ( jQuery._evalUrl ) {
-									jQuery._evalUrl( node.src );
-								}
-							} else {
-								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return this;
-	}
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function( name, original ) {
-	jQuery.fn[ name ] = function( selector ) {
-		var elems,
-			ret = [],
-			insert = jQuery( selector ),
-			last = insert.length - 1,
-			i = 0;
-
-		for ( ; i <= last; i++ ) {
-			elems = i === last ? this : this.clone( true );
-			jQuery( insert[ i ] )[ original ]( elems );
-
-			// Support: QtWebKit
-			// .get() because push.apply(_, arraylike) throws
-			push.apply( ret, elems.get() );
-		}
-
-		return this.pushStack( ret );
-	};
-});
-
-
-var iframe,
-	elemdisplay = {};
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
-	var style,
-		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
-		// getDefaultComputedStyle might be reliably used only on attached element
-		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
-
-			// Use of this method is a temporary fix (more like optimization) until something better comes along,
-			// since it was removed from specification and supported only in FF
-			style.display : jQuery.css( elem[ 0 ], "display" );
-
-	// We don't have any data stored on the element,
-	// so use "detach" method as fast way to get rid of the element
-	elem.detach();
-
-	return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
-	var doc = document,
-		display = elemdisplay[ nodeName ];
-
-	if ( !display ) {
-		display = actualDisplay( nodeName, doc );
-
-		// If the simple way fails, read from inside an iframe
-		if ( display === "none" || !display ) {
-
-			// Use the already-created iframe if possible
-			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
-
-			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-			doc = iframe[ 0 ].contentDocument;
-
-			// Support: IE
-			doc.write();
-			doc.close();
-
-			display = actualDisplay( nodeName, doc );
-			iframe.detach();
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-	}
-
-	return display;
-}
-var rmargin = (/^margin/);
-
-var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-
-var getStyles = function( elem ) {
-		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
-		// IE throws on elements created in popups
-		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
-		if ( elem.ownerDocument.defaultView.opener ) {
-			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
-		}
-
-		return window.getComputedStyle( elem, null );
-	};
-
-
-
-function curCSS( elem, name, computed ) {
-	var width, minWidth, maxWidth, ret,
-		style = elem.style;
-
-	computed = computed || getStyles( elem );
-
-	// Support: IE9
-	// getPropertyValue is only needed for .css('filter') (#12537)
-	if ( computed ) {
-		ret = computed.getPropertyValue( name ) || computed[ name ];
-	}
-
-	if ( computed ) {
-
-		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-			ret = jQuery.style( elem, name );
-		}
-
-		// Support: iOS < 6
-		// A tribute to the "awesome hack by Dean Edwards"
-		// iOS < 6 (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 ) ) {
-
-			// Remember the original values
-			width = style.width;
-			minWidth = style.minWidth;
-			maxWidth = style.maxWidth;
-
-			// Put in the new values to get a computed value out
-			style.minWidth = style.maxWidth = style.width = ret;
-			ret = computed.width;
-
-			// Revert the changed values
-			style.width = width;
-			style.minWidth = minWidth;
-			style.maxWidth = maxWidth;
-		}
-	}
-
-	return ret !== undefined ?
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		ret + "" :
-		ret;
-}
-
-
-function addGetHookIf( conditionFn, hookFn ) {
-	// Define the hook, we'll check on the first run if it's really needed.
-	return {
-		get: function() {
-			if ( conditionFn() ) {
-				// Hook not needed (or it's not possible to use it due
-				// to missing dependency), remove it.
-				delete this.get;
-				return;
-			}
-
-			// Hook needed; redefine it so that the support test is not executed again.
-			return (this.get = hookFn).apply( this, arguments );
-		}
-	};
-}
-
-
-(function() {
-	var pixelPositionVal, boxSizingReliableVal,
-		docElem = document.documentElement,
-		container = document.createElement( "div" ),
-		div = document.createElement( "div" );
-
-	if ( !div.style ) {
-		return;
-	}
-
-	// Support: IE9-11+
-	// Style of cloned element affects source element cloned (#8908)
-	div.style.backgroundClip = "content-box";
-	div.cloneNode( true ).style.backgroundClip = "";
-	support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
-		"position:absolute";
-	container.appendChild( div );
-
-	// Executing both pixelPosition & boxSizingReliable tests require only one layout
-	// so they're executed at the same time to save the second computation.
-	function computePixelPositionAndBoxSizingReliable() {
-		div.style.cssText =
-			// Support: Firefox<29, Android 2.3
-			// Vendor-prefix box-sizing
-			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
-			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
-			"border:1px;padding:1px;width:4px;position:absolute";
-		div.innerHTML = "";
-		docElem.appendChild( container );
-
-		var divStyle = window.getComputedStyle( div, null );
-		pixelPositionVal = divStyle.top !== "1%";
-		boxSizingReliableVal = divStyle.width === "4px";
-
-		docElem.removeChild( container );
-	}
-
-	// Support: node.js jsdom
-	// Don't assume that getComputedStyle is a property of the global object
-	if ( window.getComputedStyle ) {
-		jQuery.extend( support, {
-			pixelPosition: function() {
-
-				// This test is executed only once but we still do memoizing
-				// since we can use the boxSizingReliable pre-computing.
-				// No need to check if the test was already performed, though.
-				computePixelPositionAndBoxSizingReliable();
-				return pixelPositionVal;
-			},
-			boxSizingReliable: function() {
-				if ( boxSizingReliableVal == null ) {
-					computePixelPositionAndBoxSizingReliable();
-				}
-				return boxSizingReliableVal;
-			},
-			reliableMarginRight: function() {
-
-				// Support: Android 2.3
-				// Check if div with explicit width and no margin-right incorrectly
-				// gets computed margin-right based on width of container. (#3333)
-				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-				// This support function is only executed once so no memoizing is needed.
-				var ret,
-					marginDiv = div.appendChild( document.createElement( "div" ) );
-
-				// Reset CSS: box-sizing; display; margin; border; padding
-				marginDiv.style.cssText = div.style.cssText =
-					// Support: Firefox<29, Android 2.3
-					// Vendor-prefix box-sizing
-					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
-				marginDiv.style.marginRight = marginDiv.style.width = "0";
-				div.style.width = "1px";
-				docElem.appendChild( container );
-
-				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
-
-				docElem.removeChild( container );
-				div.removeChild( marginDiv );
-
-				return ret;
-			}
-		});
-	}
-})();
-
-
-// A method for quickly swapping in/out CSS properties to get correct calculations.
-jQuery.swap = function( elem, options, callback, args ) {
-	var ret, name,
-		old = {};
-
-	// Remember the old values, and insert the new ones
-	for ( name in options ) {
-		old[ name ] = elem.style[ name ];
-		elem.style[ name ] = options[ name ];
-	}
-
-	ret = callback.apply( elem, args || [] );
-
-	// Revert the old values
-	for ( name in options ) {
-		elem.style[ name ] = old[ name ];
-	}
-
-	return ret;
-};
-
-
-var
-	// 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]).+)/,
-	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
-	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
-
-	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-	cssNormalTransform = {
-		letterSpacing: "0",
-		fontWeight: "400"
-	},
-
-	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// 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[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 setPositiveNumber( elem, value, subtract ) {
-	var matches = rnumsplit.exec( value );
-	return matches ?
-		// Guard against undefined "subtract", e.g., when used as in cssHooks
-		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-		value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-	var i = extra === ( isBorderBox ? "border" : "content" ) ?
-		// If we already have the right measurement, avoid augmentation
-		4 :
-		// Otherwise initialize for horizontal or vertical properties
-		name === "width" ? 1 : 0,
-
-		val = 0;
-
-	for ( ; i < 4; i += 2 ) {
-		// Both box models exclude margin, so add it if we want it
-		if ( extra === "margin" ) {
-			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-		}
-
-		if ( isBorderBox ) {
-			// border-box includes padding, so remove it if we want content
-			if ( extra === "content" ) {
-				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-			}
-
-			// At this point, extra isn't border nor margin, so remove border
-			if ( extra !== "margin" ) {
-				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		} else {
-			// At this point, extra isn't content, so add padding
-			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-			// At this point, extra isn't content nor padding, so add border
-			if ( extra !== "padding" ) {
-				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		}
-	}
-
-	return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-	// Start with offset property, which is equivalent to the border-box value
-	var valueIsBorderBox = true,
-		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-		styles = getStyles( elem ),
-		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
-	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-	if ( val <= 0 || val == null ) {
-		// Fall back to computed then uncomputed css if necessary
-		val = curCSS( elem, name, styles );
-		if ( val < 0 || val == null ) {
-			val = elem.style[ name ];
-		}
-
-		// Computed unit is not pixels. Stop here and return.
-		if ( rnumnonpx.test(val) ) {
-			return val;
-		}
-
-		// Check for style in case a browser which returns unreliable values
-		// for getComputedStyle silently falls back to the reliable elem.style
-		valueIsBorderBox = isBorderBox &&
-			( support.boxSizingReliable() || val === elem.style[ name ] );
-
-		// Normalize "", auto, and prepare for extra
-		val = parseFloat( val ) || 0;
-	}
-
-	// Use the active box-sizing model to add/subtract irrelevant styles
-	return ( val +
-		augmentWidthOrHeight(
-			elem,
-			name,
-			extra || ( isBorderBox ? "border" : "content" ),
-			valueIsBorderBox,
-			styles
-		)
-	) + "px";
-}
-
-function showHide( elements, show ) {
-	var display, elem, hidden,
-		values = [],
-		index = 0,
-		length = elements.length;
-
-	for ( ; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-
-		values[ index ] = data_priv.get( elem, "olddisplay" );
-		display = elem.style.display;
-		if ( show ) {
-			// Reset the inline display of this element to learn if it is
-			// being hidden by cascaded rules or not
-			if ( !values[ index ] && display === "none" ) {
-				elem.style.display = "";
-			}
-
-			// Set elements which have been overridden with display: none
-			// in a stylesheet to whatever the default browser style is
-			// for such an element
-			if ( elem.style.display === "" && isHidden( elem ) ) {
-				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
-			}
-		} else {
-			hidden = isHidden( elem );
-
-			if ( display !== "none" || !hidden ) {
-				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-			}
-		}
-	}
-
-	// Set the display of most of the elements in a second loop
-	// to avoid the constant reflow
-	for ( index = 0; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-			elem.style.display = show ? values[ index ] || "" : "none";
-		}
-	}
-
-	return elements;
-}
-
-jQuery.extend({
-
-	// Add in style property hooks for overriding the default
-	// behavior of getting and setting a style property
-	cssHooks: {
-		opacity: {
-			get: function( elem, computed ) {
-				if ( computed ) {
-
-					// We should always get a number back from opacity
-					var ret = curCSS( elem, "opacity" );
-					return ret === "" ? "1" : ret;
-				}
-			}
-		}
-	},
-
-	// Don't automatically add "px" to these possibly-unitless properties
-	cssNumber: {
-		"columnCount": true,
-		"fillOpacity": true,
-		"flexGrow": true,
-		"flexShrink": true,
-		"fontWeight": true,
-		"lineHeight": true,
-		"opacity": true,
-		"order": true,
-		"orphans": true,
-		"widows": true,
-		"zIndex": true,
-		"zoom": true
-	},
-
-	// Add in properties whose names you wish to fix before
-	// setting or getting the value
-	cssProps: {
-		"float": "cssFloat"
-	},
-
-	// Get and set the style property on a DOM Node
-	style: function( elem, name, value, extra ) {
-
-		// Don't set styles on text and comment nodes
-		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-			return;
-		}
-
-		// Make sure that we're working with the right name
-		var ret, type, hooks,
-			origName = jQuery.camelCase( name ),
-			style = elem.style;
-
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-		// Gets hook for the prefixed version, then unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// Check if we're setting a value
-		if ( value !== undefined ) {
-			type = typeof value;
-
-			// Convert "+=" or "-=" to relative numbers (#7345)
-			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-				// Fixes bug #9237
-				type = "number";
-			}
-
-			// Make sure that null and NaN values aren't set (#7116)
-			if ( value == null || value !== value ) {
-				return;
-			}
-
-			// If a number, add 'px' to the (except for certain CSS properties)
-			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-				value += "px";
-			}
-
-			// Support: IE9-11+
-			// background-* props affect original clone's values
-			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
-				style[ name ] = "inherit";
-			}
-
-			// If a hook was provided, use that value, otherwise just set the specified value
-			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-				style[ name ] = value;
-			}
-
-		} else {
-			// If a hook was provided get the non-computed value from there
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-				return ret;
-			}
-
-			// Otherwise just get the value from the style object
-			return style[ name ];
-		}
-	},
-
-	css: function( elem, name, extra, styles ) {
-		var val, num, hooks,
-			origName = jQuery.camelCase( name );
-
-		// Make sure that we're working with the right name
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-		// Try prefixed name followed by the unprefixed name
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// If a hook was provided get the computed value from there
-		if ( hooks && "get" in hooks ) {
-			val = hooks.get( elem, true, extra );
-		}
-
-		// Otherwise, if a way to get the computed value exists, use that
-		if ( val === undefined ) {
-			val = curCSS( elem, name, styles );
-		}
-
-		// Convert "normal" to computed value
-		if ( val === "normal" && name in cssNormalTransform ) {
-			val = cssNormalTransform[ name ];
-		}
-
-		// Make numeric if forced or a qualifier was provided and val looks numeric
-		if ( extra === "" || extra ) {
-			num = parseFloat( val );
-			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-		}
-		return val;
-	}
-});
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-	jQuery.cssHooks[ name ] = {
-		get: function( elem, computed, extra ) {
-			if ( computed ) {
-
-				// Certain elements can have dimension info if we invisibly show them
-				// but it must have a current display style that would benefit
-				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
-					jQuery.swap( elem, cssShow, function() {
-						return getWidthOrHeight( elem, name, extra );
-					}) :
-					getWidthOrHeight( elem, name, extra );
-			}
-		},
-
-		set: function( elem, value, extra ) {
-			var styles = extra && getStyles( elem );
-			return setPositiveNumber( elem, value, extra ?
-				augmentWidthOrHeight(
-					elem,
-					name,
-					extra,
-					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-					styles
-				) : 0
-			);
-		}
-	};
-});
-
-// Support: Android 2.3
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
-	function( elem, computed ) {
-		if ( computed ) {
-			return jQuery.swap( elem, { "display": "inline-block" },
-				curCSS, [ elem, "marginRight" ] );
-		}
-	}
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-	margin: "",
-	padding: "",
-	border: "Width"
-}, function( prefix, suffix ) {
-	jQuery.cssHooks[ prefix + suffix ] = {
-		expand: function( value ) {
-			var i = 0,
-				expanded = {},
-
-				// Assumes a single number if not a string
-				parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-			for ( ; i < 4; i++ ) {
-				expanded[ prefix + cssExpand[ i ] + suffix ] =
-					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-			}
-
-			return expanded;
-		}
-	};
-
-	if ( !rmargin.test( prefix ) ) {
-		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-	}
-});
-
-jQuery.fn.extend({
-	css: function( name, value ) {
-		return access( this, function( elem, name, value ) {
-			var styles, len,
-				map = {},
-				i = 0;
-
-			if ( jQuery.isArray( name ) ) {
-				styles = getStyles( elem );
-				len = name.length;
-
-				for ( ; i < len; i++ ) {
-					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-				}
-
-				return map;
-			}
-
-			return value !== undefined ?
-				jQuery.style( elem, name, value ) :
-				jQuery.css( elem, name );
-		}, name, value, arguments.length > 1 );
-	},
-	show: function() {
-		return showHide( this, true );
-	},
-	hide: function() {
-		return showHide( this );
-	},
-	toggle: function( state ) {
-		if ( typeof state === "boolean" ) {
-			return state ? this.show() : this.hide();
-		}
-
-		return this.each(function() {
-			if ( isHidden( this ) ) {
-				jQuery( this ).show();
-			} else {
-				jQuery( this ).hide();
-			}
-		});
-	}
-});
-
-
-function Tween( elem, options, prop, end, easing ) {
-	return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-	constructor: Tween,
-	init: function( elem, options, prop, end, easing, unit ) {
-		this.elem = elem;
-		this.prop = prop;
-		this.easing = easing || "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 an empty string as a 3rd parameter to .css will automatically
-			// attempt a parseFloat and fallback to a string if the parse fails.
-			// Simple values such as "10px" are parsed to Float;
-			// complex values such as "rotate(1rad)" are returned as-is.
-			result = jQuery.css( tween.elem, tween.prop, "" );
-			// Empty strings, null, undefined and "auto" are converted to 0.
-			return !result || result === "auto" ? 0 : result;
-		},
-		set: function( tween ) {
-			// Use step hook for back compat.
-			// Use cssHook if its there.
-			// Use .style if available and use plain properties where available.
-			if ( jQuery.fx.step[ tween.prop ] ) {
-				jQuery.fx.step[ tween.prop ]( tween );
-			} else if ( tween.elem.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;
-			}
-		}
-	}
-};
-
-// Support: IE9
-// Panic based approach to setting things on disconnected nodes
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-	set: function( tween ) {
-		if ( tween.elem.nodeType && tween.elem.parentNode ) {
-			tween.elem[ tween.prop ] = tween.now;
-		}
-	}
-};
-
-jQuery.easing = {
-	linear: function( p ) {
-		return p;
-	},
-	swing: function( p ) {
-		return 0.5 - Math.cos( p * Math.PI ) / 2;
-	}
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-
-
-
-var
-	fxNow, timerId,
-	rfxtypes = /^(?:toggle|show|hide)$/,
-	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
-	rrun = /queueHooks$/,
-	animationPrefilters = [ defaultPrefilter ],
-	tweeners = {
-		"*": [ function( prop, value ) {
-			var tween = this.createTween( prop, value ),
-				target = tween.cur(),
-				parts = rfxnum.exec( value ),
-				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-				// Starting value computation is required for potential unit mismatches
-				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-				scale = 1,
-				maxIterations = 20;
-
-			if ( start && start[ 3 ] !== unit ) {
-				// Trust units reported by jQuery.css
-				unit = unit || start[ 3 ];
-
-				// Make sure we update the tween properties later on
-				parts = parts || [];
-
-				// Iteratively approximate from a nonzero starting point
-				start = +target || 1;
-
-				do {
-					// If previous iteration zeroed out, double until we get *something*.
-					// Use string for doubling so we don't accidentally see scale as unchanged below
-					scale = scale || ".5";
-
-					// Adjust and apply
-					start = start / scale;
-					jQuery.style( tween.elem, prop, start + unit );
-
-				// Update scale, tolerating zero or NaN from tween.cur(),
-				// break the loop if scale is unchanged or perfect, or if we've just had enough
-				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-			}
-
-			// Update tween properties
-			if ( parts ) {
-				start = tween.start = +start || +target || 0;
-				tween.unit = unit;
-				// If a +=/-= token was provided, we're doing a relative animation
-				tween.end = parts[ 1 ] ?
-					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-					+parts[ 2 ];
-			}
-
-			return tween;
-		} ]
-	};
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-	setTimeout(function() {
-		fxNow = undefined;
-	});
-	return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-	var which,
-		i = 0,
-		attrs = { height: type };
-
-	// If we include width, step value is 1 to do all cssExpand values,
-	// otherwise step value is 2 to skip over Left and Right
-	includeWidth = includeWidth ? 1 : 0;
-	for ( ; i < 4 ; i += 2 - includeWidth ) {
-		which = cssExpand[ i ];
-		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-	}
-
-	if ( includeWidth ) {
-		attrs.opacity = attrs.width = type;
-	}
-
-	return attrs;
-}
-
-function createTween( value, prop, animation ) {
-	var tween,
-		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-		index = 0,
-		length = collection.length;
-	for ( ; index < length; index++ ) {
-		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-			// We're done with this property
-			return tween;
-		}
-	}
-}
-
-function defaultPrefilter( elem, props, opts ) {
-	/* jshint validthis: true */
-	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
-		anim = this,
-		orig = {},
-		style = elem.style,
-		hidden = elem.nodeType && isHidden( elem ),
-		dataShow = data_priv.get( elem, "fxshow" );
-
-	// Handle queue: false promises
-	if ( !opts.queue ) {
-		hooks = jQuery._queueHooks( elem, "fx" );
-		if ( hooks.unqueued == null ) {
-			hooks.unqueued = 0;
-			oldfire = hooks.empty.fire;
-			hooks.empty.fire = function() {
-				if ( !hooks.unqueued ) {
-					oldfire();
-				}
-			};
-		}
-		hooks.unqueued++;
-
-		anim.always(function() {
-			// Ensure the complete handler is called before this completes
-			anim.always(function() {
-				hooks.unqueued--;
-				if ( !jQuery.queue( elem, "fx" ).length ) {
-					hooks.empty.fire();
-				}
-			});
-		});
-	}
-
-	// Height/width overflow pass
-	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-		// Make sure that nothing sneaks out
-		// Record all 3 overflow attributes because IE9-10 do not
-		// change the overflow attribute when overflowX and
-		// overflowY are set to the same value
-		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-		// Set display property to inline-block for height/width
-		// animations on inline elements that are having width/height animated
-		display = jQuery.css( elem, "display" );
-
-		// Test default display if display is currently "none"
-		checkDisplay = display === "none" ?
-			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
-		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
-			style.display = "inline-block";
-		}
-	}
-
-	if ( opts.overflow ) {
-		style.overflow = "hidden";
-		anim.always(function() {
-			style.overflow = opts.overflow[ 0 ];
-			style.overflowX = opts.overflow[ 1 ];
-			style.overflowY = opts.overflow[ 2 ];
-		});
-	}
-
-	// show/hide pass
-	for ( prop in props ) {
-		value = props[ prop ];
-		if ( rfxtypes.exec( value ) ) {
-			delete props[ prop ];
-			toggle = toggle || value === "toggle";
-			if ( value === ( hidden ? "hide" : "show" ) ) {
-
-				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
-				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
-					hidden = true;
-				} else {
-					continue;
-				}
-			}
-			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
-		// Any non-fx value stops us from restoring the original display value
-		} else {
-			display = undefined;
-		}
-	}
-
-	if ( !jQuery.isEmptyObject( orig ) ) {
-		if ( dataShow ) {
-			if ( "hidden" in dataShow ) {
-				hidden = dataShow.hidden;
-			}
-		} else {
-			dataShow = data_priv.access( elem, "fxshow", {} );
-		}
-
-		// Store state if its toggle - enables .stop().toggle() to "reverse"
-		if ( toggle ) {
-			dataShow.hidden = !hidden;
-		}
-		if ( hidden ) {
-			jQuery( elem ).show();
-		} else {
-			anim.done(function() {
-				jQuery( elem ).hide();
-			});
-		}
-		anim.done(function() {
-			var prop;
-
-			data_priv.remove( elem, "fxshow" );
-			for ( prop in orig ) {
-				jQuery.style( elem, prop, orig[ prop ] );
-			}
-		});
-		for ( prop in orig ) {
-			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-			if ( !( prop in dataShow ) ) {
-				dataShow[ prop ] = tween.start;
-				if ( hidden ) {
-					tween.end = tween.start;
-					tween.start = prop === "width" || prop === "height" ? 1 : 0;
-				}
-			}
-		}
-
-	// If this is a noop like .hide().hide(), restore an overwritten display value
-	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
-		style.display = display;
-	}
-}
-
-function propFilter( props, specialEasing ) {
-	var index, name, easing, value, hooks;
-
-	// camelCase, specialEasing and expand cssHook pass
-	for ( index in props ) {
-		name = jQuery.camelCase( index );
-		easing = specialEasing[ name ];
-		value = props[ index ];
-		if ( jQuery.isArray( value ) ) {
-			easing = value[ 1 ];
-			value = props[ index ] = value[ 0 ];
-		}
-
-		if ( index !== name ) {
-			props[ name ] = value;
-			delete props[ index ];
-		}
-
-		hooks = jQuery.cssHooks[ name ];
-		if ( hooks && "expand" in hooks ) {
-			value = hooks.expand( value );
-			delete props[ name ];
-
-			// Not quite $.extend, this won't overwrite existing keys.
-			// Reusing 'index' because we have the correct "name"
-			for ( index in value ) {
-				if ( !( index in props ) ) {
-					props[ index ] = value[ index ];
-					specialEasing[ index ] = easing;
-				}
-			}
-		} else {
-			specialEasing[ name ] = easing;
-		}
-	}
-}
-
-function Animation( elem, properties, options ) {
-	var result,
-		stopped,
-		index = 0,
-		length = animationPrefilters.length,
-		deferred = jQuery.Deferred().always( function() {
-			// Don't match elem in the :animated selector
-			delete tick.elem;
-		}),
-		tick = function() {
-			if ( stopped ) {
-				return false;
-			}
-			var currentTime = fxNow || createFxNow(),
-				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-				// Support: Android 2.3
-				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
-				temp = remaining / animation.duration || 0,
-				percent = 1 - temp,
-				index = 0,
-				length = animation.tweens.length;
-
-			for ( ; index < length ; index++ ) {
-				animation.tweens[ index ].run( percent );
-			}
-
-			deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-			if ( percent < 1 && length ) {
-				return remaining;
-			} else {
-				deferred.resolveWith( elem, [ animation ] );
-				return false;
-			}
-		},
-		animation = deferred.promise({
-			elem: elem,
-			props: jQuery.extend( {}, properties ),
-			opts: jQuery.extend( true, { specialEasing: {} }, options ),
-			originalProperties: properties,
-			originalOptions: options,
-			startTime: fxNow || createFxNow(),
-			duration: options.duration,
-			tweens: [],
-			createTween: function( prop, end ) {
-				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
-				animation.tweens.push( tween );
-				return tween;
-			},
-			stop: function( gotoEnd ) {
-				var index = 0,
-					// If we are going to the end, we want to run all the tweens
-					// otherwise we skip this part
-					length = gotoEnd ? animation.tweens.length : 0;
-				if ( stopped ) {
-					return this;
-				}
-				stopped = true;
-				for ( ; index < length ; index++ ) {
-					animation.tweens[ index ].run( 1 );
-				}
-
-				// Resolve when we played the last frame; otherwise, reject
-				if ( gotoEnd ) {
-					deferred.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;
-		}
-	}
-
-	jQuery.map( props, createTween, animation );
-
-	if ( jQuery.isFunction( animation.opts.start ) ) {
-		animation.opts.start.call( elem, animation );
-	}
-
-	jQuery.fx.timer(
-		jQuery.extend( tick, {
-			elem: elem,
-			anim: animation,
-			queue: animation.opts.queue
-		})
-	);
-
-	// attach callbacks from options
-	return animation.progress( animation.opts.progress )
-		.done( animation.opts.done, animation.opts.complete )
-		.fail( animation.opts.fail )
-		.always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-	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 );
-		}
-	}
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-		complete: fn || !fn && easing ||
-			jQuery.isFunction( speed ) && speed,
-		duration: speed,
-		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-	};
-
-	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-	// Normalize opt.queue - true/undefined/null -> "fx"
-	if ( opt.queue == null || opt.queue === true ) {
-		opt.queue = "fx";
-	}
-
-	// Queueing
-	opt.old = opt.complete;
-
-	opt.complete = function() {
-		if ( jQuery.isFunction( opt.old ) ) {
-			opt.old.call( this );
-		}
-
-		if ( opt.queue ) {
-			jQuery.dequeue( this, opt.queue );
-		}
-	};
-
-	return opt;
-};
-
-jQuery.fn.extend({
-	fadeTo: function( speed, to, easing, callback ) {
-
-		// Show any hidden elements after setting opacity to 0
-		return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-			// Animate to the value specified
-			.end().animate({ opacity: to }, speed, easing, callback );
-	},
-	animate: function( prop, speed, easing, callback ) {
-		var empty = jQuery.isEmptyObject( prop ),
-			optall = jQuery.speed( speed, easing, callback ),
-			doAnimation = function() {
-				// Operate on a copy of prop so per-property easing won't be lost
-				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-				// Empty animations, or finishing resolves immediately
-				if ( empty || data_priv.get( this, "finish" ) ) {
-					anim.stop( true );
-				}
-			};
-			doAnimation.finish = doAnimation;
-
-		return empty || optall.queue === false ?
-			this.each( doAnimation ) :
-			this.queue( optall.queue, doAnimation );
-	},
-	stop: function( type, clearQueue, gotoEnd ) {
-		var stopQueue = function( hooks ) {
-			var stop = hooks.stop;
-			delete hooks.stop;
-			stop( gotoEnd );
-		};
-
-		if ( typeof type !== "string" ) {
-			gotoEnd = clearQueue;
-			clearQueue = type;
-			type = undefined;
-		}
-		if ( clearQueue && type !== false ) {
-			this.queue( type || "fx", [] );
-		}
-
-		return this.each(function() {
-			var dequeue = true,
-				index = type != null && type + "queueHooks",
-				timers = jQuery.timers,
-				data = data_priv.get( this );
-
-			if ( index ) {
-				if ( data[ index ] && data[ index ].stop ) {
-					stopQueue( data[ index ] );
-				}
-			} else {
-				for ( index in data ) {
-					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-						stopQueue( data[ index ] );
-					}
-				}
-			}
-
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-					timers[ index ].anim.stop( gotoEnd );
-					dequeue = false;
-					timers.splice( index, 1 );
-				}
-			}
-
-			// Start the next in the queue if the last step wasn't forced.
-			// Timers currently will call their complete callbacks, which
-			// will dequeue but only if they were gotoEnd.
-			if ( dequeue || !gotoEnd ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	finish: function( type ) {
-		if ( type !== false ) {
-			type = type || "fx";
-		}
-		return this.each(function() {
-			var index,
-				data = data_priv.get( this ),
-				queue = data[ type + "queue" ],
-				hooks = data[ type + "queueHooks" ],
-				timers = jQuery.timers,
-				length = queue ? queue.length : 0;
-
-			// Enable finishing flag on private data
-			data.finish = true;
-
-			// Empty the queue first
-			jQuery.queue( this, type, [] );
-
-			if ( hooks && hooks.stop ) {
-				hooks.stop.call( this, true );
-			}
-
-			// Look for any active animations, and finish them
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-					timers[ index ].anim.stop( true );
-					timers.splice( index, 1 );
-				}
-			}
-
-			// Look for any animations in the old queue and finish them
-			for ( index = 0; index < length; index++ ) {
-				if ( queue[ index ] && queue[ index ].finish ) {
-					queue[ index ].finish.call( this );
-				}
-			}
-
-			// Turn off finishing flag
-			delete data.finish;
-		});
-	}
-});
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-	var cssFn = jQuery.fn[ name ];
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return speed == null || typeof speed === "boolean" ?
-			cssFn.apply( this, arguments ) :
-			this.animate( genFx( name, true ), speed, easing, callback );
-	};
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show"),
-	slideUp: genFx("hide"),
-	slideToggle: genFx("toggle"),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" },
-	fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return this.animate( props, speed, easing, callback );
-	};
-});
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
-	var timer,
-		i = 0,
-		timers = jQuery.timers;
-
-	fxNow = jQuery.now();
-
-	for ( ; i < timers.length; i++ ) {
-		timer = timers[ i ];
-		// Checks the timer has not already been removed
-		if ( !timer() && timers[ i ] === timer ) {
-			timers.splice( i--, 1 );
-		}
-	}
-
-	if ( !timers.length ) {
-		jQuery.fx.stop();
-	}
-	fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-	jQuery.timers.push( timer );
-	if ( timer() ) {
-		jQuery.fx.start();
-	} else {
-		jQuery.timers.pop();
-	}
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-	if ( !timerId ) {
-		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-	}
-};
-
-jQuery.fx.stop = function() {
-	clearInterval( timerId );
-	timerId = null;
-};
-
-jQuery.fx.speeds = {
-	slow: 600,
-	fast: 200,
-	// Default speed
-	_default: 400
-};
-
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
-	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-	type = type || "fx";
-
-	return this.queue( type, function( next, hooks ) {
-		var timeout = setTimeout( next, time );
-		hooks.stop = function() {
-			clearTimeout( timeout );
-		};
-	});
-};
-
-
-(function() {
-	var input = document.createElement( "input" ),
-		select = document.createElement( "select" ),
-		opt = select.appendChild( document.createElement( "option" ) );
-
-	input.type = "checkbox";
-
-	// Support: iOS<=5.1, Android<=4.2+
-	// Default value for a checkbox should be "on"
-	support.checkOn = input.value !== "";
-
-	// Support: IE<=11+
-	// Must access selectedIndex to make default options select
-	support.optSelected = opt.selected;
-
-	// Support: Android<=2.3
-	// Options inside disabled selects are incorrectly marked as disabled
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Support: IE<=11+
-	// An input loses its value after becoming a radio
-	input = document.createElement( "input" );
-	input.value = "t";
-	input.type = "radio";
-	support.radioValue = input.value === "t";
-})();
-
-
-var nodeHook, boolHook,
-	attrHandle = jQuery.expr.attrHandle;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	}
-});
-
-jQuery.extend({
-	attr: function( elem, name, value ) {
-		var hooks, ret,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === strundefined ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] ||
-				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-
-			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, value + "" );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-			ret = jQuery.find.attr( elem, name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret == null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var name, propName,
-			i = 0,
-			attrNames = value && value.match( rnotwhite );
-
-		if ( attrNames && elem.nodeType === 1 ) {
-			while ( (name = attrNames[i++]) ) {
-				propName = jQuery.propFix[ name ] || name;
-
-				// Boolean attributes get special treatment (#10870)
-				if ( jQuery.expr.match.bool.test( name ) ) {
-					// Set corresponding property to false
-					elem[ propName ] = false;
-				}
-
-				elem.removeAttribute( name );
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				if ( !support.radioValue && value === "radio" &&
-					jQuery.nodeName( elem, "input" ) ) {
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		}
-	}
-});
-
-// Hooks for boolean attributes
-boolHook = {
-	set: function( elem, value, name ) {
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			elem.setAttribute( name, name );
-		}
-		return name;
-	}
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-	var getter = attrHandle[ name ] || jQuery.find.attr;
-
-	attrHandle[ name ] = function( elem, name, isXML ) {
-		var ret, handle;
-		if ( !isXML ) {
-			// Avoid an infinite loop by temporarily removing this function from the getter
-			handle = attrHandle[ name ];
-			attrHandle[ name ] = ret;
-			ret = getter( elem, name, isXML ) != null ?
-				name.toLowerCase() :
-				null;
-			attrHandle[ name ] = handle;
-		}
-		return ret;
-	};
-});
-
-
-
-
-var rfocusable = /^(?:input|select|textarea|button)$/i;
-
-jQuery.fn.extend({
-	prop: function( name, value ) {
-		return access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		return this.each(function() {
-			delete this[ jQuery.propFix[ name ] || name ];
-		});
-	}
-});
-
-jQuery.extend({
-	propFix: {
-		"for": "htmlFor",
-		"class": "className"
-	},
-
-	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 ) {
-			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-				ret :
-				( elem[ name ] = value );
-
-		} else {
-			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-				ret :
-				elem[ name ];
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
-					elem.tabIndex :
-					-1;
-			}
-		}
-	}
-});
-
-if ( !support.optSelected ) {
-	jQuery.propHooks.selected = {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-			if ( parent && parent.parentNode ) {
-				parent.parentNode.selectedIndex;
-			}
-			return null;
-		}
-	};
-}
-
-jQuery.each([
-	"tabIndex",
-	"readOnly",
-	"maxLength",
-	"cellSpacing",
-	"cellPadding",
-	"rowSpan",
-	"colSpan",
-	"useMap",
-	"frameBorder",
-	"contentEditable"
-], function() {
-	jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-
-
-
-var rclass = /[\t\r\n\f]/g;
-
-jQuery.fn.extend({
-	addClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call( this, j, this.className ) );
-			});
-		}
-
-		if ( proceed ) {
-			// The disjunction here is for better compressibility (see removeClass)
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					" "
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-							cur += clazz + " ";
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = jQuery.trim( cur );
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = arguments.length === 0 || typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call( this, j, this.className ) );
-			});
-		}
-		if ( proceed ) {
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				// This expression is here for better compressibility (see addClass)
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					""
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						// Remove *all* instances
-						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-							cur = cur.replace( " " + clazz + " ", " " );
-						}
-					}
-
-					// Only assign if different to avoid unneeded rendering.
-					finalValue = value ? jQuery.trim( cur ) : "";
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value;
-
-		if ( typeof stateVal === "boolean" && type === "string" ) {
-			return stateVal ? this.addClass( value ) : this.removeClass( value );
-		}
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// Toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					classNames = value.match( rnotwhite ) || [];
-
-				while ( (className = classNames[ i++ ]) ) {
-					// Check each className given, space separated list
-					if ( self.hasClass( className ) ) {
-						self.removeClass( className );
-					} else {
-						self.addClass( className );
-					}
-				}
-
-			// Toggle whole class name
-			} else if ( type === strundefined || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					data_priv.set( this, "__className__", this.className );
-				}
-
-				// If the element has a class name or if we're passed `false`,
-				// then remove the whole classname (if there was one, the above saved it).
-				// Otherwise bring back whatever was previously saved (if anything),
-				// falling back to the empty string if nothing was stored.
-				this.className = this.className || value === false ? "" : data_priv.get( 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;
-	}
-});
-
-
-
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend({
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// Handle most common string cases
-					ret.replace(rreturn, "") :
-					// Handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, jQuery( this ).val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-
-			} else if ( typeof val === "number" ) {
-				val += "";
-
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map( val, function( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				var val = jQuery.find.attr( elem, "value" );
-				return val != null ?
-					val :
-					// Support: IE10-11+
-					// option.text throws exceptions (#14686, #14858)
-					jQuery.trim( jQuery.text( elem ) );
-			}
-		},
-		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 ];
-
-					// IE6-9 doesn't update selected after form reset (#2551)
-					if ( ( option.selected || i === index ) &&
-							// Don't return options that are disabled or in a disabled optgroup
-							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
-							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var optionSet, option,
-					options = elem.options,
-					values = jQuery.makeArray( value ),
-					i = options.length;
-
-				while ( i-- ) {
-					option = options[ i ];
-					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
-						optionSet = true;
-					}
-				}
-
-				// Force browsers to behave consistently when non-matching value is set
-				if ( !optionSet ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	}
-});
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	};
-	if ( !support.checkOn ) {
-		jQuery.valHooks[ this ].get = function( elem ) {
-			return elem.getAttribute("value") === null ? "on" : elem.value;
-		};
-	}
-});
-
-
-
-
-// Return jQuery for attributes-only inclusion
-
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-	// Handle event binding
-	jQuery.fn[ name ] = function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-	};
-});
-
-jQuery.fn.extend({
-	hover: function( fnOver, fnOut ) {
-		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-	},
-
-	bind: function( types, data, fn ) {
-		return this.on( types, null, data, fn );
-	},
-	unbind: function( types, fn ) {
-		return this.off( types, null, fn );
-	},
-
-	delegate: function( selector, types, data, fn ) {
-		return this.on( types, selector, data, fn );
-	},
-	undelegate: function( selector, types, fn ) {
-		// ( namespace ) or ( selector, types [, fn] )
-		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-	}
-});
-
-
-var nonce = jQuery.now();
-
-var rquery = (/\?/);
-
-
-
-// Support: Android 2.3
-// Workaround failure to string-cast null input
-jQuery.parseJSON = function( data ) {
-	return JSON.parse( data + "" );
-};
-
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
-	var xml, tmp;
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-
-	// Support: IE9
-	try {
-		tmp = new DOMParser();
-		xml = tmp.parseFromString( data, "text/xml" );
-	} catch ( e ) {
-		xml = undefined;
-	}
-
-	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
-	}
-	return xml;
-};
-
-
-var
-	rhash = /#.*$/,
-	rts = /([?&])_=[^&]*/,
-	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
-	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-	rnoContent = /^(?:GET|HEAD)$/,
-	rprotocol = /^\/\//,
-	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
-
-	/* Prefilters
-	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-	 * 2) These are called:
-	 *    - BEFORE asking for a transport
-	 *    - AFTER param serialization (s.data is a string if s.processData is true)
-	 * 3) key is the dataType
-	 * 4) the catchall symbol "*" can be used
-	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-	 */
-	prefilters = {},
-
-	/* Transports bindings
-	 * 1) key is the dataType
-	 * 2) the catchall symbol "*" can be used
-	 * 3) selection will start with transport dataType and THEN go to "*" if needed
-	 */
-	transports = {},
-
-	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-	allTypes = "*/".concat( "*" ),
-
-	// Document location
-	ajaxLocation = window.location.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,
-			i = 0,
-			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
-		if ( jQuery.isFunction( func ) ) {
-			// For each dataType in the dataTypeExpression
-			while ( (dataType = dataTypes[i++]) ) {
-				// Prepend if requested
-				if ( dataType[0] === "+" ) {
-					dataType = dataType.slice( 1 ) || "*";
-					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-				// Otherwise append
-				} else {
-					(structure[ dataType ] = structure[ dataType ] || []).push( func );
-				}
-			}
-		}
-	};
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-	var inspected = {},
-		seekingTransport = ( structure === transports );
-
-	function inspect( dataType ) {
-		var selected;
-		inspected[ dataType ] = true;
-		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-				options.dataTypes.unshift( dataTypeOrTransport );
-				inspect( dataTypeOrTransport );
-				return false;
-			} else if ( seekingTransport ) {
-				return !( selected = dataTypeOrTransport );
-			}
-		});
-		return selected;
-	}
-
-	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-	var key, deep,
-		flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-	for ( key in src ) {
-		if ( src[ key ] !== undefined ) {
-			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-		}
-	}
-	if ( deep ) {
-		jQuery.extend( true, target, deep );
-	}
-
-	return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
-	var ct, type, finalDataType, firstDataType,
-		contents = s.contents,
-		dataTypes = s.dataTypes;
-
-	// Remove auto dataType and get content-type in the process
-	while ( dataTypes[ 0 ] === "*" ) {
-		dataTypes.shift();
-		if ( ct === undefined ) {
-			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-		}
-	}
-
-	// Check if we're dealing with a known content-type
-	if ( ct ) {
-		for ( type in contents ) {
-			if ( contents[ type ] && contents[ type ].test( ct ) ) {
-				dataTypes.unshift( type );
-				break;
-			}
-		}
-	}
-
-	// Check to see if we have a response for the expected dataType
-	if ( dataTypes[ 0 ] in responses ) {
-		finalDataType = dataTypes[ 0 ];
-	} else {
-		// Try convertible dataTypes
-		for ( type in responses ) {
-			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-				finalDataType = type;
-				break;
-			}
-			if ( !firstDataType ) {
-				firstDataType = type;
-			}
-		}
-		// Or just use first one
-		finalDataType = finalDataType || firstDataType;
-	}
-
-	// If we found a dataType
-	// We add the dataType to the list if needed
-	// and return the corresponding response
-	if ( finalDataType ) {
-		if ( finalDataType !== dataTypes[ 0 ] ) {
-			dataTypes.unshift( finalDataType );
-		}
-		return responses[ finalDataType ];
-	}
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-	var conv2, current, conv, tmp, prev,
-		converters = {},
-		// Work with a copy of dataTypes in case we need to modify it for conversion
-		dataTypes = s.dataTypes.slice();
-
-	// Create converters map with lowercased keys
-	if ( dataTypes[ 1 ] ) {
-		for ( conv in s.converters ) {
-			converters[ conv.toLowerCase() ] = s.converters[ conv ];
-		}
-	}
-
-	current = dataTypes.shift();
-
-	// Convert to each sequential dataType
-	while ( current ) {
-
-		if ( s.responseFields[ current ] ) {
-			jqXHR[ s.responseFields[ current ] ] = response;
-		}
-
-		// Apply the dataFilter if provided
-		if ( !prev && isSuccess && s.dataFilter ) {
-			response = s.dataFilter( response, s.dataType );
-		}
-
-		prev = current;
-		current = dataTypes.shift();
-
-		if ( current ) {
-
-		// There's only work to do if current dataType is non-auto
-			if ( current === "*" ) {
-
-				current = prev;
-
-			// Convert response if prev dataType is non-auto and differs from current
-			} else if ( prev !== "*" && prev !== current ) {
-
-				// Seek a direct converter
-				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-				// If none found, seek a pair
-				if ( !conv ) {
-					for ( conv2 in converters ) {
-
-						// If conv2 outputs current
-						tmp = conv2.split( " " );
-						if ( tmp[ 1 ] === current ) {
-
-							// If prev can be converted to accepted input
-							conv = converters[ prev + " " + tmp[ 0 ] ] ||
-								converters[ "* " + tmp[ 0 ] ];
-							if ( conv ) {
-								// Condense equivalence converters
-								if ( conv === true ) {
-									conv = converters[ conv2 ];
-
-								// Otherwise, insert the intermediate dataType
-								} else if ( converters[ conv2 ] !== true ) {
-									current = tmp[ 0 ];
-									dataTypes.unshift( tmp[ 1 ] );
-								}
-								break;
-							}
-						}
-					}
-				}
-
-				// Apply converter (if not an equivalence)
-				if ( conv !== true ) {
-
-					// Unless errors are allowed to bubble, catch and return them
-					if ( conv && s[ "throws" ] ) {
-						response = conv( response );
-					} else {
-						try {
-							response = conv( response );
-						} catch ( e ) {
-							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return { state: "success", data: response };
-}
-
-jQuery.extend({
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-	etag: {},
-
-	ajaxSettings: {
-		url: ajaxLocation,
-		type: "GET",
-		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-		global: true,
-		processData: true,
-		async: true,
-		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-		/*
-		timeout: 0,
-		data: null,
-		dataType: null,
-		username: null,
-		password: null,
-		cache: null,
-		throws: false,
-		traditional: false,
-		headers: {},
-		*/
-
-		accepts: {
-			"*": allTypes,
-			text: "text/plain",
-			html: "text/html",
-			xml: "application/xml, text/xml",
-			json: "application/json, text/javascript"
-		},
-
-		contents: {
-			xml: /xml/,
-			html: /html/,
-			json: /json/
-		},
-
-		responseFields: {
-			xml: "responseXML",
-			text: "responseText",
-			json: "responseJSON"
-		},
-
-		// Data converters
-		// Keys separate source (or catchall "*") and destination types with a single space
-		converters: {
-
-			// Convert anything to text
-			"* text": String,
-
-			// Text to html (true = no transformation)
-			"text html": true,
-
-			// Evaluate text as a json expression
-			"text json": jQuery.parseJSON,
-
-			// Parse text as xml
-			"text xml": jQuery.parseXML
-		},
-
-		// For options that shouldn't be deep extended:
-		// you can add your own custom options here if
-		// and when you create one that shouldn't be
-		// deep extended (see ajaxExtend)
-		flatOptions: {
-			url: true,
-			context: true
-		}
-	},
-
-	// Creates a full fledged settings object into target
-	// with both ajaxSettings and settings fields.
-	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function( target, settings ) {
-		return settings ?
-
-			// Building a settings object
-			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-			// Extending ajaxSettings
-			ajaxExtend( jQuery.ajaxSettings, target );
-	},
-
-	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-	ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-	// Main method
-	ajax: function( url, options ) {
-
-		// If url is an object, simulate pre-1.5 signature
-		if ( typeof url === "object" ) {
-			options = url;
-			url = undefined;
-		}
-
-		// Force options to be an object
-		options = options || {};
-
-		var transport,
-			// URL without anti-cache param
-			cacheURL,
-			// Response headers
-			responseHeadersString,
-			responseHeaders,
-			// timeout handle
-			timeoutTimer,
-			// 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 is callbackContext if it is a DOM node or jQuery collection
-			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-				jQuery( callbackContext ) :
-				jQuery.event,
-			// Deferreds
-			deferred = jQuery.Deferred(),
-			completeDeferred = jQuery.Callbacks("once memory"),
-			// Status-dependent callbacks
-			statusCode = s.statusCode || {},
-			// Headers (they are sent all at once)
-			requestHeaders = {},
-			requestHeadersNames = {},
-			// The jqXHR state
-			state = 0,
-			// Default abort message
-			strAbort = "canceled",
-			// Fake xhr
-			jqXHR = {
-				readyState: 0,
-
-				// Builds headers hashtable if needed
-				getResponseHeader: function( key ) {
-					var match;
-					if ( state === 2 ) {
-						if ( !responseHeaders ) {
-							responseHeaders = {};
-							while ( (match = rheaders.exec( responseHeadersString )) ) {
-								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-							}
-						}
-						match = responseHeaders[ key.toLowerCase() ];
-					}
-					return match == null ? null : match;
-				},
-
-				// Raw string
-				getAllResponseHeaders: function() {
-					return state === 2 ? responseHeadersString : null;
-				},
-
-				// Caches the header
-				setRequestHeader: function( name, value ) {
-					var lname = name.toLowerCase();
-					if ( !state ) {
-						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-						requestHeaders[ name ] = value;
-					}
-					return this;
-				},
-
-				// Overrides response content-type header
-				overrideMimeType: function( type ) {
-					if ( !state ) {
-						s.mimeType = type;
-					}
-					return this;
-				},
-
-				// Status-dependent callbacks
-				statusCode: function( map ) {
-					var code;
-					if ( map ) {
-						if ( state < 2 ) {
-							for ( code in map ) {
-								// Lazy-add the new callback in a way that preserves old ones
-								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-							}
-						} else {
-							// Execute the appropriate callbacks
-							jqXHR.always( map[ jqXHR.status ] );
-						}
-					}
-					return this;
-				},
-
-				// Cancel the request
-				abort: function( statusText ) {
-					var finalText = statusText || strAbort;
-					if ( transport ) {
-						transport.abort( finalText );
-					}
-					done( 0, finalText );
-					return this;
-				}
-			};
-
-		// Attach deferreds
-		deferred.promise( jqXHR ).complete = completeDeferred.add;
-		jqXHR.success = jqXHR.done;
-		jqXHR.error = jqXHR.fail;
-
-		// Remove hash character (#7531: and string promotion)
-		// Add protocol if not provided (prefilters might expect it)
-		// Handle falsy url in the settings object (#10093: consistency with old signature)
-		// We also use the url parameter if available
-		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
-			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-		// Alias method option to type as per ticket #12004
-		s.type = options.method || options.type || s.method || s.type;
-
-		// Extract dataTypes list
-		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
-		// A cross-domain request is in order when 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
-		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
-		fireGlobals = jQuery.event && s.global;
-
-		// Watch for a new set of requests
-		if ( fireGlobals && jQuery.active++ === 0 ) {
-			jQuery.event.trigger("ajaxStart");
-		}
-
-		// Uppercase the type
-		s.type = s.type.toUpperCase();
-
-		// Determine if request has content
-		s.hasContent = !rnoContent.test( s.type );
-
-		// Save the URL in case we're toying with the If-Modified-Since
-		// and/or If-None-Match header later on
-		cacheURL = s.url;
-
-		// More options handling for requests with no content
-		if ( !s.hasContent ) {
-
-			// If data is available, append data to url
-			if ( s.data ) {
-				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-				// #9682: remove data so that it's not used in an eventual retry
-				delete s.data;
-			}
-
-			// Add anti-cache in url if needed
-			if ( s.cache === false ) {
-				s.url = rts.test( cacheURL ) ?
-
-					// If there is already a '_' parameter, set its value
-					cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
-					// Otherwise add one to the end
-					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
-			}
-		}
-
-		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-		if ( s.ifModified ) {
-			if ( jQuery.lastModified[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-			}
-			if ( jQuery.etag[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-			}
-		}
-
-		// Set the correct header, if data is being sent
-		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-			jqXHR.setRequestHeader( "Content-Type", s.contentType );
-		}
-
-		// Set the Accepts header for the server, depending on the dataType
-		jqXHR.setRequestHeader(
-			"Accept",
-			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-				s.accepts[ "*" ]
-		);
-
-		// Check for headers option
-		for ( i in s.headers ) {
-			jqXHR.setRequestHeader( i, s.headers[ i ] );
-		}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-			// Abort if not done already and return
-			return jqXHR.abort();
-		}
-
-		// Aborting is no longer a cancellation
-		strAbort = "abort";
-
-		// Install callbacks on deferreds
-		for ( i in { success: 1, error: 1, complete: 1 } ) {
-			jqXHR[ i ]( s[ i ] );
-		}
-
-		// Get transport
-		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-		// If no transport, we auto-abort
-		if ( !transport ) {
-			done( -1, "No Transport" );
-		} else {
-			jqXHR.readyState = 1;
-
-			// Send global event
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-			}
-			// 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;
-				}
-			}
-		}
-
-		// Callback for when everything is done
-		function done( status, nativeStatusText, responses, headers ) {
-			var isSuccess, success, error, response, modified,
-				statusText = nativeStatusText;
-
-			// Called once
-			if ( state === 2 ) {
-				return;
-			}
-
-			// State is "done" now
-			state = 2;
-
-			// Clear timeout if it exists
-			if ( timeoutTimer ) {
-				clearTimeout( timeoutTimer );
-			}
-
-			// Dereference transport for early garbage collection
-			// (no matter how long the jqXHR object will be used)
-			transport = undefined;
-
-			// Cache response headers
-			responseHeadersString = headers || "";
-
-			// Set readyState
-			jqXHR.readyState = status > 0 ? 4 : 0;
-
-			// Determine if successful
-			isSuccess = status >= 200 && status < 300 || status === 304;
-
-			// Get response data
-			if ( responses ) {
-				response = ajaxHandleResponses( s, jqXHR, responses );
-			}
-
-			// Convert no matter what (that way responseXXX fields are always set)
-			response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-			// If successful, handle type chaining
-			if ( isSuccess ) {
-
-				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-				if ( s.ifModified ) {
-					modified = jqXHR.getResponseHeader("Last-Modified");
-					if ( modified ) {
-						jQuery.lastModified[ cacheURL ] = modified;
-					}
-					modified = jqXHR.getResponseHeader("etag");
-					if ( modified ) {
-						jQuery.etag[ cacheURL ] = modified;
-					}
-				}
-
-				// if no content
-				if ( status === 204 || s.type === "HEAD" ) {
-					statusText = "nocontent";
-
-				// if not modified
-				} else if ( status === 304 ) {
-					statusText = "notmodified";
-
-				// If we have data, let's convert it
-				} else {
-					statusText = response.state;
-					success = response.data;
-					error = response.error;
-					isSuccess = !error;
-				}
-			} else {
-				// Extract error from statusText and normalize for non-aborts
-				error = statusText;
-				if ( status || !statusText ) {
-					statusText = "error";
-					if ( status < 0 ) {
-						status = 0;
-					}
-				}
-			}
-
-			// Set data for the fake xhr object
-			jqXHR.status = status;
-			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-			// Success/Error
-			if ( isSuccess ) {
-				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-			} else {
-				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-			}
-
-			// Status-dependent callbacks
-			jqXHR.statusCode( statusCode );
-			statusCode = undefined;
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-					[ jqXHR, s, isSuccess ? success : error ] );
-			}
-
-			// Complete
-			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-				// Handle the global AJAX counter
-				if ( !( --jQuery.active ) ) {
-					jQuery.event.trigger("ajaxStop");
-				}
-			}
-		}
-
-		return jqXHR;
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get( url, data, callback, "json" );
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get( url, undefined, callback, "script" );
-	}
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-	jQuery[ method ] = function( url, data, callback, type ) {
-		// Shift arguments if data argument was omitted
-		if ( jQuery.isFunction( data ) ) {
-			type = type || callback;
-			callback = data;
-			data = undefined;
-		}
-
-		return jQuery.ajax({
-			url: url,
-			type: method,
-			dataType: type,
-			data: data,
-			success: callback
-		});
-	};
-});
-
-
-jQuery._evalUrl = function( url ) {
-	return jQuery.ajax({
-		url: url,
-		type: "GET",
-		dataType: "script",
-		async: false,
-		global: false,
-		"throws": true
-	});
-};
-
-
-jQuery.fn.extend({
-	wrapAll: function( html ) {
-		var wrap;
-
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapAll( html.call(this, i) );
-			});
-		}
-
-		if ( this[ 0 ] ) {
-
-			// The elements to wrap the target around
-			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
-
-			if ( this[ 0 ].parentNode ) {
-				wrap.insertBefore( this[ 0 ] );
-			}
-
-			wrap.map(function() {
-				var elem = this;
-
-				while ( elem.firstElementChild ) {
-					elem = elem.firstElementChild;
-				}
-
-				return elem;
-			}).append( this );
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapInner( html.call(this, i) );
-			});
-		}
-
-		return this.each(function() {
-			var self = jQuery( this ),
-				contents = self.contents();
-
-			if ( contents.length ) {
-				contents.wrapAll( html );
-
-			} else {
-				self.append( html );
-			}
-		});
-	},
-
-	wrap: function( html ) {
-		var isFunction = jQuery.isFunction( html );
-
-		return this.each(function( i ) {
-			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-		});
-	},
-
-	unwrap: function() {
-		return this.parent().each(function() {
-			if ( !jQuery.nodeName( this, "body" ) ) {
-				jQuery( this ).replaceWith( this.childNodes );
-			}
-		}).end();
-	}
-});
-
-
-jQuery.expr.filters.hidden = function( elem ) {
-	// Support: Opera <= 12.12
-	// Opera reports offsetWidths and offsetHeights less than zero on some elements
-	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
-};
-jQuery.expr.filters.visible = function( elem ) {
-	return !jQuery.expr.filters.hidden( elem );
-};
-
-
-
-
-var r20 = /%20/g,
-	rbracket = /\[\]$/,
-	rCRLF = /\r?\n/g,
-	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-	rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
-	var name;
-
-	if ( jQuery.isArray( obj ) ) {
-		// Serialize array item.
-		jQuery.each( obj, function( i, v ) {
-			if ( traditional || rbracket.test( prefix ) ) {
-				// Treat each array item as a scalar.
-				add( prefix, v );
-
-			} else {
-				// Item is non-scalar (array or object), encode its numeric index.
-				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-			}
-		});
-
-	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
-		// Serialize object item.
-		for ( name in obj ) {
-			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-		}
-
-	} else {
-		// Serialize scalar item.
-		add( prefix, obj );
-	}
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
-	var prefix,
-		s = [],
-		add = function( key, value ) {
-			// If value is a function, invoke it and return its value
-			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-		};
-
-	// Set traditional to true for jQuery <= 1.3.2 behavior.
-	if ( traditional === undefined ) {
-		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-	}
-
-	// If an array was passed in, assume that it is an array of form elements.
-	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-		// Serialize the form elements
-		jQuery.each( a, function() {
-			add( this.name, this.value );
-		});
-
-	} else {
-		// If traditional, encode the "old" way (the way 1.3.2 or older
-		// did it), otherwise encode params recursively.
-		for ( prefix in a ) {
-			buildParams( prefix, a[ prefix ], traditional, add );
-		}
-	}
-
-	// Return the resulting serialization
-	return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend({
-	serialize: function() {
-		return jQuery.param( this.serializeArray() );
-	},
-	serializeArray: function() {
-		return this.map(function() {
-			// Can add propHook for "elements" to filter or add form elements
-			var elements = jQuery.prop( this, "elements" );
-			return elements ? jQuery.makeArray( elements ) : this;
-		})
-		.filter(function() {
-			var type = this.type;
-
-			// Use .is( ":disabled" ) so that fieldset[disabled] works
-			return this.name && !jQuery( this ).is( ":disabled" ) &&
-				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-				( this.checked || !rcheckableType.test( type ) );
-		})
-		.map(function( i, elem ) {
-			var val = jQuery( this ).val();
-
-			return val == null ?
-				null :
-				jQuery.isArray( val ) ?
-					jQuery.map( val, function( val ) {
-						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-					}) :
-					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-		}).get();
-	}
-});
-
-
-jQuery.ajaxSettings.xhr = function() {
-	try {
-		return new XMLHttpRequest();
-	} catch( e ) {}
-};
-
-var xhrId = 0,
-	xhrCallbacks = {},
-	xhrSuccessStatus = {
-		// file protocol always yields status code 0, assume 200
-		0: 200,
-		// Support: IE9
-		// #1450: sometimes IE returns 1223 when it should be 204
-		1223: 204
-	},
-	xhrSupported = jQuery.ajaxSettings.xhr();
-
-// Support: IE9
-// Open requests must be manually aborted on unload (#5280)
-// See https://support.microsoft.com/kb/2856746 for more info
-if ( window.attachEvent ) {
-	window.attachEvent( "onunload", function() {
-		for ( var key in xhrCallbacks ) {
-			xhrCallbacks[ key ]();
-		}
-	});
-}
-
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-support.ajax = xhrSupported = !!xhrSupported;
-
-jQuery.ajaxTransport(function( options ) {
-	var callback;
-
-	// Cross domain only allowed if supported through XMLHttpRequest
-	if ( support.cors || xhrSupported && !options.crossDomain ) {
-		return {
-			send: function( headers, complete ) {
-				var i,
-					xhr = options.xhr(),
-					id = ++xhrId;
-
-				xhr.open( options.type, options.url, options.async, options.username, options.password );
-
-				// Apply custom fields if provided
-				if ( options.xhrFields ) {
-					for ( i in options.xhrFields ) {
-						xhr[ i ] = options.xhrFields[ i ];
-					}
-				}
-
-				// Override mime type if needed
-				if ( options.mimeType && xhr.overrideMimeType ) {
-					xhr.overrideMimeType( options.mimeType );
-				}
-
-				// X-Requested-With header
-				// For cross-domain requests, seeing as conditions for a preflight are
-				// akin to a jigsaw puzzle, we simply never set it to be sure.
-				// (it can always be set on a per-request basis or even using ajaxSetup)
-				// For same-domain requests, won't change header if already provided.
-				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
-					headers["X-Requested-With"] = "XMLHttpRequest";
-				}
-
-				// Set headers
-				for ( i in headers ) {
-					xhr.setRequestHeader( i, headers[ i ] );
-				}
-
-				// Callback
-				callback = function( type ) {
-					return function() {
-						if ( callback ) {
-							delete xhrCallbacks[ id ];
-							callback = xhr.onload = xhr.onerror = null;
-
-							if ( type === "abort" ) {
-								xhr.abort();
-							} else if ( type === "error" ) {
-								complete(
-									// file: protocol always yields status 0; see #8605, #14207
-									xhr.status,
-									xhr.statusText
-								);
-							} else {
-								complete(
-									xhrSuccessStatus[ xhr.status ] || xhr.status,
-									xhr.statusText,
-									// Support: IE9
-									// Accessing binary-data responseText throws an exception
-									// (#11426)
-									typeof xhr.responseText === "string" ? {
-										text: xhr.responseText
-									} : undefined,
-									xhr.getAllResponseHeaders()
-								);
-							}
-						}
-					};
-				};
-
-				// Listen to events
-				xhr.onload = callback();
-				xhr.onerror = callback("error");
-
-				// Create the abort callback
-				callback = xhrCallbacks[ id ] = callback("abort");
-
-				try {
-					// Do send the request (this may raise an exception)
-					xhr.send( options.hasContent && options.data || null );
-				} catch ( e ) {
-					// #14683: Only rethrow if this hasn't been notified as an error yet
-					if ( callback ) {
-						throw e;
-					}
-				}
-			},
-
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
-	accepts: {
-		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-	},
-	contents: {
-		script: /(?:java|ecma)script/
-	},
-	converters: {
-		"text script": function( text ) {
-			jQuery.globalEval( text );
-			return text;
-		}
-	}
-});
-
-// Handle cache's special case and crossDomain
-jQuery.ajaxPrefilter( "script", function( s ) {
-	if ( s.cache === undefined ) {
-		s.cache = false;
-	}
-	if ( s.crossDomain ) {
-		s.type = "GET";
-	}
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function( s ) {
-	// This transport only deals with cross domain requests
-	if ( s.crossDomain ) {
-		var script, callback;
-		return {
-			send: function( _, complete ) {
-				script = jQuery("<script>").prop({
-					async: true,
-					charset: s.scriptCharset,
-					src: s.url
-				}).on(
-					"load error",
-					callback = function( evt ) {
-						script.remove();
-						callback = null;
-						if ( evt ) {
-							complete( evt.type === "error" ? 404 : 200, evt.type );
-						}
-					}
-				);
-				document.head.appendChild( script[ 0 ] );
-			},
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-
-
-
-var oldCallbacks = [],
-	rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-	jsonp: "callback",
-	jsonpCallback: function() {
-		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
-		this[ callback ] = true;
-		return callback;
-	}
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-	var callbackName, overwritten, responseContainer,
-		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-			"url" :
-			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-		);
-
-	// Handle iff the expected data type is "jsonp" or we have a parameter to set
-	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-		// Get callback name, remembering preexisting value associated with it
-		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-			s.jsonpCallback() :
-			s.jsonpCallback;
-
-		// Insert callback into url or form data
-		if ( jsonProp ) {
-			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-		} else if ( s.jsonp !== false ) {
-			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-		}
-
-		// Use data converter to retrieve json after script execution
-		s.converters["script json"] = function() {
-			if ( !responseContainer ) {
-				jQuery.error( callbackName + " was not called" );
-			}
-			return responseContainer[ 0 ];
-		};
-
-		// force json dataType
-		s.dataTypes[ 0 ] = "json";
-
-		// Install callback
-		overwritten = window[ callbackName ];
-		window[ callbackName ] = function() {
-			responseContainer = arguments;
-		};
-
-		// Clean-up function (fires after converters)
-		jqXHR.always(function() {
-			// 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";
-	}
-});
-
-
-
-
-// data: string of html
-// context (optional): If specified, the fragment will be created in this context, defaults to document
-// keepScripts (optional): If true, will include scripts passed in the html string
-jQuery.parseHTML = function( data, context, keepScripts ) {
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-	if ( typeof context === "boolean" ) {
-		keepScripts = context;
-		context = false;
-	}
-	context = context || document;
-
-	var parsed = rsingleTag.exec( data ),
-		scripts = !keepScripts && [];
-
-	// Single tag
-	if ( parsed ) {
-		return [ context.createElement( parsed[1] ) ];
-	}
-
-	parsed = jQuery.buildFragment( [ data ], context, scripts );
-
-	if ( scripts && scripts.length ) {
-		jQuery( scripts ).remove();
-	}
-
-	return jQuery.merge( [], parsed.childNodes );
-};
-
-
-// Keep a copy of the old load method
-var _load = jQuery.fn.load;
-
-/**
- * Load a url into a page
- */
-jQuery.fn.load = function( url, params, callback ) {
-	if ( typeof url !== "string" && _load ) {
-		return _load.apply( this, arguments );
-	}
-
-	var selector, type, response,
-		self = this,
-		off = url.indexOf(" ");
-
-	if ( off >= 0 ) {
-		selector = jQuery.trim( url.slice( off ) );
-		url = url.slice( 0, off );
-	}
-
-	// If it's a function
-	if ( jQuery.isFunction( params ) ) {
-
-		// We assume that it's the callback
-		callback = params;
-		params = undefined;
-
-	// Otherwise, build a param string
-	} else if ( params && typeof params === "object" ) {
-		type = "POST";
-	}
-
-	// If we have elements to modify, make the request
-	if ( self.length > 0 ) {
-		jQuery.ajax({
-			url: url,
-
-			// if "type" variable is undefined, then "GET" method will be used
-			type: type,
-			dataType: "html",
-			data: params
-		}).done(function( responseText ) {
-
-			// Save response for use in complete callback
-			response = arguments;
-
-			self.html( selector ?
-
-				// If a selector was specified, locate the right elements in a dummy div
-				// Exclude scripts to avoid IE 'Permission Denied' errors
-				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-				// Otherwise use the full result
-				responseText );
-
-		}).complete( callback && function( jqXHR, status ) {
-			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-		});
-	}
-
-	return this;
-};
-
-
-
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
-	jQuery.fn[ type ] = function( fn ) {
-		return this.on( type, fn );
-	};
-});
-
-
-
-
-jQuery.expr.filters.animated = function( elem ) {
-	return jQuery.grep(jQuery.timers, function( fn ) {
-		return elem === fn.elem;
-	}).length;
-};
-
-
-
-
-var docElem = window.document.documentElement;
-
-/**
- * Gets a window from an element
- */
-function getWindow( elem ) {
-	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
-}
-
-jQuery.offset = {
-	setOffset: function( elem, options, i ) {
-		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
-			position = jQuery.css( elem, "position" ),
-			curElem = jQuery( elem ),
-			props = {};
-
-		// Set position first, in-case top/left are set even on static elem
-		if ( position === "static" ) {
-			elem.style.position = "relative";
-		}
-
-		curOffset = curElem.offset();
-		curCSSTop = jQuery.css( elem, "top" );
-		curCSSLeft = jQuery.css( elem, "left" );
-		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
-			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
-
-		// Need to be able to calculate position if either
-		// top or left is auto and position is either absolute or fixed
-		if ( calculatePosition ) {
-			curPosition = curElem.position();
-			curTop = curPosition.top;
-			curLeft = curPosition.left;
-
-		} else {
-			curTop = parseFloat( curCSSTop ) || 0;
-			curLeft = parseFloat( curCSSLeft ) || 0;
-		}
-
-		if ( jQuery.isFunction( options ) ) {
-			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({
-	offset: function( options ) {
-		if ( arguments.length ) {
-			return options === undefined ?
-				this :
-				this.each(function( i ) {
-					jQuery.offset.setOffset( this, options, i );
-				});
-		}
-
-		var docElem, win,
-			elem = this[ 0 ],
-			box = { top: 0, left: 0 },
-			doc = elem && elem.ownerDocument;
-
-		if ( !doc ) {
-			return;
-		}
-
-		docElem = doc.documentElement;
-
-		// Make sure it's not a disconnected DOM node
-		if ( !jQuery.contains( docElem, elem ) ) {
-			return box;
-		}
-
-		// Support: BlackBerry 5, iOS 3 (original iPhone)
-		// If we don't have gBCR, just use 0,0 rather than error
-		if ( typeof elem.getBoundingClientRect !== strundefined ) {
-			box = elem.getBoundingClientRect();
-		}
-		win = getWindow( doc );
-		return {
-			top: box.top + win.pageYOffset - docElem.clientTop,
-			left: box.left + win.pageXOffset - docElem.clientLeft
-		};
-	},
-
-	position: function() {
-		if ( !this[ 0 ] ) {
-			return;
-		}
-
-		var offsetParent, offset,
-			elem = this[ 0 ],
-			parentOffset = { top: 0, left: 0 };
-
-		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
-		if ( jQuery.css( elem, "position" ) === "fixed" ) {
-			// Assume getBoundingClientRect is there when computed position is fixed
-			offset = elem.getBoundingClientRect();
-
-		} else {
-			// Get *real* offsetParent
-			offsetParent = this.offsetParent();
-
-			// Get correct offsets
-			offset = this.offset();
-			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-				parentOffset = offsetParent.offset();
-			}
-
-			// Add offsetParent borders
-			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-		}
-
-		// Subtract parent offsets and element margins
-		return {
-			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
-		};
-	},
-
-	offsetParent: function() {
-		return this.map(function() {
-			var offsetParent = this.offsetParent || docElem;
-
-			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
-				offsetParent = offsetParent.offsetParent;
-			}
-
-			return offsetParent || docElem;
-		});
-	}
-});
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
-	var top = "pageYOffset" === prop;
-
-	jQuery.fn[ method ] = function( val ) {
-		return access( this, function( elem, method, val ) {
-			var win = getWindow( elem );
-
-			if ( val === undefined ) {
-				return win ? win[ prop ] : elem[ method ];
-			}
-
-			if ( win ) {
-				win.scrollTo(
-					!top ? val : window.pageXOffset,
-					top ? val : window.pageYOffset
-				);
-
-			} else {
-				elem[ method ] = val;
-			}
-		}, method, val, arguments.length, null );
-	};
-});
-
-// Support: Safari<7+, Chrome<37+
-// Add the top/left cssHooks using jQuery.fn.position
-// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
-// getComputedStyle returns percent when specified for top/left/bottom/right;
-// rather than make the css module depend on the offset module, just check for it here
-jQuery.each( [ "top", "left" ], function( i, prop ) {
-	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
-		function( elem, computed ) {
-			if ( computed ) {
-				computed = curCSS( elem, prop );
-				// If curCSS returns percentage, fallback to offset
-				return rnumnonpx.test( computed ) ?
-					jQuery( elem ).position()[ prop ] + "px" :
-					computed;
-			}
-		}
-	);
-});
-
-
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-		// Margin is only for outerHeight, outerWidth
-		jQuery.fn[ funcName ] = function( margin, value ) {
-			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-			return access( this, function( elem, type, value ) {
-				var doc;
-
-				if ( jQuery.isWindow( elem ) ) {
-					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-					// isn't a whole lot we can do. See pull request at this URL for discussion:
-					// https://github.com/jquery/jquery/pull/764
-					return elem.document.documentElement[ "client" + name ];
-				}
-
-				// Get document width or height
-				if ( elem.nodeType === 9 ) {
-					doc = elem.documentElement;
-
-					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
-					// whichever is greatest
-					return Math.max(
-						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-						elem.body[ "offset" + name ], doc[ "offset" + name ],
-						doc[ "client" + name ]
-					);
-				}
-
-				return value === undefined ?
-					// Get width or height on the element, requesting but not forcing parseFloat
-					jQuery.css( elem, type, extra ) :
-
-					// Set width or height on the element
-					jQuery.style( elem, type, value, extra );
-			}, type, chainable ? margin : undefined, chainable, null );
-		};
-	});
-});
-
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-	return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-
-
-
-// Register as a named AMD module, since jQuery can be concatenated with other
-// files that may use define, but not via a proper concatenation script that
-// understands anonymous AMD modules. A named AMD is safest and most robust
-// way to register. Lowercase jquery is used because AMD module names are
-// derived from file names, and jQuery is normally delivered in a lowercase
-// file name. Do this after creating the global so that if an AMD module wants
-// to call noConflict to hide this version of jQuery, it will work.
-
-// Note that for maximum portability, libraries that are not jQuery should
-// declare themselves as anonymous modules, and avoid setting a global if an
-// AMD loader is present. jQuery is a special case. For more information, see
-// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
-
-if ( typeof define === "function" && define.amd ) {
-	define( "jquery", [], function() {
-		return jQuery;
-	});
-}
-
-
-
-
-var
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$;
-
-jQuery.noConflict = function( deep ) {
-	if ( window.$ === jQuery ) {
-		window.$ = _$;
-	}
-
-	if ( deep && window.jQuery === jQuery ) {
-		window.jQuery = _jQuery;
-	}
-
-	return jQuery;
-};
-
-// Expose jQuery and $ identifiers, even in AMD
-// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
-if ( typeof noGlobal === strundefined ) {
-	window.jQuery = window.$ = jQuery;
-}
-
-
-
-
-return jQuery;
-
-}));
diff --git a/src/main/webapp/bower_components/jquery/dist/jquery.min.js b/src/main/webapp/bower_components/jquery/dist/jquery.min.js
deleted file mode 100644
index 18bdbed7..00000000
--- a/src/main/webapp/bower_components/jquery/dist/jquery.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=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=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(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 pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),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){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.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},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.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=gb.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=gb.selectors={cacheLength:50,createPseudo:ib,match:X,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===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]||gb.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]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(cb,db).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("(^|"+L+")"+a+"("+L+"|$)"))&&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=gb.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(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(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:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).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:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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 Z.test(a.nodeName)},input:function(a){return Y.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:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(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}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)
-},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),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),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==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,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.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 this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(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&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):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):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
-},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.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){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.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(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \t]*([^\r\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\/\//,kc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lc={},mc={},nc="*/".concat("*"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.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 rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.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 sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(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}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(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}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:"GET",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+"").replace(ec,"").replace(jc,pc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pc[3]||("http:"===pc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(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 this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\[\]$/,xc=/\r?\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ac(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join("&").replace(vc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,"\r\n")}}):{name:b.name,value:c.replace(xc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&"withCredentials"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});
-//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/jquery/dist/jquery.min.map b/src/main/webapp/bower_components/jquery/dist/jquery.min.map
deleted file mode 100644
index f8c5cdbe..00000000
--- a/src/main/webapp/bower_components/jquery/dist/jquery.min.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","nodeType","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","value","isArraylike","makeArray","results","Object","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","truncate","sibling","n","targets","l","closest","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","fire","data","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","completed","removeEventListener","readyState","setTimeout","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","defineProperty","uid","accepts","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","data_priv","data_user","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","rcheckableType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","strundefined","focusinBubbles","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","types","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","attaches","on","one","origFn","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","getAll","fixInput","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","buildFragment","scripts","selection","wrap","nodes","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","detach","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","style","display","getDefaultComputedStyle","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","container","backgroundClip","clearCloneStyle","cssText","computePixelPositionAndBoxSizingReliable","divStyle","pixelPosition","boxSizingReliable","reliableMarginRight","marginDiv","marginRight","swap","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","cssHooks","opacity","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","nodeHook","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","removeProp","for","class","notxml","hasAttribute","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","async","contentType","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","status","abort","statusText","finalText","success","method","crossDomain","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrId","xhrCallbacks","xhrSuccessStatus",1223,"xhrSupported","cors","open","username","xhrFields","onload","onerror","responseText","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","left","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/jquery/src/ajax.js b/src/main/webapp/bower_components/jquery/src/ajax.js
deleted file mode 100644
index 5c7b4add..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax.js
+++ /dev/null
@@ -1,786 +0,0 @@
-define([
-	"./core",
-	"./var/rnotwhite",
-	"./ajax/var/nonce",
-	"./ajax/var/rquery",
-	"./core/init",
-	"./ajax/parseJSON",
-	"./ajax/parseXML",
-	"./deferred"
-], function( jQuery, rnotwhite, nonce, rquery ) {
-
-var
-	rhash = /#.*$/,
-	rts = /([?&])_=[^&]*/,
-	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
-	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-	rnoContent = /^(?:GET|HEAD)$/,
-	rprotocol = /^\/\//,
-	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
-
-	/* Prefilters
-	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-	 * 2) These are called:
-	 *    - BEFORE asking for a transport
-	 *    - AFTER param serialization (s.data is a string if s.processData is true)
-	 * 3) key is the dataType
-	 * 4) the catchall symbol "*" can be used
-	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-	 */
-	prefilters = {},
-
-	/* Transports bindings
-	 * 1) key is the dataType
-	 * 2) the catchall symbol "*" can be used
-	 * 3) selection will start with transport dataType and THEN go to "*" if needed
-	 */
-	transports = {},
-
-	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-	allTypes = "*/".concat( "*" ),
-
-	// Document location
-	ajaxLocation = window.location.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,
-			i = 0,
-			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
-		if ( jQuery.isFunction( func ) ) {
-			// For each dataType in the dataTypeExpression
-			while ( (dataType = dataTypes[i++]) ) {
-				// Prepend if requested
-				if ( dataType[0] === "+" ) {
-					dataType = dataType.slice( 1 ) || "*";
-					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-				// Otherwise append
-				} else {
-					(structure[ dataType ] = structure[ dataType ] || []).push( func );
-				}
-			}
-		}
-	};
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-	var inspected = {},
-		seekingTransport = ( structure === transports );
-
-	function inspect( dataType ) {
-		var selected;
-		inspected[ dataType ] = true;
-		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-				options.dataTypes.unshift( dataTypeOrTransport );
-				inspect( dataTypeOrTransport );
-				return false;
-			} else if ( seekingTransport ) {
-				return !( selected = dataTypeOrTransport );
-			}
-		});
-		return selected;
-	}
-
-	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-	var key, deep,
-		flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-	for ( key in src ) {
-		if ( src[ key ] !== undefined ) {
-			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-		}
-	}
-	if ( deep ) {
-		jQuery.extend( true, target, deep );
-	}
-
-	return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
-	var ct, type, finalDataType, firstDataType,
-		contents = s.contents,
-		dataTypes = s.dataTypes;
-
-	// Remove auto dataType and get content-type in the process
-	while ( dataTypes[ 0 ] === "*" ) {
-		dataTypes.shift();
-		if ( ct === undefined ) {
-			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-		}
-	}
-
-	// Check if we're dealing with a known content-type
-	if ( ct ) {
-		for ( type in contents ) {
-			if ( contents[ type ] && contents[ type ].test( ct ) ) {
-				dataTypes.unshift( type );
-				break;
-			}
-		}
-	}
-
-	// Check to see if we have a response for the expected dataType
-	if ( dataTypes[ 0 ] in responses ) {
-		finalDataType = dataTypes[ 0 ];
-	} else {
-		// Try convertible dataTypes
-		for ( type in responses ) {
-			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-				finalDataType = type;
-				break;
-			}
-			if ( !firstDataType ) {
-				firstDataType = type;
-			}
-		}
-		// Or just use first one
-		finalDataType = finalDataType || firstDataType;
-	}
-
-	// If we found a dataType
-	// We add the dataType to the list if needed
-	// and return the corresponding response
-	if ( finalDataType ) {
-		if ( finalDataType !== dataTypes[ 0 ] ) {
-			dataTypes.unshift( finalDataType );
-		}
-		return responses[ finalDataType ];
-	}
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-	var conv2, current, conv, tmp, prev,
-		converters = {},
-		// Work with a copy of dataTypes in case we need to modify it for conversion
-		dataTypes = s.dataTypes.slice();
-
-	// Create converters map with lowercased keys
-	if ( dataTypes[ 1 ] ) {
-		for ( conv in s.converters ) {
-			converters[ conv.toLowerCase() ] = s.converters[ conv ];
-		}
-	}
-
-	current = dataTypes.shift();
-
-	// Convert to each sequential dataType
-	while ( current ) {
-
-		if ( s.responseFields[ current ] ) {
-			jqXHR[ s.responseFields[ current ] ] = response;
-		}
-
-		// Apply the dataFilter if provided
-		if ( !prev && isSuccess && s.dataFilter ) {
-			response = s.dataFilter( response, s.dataType );
-		}
-
-		prev = current;
-		current = dataTypes.shift();
-
-		if ( current ) {
-
-		// There's only work to do if current dataType is non-auto
-			if ( current === "*" ) {
-
-				current = prev;
-
-			// Convert response if prev dataType is non-auto and differs from current
-			} else if ( prev !== "*" && prev !== current ) {
-
-				// Seek a direct converter
-				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-				// If none found, seek a pair
-				if ( !conv ) {
-					for ( conv2 in converters ) {
-
-						// If conv2 outputs current
-						tmp = conv2.split( " " );
-						if ( tmp[ 1 ] === current ) {
-
-							// If prev can be converted to accepted input
-							conv = converters[ prev + " " + tmp[ 0 ] ] ||
-								converters[ "* " + tmp[ 0 ] ];
-							if ( conv ) {
-								// Condense equivalence converters
-								if ( conv === true ) {
-									conv = converters[ conv2 ];
-
-								// Otherwise, insert the intermediate dataType
-								} else if ( converters[ conv2 ] !== true ) {
-									current = tmp[ 0 ];
-									dataTypes.unshift( tmp[ 1 ] );
-								}
-								break;
-							}
-						}
-					}
-				}
-
-				// Apply converter (if not an equivalence)
-				if ( conv !== true ) {
-
-					// Unless errors are allowed to bubble, catch and return them
-					if ( conv && s[ "throws" ] ) {
-						response = conv( response );
-					} else {
-						try {
-							response = conv( response );
-						} catch ( e ) {
-							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return { state: "success", data: response };
-}
-
-jQuery.extend({
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-	etag: {},
-
-	ajaxSettings: {
-		url: ajaxLocation,
-		type: "GET",
-		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-		global: true,
-		processData: true,
-		async: true,
-		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-		/*
-		timeout: 0,
-		data: null,
-		dataType: null,
-		username: null,
-		password: null,
-		cache: null,
-		throws: false,
-		traditional: false,
-		headers: {},
-		*/
-
-		accepts: {
-			"*": allTypes,
-			text: "text/plain",
-			html: "text/html",
-			xml: "application/xml, text/xml",
-			json: "application/json, text/javascript"
-		},
-
-		contents: {
-			xml: /xml/,
-			html: /html/,
-			json: /json/
-		},
-
-		responseFields: {
-			xml: "responseXML",
-			text: "responseText",
-			json: "responseJSON"
-		},
-
-		// Data converters
-		// Keys separate source (or catchall "*") and destination types with a single space
-		converters: {
-
-			// Convert anything to text
-			"* text": String,
-
-			// Text to html (true = no transformation)
-			"text html": true,
-
-			// Evaluate text as a json expression
-			"text json": jQuery.parseJSON,
-
-			// Parse text as xml
-			"text xml": jQuery.parseXML
-		},
-
-		// For options that shouldn't be deep extended:
-		// you can add your own custom options here if
-		// and when you create one that shouldn't be
-		// deep extended (see ajaxExtend)
-		flatOptions: {
-			url: true,
-			context: true
-		}
-	},
-
-	// Creates a full fledged settings object into target
-	// with both ajaxSettings and settings fields.
-	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function( target, settings ) {
-		return settings ?
-
-			// Building a settings object
-			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-			// Extending ajaxSettings
-			ajaxExtend( jQuery.ajaxSettings, target );
-	},
-
-	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-	ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-	// Main method
-	ajax: function( url, options ) {
-
-		// If url is an object, simulate pre-1.5 signature
-		if ( typeof url === "object" ) {
-			options = url;
-			url = undefined;
-		}
-
-		// Force options to be an object
-		options = options || {};
-
-		var transport,
-			// URL without anti-cache param
-			cacheURL,
-			// Response headers
-			responseHeadersString,
-			responseHeaders,
-			// timeout handle
-			timeoutTimer,
-			// 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 is callbackContext if it is a DOM node or jQuery collection
-			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-				jQuery( callbackContext ) :
-				jQuery.event,
-			// Deferreds
-			deferred = jQuery.Deferred(),
-			completeDeferred = jQuery.Callbacks("once memory"),
-			// Status-dependent callbacks
-			statusCode = s.statusCode || {},
-			// Headers (they are sent all at once)
-			requestHeaders = {},
-			requestHeadersNames = {},
-			// The jqXHR state
-			state = 0,
-			// Default abort message
-			strAbort = "canceled",
-			// Fake xhr
-			jqXHR = {
-				readyState: 0,
-
-				// Builds headers hashtable if needed
-				getResponseHeader: function( key ) {
-					var match;
-					if ( state === 2 ) {
-						if ( !responseHeaders ) {
-							responseHeaders = {};
-							while ( (match = rheaders.exec( responseHeadersString )) ) {
-								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-							}
-						}
-						match = responseHeaders[ key.toLowerCase() ];
-					}
-					return match == null ? null : match;
-				},
-
-				// Raw string
-				getAllResponseHeaders: function() {
-					return state === 2 ? responseHeadersString : null;
-				},
-
-				// Caches the header
-				setRequestHeader: function( name, value ) {
-					var lname = name.toLowerCase();
-					if ( !state ) {
-						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-						requestHeaders[ name ] = value;
-					}
-					return this;
-				},
-
-				// Overrides response content-type header
-				overrideMimeType: function( type ) {
-					if ( !state ) {
-						s.mimeType = type;
-					}
-					return this;
-				},
-
-				// Status-dependent callbacks
-				statusCode: function( map ) {
-					var code;
-					if ( map ) {
-						if ( state < 2 ) {
-							for ( code in map ) {
-								// Lazy-add the new callback in a way that preserves old ones
-								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-							}
-						} else {
-							// Execute the appropriate callbacks
-							jqXHR.always( map[ jqXHR.status ] );
-						}
-					}
-					return this;
-				},
-
-				// Cancel the request
-				abort: function( statusText ) {
-					var finalText = statusText || strAbort;
-					if ( transport ) {
-						transport.abort( finalText );
-					}
-					done( 0, finalText );
-					return this;
-				}
-			};
-
-		// Attach deferreds
-		deferred.promise( jqXHR ).complete = completeDeferred.add;
-		jqXHR.success = jqXHR.done;
-		jqXHR.error = jqXHR.fail;
-
-		// Remove hash character (#7531: and string promotion)
-		// Add protocol if not provided (prefilters might expect it)
-		// Handle falsy url in the settings object (#10093: consistency with old signature)
-		// We also use the url parameter if available
-		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
-			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-		// Alias method option to type as per ticket #12004
-		s.type = options.method || options.type || s.method || s.type;
-
-		// Extract dataTypes list
-		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
-		// A cross-domain request is in order when 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
-		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
-		fireGlobals = jQuery.event && s.global;
-
-		// Watch for a new set of requests
-		if ( fireGlobals && jQuery.active++ === 0 ) {
-			jQuery.event.trigger("ajaxStart");
-		}
-
-		// Uppercase the type
-		s.type = s.type.toUpperCase();
-
-		// Determine if request has content
-		s.hasContent = !rnoContent.test( s.type );
-
-		// Save the URL in case we're toying with the If-Modified-Since
-		// and/or If-None-Match header later on
-		cacheURL = s.url;
-
-		// More options handling for requests with no content
-		if ( !s.hasContent ) {
-
-			// If data is available, append data to url
-			if ( s.data ) {
-				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-				// #9682: remove data so that it's not used in an eventual retry
-				delete s.data;
-			}
-
-			// Add anti-cache in url if needed
-			if ( s.cache === false ) {
-				s.url = rts.test( cacheURL ) ?
-
-					// If there is already a '_' parameter, set its value
-					cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
-					// Otherwise add one to the end
-					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
-			}
-		}
-
-		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-		if ( s.ifModified ) {
-			if ( jQuery.lastModified[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-			}
-			if ( jQuery.etag[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-			}
-		}
-
-		// Set the correct header, if data is being sent
-		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-			jqXHR.setRequestHeader( "Content-Type", s.contentType );
-		}
-
-		// Set the Accepts header for the server, depending on the dataType
-		jqXHR.setRequestHeader(
-			"Accept",
-			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-				s.accepts[ "*" ]
-		);
-
-		// Check for headers option
-		for ( i in s.headers ) {
-			jqXHR.setRequestHeader( i, s.headers[ i ] );
-		}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-			// Abort if not done already and return
-			return jqXHR.abort();
-		}
-
-		// Aborting is no longer a cancellation
-		strAbort = "abort";
-
-		// Install callbacks on deferreds
-		for ( i in { success: 1, error: 1, complete: 1 } ) {
-			jqXHR[ i ]( s[ i ] );
-		}
-
-		// Get transport
-		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-		// If no transport, we auto-abort
-		if ( !transport ) {
-			done( -1, "No Transport" );
-		} else {
-			jqXHR.readyState = 1;
-
-			// Send global event
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-			}
-			// 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;
-				}
-			}
-		}
-
-		// Callback for when everything is done
-		function done( status, nativeStatusText, responses, headers ) {
-			var isSuccess, success, error, response, modified,
-				statusText = nativeStatusText;
-
-			// Called once
-			if ( state === 2 ) {
-				return;
-			}
-
-			// State is "done" now
-			state = 2;
-
-			// Clear timeout if it exists
-			if ( timeoutTimer ) {
-				clearTimeout( timeoutTimer );
-			}
-
-			// Dereference transport for early garbage collection
-			// (no matter how long the jqXHR object will be used)
-			transport = undefined;
-
-			// Cache response headers
-			responseHeadersString = headers || "";
-
-			// Set readyState
-			jqXHR.readyState = status > 0 ? 4 : 0;
-
-			// Determine if successful
-			isSuccess = status >= 200 && status < 300 || status === 304;
-
-			// Get response data
-			if ( responses ) {
-				response = ajaxHandleResponses( s, jqXHR, responses );
-			}
-
-			// Convert no matter what (that way responseXXX fields are always set)
-			response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-			// If successful, handle type chaining
-			if ( isSuccess ) {
-
-				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-				if ( s.ifModified ) {
-					modified = jqXHR.getResponseHeader("Last-Modified");
-					if ( modified ) {
-						jQuery.lastModified[ cacheURL ] = modified;
-					}
-					modified = jqXHR.getResponseHeader("etag");
-					if ( modified ) {
-						jQuery.etag[ cacheURL ] = modified;
-					}
-				}
-
-				// if no content
-				if ( status === 204 || s.type === "HEAD" ) {
-					statusText = "nocontent";
-
-				// if not modified
-				} else if ( status === 304 ) {
-					statusText = "notmodified";
-
-				// If we have data, let's convert it
-				} else {
-					statusText = response.state;
-					success = response.data;
-					error = response.error;
-					isSuccess = !error;
-				}
-			} else {
-				// Extract error from statusText and normalize for non-aborts
-				error = statusText;
-				if ( status || !statusText ) {
-					statusText = "error";
-					if ( status < 0 ) {
-						status = 0;
-					}
-				}
-			}
-
-			// Set data for the fake xhr object
-			jqXHR.status = status;
-			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-			// Success/Error
-			if ( isSuccess ) {
-				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-			} else {
-				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-			}
-
-			// Status-dependent callbacks
-			jqXHR.statusCode( statusCode );
-			statusCode = undefined;
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-					[ jqXHR, s, isSuccess ? success : error ] );
-			}
-
-			// Complete
-			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-				// Handle the global AJAX counter
-				if ( !( --jQuery.active ) ) {
-					jQuery.event.trigger("ajaxStop");
-				}
-			}
-		}
-
-		return jqXHR;
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get( url, data, callback, "json" );
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get( url, undefined, callback, "script" );
-	}
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-	jQuery[ method ] = function( url, data, callback, type ) {
-		// Shift arguments if data argument was omitted
-		if ( jQuery.isFunction( data ) ) {
-			type = type || callback;
-			callback = data;
-			data = undefined;
-		}
-
-		return jQuery.ajax({
-			url: url,
-			type: method,
-			dataType: type,
-			data: data,
-			success: callback
-		});
-	};
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/jsonp.js b/src/main/webapp/bower_components/jquery/src/ajax/jsonp.js
deleted file mode 100644
index ff0d5389..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/jsonp.js
+++ /dev/null
@@ -1,89 +0,0 @@
-define([
-	"../core",
-	"./var/nonce",
-	"./var/rquery",
-	"../ajax"
-], function( jQuery, nonce, rquery ) {
-
-var oldCallbacks = [],
-	rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
-	jsonp: "callback",
-	jsonpCallback: function() {
-		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
-		this[ callback ] = true;
-		return callback;
-	}
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
-	var callbackName, overwritten, responseContainer,
-		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
-			"url" :
-			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
-		);
-
-	// Handle iff the expected data type is "jsonp" or we have a parameter to set
-	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
-		// Get callback name, remembering preexisting value associated with it
-		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
-			s.jsonpCallback() :
-			s.jsonpCallback;
-
-		// Insert callback into url or form data
-		if ( jsonProp ) {
-			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
-		} else if ( s.jsonp !== false ) {
-			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
-		}
-
-		// Use data converter to retrieve json after script execution
-		s.converters["script json"] = function() {
-			if ( !responseContainer ) {
-				jQuery.error( callbackName + " was not called" );
-			}
-			return responseContainer[ 0 ];
-		};
-
-		// force json dataType
-		s.dataTypes[ 0 ] = "json";
-
-		// Install callback
-		overwritten = window[ callbackName ];
-		window[ callbackName ] = function() {
-			responseContainer = arguments;
-		};
-
-		// Clean-up function (fires after converters)
-		jqXHR.always(function() {
-			// 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";
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/load.js b/src/main/webapp/bower_components/jquery/src/ajax/load.js
deleted file mode 100644
index bff25b1a..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/load.js
+++ /dev/null
@@ -1,75 +0,0 @@
-define([
-	"../core",
-	"../core/parseHTML",
-	"../ajax",
-	"../traversing",
-	"../manipulation",
-	"../selector",
-	// Optional event/alias dependency
-	"../event/alias"
-], function( jQuery ) {
-
-// Keep a copy of the old load method
-var _load = jQuery.fn.load;
-
-/**
- * Load a url into a page
- */
-jQuery.fn.load = function( url, params, callback ) {
-	if ( typeof url !== "string" && _load ) {
-		return _load.apply( this, arguments );
-	}
-
-	var selector, type, response,
-		self = this,
-		off = url.indexOf(" ");
-
-	if ( off >= 0 ) {
-		selector = jQuery.trim( url.slice( off ) );
-		url = url.slice( 0, off );
-	}
-
-	// If it's a function
-	if ( jQuery.isFunction( params ) ) {
-
-		// We assume that it's the callback
-		callback = params;
-		params = undefined;
-
-	// Otherwise, build a param string
-	} else if ( params && typeof params === "object" ) {
-		type = "POST";
-	}
-
-	// If we have elements to modify, make the request
-	if ( self.length > 0 ) {
-		jQuery.ajax({
-			url: url,
-
-			// if "type" variable is undefined, then "GET" method will be used
-			type: type,
-			dataType: "html",
-			data: params
-		}).done(function( responseText ) {
-
-			// Save response for use in complete callback
-			response = arguments;
-
-			self.html( selector ?
-
-				// If a selector was specified, locate the right elements in a dummy div
-				// Exclude scripts to avoid IE 'Permission Denied' errors
-				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
-				// Otherwise use the full result
-				responseText );
-
-		}).complete( callback && function( jqXHR, status ) {
-			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
-		});
-	}
-
-	return this;
-};
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/parseJSON.js b/src/main/webapp/bower_components/jquery/src/ajax/parseJSON.js
deleted file mode 100644
index 3a96d15b..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/parseJSON.js
+++ /dev/null
@@ -1,13 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-// Support: Android 2.3
-// Workaround failure to string-cast null input
-jQuery.parseJSON = function( data ) {
-	return JSON.parse( data + "" );
-};
-
-return jQuery.parseJSON;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/parseXML.js b/src/main/webapp/bower_components/jquery/src/ajax/parseXML.js
deleted file mode 100644
index 9eeb625f..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/parseXML.js
+++ /dev/null
@@ -1,28 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
-	var xml, tmp;
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-
-	// Support: IE9
-	try {
-		tmp = new DOMParser();
-		xml = tmp.parseFromString( data, "text/xml" );
-	} catch ( e ) {
-		xml = undefined;
-	}
-
-	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
-	}
-	return xml;
-};
-
-return jQuery.parseXML;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/script.js b/src/main/webapp/bower_components/jquery/src/ajax/script.js
deleted file mode 100644
index f44329d4..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/script.js
+++ /dev/null
@@ -1,64 +0,0 @@
-define([
-	"../core",
-	"../ajax"
-], function( jQuery ) {
-
-// Install script dataType
-jQuery.ajaxSetup({
-	accepts: {
-		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-	},
-	contents: {
-		script: /(?:java|ecma)script/
-	},
-	converters: {
-		"text script": function( text ) {
-			jQuery.globalEval( text );
-			return text;
-		}
-	}
-});
-
-// Handle cache's special case and crossDomain
-jQuery.ajaxPrefilter( "script", function( s ) {
-	if ( s.cache === undefined ) {
-		s.cache = false;
-	}
-	if ( s.crossDomain ) {
-		s.type = "GET";
-	}
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function( s ) {
-	// This transport only deals with cross domain requests
-	if ( s.crossDomain ) {
-		var script, callback;
-		return {
-			send: function( _, complete ) {
-				script = jQuery("<script>").prop({
-					async: true,
-					charset: s.scriptCharset,
-					src: s.url
-				}).on(
-					"load error",
-					callback = function( evt ) {
-						script.remove();
-						callback = null;
-						if ( evt ) {
-							complete( evt.type === "error" ? 404 : 200, evt.type );
-						}
-					}
-				);
-				document.head.appendChild( script[ 0 ] );
-			},
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/var/nonce.js b/src/main/webapp/bower_components/jquery/src/ajax/var/nonce.js
deleted file mode 100644
index 0871aae8..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/var/nonce.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"../../core"
-], function( jQuery ) {
-	return jQuery.now();
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/var/rquery.js b/src/main/webapp/bower_components/jquery/src/ajax/var/rquery.js
deleted file mode 100644
index 500a77a0..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/var/rquery.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return (/\?/);
-});
diff --git a/src/main/webapp/bower_components/jquery/src/ajax/xhr.js b/src/main/webapp/bower_components/jquery/src/ajax/xhr.js
deleted file mode 100644
index c2b43c92..00000000
--- a/src/main/webapp/bower_components/jquery/src/ajax/xhr.js
+++ /dev/null
@@ -1,136 +0,0 @@
-define([
-	"../core",
-	"../var/support",
-	"../ajax"
-], function( jQuery, support ) {
-
-jQuery.ajaxSettings.xhr = function() {
-	try {
-		return new XMLHttpRequest();
-	} catch( e ) {}
-};
-
-var xhrId = 0,
-	xhrCallbacks = {},
-	xhrSuccessStatus = {
-		// file protocol always yields status code 0, assume 200
-		0: 200,
-		// Support: IE9
-		// #1450: sometimes IE returns 1223 when it should be 204
-		1223: 204
-	},
-	xhrSupported = jQuery.ajaxSettings.xhr();
-
-// Support: IE9
-// Open requests must be manually aborted on unload (#5280)
-// See https://support.microsoft.com/kb/2856746 for more info
-if ( window.attachEvent ) {
-	window.attachEvent( "onunload", function() {
-		for ( var key in xhrCallbacks ) {
-			xhrCallbacks[ key ]();
-		}
-	});
-}
-
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-support.ajax = xhrSupported = !!xhrSupported;
-
-jQuery.ajaxTransport(function( options ) {
-	var callback;
-
-	// Cross domain only allowed if supported through XMLHttpRequest
-	if ( support.cors || xhrSupported && !options.crossDomain ) {
-		return {
-			send: function( headers, complete ) {
-				var i,
-					xhr = options.xhr(),
-					id = ++xhrId;
-
-				xhr.open( options.type, options.url, options.async, options.username, options.password );
-
-				// Apply custom fields if provided
-				if ( options.xhrFields ) {
-					for ( i in options.xhrFields ) {
-						xhr[ i ] = options.xhrFields[ i ];
-					}
-				}
-
-				// Override mime type if needed
-				if ( options.mimeType && xhr.overrideMimeType ) {
-					xhr.overrideMimeType( options.mimeType );
-				}
-
-				// X-Requested-With header
-				// For cross-domain requests, seeing as conditions for a preflight are
-				// akin to a jigsaw puzzle, we simply never set it to be sure.
-				// (it can always be set on a per-request basis or even using ajaxSetup)
-				// For same-domain requests, won't change header if already provided.
-				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
-					headers["X-Requested-With"] = "XMLHttpRequest";
-				}
-
-				// Set headers
-				for ( i in headers ) {
-					xhr.setRequestHeader( i, headers[ i ] );
-				}
-
-				// Callback
-				callback = function( type ) {
-					return function() {
-						if ( callback ) {
-							delete xhrCallbacks[ id ];
-							callback = xhr.onload = xhr.onerror = null;
-
-							if ( type === "abort" ) {
-								xhr.abort();
-							} else if ( type === "error" ) {
-								complete(
-									// file: protocol always yields status 0; see #8605, #14207
-									xhr.status,
-									xhr.statusText
-								);
-							} else {
-								complete(
-									xhrSuccessStatus[ xhr.status ] || xhr.status,
-									xhr.statusText,
-									// Support: IE9
-									// Accessing binary-data responseText throws an exception
-									// (#11426)
-									typeof xhr.responseText === "string" ? {
-										text: xhr.responseText
-									} : undefined,
-									xhr.getAllResponseHeaders()
-								);
-							}
-						}
-					};
-				};
-
-				// Listen to events
-				xhr.onload = callback();
-				xhr.onerror = callback("error");
-
-				// Create the abort callback
-				callback = xhrCallbacks[ id ] = callback("abort");
-
-				try {
-					// Do send the request (this may raise an exception)
-					xhr.send( options.hasContent && options.data || null );
-				} catch ( e ) {
-					// #14683: Only rethrow if this hasn't been notified as an error yet
-					if ( callback ) {
-						throw e;
-					}
-				}
-			},
-
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes.js b/src/main/webapp/bower_components/jquery/src/attributes.js
deleted file mode 100644
index fa2ef1ed..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes.js
+++ /dev/null
@@ -1,11 +0,0 @@
-define([
-	"./core",
-	"./attributes/attr",
-	"./attributes/prop",
-	"./attributes/classes",
-	"./attributes/val"
-], function( jQuery ) {
-
-// Return jQuery for attributes-only inclusion
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes/attr.js b/src/main/webapp/bower_components/jquery/src/attributes/attr.js
deleted file mode 100644
index a4414d11..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes/attr.js
+++ /dev/null
@@ -1,141 +0,0 @@
-define([
-	"../core",
-	"../var/rnotwhite",
-	"../var/strundefined",
-	"../core/access",
-	"./support",
-	"../selector"
-], function( jQuery, rnotwhite, strundefined, access, support ) {
-
-var nodeHook, boolHook,
-	attrHandle = jQuery.expr.attrHandle;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	}
-});
-
-jQuery.extend({
-	attr: function( elem, name, value ) {
-		var hooks, ret,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === strundefined ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] ||
-				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-
-			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, value + "" );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-			ret = jQuery.find.attr( elem, name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret == null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var name, propName,
-			i = 0,
-			attrNames = value && value.match( rnotwhite );
-
-		if ( attrNames && elem.nodeType === 1 ) {
-			while ( (name = attrNames[i++]) ) {
-				propName = jQuery.propFix[ name ] || name;
-
-				// Boolean attributes get special treatment (#10870)
-				if ( jQuery.expr.match.bool.test( name ) ) {
-					// Set corresponding property to false
-					elem[ propName ] = false;
-				}
-
-				elem.removeAttribute( name );
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				if ( !support.radioValue && value === "radio" &&
-					jQuery.nodeName( elem, "input" ) ) {
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		}
-	}
-});
-
-// Hooks for boolean attributes
-boolHook = {
-	set: function( elem, value, name ) {
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			elem.setAttribute( name, name );
-		}
-		return name;
-	}
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-	var getter = attrHandle[ name ] || jQuery.find.attr;
-
-	attrHandle[ name ] = function( elem, name, isXML ) {
-		var ret, handle;
-		if ( !isXML ) {
-			// Avoid an infinite loop by temporarily removing this function from the getter
-			handle = attrHandle[ name ];
-			attrHandle[ name ] = ret;
-			ret = getter( elem, name, isXML ) != null ?
-				name.toLowerCase() :
-				null;
-			attrHandle[ name ] = handle;
-		}
-		return ret;
-	};
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes/classes.js b/src/main/webapp/bower_components/jquery/src/attributes/classes.js
deleted file mode 100644
index 10113841..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes/classes.js
+++ /dev/null
@@ -1,158 +0,0 @@
-define([
-	"../core",
-	"../var/rnotwhite",
-	"../var/strundefined",
-	"../data/var/data_priv",
-	"../core/init"
-], function( jQuery, rnotwhite, strundefined, data_priv ) {
-
-var rclass = /[\t\r\n\f]/g;
-
-jQuery.fn.extend({
-	addClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call( this, j, this.className ) );
-			});
-		}
-
-		if ( proceed ) {
-			// The disjunction here is for better compressibility (see removeClass)
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					" "
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-							cur += clazz + " ";
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = jQuery.trim( cur );
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = arguments.length === 0 || typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call( this, j, this.className ) );
-			});
-		}
-		if ( proceed ) {
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				// This expression is here for better compressibility (see addClass)
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					""
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						// Remove *all* instances
-						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-							cur = cur.replace( " " + clazz + " ", " " );
-						}
-					}
-
-					// Only assign if different to avoid unneeded rendering.
-					finalValue = value ? jQuery.trim( cur ) : "";
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value;
-
-		if ( typeof stateVal === "boolean" && type === "string" ) {
-			return stateVal ? this.addClass( value ) : this.removeClass( value );
-		}
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// Toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					classNames = value.match( rnotwhite ) || [];
-
-				while ( (className = classNames[ i++ ]) ) {
-					// Check each className given, space separated list
-					if ( self.hasClass( className ) ) {
-						self.removeClass( className );
-					} else {
-						self.addClass( className );
-					}
-				}
-
-			// Toggle whole class name
-			} else if ( type === strundefined || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					data_priv.set( this, "__className__", this.className );
-				}
-
-				// If the element has a class name or if we're passed `false`,
-				// then remove the whole classname (if there was one, the above saved it).
-				// Otherwise bring back whatever was previously saved (if anything),
-				// falling back to the empty string if nothing was stored.
-				this.className = this.className || value === false ? "" : data_priv.get( 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;
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes/prop.js b/src/main/webapp/bower_components/jquery/src/attributes/prop.js
deleted file mode 100644
index d4ee8b6b..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes/prop.js
+++ /dev/null
@@ -1,94 +0,0 @@
-define([
-	"../core",
-	"../core/access",
-	"./support"
-], function( jQuery, access, support ) {
-
-var rfocusable = /^(?:input|select|textarea|button)$/i;
-
-jQuery.fn.extend({
-	prop: function( name, value ) {
-		return access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		return this.each(function() {
-			delete this[ jQuery.propFix[ name ] || name ];
-		});
-	}
-});
-
-jQuery.extend({
-	propFix: {
-		"for": "htmlFor",
-		"class": "className"
-	},
-
-	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 ) {
-			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-				ret :
-				( elem[ name ] = value );
-
-		} else {
-			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-				ret :
-				elem[ name ];
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
-					elem.tabIndex :
-					-1;
-			}
-		}
-	}
-});
-
-if ( !support.optSelected ) {
-	jQuery.propHooks.selected = {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-			if ( parent && parent.parentNode ) {
-				parent.parentNode.selectedIndex;
-			}
-			return null;
-		}
-	};
-}
-
-jQuery.each([
-	"tabIndex",
-	"readOnly",
-	"maxLength",
-	"cellSpacing",
-	"cellPadding",
-	"rowSpan",
-	"colSpan",
-	"useMap",
-	"frameBorder",
-	"contentEditable"
-], function() {
-	jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes/support.js b/src/main/webapp/bower_components/jquery/src/attributes/support.js
deleted file mode 100644
index 5db5c521..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes/support.js
+++ /dev/null
@@ -1,35 +0,0 @@
-define([
-	"../var/support"
-], function( support ) {
-
-(function() {
-	var input = document.createElement( "input" ),
-		select = document.createElement( "select" ),
-		opt = select.appendChild( document.createElement( "option" ) );
-
-	input.type = "checkbox";
-
-	// Support: iOS<=5.1, Android<=4.2+
-	// Default value for a checkbox should be "on"
-	support.checkOn = input.value !== "";
-
-	// Support: IE<=11+
-	// Must access selectedIndex to make default options select
-	support.optSelected = opt.selected;
-
-	// Support: Android<=2.3
-	// Options inside disabled selects are incorrectly marked as disabled
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Support: IE<=11+
-	// An input loses its value after becoming a radio
-	input = document.createElement( "input" );
-	input.value = "t";
-	input.type = "radio";
-	support.radioValue = input.value === "t";
-})();
-
-return support;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/attributes/val.js b/src/main/webapp/bower_components/jquery/src/attributes/val.js
deleted file mode 100644
index 4a1358a6..00000000
--- a/src/main/webapp/bower_components/jquery/src/attributes/val.js
+++ /dev/null
@@ -1,161 +0,0 @@
-define([
-	"../core",
-	"./support",
-	"../core/init"
-], function( jQuery, support ) {
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend({
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// Handle most common string cases
-					ret.replace(rreturn, "") :
-					// Handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, jQuery( this ).val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-
-			} else if ( typeof val === "number" ) {
-				val += "";
-
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map( val, function( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				var val = jQuery.find.attr( elem, "value" );
-				return val != null ?
-					val :
-					// Support: IE10-11+
-					// option.text throws exceptions (#14686, #14858)
-					jQuery.trim( jQuery.text( elem ) );
-			}
-		},
-		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 ];
-
-					// IE6-9 doesn't update selected after form reset (#2551)
-					if ( ( option.selected || i === index ) &&
-							// Don't return options that are disabled or in a disabled optgroup
-							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
-							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var optionSet, option,
-					options = elem.options,
-					values = jQuery.makeArray( value ),
-					i = options.length;
-
-				while ( i-- ) {
-					option = options[ i ];
-					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
-						optionSet = true;
-					}
-				}
-
-				// Force browsers to behave consistently when non-matching value is set
-				if ( !optionSet ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	}
-});
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	};
-	if ( !support.checkOn ) {
-		jQuery.valHooks[ this ].get = function( elem ) {
-			return elem.getAttribute("value") === null ? "on" : elem.value;
-		};
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/callbacks.js b/src/main/webapp/bower_components/jquery/src/callbacks.js
deleted file mode 100644
index 17572bb9..00000000
--- a/src/main/webapp/bower_components/jquery/src/callbacks.js
+++ /dev/null
@@ -1,205 +0,0 @@
-define([
-	"./core",
-	"./var/rnotwhite"
-], function( jQuery, rnotwhite ) {
-
-// 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.match( rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( 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;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				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 ) {
-				if ( list && ( !fired || stack ) ) {
-					args = args || [];
-					args = [ context, args.slice ? args.slice() : args ];
-					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;
-};
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core.js b/src/main/webapp/bower_components/jquery/src/core.js
deleted file mode 100644
index da6aa833..00000000
--- a/src/main/webapp/bower_components/jquery/src/core.js
+++ /dev/null
@@ -1,497 +0,0 @@
-define([
-	"./var/arr",
-	"./var/slice",
-	"./var/concat",
-	"./var/push",
-	"./var/indexOf",
-	"./var/class2type",
-	"./var/toString",
-	"./var/hasOwn",
-	"./var/support"
-], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
-
-var
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	version = "@VERSION",
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		// Need init if jQuery is called (just allow error to be thrown if not included)
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Support: Android<4.1
-	// Make sure we trim BOM and NBSP
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: version,
-
-	constructor: jQuery,
-
-	// Start with an empty selector
-	selector: "",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return slice.call( this );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num != null ?
-
-			// Return just the one element from the set
-			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
-			// Return all the elements in a clean array
-			slice.call( this );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (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 );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: arr.sort,
-	splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-
-		// Skip the boolean and the target
-		target = arguments[ i ] || {};
-		i++;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// Extend jQuery itself if only one argument is passed
-	if ( i === length ) {
-		target = this;
-		i--;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	// Unique for each copy of jQuery on the page
-	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-	// Assume jQuery is ready without the ready module
-	isReady: true,
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	noop: function() {},
-
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray,
-
-	isWindow: function( obj ) {
-		return obj != null && obj === obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
-		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-		// subtraction forces infinities to NaN
-		// adding 1 corrects loss of precision from parseFloat (#15100)
-		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
-	},
-
-	isPlainObject: function( obj ) {
-		// Not plain objects:
-		// - Any object or value whose internal [[Class]] property is not "[object Object]"
-		// - DOM nodes
-		// - window
-		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		if ( obj.constructor &&
-				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
-			return false;
-		}
-
-		// If the function hasn't returned already, we're confident that
-		// |obj| is a plain object, created by {} or constructed with new Object
-		return true;
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return obj + "";
-		}
-		// Support: Android<4.0, iOS<6 (functionish RegExp)
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	// Evaluates a script in a global context
-	globalEval: function( code ) {
-		var script,
-			indirect = eval;
-
-		code = jQuery.trim( code );
-
-		if ( code ) {
-			// If the code includes a valid, prologue position
-			// strict mode pragma, execute code by injecting a
-			// script tag into the document.
-			if ( code.indexOf("use strict") === 1 ) {
-				script = document.createElement("script");
-				script.text = code;
-				document.head.appendChild( script ).parentNode.removeChild( script );
-			} else {
-			// Otherwise, avoid the DOM node creation, insertion
-			// and removal by using an indirect global eval
-				indirect( code );
-			}
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Support: IE9-11+
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-	},
-
-	// args is for internal usage only
-	each: function( obj, callback, args ) {
-		var value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Support: Android<4.1
-	trim: function( text ) {
-		return text == null ?
-			"" :
-			( text + "" ).replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		return arr == null ? -1 : indexOf.call( arr, elem, i );
-	},
-
-	merge: function( first, second ) {
-		var len = +second.length,
-			j = 0,
-			i = first.length;
-
-		for ( ; j < len; j++ ) {
-			first[ i++ ] = second[ j ];
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, invert ) {
-		var callbackInverse,
-			matches = [],
-			i = 0,
-			length = elems.length,
-			callbackExpect = !invert;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; i < length; i++ ) {
-			callbackInverse = !callback( elems[ i ], i );
-			if ( callbackInverse !== callbackExpect ) {
-				matches.push( elems[ i ] );
-			}
-		}
-
-		return matches;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// Go through the array, translating each of the items to their new values
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		var tmp, args, proxy;
-
-		if ( typeof context === "string" ) {
-			tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		args = slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-		};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	now: Date.now,
-
-	// jQuery.support is not used in Core but other projects attach their
-	// properties to it so it needs to exist.
-	support: support
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( type === "function" || jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core/access.js b/src/main/webapp/bower_components/jquery/src/core/access.js
deleted file mode 100644
index b6110c8f..00000000
--- a/src/main/webapp/bower_components/jquery/src/core/access.js
+++ /dev/null
@@ -1,60 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
-	var i = 0,
-		len = elems.length,
-		bulk = key == null;
-
-	// Sets many values
-	if ( jQuery.type( key ) === "object" ) {
-		chainable = true;
-		for ( i in key ) {
-			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-		}
-
-	// Sets one value
-	} else if ( value !== undefined ) {
-		chainable = true;
-
-		if ( !jQuery.isFunction( value ) ) {
-			raw = true;
-		}
-
-		if ( bulk ) {
-			// Bulk operations run against the entire set
-			if ( raw ) {
-				fn.call( elems, value );
-				fn = null;
-
-			// ...except when executing function values
-			} else {
-				bulk = fn;
-				fn = function( elem, key, value ) {
-					return bulk.call( jQuery( elem ), value );
-				};
-			}
-		}
-
-		if ( fn ) {
-			for ( ; i < len; i++ ) {
-				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-			}
-		}
-	}
-
-	return chainable ?
-		elems :
-
-		// Gets
-		bulk ?
-			fn.call( elems ) :
-			len ? fn( elems[0], key ) : emptyGet;
-};
-
-return access;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core/init.js b/src/main/webapp/bower_components/jquery/src/core/init.js
deleted file mode 100644
index 7e83a049..00000000
--- a/src/main/webapp/bower_components/jquery/src/core/init.js
+++ /dev/null
@@ -1,123 +0,0 @@
-// Initialize a jQuery object
-define([
-	"../core",
-	"./var/rsingleTag",
-	"../traversing/findFilter"
-], function( jQuery, rsingleTag ) {
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	init = jQuery.fn.init = function( selector, context ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// Option to run scripts is true for back-compat
-					// Intentionally let the error be thrown if parseHTML is not present
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// HANDLE: $(#id)
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Support: Blackberry 4.6
-					// gEBID returns nodes no longer in the document (#6963)
-					if ( elem && elem.parentNode ) {
-						// Inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return typeof rootjQuery.ready !== "undefined" ?
-				rootjQuery.ready( selector ) :
-				// Execute immediately if ready is not present
-				selector( jQuery );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	};
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-return init;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core/parseHTML.js b/src/main/webapp/bower_components/jquery/src/core/parseHTML.js
deleted file mode 100644
index 64cf2a18..00000000
--- a/src/main/webapp/bower_components/jquery/src/core/parseHTML.js
+++ /dev/null
@@ -1,39 +0,0 @@
-define([
-	"../core",
-	"./var/rsingleTag",
-	"../manipulation" // buildFragment
-], function( jQuery, rsingleTag ) {
-
-// data: string of html
-// context (optional): If specified, the fragment will be created in this context, defaults to document
-// keepScripts (optional): If true, will include scripts passed in the html string
-jQuery.parseHTML = function( data, context, keepScripts ) {
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-	if ( typeof context === "boolean" ) {
-		keepScripts = context;
-		context = false;
-	}
-	context = context || document;
-
-	var parsed = rsingleTag.exec( data ),
-		scripts = !keepScripts && [];
-
-	// Single tag
-	if ( parsed ) {
-		return [ context.createElement( parsed[1] ) ];
-	}
-
-	parsed = jQuery.buildFragment( [ data ], context, scripts );
-
-	if ( scripts && scripts.length ) {
-		jQuery( scripts ).remove();
-	}
-
-	return jQuery.merge( [], parsed.childNodes );
-};
-
-return jQuery.parseHTML;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core/ready.js b/src/main/webapp/bower_components/jquery/src/core/ready.js
deleted file mode 100644
index db1a6e60..00000000
--- a/src/main/webapp/bower_components/jquery/src/core/ready.js
+++ /dev/null
@@ -1,97 +0,0 @@
-define([
-	"../core",
-	"../core/init",
-	"../deferred"
-], function( jQuery ) {
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-	// Add the callback
-	jQuery.ready.promise().done( fn );
-
-	return this;
-};
-
-jQuery.extend({
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Remember that the DOM is ready
-		jQuery.isReady = true;
-
-		// If a normal DOM Ready event fired, decrement, and wait if need be
-		if ( wait !== true && --jQuery.readyWait > 0 ) {
-			return;
-		}
-
-		// If there are functions bound, to execute
-		readyList.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.triggerHandler ) {
-			jQuery( document ).triggerHandler( "ready" );
-			jQuery( document ).off( "ready" );
-		}
-	}
-});
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
-	document.removeEventListener( "DOMContentLoaded", completed, false );
-	window.removeEventListener( "load", completed, false );
-	jQuery.ready();
-}
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// 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 );
-
-		} else {
-
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-		}
-	}
-	return readyList.promise( obj );
-};
-
-// Kick off the DOM ready check even if the user does not
-jQuery.ready.promise();
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/core/var/rsingleTag.js b/src/main/webapp/bower_components/jquery/src/core/var/rsingleTag.js
deleted file mode 100644
index 7e7090b7..00000000
--- a/src/main/webapp/bower_components/jquery/src/core/var/rsingleTag.js
+++ /dev/null
@@ -1,4 +0,0 @@
-define(function() {
-	// Match a standalone tag
-	return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css.js b/src/main/webapp/bower_components/jquery/src/css.js
deleted file mode 100644
index d4816175..00000000
--- a/src/main/webapp/bower_components/jquery/src/css.js
+++ /dev/null
@@ -1,450 +0,0 @@
-define([
-	"./core",
-	"./var/pnum",
-	"./core/access",
-	"./css/var/rmargin",
-	"./css/var/rnumnonpx",
-	"./css/var/cssExpand",
-	"./css/var/isHidden",
-	"./css/var/getStyles",
-	"./css/curCSS",
-	"./css/defaultDisplay",
-	"./css/addGetHookIf",
-	"./css/support",
-	"./data/var/data_priv",
-
-	"./core/init",
-	"./css/swap",
-	"./core/ready",
-	"./selector" // contains
-], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
-	getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
-
-var
-	// Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
-	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
-	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
-	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
-
-	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-	cssNormalTransform = {
-		letterSpacing: "0",
-		fontWeight: "400"
-	},
-
-	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// 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[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 setPositiveNumber( elem, value, subtract ) {
-	var matches = rnumsplit.exec( value );
-	return matches ?
-		// Guard against undefined "subtract", e.g., when used as in cssHooks
-		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-		value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-	var i = extra === ( isBorderBox ? "border" : "content" ) ?
-		// If we already have the right measurement, avoid augmentation
-		4 :
-		// Otherwise initialize for horizontal or vertical properties
-		name === "width" ? 1 : 0,
-
-		val = 0;
-
-	for ( ; i < 4; i += 2 ) {
-		// Both box models exclude margin, so add it if we want it
-		if ( extra === "margin" ) {
-			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-		}
-
-		if ( isBorderBox ) {
-			// border-box includes padding, so remove it if we want content
-			if ( extra === "content" ) {
-				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-			}
-
-			// At this point, extra isn't border nor margin, so remove border
-			if ( extra !== "margin" ) {
-				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		} else {
-			// At this point, extra isn't content, so add padding
-			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-			// At this point, extra isn't content nor padding, so add border
-			if ( extra !== "padding" ) {
-				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		}
-	}
-
-	return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-	// Start with offset property, which is equivalent to the border-box value
-	var valueIsBorderBox = true,
-		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-		styles = getStyles( elem ),
-		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
-	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-	if ( val <= 0 || val == null ) {
-		// Fall back to computed then uncomputed css if necessary
-		val = curCSS( elem, name, styles );
-		if ( val < 0 || val == null ) {
-			val = elem.style[ name ];
-		}
-
-		// Computed unit is not pixels. Stop here and return.
-		if ( rnumnonpx.test(val) ) {
-			return val;
-		}
-
-		// Check for style in case a browser which returns unreliable values
-		// for getComputedStyle silently falls back to the reliable elem.style
-		valueIsBorderBox = isBorderBox &&
-			( support.boxSizingReliable() || val === elem.style[ name ] );
-
-		// Normalize "", auto, and prepare for extra
-		val = parseFloat( val ) || 0;
-	}
-
-	// Use the active box-sizing model to add/subtract irrelevant styles
-	return ( val +
-		augmentWidthOrHeight(
-			elem,
-			name,
-			extra || ( isBorderBox ? "border" : "content" ),
-			valueIsBorderBox,
-			styles
-		)
-	) + "px";
-}
-
-function showHide( elements, show ) {
-	var display, elem, hidden,
-		values = [],
-		index = 0,
-		length = elements.length;
-
-	for ( ; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-
-		values[ index ] = data_priv.get( elem, "olddisplay" );
-		display = elem.style.display;
-		if ( show ) {
-			// Reset the inline display of this element to learn if it is
-			// being hidden by cascaded rules or not
-			if ( !values[ index ] && display === "none" ) {
-				elem.style.display = "";
-			}
-
-			// Set elements which have been overridden with display: none
-			// in a stylesheet to whatever the default browser style is
-			// for such an element
-			if ( elem.style.display === "" && isHidden( elem ) ) {
-				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
-			}
-		} else {
-			hidden = isHidden( elem );
-
-			if ( display !== "none" || !hidden ) {
-				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-			}
-		}
-	}
-
-	// Set the display of most of the elements in a second loop
-	// to avoid the constant reflow
-	for ( index = 0; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-			elem.style.display = show ? values[ index ] || "" : "none";
-		}
-	}
-
-	return elements;
-}
-
-jQuery.extend({
-
-	// Add in style property hooks for overriding the default
-	// behavior of getting and setting a style property
-	cssHooks: {
-		opacity: {
-			get: function( elem, computed ) {
-				if ( computed ) {
-
-					// We should always get a number back from opacity
-					var ret = curCSS( elem, "opacity" );
-					return ret === "" ? "1" : ret;
-				}
-			}
-		}
-	},
-
-	// Don't automatically add "px" to these possibly-unitless properties
-	cssNumber: {
-		"columnCount": true,
-		"fillOpacity": true,
-		"flexGrow": true,
-		"flexShrink": true,
-		"fontWeight": true,
-		"lineHeight": true,
-		"opacity": true,
-		"order": true,
-		"orphans": true,
-		"widows": true,
-		"zIndex": true,
-		"zoom": true
-	},
-
-	// Add in properties whose names you wish to fix before
-	// setting or getting the value
-	cssProps: {
-		"float": "cssFloat"
-	},
-
-	// Get and set the style property on a DOM Node
-	style: function( elem, name, value, extra ) {
-
-		// Don't set styles on text and comment nodes
-		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-			return;
-		}
-
-		// Make sure that we're working with the right name
-		var ret, type, hooks,
-			origName = jQuery.camelCase( name ),
-			style = elem.style;
-
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-		// Gets hook for the prefixed version, then unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// Check if we're setting a value
-		if ( value !== undefined ) {
-			type = typeof value;
-
-			// Convert "+=" or "-=" to relative numbers (#7345)
-			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-				// Fixes bug #9237
-				type = "number";
-			}
-
-			// Make sure that null and NaN values aren't set (#7116)
-			if ( value == null || value !== value ) {
-				return;
-			}
-
-			// If a number, add 'px' to the (except for certain CSS properties)
-			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-				value += "px";
-			}
-
-			// Support: IE9-11+
-			// background-* props affect original clone's values
-			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
-				style[ name ] = "inherit";
-			}
-
-			// If a hook was provided, use that value, otherwise just set the specified value
-			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-				style[ name ] = value;
-			}
-
-		} else {
-			// If a hook was provided get the non-computed value from there
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-				return ret;
-			}
-
-			// Otherwise just get the value from the style object
-			return style[ name ];
-		}
-	},
-
-	css: function( elem, name, extra, styles ) {
-		var val, num, hooks,
-			origName = jQuery.camelCase( name );
-
-		// Make sure that we're working with the right name
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-		// Try prefixed name followed by the unprefixed name
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// If a hook was provided get the computed value from there
-		if ( hooks && "get" in hooks ) {
-			val = hooks.get( elem, true, extra );
-		}
-
-		// Otherwise, if a way to get the computed value exists, use that
-		if ( val === undefined ) {
-			val = curCSS( elem, name, styles );
-		}
-
-		// Convert "normal" to computed value
-		if ( val === "normal" && name in cssNormalTransform ) {
-			val = cssNormalTransform[ name ];
-		}
-
-		// Make numeric if forced or a qualifier was provided and val looks numeric
-		if ( extra === "" || extra ) {
-			num = parseFloat( val );
-			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-		}
-		return val;
-	}
-});
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-	jQuery.cssHooks[ name ] = {
-		get: function( elem, computed, extra ) {
-			if ( computed ) {
-
-				// Certain elements can have dimension info if we invisibly show them
-				// but it must have a current display style that would benefit
-				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
-					jQuery.swap( elem, cssShow, function() {
-						return getWidthOrHeight( elem, name, extra );
-					}) :
-					getWidthOrHeight( elem, name, extra );
-			}
-		},
-
-		set: function( elem, value, extra ) {
-			var styles = extra && getStyles( elem );
-			return setPositiveNumber( elem, value, extra ?
-				augmentWidthOrHeight(
-					elem,
-					name,
-					extra,
-					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-					styles
-				) : 0
-			);
-		}
-	};
-});
-
-// Support: Android 2.3
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
-	function( elem, computed ) {
-		if ( computed ) {
-			return jQuery.swap( elem, { "display": "inline-block" },
-				curCSS, [ elem, "marginRight" ] );
-		}
-	}
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-	margin: "",
-	padding: "",
-	border: "Width"
-}, function( prefix, suffix ) {
-	jQuery.cssHooks[ prefix + suffix ] = {
-		expand: function( value ) {
-			var i = 0,
-				expanded = {},
-
-				// Assumes a single number if not a string
-				parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-			for ( ; i < 4; i++ ) {
-				expanded[ prefix + cssExpand[ i ] + suffix ] =
-					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-			}
-
-			return expanded;
-		}
-	};
-
-	if ( !rmargin.test( prefix ) ) {
-		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-	}
-});
-
-jQuery.fn.extend({
-	css: function( name, value ) {
-		return access( this, function( elem, name, value ) {
-			var styles, len,
-				map = {},
-				i = 0;
-
-			if ( jQuery.isArray( name ) ) {
-				styles = getStyles( elem );
-				len = name.length;
-
-				for ( ; i < len; i++ ) {
-					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-				}
-
-				return map;
-			}
-
-			return value !== undefined ?
-				jQuery.style( elem, name, value ) :
-				jQuery.css( elem, name );
-		}, name, value, arguments.length > 1 );
-	},
-	show: function() {
-		return showHide( this, true );
-	},
-	hide: function() {
-		return showHide( this );
-	},
-	toggle: function( state ) {
-		if ( typeof state === "boolean" ) {
-			return state ? this.show() : this.hide();
-		}
-
-		return this.each(function() {
-			if ( isHidden( this ) ) {
-				jQuery( this ).show();
-			} else {
-				jQuery( this ).hide();
-			}
-		});
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/addGetHookIf.js b/src/main/webapp/bower_components/jquery/src/css/addGetHookIf.js
deleted file mode 100644
index e12f3598..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/addGetHookIf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-define(function() {
-
-function addGetHookIf( conditionFn, hookFn ) {
-	// Define the hook, we'll check on the first run if it's really needed.
-	return {
-		get: function() {
-			if ( conditionFn() ) {
-				// Hook not needed (or it's not possible to use it due
-				// to missing dependency), remove it.
-				delete this.get;
-				return;
-			}
-
-			// Hook needed; redefine it so that the support test is not executed again.
-			return (this.get = hookFn).apply( this, arguments );
-		}
-	};
-}
-
-return addGetHookIf;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/curCSS.js b/src/main/webapp/bower_components/jquery/src/css/curCSS.js
deleted file mode 100644
index 90e508cb..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/curCSS.js
+++ /dev/null
@@ -1,57 +0,0 @@
-define([
-	"../core",
-	"./var/rnumnonpx",
-	"./var/rmargin",
-	"./var/getStyles",
-	"../selector" // contains
-], function( jQuery, rnumnonpx, rmargin, getStyles ) {
-
-function curCSS( elem, name, computed ) {
-	var width, minWidth, maxWidth, ret,
-		style = elem.style;
-
-	computed = computed || getStyles( elem );
-
-	// Support: IE9
-	// getPropertyValue is only needed for .css('filter') (#12537)
-	if ( computed ) {
-		ret = computed.getPropertyValue( name ) || computed[ name ];
-	}
-
-	if ( computed ) {
-
-		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-			ret = jQuery.style( elem, name );
-		}
-
-		// Support: iOS < 6
-		// A tribute to the "awesome hack by Dean Edwards"
-		// iOS < 6 (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 ) ) {
-
-			// Remember the original values
-			width = style.width;
-			minWidth = style.minWidth;
-			maxWidth = style.maxWidth;
-
-			// Put in the new values to get a computed value out
-			style.minWidth = style.maxWidth = style.width = ret;
-			ret = computed.width;
-
-			// Revert the changed values
-			style.width = width;
-			style.minWidth = minWidth;
-			style.maxWidth = maxWidth;
-		}
-	}
-
-	return ret !== undefined ?
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		ret + "" :
-		ret;
-}
-
-return curCSS;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/defaultDisplay.js b/src/main/webapp/bower_components/jquery/src/css/defaultDisplay.js
deleted file mode 100644
index 046ae91b..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/defaultDisplay.js
+++ /dev/null
@@ -1,70 +0,0 @@
-define([
-	"../core",
-	"../manipulation" // appendTo
-], function( jQuery ) {
-
-var iframe,
-	elemdisplay = {};
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
-	var style,
-		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
-		// getDefaultComputedStyle might be reliably used only on attached element
-		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
-
-			// Use of this method is a temporary fix (more like optimization) until something better comes along,
-			// since it was removed from specification and supported only in FF
-			style.display : jQuery.css( elem[ 0 ], "display" );
-
-	// We don't have any data stored on the element,
-	// so use "detach" method as fast way to get rid of the element
-	elem.detach();
-
-	return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
-	var doc = document,
-		display = elemdisplay[ nodeName ];
-
-	if ( !display ) {
-		display = actualDisplay( nodeName, doc );
-
-		// If the simple way fails, read from inside an iframe
-		if ( display === "none" || !display ) {
-
-			// Use the already-created iframe if possible
-			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
-
-			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-			doc = iframe[ 0 ].contentDocument;
-
-			// Support: IE
-			doc.write();
-			doc.close();
-
-			display = actualDisplay( nodeName, doc );
-			iframe.detach();
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-	}
-
-	return display;
-}
-
-return defaultDisplay;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/hiddenVisibleSelectors.js b/src/main/webapp/bower_components/jquery/src/css/hiddenVisibleSelectors.js
deleted file mode 100644
index c7f1c7ee..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/hiddenVisibleSelectors.js
+++ /dev/null
@@ -1,15 +0,0 @@
-define([
-	"../core",
-	"../selector"
-], function( jQuery ) {
-
-jQuery.expr.filters.hidden = function( elem ) {
-	// Support: Opera <= 12.12
-	// Opera reports offsetWidths and offsetHeights less than zero on some elements
-	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
-};
-jQuery.expr.filters.visible = function( elem ) {
-	return !jQuery.expr.filters.hidden( elem );
-};
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/support.js b/src/main/webapp/bower_components/jquery/src/css/support.js
deleted file mode 100644
index b9eaf140..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/support.js
+++ /dev/null
@@ -1,96 +0,0 @@
-define([
-	"../core",
-	"../var/support"
-], function( jQuery, support ) {
-
-(function() {
-	var pixelPositionVal, boxSizingReliableVal,
-		docElem = document.documentElement,
-		container = document.createElement( "div" ),
-		div = document.createElement( "div" );
-
-	if ( !div.style ) {
-		return;
-	}
-
-	// Support: IE9-11+
-	// Style of cloned element affects source element cloned (#8908)
-	div.style.backgroundClip = "content-box";
-	div.cloneNode( true ).style.backgroundClip = "";
-	support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
-		"position:absolute";
-	container.appendChild( div );
-
-	// Executing both pixelPosition & boxSizingReliable tests require only one layout
-	// so they're executed at the same time to save the second computation.
-	function computePixelPositionAndBoxSizingReliable() {
-		div.style.cssText =
-			// Support: Firefox<29, Android 2.3
-			// Vendor-prefix box-sizing
-			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
-			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
-			"border:1px;padding:1px;width:4px;position:absolute";
-		div.innerHTML = "";
-		docElem.appendChild( container );
-
-		var divStyle = window.getComputedStyle( div, null );
-		pixelPositionVal = divStyle.top !== "1%";
-		boxSizingReliableVal = divStyle.width === "4px";
-
-		docElem.removeChild( container );
-	}
-
-	// Support: node.js jsdom
-	// Don't assume that getComputedStyle is a property of the global object
-	if ( window.getComputedStyle ) {
-		jQuery.extend( support, {
-			pixelPosition: function() {
-
-				// This test is executed only once but we still do memoizing
-				// since we can use the boxSizingReliable pre-computing.
-				// No need to check if the test was already performed, though.
-				computePixelPositionAndBoxSizingReliable();
-				return pixelPositionVal;
-			},
-			boxSizingReliable: function() {
-				if ( boxSizingReliableVal == null ) {
-					computePixelPositionAndBoxSizingReliable();
-				}
-				return boxSizingReliableVal;
-			},
-			reliableMarginRight: function() {
-
-				// Support: Android 2.3
-				// Check if div with explicit width and no margin-right incorrectly
-				// gets computed margin-right based on width of container. (#3333)
-				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-				// This support function is only executed once so no memoizing is needed.
-				var ret,
-					marginDiv = div.appendChild( document.createElement( "div" ) );
-
-				// Reset CSS: box-sizing; display; margin; border; padding
-				marginDiv.style.cssText = div.style.cssText =
-					// Support: Firefox<29, Android 2.3
-					// Vendor-prefix box-sizing
-					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
-				marginDiv.style.marginRight = marginDiv.style.width = "0";
-				div.style.width = "1px";
-				docElem.appendChild( container );
-
-				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
-
-				docElem.removeChild( container );
-				div.removeChild( marginDiv );
-
-				return ret;
-			}
-		});
-	}
-})();
-
-return support;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/swap.js b/src/main/webapp/bower_components/jquery/src/css/swap.js
deleted file mode 100644
index ce164353..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/swap.js
+++ /dev/null
@@ -1,28 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-// A method for quickly swapping in/out CSS properties to get correct calculations.
-jQuery.swap = function( elem, options, callback, args ) {
-	var ret, name,
-		old = {};
-
-	// Remember the old values, and insert the new ones
-	for ( name in options ) {
-		old[ name ] = elem.style[ name ];
-		elem.style[ name ] = options[ name ];
-	}
-
-	ret = callback.apply( elem, args || [] );
-
-	// Revert the old values
-	for ( name in options ) {
-		elem.style[ name ] = old[ name ];
-	}
-
-	return ret;
-};
-
-return jQuery.swap;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/var/cssExpand.js b/src/main/webapp/bower_components/jquery/src/css/var/cssExpand.js
deleted file mode 100644
index 91e90a88..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/var/cssExpand.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return [ "Top", "Right", "Bottom", "Left" ];
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/var/getStyles.js b/src/main/webapp/bower_components/jquery/src/css/var/getStyles.js
deleted file mode 100644
index 413acd04..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/var/getStyles.js
+++ /dev/null
@@ -1,12 +0,0 @@
-define(function() {
-	return function( elem ) {
-		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
-		// IE throws on elements created in popups
-		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
-		if ( elem.ownerDocument.defaultView.opener ) {
-			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
-		}
-
-		return window.getComputedStyle( elem, null );
-	};
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/var/isHidden.js b/src/main/webapp/bower_components/jquery/src/css/var/isHidden.js
deleted file mode 100644
index 15ab81a9..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/var/isHidden.js
+++ /dev/null
@@ -1,13 +0,0 @@
-define([
-	"../../core",
-	"../../selector"
-	// css is assumed
-], function( jQuery ) {
-
-	return function( elem, el ) {
-		// isHidden might be called from jQuery#filter function;
-		// in that case, element will be second argument
-		elem = el || elem;
-		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-	};
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/var/rmargin.js b/src/main/webapp/bower_components/jquery/src/css/var/rmargin.js
deleted file mode 100644
index da0438db..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/var/rmargin.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return (/^margin/);
-});
diff --git a/src/main/webapp/bower_components/jquery/src/css/var/rnumnonpx.js b/src/main/webapp/bower_components/jquery/src/css/var/rnumnonpx.js
deleted file mode 100644
index c93be285..00000000
--- a/src/main/webapp/bower_components/jquery/src/css/var/rnumnonpx.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"../../var/pnum"
-], function( pnum ) {
-	return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-});
diff --git a/src/main/webapp/bower_components/jquery/src/data.js b/src/main/webapp/bower_components/jquery/src/data.js
deleted file mode 100644
index f9af9ae6..00000000
--- a/src/main/webapp/bower_components/jquery/src/data.js
+++ /dev/null
@@ -1,178 +0,0 @@
-define([
-	"./core",
-	"./var/rnotwhite",
-	"./core/access",
-	"./data/var/data_priv",
-	"./data/var/data_user"
-], function( jQuery, rnotwhite, access, data_priv, data_user ) {
-
-//	Implementation Summary
-//
-//	1. Enforce API surface and semantic compatibility with 1.9.x branch
-//	2. Improve the module's maintainability by reducing the storage
-//		paths to a single mechanism.
-//	3. Use the same single mechanism to support "private" and "user" data.
-//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-//	5. Avoid exposing implementation details on user objects (eg. expando properties)
-//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
-
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-function dataAttr( elem, key, data ) {
-	var name;
-
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-		name = "data-" + key.replace( rmultiDash, "-$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
-			data_user.set( elem, key, data );
-		} else {
-			data = undefined;
-		}
-	}
-	return data;
-}
-
-jQuery.extend({
-	hasData: function( elem ) {
-		return data_user.hasData( elem ) || data_priv.hasData( elem );
-	},
-
-	data: function( elem, name, data ) {
-		return data_user.access( elem, name, data );
-	},
-
-	removeData: function( elem, name ) {
-		data_user.remove( elem, name );
-	},
-
-	// TODO: Now that all calls to _data and _removeData have been replaced
-	// with direct calls to data_priv methods, these can be deprecated.
-	_data: function( elem, name, data ) {
-		return data_priv.access( elem, name, data );
-	},
-
-	_removeData: function( elem, name ) {
-		data_priv.remove( elem, name );
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var i, name, data,
-			elem = this[ 0 ],
-			attrs = elem && elem.attributes;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = data_user.get( elem );
-
-				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
-					i = attrs.length;
-					while ( i-- ) {
-
-						// Support: IE11+
-						// The attrs elements can be null (#14894)
-						if ( attrs[ i ] ) {
-							name = attrs[ i ].name;
-							if ( name.indexOf( "data-" ) === 0 ) {
-								name = jQuery.camelCase( name.slice(5) );
-								dataAttr( elem, name, data[ name ] );
-							}
-						}
-					}
-					data_priv.set( elem, "hasDataAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				data_user.set( this, key );
-			});
-		}
-
-		return access( this, function( value ) {
-			var data,
-				camelKey = jQuery.camelCase( key );
-
-			// The calling jQuery object (element matches) is not empty
-			// (and therefore has an element appears at this[ 0 ]) and the
-			// `value` parameter was not undefined. An empty jQuery object
-			// will result in `undefined` for elem = this[ 0 ] which will
-			// throw an exception if an attempt to read a data cache is made.
-			if ( elem && value === undefined ) {
-				// Attempt to get data from the cache
-				// with the key as-is
-				data = data_user.get( elem, key );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to get data from the cache
-				// with the key camelized
-				data = data_user.get( elem, camelKey );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to "discover" the data in
-				// HTML5 custom data-* attrs
-				data = dataAttr( elem, camelKey, undefined );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// We tried really hard, but the data doesn't exist.
-				return;
-			}
-
-			// Set the data...
-			this.each(function() {
-				// First, attempt to store a copy or reference of any
-				// data that might've been store with a camelCased key.
-				var data = data_user.get( this, camelKey );
-
-				// For HTML5 data-* attribute interop, we have to
-				// store property names with dashes in a camelCase form.
-				// This might not apply to all properties...*
-				data_user.set( this, camelKey, value );
-
-				// *... In the case of properties that might _actually_
-				// have dashes, we need to also store a copy of that
-				// unchanged property.
-				if ( key.indexOf("-") !== -1 && data !== undefined ) {
-					data_user.set( this, key, value );
-				}
-			});
-		}, null, value, arguments.length > 1, null, true );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			data_user.remove( this, key );
-		});
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/data/Data.js b/src/main/webapp/bower_components/jquery/src/data/Data.js
deleted file mode 100644
index 85afd64f..00000000
--- a/src/main/webapp/bower_components/jquery/src/data/Data.js
+++ /dev/null
@@ -1,181 +0,0 @@
-define([
-	"../core",
-	"../var/rnotwhite",
-	"./accepts"
-], function( jQuery, rnotwhite ) {
-
-function Data() {
-	// Support: Android<4,
-	// Old WebKit does not have Object.preventExtensions/freeze method,
-	// return new empty object instead with no [[set]] accessor
-	Object.defineProperty( this.cache = {}, 0, {
-		get: function() {
-			return {};
-		}
-	});
-
-	this.expando = jQuery.expando + Data.uid++;
-}
-
-Data.uid = 1;
-Data.accepts = jQuery.acceptData;
-
-Data.prototype = {
-	key: function( owner ) {
-		// We can accept data for non-element nodes in modern browsers,
-		// but we should not, see #8335.
-		// Always return the key for a frozen object.
-		if ( !Data.accepts( owner ) ) {
-			return 0;
-		}
-
-		var descriptor = {},
-			// Check if the owner object already has a cache key
-			unlock = owner[ this.expando ];
-
-		// If not, create one
-		if ( !unlock ) {
-			unlock = Data.uid++;
-
-			// Secure it in a non-enumerable, non-writable property
-			try {
-				descriptor[ this.expando ] = { value: unlock };
-				Object.defineProperties( owner, descriptor );
-
-			// Support: Android<4
-			// Fallback to a less secure definition
-			} catch ( e ) {
-				descriptor[ this.expando ] = unlock;
-				jQuery.extend( owner, descriptor );
-			}
-		}
-
-		// Ensure the cache object
-		if ( !this.cache[ unlock ] ) {
-			this.cache[ unlock ] = {};
-		}
-
-		return unlock;
-	},
-	set: function( owner, data, value ) {
-		var prop,
-			// There may be an unlock assigned to this node,
-			// if there is no entry for this "owner", create one inline
-			// and set the unlock as though an owner entry had always existed
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		// Handle: [ owner, key, value ] args
-		if ( typeof data === "string" ) {
-			cache[ data ] = value;
-
-		// Handle: [ owner, { properties } ] args
-		} else {
-			// Fresh assignments by object are shallow copied
-			if ( jQuery.isEmptyObject( cache ) ) {
-				jQuery.extend( this.cache[ unlock ], data );
-			// Otherwise, copy the properties one-by-one to the cache object
-			} else {
-				for ( prop in data ) {
-					cache[ prop ] = data[ prop ];
-				}
-			}
-		}
-		return cache;
-	},
-	get: function( owner, key ) {
-		// Either a valid cache is found, or will be created.
-		// New caches will be created and the unlock returned,
-		// allowing direct access to the newly created
-		// empty data object. A valid owner object must be provided.
-		var cache = this.cache[ this.key( owner ) ];
-
-		return key === undefined ?
-			cache : cache[ key ];
-	},
-	access: function( owner, key, value ) {
-		var stored;
-		// In cases where either:
-		//
-		//   1. No key was specified
-		//   2. A string key was specified, but no value provided
-		//
-		// Take the "read" path and allow the get method to determine
-		// which value to return, respectively either:
-		//
-		//   1. The entire cache object
-		//   2. The data stored at the key
-		//
-		if ( key === undefined ||
-				((key && typeof key === "string") && value === undefined) ) {
-
-			stored = this.get( owner, key );
-
-			return stored !== undefined ?
-				stored : this.get( owner, jQuery.camelCase(key) );
-		}
-
-		// [*]When the key is not a string, or both a key and value
-		// are specified, set or extend (existing objects) with either:
-		//
-		//   1. An object of properties
-		//   2. A key and value
-		//
-		this.set( owner, key, value );
-
-		// Since the "set" path can have two possible entry points
-		// return the expected data based on which path was taken[*]
-		return value !== undefined ? value : key;
-	},
-	remove: function( owner, key ) {
-		var i, name, camel,
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		if ( key === undefined ) {
-			this.cache[ unlock ] = {};
-
-		} else {
-			// Support array or space separated string of keys
-			if ( jQuery.isArray( key ) ) {
-				// If "name" is an array of keys...
-				// When data is initially created, via ("key", "val") signature,
-				// keys will be converted to camelCase.
-				// Since there is no way to tell _how_ a key was added, remove
-				// both plain key and camelCase key. #12786
-				// This will only penalize the array argument path.
-				name = key.concat( key.map( jQuery.camelCase ) );
-			} else {
-				camel = jQuery.camelCase( key );
-				// Try the string as a key before any manipulation
-				if ( key in cache ) {
-					name = [ key, camel ];
-				} else {
-					// If a key with the spaces exists, use it.
-					// Otherwise, create an array by matching non-whitespace
-					name = camel;
-					name = name in cache ?
-						[ name ] : ( name.match( rnotwhite ) || [] );
-				}
-			}
-
-			i = name.length;
-			while ( i-- ) {
-				delete cache[ name[ i ] ];
-			}
-		}
-	},
-	hasData: function( owner ) {
-		return !jQuery.isEmptyObject(
-			this.cache[ owner[ this.expando ] ] || {}
-		);
-	},
-	discard: function( owner ) {
-		if ( owner[ this.expando ] ) {
-			delete this.cache[ owner[ this.expando ] ];
-		}
-	}
-};
-
-return Data;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/data/accepts.js b/src/main/webapp/bower_components/jquery/src/data/accepts.js
deleted file mode 100644
index 291c7b47..00000000
--- a/src/main/webapp/bower_components/jquery/src/data/accepts.js
+++ /dev/null
@@ -1,20 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-/**
- * Determines whether an object can have data
- */
-jQuery.acceptData = function( owner ) {
-	// Accepts only:
-	//  - Node
-	//    - Node.ELEMENT_NODE
-	//    - Node.DOCUMENT_NODE
-	//  - Object
-	//    - Any
-	/* jshint -W018 */
-	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-return jQuery.acceptData;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/data/var/data_priv.js b/src/main/webapp/bower_components/jquery/src/data/var/data_priv.js
deleted file mode 100644
index 24399e46..00000000
--- a/src/main/webapp/bower_components/jquery/src/data/var/data_priv.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"../Data"
-], function( Data ) {
-	return new Data();
-});
diff --git a/src/main/webapp/bower_components/jquery/src/data/var/data_user.js b/src/main/webapp/bower_components/jquery/src/data/var/data_user.js
deleted file mode 100644
index 24399e46..00000000
--- a/src/main/webapp/bower_components/jquery/src/data/var/data_user.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"../Data"
-], function( Data ) {
-	return new Data();
-});
diff --git a/src/main/webapp/bower_components/jquery/src/deferred.js b/src/main/webapp/bower_components/jquery/src/deferred.js
deleted file mode 100644
index 98f9c313..00000000
--- a/src/main/webapp/bower_components/jquery/src/deferred.js
+++ /dev/null
@@ -1,149 +0,0 @@
-define([
-	"./core",
-	"./var/slice",
-	"./callbacks"
-], function( jQuery, slice ) {
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var tuples = [
-				// action, add listener, listener list, final state
-				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-				[ "notify", "progress", jQuery.Callbacks("memory") ]
-			],
-			state = "pending",
-			promise = {
-				state: function() {
-					return state;
-				},
-				always: function() {
-					deferred.done( arguments ).fail( arguments );
-					return this;
-				},
-				then: function( /* fnDone, fnFail, fnProgress */ ) {
-					var fns = arguments;
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( tuples, function( i, tuple ) {
-							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ](function() {
-								var returned = fn && fn.apply( this, arguments );
-								if ( returned && jQuery.isFunction( returned.promise ) ) {
-									returned.promise()
-										.done( newDefer.resolve )
-										.fail( newDefer.reject )
-										.progress( newDefer.notify );
-								} else {
-									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-								}
-							});
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ]
-			deferred[ tuple[0] ] = function() {
-				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-				return this;
-			};
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
-					if ( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-					} else if ( !( --remaining ) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// Add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.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();
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/deprecated.js b/src/main/webapp/bower_components/jquery/src/deprecated.js
deleted file mode 100644
index 1b068bc3..00000000
--- a/src/main/webapp/bower_components/jquery/src/deprecated.js
+++ /dev/null
@@ -1,13 +0,0 @@
-define([
-	"./core",
-	"./traversing"
-], function( jQuery ) {
-
-// The number of elements contained in the matched element set
-jQuery.fn.size = function() {
-	return this.length;
-};
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/dimensions.js b/src/main/webapp/bower_components/jquery/src/dimensions.js
deleted file mode 100644
index e6cb04c0..00000000
--- a/src/main/webapp/bower_components/jquery/src/dimensions.js
+++ /dev/null
@@ -1,50 +0,0 @@
-define([
-	"./core",
-	"./core/access",
-	"./css"
-], function( jQuery, access ) {
-
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
-		// Margin is only for outerHeight, outerWidth
-		jQuery.fn[ funcName ] = function( margin, value ) {
-			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
-				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
-			return access( this, function( elem, type, value ) {
-				var doc;
-
-				if ( jQuery.isWindow( elem ) ) {
-					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
-					// isn't a whole lot we can do. See pull request at this URL for discussion:
-					// https://github.com/jquery/jquery/pull/764
-					return elem.document.documentElement[ "client" + name ];
-				}
-
-				// Get document width or height
-				if ( elem.nodeType === 9 ) {
-					doc = elem.documentElement;
-
-					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
-					// whichever is greatest
-					return Math.max(
-						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
-						elem.body[ "offset" + name ], doc[ "offset" + name ],
-						doc[ "client" + name ]
-					);
-				}
-
-				return value === undefined ?
-					// Get width or height on the element, requesting but not forcing parseFloat
-					jQuery.css( elem, type, extra ) :
-
-					// Set width or height on the element
-					jQuery.style( elem, type, value, extra );
-			}, type, chainable ? margin : undefined, chainable, null );
-		};
-	});
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/effects.js b/src/main/webapp/bower_components/jquery/src/effects.js
deleted file mode 100644
index 90226bd4..00000000
--- a/src/main/webapp/bower_components/jquery/src/effects.js
+++ /dev/null
@@ -1,648 +0,0 @@
-define([
-	"./core",
-	"./var/pnum",
-	"./css/var/cssExpand",
-	"./css/var/isHidden",
-	"./css/defaultDisplay",
-	"./data/var/data_priv",
-
-	"./core/init",
-	"./effects/Tween",
-	"./queue",
-	"./css",
-	"./deferred",
-	"./traversing"
-], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, data_priv ) {
-
-var
-	fxNow, timerId,
-	rfxtypes = /^(?:toggle|show|hide)$/,
-	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
-	rrun = /queueHooks$/,
-	animationPrefilters = [ defaultPrefilter ],
-	tweeners = {
-		"*": [ function( prop, value ) {
-			var tween = this.createTween( prop, value ),
-				target = tween.cur(),
-				parts = rfxnum.exec( value ),
-				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-				// Starting value computation is required for potential unit mismatches
-				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-				scale = 1,
-				maxIterations = 20;
-
-			if ( start && start[ 3 ] !== unit ) {
-				// Trust units reported by jQuery.css
-				unit = unit || start[ 3 ];
-
-				// Make sure we update the tween properties later on
-				parts = parts || [];
-
-				// Iteratively approximate from a nonzero starting point
-				start = +target || 1;
-
-				do {
-					// If previous iteration zeroed out, double until we get *something*.
-					// Use string for doubling so we don't accidentally see scale as unchanged below
-					scale = scale || ".5";
-
-					// Adjust and apply
-					start = start / scale;
-					jQuery.style( tween.elem, prop, start + unit );
-
-				// Update scale, tolerating zero or NaN from tween.cur(),
-				// break the loop if scale is unchanged or perfect, or if we've just had enough
-				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-			}
-
-			// Update tween properties
-			if ( parts ) {
-				start = tween.start = +start || +target || 0;
-				tween.unit = unit;
-				// If a +=/-= token was provided, we're doing a relative animation
-				tween.end = parts[ 1 ] ?
-					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-					+parts[ 2 ];
-			}
-
-			return tween;
-		} ]
-	};
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-	setTimeout(function() {
-		fxNow = undefined;
-	});
-	return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-	var which,
-		i = 0,
-		attrs = { height: type };
-
-	// If we include width, step value is 1 to do all cssExpand values,
-	// otherwise step value is 2 to skip over Left and Right
-	includeWidth = includeWidth ? 1 : 0;
-	for ( ; i < 4 ; i += 2 - includeWidth ) {
-		which = cssExpand[ i ];
-		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-	}
-
-	if ( includeWidth ) {
-		attrs.opacity = attrs.width = type;
-	}
-
-	return attrs;
-}
-
-function createTween( value, prop, animation ) {
-	var tween,
-		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-		index = 0,
-		length = collection.length;
-	for ( ; index < length; index++ ) {
-		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-			// We're done with this property
-			return tween;
-		}
-	}
-}
-
-function defaultPrefilter( elem, props, opts ) {
-	/* jshint validthis: true */
-	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
-		anim = this,
-		orig = {},
-		style = elem.style,
-		hidden = elem.nodeType && isHidden( elem ),
-		dataShow = data_priv.get( elem, "fxshow" );
-
-	// Handle queue: false promises
-	if ( !opts.queue ) {
-		hooks = jQuery._queueHooks( elem, "fx" );
-		if ( hooks.unqueued == null ) {
-			hooks.unqueued = 0;
-			oldfire = hooks.empty.fire;
-			hooks.empty.fire = function() {
-				if ( !hooks.unqueued ) {
-					oldfire();
-				}
-			};
-		}
-		hooks.unqueued++;
-
-		anim.always(function() {
-			// Ensure the complete handler is called before this completes
-			anim.always(function() {
-				hooks.unqueued--;
-				if ( !jQuery.queue( elem, "fx" ).length ) {
-					hooks.empty.fire();
-				}
-			});
-		});
-	}
-
-	// Height/width overflow pass
-	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-		// Make sure that nothing sneaks out
-		// Record all 3 overflow attributes because IE9-10 do not
-		// change the overflow attribute when overflowX and
-		// overflowY are set to the same value
-		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-		// Set display property to inline-block for height/width
-		// animations on inline elements that are having width/height animated
-		display = jQuery.css( elem, "display" );
-
-		// Test default display if display is currently "none"
-		checkDisplay = display === "none" ?
-			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
-		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
-			style.display = "inline-block";
-		}
-	}
-
-	if ( opts.overflow ) {
-		style.overflow = "hidden";
-		anim.always(function() {
-			style.overflow = opts.overflow[ 0 ];
-			style.overflowX = opts.overflow[ 1 ];
-			style.overflowY = opts.overflow[ 2 ];
-		});
-	}
-
-	// show/hide pass
-	for ( prop in props ) {
-		value = props[ prop ];
-		if ( rfxtypes.exec( value ) ) {
-			delete props[ prop ];
-			toggle = toggle || value === "toggle";
-			if ( value === ( hidden ? "hide" : "show" ) ) {
-
-				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
-				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
-					hidden = true;
-				} else {
-					continue;
-				}
-			}
-			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
-		// Any non-fx value stops us from restoring the original display value
-		} else {
-			display = undefined;
-		}
-	}
-
-	if ( !jQuery.isEmptyObject( orig ) ) {
-		if ( dataShow ) {
-			if ( "hidden" in dataShow ) {
-				hidden = dataShow.hidden;
-			}
-		} else {
-			dataShow = data_priv.access( elem, "fxshow", {} );
-		}
-
-		// Store state if its toggle - enables .stop().toggle() to "reverse"
-		if ( toggle ) {
-			dataShow.hidden = !hidden;
-		}
-		if ( hidden ) {
-			jQuery( elem ).show();
-		} else {
-			anim.done(function() {
-				jQuery( elem ).hide();
-			});
-		}
-		anim.done(function() {
-			var prop;
-
-			data_priv.remove( elem, "fxshow" );
-			for ( prop in orig ) {
-				jQuery.style( elem, prop, orig[ prop ] );
-			}
-		});
-		for ( prop in orig ) {
-			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-			if ( !( prop in dataShow ) ) {
-				dataShow[ prop ] = tween.start;
-				if ( hidden ) {
-					tween.end = tween.start;
-					tween.start = prop === "width" || prop === "height" ? 1 : 0;
-				}
-			}
-		}
-
-	// If this is a noop like .hide().hide(), restore an overwritten display value
-	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
-		style.display = display;
-	}
-}
-
-function propFilter( props, specialEasing ) {
-	var index, name, easing, value, hooks;
-
-	// camelCase, specialEasing and expand cssHook pass
-	for ( index in props ) {
-		name = jQuery.camelCase( index );
-		easing = specialEasing[ name ];
-		value = props[ index ];
-		if ( jQuery.isArray( value ) ) {
-			easing = value[ 1 ];
-			value = props[ index ] = value[ 0 ];
-		}
-
-		if ( index !== name ) {
-			props[ name ] = value;
-			delete props[ index ];
-		}
-
-		hooks = jQuery.cssHooks[ name ];
-		if ( hooks && "expand" in hooks ) {
-			value = hooks.expand( value );
-			delete props[ name ];
-
-			// Not quite $.extend, this won't overwrite existing keys.
-			// Reusing 'index' because we have the correct "name"
-			for ( index in value ) {
-				if ( !( index in props ) ) {
-					props[ index ] = value[ index ];
-					specialEasing[ index ] = easing;
-				}
-			}
-		} else {
-			specialEasing[ name ] = easing;
-		}
-	}
-}
-
-function Animation( elem, properties, options ) {
-	var result,
-		stopped,
-		index = 0,
-		length = animationPrefilters.length,
-		deferred = jQuery.Deferred().always( function() {
-			// Don't match elem in the :animated selector
-			delete tick.elem;
-		}),
-		tick = function() {
-			if ( stopped ) {
-				return false;
-			}
-			var currentTime = fxNow || createFxNow(),
-				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-				// Support: Android 2.3
-				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
-				temp = remaining / animation.duration || 0,
-				percent = 1 - temp,
-				index = 0,
-				length = animation.tweens.length;
-
-			for ( ; index < length ; index++ ) {
-				animation.tweens[ index ].run( percent );
-			}
-
-			deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-			if ( percent < 1 && length ) {
-				return remaining;
-			} else {
-				deferred.resolveWith( elem, [ animation ] );
-				return false;
-			}
-		},
-		animation = deferred.promise({
-			elem: elem,
-			props: jQuery.extend( {}, properties ),
-			opts: jQuery.extend( true, { specialEasing: {} }, options ),
-			originalProperties: properties,
-			originalOptions: options,
-			startTime: fxNow || createFxNow(),
-			duration: options.duration,
-			tweens: [],
-			createTween: function( prop, end ) {
-				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
-				animation.tweens.push( tween );
-				return tween;
-			},
-			stop: function( gotoEnd ) {
-				var index = 0,
-					// If we are going to the end, we want to run all the tweens
-					// otherwise we skip this part
-					length = gotoEnd ? animation.tweens.length : 0;
-				if ( stopped ) {
-					return this;
-				}
-				stopped = true;
-				for ( ; index < length ; index++ ) {
-					animation.tweens[ index ].run( 1 );
-				}
-
-				// Resolve when we played the last frame; otherwise, reject
-				if ( gotoEnd ) {
-					deferred.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;
-		}
-	}
-
-	jQuery.map( props, createTween, animation );
-
-	if ( jQuery.isFunction( animation.opts.start ) ) {
-		animation.opts.start.call( elem, animation );
-	}
-
-	jQuery.fx.timer(
-		jQuery.extend( tick, {
-			elem: elem,
-			anim: animation,
-			queue: animation.opts.queue
-		})
-	);
-
-	// attach callbacks from options
-	return animation.progress( animation.opts.progress )
-		.done( animation.opts.done, animation.opts.complete )
-		.fail( animation.opts.fail )
-		.always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-	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 );
-		}
-	}
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-		complete: fn || !fn && easing ||
-			jQuery.isFunction( speed ) && speed,
-		duration: speed,
-		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-	};
-
-	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-	// Normalize opt.queue - true/undefined/null -> "fx"
-	if ( opt.queue == null || opt.queue === true ) {
-		opt.queue = "fx";
-	}
-
-	// Queueing
-	opt.old = opt.complete;
-
-	opt.complete = function() {
-		if ( jQuery.isFunction( opt.old ) ) {
-			opt.old.call( this );
-		}
-
-		if ( opt.queue ) {
-			jQuery.dequeue( this, opt.queue );
-		}
-	};
-
-	return opt;
-};
-
-jQuery.fn.extend({
-	fadeTo: function( speed, to, easing, callback ) {
-
-		// Show any hidden elements after setting opacity to 0
-		return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-			// Animate to the value specified
-			.end().animate({ opacity: to }, speed, easing, callback );
-	},
-	animate: function( prop, speed, easing, callback ) {
-		var empty = jQuery.isEmptyObject( prop ),
-			optall = jQuery.speed( speed, easing, callback ),
-			doAnimation = function() {
-				// Operate on a copy of prop so per-property easing won't be lost
-				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-				// Empty animations, or finishing resolves immediately
-				if ( empty || data_priv.get( this, "finish" ) ) {
-					anim.stop( true );
-				}
-			};
-			doAnimation.finish = doAnimation;
-
-		return empty || optall.queue === false ?
-			this.each( doAnimation ) :
-			this.queue( optall.queue, doAnimation );
-	},
-	stop: function( type, clearQueue, gotoEnd ) {
-		var stopQueue = function( hooks ) {
-			var stop = hooks.stop;
-			delete hooks.stop;
-			stop( gotoEnd );
-		};
-
-		if ( typeof type !== "string" ) {
-			gotoEnd = clearQueue;
-			clearQueue = type;
-			type = undefined;
-		}
-		if ( clearQueue && type !== false ) {
-			this.queue( type || "fx", [] );
-		}
-
-		return this.each(function() {
-			var dequeue = true,
-				index = type != null && type + "queueHooks",
-				timers = jQuery.timers,
-				data = data_priv.get( this );
-
-			if ( index ) {
-				if ( data[ index ] && data[ index ].stop ) {
-					stopQueue( data[ index ] );
-				}
-			} else {
-				for ( index in data ) {
-					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-						stopQueue( data[ index ] );
-					}
-				}
-			}
-
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-					timers[ index ].anim.stop( gotoEnd );
-					dequeue = false;
-					timers.splice( index, 1 );
-				}
-			}
-
-			// Start the next in the queue if the last step wasn't forced.
-			// Timers currently will call their complete callbacks, which
-			// will dequeue but only if they were gotoEnd.
-			if ( dequeue || !gotoEnd ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	finish: function( type ) {
-		if ( type !== false ) {
-			type = type || "fx";
-		}
-		return this.each(function() {
-			var index,
-				data = data_priv.get( this ),
-				queue = data[ type + "queue" ],
-				hooks = data[ type + "queueHooks" ],
-				timers = jQuery.timers,
-				length = queue ? queue.length : 0;
-
-			// Enable finishing flag on private data
-			data.finish = true;
-
-			// Empty the queue first
-			jQuery.queue( this, type, [] );
-
-			if ( hooks && hooks.stop ) {
-				hooks.stop.call( this, true );
-			}
-
-			// Look for any active animations, and finish them
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-					timers[ index ].anim.stop( true );
-					timers.splice( index, 1 );
-				}
-			}
-
-			// Look for any animations in the old queue and finish them
-			for ( index = 0; index < length; index++ ) {
-				if ( queue[ index ] && queue[ index ].finish ) {
-					queue[ index ].finish.call( this );
-				}
-			}
-
-			// Turn off finishing flag
-			delete data.finish;
-		});
-	}
-});
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-	var cssFn = jQuery.fn[ name ];
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return speed == null || typeof speed === "boolean" ?
-			cssFn.apply( this, arguments ) :
-			this.animate( genFx( name, true ), speed, easing, callback );
-	};
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show"),
-	slideUp: genFx("hide"),
-	slideToggle: genFx("toggle"),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" },
-	fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return this.animate( props, speed, easing, callback );
-	};
-});
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
-	var timer,
-		i = 0,
-		timers = jQuery.timers;
-
-	fxNow = jQuery.now();
-
-	for ( ; i < timers.length; i++ ) {
-		timer = timers[ i ];
-		// Checks the timer has not already been removed
-		if ( !timer() && timers[ i ] === timer ) {
-			timers.splice( i--, 1 );
-		}
-	}
-
-	if ( !timers.length ) {
-		jQuery.fx.stop();
-	}
-	fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-	jQuery.timers.push( timer );
-	if ( timer() ) {
-		jQuery.fx.start();
-	} else {
-		jQuery.timers.pop();
-	}
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-	if ( !timerId ) {
-		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-	}
-};
-
-jQuery.fx.stop = function() {
-	clearInterval( timerId );
-	timerId = null;
-};
-
-jQuery.fx.speeds = {
-	slow: 600,
-	fast: 200,
-	// Default speed
-	_default: 400
-};
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/effects/Tween.js b/src/main/webapp/bower_components/jquery/src/effects/Tween.js
deleted file mode 100644
index 9acd8d0c..00000000
--- a/src/main/webapp/bower_components/jquery/src/effects/Tween.js
+++ /dev/null
@@ -1,114 +0,0 @@
-define([
-	"../core",
-	"../css"
-], function( jQuery ) {
-
-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 an empty string as a 3rd parameter to .css will automatically
-			// attempt a parseFloat and fallback to a string if the parse fails.
-			// Simple values such as "10px" are parsed to Float;
-			// complex values such as "rotate(1rad)" are returned as-is.
-			result = jQuery.css( tween.elem, tween.prop, "" );
-			// Empty strings, null, undefined and "auto" are converted to 0.
-			return !result || result === "auto" ? 0 : result;
-		},
-		set: function( tween ) {
-			// Use step hook for back compat.
-			// Use cssHook if its there.
-			// Use .style if available and use plain properties where available.
-			if ( jQuery.fx.step[ tween.prop ] ) {
-				jQuery.fx.step[ tween.prop ]( tween );
-			} else if ( tween.elem.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;
-			}
-		}
-	}
-};
-
-// Support: IE9
-// Panic based approach to setting things on disconnected nodes
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-	set: function( tween ) {
-		if ( tween.elem.nodeType && tween.elem.parentNode ) {
-			tween.elem[ tween.prop ] = tween.now;
-		}
-	}
-};
-
-jQuery.easing = {
-	linear: function( p ) {
-		return p;
-	},
-	swing: function( p ) {
-		return 0.5 - Math.cos( p * Math.PI ) / 2;
-	}
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/effects/animatedSelector.js b/src/main/webapp/bower_components/jquery/src/effects/animatedSelector.js
deleted file mode 100644
index bc5a3d6c..00000000
--- a/src/main/webapp/bower_components/jquery/src/effects/animatedSelector.js
+++ /dev/null
@@ -1,13 +0,0 @@
-define([
-	"../core",
-	"../selector",
-	"../effects"
-], function( jQuery ) {
-
-jQuery.expr.filters.animated = function( elem ) {
-	return jQuery.grep(jQuery.timers, function( fn ) {
-		return elem === fn.elem;
-	}).length;
-};
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/event.js b/src/main/webapp/bower_components/jquery/src/event.js
deleted file mode 100644
index 8f04b89c..00000000
--- a/src/main/webapp/bower_components/jquery/src/event.js
+++ /dev/null
@@ -1,868 +0,0 @@
-define([
-	"./core",
-	"./var/strundefined",
-	"./var/rnotwhite",
-	"./var/hasOwn",
-	"./var/slice",
-	"./event/support",
-	"./data/var/data_priv",
-
-	"./core/init",
-	"./data/accepts",
-	"./selector"
-], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support, data_priv ) {
-
-var
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-	return true;
-}
-
-function returnFalse() {
-	return false;
-}
-
-function safeActiveElement() {
-	try {
-		return document.activeElement;
-	} catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	global: {},
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var handleObjIn, eventHandle, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.get( elem );
-
-		// Don't attach events to noData or text/comment nodes (but allow plain objects)
-		if ( !elemData ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		if ( !(events = elemData.events) ) {
-			events = elemData.events = {};
-		}
-		if ( !(eventHandle = elemData.handle) ) {
-			eventHandle = elemData.handle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
-					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
-			};
-		}
-
-		// Handle multiple events separated by a space
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// There *must* be a type, no attaching namespace-only handlers
-			if ( !type ) {
-				continue;
-			}
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: origType,
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			if ( !(handlers = events[ type ]) ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-	},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var j, origCount, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-			handlers = events[ type ] || [];
-			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-			// Remove matching events
-			origCount = j = handlers.length;
-			while ( j-- ) {
-				handleObj = handlers[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					( !handler || handler.guid === handleObj.guid ) &&
-					( !tmp || tmp.test( handleObj.namespace ) ) &&
-					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					handlers.splice( j, 1 );
-
-					if ( handleObj.selector ) {
-						handlers.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( origCount && !handlers.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			delete elemData.handle;
-			data_priv.remove( elem, "events" );
-		}
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-
-		var i, cur, tmp, bubbleType, ontype, handle, special,
-			eventPath = [ elem || document ],
-			type = hasOwn.call( event, "type" ) ? event.type : event,
-			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-		cur = tmp = elem = elem || document;
-
-		// Don't do events on text and comment nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-			return;
-		}
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf(".") >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-		ontype = type.indexOf(":") < 0 && "on" + type;
-
-		// Caller can pass in a jQuery.Event object, Object, or just an event type string
-		event = event[ jQuery.expando ] ?
-			event :
-			new jQuery.Event( type, typeof event === "object" && event );
-
-		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-		event.isTrigger = onlyHandlers ? 2 : 3;
-		event.namespace = namespaces.join(".");
-		event.namespace_re = event.namespace ?
-			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-			null;
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data == null ?
-			[ event ] :
-			jQuery.makeArray( data, [ event ] );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			if ( !rfocusMorph.test( bubbleType + type ) ) {
-				cur = cur.parentNode;
-			}
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push( cur );
-				tmp = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( tmp === (elem.ownerDocument || document) ) {
-				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-			}
-		}
-
-		// Fire handlers on the event path
-		i = 0;
-		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-			event.type = i > 1 ?
-				bubbleType :
-				special.bindType || type;
-
-			// jQuery handler
-			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-
-			// Native handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
-				event.result = handle.apply( cur, data );
-				if ( event.result === false ) {
-					event.preventDefault();
-				}
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the default action, do it now
-		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-				jQuery.acceptData( elem ) ) {
-
-				// Call a native DOM method on the target with the same name name as the event.
-				// Don't do default actions on window, that's where global variables be (#6170)
-				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
-
-					// Don't re-trigger an onFOO event when we call its FOO() method
-					tmp = elem[ ontype ];
-
-					if ( tmp ) {
-						elem[ ontype ] = null;
-					}
-
-					// Prevent re-triggering of the same event, since we already bubbled it above
-					jQuery.event.triggered = type;
-					elem[ type ]();
-					jQuery.event.triggered = undefined;
-
-					if ( tmp ) {
-						elem[ ontype ] = tmp;
-					}
-				}
-			}
-		}
-
-		return event.result;
-	},
-
-	dispatch: function( event ) {
-
-		// Make a writable jQuery.Event from the native event object
-		event = jQuery.event.fix( event );
-
-		var i, j, ret, matched, handleObj,
-			handlerQueue = [],
-			args = slice.call( arguments ),
-			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
-			special = jQuery.event.special[ event.type ] || {};
-
-		// Use the fix-ed jQuery.Event rather than the (read-only) native event
-		args[0] = event;
-		event.delegateTarget = this;
-
-		// Call the preDispatch hook for the mapped type, and let it bail if desired
-		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-			return;
-		}
-
-		// Determine handlers
-		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-		// Run delegates first; they may want to stop propagation beneath us
-		i = 0;
-		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-			event.currentTarget = matched.elem;
-
-			j = 0;
-			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
-				// a subset or equal to those in the bound event (both can have no namespace).
-				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-					event.handleObj = handleObj;
-					event.data = handleObj.data;
-
-					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-							.apply( matched.elem, args );
-
-					if ( ret !== undefined ) {
-						if ( (event.result = ret) === false ) {
-							event.preventDefault();
-							event.stopPropagation();
-						}
-					}
-				}
-			}
-		}
-
-		// Call the postDispatch hook for the mapped type
-		if ( special.postDispatch ) {
-			special.postDispatch.call( this, event );
-		}
-
-		return event.result;
-	},
-
-	handlers: function( event, handlers ) {
-		var i, matches, sel, handleObj,
-			handlerQueue = [],
-			delegateCount = handlers.delegateCount,
-			cur = event.target;
-
-		// Find delegate handlers
-		// Black-hole SVG <use> instance trees (#13180)
-		// Avoid non-left-click bubbling in Firefox (#3861)
-		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-			for ( ; cur !== this; cur = cur.parentNode || this ) {
-
-				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-				if ( cur.disabled !== true || event.type !== "click" ) {
-					matches = [];
-					for ( i = 0; i < delegateCount; i++ ) {
-						handleObj = handlers[ i ];
-
-						// Don't conflict with Object.prototype properties (#13203)
-						sel = handleObj.selector + " ";
-
-						if ( matches[ sel ] === undefined ) {
-							matches[ sel ] = handleObj.needsContext ?
-								jQuery( sel, this ).index( cur ) >= 0 :
-								jQuery.find( sel, this, null, [ cur ] ).length;
-						}
-						if ( matches[ sel ] ) {
-							matches.push( handleObj );
-						}
-					}
-					if ( matches.length ) {
-						handlerQueue.push({ elem: cur, handlers: matches });
-					}
-				}
-			}
-		}
-
-		// Add the remaining (directly-bound) handlers
-		if ( delegateCount < handlers.length ) {
-			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-		}
-
-		return handlerQueue;
-	},
-
-	// Includes some event props shared by KeyEvent and MouseEvent
-	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
-	fixHooks: {},
-
-	keyHooks: {
-		props: "char charCode key keyCode".split(" "),
-		filter: function( event, original ) {
-
-			// Add which for key events
-			if ( event.which == null ) {
-				event.which = original.charCode != null ? original.charCode : original.keyCode;
-			}
-
-			return event;
-		}
-	},
-
-	mouseHooks: {
-		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-		filter: function( event, original ) {
-			var eventDoc, doc, body,
-				button = original.button;
-
-			// Calculate pageX/Y if missing and clientX/Y available
-			if ( event.pageX == null && original.clientX != null ) {
-				eventDoc = event.target.ownerDocument || document;
-				doc = eventDoc.documentElement;
-				body = eventDoc.body;
-
-				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-			}
-
-			// Add which for click: 1 === left; 2 === middle; 3 === right
-			// Note: button is not normalized, so don't use it
-			if ( !event.which && button !== undefined ) {
-				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-			}
-
-			return event;
-		}
-	},
-
-	fix: function( event ) {
-		if ( event[ jQuery.expando ] ) {
-			return event;
-		}
-
-		// Create a writable copy of the event object and normalize some properties
-		var i, prop, copy,
-			type = event.type,
-			originalEvent = event,
-			fixHook = this.fixHooks[ type ];
-
-		if ( !fixHook ) {
-			this.fixHooks[ type ] = fixHook =
-				rmouseEvent.test( type ) ? this.mouseHooks :
-				rkeyEvent.test( type ) ? this.keyHooks :
-				{};
-		}
-		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-		event = new jQuery.Event( originalEvent );
-
-		i = copy.length;
-		while ( i-- ) {
-			prop = copy[ i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Support: Cordova 2.5 (WebKit) (#13255)
-		// All events should have a target; Cordova deviceready doesn't
-		if ( !event.target ) {
-			event.target = document;
-		}
-
-		// Support: Safari 6.0+, Chrome<28
-		// Target should not be a text node (#504, #13143)
-		if ( event.target.nodeType === 3 ) {
-			event.target = event.target.parentNode;
-		}
-
-		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-	},
-
-	special: {
-		load: {
-			// Prevent triggered image.load events from bubbling to window.load
-			noBubble: true
-		},
-		focus: {
-			// Fire native event if possible so blur/focus sequence is correct
-			trigger: function() {
-				if ( this !== safeActiveElement() && this.focus ) {
-					this.focus();
-					return false;
-				}
-			},
-			delegateType: "focusin"
-		},
-		blur: {
-			trigger: function() {
-				if ( this === safeActiveElement() && this.blur ) {
-					this.blur();
-					return false;
-				}
-			},
-			delegateType: "focusout"
-		},
-		click: {
-			// For checkbox, fire native event so checked state will be right
-			trigger: function() {
-				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
-					this.click();
-					return false;
-				}
-			},
-
-			// For cross-browser consistency, don't fire native .click() on links
-			_default: function( event ) {
-				return jQuery.nodeName( event.target, "a" );
-			}
-		},
-
-		beforeunload: {
-			postDispatch: function( event ) {
-
-				// Support: Firefox 20+
-				// Firefox doesn't alert if the returnValue field is not set.
-				if ( event.result !== undefined && event.originalEvent ) {
-					event.originalEvent.returnValue = event.result;
-				}
-			}
-		}
-	},
-
-	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();
-		}
-	}
-};
-
-jQuery.removeEvent = function( elem, type, handle ) {
-	if ( elem.removeEventListener ) {
-		elem.removeEventListener( type, handle, false );
-	}
-};
-
-jQuery.Event = function( src, props ) {
-	// Allow instantiation without the 'new' keyword
-	if ( !(this instanceof jQuery.Event) ) {
-		return new jQuery.Event( src, props );
-	}
-
-	// Event object
-	if ( src && src.type ) {
-		this.originalEvent = src;
-		this.type = src.type;
-
-		// Events bubbling up the document may have been marked as prevented
-		// by a handler lower down the tree; reflect the correct value.
-		this.isDefaultPrevented = src.defaultPrevented ||
-				src.defaultPrevented === undefined &&
-				// Support: Android<4.0
-				src.returnValue === false ?
-			returnTrue :
-			returnFalse;
-
-	// Event type
-	} else {
-		this.type = src;
-	}
-
-	// Put explicitly provided properties onto the event object
-	if ( props ) {
-		jQuery.extend( this, props );
-	}
-
-	// Create a timestamp if incoming event doesn't have one
-	this.timeStamp = src && src.timeStamp || jQuery.now();
-
-	// Mark it as fixed
-	this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse,
-
-	preventDefault: function() {
-		var e = this.originalEvent;
-
-		this.isDefaultPrevented = returnTrue;
-
-		if ( e && e.preventDefault ) {
-			e.preventDefault();
-		}
-	},
-	stopPropagation: function() {
-		var e = this.originalEvent;
-
-		this.isPropagationStopped = returnTrue;
-
-		if ( e && e.stopPropagation ) {
-			e.stopPropagation();
-		}
-	},
-	stopImmediatePropagation: function() {
-		var e = this.originalEvent;
-
-		this.isImmediatePropagationStopped = returnTrue;
-
-		if ( e && e.stopImmediatePropagation ) {
-			e.stopImmediatePropagation();
-		}
-
-		this.stopPropagation();
-	}
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-// Support: Chrome 15+
-jQuery.each({
-	mouseenter: "mouseover",
-	mouseleave: "mouseout",
-	pointerenter: "pointerover",
-	pointerleave: "pointerout"
-}, function( orig, fix ) {
-	jQuery.event.special[ orig ] = {
-		delegateType: fix,
-		bindType: fix,
-
-		handle: function( event ) {
-			var ret,
-				target = this,
-				related = event.relatedTarget,
-				handleObj = event.handleObj;
-
-			// For 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;
-		}
-	};
-});
-
-// Support: Firefox, Chrome, Safari
-// Create "bubbling" focus and blur events
-if ( !support.focusinBubbles ) {
-	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-		// Attach a single capturing handler on the document while someone wants focusin/focusout
-		var handler = function( event ) {
-				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-			};
-
-		jQuery.event.special[ fix ] = {
-			setup: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix );
-
-				if ( !attaches ) {
-					doc.addEventListener( orig, handler, true );
-				}
-				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
-			},
-			teardown: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix ) - 1;
-
-				if ( !attaches ) {
-					doc.removeEventListener( orig, handler, true );
-					data_priv.remove( doc, fix );
-
-				} else {
-					data_priv.access( doc, fix, attaches );
-				}
-			}
-		};
-	});
-}
-
-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" ) {
-				// ( 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 );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function() {
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-	triggerHandler: function( type, data ) {
-		var elem = this[0];
-		if ( elem ) {
-			return jQuery.event.trigger( type, data, elem, true );
-		}
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/event/ajax.js b/src/main/webapp/bower_components/jquery/src/event/ajax.js
deleted file mode 100644
index 278c403e..00000000
--- a/src/main/webapp/bower_components/jquery/src/event/ajax.js
+++ /dev/null
@@ -1,13 +0,0 @@
-define([
-	"../core",
-	"../event"
-], function( jQuery ) {
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
-	jQuery.fn[ type ] = function( fn ) {
-		return this.on( type, fn );
-	};
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/event/alias.js b/src/main/webapp/bower_components/jquery/src/event/alias.js
deleted file mode 100644
index 7e791750..00000000
--- a/src/main/webapp/bower_components/jquery/src/event/alias.js
+++ /dev/null
@@ -1,39 +0,0 @@
-define([
-	"../core",
-	"../event"
-], function( jQuery ) {
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-	// Handle event binding
-	jQuery.fn[ name ] = function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-	};
-});
-
-jQuery.fn.extend({
-	hover: function( fnOver, fnOut ) {
-		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-	},
-
-	bind: function( types, data, fn ) {
-		return this.on( types, null, data, fn );
-	},
-	unbind: function( types, fn ) {
-		return this.off( types, null, fn );
-	},
-
-	delegate: function( selector, types, data, fn ) {
-		return this.on( types, selector, data, fn );
-	},
-	undelegate: function( selector, types, fn ) {
-		// ( namespace ) or ( selector, types [, fn] )
-		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/event/support.js b/src/main/webapp/bower_components/jquery/src/event/support.js
deleted file mode 100644
index 85060db7..00000000
--- a/src/main/webapp/bower_components/jquery/src/event/support.js
+++ /dev/null
@@ -1,9 +0,0 @@
-define([
-	"../var/support"
-], function( support ) {
-
-support.focusinBubbles = "onfocusin" in window;
-
-return support;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/exports/amd.js b/src/main/webapp/bower_components/jquery/src/exports/amd.js
deleted file mode 100644
index 9a9846f9..00000000
--- a/src/main/webapp/bower_components/jquery/src/exports/amd.js
+++ /dev/null
@@ -1,24 +0,0 @@
-define([
-	"../core"
-], function( jQuery ) {
-
-// Register as a named AMD module, since jQuery can be concatenated with other
-// files that may use define, but not via a proper concatenation script that
-// understands anonymous AMD modules. A named AMD is safest and most robust
-// way to register. Lowercase jquery is used because AMD module names are
-// derived from file names, and jQuery is normally delivered in a lowercase
-// file name. Do this after creating the global so that if an AMD module wants
-// to call noConflict to hide this version of jQuery, it will work.
-
-// Note that for maximum portability, libraries that are not jQuery should
-// declare themselves as anonymous modules, and avoid setting a global if an
-// AMD loader is present. jQuery is a special case. For more information, see
-// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
-
-if ( typeof define === "function" && define.amd ) {
-	define( "jquery", [], function() {
-		return jQuery;
-	});
-}
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/exports/global.js b/src/main/webapp/bower_components/jquery/src/exports/global.js
deleted file mode 100644
index 6513287c..00000000
--- a/src/main/webapp/bower_components/jquery/src/exports/global.js
+++ /dev/null
@@ -1,32 +0,0 @@
-define([
-	"../core",
-	"../var/strundefined"
-], function( jQuery, strundefined ) {
-
-var
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$;
-
-jQuery.noConflict = function( deep ) {
-	if ( window.$ === jQuery ) {
-		window.$ = _$;
-	}
-
-	if ( deep && window.jQuery === jQuery ) {
-		window.jQuery = _jQuery;
-	}
-
-	return jQuery;
-};
-
-// Expose jQuery and $ identifiers, even in AMD
-// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
-if ( typeof noGlobal === strundefined ) {
-	window.jQuery = window.$ = jQuery;
-}
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/intro.js b/src/main/webapp/bower_components/jquery/src/intro.js
deleted file mode 100644
index d7d43680..00000000
--- a/src/main/webapp/bower_components/jquery/src/intro.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*!
- * jQuery JavaScript Library v@VERSION
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: @DATE
- */
-
-(function( global, factory ) {
-
-	if ( typeof module === "object" && typeof module.exports === "object" ) {
-		// For CommonJS and CommonJS-like environments where a proper `window`
-		// is present, execute the factory and get jQuery.
-		// For environments that do not have a `window` with a `document`
-		// (such as Node.js), expose a factory as module.exports.
-		// This accentuates the need for the creation of a real `window`.
-		// e.g. var jQuery = require("jquery")(window);
-		// See ticket #14549 for more info.
-		module.exports = global.document ?
-			factory( global, true ) :
-			function( w ) {
-				if ( !w.document ) {
-					throw new Error( "jQuery requires a window with a document" );
-				}
-				return factory( w );
-			};
-	} else {
-		factory( global );
-	}
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Support: Firefox 18+
-// Can't be in strict mode, several libs including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-//"use strict";
diff --git a/src/main/webapp/bower_components/jquery/src/jquery.js b/src/main/webapp/bower_components/jquery/src/jquery.js
deleted file mode 100644
index d3857e95..00000000
--- a/src/main/webapp/bower_components/jquery/src/jquery.js
+++ /dev/null
@@ -1,37 +0,0 @@
-define([
-	"./core",
-	"./selector",
-	"./traversing",
-	"./callbacks",
-	"./deferred",
-	"./core/ready",
-	"./data",
-	"./queue",
-	"./queue/delay",
-	"./attributes",
-	"./event",
-	"./event/alias",
-	"./manipulation",
-	"./manipulation/_evalUrl",
-	"./wrap",
-	"./css",
-	"./css/hiddenVisibleSelectors",
-	"./serialize",
-	"./ajax",
-	"./ajax/xhr",
-	"./ajax/script",
-	"./ajax/jsonp",
-	"./ajax/load",
-	"./event/ajax",
-	"./effects",
-	"./effects/animatedSelector",
-	"./offset",
-	"./dimensions",
-	"./deprecated",
-	"./exports/amd",
-	"./exports/global"
-], function( jQuery ) {
-
-return jQuery;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/manipulation.js b/src/main/webapp/bower_components/jquery/src/manipulation.js
deleted file mode 100644
index c6279626..00000000
--- a/src/main/webapp/bower_components/jquery/src/manipulation.js
+++ /dev/null
@@ -1,580 +0,0 @@
-define([
-	"./core",
-	"./var/concat",
-	"./var/push",
-	"./core/access",
-	"./manipulation/var/rcheckableType",
-	"./manipulation/support",
-	"./data/var/data_priv",
-	"./data/var/data_user",
-
-	"./core/init",
-	"./data/accepts",
-	"./traversing",
-	"./selector",
-	"./event"
-], function( jQuery, concat, push, access, rcheckableType, support, data_priv, data_user ) {
-
-var
-	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-	rtagName = /<([\w:]+)/,
-	rhtml = /<|&#?\w+;/,
-	rnoInnerhtml = /<(?:script|style|link)/i,
-	// checked="checked" or checked
-	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-	rscriptType = /^$|\/(?:java|ecma)script/i,
-	rscriptTypeMasked = /^true\/(.*)/,
-	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
-	// We have to close these tags to support XHTML (#13200)
-	wrapMap = {
-
-		// Support: IE9
-		option: [ 1, "<select multiple='multiple'>", "</select>" ],
-
-		thead: [ 1, "<table>", "</table>" ],
-		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
-		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
-		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
-		_default: [ 0, "", "" ]
-	};
-
-// Support: IE9
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// Support: 1.x compatibility
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-	return jQuery.nodeName( elem, "table" ) &&
-		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
-		elem.getElementsByTagName("tbody")[0] ||
-			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-		elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
-	return elem;
-}
-function restoreScript( elem ) {
-	var match = rscriptTypeMasked.exec( elem.type );
-
-	if ( match ) {
-		elem.type = match[ 1 ];
-	} else {
-		elem.removeAttribute("type");
-	}
-
-	return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-	var i = 0,
-		l = elems.length;
-
-	for ( ; i < l; i++ ) {
-		data_priv.set(
-			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
-		);
-	}
-}
-
-function cloneCopyEvent( src, dest ) {
-	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
-
-	if ( dest.nodeType !== 1 ) {
-		return;
-	}
-
-	// 1. Copy private data: events, handlers, etc.
-	if ( data_priv.hasData( src ) ) {
-		pdataOld = data_priv.access( src );
-		pdataCur = data_priv.set( dest, pdataOld );
-		events = pdataOld.events;
-
-		if ( events ) {
-			delete pdataCur.handle;
-			pdataCur.events = {};
-
-			for ( type in events ) {
-				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-					jQuery.event.add( dest, type, events[ type ][ i ] );
-				}
-			}
-		}
-	}
-
-	// 2. Copy user data
-	if ( data_user.hasData( src ) ) {
-		udataOld = data_user.access( src );
-		udataCur = jQuery.extend( {}, udataOld );
-
-		data_user.set( dest, udataCur );
-	}
-}
-
-function getAll( context, tag ) {
-	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
-			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
-			[];
-
-	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-		jQuery.merge( [ context ], ret ) :
-		ret;
-}
-
-// Fix IE bugs, see support tests
-function fixInput( src, dest ) {
-	var nodeName = dest.nodeName.toLowerCase();
-
-	// Fails to persist the checked state of a cloned checkbox or radio button.
-	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
-		dest.checked = src.checked;
-
-	// Fails to return the selected option to the default selected state when cloning options
-	} else if ( nodeName === "input" || nodeName === "textarea" ) {
-		dest.defaultValue = src.defaultValue;
-	}
-}
-
-jQuery.extend({
-	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-		var i, l, srcElements, destElements,
-			clone = elem.cloneNode( true ),
-			inPage = jQuery.contains( elem.ownerDocument, elem );
-
-		// Fix IE cloning issues
-		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
-				!jQuery.isXMLDoc( elem ) ) {
-
-			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-			destElements = getAll( clone );
-			srcElements = getAll( elem );
-
-			for ( i = 0, l = srcElements.length; i < l; i++ ) {
-				fixInput( srcElements[ i ], destElements[ i ] );
-			}
-		}
-
-		// Copy the events from the original to the clone
-		if ( dataAndEvents ) {
-			if ( deepDataAndEvents ) {
-				srcElements = srcElements || getAll( elem );
-				destElements = destElements || getAll( clone );
-
-				for ( i = 0, l = srcElements.length; i < l; i++ ) {
-					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
-				}
-			} else {
-				cloneCopyEvent( elem, clone );
-			}
-		}
-
-		// Preserve script evaluation history
-		destElements = getAll( clone, "script" );
-		if ( destElements.length > 0 ) {
-			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-		}
-
-		// Return the cloned set
-		return clone;
-	},
-
-	buildFragment: function( elems, context, scripts, selection ) {
-		var elem, tmp, tag, wrap, contains, j,
-			fragment = context.createDocumentFragment(),
-			nodes = [],
-			i = 0,
-			l = elems.length;
-
-		for ( ; i < l; i++ ) {
-			elem = elems[ i ];
-
-			if ( elem || elem === 0 ) {
-
-				// Add nodes directly
-				if ( jQuery.type( elem ) === "object" ) {
-					// Support: QtWebKit, PhantomJS
-					// push.apply(_, arraylike) throws on ancient WebKit
-					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-				// Convert non-html into a text node
-				} else if ( !rhtml.test( elem ) ) {
-					nodes.push( context.createTextNode( elem ) );
-
-				// Convert html into DOM nodes
-				} else {
-					tmp = tmp || fragment.appendChild( context.createElement("div") );
-
-					// Deserialize a standard representation
-					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
-					wrap = wrapMap[ tag ] || wrapMap._default;
-					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
-
-					// Descend through wrappers to the right content
-					j = wrap[ 0 ];
-					while ( j-- ) {
-						tmp = tmp.lastChild;
-					}
-
-					// Support: QtWebKit, PhantomJS
-					// push.apply(_, arraylike) throws on ancient WebKit
-					jQuery.merge( nodes, tmp.childNodes );
-
-					// Remember the top-level container
-					tmp = fragment.firstChild;
-
-					// Ensure the created nodes are orphaned (#12392)
-					tmp.textContent = "";
-				}
-			}
-		}
-
-		// Remove wrapper from fragment
-		fragment.textContent = "";
-
-		i = 0;
-		while ( (elem = nodes[ i++ ]) ) {
-
-			// #4087 - If origin and destination elements are the same, and this is
-			// that element, do not do anything
-			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-				continue;
-			}
-
-			contains = jQuery.contains( elem.ownerDocument, elem );
-
-			// Append to fragment
-			tmp = getAll( fragment.appendChild( elem ), "script" );
-
-			// Preserve script evaluation history
-			if ( contains ) {
-				setGlobalEval( tmp );
-			}
-
-			// Capture executables
-			if ( scripts ) {
-				j = 0;
-				while ( (elem = tmp[ j++ ]) ) {
-					if ( rscriptType.test( elem.type || "" ) ) {
-						scripts.push( elem );
-					}
-				}
-			}
-		}
-
-		return fragment;
-	},
-
-	cleanData: function( elems ) {
-		var data, elem, type, key,
-			special = jQuery.event.special,
-			i = 0;
-
-		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
-			if ( jQuery.acceptData( elem ) ) {
-				key = elem[ data_priv.expando ];
-
-				if ( key && (data = data_priv.cache[ key ]) ) {
-					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 );
-							}
-						}
-					}
-					if ( data_priv.cache[ key ] ) {
-						// Discard any remaining `private` data
-						delete data_priv.cache[ key ];
-					}
-				}
-			}
-			// Discard any remaining `user` data
-			delete data_user.cache[ elem[ data_user.expando ] ];
-		}
-	}
-});
-
-jQuery.fn.extend({
-	text: function( value ) {
-		return access( this, function( value ) {
-			return value === undefined ?
-				jQuery.text( this ) :
-				this.empty().each(function() {
-					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-						this.textContent = value;
-					}
-				});
-		}, null, value, arguments.length );
-	},
-
-	append: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.appendChild( elem );
-			}
-		});
-	},
-
-	prepend: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.insertBefore( elem, target.firstChild );
-			}
-		});
-	},
-
-	before: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this );
-			}
-		});
-	},
-
-	after: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this.nextSibling );
-			}
-		});
-	},
-
-	remove: function( selector, keepData /* Internal Use Only */ ) {
-		var elem,
-			elems = selector ? jQuery.filter( selector, this ) : this,
-			i = 0;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-			if ( !keepData && elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem ) );
-			}
-
-			if ( elem.parentNode ) {
-				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-					setGlobalEval( getAll( elem, "script" ) );
-				}
-				elem.parentNode.removeChild( elem );
-			}
-		}
-
-		return this;
-	},
-
-	empty: function() {
-		var elem,
-			i = 0;
-
-		for ( ; (elem = this[i]) != null; i++ ) {
-			if ( elem.nodeType === 1 ) {
-
-				// Prevent memory leaks
-				jQuery.cleanData( getAll( elem, false ) );
-
-				// Remove any remaining nodes
-				elem.textContent = "";
-			}
-		}
-
-		return this;
-	},
-
-	clone: function( dataAndEvents, deepDataAndEvents ) {
-		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-		return this.map(function() {
-			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-		});
-	},
-
-	html: function( value ) {
-		return access( this, function( value ) {
-			var elem = this[ 0 ] || {},
-				i = 0,
-				l = this.length;
-
-			if ( value === undefined && elem.nodeType === 1 ) {
-				return elem.innerHTML;
-			}
-
-			// See if we can take a shortcut and just use innerHTML
-			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
-
-				value = value.replace( rxhtmlTag, "<$1></$2>" );
-
-				try {
-					for ( ; i < l; i++ ) {
-						elem = this[ i ] || {};
-
-						// Remove element nodes and prevent memory leaks
-						if ( elem.nodeType === 1 ) {
-							jQuery.cleanData( getAll( elem, false ) );
-							elem.innerHTML = value;
-						}
-					}
-
-					elem = 0;
-
-				// If using innerHTML throws an exception, use the fallback method
-				} catch( e ) {}
-			}
-
-			if ( elem ) {
-				this.empty().append( value );
-			}
-		}, null, value, arguments.length );
-	},
-
-	replaceWith: function() {
-		var arg = arguments[ 0 ];
-
-		// Make the changes, replacing each context element with the new content
-		this.domManip( arguments, function( elem ) {
-			arg = this.parentNode;
-
-			jQuery.cleanData( getAll( this ) );
-
-			if ( arg ) {
-				arg.replaceChild( elem, this );
-			}
-		});
-
-		// Force removal if there was no new content (e.g., from empty arguments)
-		return arg && (arg.length || arg.nodeType) ? this : this.remove();
-	},
-
-	detach: function( selector ) {
-		return this.remove( selector, true );
-	},
-
-	domManip: function( args, callback ) {
-
-		// Flatten any nested arrays
-		args = concat.apply( [], args );
-
-		var fragment, first, scripts, hasScripts, node, doc,
-			i = 0,
-			l = this.length,
-			set = this,
-			iNoClone = l - 1,
-			value = args[ 0 ],
-			isFunction = jQuery.isFunction( value );
-
-		// We can't cloneNode fragments that contain checked, in WebKit
-		if ( isFunction ||
-				( l > 1 && typeof value === "string" &&
-					!support.checkClone && rchecked.test( value ) ) ) {
-			return this.each(function( index ) {
-				var self = set.eq( index );
-				if ( isFunction ) {
-					args[ 0 ] = value.call( this, index, self.html() );
-				}
-				self.domManip( args, callback );
-			});
-		}
-
-		if ( l ) {
-			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
-			first = fragment.firstChild;
-
-			if ( fragment.childNodes.length === 1 ) {
-				fragment = first;
-			}
-
-			if ( first ) {
-				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-				hasScripts = scripts.length;
-
-				// Use the original fragment for the last item instead of the first because it can end up
-				// being emptied incorrectly in certain situations (#8070).
-				for ( ; i < l; i++ ) {
-					node = fragment;
-
-					if ( i !== iNoClone ) {
-						node = jQuery.clone( node, true, true );
-
-						// Keep references to cloned scripts for later restoration
-						if ( hasScripts ) {
-							// Support: QtWebKit
-							// jQuery.merge because push.apply(_, arraylike) throws
-							jQuery.merge( scripts, getAll( node, "script" ) );
-						}
-					}
-
-					callback.call( this[ i ], node, i );
-				}
-
-				if ( hasScripts ) {
-					doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-					// Reenable scripts
-					jQuery.map( scripts, restoreScript );
-
-					// Evaluate executable scripts on first document insertion
-					for ( i = 0; i < hasScripts; i++ ) {
-						node = scripts[ i ];
-						if ( rscriptType.test( node.type || "" ) &&
-							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-							if ( node.src ) {
-								// Optional AJAX dependency, but won't run scripts if not present
-								if ( jQuery._evalUrl ) {
-									jQuery._evalUrl( node.src );
-								}
-							} else {
-								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return this;
-	}
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function( name, original ) {
-	jQuery.fn[ name ] = function( selector ) {
-		var elems,
-			ret = [],
-			insert = jQuery( selector ),
-			last = insert.length - 1,
-			i = 0;
-
-		for ( ; i <= last; i++ ) {
-			elems = i === last ? this : this.clone( true );
-			jQuery( insert[ i ] )[ original ]( elems );
-
-			// Support: QtWebKit
-			// .get() because push.apply(_, arraylike) throws
-			push.apply( ret, elems.get() );
-		}
-
-		return this.pushStack( ret );
-	};
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/manipulation/_evalUrl.js b/src/main/webapp/bower_components/jquery/src/manipulation/_evalUrl.js
deleted file mode 100644
index 6704749a..00000000
--- a/src/main/webapp/bower_components/jquery/src/manipulation/_evalUrl.js
+++ /dev/null
@@ -1,18 +0,0 @@
-define([
-	"../ajax"
-], function( jQuery ) {
-
-jQuery._evalUrl = function( url ) {
-	return jQuery.ajax({
-		url: url,
-		type: "GET",
-		dataType: "script",
-		async: false,
-		global: false,
-		"throws": true
-	});
-};
-
-return jQuery._evalUrl;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/manipulation/support.js b/src/main/webapp/bower_components/jquery/src/manipulation/support.js
deleted file mode 100644
index 822a014f..00000000
--- a/src/main/webapp/bower_components/jquery/src/manipulation/support.js
+++ /dev/null
@@ -1,32 +0,0 @@
-define([
-	"../var/support"
-], function( support ) {
-
-(function() {
-	var fragment = document.createDocumentFragment(),
-		div = fragment.appendChild( document.createElement( "div" ) ),
-		input = document.createElement( "input" );
-
-	// Support: Safari<=5.1
-	// Check state lost if the name is set (#11217)
-	// Support: Windows Web Apps (WWA)
-	// `name` and `type` must use .setAttribute for WWA (#14901)
-	input.setAttribute( "type", "radio" );
-	input.setAttribute( "checked", "checked" );
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-
-	// Support: Safari<=5.1, Android<4.2
-	// Older WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Support: IE<=11+
-	// Make sure textarea (and checkbox) defaultValue is properly cloned
-	div.innerHTML = "<textarea>x</textarea>";
-	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-})();
-
-return support;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/manipulation/var/rcheckableType.js b/src/main/webapp/bower_components/jquery/src/manipulation/var/rcheckableType.js
deleted file mode 100644
index c27a15dc..00000000
--- a/src/main/webapp/bower_components/jquery/src/manipulation/var/rcheckableType.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return (/^(?:checkbox|radio)$/i);
-});
diff --git a/src/main/webapp/bower_components/jquery/src/offset.js b/src/main/webapp/bower_components/jquery/src/offset.js
deleted file mode 100644
index 4c34fd0e..00000000
--- a/src/main/webapp/bower_components/jquery/src/offset.js
+++ /dev/null
@@ -1,207 +0,0 @@
-define([
-	"./core",
-	"./var/strundefined",
-	"./core/access",
-	"./css/var/rnumnonpx",
-	"./css/curCSS",
-	"./css/addGetHookIf",
-	"./css/support",
-
-	"./core/init",
-	"./css",
-	"./selector" // contains
-], function( jQuery, strundefined, access, rnumnonpx, curCSS, addGetHookIf, support ) {
-
-var docElem = window.document.documentElement;
-
-/**
- * Gets a window from an element
- */
-function getWindow( elem ) {
-	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
-}
-
-jQuery.offset = {
-	setOffset: function( elem, options, i ) {
-		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
-			position = jQuery.css( elem, "position" ),
-			curElem = jQuery( elem ),
-			props = {};
-
-		// Set position first, in-case top/left are set even on static elem
-		if ( position === "static" ) {
-			elem.style.position = "relative";
-		}
-
-		curOffset = curElem.offset();
-		curCSSTop = jQuery.css( elem, "top" );
-		curCSSLeft = jQuery.css( elem, "left" );
-		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
-			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
-
-		// Need to be able to calculate position if either
-		// top or left is auto and position is either absolute or fixed
-		if ( calculatePosition ) {
-			curPosition = curElem.position();
-			curTop = curPosition.top;
-			curLeft = curPosition.left;
-
-		} else {
-			curTop = parseFloat( curCSSTop ) || 0;
-			curLeft = parseFloat( curCSSLeft ) || 0;
-		}
-
-		if ( jQuery.isFunction( options ) ) {
-			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({
-	offset: function( options ) {
-		if ( arguments.length ) {
-			return options === undefined ?
-				this :
-				this.each(function( i ) {
-					jQuery.offset.setOffset( this, options, i );
-				});
-		}
-
-		var docElem, win,
-			elem = this[ 0 ],
-			box = { top: 0, left: 0 },
-			doc = elem && elem.ownerDocument;
-
-		if ( !doc ) {
-			return;
-		}
-
-		docElem = doc.documentElement;
-
-		// Make sure it's not a disconnected DOM node
-		if ( !jQuery.contains( docElem, elem ) ) {
-			return box;
-		}
-
-		// Support: BlackBerry 5, iOS 3 (original iPhone)
-		// If we don't have gBCR, just use 0,0 rather than error
-		if ( typeof elem.getBoundingClientRect !== strundefined ) {
-			box = elem.getBoundingClientRect();
-		}
-		win = getWindow( doc );
-		return {
-			top: box.top + win.pageYOffset - docElem.clientTop,
-			left: box.left + win.pageXOffset - docElem.clientLeft
-		};
-	},
-
-	position: function() {
-		if ( !this[ 0 ] ) {
-			return;
-		}
-
-		var offsetParent, offset,
-			elem = this[ 0 ],
-			parentOffset = { top: 0, left: 0 };
-
-		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
-		if ( jQuery.css( elem, "position" ) === "fixed" ) {
-			// Assume getBoundingClientRect is there when computed position is fixed
-			offset = elem.getBoundingClientRect();
-
-		} else {
-			// Get *real* offsetParent
-			offsetParent = this.offsetParent();
-
-			// Get correct offsets
-			offset = this.offset();
-			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
-				parentOffset = offsetParent.offset();
-			}
-
-			// Add offsetParent borders
-			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
-			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
-		}
-
-		// Subtract parent offsets and element margins
-		return {
-			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
-			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
-		};
-	},
-
-	offsetParent: function() {
-		return this.map(function() {
-			var offsetParent = this.offsetParent || docElem;
-
-			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
-				offsetParent = offsetParent.offsetParent;
-			}
-
-			return offsetParent || docElem;
-		});
-	}
-});
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
-	var top = "pageYOffset" === prop;
-
-	jQuery.fn[ method ] = function( val ) {
-		return access( this, function( elem, method, val ) {
-			var win = getWindow( elem );
-
-			if ( val === undefined ) {
-				return win ? win[ prop ] : elem[ method ];
-			}
-
-			if ( win ) {
-				win.scrollTo(
-					!top ? val : window.pageXOffset,
-					top ? val : window.pageYOffset
-				);
-
-			} else {
-				elem[ method ] = val;
-			}
-		}, method, val, arguments.length, null );
-	};
-});
-
-// Support: Safari<7+, Chrome<37+
-// Add the top/left cssHooks using jQuery.fn.position
-// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
-// getComputedStyle returns percent when specified for top/left/bottom/right;
-// rather than make the css module depend on the offset module, just check for it here
-jQuery.each( [ "top", "left" ], function( i, prop ) {
-	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
-		function( elem, computed ) {
-			if ( computed ) {
-				computed = curCSS( elem, prop );
-				// If curCSS returns percentage, fallback to offset
-				return rnumnonpx.test( computed ) ?
-					jQuery( elem ).position()[ prop ] + "px" :
-					computed;
-			}
-		}
-	);
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/outro.js b/src/main/webapp/bower_components/jquery/src/outro.js
deleted file mode 100644
index be4600a5..00000000
--- a/src/main/webapp/bower_components/jquery/src/outro.js
+++ /dev/null
@@ -1 +0,0 @@
-}));
diff --git a/src/main/webapp/bower_components/jquery/src/queue.js b/src/main/webapp/bower_components/jquery/src/queue.js
deleted file mode 100644
index 199c56d3..00000000
--- a/src/main/webapp/bower_components/jquery/src/queue.js
+++ /dev/null
@@ -1,142 +0,0 @@
-define([
-	"./core",
-	"./data/var/data_priv",
-	"./deferred",
-	"./callbacks"
-], function( jQuery, data_priv ) {
-
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		var queue;
-
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			queue = data_priv.get( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !queue || jQuery.isArray( data ) ) {
-					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
-				} else {
-					queue.push( data );
-				}
-			}
-			return queue || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			startLength = queue.length,
-			fn = queue.shift(),
-			hooks = jQuery._queueHooks( elem, type ),
-			next = function() {
-				jQuery.dequeue( elem, type );
-			};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-			startLength--;
-		}
-
-		if ( fn ) {
-
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			// Clear up the last queue stop function
-			delete hooks.stop;
-			fn.call( elem, next, hooks );
-		}
-
-		if ( !startLength && hooks ) {
-			hooks.empty.fire();
-		}
-	},
-
-	// Not public - generate a queueHooks object, or return the current one
-	_queueHooks: function( elem, type ) {
-		var key = type + "queueHooks";
-		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
-			empty: jQuery.Callbacks("once memory").add(function() {
-				data_priv.remove( elem, [ type + "queue", key ] );
-			})
-		});
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				// Ensure a hooks for this queue
-				jQuery._queueHooks( this, type );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, obj ) {
-		var tmp,
-			count = 1,
-			defer = jQuery.Deferred(),
-			elements = this,
-			i = this.length,
-			resolve = function() {
-				if ( !( --count ) ) {
-					defer.resolveWith( elements, [ elements ] );
-				}
-			};
-
-		if ( typeof type !== "string" ) {
-			obj = type;
-			type = undefined;
-		}
-		type = type || "fx";
-
-		while ( i-- ) {
-			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
-			if ( tmp && tmp.empty ) {
-				count++;
-				tmp.empty.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( obj );
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/queue/delay.js b/src/main/webapp/bower_components/jquery/src/queue/delay.js
deleted file mode 100644
index 4b4498ce..00000000
--- a/src/main/webapp/bower_components/jquery/src/queue/delay.js
+++ /dev/null
@@ -1,22 +0,0 @@
-define([
-	"../core",
-	"../queue",
-	"../effects" // Delay is optional because of this dependency
-], function( jQuery ) {
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
-	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-	type = type || "fx";
-
-	return this.queue( type, function( next, hooks ) {
-		var timeout = setTimeout( next, time );
-		hooks.stop = function() {
-			clearTimeout( timeout );
-		};
-	});
-};
-
-return jQuery.fn.delay;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/selector-native.js b/src/main/webapp/bower_components/jquery/src/selector-native.js
deleted file mode 100644
index d8163c2f..00000000
--- a/src/main/webapp/bower_components/jquery/src/selector-native.js
+++ /dev/null
@@ -1,172 +0,0 @@
-define([
-	"./core"
-], function( jQuery ) {
-
-/*
- * Optional (non-Sizzle) selector module for custom builds.
- *
- * Note that this DOES NOT SUPPORT many documented jQuery
- * features in exchange for its smaller size:
- *
- * Attribute not equal selector
- * Positional selectors (:first; :eq(n); :odd; etc.)
- * Type selectors (:input; :checkbox; :button; etc.)
- * State-based selectors (:animated; :visible; :hidden; etc.)
- * :has(selector)
- * :not(complex selector)
- * custom selectors via Sizzle extensions
- * Leading combinators (e.g., $collection.find("> *"))
- * Reliable functionality on XML fragments
- * Requiring all parts of a selector to match elements under context
- *   (e.g., $div.find("div > *") now matches children of $div)
- * Matching against non-elements
- * Reliable sorting of disconnected nodes
- * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
- *
- * If any of these are unacceptable tradeoffs, either use Sizzle or
- * customize this stub for the project's specific needs.
- */
-
-var docElem = window.document.documentElement,
-	selector_hasDuplicate,
-	matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector,
-	selector_sortOrder = function( a, b ) {
-		// Flag for duplicate removal
-		if ( a === b ) {
-			selector_hasDuplicate = true;
-			return 0;
-		}
-
-		var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
-
-		if ( compare ) {
-			// Disconnected nodes
-			if ( compare & 1 ) {
-
-				// Choose the first element that is related to our document
-				if ( a === document || jQuery.contains(document, a) ) {
-					return -1;
-				}
-				if ( b === document || jQuery.contains(document, b) ) {
-					return 1;
-				}
-
-				// Maintain original order
-				return 0;
-			}
-
-			return compare & 4 ? -1 : 1;
-		}
-
-		// Not directly comparable, sort on existence of method
-		return a.compareDocumentPosition ? -1 : 1;
-	};
-
-jQuery.extend({
-	find: function( selector, context, results, seed ) {
-		var elem, nodeType,
-			i = 0;
-
-		results = results || [];
-		context = context || document;
-
-		// Same basic safeguard as Sizzle
-		if ( !selector || typeof selector !== "string" ) {
-			return results;
-		}
-
-		// Early return if context is not an element or document
-		if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-			return [];
-		}
-
-		if ( seed ) {
-			while ( (elem = seed[i++]) ) {
-				if ( jQuery.find.matchesSelector(elem, selector) ) {
-					results.push( elem );
-				}
-			}
-		} else {
-			jQuery.merge( results, context.querySelectorAll(selector) );
-		}
-
-		return results;
-	},
-	unique: function( results ) {
-		var elem,
-			duplicates = [],
-			i = 0,
-			j = 0;
-
-		selector_hasDuplicate = false;
-		results.sort( selector_sortOrder );
-
-		if ( selector_hasDuplicate ) {
-			while ( (elem = results[i++]) ) {
-				if ( elem === results[ i ] ) {
-					j = duplicates.push( i );
-				}
-			}
-			while ( j-- ) {
-				results.splice( duplicates[ j ], 1 );
-			}
-		}
-
-		return results;
-	},
-	text: function( elem ) {
-		var node,
-			ret = "",
-			i = 0,
-			nodeType = elem.nodeType;
-
-		if ( !nodeType ) {
-			// If no nodeType, this is expected to be an array
-			while ( (node = elem[i++]) ) {
-				// Do not traverse comment nodes
-				ret += jQuery.text( node );
-			}
-		} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-			// Use textContent for elements
-			return elem.textContent;
-		} else if ( nodeType === 3 || nodeType === 4 ) {
-			return elem.nodeValue;
-		}
-		// Do not include comment or processing instruction nodes
-
-		return ret;
-	},
-	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(bup) );
-	},
-	isXMLDoc: function( elem ) {
-		return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML";
-	},
-	expr: {
-		attrHandle: {},
-		match: {
-			bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
-			needsContext: /^[\x20\t\r\n\f]*[>+~]/
-		}
-	}
-});
-
-jQuery.extend( jQuery.find, {
-	matches: function( expr, elements ) {
-		return jQuery.find( expr, null, null, elements );
-	},
-	matchesSelector: function( elem, expr ) {
-		return matches.call( elem, expr );
-	},
-	attr: function( elem, name ) {
-		return elem.getAttribute( name );
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/selector-sizzle.js b/src/main/webapp/bower_components/jquery/src/selector-sizzle.js
deleted file mode 100644
index 7d3926b1..00000000
--- a/src/main/webapp/bower_components/jquery/src/selector-sizzle.js
+++ /dev/null
@@ -1,14 +0,0 @@
-define([
-	"./core",
-	"sizzle"
-], function( jQuery, Sizzle ) {
-
-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;
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/selector.js b/src/main/webapp/bower_components/jquery/src/selector.js
deleted file mode 100644
index 01e9733b..00000000
--- a/src/main/webapp/bower_components/jquery/src/selector.js
+++ /dev/null
@@ -1 +0,0 @@
-define([ "./selector-sizzle" ]);
diff --git a/src/main/webapp/bower_components/jquery/src/serialize.js b/src/main/webapp/bower_components/jquery/src/serialize.js
deleted file mode 100644
index 0d6dfec6..00000000
--- a/src/main/webapp/bower_components/jquery/src/serialize.js
+++ /dev/null
@@ -1,111 +0,0 @@
-define([
-	"./core",
-	"./manipulation/var/rcheckableType",
-	"./core/init",
-	"./traversing", // filter
-	"./attributes/prop"
-], function( jQuery, rcheckableType ) {
-
-var r20 = /%20/g,
-	rbracket = /\[\]$/,
-	rCRLF = /\r?\n/g,
-	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-	rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
-	var name;
-
-	if ( jQuery.isArray( obj ) ) {
-		// Serialize array item.
-		jQuery.each( obj, function( i, v ) {
-			if ( traditional || rbracket.test( prefix ) ) {
-				// Treat each array item as a scalar.
-				add( prefix, v );
-
-			} else {
-				// Item is non-scalar (array or object), encode its numeric index.
-				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-			}
-		});
-
-	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
-		// Serialize object item.
-		for ( name in obj ) {
-			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-		}
-
-	} else {
-		// Serialize scalar item.
-		add( prefix, obj );
-	}
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
-	var prefix,
-		s = [],
-		add = function( key, value ) {
-			// If value is a function, invoke it and return its value
-			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-		};
-
-	// Set traditional to true for jQuery <= 1.3.2 behavior.
-	if ( traditional === undefined ) {
-		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-	}
-
-	// If an array was passed in, assume that it is an array of form elements.
-	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-		// Serialize the form elements
-		jQuery.each( a, function() {
-			add( this.name, this.value );
-		});
-
-	} else {
-		// If traditional, encode the "old" way (the way 1.3.2 or older
-		// did it), otherwise encode params recursively.
-		for ( prefix in a ) {
-			buildParams( prefix, a[ prefix ], traditional, add );
-		}
-	}
-
-	// Return the resulting serialization
-	return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend({
-	serialize: function() {
-		return jQuery.param( this.serializeArray() );
-	},
-	serializeArray: function() {
-		return this.map(function() {
-			// Can add propHook for "elements" to filter or add form elements
-			var elements = jQuery.prop( this, "elements" );
-			return elements ? jQuery.makeArray( elements ) : this;
-		})
-		.filter(function() {
-			var type = this.type;
-
-			// Use .is( ":disabled" ) so that fieldset[disabled] works
-			return this.name && !jQuery( this ).is( ":disabled" ) &&
-				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-				( this.checked || !rcheckableType.test( type ) );
-		})
-		.map(function( i, elem ) {
-			var val = jQuery( this ).val();
-
-			return val == null ?
-				null :
-				jQuery.isArray( val ) ?
-					jQuery.map( val, function( val ) {
-						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-					}) :
-					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-		}).get();
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.js b/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.js
deleted file mode 100644
index 89aecbc2..00000000
--- a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.js
+++ /dev/null
@@ -1,2067 +0,0 @@
-/*!
- * Sizzle CSS Selector Engine v2.2.0-pre
- * http://sizzlejs.com/
- *
- * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-12-16
- */
-(function( window ) {
-
-var i,
-	support,
-	Expr,
-	getText,
-	isXML,
-	tokenize,
-	compile,
-	select,
-	outermostContext,
-	sortInput,
-	hasDuplicate,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + 1 * new Date(),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf as it's faster than native
-	// http://jsperf.com/thor-indexof-vs-for/5
-	indexOf = function( list, elem ) {
-		var i = 0,
-			len = list.length;
-		for ( ; i < len; i++ ) {
-			if ( list[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// 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#" ),
-
-	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
-		// Operator (capture 2)
-		"*([*^$|!~]?=)" + whitespace +
-		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
-		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
-		"*\\]",
-
-	pseudos = ":(" + characterEncoding + ")(?:\\((" +
-		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
-		// 1. quoted (capture 3; capture 4 or capture 5)
-		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
-		// 2. simple (capture 6)
-		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
-		// 3. anything else (capture 2)
-		".*" +
-		")\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rwhitespace = new RegExp( whitespace + "+", "g" ),
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rsibling = /[+~]/,
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox<24
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			high < 0 ?
-				// BMP codepoint
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	},
-
-	// Used for iframes
-	// See setDocument()
-	// Removing the function wrapper causes a "Permission Denied"
-	// error in IE
-	unloadHandler = function() {
-		setDocument();
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-	nodeType = context.nodeType;
-
-	if ( typeof selector !== "string" || !selector ||
-		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
-
-		return results;
-	}
-
-	if ( !seed && documentIsHTML ) {
-
-		// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
-		if ( nodeType !== 11 && (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 (jQuery #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, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = nodeType !== 1 && 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 ( 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 + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key + " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key + " " ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
-	return context && typeof context.getElementsByTagName !== "undefined" && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var hasCompare, parent,
-		doc = node ? node.ownerDocument || node : preferredDoc;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-	parent = doc.defaultView;
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent !== parent.top ) {
-		// IE11 does not have attachEvent, so all must suffer
-		if ( parent.addEventListener ) {
-			parent.addEventListener( "unload", unloadHandler, false );
-		} else if ( parent.attachEvent ) {
-			parent.attachEvent( "onunload", unloadHandler );
-		}
-	}
-
-	/* Support tests
-	---------------------------------------------------------------------- */
-	documentIsHTML = !isXML( doc );
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties
-	// (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Support: IE<9
-	support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
-				var m = context.getElementById( id );
-				// Check parentNode to catch when Blackberry 4.6 returns
-				// nodes that are no longer in the document #6963
-				return m && m.parentNode ? [ m ] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== "undefined" ) {
-				return context.getElementsByTagName( tag );
-
-			// DocumentFragment nodes don't have gEBTN
-			} else if ( support.qsa ) {
-				return context.querySelectorAll( tag );
-			}
-		} :
-
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
-				"<select id='" + expando + "-\f]' msallowcapture=''>" +
-				"<option selected=''></option></select>";
-
-			// Support: IE8, Opera 11-12.16
-			// Nothing should be selected when empty strings follow ^= or $= or *=
-			// The test attribute must be unknown in Opera but "safe" for WinRT
-			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
-			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
-			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
-				rbuggyQSA.push("~=");
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-
-			// Support: Safari 8+, iOS 8+
-			// https://bugs.webkit.org/show_bug.cgi?id=136851
-			// In-page `selector#id sibing-combinator selector` fails
-			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
-				rbuggyQSA.push(".#.+[+~]");
-			}
-		});
-
-		assert(function( div ) {
-			// Support: Windows 8 Native Apps
-			// The type and name attributes are restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "name", "D" );
-
-			// Support: IE8
-			// Enforce case-sensitivity of name attribute
-			if ( div.querySelectorAll("[name=d]").length ) {
-				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-	hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = hasCompare || rnative.test( docElem.contains ) ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = hasCompare ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		// Sort on method existence if only one input has compareDocumentPosition
-		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-		if ( compare ) {
-			return compare;
-		}
-
-		// Calculate position if both inputs belong to the same document
-		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-			a.compareDocumentPosition( b ) :
-
-			// Otherwise we know they are disconnected
-			1;
-
-		// Disconnected nodes
-		if ( compare & 1 ||
-			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-			// Choose the first element that is related to our preferred document
-			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-				return -1;
-			}
-			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-				return 1;
-			}
-
-			// Maintain original order
-			return sortInput ?
-				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
-				0;
-		}
-
-		return compare & 4 ? -1 : 1;
-	} :
-	function( a, b ) {
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Parentless nodes are either documents or disconnected
-		if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch (e) {}
-	}
-
-	return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val !== undefined ?
-		val :
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	// Clear input after sorting to release objects
-	// See https://github.com/jquery/sizzle/pull/225
-	sortInput = null;
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		while ( (node = elem[i++]) ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (jQuery #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[6] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] ) {
-				match[2] = match[4] || match[5] || "";
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					// Don't keep the element (issue #299)
-					input[0] = null;
-					return !results.pop();
-				};
-		}),
-
-		"has": markFunction(function( selector ) {
-			return function( elem ) {
-				return Sizzle( selector, elem ).length > 0;
-			};
-		}),
-
-		"contains": markFunction(function( text ) {
-			text = text.replace( runescape, funescape );
-			return function( elem ) {
-				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
-			//   but not by others (comment: 8; processing instruction: 7; etc.)
-			// nodeType < 6 works because attributes (2) do not appear as children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeType < 6 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-
-				// Support: IE<8
-				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( (tokens = []) );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var oldCache, outerCache,
-				newCache = [ dirruns, doneName ];
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (oldCache = outerCache[ dir ]) &&
-							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
-							// Assign to newCache so results back-propagate to previous elements
-							return (newCache[ 2 ] = oldCache[ 2 ]);
-						} else {
-							// Reuse newcache so results back-propagate to previous elements
-							outerCache[ dir ] = newCache;
-
-							// A match means we're done; a fail means we have to keep checking
-							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
-
-						seed[temp] = !(results[temp] = elem);
-					}
-				}
-			}
-
-		// Add elements to results, through postFinder if defined
-		} else {
-			matcherOut = condense(
-				matcherOut === results ?
-					matcherOut.splice( preexisting, matcherOut.length ) :
-					matcherOut
-			);
-			if ( postFinder ) {
-				postFinder( null, results, matcherOut, xml );
-			} else {
-				push.apply( results, matcherOut );
-			}
-		}
-	});
-}
-
-function matcherFromTokens( tokens ) {
-	var checkContext, matcher, j,
-		len = tokens.length,
-		leadingRelative = Expr.relative[ tokens[0].type ],
-		implicitRelative = leadingRelative || Expr.relative[" "],
-		i = leadingRelative ? 1 : 0,
-
-		// The foundational matcher ensures that elements are reachable from top-level context(s)
-		matchContext = addCombinator( function( elem ) {
-			return elem === checkContext;
-		}, implicitRelative, true ),
-		matchAnyContext = addCombinator( function( elem ) {
-			return indexOf( checkContext, elem ) > -1;
-		}, implicitRelative, true ),
-		matchers = [ function( elem, context, xml ) {
-			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-				(checkContext = context).nodeType ?
-					matchContext( elem, context, xml ) :
-					matchAnyContext( elem, context, xml ) );
-			// Avoid hanging onto element (issue #299)
-			checkContext = null;
-			return ret;
-		} ];
-
-	for ( ; i < len; i++ ) {
-		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-		} else {
-			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-			// Return special upon seeing a positional matcher
-			if ( matcher[ expando ] ) {
-				// Find the next relative operator (if any) for proper handling
-				j = ++i;
-				for ( ; j < len; j++ ) {
-					if ( Expr.relative[ tokens[j].type ] ) {
-						break;
-					}
-				}
-				return setMatcher(
-					i > 1 && elementMatcher( matchers ),
-					i > 1 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	var bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, outermost ) {
-			var elem, j, matcher,
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				setMatched = [],
-				contextBackup = outermostContext,
-				// We must always have either seed elements or outermost context
-				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
-				len = elems.length;
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			// Support: IE<9, Safari
-			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
-			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !match ) {
-			match = tokenize( selector );
-		}
-		i = match.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( match[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
-		// Save selector and tokenization
-		cached.selector = selector;
-	}
-	return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- *  selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- *  selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		compiled = typeof selector === "function" && selector,
-		match = !seed && tokenize( (selector = compiled.selector || selector) );
-
-	results = results || [];
-
-	// Try to minimize operations if there is no seed and 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" &&
-				support.getById && context.nodeType === 9 && documentIsHTML &&
-				Expr.relative[ tokens[1].type ] ) {
-
-			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-			if ( !context ) {
-				return results;
-
-			// Precompiled matchers will still verify ancestry, so step up a level
-			} else if ( compiled ) {
-				context = context.parentNode;
-			}
-
-			selector = selector.slice( tokens.shift().value.length );
-		}
-
-		// Fetch a seed set for right-to-left matching
-		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-		while ( i-- ) {
-			token = tokens[i];
-
-			// Abort if we hit a combinator
-			if ( Expr.relative[ (type = token.type) ] ) {
-				break;
-			}
-			if ( (find = Expr.find[ type ]) ) {
-				// Search, expanding context for leading sibling combinators
-				if ( (seed = find(
-					token.matches[0].replace( runescape, funescape ),
-					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
-				)) ) {
-
-					// If seed is empty or no tokens remain, we can return early
-					tokens.splice( i, 1 );
-					selector = seed.length && toSelector( tokens );
-					if ( !selector ) {
-						push.apply( results, seed );
-						return results;
-					}
-
-					break;
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function if one is not provided
-	// Provide `match` to avoid retokenization if we modified the selector above
-	( compiled || compile( selector, match ) )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector ) && testContext( context.parentNode ) || context
-	);
-	return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome 14-35+
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = "<a href='#'></a>";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = "<input/>";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return elem[ name ] === true ? name.toLowerCase() :
-					(val = elem.getAttributeNode( name )) && val.specified ?
-					val.value :
-				null;
-		}
-	});
-}
-
-// EXPOSE
-if ( typeof define === "function" && define.amd ) {
-	define(function() { return Sizzle; });
-// Sizzle requires that there be a global window in Common-JS like environments
-} else if ( typeof module !== "undefined" && module.exports ) {
-	module.exports = Sizzle;
-} else {
-	window.Sizzle = Sizzle;
-}
-// EXPOSE
-
-})( window );
diff --git a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.js b/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.js
deleted file mode 100644
index cf4d1a66..00000000
--- a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Sizzle v2.2.0-pre | (c) 2008, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!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=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(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 pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),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){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.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},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.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=gb.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=gb.selectors={cacheLength:50,createPseudo:ib,match:X,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===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]||gb.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]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(cb,db).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("(^|"+L+")"+a+"("+L+"|$)"))&&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=gb.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(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(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:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).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:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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 Z.test(a.nodeName)},input:function(a){return Y.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:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(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}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return gb}):"undefined"!=typeof module&&module.exports?module.exports=gb:a.Sizzle=gb}(window);
-//# sourceMappingURL=sizzle.min.map
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.map b/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.map
deleted file mode 100644
index e39754eb..00000000
--- a/src/main/webapp/bower_components/jquery/src/sizzle/dist/sizzle.min.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"sizzle.min.js","sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","characterEncoding","identifier","replace","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/jquery/src/traversing.js b/src/main/webapp/bower_components/jquery/src/traversing.js
deleted file mode 100644
index d9ff0aea..00000000
--- a/src/main/webapp/bower_components/jquery/src/traversing.js
+++ /dev/null
@@ -1,199 +0,0 @@
-define([
-	"./core",
-	"./var/indexOf",
-	"./traversing/var/rneedsContext",
-	"./core/init",
-	"./traversing/findFilter",
-	"./selector"
-], function( jQuery, indexOf, rneedsContext ) {
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-	// Methods guaranteed to produce a unique set when starting from a unique set
-	guaranteedUnique = {
-		children: true,
-		contents: true,
-		next: true,
-		prev: true
-	};
-
-jQuery.extend({
-	dir: function( elem, dir, until ) {
-		var matched = [],
-			truncate = until !== undefined;
-
-		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
-			if ( elem.nodeType === 1 ) {
-				if ( truncate && jQuery( elem ).is( until ) ) {
-					break;
-				}
-				matched.push( elem );
-			}
-		}
-		return matched;
-	},
-
-	sibling: function( n, elem ) {
-		var matched = [];
-
-		for ( ; n; n = n.nextSibling ) {
-			if ( n.nodeType === 1 && n !== elem ) {
-				matched.push( n );
-			}
-		}
-
-		return matched;
-	}
-});
-
-jQuery.fn.extend({
-	has: function( target ) {
-		var targets = jQuery( target, this ),
-			l = targets.length;
-
-		return this.filter(function() {
-			var i = 0;
-			for ( ; i < l; i++ ) {
-				if ( jQuery.contains( this, targets[i] ) ) {
-					return true;
-				}
-			}
-		});
-	},
-
-	closest: function( selectors, context ) {
-		var cur,
-			i = 0,
-			l = this.length,
-			matched = [],
-			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-				jQuery( selectors, context || this.context ) :
-				0;
-
-		for ( ; i < l; i++ ) {
-			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-				// Always skip document fragments
-				if ( cur.nodeType < 11 && (pos ?
-					pos.index(cur) > -1 :
-
-					// Don't pass non-elements to Sizzle
-					cur.nodeType === 1 &&
-						jQuery.find.matchesSelector(cur, selectors)) ) {
-
-					matched.push( cur );
-					break;
-				}
-			}
-		}
-
-		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
-	},
-
-	// Determine the position of an element within the set
-	index: function( elem ) {
-
-		// No argument, return index in parent
-		if ( !elem ) {
-			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
-		}
-
-		// Index in selector
-		if ( typeof elem === "string" ) {
-			return indexOf.call( jQuery( elem ), this[ 0 ] );
-		}
-
-		// Locate the position of the desired element
-		return indexOf.call( this,
-
-			// If it receives a jQuery object, the first element is used
-			elem.jquery ? elem[ 0 ] : elem
-		);
-	},
-
-	add: function( selector, context ) {
-		return this.pushStack(
-			jQuery.unique(
-				jQuery.merge( this.get(), jQuery( selector, context ) )
-			)
-		);
-	},
-
-	addBack: function( selector ) {
-		return this.add( selector == null ?
-			this.prevObject : this.prevObject.filter(selector)
-		);
-	}
-});
-
-function sibling( cur, dir ) {
-	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
-	return cur;
-}
-
-jQuery.each({
-	parent: function( elem ) {
-		var parent = elem.parentNode;
-		return parent && parent.nodeType !== 11 ? parent : null;
-	},
-	parents: function( elem ) {
-		return 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 elem.contentDocument || jQuery.merge( [], elem.childNodes );
-	}
-}, function( name, fn ) {
-	jQuery.fn[ name ] = function( until, selector ) {
-		var matched = jQuery.map( this, fn, until );
-
-		if ( name.slice( -5 ) !== "Until" ) {
-			selector = until;
-		}
-
-		if ( selector && typeof selector === "string" ) {
-			matched = jQuery.filter( selector, matched );
-		}
-
-		if ( this.length > 1 ) {
-			// Remove duplicates
-			if ( !guaranteedUnique[ name ] ) {
-				jQuery.unique( matched );
-			}
-
-			// Reverse order for parents* and prev-derivatives
-			if ( rparentsprev.test( name ) ) {
-				matched.reverse();
-			}
-		}
-
-		return this.pushStack( matched );
-	};
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/traversing/findFilter.js b/src/main/webapp/bower_components/jquery/src/traversing/findFilter.js
deleted file mode 100644
index dd70a73f..00000000
--- a/src/main/webapp/bower_components/jquery/src/traversing/findFilter.js
+++ /dev/null
@@ -1,100 +0,0 @@
-define([
-	"../core",
-	"../var/indexOf",
-	"./var/rneedsContext",
-	"../selector"
-], function( jQuery, indexOf, rneedsContext ) {
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-	if ( jQuery.isFunction( qualifier ) ) {
-		return jQuery.grep( elements, function( elem, i ) {
-			/* jshint -W018 */
-			return !!qualifier.call( elem, i, elem ) !== not;
-		});
-
-	}
-
-	if ( qualifier.nodeType ) {
-		return jQuery.grep( elements, function( elem ) {
-			return ( elem === qualifier ) !== not;
-		});
-
-	}
-
-	if ( typeof qualifier === "string" ) {
-		if ( risSimple.test( qualifier ) ) {
-			return jQuery.filter( qualifier, elements, not );
-		}
-
-		qualifier = jQuery.filter( qualifier, elements );
-	}
-
-	return jQuery.grep( elements, function( elem ) {
-		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
-	});
-}
-
-jQuery.filter = function( expr, elems, not ) {
-	var elem = elems[ 0 ];
-
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return elems.length === 1 && elem.nodeType === 1 ?
-		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-			return elem.nodeType === 1;
-		}));
-};
-
-jQuery.fn.extend({
-	find: function( selector ) {
-		var i,
-			len = this.length,
-			ret = [],
-			self = this;
-
-		if ( typeof selector !== "string" ) {
-			return this.pushStack( jQuery( selector ).filter(function() {
-				for ( i = 0; i < len; i++ ) {
-					if ( jQuery.contains( self[ i ], this ) ) {
-						return true;
-					}
-				}
-			}) );
-		}
-
-		for ( i = 0; i < len; i++ ) {
-			jQuery.find( selector, self[ i ], ret );
-		}
-
-		// Needed because $( selector, context ) becomes $( context ).find( selector )
-		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-		ret.selector = this.selector ? this.selector + " " + selector : selector;
-		return ret;
-	},
-	filter: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], false) );
-	},
-	not: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], true) );
-	},
-	is: function( selector ) {
-		return !!winnow(
-			this,
-
-			// If this is a positional/relative selector, check membership in the returned set
-			// so $("p:first").is("p:last") won't return true for a doc with two "p".
-			typeof selector === "string" && rneedsContext.test( selector ) ?
-				jQuery( selector ) :
-				selector || [],
-			false
-		).length;
-	}
-});
-
-});
diff --git a/src/main/webapp/bower_components/jquery/src/traversing/var/rneedsContext.js b/src/main/webapp/bower_components/jquery/src/traversing/var/rneedsContext.js
deleted file mode 100644
index 3d6ae403..00000000
--- a/src/main/webapp/bower_components/jquery/src/traversing/var/rneedsContext.js
+++ /dev/null
@@ -1,6 +0,0 @@
-define([
-	"../../core",
-	"../../selector"
-], function( jQuery ) {
-	return jQuery.expr.match.needsContext;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/arr.js b/src/main/webapp/bower_components/jquery/src/var/arr.js
deleted file mode 100644
index b18fc9ce..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/arr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return [];
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/class2type.js b/src/main/webapp/bower_components/jquery/src/var/class2type.js
deleted file mode 100644
index e674c3ba..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/class2type.js
+++ /dev/null
@@ -1,4 +0,0 @@
-define(function() {
-	// [[Class]] -> type pairs
-	return {};
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/concat.js b/src/main/webapp/bower_components/jquery/src/var/concat.js
deleted file mode 100644
index 7dcf77e3..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/concat.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./arr"
-], function( arr ) {
-	return arr.concat;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/hasOwn.js b/src/main/webapp/bower_components/jquery/src/var/hasOwn.js
deleted file mode 100644
index 32c002af..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/hasOwn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./class2type"
-], function( class2type ) {
-	return class2type.hasOwnProperty;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/indexOf.js b/src/main/webapp/bower_components/jquery/src/var/indexOf.js
deleted file mode 100644
index cdbe3c74..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/indexOf.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./arr"
-], function( arr ) {
-	return arr.indexOf;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/pnum.js b/src/main/webapp/bower_components/jquery/src/var/pnum.js
deleted file mode 100644
index 40704472..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/pnum.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/push.js b/src/main/webapp/bower_components/jquery/src/var/push.js
deleted file mode 100644
index ad6f0a17..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/push.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./arr"
-], function( arr ) {
-	return arr.push;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/rnotwhite.js b/src/main/webapp/bower_components/jquery/src/var/rnotwhite.js
deleted file mode 100644
index 7c69bec5..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/rnotwhite.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return (/\S+/g);
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/slice.js b/src/main/webapp/bower_components/jquery/src/var/slice.js
deleted file mode 100644
index 614d46ca..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/slice.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./arr"
-], function( arr ) {
-	return arr.slice;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/strundefined.js b/src/main/webapp/bower_components/jquery/src/var/strundefined.js
deleted file mode 100644
index 04e16b03..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/strundefined.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define(function() {
-	return typeof undefined;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/support.js b/src/main/webapp/bower_components/jquery/src/var/support.js
deleted file mode 100644
index b25dbc74..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/support.js
+++ /dev/null
@@ -1,4 +0,0 @@
-define(function() {
-	// All support tests are defined in their respective modules.
-	return {};
-});
diff --git a/src/main/webapp/bower_components/jquery/src/var/toString.js b/src/main/webapp/bower_components/jquery/src/var/toString.js
deleted file mode 100644
index ca92d222..00000000
--- a/src/main/webapp/bower_components/jquery/src/var/toString.js
+++ /dev/null
@@ -1,5 +0,0 @@
-define([
-	"./class2type"
-], function( class2type ) {
-	return class2type.toString;
-});
diff --git a/src/main/webapp/bower_components/jquery/src/wrap.js b/src/main/webapp/bower_components/jquery/src/wrap.js
deleted file mode 100644
index 4958251d..00000000
--- a/src/main/webapp/bower_components/jquery/src/wrap.js
+++ /dev/null
@@ -1,79 +0,0 @@
-define([
-	"./core",
-	"./core/init",
-	"./manipulation", // clone
-	"./traversing" // parent, contents
-], function( jQuery ) {
-
-jQuery.fn.extend({
-	wrapAll: function( html ) {
-		var wrap;
-
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapAll( html.call(this, i) );
-			});
-		}
-
-		if ( this[ 0 ] ) {
-
-			// The elements to wrap the target around
-			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
-
-			if ( this[ 0 ].parentNode ) {
-				wrap.insertBefore( this[ 0 ] );
-			}
-
-			wrap.map(function() {
-				var elem = this;
-
-				while ( elem.firstElementChild ) {
-					elem = elem.firstElementChild;
-				}
-
-				return elem;
-			}).append( this );
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapInner( html.call(this, i) );
-			});
-		}
-
-		return this.each(function() {
-			var self = jQuery( this ),
-				contents = self.contents();
-
-			if ( contents.length ) {
-				contents.wrapAll( html );
-
-			} else {
-				self.append( html );
-			}
-		});
-	},
-
-	wrap: function( html ) {
-		var isFunction = jQuery.isFunction( html );
-
-		return this.each(function( i ) {
-			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-		});
-	},
-
-	unwrap: function() {
-		return this.parent().each(function() {
-			if ( !jQuery.nodeName( this, "body" ) ) {
-				jQuery( this ).replaceWith( this.childNodes );
-			}
-		}).end();
-	}
-});
-
-return jQuery;
-});
diff --git a/src/main/webapp/bower_components/json3/.bower.json b/src/main/webapp/bower_components/json3/.bower.json
deleted file mode 100644
index 3f37b89d..00000000
--- a/src/main/webapp/bower_components/json3/.bower.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "name": "json3",
-  "version": "3.3.2",
-  "main": "lib/json3.js",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/bestiejs/json3.git"
-  },
-  "ignore": [
-    ".*",
-    "**/.*",
-    "build.js",
-    "index.html",
-    "index.js",
-    "component.json",
-    "package.json",
-    "benchmark",
-    "page",
-    "test",
-    "vendor",
-    "tests"
-  ],
-  "homepage": "https://github.com/bestiejs/json3",
-  "description": "A modern JSON implementation compatible with nearly all JavaScript platforms",
-  "keywords": [
-    "json",
-    "spec",
-    "ecma",
-    "es5",
-    "lexer",
-    "parser",
-    "stringify"
-  ],
-  "authors": [
-    "Kit Cambridge <github@kitcambridge.be>"
-  ],
-  "license": "MIT",
-  "_release": "3.3.2",
-  "_resolution": {
-    "type": "version",
-    "tag": "v3.3.2",
-    "commit": "dec5c2a5dc723ff867caa32a81ed93ab814f7426"
-  },
-  "_source": "git://github.com/bestiejs/json3.git",
-  "_target": "3.3.2",
-  "_originalSource": "json3"
-}
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/json3/CHANGELOG.md b/src/main/webapp/bower_components/json3/CHANGELOG.md
deleted file mode 100644
index e93fa399..00000000
--- a/src/main/webapp/bower_components/json3/CHANGELOG.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# JSON3 Changelog
-
-## 3.1.0
-
- * Switched to `bestiejs` organisation
- * Added support for a list of properties as the `filter` argument for `JSON.stringify`
- * Fixed Firefox 4 and 4.0.1 allowing non-standard extensions to `JSON.parse`
-
-## 3.0.0
-
- * Renamed `JSON3` to `JSON`
- * Removed `JSON3.Version`
- * Added minified version of library
- * Created a [GitHub Project Page](http://bestiejs.github.io/json3)
- * Preserved alphanumeric order when iterating over shadowed properties on objects
-
-## 0.8.5
-
- * Avoided relying on native functions `Math.abs`, and `isFinite`, and native constructors `String`, `Number`, `Object`, and `Array`
- * Fixed AMD export logic
-
-## 0.8.0
-
- * Renamed `Prim` to `JSON3`
- * Added `JSON3.Version`
- * Added support for AMD lodaers as the `"json"` module
- * Added feature tests for native `JSON` implementations
- * Added string coercion for the `source` argument in `JSON3.parse`
- * Fixed the date serialization routine in `JSON3.stringify`
-
-## 0.5.0
-
- * Fixed `Prim.stringify`'s handling of the `width` argument
- * Added Microsoft's ES5 Conformance Tests to the test suite
-
-## 0.2.0
-
- * Added `Prim.stringify` for serializing values
- * Renamed `Prim.Escapes` to `Prim.Unescapes`
- * Disallowed unescaped tab characters in strings passed to `Prim.parse`
-
-## 0.1.0
-
- * Initial release of Prim
diff --git a/src/main/webapp/bower_components/json3/CONTRIBUTING.md b/src/main/webapp/bower_components/json3/CONTRIBUTING.md
deleted file mode 100644
index b0cb8579..00000000
--- a/src/main/webapp/bower_components/json3/CONTRIBUTING.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Contributing to JSON3
-
-If you'd like to contribute to JSON3, please review our [contributing guidelines](http://bestiejs.github.io/json3/#section_5). Thanks!
diff --git a/src/main/webapp/bower_components/json3/LICENSE b/src/main/webapp/bower_components/json3/LICENSE
deleted file mode 100644
index c0de33a8..00000000
--- a/src/main/webapp/bower_components/json3/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2012-2014 Kit Cambridge.
-http://kitcambridge.be/
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/src/main/webapp/bower_components/json3/README.md b/src/main/webapp/bower_components/json3/README.md
deleted file mode 100644
index 9aa7935d..00000000
--- a/src/main/webapp/bower_components/json3/README.md
+++ /dev/null
@@ -1,152 +0,0 @@
-# JSON 3 #
-
-![JSON 3 Logo](http://bestiejs.github.io/json3/page/logo.png)
-
-[![Build Status](https://secure.travis-ci.org/bestiejs/json3.png?branch=gh-pages)](http://travis-ci.org/bestiejs/json3)
-
-**JSON 3** is a modern JSON implementation compatible with a variety of JavaScript platforms, including Internet Explorer 6, Opera 7, Safari 2, and Netscape 6. The current version is **3.3.2**.
-
-- [Development Version](http://cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.js) *(43 KB; uncompressed with comments)*
-- [Production Version](http://cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js) *(3.5 KB; compressed and `gzip`-ped)*
-
-Special thanks to [cdnjs](http://cdnjs.com/libraries/json3/) and [jsDelivr](http://www.jsdelivr.com/#!json3) for hosting CDN copies of JSON 3.
-
-[JSON](http://json.org/) is a language-independent data interchange format based on a loose subset of the JavaScript grammar. Originally popularized by [Douglas Crockford](http://www.crockford.com/), the format was standardized in the [fifth edition](http://es5.github.com/) of the ECMAScript specification. The 5.1 edition, ratified in June 2011, incorporates several modifications to the grammar pertaining to the serialization of dates.
-
-JSON 3 exposes two functions: `stringify()` for [serializing](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify) a JavaScript value to JSON, and `parse()` for [producing](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/parse) a JavaScript value from a JSON source string. It is a **drop-in replacement** for [JSON 2](http://json.org/js). The functions behave exactly as described in the ECMAScript spec, **except** for the date serialization discrepancy noted below.
-
-The JSON 3 parser does **not** use `eval` or regular expressions. This provides security and performance benefits in obsolete and mobile environments, where the margin is particularly significant. The complete [benchmark suite](http://jsperf.com/json3) is available on [jsPerf](http://jsperf.com/).
-
-The project is [hosted on GitHub](http://git.io/json3), along with the [unit tests](http://bestiejs.github.io/json3/test/test_browser.html). It is part of the [BestieJS](https://github.com/bestiejs) family, a collection of best-in-class JavaScript libraries that promote cross-platform support, specification precedents, unit testing, and plenty of documentation.
-
-# Changes from JSON 2 #
-
-JSON 3...
-
-* Correctly serializes primitive wrapper objects.
-* Throws a `TypeError` when serializing cyclic structures (JSON 2 recurses until the call stack overflows).
-* Utilizes **feature tests** to detect broken or incomplete *native* JSON implementations (JSON 2 only checks for the presence of the native functions). The tests are only executed once at runtime, so there is no additional performance cost when parsing or serializing values.
-
-**As of v3.2.3**, JSON 3 is compatible with [Prototype](http://prototypejs.org) 1.6.1 and older.
-
-In contrast to JSON 2, JSON 3 **does not**...
-
-* Add `toJSON()` methods to the `Boolean`, `Number`, and `String` prototypes. These are not part of any standard, and are made redundant by the design of the `stringify()` implementation.
-* Add `toJSON()` or `toISOString()` methods to `Date.prototype`. See the note about date serialization below.
-
-## Date Serialization
-
-**JSON 3 deviates from the specification in one important way**: it does not define `Date#toISOString()` or `Date#toJSON()`. This preserves CommonJS compatibility and avoids polluting native prototypes. Instead, date serialization is performed internally by the `stringify()` implementation: if a date object does not define a custom `toJSON()` method, it is serialized as a [simplified ISO 8601 date-time string](http://es5.github.com/#x15.9.1.15).
-
-**Several native `Date#toJSON()` implementations produce date time strings that do *not* conform to the grammar outlined in the spec**. For instance, all versions of Safari 4, as well as JSON 2, fail to serialize extended years correctly. Furthermore, JSON 2 and older implementations omit the milliseconds from the date-time string (optional in ES 5, but required in 5.1). Finally, in all versions of Safari 4 and 5, serializing an invalid date will produce the string `"Invalid Date"`, rather than `null`. Because these environments exhibit other serialization bugs, however, JSON 3 will override the native `stringify()` implementation.
-
-Portions of the date serialization code are adapted from the [`date-shim`](https://github.com/Yaffle/date-shim) project.
-
-# Usage #
-
-## Web Browsers
-
-    <script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
-    <script>
-      JSON.stringify({"Hello": 123});
-      // => '{"Hello":123}'
-      JSON.parse("[[1, 2, 3], 1, 2, 3, 4]", function (key, value) {
-        if (typeof value == "number") {
-          value = value % 2 ? "Odd" : "Even";
-        }
-        return value;
-      });
-      // => [["Odd", "Even", "Odd"], "Odd", "Even", "Odd", "Even"]
-    </script>
-
-**When used in a web browser**, JSON 3 exposes an additional `JSON3` object containing the `noConflict()` and `runInContext()` functions, as well as aliases to the `stringify()` and `parse()` functions.
-
-### `noConflict` and `runInContext`
-
-* `JSON3.noConflict()` restores the original value of the global `JSON` object and returns a reference to the `JSON3` object.
-* `JSON3.runInContext([context, exports])` initializes JSON 3 using the given `context` object (e.g., `window`, `global`, etc.), or the global object if omitted. If an `exports` object is specified, the `stringify()`, `parse()`, and `runInContext()` functions will be attached to it instead of a new object.
-
-### Asynchronous Module Loaders
-
-JSON 3 is defined as an [anonymous module](https://github.com/amdjs/amdjs-api/wiki/AMD#define-function-) for compatibility with [RequireJS](http://requirejs.org/), [`curl.js`](https://github.com/cujojs/curl), and other asynchronous module loaders.
-
-    <script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.js"></script>
-    <script>
-      require({
-        "paths": {
-          "json3": "./path/to/json3"
-        }
-      }, ["json3"], function (JSON) {
-        JSON.parse("[1, 2, 3]");
-        // => [1, 2, 3]
-      });
-    </script>
-
-To avoid issues with third-party scripts, **JSON 3 is exported to the global scope even when used with a module loader**. If this behavior is undesired, `JSON3.noConflict()` can be used to restore the global `JSON` object to its original value.
-
-## CommonJS Environments
-
-    var JSON3 = require("./path/to/json3");
-    JSON3.parse("[1, 2, 3]");
-    // => [1, 2, 3]
-
-## JavaScript Engines
-
-    load("path/to/json3.js");
-    JSON.stringify({"Hello": 123, "Good-bye": 456}, ["Hello"], "\t");
-    // => '{\n\t"Hello": 123\n}'
-
-# Compatibility #
-
-JSON 3 has been **tested** with the following web browsers, CommonJS environments, and JavaScript engines.
-
-## Web Browsers
-
-- Windows [Internet Explorer](http://www.microsoft.com/windows/internet-explorer), version 6.0 and higher
-- Mozilla [Firefox](http://www.mozilla.com/firefox), version 1.0 and higher
-- Apple [Safari](http://www.apple.com/safari), version 2.0 and higher
-- [Opera](http://www.opera.com) 7.02 and higher
-- [Mozilla](http://sillydog.org/narchive/gecko.php) 1.0, [Netscape](http://sillydog.org/narchive/) 6.2.3, and [SeaMonkey](http://www.seamonkey-project.org/) 1.0 and higher
-
-## CommonJS Environments
-
-- [Node](http://nodejs.org/) 0.2.6 and higher
-- [RingoJS](http://ringojs.org/) 0.4 and higher
-- [Narwhal](http://narwhaljs.org/) 0.3.2 and higher
-
-## JavaScript Engines
-
-- Mozilla [Rhino](http://www.mozilla.org/rhino) 1.5R5 and higher
-- WebKit [JSC](https://trac.webkit.org/wiki/JSC)
-- Google [V8](http://code.google.com/p/v8)
-
-## Known Incompatibilities
-
-* Attempting to serialize the `arguments` object may produce inconsistent results across environments due to specification version differences. As a workaround, please convert the `arguments` object to an array first: `JSON.stringify([].slice.call(arguments, 0))`.
-
-## Required Native Methods
-
-JSON 3 assumes that the following methods exist and function as described in the ECMAScript specification:
-
-- The `Number`, `String`, `Array`, `Object`, `Date`, `SyntaxError`, and `TypeError` constructors.
-- `String.fromCharCode`
-- `Object#toString`
-- `Function#call`
-- `Math.floor`
-- `Number#toString`
-- `Date#valueOf`
-- `String.prototype`: `indexOf`, `charCodeAt`, `charAt`, `slice`.
-- `Array.prototype`: `push`, `pop`, `join`.
-
-# Contribute #
-
-Check out a working copy of the JSON 3 source code with [Git](http://git-scm.com/):
-
-    $ git clone git://github.com/bestiejs/json3.git
-    $ cd json3
-
-If you'd like to contribute a feature or bug fix, you can [fork](http://help.github.com/fork-a-repo/) JSON 3, commit your changes, and [send a pull request](http://help.github.com/send-pull-requests/). Please make sure to update the unit tests in the `test` directory as well.
-
-Alternatively, you can use the [GitHub issue tracker](https://github.com/bestiejs/json3/issues) to submit bug reports, feature requests, and questions, or send tweets to [@kitcambridge](http://twitter.com/kitcambridge).
-
-JSON 3 is released under the [MIT License](http://kit.mit-license.org/).
diff --git a/src/main/webapp/bower_components/json3/bower.json b/src/main/webapp/bower_components/json3/bower.json
deleted file mode 100644
index 7215dada..00000000
--- a/src/main/webapp/bower_components/json3/bower.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "name": "json3",
-  "version": "3.3.2",
-  "main": "lib/json3.js",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/bestiejs/json3.git"
-  },
-  "ignore": [
-    ".*",
-    "**/.*",
-    "build.js",
-    "index.html",
-    "index.js",
-    "component.json",
-    "package.json",
-    "benchmark",
-    "page",
-    "test",
-    "vendor",
-    "tests"
-  ],
-  "homepage": "https://github.com/bestiejs/json3",
-  "description": "A modern JSON implementation compatible with nearly all JavaScript platforms",
-  "keywords": [
-    "json",
-    "spec",
-    "ecma",
-    "es5",
-    "lexer",
-    "parser",
-    "stringify"
-  ],
-  "authors": [
-    "Kit Cambridge <github@kitcambridge.be>"
-  ],
-  "license": "MIT"
-}
diff --git a/src/main/webapp/bower_components/json3/lib/json3.js b/src/main/webapp/bower_components/json3/lib/json3.js
deleted file mode 100644
index 4817c9e7..00000000
--- a/src/main/webapp/bower_components/json3/lib/json3.js
+++ /dev/null
@@ -1,902 +0,0 @@
-/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
-;(function () {
-  // Detect the `define` function exposed by asynchronous module loaders. The
-  // strict `define` check is necessary for compatibility with `r.js`.
-  var isLoader = typeof define === "function" && define.amd;
-
-  // A set of types used to distinguish objects from primitives.
-  var objectTypes = {
-    "function": true,
-    "object": true
-  };
-
-  // Detect the `exports` object exposed by CommonJS implementations.
-  var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
-
-  // Use the `global` object exposed by Node (including Browserify via
-  // `insert-module-globals`), Narwhal, and Ringo as the default context,
-  // and the `window` object in browsers. Rhino exports a `global` function
-  // instead.
-  var root = objectTypes[typeof window] && window || this,
-      freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global;
-
-  if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) {
-    root = freeGlobal;
-  }
-
-  // Public: Initializes JSON 3 using the given `context` object, attaching the
-  // `stringify` and `parse` functions to the specified `exports` object.
-  function runInContext(context, exports) {
-    context || (context = root["Object"]());
-    exports || (exports = root["Object"]());
-
-    // Native constructor aliases.
-    var Number = context["Number"] || root["Number"],
-        String = context["String"] || root["String"],
-        Object = context["Object"] || root["Object"],
-        Date = context["Date"] || root["Date"],
-        SyntaxError = context["SyntaxError"] || root["SyntaxError"],
-        TypeError = context["TypeError"] || root["TypeError"],
-        Math = context["Math"] || root["Math"],
-        nativeJSON = context["JSON"] || root["JSON"];
-
-    // Delegate to the native `stringify` and `parse` implementations.
-    if (typeof nativeJSON == "object" && nativeJSON) {
-      exports.stringify = nativeJSON.stringify;
-      exports.parse = nativeJSON.parse;
-    }
-
-    // Convenience aliases.
-    var objectProto = Object.prototype,
-        getClass = objectProto.toString,
-        isProperty, forEach, undef;
-
-    // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
-    var isExtended = new Date(-3509827334573292);
-    try {
-      // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
-      // results for certain dates in Opera >= 10.53.
-      isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
-        // Safari < 2.0.2 stores the internal millisecond time value correctly,
-        // but clips the values returned by the date methods to the range of
-        // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
-        isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
-    } catch (exception) {}
-
-    // Internal: Determines whether the native `JSON.stringify` and `parse`
-    // implementations are spec-compliant. Based on work by Ken Snyder.
-    function has(name) {
-      if (has[name] !== undef) {
-        // Return cached feature test result.
-        return has[name];
-      }
-      var isSupported;
-      if (name == "bug-string-char-index") {
-        // IE <= 7 doesn't support accessing string characters using square
-        // bracket notation. IE 8 only supports this for primitives.
-        isSupported = "a"[0] != "a";
-      } else if (name == "json") {
-        // Indicates whether both `JSON.stringify` and `JSON.parse` are
-        // supported.
-        isSupported = has("json-stringify") && has("json-parse");
-      } else {
-        var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
-        // Test `JSON.stringify`.
-        if (name == "json-stringify") {
-          var stringify = exports.stringify, stringifySupported = typeof stringify == "function" && isExtended;
-          if (stringifySupported) {
-            // A test function object with a custom `toJSON` method.
-            (value = function () {
-              return 1;
-            }).toJSON = value;
-            try {
-              stringifySupported =
-                // Firefox 3.1b1 and b2 serialize string, number, and boolean
-                // primitives as object literals.
-                stringify(0) === "0" &&
-                // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
-                // literals.
-                stringify(new Number()) === "0" &&
-                stringify(new String()) == '""' &&
-                // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
-                // does not define a canonical JSON representation (this applies to
-                // objects with `toJSON` properties as well, *unless* they are nested
-                // within an object or array).
-                stringify(getClass) === undef &&
-                // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
-                // FF 3.1b3 pass this test.
-                stringify(undef) === undef &&
-                // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
-                // respectively, if the value is omitted entirely.
-                stringify() === undef &&
-                // FF 3.1b1, 2 throw an error if the given value is not a number,
-                // string, array, object, Boolean, or `null` literal. This applies to
-                // objects with custom `toJSON` methods as well, unless they are nested
-                // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
-                // methods entirely.
-                stringify(value) === "1" &&
-                stringify([value]) == "[1]" &&
-                // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
-                // `"[null]"`.
-                stringify([undef]) == "[null]" &&
-                // YUI 3.0.0b1 fails to serialize `null` literals.
-                stringify(null) == "null" &&
-                // FF 3.1b1, 2 halts serialization if an array contains a function:
-                // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3
-                // elides non-JSON values from objects and arrays, unless they
-                // define custom `toJSON` methods.
-                stringify([undef, getClass, null]) == "[null,null,null]" &&
-                // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
-                // where character escape codes are expected (e.g., `\b` => `\u0008`).
-                stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized &&
-                // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
-                stringify(null, value) === "1" &&
-                stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" &&
-                // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
-                // serialize extended years.
-                stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' &&
-                // The milliseconds are optional in ES 5, but required in 5.1.
-                stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' &&
-                // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
-                // four-digit years instead of six-digit years. Credits: @Yaffle.
-                stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' &&
-                // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
-                // values less than 1000. Credits: @Yaffle.
-                stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"';
-            } catch (exception) {
-              stringifySupported = false;
-            }
-          }
-          isSupported = stringifySupported;
-        }
-        // Test `JSON.parse`.
-        if (name == "json-parse") {
-          var parse = exports.parse;
-          if (typeof parse == "function") {
-            try {
-              // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
-              // Conforming implementations should also coerce the initial argument to
-              // a string prior to parsing.
-              if (parse("0") === 0 && !parse(false)) {
-                // Simple parsing test.
-                value = parse(serialized);
-                var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
-                if (parseSupported) {
-                  try {
-                    // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
-                    parseSupported = !parse('"\t"');
-                  } catch (exception) {}
-                  if (parseSupported) {
-                    try {
-                      // FF 4.0 and 4.0.1 allow leading `+` signs and leading
-                      // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow
-                      // certain octal literals.
-                      parseSupported = parse("01") !== 1;
-                    } catch (exception) {}
-                  }
-                  if (parseSupported) {
-                    try {
-                      // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal
-                      // points. These environments, along with FF 3.1b1 and 2,
-                      // also allow trailing commas in JSON objects and arrays.
-                      parseSupported = parse("1.") !== 1;
-                    } catch (exception) {}
-                  }
-                }
-              }
-            } catch (exception) {
-              parseSupported = false;
-            }
-          }
-          isSupported = parseSupported;
-        }
-      }
-      return has[name] = !!isSupported;
-    }
-
-    if (!has("json")) {
-      // Common `[[Class]]` name aliases.
-      var functionClass = "[object Function]",
-          dateClass = "[object Date]",
-          numberClass = "[object Number]",
-          stringClass = "[object String]",
-          arrayClass = "[object Array]",
-          booleanClass = "[object Boolean]";
-
-      // Detect incomplete support for accessing string characters by index.
-      var charIndexBuggy = has("bug-string-char-index");
-
-      // Define additional utility methods if the `Date` methods are buggy.
-      if (!isExtended) {
-        var floor = Math.floor;
-        // A mapping between the months of the year and the number of days between
-        // January 1st and the first of the respective month.
-        var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
-        // Internal: Calculates the number of days between the Unix epoch and the
-        // first day of the given month.
-        var getDay = function (year, month) {
-          return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
-        };
-      }
-
-      // Internal: Determines if a property is a direct property of the given
-      // object. Delegates to the native `Object#hasOwnProperty` method.
-      if (!(isProperty = objectProto.hasOwnProperty)) {
-        isProperty = function (property) {
-          var members = {}, constructor;
-          if ((members.__proto__ = null, members.__proto__ = {
-            // The *proto* property cannot be set multiple times in recent
-            // versions of Firefox and SeaMonkey.
-            "toString": 1
-          }, members).toString != getClass) {
-            // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
-            // supports the mutable *proto* property.
-            isProperty = function (property) {
-              // Capture and break the object's prototype chain (see section 8.6.2
-              // of the ES 5.1 spec). The parenthesized expression prevents an
-              // unsafe transformation by the Closure Compiler.
-              var original = this.__proto__, result = property in (this.__proto__ = null, this);
-              // Restore the original prototype chain.
-              this.__proto__ = original;
-              return result;
-            };
-          } else {
-            // Capture a reference to the top-level `Object` constructor.
-            constructor = members.constructor;
-            // Use the `constructor` property to simulate `Object#hasOwnProperty` in
-            // other environments.
-            isProperty = function (property) {
-              var parent = (this.constructor || constructor).prototype;
-              return property in this && !(property in parent && this[property] === parent[property]);
-            };
-          }
-          members = null;
-          return isProperty.call(this, property);
-        };
-      }
-
-      // Internal: Normalizes the `for...in` iteration algorithm across
-      // environments. Each enumerated key is yielded to a `callback` function.
-      forEach = function (object, callback) {
-        var size = 0, Properties, members, property;
-
-        // Tests for bugs in the current environment's `for...in` algorithm. The
-        // `valueOf` property inherits the non-enumerable flag from
-        // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
-        (Properties = function () {
-          this.valueOf = 0;
-        }).prototype.valueOf = 0;
-
-        // Iterate over a new instance of the `Properties` class.
-        members = new Properties();
-        for (property in members) {
-          // Ignore all properties inherited from `Object.prototype`.
-          if (isProperty.call(members, property)) {
-            size++;
-          }
-        }
-        Properties = members = null;
-
-        // Normalize the iteration algorithm.
-        if (!size) {
-          // A list of non-enumerable properties inherited from `Object.prototype`.
-          members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];
-          // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
-          // properties.
-          forEach = function (object, callback) {
-            var isFunction = getClass.call(object) == functionClass, property, length;
-            var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;
-            for (property in object) {
-              // Gecko <= 1.0 enumerates the `prototype` property of functions under
-              // certain conditions; IE does not.
-              if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) {
-                callback(property);
-              }
-            }
-            // Manually invoke the callback for each non-enumerable property.
-            for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));
-          };
-        } else if (size == 2) {
-          // Safari <= 2.0.4 enumerates shadowed properties twice.
-          forEach = function (object, callback) {
-            // Create a set of iterated properties.
-            var members = {}, isFunction = getClass.call(object) == functionClass, property;
-            for (property in object) {
-              // Store each property name to prevent double enumeration. The
-              // `prototype` property of functions is not enumerated due to cross-
-              // environment inconsistencies.
-              if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {
-                callback(property);
-              }
-            }
-          };
-        } else {
-          // No bugs detected; use the standard `for...in` algorithm.
-          forEach = function (object, callback) {
-            var isFunction = getClass.call(object) == functionClass, property, isConstructor;
-            for (property in object) {
-              if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {
-                callback(property);
-              }
-            }
-            // Manually invoke the callback for the `constructor` property due to
-            // cross-environment inconsistencies.
-            if (isConstructor || isProperty.call(object, (property = "constructor"))) {
-              callback(property);
-            }
-          };
-        }
-        return forEach(object, callback);
-      };
-
-      // Public: Serializes a JavaScript `value` as a JSON string. The optional
-      // `filter` argument may specify either a function that alters how object and
-      // array members are serialized, or an array of strings and numbers that
-      // indicates which properties should be serialized. The optional `width`
-      // argument may be either a string or number that specifies the indentation
-      // level of the output.
-      if (!has("json-stringify")) {
-        // Internal: A map of control characters and their escaped equivalents.
-        var Escapes = {
-          92: "\\\\",
-          34: '\\"',
-          8: "\\b",
-          12: "\\f",
-          10: "\\n",
-          13: "\\r",
-          9: "\\t"
-        };
-
-        // Internal: Converts `value` into a zero-padded string such that its
-        // length is at least equal to `width`. The `width` must be <= 6.
-        var leadingZeroes = "000000";
-        var toPaddedString = function (width, value) {
-          // The `|| 0` expression is necessary to work around a bug in
-          // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
-          return (leadingZeroes + (value || 0)).slice(-width);
-        };
-
-        // Internal: Double-quotes a string `value`, replacing all ASCII control
-        // characters (characters with code unit values between 0 and 31) with
-        // their escaped equivalents. This is an implementation of the
-        // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
-        var unicodePrefix = "\\u00";
-        var quote = function (value) {
-          var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10;
-          var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value);
-          for (; index < length; index++) {
-            var charCode = value.charCodeAt(index);
-            // If the character is a control character, append its Unicode or
-            // shorthand escape sequence; otherwise, append the character as-is.
-            switch (charCode) {
-              case 8: case 9: case 10: case 12: case 13: case 34: case 92:
-                result += Escapes[charCode];
-                break;
-              default:
-                if (charCode < 32) {
-                  result += unicodePrefix + toPaddedString(2, charCode.toString(16));
-                  break;
-                }
-                result += useCharIndex ? symbols[index] : value.charAt(index);
-            }
-          }
-          return result + '"';
-        };
-
-        // Internal: Recursively serializes an object. Implements the
-        // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
-        var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {
-          var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;
-          try {
-            // Necessary for host object support.
-            value = object[property];
-          } catch (exception) {}
-          if (typeof value == "object" && value) {
-            className = getClass.call(value);
-            if (className == dateClass && !isProperty.call(value, "toJSON")) {
-              if (value > -1 / 0 && value < 1 / 0) {
-                // Dates are serialized according to the `Date#toJSON` method
-                // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
-                // for the ISO 8601 date time string format.
-                if (getDay) {
-                  // Manually compute the year, month, date, hours, minutes,
-                  // seconds, and milliseconds if the `getUTC*` methods are
-                  // buggy. Adapted from @Yaffle's `date-shim` project.
-                  date = floor(value / 864e5);
-                  for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);
-                  for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);
-                  date = 1 + date - getDay(year, month);
-                  // The `time` value specifies the time within the day (see ES
-                  // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
-                  // to compute `A modulo B`, as the `%` operator does not
-                  // correspond to the `modulo` operation for negative numbers.
-                  time = (value % 864e5 + 864e5) % 864e5;
-                  // The hours, minutes, seconds, and milliseconds are obtained by
-                  // decomposing the time within the day. See section 15.9.1.10.
-                  hours = floor(time / 36e5) % 24;
-                  minutes = floor(time / 6e4) % 60;
-                  seconds = floor(time / 1e3) % 60;
-                  milliseconds = time % 1e3;
-                } else {
-                  year = value.getUTCFullYear();
-                  month = value.getUTCMonth();
-                  date = value.getUTCDate();
-                  hours = value.getUTCHours();
-                  minutes = value.getUTCMinutes();
-                  seconds = value.getUTCSeconds();
-                  milliseconds = value.getUTCMilliseconds();
-                }
-                // Serialize extended years correctly.
-                value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +
-                  "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
-                  // Months, dates, hours, minutes, and seconds should have two
-                  // digits; milliseconds should have three.
-                  "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
-                  // Milliseconds are optional in ES 5.0, but required in 5.1.
-                  "." + toPaddedString(3, milliseconds) + "Z";
-              } else {
-                value = null;
-              }
-            } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {
-              // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
-              // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
-              // ignores all `toJSON` methods on these objects unless they are
-              // defined directly on an instance.
-              value = value.toJSON(property);
-            }
-          }
-          if (callback) {
-            // If a replacement function was provided, call it to obtain the value
-            // for serialization.
-            value = callback.call(object, property, value);
-          }
-          if (value === null) {
-            return "null";
-          }
-          className = getClass.call(value);
-          if (className == booleanClass) {
-            // Booleans are represented literally.
-            return "" + value;
-          } else if (className == numberClass) {
-            // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
-            // `"null"`.
-            return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
-          } else if (className == stringClass) {
-            // Strings are double-quoted and escaped.
-            return quote("" + value);
-          }
-          // Recursively serialize objects and arrays.
-          if (typeof value == "object") {
-            // Check for cyclic structures. This is a linear search; performance
-            // is inversely proportional to the number of unique nested objects.
-            for (length = stack.length; length--;) {
-              if (stack[length] === value) {
-                // Cyclic structures cannot be serialized by `JSON.stringify`.
-                throw TypeError();
-              }
-            }
-            // Add the object to the stack of traversed objects.
-            stack.push(value);
-            results = [];
-            // Save the current indentation level and indent one additional level.
-            prefix = indentation;
-            indentation += whitespace;
-            if (className == arrayClass) {
-              // Recursively serialize array elements.
-              for (index = 0, length = value.length; index < length; index++) {
-                element = serialize(index, value, callback, properties, whitespace, indentation, stack);
-                results.push(element === undef ? "null" : element);
-              }
-              result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";
-            } else {
-              // Recursively serialize object members. Members are selected from
-              // either a user-specified list of property names, or the object
-              // itself.
-              forEach(properties || value, function (property) {
-                var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
-                if (element !== undef) {
-                  // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
-                  // is not the empty string, let `member` {quote(property) + ":"}
-                  // be the concatenation of `member` and the `space` character."
-                  // The "`space` character" refers to the literal space
-                  // character, not the `space` {width} argument provided to
-                  // `JSON.stringify`.
-                  results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
-                }
-              });
-              result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";
-            }
-            // Remove the object from the traversed object stack.
-            stack.pop();
-            return result;
-          }
-        };
-
-        // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
-        exports.stringify = function (source, filter, width) {
-          var whitespace, callback, properties, className;
-          if (objectTypes[typeof filter] && filter) {
-            if ((className = getClass.call(filter)) == functionClass) {
-              callback = filter;
-            } else if (className == arrayClass) {
-              // Convert the property names array into a makeshift set.
-              properties = {};
-              for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1));
-            }
-          }
-          if (width) {
-            if ((className = getClass.call(width)) == numberClass) {
-              // Convert the `width` to an integer and create a string containing
-              // `width` number of space characters.
-              if ((width -= width % 1) > 0) {
-                for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ");
-              }
-            } else if (className == stringClass) {
-              whitespace = width.length <= 10 ? width : width.slice(0, 10);
-            }
-          }
-          // Opera <= 7.54u2 discards the values associated with empty string keys
-          // (`""`) only if they are used directly within an object member list
-          // (e.g., `!("" in { "": 1})`).
-          return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
-        };
-      }
-
-      // Public: Parses a JSON source string.
-      if (!has("json-parse")) {
-        var fromCharCode = String.fromCharCode;
-
-        // Internal: A map of escaped control characters and their unescaped
-        // equivalents.
-        var Unescapes = {
-          92: "\\",
-          34: '"',
-          47: "/",
-          98: "\b",
-          116: "\t",
-          110: "\n",
-          102: "\f",
-          114: "\r"
-        };
-
-        // Internal: Stores the parser state.
-        var Index, Source;
-
-        // Internal: Resets the parser state and throws a `SyntaxError`.
-        var abort = function () {
-          Index = Source = null;
-          throw SyntaxError();
-        };
-
-        // Internal: Returns the next token, or `"$"` if the parser has reached
-        // the end of the source string. A token may be a string, number, `null`
-        // literal, or Boolean literal.
-        var lex = function () {
-          var source = Source, length = source.length, value, begin, position, isSigned, charCode;
-          while (Index < length) {
-            charCode = source.charCodeAt(Index);
-            switch (charCode) {
-              case 9: case 10: case 13: case 32:
-                // Skip whitespace tokens, including tabs, carriage returns, line
-                // feeds, and space characters.
-                Index++;
-                break;
-              case 123: case 125: case 91: case 93: case 58: case 44:
-                // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
-                // the current position.
-                value = charIndexBuggy ? source.charAt(Index) : source[Index];
-                Index++;
-                return value;
-              case 34:
-                // `"` delimits a JSON string; advance to the next character and
-                // begin parsing the string. String tokens are prefixed with the
-                // sentinel `@` character to distinguish them from punctuators and
-                // end-of-string tokens.
-                for (value = "@", Index++; Index < length;) {
-                  charCode = source.charCodeAt(Index);
-                  if (charCode < 32) {
-                    // Unescaped ASCII control characters (those with a code unit
-                    // less than the space character) are not permitted.
-                    abort();
-                  } else if (charCode == 92) {
-                    // A reverse solidus (`\`) marks the beginning of an escaped
-                    // control character (including `"`, `\`, and `/`) or Unicode
-                    // escape sequence.
-                    charCode = source.charCodeAt(++Index);
-                    switch (charCode) {
-                      case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:
-                        // Revive escaped control characters.
-                        value += Unescapes[charCode];
-                        Index++;
-                        break;
-                      case 117:
-                        // `\u` marks the beginning of a Unicode escape sequence.
-                        // Advance to the first character and validate the
-                        // four-digit code point.
-                        begin = ++Index;
-                        for (position = Index + 4; Index < position; Index++) {
-                          charCode = source.charCodeAt(Index);
-                          // A valid sequence comprises four hexdigits (case-
-                          // insensitive) that form a single hexadecimal value.
-                          if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {
-                            // Invalid Unicode escape sequence.
-                            abort();
-                          }
-                        }
-                        // Revive the escaped character.
-                        value += fromCharCode("0x" + source.slice(begin, Index));
-                        break;
-                      default:
-                        // Invalid escape sequence.
-                        abort();
-                    }
-                  } else {
-                    if (charCode == 34) {
-                      // An unescaped double-quote character marks the end of the
-                      // string.
-                      break;
-                    }
-                    charCode = source.charCodeAt(Index);
-                    begin = Index;
-                    // Optimize for the common case where a string is valid.
-                    while (charCode >= 32 && charCode != 92 && charCode != 34) {
-                      charCode = source.charCodeAt(++Index);
-                    }
-                    // Append the string as-is.
-                    value += source.slice(begin, Index);
-                  }
-                }
-                if (source.charCodeAt(Index) == 34) {
-                  // Advance to the next character and return the revived string.
-                  Index++;
-                  return value;
-                }
-                // Unterminated string.
-                abort();
-              default:
-                // Parse numbers and literals.
-                begin = Index;
-                // Advance past the negative sign, if one is specified.
-                if (charCode == 45) {
-                  isSigned = true;
-                  charCode = source.charCodeAt(++Index);
-                }
-                // Parse an integer or floating-point value.
-                if (charCode >= 48 && charCode <= 57) {
-                  // Leading zeroes are interpreted as octal literals.
-                  if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {
-                    // Illegal octal literal.
-                    abort();
-                  }
-                  isSigned = false;
-                  // Parse the integer component.
-                  for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);
-                  // Floats cannot contain a leading decimal point; however, this
-                  // case is already accounted for by the parser.
-                  if (source.charCodeAt(Index) == 46) {
-                    position = ++Index;
-                    // Parse the decimal component.
-                    for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
-                    if (position == Index) {
-                      // Illegal trailing decimal.
-                      abort();
-                    }
-                    Index = position;
-                  }
-                  // Parse exponents. The `e` denoting the exponent is
-                  // case-insensitive.
-                  charCode = source.charCodeAt(Index);
-                  if (charCode == 101 || charCode == 69) {
-                    charCode = source.charCodeAt(++Index);
-                    // Skip past the sign following the exponent, if one is
-                    // specified.
-                    if (charCode == 43 || charCode == 45) {
-                      Index++;
-                    }
-                    // Parse the exponential component.
-                    for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
-                    if (position == Index) {
-                      // Illegal empty exponent.
-                      abort();
-                    }
-                    Index = position;
-                  }
-                  // Coerce the parsed value to a JavaScript number.
-                  return +source.slice(begin, Index);
-                }
-                // A negative sign may only precede numbers.
-                if (isSigned) {
-                  abort();
-                }
-                // `true`, `false`, and `null` literals.
-                if (source.slice(Index, Index + 4) == "true") {
-                  Index += 4;
-                  return true;
-                } else if (source.slice(Index, Index + 5) == "false") {
-                  Index += 5;
-                  return false;
-                } else if (source.slice(Index, Index + 4) == "null") {
-                  Index += 4;
-                  return null;
-                }
-                // Unrecognized token.
-                abort();
-            }
-          }
-          // Return the sentinel `$` character if the parser has reached the end
-          // of the source string.
-          return "$";
-        };
-
-        // Internal: Parses a JSON `value` token.
-        var get = function (value) {
-          var results, hasMembers;
-          if (value == "$") {
-            // Unexpected end of input.
-            abort();
-          }
-          if (typeof value == "string") {
-            if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") {
-              // Remove the sentinel `@` character.
-              return value.slice(1);
-            }
-            // Parse object and array literals.
-            if (value == "[") {
-              // Parses a JSON array, returning a new JavaScript array.
-              results = [];
-              for (;; hasMembers || (hasMembers = true)) {
-                value = lex();
-                // A closing square bracket marks the end of the array literal.
-                if (value == "]") {
-                  break;
-                }
-                // If the array literal contains elements, the current token
-                // should be a comma separating the previous element from the
-                // next.
-                if (hasMembers) {
-                  if (value == ",") {
-                    value = lex();
-                    if (value == "]") {
-                      // Unexpected trailing `,` in array literal.
-                      abort();
-                    }
-                  } else {
-                    // A `,` must separate each array element.
-                    abort();
-                  }
-                }
-                // Elisions and leading commas are not permitted.
-                if (value == ",") {
-                  abort();
-                }
-                results.push(get(value));
-              }
-              return results;
-            } else if (value == "{") {
-              // Parses a JSON object, returning a new JavaScript object.
-              results = {};
-              for (;; hasMembers || (hasMembers = true)) {
-                value = lex();
-                // A closing curly brace marks the end of the object literal.
-                if (value == "}") {
-                  break;
-                }
-                // If the object literal contains members, the current token
-                // should be a comma separator.
-                if (hasMembers) {
-                  if (value == ",") {
-                    value = lex();
-                    if (value == "}") {
-                      // Unexpected trailing `,` in object literal.
-                      abort();
-                    }
-                  } else {
-                    // A `,` must separate each object member.
-                    abort();
-                  }
-                }
-                // Leading commas are not permitted, object property names must be
-                // double-quoted strings, and a `:` must separate each property
-                // name and value.
-                if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") {
-                  abort();
-                }
-                results[value.slice(1)] = get(lex());
-              }
-              return results;
-            }
-            // Unexpected token encountered.
-            abort();
-          }
-          return value;
-        };
-
-        // Internal: Updates a traversed object member.
-        var update = function (source, property, callback) {
-          var element = walk(source, property, callback);
-          if (element === undef) {
-            delete source[property];
-          } else {
-            source[property] = element;
-          }
-        };
-
-        // Internal: Recursively traverses a parsed JSON object, invoking the
-        // `callback` function for each value. This is an implementation of the
-        // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
-        var walk = function (source, property, callback) {
-          var value = source[property], length;
-          if (typeof value == "object" && value) {
-            // `forEach` can't be used to traverse an array in Opera <= 8.54
-            // because its `Object#hasOwnProperty` implementation returns `false`
-            // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
-            if (getClass.call(value) == arrayClass) {
-              for (length = value.length; length--;) {
-                update(value, length, callback);
-              }
-            } else {
-              forEach(value, function (property) {
-                update(value, property, callback);
-              });
-            }
-          }
-          return callback.call(source, property, value);
-        };
-
-        // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
-        exports.parse = function (source, callback) {
-          var result, value;
-          Index = 0;
-          Source = "" + source;
-          result = get(lex());
-          // If a JSON string contains multiple tokens, it is invalid.
-          if (lex() != "$") {
-            abort();
-          }
-          // Reset the parser state.
-          Index = Source = null;
-          return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;
-        };
-      }
-    }
-
-    exports["runInContext"] = runInContext;
-    return exports;
-  }
-
-  if (freeExports && !isLoader) {
-    // Export for CommonJS environments.
-    runInContext(root, freeExports);
-  } else {
-    // Export for web browsers and JavaScript engines.
-    var nativeJSON = root.JSON,
-        previousJSON = root["JSON3"],
-        isRestored = false;
-
-    var JSON3 = runInContext(root, (root["JSON3"] = {
-      // Public: Restores the original value of the global `JSON` object and
-      // returns a reference to the `JSON3` object.
-      "noConflict": function () {
-        if (!isRestored) {
-          isRestored = true;
-          root.JSON = nativeJSON;
-          root["JSON3"] = previousJSON;
-          nativeJSON = previousJSON = null;
-        }
-        return JSON3;
-      }
-    }));
-
-    root.JSON = {
-      "parse": JSON3.parse,
-      "stringify": JSON3.stringify
-    };
-  }
-
-  // Export for asynchronous module loaders.
-  if (isLoader) {
-    define(function () {
-      return JSON3;
-    });
-  }
-}).call(this);
diff --git a/src/main/webapp/bower_components/json3/lib/json3.min.js b/src/main/webapp/bower_components/json3/lib/json3.min.js
deleted file mode 100644
index 5f896fa0..00000000
--- a/src/main/webapp/bower_components/json3/lib/json3.min.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
-(function(){function N(p,r){function q(a){if(q[a]!==w)return q[a];var c;if("bug-string-char-index"==a)c="a"!="a"[0];else if("json"==a)c=q("json-stringify")&&q("json-parse");else{var e;if("json-stringify"==a){c=r.stringify;var b="function"==typeof c&&s;if(b){(e=function(){return 1}).toJSON=e;try{b="0"===c(0)&&"0"===c(new t)&&'""'==c(new A)&&c(u)===w&&c(w)===w&&c()===w&&"1"===c(e)&&"[1]"==c([e])&&"[null]"==c([w])&&"null"==c(null)&&"[null,null,null]"==c([w,u,null])&&'{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'==
-c({a:[e,!0,!1,null,"\x00\b\n\f\r\t"]})&&"1"===c(null,e)&&"[\n 1,\n 2\n]"==c([1,2],null,1)&&'"-271821-04-20T00:00:00.000Z"'==c(new C(-864E13))&&'"+275760-09-13T00:00:00.000Z"'==c(new C(864E13))&&'"-000001-01-01T00:00:00.000Z"'==c(new C(-621987552E5))&&'"1969-12-31T23:59:59.999Z"'==c(new C(-1))}catch(f){b=!1}}c=b}if("json-parse"==a){c=r.parse;if("function"==typeof c)try{if(0===c("0")&&!c(!1)){e=c('{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}');var n=5==e.a.length&&1===e.a[0];if(n){try{n=!c('"\t"')}catch(d){}if(n)try{n=
-1!==c("01")}catch(g){}if(n)try{n=1!==c("1.")}catch(m){}}}}catch(X){n=!1}c=n}}return q[a]=!!c}p||(p=k.Object());r||(r=k.Object());var t=p.Number||k.Number,A=p.String||k.String,H=p.Object||k.Object,C=p.Date||k.Date,G=p.SyntaxError||k.SyntaxError,K=p.TypeError||k.TypeError,L=p.Math||k.Math,I=p.JSON||k.JSON;"object"==typeof I&&I&&(r.stringify=I.stringify,r.parse=I.parse);var H=H.prototype,u=H.toString,v,B,w,s=new C(-0xc782b5b800cec);try{s=-109252==s.getUTCFullYear()&&0===s.getUTCMonth()&&1===s.getUTCDate()&&
-10==s.getUTCHours()&&37==s.getUTCMinutes()&&6==s.getUTCSeconds()&&708==s.getUTCMilliseconds()}catch(Q){}if(!q("json")){var D=q("bug-string-char-index");if(!s)var x=L.floor,M=[0,31,59,90,120,151,181,212,243,273,304,334],E=function(a,c){return M[c]+365*(a-1970)+x((a-1969+(c=+(1<c)))/4)-x((a-1901+c)/100)+x((a-1601+c)/400)};(v=H.hasOwnProperty)||(v=function(a){var c={},e;(c.__proto__=null,c.__proto__={toString:1},c).toString!=u?v=function(a){var c=this.__proto__;a=a in(this.__proto__=null,this);this.__proto__=
-c;return a}:(e=c.constructor,v=function(a){var c=(this.constructor||e).prototype;return a in this&&!(a in c&&this[a]===c[a])});c=null;return v.call(this,a)});B=function(a,c){var e=0,b,f,n;(b=function(){this.valueOf=0}).prototype.valueOf=0;f=new b;for(n in f)v.call(f,n)&&e++;b=f=null;e?B=2==e?function(a,c){var e={},b="[object Function]"==u.call(a),f;for(f in a)b&&"prototype"==f||v.call(e,f)||!(e[f]=1)||!v.call(a,f)||c(f)}:function(a,c){var e="[object Function]"==u.call(a),b,f;for(b in a)e&&"prototype"==
-b||!v.call(a,b)||(f="constructor"===b)||c(b);(f||v.call(a,b="constructor"))&&c(b)}:(f="valueOf toString toLocaleString propertyIsEnumerable isPrototypeOf hasOwnProperty constructor".split(" "),B=function(a,c){var e="[object Function]"==u.call(a),b,h=!e&&"function"!=typeof a.constructor&&F[typeof a.hasOwnProperty]&&a.hasOwnProperty||v;for(b in a)e&&"prototype"==b||!h.call(a,b)||c(b);for(e=f.length;b=f[--e];h.call(a,b)&&c(b));});return B(a,c)};if(!q("json-stringify")){var U={92:"\\\\",34:'\\"',8:"\\b",
-12:"\\f",10:"\\n",13:"\\r",9:"\\t"},y=function(a,c){return("000000"+(c||0)).slice(-a)},R=function(a){for(var c='"',b=0,h=a.length,f=!D||10<h,n=f&&(D?a.split(""):a);b<h;b++){var d=a.charCodeAt(b);switch(d){case 8:case 9:case 10:case 12:case 13:case 34:case 92:c+=U[d];break;default:if(32>d){c+="\\u00"+y(2,d.toString(16));break}c+=f?n[b]:a.charAt(b)}}return c+'"'},O=function(a,c,b,h,f,n,d){var g,m,k,l,p,r,s,t,q;try{g=c[a]}catch(z){}if("object"==typeof g&&g)if(m=u.call(g),"[object Date]"!=m||v.call(g,
-"toJSON"))"function"==typeof g.toJSON&&("[object Number]"!=m&&"[object String]"!=m&&"[object Array]"!=m||v.call(g,"toJSON"))&&(g=g.toJSON(a));else if(g>-1/0&&g<1/0){if(E){l=x(g/864E5);for(m=x(l/365.2425)+1970-1;E(m+1,0)<=l;m++);for(k=x((l-E(m,0))/30.42);E(m,k+1)<=l;k++);l=1+l-E(m,k);p=(g%864E5+864E5)%864E5;r=x(p/36E5)%24;s=x(p/6E4)%60;t=x(p/1E3)%60;p%=1E3}else m=g.getUTCFullYear(),k=g.getUTCMonth(),l=g.getUTCDate(),r=g.getUTCHours(),s=g.getUTCMinutes(),t=g.getUTCSeconds(),p=g.getUTCMilliseconds();
-g=(0>=m||1E4<=m?(0>m?"-":"+")+y(6,0>m?-m:m):y(4,m))+"-"+y(2,k+1)+"-"+y(2,l)+"T"+y(2,r)+":"+y(2,s)+":"+y(2,t)+"."+y(3,p)+"Z"}else g=null;b&&(g=b.call(c,a,g));if(null===g)return"null";m=u.call(g);if("[object Boolean]"==m)return""+g;if("[object Number]"==m)return g>-1/0&&g<1/0?""+g:"null";if("[object String]"==m)return R(""+g);if("object"==typeof g){for(a=d.length;a--;)if(d[a]===g)throw K();d.push(g);q=[];c=n;n+=f;if("[object Array]"==m){k=0;for(a=g.length;k<a;k++)m=O(k,g,b,h,f,n,d),q.push(m===w?"null":
-m);a=q.length?f?"[\n"+n+q.join(",\n"+n)+"\n"+c+"]":"["+q.join(",")+"]":"[]"}else B(h||g,function(a){var c=O(a,g,b,h,f,n,d);c!==w&&q.push(R(a)+":"+(f?" ":"")+c)}),a=q.length?f?"{\n"+n+q.join(",\n"+n)+"\n"+c+"}":"{"+q.join(",")+"}":"{}";d.pop();return a}};r.stringify=function(a,c,b){var h,f,n,d;if(F[typeof c]&&c)if("[object Function]"==(d=u.call(c)))f=c;else if("[object Array]"==d){n={};for(var g=0,k=c.length,l;g<k;l=c[g++],(d=u.call(l),"[object String]"==d||"[object Number]"==d)&&(n[l]=1));}if(b)if("[object Number]"==
-(d=u.call(b))){if(0<(b-=b%1))for(h="",10<b&&(b=10);h.length<b;h+=" ");}else"[object String]"==d&&(h=10>=b.length?b:b.slice(0,10));return O("",(l={},l[""]=a,l),f,n,h,"",[])}}if(!q("json-parse")){var V=A.fromCharCode,W={92:"\\",34:'"',47:"/",98:"\b",116:"\t",110:"\n",102:"\f",114:"\r"},b,J,l=function(){b=J=null;throw G();},z=function(){for(var a=J,c=a.length,e,h,f,k,d;b<c;)switch(d=a.charCodeAt(b),d){case 9:case 10:case 13:case 32:b++;break;case 123:case 125:case 91:case 93:case 58:case 44:return e=
-D?a.charAt(b):a[b],b++,e;case 34:e="@";for(b++;b<c;)if(d=a.charCodeAt(b),32>d)l();else if(92==d)switch(d=a.charCodeAt(++b),d){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:e+=W[d];b++;break;case 117:h=++b;for(f=b+4;b<f;b++)d=a.charCodeAt(b),48<=d&&57>=d||97<=d&&102>=d||65<=d&&70>=d||l();e+=V("0x"+a.slice(h,b));break;default:l()}else{if(34==d)break;d=a.charCodeAt(b);for(h=b;32<=d&&92!=d&&34!=d;)d=a.charCodeAt(++b);e+=a.slice(h,b)}if(34==a.charCodeAt(b))return b++,e;l();default:h=
-b;45==d&&(k=!0,d=a.charCodeAt(++b));if(48<=d&&57>=d){for(48==d&&(d=a.charCodeAt(b+1),48<=d&&57>=d)&&l();b<c&&(d=a.charCodeAt(b),48<=d&&57>=d);b++);if(46==a.charCodeAt(b)){for(f=++b;f<c&&(d=a.charCodeAt(f),48<=d&&57>=d);f++);f==b&&l();b=f}d=a.charCodeAt(b);if(101==d||69==d){d=a.charCodeAt(++b);43!=d&&45!=d||b++;for(f=b;f<c&&(d=a.charCodeAt(f),48<=d&&57>=d);f++);f==b&&l();b=f}return+a.slice(h,b)}k&&l();if("true"==a.slice(b,b+4))return b+=4,!0;if("false"==a.slice(b,b+5))return b+=5,!1;if("null"==a.slice(b,
-b+4))return b+=4,null;l()}return"$"},P=function(a){var c,b;"$"==a&&l();if("string"==typeof a){if("@"==(D?a.charAt(0):a[0]))return a.slice(1);if("["==a){for(c=[];;b||(b=!0)){a=z();if("]"==a)break;b&&(","==a?(a=z(),"]"==a&&l()):l());","==a&&l();c.push(P(a))}return c}if("{"==a){for(c={};;b||(b=!0)){a=z();if("}"==a)break;b&&(","==a?(a=z(),"}"==a&&l()):l());","!=a&&"string"==typeof a&&"@"==(D?a.charAt(0):a[0])&&":"==z()||l();c[a.slice(1)]=P(z())}return c}l()}return a},T=function(a,b,e){e=S(a,b,e);e===
-w?delete a[b]:a[b]=e},S=function(a,b,e){var h=a[b],f;if("object"==typeof h&&h)if("[object Array]"==u.call(h))for(f=h.length;f--;)T(h,f,e);else B(h,function(a){T(h,a,e)});return e.call(a,b,h)};r.parse=function(a,c){var e,h;b=0;J=""+a;e=P(z());"$"!=z()&&l();b=J=null;return c&&"[object Function]"==u.call(c)?S((h={},h[""]=e,h),"",c):e}}}r.runInContext=N;return r}var K=typeof define==="function"&&define.amd,F={"function":!0,object:!0},G=F[typeof exports]&&exports&&!exports.nodeType&&exports,k=F[typeof window]&&
-window||this,t=G&&F[typeof module]&&module&&!module.nodeType&&"object"==typeof global&&global;!t||t.global!==t&&t.window!==t&&t.self!==t||(k=t);if(G&&!K)N(k,G);else{var L=k.JSON,Q=k.JSON3,M=!1,A=N(k,k.JSON3={noConflict:function(){M||(M=!0,k.JSON=L,k.JSON3=Q,L=Q=null);return A}});k.JSON={parse:A.parse,stringify:A.stringify}}K&&define(function(){return A})}).call(this);
diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html
index e98ef1fe..63775e3c 100644
--- a/src/main/webapp/index.html
+++ b/src/main/webapp/index.html
@@ -2,25 +2,31 @@
 
 <html ng-app="petClinicApp">
 
-	<head>
-		<title>PetClinic :: a Spring Framework demonstration</title>
-		
-		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
-    	<link href="resources/css/petclinic.css" rel="stylesheet"/>
-		<script src="bower_components/angular/angular.js"></script>
-		<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
-		<script src="bower_components/angular-resource/angular-resource.js"></script>
-		<script src="scripts/app/app.js"></script>
-		<script src="scripts/app/main/MainController.js"></script>
-		<script src="scripts/app/vet/VetController.js"></script>
-		<script src="scripts/app/owner/OwnerController.js"></script>
-		<script src="scripts/app/pet/PetController.js"></script>
-	</head>
-	
-	<body class="container">
-		<div ui-view="header"></div>
-		<div ui-view="content"></div>
-		<div ui-view="footer"></div>
-	</body>
+<head>
+    <title>PetClinic :: a Spring Framework demonstration</title>
+    <link rel="stylesheet" href="webjars/bootstrap/3.3.7/css/bootstrap.min.css"/>
+    <link rel="stylesheet" href="resources/css/petclinic.css"/>
+
+    <script src="webjars/jquery/3.1.0/jquery.min.js"></script>
+    <script src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-route.min.js"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-resource.min.js"></script>
+
+    <script src="scripts/app/app.js"></script>
+    <script src="scripts/app/owner-list/owner-list.component.js"></script>
+    <script src="scripts/app/owner-details/owner-details.component.js"></script>
+    <script src="scripts/app/owner-form/owner-form.component.js"></script>
+    <script src="scripts/app/pet-form/pet-form.component.js"></script>
+    <script src="scripts/app/vet-list/vet-list.component.js"></script>
+
+</head>
+
+<body class="container">
+<layout-nav></layout-nav>
+<div ng-view></div>
+<layout-footer></layout-footer>
+</body>
 
 </html>
diff --git a/src/main/webapp/scripts/app/app.js b/src/main/webapp/scripts/app/app.js
index 671bb041..b9245802 100644
--- a/src/main/webapp/scripts/app/app.js
+++ b/src/main/webapp/scripts/app/app.js
@@ -1,113 +1,47 @@
 'use strict';
-
-//Square brackets should only be defined once below (and not in other JS files)
-angular.module('controllers', ['services', 'ngResource']);
-angular.module('services', ['ngResource']);
-
-
 /* App Module */
 var petClinicApp = angular.module('petClinicApp', [
-  'ui.router', 'controllers', 'services'
-]);
-
-
-		
-petClinicApp.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
-    $urlRouterProvider.otherwise('/');
-    
-    $stateProvider
-    .state('app', {
-    	url: '/',
-    	controller: 'mainController',
-    	views: {
-            'header': 	{ templateUrl: 'scripts/app/fragments/bodyHeader.html'},
-            'content': 	{ templateUrl: 'scripts/app/main/main.html'},
-            'footer': 	{ templateUrl: 'scripts/app/fragments/footer.html'}
-        }
-      }).
-      state('app.ownersearch', {
-          url: 'owner/search',
-          views: {
-              'content@': {
-            	  controller: 'ownerSearchController',
-            	  templateUrl: 'scripts/app/owner/ownerSearchForm.html'
-              }
-          }
-   
-      }).
-      state('app.ownerlist', {
-          url: 'owner/list?lastName',
-          views: {
-              'content@': {
-                  controller: 'ownerListController',
-                  templateUrl: 'scripts/app/owner/ownerList.html'
-              }
-          }
-   
-      }).
-      state('app.ownerdetail', {
-          url: 'owner/:id',
-          views: {
-              'content@': {
-            	  controller: 'ownerDetailController',
-                  templateUrl: 'scripts/app/owner/ownerDetail.html'
-              }
-          }
-   
-      }).
-      state('app.ownercreate', {
-          url: 'owner',
-          views: {
-              'content@': {
-            	  controller: 'ownerFormController',
-                  templateUrl: 'scripts/app/owner/ownerForm.html'
-              }
-          }
-   
-      }).
-      state('app.owneredit', {
-          url: 'owner/:id/edit',
-          views: {
-              'content@': {
-                  controller: 'ownerFormController',
-                  templateUrl: 'scripts/app/owner/ownerForm.html'
-              }
-          }
-   
-      }).
-      state('app.vets', {
-          url: 'vets',
-          views: {
-              'content@': {
-            	  controller: 'vetController',
-                  templateUrl: 'scripts/app/vet/vetList.html'
-              }
-          }
-   
-      }).
-    state('app.petedit', {
-        url: 'owner/:ownerid/pet/:petid',
-        views: {
-            'content@': {
-            	controller: 'petFormController',
-                templateUrl: 'scripts/app/pet/petForm.html'
-            }
-        }
- 
-    }).
-    state('app.petcreate', {
-        url: 'owner/:ownerid/pet',
-        views: {
-            'content@': {
-            	controller: 'petFormController',
-                templateUrl: 'scripts/app/pet/petForm.html'
-            }
-        }
- 
-    });
-  }]);
-
-
-
-
-
+    'ngRoute', 'layoutNav', 'layoutFooter', 'layoutWelcome',
+    'ownerList', 'ownerDetails', 'ownerForm','petForm', 'vetList']);
+
+petClinicApp.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
+
+    $locationProvider.hashPrefix('!');
+
+    $routeProvider.when('/welcome', {
+        template: '<layout-welcome></layout-welcome>'
+    }).when('/owners/:ownerId', {
+        template: '<owner-details></owner-details>'
+    }).when('/owners', {
+        template: '<owner-list></owner-list>'
+    }).when('/owners/:ownerId/edit', {
+        template: '<owner-form></owner-form>'
+    }).when('/new-owner', {
+        template: '<owner-form></owner-form>'
+    }).when('/owners/:ownerId/new-pet', {
+        template: '<pet-form></pet-form>'
+    }).when('/owners/:ownerId/pets/:petId', {
+        template: '<pet-form></pet-form>'
+    }).when('/vets', {
+        template: '<vet-list></vet-list>'
+    }).otherwise('/welcome');
+
+}]);
+
+angular.module('layoutWelcome', []);
+
+angular.module("layoutWelcome").component("layoutWelcome", {
+    templateUrl: "scripts/app/fragments/welcome.html"
+});
+
+angular.module('layoutNav', []);
+
+angular.module("layoutNav").component("layoutNav", {
+    templateUrl: "scripts/app/fragments/nav.html"
+});
+
+angular.module('layoutFooter', []);
+
+angular.module("layoutFooter").component("layoutFooter", {
+    templateUrl: "scripts/app/fragments/footer.html"
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/fragments/bodyHeader.html b/src/main/webapp/scripts/app/fragments/bodyHeader.html
deleted file mode 100644
index 43faefce..00000000
--- a/src/main/webapp/scripts/app/fragments/bodyHeader.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<nav class="navbar navbar-default">
-    <div class="container-fluid">
-        <!-- Brand and toggle get grouped for better mobile display -->
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
-                    data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
-                <span class="sr-only">Toggle navigation</span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" ui-sref="app">Pet Clinic</a>
-
-        </div>
-
-        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
-            <ul class="nav navbar-nav">
-                <li><a ui-sref="app">Home</a></li>
-                <li><a ui-sref="app.ownersearch">Owner</a></li>
-                <li><a ui-sref="app.vets">Vets</a></li>
-            </ul>
-        </div>
-    </div>
-</nav>
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/fragments/footer.html b/src/main/webapp/scripts/app/fragments/footer.html
index 7a64bc41..5d554e8d 100644
--- a/src/main/webapp/scripts/app/fragments/footer.html
+++ b/src/main/webapp/scripts/app/fragments/footer.html
@@ -1,4 +1,4 @@
-<div style="text-align: right">
+<div style="text-align: right; padding-top: 3em;">
     <img src="resources/images/spring-pivotal-logo.png" alt="Sponsored by Pivotal"/>
 </div>
 
diff --git a/src/main/webapp/scripts/app/fragments/nav.html b/src/main/webapp/scripts/app/fragments/nav.html
new file mode 100644
index 00000000..f6722423
--- /dev/null
+++ b/src/main/webapp/scripts/app/fragments/nav.html
@@ -0,0 +1,30 @@
+<nav class="navbar navbar-default">
+    <div class="container-fluid">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
+                    data-target="#main-navbar" aria-expanded="false">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="navbar-brand" href="#">Pet Clinic</a>
+        </div>
+
+        <div class="collapse navbar-collapse" id="main-navbar">
+            <ul class="nav navbar-nav">
+                <li><a href="#!/welcome">Home</a></li>
+
+                <li class="dropdown">
+                    <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Owners <span class="caret"></span></a>
+                    <ul class="dropdown-menu">
+                        <li><a href="#!/owners">All</a></li>
+                        <li><a href="#!/new-owner">New</a></li>
+                    </ul>
+                </li>
+
+                <li><a href="#!/vets">Vets</a></li>
+            </ul>
+        </div>
+    </div>
+</nav>
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/fragments/welcome.html b/src/main/webapp/scripts/app/fragments/welcome.html
new file mode 100644
index 00000000..a91aa92e
--- /dev/null
+++ b/src/main/webapp/scripts/app/fragments/welcome.html
@@ -0,0 +1 @@
+ <p>Welcome to Petclinic  </p>
diff --git a/src/main/webapp/scripts/app/main/MainController.js b/src/main/webapp/scripts/app/main/MainController.js
deleted file mode 100644
index 19c6c11d..00000000
--- a/src/main/webapp/scripts/app/main/MainController.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-/* Controllers */
-
-angular.module('controllers').controller('mainController', ['$scope',
-  function($scope) {
-  }]);
-
-
diff --git a/src/main/webapp/scripts/app/main/main.html b/src/main/webapp/scripts/app/main/main.html
deleted file mode 100644
index 84cc02ea..00000000
--- a/src/main/webapp/scripts/app/main/main.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<div ng-controller="mainController">
-     <p>Welcome to Petclinic  </p>
-</div>
diff --git a/src/main/webapp/scripts/app/owner-details/owner-details.component.js b/src/main/webapp/scripts/app/owner-details/owner-details.component.js
new file mode 100644
index 00000000..36629b61
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-details/owner-details.component.js
@@ -0,0 +1,16 @@
+'use strict';
+
+angular.module('ownerDetails', [
+    'ngRoute'
+]);
+
+angular.module("ownerDetails").component("ownerDetails", {
+    templateUrl: "scripts/app/owner-details/owner-details.template.html",
+    controller: ["$http", '$routeParams', function($http, $routeParams) {
+        var self = this;
+
+        $http.get('owner/' + $routeParams.ownerId).then(function(resp) {
+            self.owner = resp.data;
+        });
+    }]
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/owner-details/owner-details.template.html b/src/main/webapp/scripts/app/owner-details/owner-details.template.html
new file mode 100644
index 00000000..293ce831
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-details/owner-details.template.html
@@ -0,0 +1,69 @@
+<h2>Owner Information</h2>
+
+<table class="table table-striped">
+    <tr>
+        <th class="col-sm-3">Name</th>
+        <td><b>{{$ctrl.owner.firstName}} {{$ctrl.owner.lastName}}</b></td>
+    </tr>
+    <tr>
+        <th>Address</th>
+        <td>{{$ctrl.owner.address}}</td>
+    </tr>
+    <tr>
+        <th>City</th>
+        <td>{{$ctrl.owner.city}}</td>
+    </tr>
+    <tr>
+        <th>Telephone</th>
+        <td>{{$ctrl.owner.telephone}}</td>
+    </tr>
+    <tr>
+        <td>
+            <a class="btn btn-info" href="#!/owners/{{$ctrl.owner.id}}/edit">Edit Owner</a>
+        </td>
+        <td>
+            <a href="#!/owners/{{$ctrl.owner.id}}/new-pet" class="btn btn-success">Add New Pet</a>
+        </td>
+    </tr>
+</table>
+
+<h2>Pets and Visits</h2>
+
+<table class="table" style="width:600px;">
+    <tr ng-repeat="pet in $ctrl.owner.pets">
+        <td valign="top" style="width: 120px;">
+            <dl class="dl-horizontal">
+                <dt>Name</dt>
+                <dd>{{pet.name}}</dd>
+                <dt>Birth Date</dt>
+                <dd>{{pet.birthDate | date:'MM/dd/yyyy'}}</dd>
+                <dt>Type</dt>
+                <dd>{{pet.type.name}}</dd>
+            </dl>
+        </td>
+        <td valign="top">
+            <table class="table-condensed">
+                <thead>
+                <tr>
+                    <th>Visit Date</th>
+                    <th>Description</th>
+                </tr>
+                </thead>
+                <tr ng-repeat="visit in pet.visits">
+                    <td>{{visit.date | date:'MM/dd/yyyy'}}</td>
+                    <td>{{visit.description}}</td>
+                </tr>
+                <tr>
+                    <td>
+                        <a href="#!/owners/{{$ctrl.owner.id}}/pets/{{pet.id}}">Edit Pet</a>
+                    </td>
+                    <td>
+                        <a href="...">Add Visit</a>
+                    </td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+
+
diff --git a/src/main/webapp/scripts/app/owner-form/owner-form.component.js b/src/main/webapp/scripts/app/owner-form/owner-form.component.js
new file mode 100644
index 00000000..3baf9d5f
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-form/owner-form.component.js
@@ -0,0 +1,41 @@
+'use strict';
+
+angular.module('ownerForm', [
+    'ngRoute'
+]);
+
+angular.module("ownerForm").component("ownerForm", {
+    templateUrl: "/petclinic/scripts/app/owner-form/owner-form.template.html",
+    controller: ["$http", '$routeParams', '$location', function ($http, $routeParams, $location) {
+        var self = this;
+
+        var ownerId = $routeParams.ownerId || 0;
+
+        if (!ownerId) {
+            self.owner = {};
+        } else {
+            $http.get("owner/" + ownerId).then(function(resp) {
+                self.owner = resp.data;
+            });
+        }
+
+        self.submitOwnerForm = function() {
+            var id = self.owner.id;
+            var req;
+            if (id) {
+                req = $http.put("owner/" + id, self.owner);
+            } else {
+                req = $http.post("owner", self.owner);
+            }
+
+            req.then(function () {
+                $location.url("/owners");
+            }, function (response) {
+                var error = response.data;
+                alert(error.error + "\r\n" + error.errors.map(function (e) {
+                        return e.field + ": " + e.defaultMessage;
+                    }).join("\r\n"));
+            });
+        };
+    }]
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/owner-form/owner-form.template.html b/src/main/webapp/scripts/app/owner-form/owner-form.template.html
new file mode 100644
index 00000000..9354af59
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-form/owner-form.template.html
@@ -0,0 +1,44 @@
+<h2>Owner</h2>
+<form class="form-horizontal" name="ownerForm">
+    <div class="form-group">
+        <label class="col-sm-2 control-label">First name</label>
+        <div class="col-sm-4">
+            <input class="form-control" ng-model="$ctrl.owner.firstName" name="firstName" required/>
+            <span ng-show="ownerForm.firstName.$error.required" class="help-inline">First name is required.</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Last name</label>
+        <div class="col-sm-4">
+            <input class="form-control" ng-model="$ctrl.owner.lastName" name="lastName" required/>
+            <span ng-show="ownerForm.lastName.$error.required" class="help-inline">Last name is required.</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Address</label>
+        <div class="col-sm-4">
+            <input class="form-control" ng-model="$ctrl.owner.address" name="address" required/>
+            <span ng-show="ownerForm.address.$error.required" class="help-inline">Address is required.</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="col-sm-2 control-label">City</label>
+        <div class="col-sm-4">
+            <input class="form-control" ng-model="$ctrl.owner.city" name="city" required/>
+            <span ng-show="ownerForm.city.$error.required" class="help-inline">City is required.</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Telephone</label>
+        <div class="col-sm-4">
+            <input class="form-control" ng-model="$ctrl.owner.telephone" name="telephone" required/>
+            <span ng-show="ownerForm.telephone.$error.required" class="help-inline">Telephone is required.</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <div class="col-sm-offset-2 col-sm-4">
+            <button class="btn btn-primary" type="submit" ng-click="$ctrl.submitOwnerForm()">Submit</button>
+        </div>
+    </div>
+</form>
+
diff --git a/src/main/webapp/scripts/app/owner/OwnerController.js b/src/main/webapp/scripts/app/owner-list/OwnerController.js
similarity index 99%
rename from src/main/webapp/scripts/app/owner/OwnerController.js
rename to src/main/webapp/scripts/app/owner-list/OwnerController.js
index 75284f07..6f2cddc0 100644
--- a/src/main/webapp/scripts/app/owner/OwnerController.js
+++ b/src/main/webapp/scripts/app/owner-list/OwnerController.js
@@ -5,8 +5,6 @@ function loadOwner($scope, $resource, $stateParams) {
 	$scope.owner =  ownerResource.get();
 }
 
-
-
 /*
  * Owner Search
  */
diff --git a/src/main/webapp/scripts/app/owner-list/owner-list.component.js b/src/main/webapp/scripts/app/owner-list/owner-list.component.js
new file mode 100644
index 00000000..aeb61b9e
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-list/owner-list.component.js
@@ -0,0 +1,15 @@
+'use strict';
+
+angular.module('ownerList', [
+    'ngRoute'
+]);
+
+angular.module("ownerList").component("ownerList", {
+    templateUrl: "/petclinic/scripts/app/owner-list/owner-list.template.html",
+    controller: ["$http", function ($http) {
+        var self = this;
+        $http.get('/petclinic/owner/list').then(function(resp) {
+            self.owners = resp.data;
+        });
+    }]
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/owner-list/owner-list.template.html b/src/main/webapp/scripts/app/owner-list/owner-list.template.html
new file mode 100644
index 00000000..178b1a86
--- /dev/null
+++ b/src/main/webapp/scripts/app/owner-list/owner-list.template.html
@@ -0,0 +1,24 @@
+<h2>Owners</h2>
+<table class="table table-striped">
+    <thead>
+    <tr>
+        <th>Name</th>
+        <th>Address</th>
+        <th>City</th>
+        <th>Telephone</th>
+        <th>Pets</th>
+    </tr>
+    </thead>
+
+    <tr ng-repeat="owner in $ctrl.owners">
+        <td>
+            <a href="#!/owners/{{owner.id}}">
+                {{owner.firstName}} {{owner.lastName}}
+            </a>
+        </td>
+        <td>{{owner.address}}</td>
+        <td>{{owner.city}}</td>
+        <td>{{owner.telephone}}</td>
+        <td><span ng-repeat="pet in owner.pets">{{pet.name + ' '}}</span></td>
+    </tr>
+</table>
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/owner/ownerDetail.html b/src/main/webapp/scripts/app/owner-list/ownerDetail.html
similarity index 100%
rename from src/main/webapp/scripts/app/owner/ownerDetail.html
rename to src/main/webapp/scripts/app/owner-list/ownerDetail.html
diff --git a/src/main/webapp/scripts/app/owner/ownerForm.html b/src/main/webapp/scripts/app/owner-list/ownerForm.html
similarity index 100%
rename from src/main/webapp/scripts/app/owner/ownerForm.html
rename to src/main/webapp/scripts/app/owner-list/ownerForm.html
diff --git a/src/main/webapp/scripts/app/owner/ownerSearchForm.html b/src/main/webapp/scripts/app/owner-list/ownerSearchForm.html
similarity index 100%
rename from src/main/webapp/scripts/app/owner/ownerSearchForm.html
rename to src/main/webapp/scripts/app/owner-list/ownerSearchForm.html
diff --git a/src/main/webapp/scripts/app/owner/ownerList.html b/src/main/webapp/scripts/app/owner/ownerList.html
deleted file mode 100644
index 9a66b6ad..00000000
--- a/src/main/webapp/scripts/app/owner/ownerList.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<div ng-controller="ownerListController">
-      <table class="table table-striped">
-        <thead>
-        <tr>
-            <th>Name</th>
-            <th>Address</th>
-            <th>City</th>
-            <th>Telephone</th>
-            <th>Pets</th>
-        </tr>
-        </thead>
-
-        <tr ng-repeat="owner in ownerList">
-            <td>
-            	<a ui-sref="app.ownerdetail({id: owner.id})">
-            		{{owner.firstName}} {{owner.lastName}}
-            	</a>
-            </td>
-            <td>{{owner.address}} </td>
-            <td>{{owner.city}} </td>
-            <td>{{owner.telephone}} </td>
-            <td><span ng-repeat="pet in owner.pets">{{pet.name + ' '}}</span></td>
-
-        </tr>
-    </table>    
-</div>
diff --git a/src/main/webapp/scripts/app/pet-form/pet-form.component.js b/src/main/webapp/scripts/app/pet-form/pet-form.component.js
new file mode 100644
index 00000000..36b766ba
--- /dev/null
+++ b/src/main/webapp/scripts/app/pet-form/pet-form.component.js
@@ -0,0 +1,63 @@
+'use strict';
+
+angular.module('petForm', [
+    'ngRoute'
+]);
+
+angular.module("petForm").component("petForm", {
+    templateUrl: "/petclinic/scripts/app/pet-form/pet-form.template.html",
+    controller: ["$http", '$routeParams', '$location', function ($http, $routeParams, $location) {
+        var self = this;
+        var ownerId = $routeParams.ownerId || 0;
+
+        $http.get('petTypes').then(function(resp) {
+            self.types = resp.data;
+        }).then(function () {
+
+            var petId = $routeParams.petId || 0;
+
+            if (petId) {
+                $http.get("owner/" + ownerId + "/pet/" + petId).then(function(resp) {
+                    self.pet = resp.data;
+                    self.petTypeId = "" + self.pet.type.id;
+                });
+            } else {
+                $http.get('owner/' + ownerId).then(function(resp) {
+                    self.pet = {
+                        owner: resp.data.firstName + " " + resp.data.lastName
+                    };
+                })
+
+            }
+        });
+
+        self.submit = function() {
+            console.log(this.pet);
+
+            var id = self.pet.id || 0;
+
+            var data = {
+                id : id,
+                name : self.pet.name,
+                birthDate : self.pet.birthDate,
+                typeId: self.petTypeId
+            };
+
+            var req;
+            if (id) {
+                req = $http.put("owners/" + ownerId + "/pets/" + id, data);
+            } else {
+                req = $http.post("owners/" + ownerId + "/pets", data);
+            }
+
+            req.then(function () {
+                $location.url("owners/" + ownerId);
+            }, function (response) {
+                var error = response.data;
+                alert(error.error + "\r\n" + error.errors.map(function (e) {
+                        return e.field + ": " + e.defaultMessage;
+                    }).join("\r\n"));
+            });
+        };
+    }]
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/pet-form/pet-form.template.html b/src/main/webapp/scripts/app/pet-form/pet-form.template.html
new file mode 100644
index 00000000..8811960a
--- /dev/null
+++ b/src/main/webapp/scripts/app/pet-form/pet-form.template.html
@@ -0,0 +1,43 @@
+<h2>Pet</h2>
+
+<form class="form-horizontal">
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Owner</label>
+        <div class="col-sm-6">
+            <p class="form-control-static">{{$ctrl.pet.owner}}</p>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Name </label>
+        <div class="col-sm-6">
+            <input class="form-control col-sm-4" ng-model="$ctrl.pet.name" name="name" required type="text"/>
+            <span ng-show="petForm.name.$error.required" class="help-inline">Name is required.</span>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Birth date</label>
+        <div class="col-sm-6">
+            <input class="form-control" ng-model="$ctrl.pet.birthDate" value="{{pet.birthDate}}" required type="text"/>
+            <span ng-show="petForm.name.$error.required" class="help-inline"> birth date is required.</span>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="col-sm-2 control-label">Type</label>
+        <div class="col-sm-6">
+            <select class="form-control" ng-model="$ctrl.petTypeId">
+                <option ng-repeat="t in $ctrl.types" value="{{t.id}}">{{t.name}}</option>
+            </select>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <div class="col-sm-6 col-sm-offset-2">
+            <button class="btn btn-primary" type="submit" ng-click="$ctrl.submit()">
+                Submit
+            </button>
+        </div>
+    </div>
+</form>
diff --git a/src/main/webapp/scripts/app/vet-list/vet-list.component.js b/src/main/webapp/scripts/app/vet-list/vet-list.component.js
new file mode 100644
index 00000000..80551758
--- /dev/null
+++ b/src/main/webapp/scripts/app/vet-list/vet-list.component.js
@@ -0,0 +1,16 @@
+'use strict';
+
+angular.module('vetList', [
+    'ngRoute'
+]);
+
+angular.module("vetList").component("vetList", {
+    templateUrl: "scripts/app/vet-list/vet-list.template.html",
+    controller: ["$http", '$routeParams', function($http) {
+        var self = this;
+
+        $http.get('vets').then(function(resp) {
+            self.vetList = resp.data;
+        });
+    }]
+});
\ No newline at end of file
diff --git a/src/main/webapp/scripts/app/vet-list/vet-list.template.html b/src/main/webapp/scripts/app/vet-list/vet-list.template.html
new file mode 100644
index 00000000..e705f050
--- /dev/null
+++ b/src/main/webapp/scripts/app/vet-list/vet-list.template.html
@@ -0,0 +1,15 @@
+<h2>Veterinarians</h2>
+<table class="table table-striped">
+    <thead>
+    <tr>
+        <th>Name</th>
+        <th>Specialties</th>
+    </tr>
+    </thead>
+
+    <tr ng-repeat="vet in $ctrl.vetList">
+        <td>{{vet.firstName}} {{vet.lastName}}</td>
+        <td><span ng-repeat="specialty in vet.specialties">{{specialty.name + ' '}}</span></td>
+
+    </tr>
+</table>
diff --git a/src/main/webapp/scripts/app/vet/VetController.js b/src/main/webapp/scripts/app/vet/VetController.js
deleted file mode 100644
index a68f7ec1..00000000
--- a/src/main/webapp/scripts/app/vet/VetController.js
+++ /dev/null
@@ -1,13 +0,0 @@
-'use strict';
-
-/* Controllers */
-
-angular.module('controllers').controller('vetController', ['$scope', '$resource', 
-  function($scope, $resource) {
-	var vetResource = $resource('vets');
-	
-    $scope.vetList = vetResource.query();
-    $scope.orderProp = 'name';
-  }]);
-
-
diff --git a/src/main/webapp/scripts/app/vet/vetList.html b/src/main/webapp/scripts/app/vet/vetList.html
deleted file mode 100644
index 7d582a7f..00000000
--- a/src/main/webapp/scripts/app/vet/vetList.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<div data-ng-controller="vetController">
-      <table class="table table-striped">
-        <thead>
-        <tr>
-            <th>Name</th>
-            <th>Specialties</th>
-        </tr>
-        </thead>
-
-        <tr ng-repeat="vet in vetList">
-            <td>{{vet.firstName}} {{vet.lastName}}</td>
-            <td><span ng-repeat="specialty in vet.specialties">{{specialty.name + ' '}}</span></td>
-
-        </tr>
-    </table>    
-</div>
diff --git a/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java b/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java
index 330247ba..50758829 100644
--- a/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java
+++ b/src/test/java/org/springframework/samples/petclinic/service/AbstractClinicServiceTests.java
@@ -36,8 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat;
  * AbstractclinicServiceTests and its subclasses benefit from the following services provided by the Spring
  * TestContext Framework: </p> <ul> <li><strong>Spring IoC container caching</strong> which spares us unnecessary set up
  * time between test execution.</li> <li><strong>Dependency Injection</strong> of test fixture instances, meaning that
- * we don't need to perform application context lookups. See the use of {@link Autowired @Autowired} on the <code>{@link
- * AbstractclinicServiceTests#clinicService clinicService}</code> instance variable, which uses autowiring <em>by
+ * we don't need to perform application context lookups. See the use of {@link Autowired @Autowired} on the <code></code> instance variable, which uses autowiring <em>by
  * type</em>. <li><strong>Transaction management</strong>, meaning each test method is executed in its own transaction,
  * which is automatically rolled back by default. Thus, even if tests insert or otherwise change database state, there
  * is no need for a teardown or cleanup script. <li> An {@link org.springframework.context.ApplicationContext
@@ -54,15 +53,6 @@ public abstract class AbstractClinicServiceTests {
     @Autowired
     protected ClinicService clinicService;
 
-    @Test
-    public void shouldFindOwnersByLastName() {
-        Collection<Owner> owners = this.clinicService.findOwnerByLastName("Davis");
-        assertThat(owners.size()).isEqualTo(2);
-
-        owners = this.clinicService.findOwnerByLastName("Daviss");
-        assertThat(owners.isEmpty());
-    }
-
     @Test
     public void shouldFindSingleOwnerWithPet() {
         Owner owner = this.clinicService.findOwnerById(1);
@@ -72,14 +62,14 @@ public abstract class AbstractClinicServiceTests {
     
     @Test
     public void shouldReturnAllOwnersInCaseLastNameIsEmpty() {
-        Collection<Owner> owners = this.clinicService.findOwnerByLastName("");
+        Collection<Owner> owners = this.clinicService.findAll();
         assertThat(owners).extracting("lastName").contains("Davis", "Franklin");        
     }
 
     @Test
     @Transactional
     public void shouldInsertOwner() {
-        Collection<Owner> owners = this.clinicService.findOwnerByLastName("Schultz");
+        Collection<Owner> owners = this.clinicService.findAll();
         int found = owners.size();
         
         Owner owner = new Owner();
@@ -91,7 +81,7 @@ public abstract class AbstractClinicServiceTests {
         this.clinicService.saveOwner(owner);
         assertThat(owner.getId().longValue()).isNotEqualTo(0);
 
-        owners = this.clinicService.findOwnerByLastName("Schultz");
+        owners = this.clinicService.findAll();
         assertThat(owners.size()).isEqualTo(found + 1);
     }
 
-- 
GitLab