diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..4d5e77e --- /dev/null +++ b/.drone.yml @@ -0,0 +1,13 @@ +kind: pipeline +name: Jekyll build +type: docker + + +steps: + +- name: build + image: ruby + commands: + - gem install bundler + - bundle install + - bundle exec jekyll build \ No newline at end of file diff --git a/CNAME b/CNAME deleted file mode 100644 index 87d0322..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -anonymousland.org \ No newline at end of file diff --git a/Gemfile b/Gemfile index 813d0a6..cc99210 100644 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,9 @@ # frozen_string_literal: true source "https://rubygems.org" -gem "jekyll" +gem 'jekyll' gem "jekyll-theme-potato-hacker" -gem "jekyll-feed" -gem "jekyll-seo-tag" -gem "jekyll-sitemap" -gem "kramdown-parser-gfm" +gem 'jekyll-feed' +gem 'jekyll-seo-tag' gem "bundler" -gem "webrick" -gem "github-pages" \ No newline at end of file +gem "kramdown-parser-gfm" +gem "webrick", "~> 1.7" diff --git a/README.md b/README.md index d1ef9bd..6233f37 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,13 @@ -# **[Anonymousland](https://anonymousland.org)** v1.10 - -## Notice: - -We are temporary using GitHub pages. -This provides an easier maintenance-free system of hosting. -This is beneficial as it does not require an additional VPS and configuration. -Until our infrastructure is restored, the site will remain on GitHub pages. - - - SERVICES OFFLINE. - VPS PROVIDER DELETED ENTIRE VPS WITHOUT NOTICE. - - Our VPS provider- 1984 deleted the entire VPS without notice. - All data regarding **ALL** of our services is gone. - Only the Git mirrors remain. - - > Hosing publicly usable services which provides benefits to anonymity are a great way to help the community. Unfortunately, these become difficult to manage & maintain. Many services including our Tor node and Matrix server were prone to being abused. To effectively combat abuse, this would require us to use privacy-invasive measures. Our hosting provider - 1984, the host we used for everything, decided to delete the entire VPS without notice. We received no emails or alerts on such actions. There could be a number of reasons for this - primarily being abuse. Our Tor exit node hosted on Njalla was shutdown after malicious user(s) conducted several brute-force attacks. Njalla has become ridiculously expensive to operate with, providing no real upgrades, and you are limited to a small amount of storage. While hosting services is great, it's even more difficult to do such with little to no donations, and a wide variety of malicious actors conducting abuse on such services. Services may be available in the future, but for now we best stick with this website, and this website only. - -> Anonymity, Privacy, Security +# **[Anonymousland](https://anonymousland.org)** v1.08
-[![Anonymousland logo](/assets/img/anonymousland_logo.png "Anonymousland logo")](https://anonymousland.org) +[![Build Status](https://drone.anonymousland.org/api/badges/anonymousland/anonymousland/status.svg)](https://drone.anonymousland.org/anonymousland/anonymousland)
-
- -![Website](https://img.shields.io/website?down_color=red&down_message=down&style=flat-square&up_color=green&up_message=up&url=https%3A%2F%2Fanonymousland.org%2F) -![Security Headers](https://img.shields.io/security-headers?style=flat-square&url=https%3A%2F%2Fanonymousland.org%2F) -![GitHub contributors](https://img.shields.io/github/contributors/anonyland/anonymousland?label=GitHub%20contributors&style=flat-square) -![GitHub commit activity](https://img.shields.io/github/commit-activity/m/anonyland/anonymousland?label=GitHub%20commit%20activity&style=flat-square) -![GitHub](https://img.shields.io/github/license/anonyland/anonymousland?style=flat-square) -![GitHub Repo stars](https://img.shields.io/github/stars/anonyland/anonymousland?label=GitHub%20stars&style=flat-square) -![Maintenance](https://img.shields.io/maintenance/yes/2023?style=flat-square) -![GitHub release (latest by date)](https://img.shields.io/github/v/release/anonyland/anonymousland?style=flat-square) - -
- -
- -[![Monero wallet](https://img.shields.io/badge/XMR-47teQv7uWPv9EALRDv9je6ckC83UYJiisHpmhNKHyPPTXinPJNRtvW8PcpEoLxex9ierqWvD89v9mVyGf77uLtS3RnGUk8K-orange?logo=monero&style=flat-square)](https://anonymousland.org/donate) - -
- -[Changelog](https://anonymousland.org/changelog) - -## Mirrors - -Here are the place where you can view and contribute to our repositories: - -- [Main (Self-hosted Gitea)](https://git.anonymousland.org/anonymousland/anonymousland) -- [GitHub mirror](https://github.com/anonyland/anonymousland) -- [Codeberg mirror](https://codeberg.org/anonymousland/anonymousland) - -*All of the mirrors are both read and write and you can contribute on either place.* - -## Contributing - -**Thank you very much for reading this.** Contributions are very welcome, to contribute, just fork the repository, do the changes and open a pull request. - -You can contribute either on our own [Git](https://git.anonymousland.org/anonymousland/anonymousland) or on any other mirror listed above. - -If you do not know where to start, take a look at the [issues](https://git.anonymousland.org/anonymousland/anonymousland/issues) for this repository, you can also take a look at our *site-wide* [issues list](https://git.anonymousland.org/anonymousland/main). - -## Donations - -Running these services and properly maintaining them takes time and money. *We would be extremely grateful to get donations*, we only ask for 5$, that's all. - -To donate, you can visit our [donation page](https://anonymousland.org/donate), contribute directly to our [Monero](https://www.getmonero.org/) wallet or by scanning the folowing QR Code: - -
- -|![](/assets/img/xmr_donation_wallet.svg) | -|:--------------:| -| **Monero (XMR)** | - -
- -_Monero wallet address:_ `47teQv7uWPv9EALRDv9je6ckC83UYJiisHpmhNKHyPPTXinPJNRtvW8PcpEoLxex9ierqWvD89v9mVyGf77uLtS3RnGUk8K` - -## Building - -To build this Jekyll website you can use the following commands: - -``` -bundle install -jekyll build -``` - -Building with docker: - -Ensure `docker` is installed, then execute `docker-build.sh` - -**Make sure to be at the root of the repository.** -The built site files ready to host will be located at the `_site` directory. - -## Hosting - -To host this site, we use nginx, you can check our config at our [infrastructure repository](https://git.anonymousland.org/anonymousland/infrastructure). But this should do: - -``` -server { - listen 443 ssl http2; - listen [::]:443 ssl http2; - gzip on; - - server_name exampledomain.com; - - location / { - root /config/www; - index index.html; - try_files $uri $uri.html $uri/ =404; - } - -} -``` - -## License - -![CC0 Logo](https://upload.wikimedia.org/wikipedia/commons/6/69/CC0_button.svg) - -All content produced by us is licensed under *public domain* using the [CC0 license](https://creativecommons.org/share-your-work/public-domain/cc0/). +Contribute at https://git.anonymousland.org/anonymousland/anonymousland ## Contact -Click [here](https://matrix.to/#/#lounge:anonymousland.org) to join our main Matrix *chatroom* and [here](https://matrix.to/#/#anonymousland:anonymousland.org) to join our Matrix *space.* \ No newline at end of file +Click [here](https://matrix.to/#/#lounge:anonymousland.org) to join our Matrix Chatroom and [here](https://matrix.to/#/#anonymousland:anonymousland.org) to join our Matrix space. \ No newline at end of file diff --git a/_changelog/changelog.md b/_changelog/changelog.md index 1e83734..e08f478 100644 --- a/_changelog/changelog.md +++ b/_changelog/changelog.md @@ -4,71 +4,7 @@ title: Changelog permalink: /changelog --- - -# v1.11 - -- Added new links to [qubes](./qubes) - -- Updated Qubes references to `fedora-37` from `fedora-36` - -- Instructions for proxying `wget` on [qubes](./qubes) - -- Added Mullvad VPN guide for Qubes on [guide](./guide) - -- Updated [transparency](./transparency) - -- New links on [information](./information) - -- Created `dvm-zulucrypt` guide at [dvm-zulucrypt](./qubes/dvm-zulucrypt) - -- Created `sys-dns` guide at [kicksecure-sys-dns](./qubes/kicksecure-sys-dns) - -- Added new `tor-usage` section on [guide](./guide) - -- Added new `tor-operating-systems` section on [guide](./guide) - -- Added new `contributing-to-tor` section on [guide](./guide) - -- Added new `grapheneos-hardening` section on [guide](./guide) - -- Added app repository information on [guide](./guide) - -- Reformatted the [collections](./collections) section on [index](./) - -- Reformatted various text - -- Updated the JS and CSS - - -# v1.10 - -- Updated README - -- Added blog section to ``/index`` - -- Added plausible deniability section on ``/guide`` - -- Added plausible deniability section on ``/tools`` - -- Added tails section on ``/guide`` - -- Updated website security headers - -- Updated Git README - -- Updated XMR address - -- Added Schild onion address - -- Added secure computing section on ``/guide`` - -- Add SEO improvements - -- Update the Matrix ``./well-known`` file to have better support for clients - -- Added Proton Drive to ``/tools`` - -- Updated various aspects with the CSS +--- # v1.09 diff --git a/_config.yml b/_config.yml index ab7b82f..11d38fe 100644 --- a/_config.yml +++ b/_config.yml @@ -1,12 +1,7 @@ repository: anonymousland/anonymousland -remote_theme: luxedo/jekyll-theme-potato-hacker -#theme: jekyll-theme-potato-hacker +theme: jekyll-theme-potato-hacker theme_base: "dark" theme_switch: off -title: Anonymousland -email: admin@anonymousland.org -url: https://anonymousland.org -github_username: "anonyland" blog: on highlighter_theme: monokai toolbar_priority: @@ -24,12 +19,11 @@ collections: information: output: true exclude: -# - Gemfile + - Gemfile - Gemfile.lock plugins: - jekyll-feed - jekyll-seo-tag - - jekyll-sitemap feed: collections: - changelog @@ -40,7 +34,4 @@ markdown: kramdown highlighter: rouge kramdown: input: GFM - syntax_highlighter: rouge -sass: - sass_dir: _sass - style: compressed \ No newline at end of file + syntax_highlighter: rouge \ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html index e0256ab..07536d6 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -19,12 +19,14 @@ - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/_includes/links.html b/_includes/links.html index 32a7cf6..8649666 100644 --- a/_includes/links.html +++ b/_includes/links.html @@ -1,3 +1,4 @@ + {% if site.github_username != null %} diff --git a/_information/Collections.md b/_information/Collections.md index f3da7fb..d1329fb 100644 --- a/_information/Collections.md +++ b/_information/Collections.md @@ -5,27 +5,10 @@ title: Collections permalink: /collections --- -
-

Various pages on miscellaneous information and topics.

-
+## Information Pages -
- -## [Information](./information) - -A collection of links, articles, resources and more. - -
- ---- - -## [Qubes OS](./qubes) - -A collection of QubesOS related content. - -
- - -[dvm-zulucrypt](./qubes/dvm-zulucrypt) - Notes on how to setup a disposable zulucrypt instance for USB devices. - -[kicksecure-sys-dns](./qubes/kicksecure-sys-dns) - Notes on how to setup a hardened dnscrypt proxy \ No newline at end of file +- [Information](./information) +- [GrapheneOS](./graphene) +- [F-Droid](./f-droid) +- [Matrix](./matrix) +- [Qubes OS](./qubes) \ No newline at end of file diff --git a/_information/Information.md b/_information/Information.md index e09bbc9..481ae58 100644 --- a/_information/Information.md +++ b/_information/Information.md @@ -5,12 +5,7 @@ title: Information permalink: /information --- -
-

-A collection of links, articles, resources and more. -

-
- +A collection of links, articles, resources and more. [](https://anonymousland.org/feed/information.xml)
@@ -67,8 +62,6 @@ Articles and stories related to technology, security or privacy A place for related various communities & media -- [Hackliberty](https://hackliberty.org)
- - [PrivacyGuides](https://privacyguides.org) - [Privsec](https://privsec.dev) @@ -108,8 +101,6 @@ A list of interesting projects For research-based articles -- [Machine Generated Text: A Comprehensive Survey of Threat Models and Detection Methods](https://arxiv.org/pdf/2210.07321.pdf) - - [Practically-exploitable Cryptographic Vulnerabilities in Matrix](https://nebuchadnezzar-megolm.github.io/) - [Memetic Warfare](https://www.academia.edu/43534914/Memetic_Warfare_The_Future_of_War) diff --git a/_information/Qubes-OS.md b/_information/Qubes-OS.md index 7bd8c65..877fb59 100644 --- a/_information/Qubes-OS.md +++ b/_information/Qubes-OS.md @@ -1,6 +1,6 @@ --- layout: default1 -description: A page containing various information related to QubesOS +description: For Qubes OS title: Qubes OS permalink: /qubes --- @@ -54,10 +54,6 @@ Website: [https://qubes-os.org](https://qubes-os.org) as they do not collect any personal information, and they are well-known for their strong privacy. -While Njalla is a fantastic privacy-respecting service, their VPS plans are lacking. -For hosting a simple web server or private service, this should be sufficient, but the idea here is that we have separate providers for our VPS and our domain. - -For the actual server, you can use [1984](https://1984.is/) or the listed options below: - -- [BitHost](https://bithost.io/) - -- [Privex](https://www.privex.io/) - -
- ---- - -### **Power Analysis** - -*"Power analysis is a form of side channel attack in which the attacker studies the power consumption of a cryptographic hardware device. These attacks rely on basic physical properties of the device: semiconductor devices are governed by the laws of physics, which dictate that changes in voltages within the device require very small movements of electric charges (currents). By measuring those currents, it is possible to learn a small amount of information about the data being manipulated."* - -
- -This is an advanced attack which requires equipment and the technical skill to sucessfully operate such an attack. - -Several ways to prevent such an attack is a method known as [blinding](https://wikiless.org/wiki/Blinding_(cryptography)). - -To take certain precautions, it's advisable to unplug and power off all devices not currently in-use. -It *may* be possible to bypass / increase the difficulty of this sort of attack by utilizing a system of UPS's. - -
- ---- - ## TLDR Don't use the internet. diff --git a/_pages/Services.md b/_items/Services.md similarity index 69% rename from _pages/Services.md rename to _items/Services.md index 4c72a5a..6635465 100644 --- a/_pages/Services.md +++ b/_items/Services.md @@ -9,29 +9,8 @@ permalink: /services “There are too many of us, he thought. There are billions of us and that's too many. Nobody knows anyone. Strangers come and violate you. Strangers come and cut your heart out. Strangers come and take your blood. Good God, who were those men? I never saw them before in my life!” -
-
- -
- -
- -
-
- ## __Services__ -**Due to recent incidents with our Njalla VPS, some of our services will be offline.** - These services are publicly available and free to use. Services are hosted in __Sweden__ and / or __Iceland__. @@ -76,9 +55,7 @@ Your account *can* be suspended if you take part in any sort of malicious activi - `bcrypt_rounds` is set to `16` -- `MSC2285` is enabled. - -- Rooms with 0 members are purged every 24 hours. +- `MSC2285` is enabled The following nginx headers are set: @@ -104,26 +81,23 @@ Additional services are hosted with [Njalla](https://njal.la/about/).
-### __Tor__ - -We host a Tor [exit node](https://metrics.torproject.org/rs.html#details/800F6AB9506498F7FE80BFF204B9F33571297636) - -
- ### __Matrix__ The Matrix homeserver is located at `https://matrix.anonymousland.org` -Registration is done via [Element](https://element.anonymousland.org) or any other client of your choice. +Registration is done via the [registration page](https://matrix.anonymousland.org/register) + +Incidents: `1` ### __Clients__ - [Cinny](https://cinny.anonymousland.org) - [Element](https://element.anonymousland.org) -- [Schild](https://schild.anonymousland.org) +- [Schild](https://schild.anonymousland.org) +
@@ -170,21 +144,8 @@ and requires an email address for sign-up.
-### __OTS__ - -*ots is a one-time-secret sharing platform. The secret is encrypted with a symmetric 256bit AES encryption in the browser before being sent to the server. Afterwards an URL containing the ID of the secret and the password is generated. The password is never sent to the server so the server will never be able to decrypt the secrets it delivers with a reasonable effort. Also the secret is immediately deleted on the first read.* - -OneTimeSecret instance located at: - -[OTS](https://ots.anonymousland.org) - -
- ## __Additional Services__ - [Dimension](https://dimension.anonymousland.org) - -- [Paste](https://paste.anonymousland.org) - - +- [OTS](https://ots.anonymousland.org) +- [Paste](https://paste.anonymousland.org) \ No newline at end of file diff --git a/_items/2-Tools.md b/_items/Tools.md similarity index 95% rename from _items/2-Tools.md rename to _items/Tools.md index a61396b..7a935fe 100644 --- a/_items/2-Tools.md +++ b/_items/Tools.md @@ -30,7 +30,6 @@ This is up to you to decide which services if any you decide to use and how to u \>> [File Sharing](#file-sharing)
\>> [Frontends & Social Media](#frontends--social-media)
\>> [Email Providers](#email-providers)
-->> [Plausible Deniability](#plausible-deniability)
\>> [Messengers](#messengers)
\>> [Operating System](#operating-system)
\>> [Password Managers](#password-managers)
@@ -44,7 +43,6 @@ Multi-factor authentication is extremely important as it provides multiple layer - [Aegis](https://github.com/beemdevelopment/Aegis) (Mobile) - [NitroKey](https://www.nitrokey.com/) (Hardware) -- [Tkey](https://www.tillitis.se/) (Hardware) - [YubiKey](https://www.yubico.com/) (Hardware)
@@ -62,7 +60,6 @@ Your browser contains everything you do. It is the main entry point onto your system, along with the main privacy & security risk. - [Tor Browser](https://torproject.org) -- [Mullvad Browser](https://mullvad.net/en/browser) - [Librewolf](https://librewolf.net/) - [Vanadium](https://vanadium.app) (Mobile) - [Bromite](https://bromite.org) (Mobile) @@ -132,7 +129,6 @@ Sharing files can often times be difficult task. These are some applications that can securely share files. - [OnionShare](https://onionshare.org) -- [Proton Drive](https://drive.proton.me) - [Syncthing](https://syncthing.net)
@@ -197,13 +193,6 @@ This is extremely useful especially if you are worried about your email being le
-### __Plausible Deniability__ - -Tools to help with plausible deniability - -- [HiddenVM](https://github.com/aforensics/HiddenVM) -- [Veracrypt](https://veracrypt.fr/en/Plausible%20Deniability.html) - ### __Messengers__ Your messages must be secure as they reveal a lot about you. diff --git a/_items/Transparency.md b/_items/Transparency.md new file mode 100644 index 0000000..caea588 --- /dev/null +++ b/_items/Transparency.md @@ -0,0 +1,50 @@ +--- +layout: default1 +title: Transparency +permalink: /transparency +--- + +
+

“We do not merely destroy our enemies; we change them"

+
+ +## Servers + +Total Cost: €139/month + +Public Services: + +- Matrix Clearnet +- Matrix Onion +- Element Clearnet +- Element Onion +- Element Onion +- Cinny Clearnet +- Cinny Onion +- Schild Clearnet +- Dimension Clearnet +- Gitea Clearnet +- Mastodon Clearnet +- Status Clearnet +- OTS Clearnet +- Paste Clearnet + +
+ +#### Matrix Clearnet + +`media_store` : 31.6 GiB + +`DB` : 47GB + +**1984** + +Total Price: €49/month + +
+ +#### Other Services + +**Njalla** + +Total Price: €90/month \ No newline at end of file diff --git a/_layouts/default1.html b/_layouts/default1.html index 4457503..6170ae6 100644 --- a/_layouts/default1.html +++ b/_layouts/default1.html @@ -1,7 +1,7 @@ --- --- - + {% seo %} {% include head.html %} @@ -64,6 +64,21 @@ {% endif %} + {% if site.blog == true %} +
+ +

Recent Posts:

+
+ +
+ {% endif %} diff --git a/_pages/Propagation.md b/_pages/Propagation.md index 3c619be..89a5dea 100644 --- a/_pages/Propagation.md +++ b/_pages/Propagation.md @@ -9,16 +9,11 @@ permalink: /propagate
-
- -## Orbot - - -
## Hosting Ideas + - [Awesome Self Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted) - [Mailcow](https://github.com/mailcow/mailcow-dockerized) diff --git a/_pages/Transparency.md b/_pages/Transparency.md deleted file mode 100644 index aefd8aa..0000000 --- a/_pages/Transparency.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default1 -title: Transparency -permalink: /transparency ---- - -
-

“We do not merely destroy our enemies; we change them"

-
- -
- -## Servers - -As of now, we are currently only running a web server. \ No newline at end of file diff --git a/_posts/2022-12-28-General-Update.md b/_posts/2022-12-28-General-Update.md deleted file mode 100644 index 59f2586..0000000 --- a/_posts/2022-12-28-General-Update.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: post -title: "General Update" -date: 2022-11-24 -categories: blog -layout: post ---- - -Greetings, it is time for a general update on our services and various things that have been happening. -A general look at some of our newer services: - -- [Mastodon](https://mastodon.anonymousland.org) -- [Schild](https://schild.anonymousland.org) -- [OTS](https://ots.anonymousland.org) -- [Paste](https://paste.anonymousland.org) - -Not to mention our [Matrix](https://element.anonymousland.org) server and our [Onion Matrix](http://ps3364wgpvq46iumfm7wcewr3qxymtnd2fo753gvngzbumir7wyrlvad.onion/), with Synapse being located at: ``http://7pdtdadfcjvntnbip764d5sc35d2s7hhdkbbie5hy7njovea4534vxqd.onion/``. - -We've also added a [Transparency](./transparency) page to give a brief overview of our servers and services. - -We've removed the auto-join feature for increased privacy on our Matrix instance. -Come join the community in our [lounge](https://matrix.to/#/#lounge:anonymousland.org). - -We are always looking for contributors, you can contribute to our main site at [https://git.anonymousland.org/anonymousland](https://git.anonymousland.org/anonymousland/anonymousland) . \ No newline at end of file diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..d090654 --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,150 @@ +// Custom SCSS +// General + +body { + background: linear-gradient($body-bg-header 10%, $body-bg 100%); + background-repeat: no-repeat; + background-attachment: fixed; + height: 100%; + width: 100%; + overflow-x: hidden; + text-shadow: 0 0 0.01em $shadow-color; +} + +a { + cursor: pointer; +} + +blockquote { + border-color: $gray; + border-width: 0 0 0 0.2em; + border-style: solid; +} + +h1 { + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +h1 a, +h1 a:hover { + color: $brand-primary; +} + + +h1, +h2, +h3, +h4, +h5, +h6 { + color: $brand-danger; + text-decoration-color: $brand-danger; + border-bottom-color: $brand-danger; +} + +#background-div, +#background-svg { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 0; +} + +#title { + margin-top: 0; +} + +// Social media hover colors colors +$icon-shadow: 0.1em; +$icons-list: github facebook twitter linkedin envelope; +$icons-colors: $github-color $facebook-color $twitter-color $linkedin-color $envelope-color; +@for $i from 1 through length($icons-list) { + .fa-#{nth($icons-list, $i)}:hover { + text-shadow: 0 0 $icon-shadow #{nth($icons-colors, $i)}; + } +} + +.bgColor1 { + stop-color: $bg-color1; +} + +.bgColor2 { + stop-color: $bg-color2; +} + +.page-footer { + margin-top: 8em; + + center div div a i { + color: $gray !important; + } +} + +.navbar-toggle:hover { + background-color: transparent !important; +} + +.navbar-icon:hover { + text-shadow: 0 0 $icon-shadow lighten($brand-primary, 20%); + color: $brand-primary !important; +} + +.navbar-icon { + color: $brand-primary !important; +} + +.navbar { + background-color: $navbar-bg; + transition: background-color 0.25s ease-in-out; + -webkit-transition: background-color 0.25s ease-in-out; +} + +nav:hover { + background-color: $navbar-default-bg; +} + +.post-title { + color: $brand-primary; +} + +.blog-post { + margin-bottom: 5em; +} + +$avatar-size: 10em; +.avatar-image { + height: auto; + width: auto; + max-height: $avatar-size; + max-width: $avatar-size; + border-radius: $avatar-size; + border-style: solid; + border-width: medium; + border-color: $gray-light; +} + +.avatar-description { + color: $gray-light; +} + +.hide { + display: none; +} + +.h1-overlay { + background: $h1-bg; + position: absolute; + width: 100%; + z-index: -1; + padding: 1em; +} + +.right-links { + a i { + font-size: 1.5em; + color: $gray !important; + } +} diff --git a/_sass/_bootstrap.scss b/_sass/_bootstrap.scss new file mode 100644 index 0000000..e72d1de --- /dev/null +++ b/_sass/_bootstrap.scss @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/_sass/_variables-dark.scss b/_sass/_variables-dark.scss new file mode 100644 index 0000000..bf72660 --- /dev/null +++ b/_sass/_variables-dark.scss @@ -0,0 +1,871 @@ +// +// Variables +// -------------------------------------------------- + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000; +$gray-darker: lighten($gray-base, 13.5%); // #222 +$gray-darker-hover: darken($gray-darker, 5%); +$gray-dark: lighten($gray-base, 20%); // #333 +$gray: lighten($gray-base, 33.5%); // #555 +$gray-light: lighten($gray-base, 46.7%); // #777 +$gray-lighter: lighten($gray-base, 82.5%); +$gray-white: lighten($gray-base, 100%); // #fff + +$brand-primary: #1F7F1F; +$brand-success: #3F7F3F; +$brand-info: #3F7F7F; +$brand-warning: #7F6F3F; +$brand-danger: #7F3F3F; + +// Icons colors +$github-color: #666; +$facebook-color: #3b5998; +$twitter-color: #326ada; +$linkedin-color: #0077b5; +$envelope-color: #c71610; + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg-header: $gray-base; +$body-bg: darken(desaturate($brand-primary, 50%), 15%); + +//** Global text color on ``. +$text-color: $gray-lighter; +$shadow-color: currentColor; +$h1-bg: rgba($body-bg-header, 0.2); +$bg-color1: $brand-primary; +$bg-color2: $brand-danger; + +//** Global textual link color. +$link-color: lighten($brand-primary, 15%); +//** Link hover color set via `darken()` function. +$link-hover-color: $link-color; +//** Link hover decoration. +$link-hover-decoration: underline; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: "Source Code Pro", Helvetica, Arial, sans-serif; +$font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   "Source Code Pro", Menlo, Monaco, Consolas, "Courier New", monospace;
+$font-family-base:        $font-family-monospace;
+
+$font-size-base:          15px;
+$font-size-large:         ceil(($font-size-base * 1.25)); // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)); // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)); // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)); // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)); // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)); // ~18px
+$font-size-h5:            $font-size-base;
+$font-size-h6:            ceil(($font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+$headings-font-family:    inherit;
+$headings-font-weight:    500;
+$headings-line-height:    1.1;
+$headings-color:          inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path:          "../fonts/";
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     6px;
+$padding-base-horizontal:   12px;
+
+$padding-large-vertical:    10px;
+$padding-large-horizontal:  16px;
+
+$padding-small-vertical:    5px;
+$padding-small-horizontal:  10px;
+
+$padding-xs-vertical:       1px;
+$padding-xs-horizontal:     5px;
+
+$line-height-large:         1.33;
+$line-height-small:         1.5;
+
+$border-radius-base:        4px;
+$border-radius-large:       6px;
+$border-radius-small:       3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    $gray-darker;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $gray-darker;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+$caret-width-base:          4px;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+$table-cell-padding:            8px;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               $gray-dark;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray-darker-hover;
+$table-bg-active:               $table-bg-hover;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal;
+
+$btn-default-color:              $gray-lighter;
+$btn-default-bg:                 $gray-dark;
+$btn-default-border:             darken($btn-default-bg, 5%);
+
+$btn-primary-color:              $gray-lighter;
+$btn-primary-bg:                 $brand-primary;
+$btn-primary-border:             darken($btn-primary-bg, 5%);
+
+$btn-success-color:              $gray-lighter;
+$btn-success-bg:                 $brand-success;
+$btn-success-border:             darken($btn-success-bg, 5%);
+
+$btn-info-color:                 $gray-lighter;
+$btn-info-bg:                    $brand-info;
+$btn-info-border:                darken($btn-info-bg, 5%);
+
+$btn-warning-color:              $gray-lighter;
+$btn-warning-bg:                 $brand-warning;
+$btn-warning-border:             darken($btn-warning-bg, 5%);
+
+$btn-danger-color:               $gray-lighter;
+$btn-danger-bg:                  $brand-danger;
+$btn-danger-border:              darken($btn-danger-bg, 5%);
+
+$btn-link-disabled-color:        $gray-light;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+$input-bg:                       $gray-dark;
+//** `` background color
+$input-bg-disabled:              $gray;
+
+//** Text color for ``s
+$input-color:                    $gray-lighter;
+//** `` border color
+$input-border:                   $gray;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+$input-border-radius:            $border-radius-base;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small;
+
+//** Border color for inputs on focus
+$input-border-focus:             $brand-primary;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);
+
+$legend-color:                   $gray-dark;
+$legend-border-color:            $brand-primary;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-dark;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-darker;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       $gray-darker;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-dark;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $brand-primary;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($dropdown-link-color, 5%);
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $gray-darker-hover;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-darker;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           $gray-base;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000;
+$zindex-dropdown:          1000;
+$zindex-popover:           1060;
+$zindex-tooltip:           1070;
+$zindex-navbar-fixed:      1030;
+$zindex-modal:             1040;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px;
+$screen-sm-min:              $screen-sm;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px;
+$screen-md-min:              $screen-md;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px;
+$screen-lg-min:              $screen-lg;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1);
+$screen-sm-max:              ($screen-md-min - 1);
+$screen-md-max:              ($screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width);
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width);
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width);
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px;
+$navbar-margin-bottom:             $line-height-computed;
+$navbar-border-radius:             $border-radius-base;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2));
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2);
+$navbar-collapse-max-height:       340px;
+
+$navbar-default-color:             $gray-light;
+$navbar-default-bg:                $gray-base;
+$navbar-bg:                        rgba($body-bg-header, 0.7);
+$navbar-default-border:            transparent;
+
+// Navbar links
+$navbar-default-link-color:                $brand-primary;
+$navbar-default-link-hover-color:          $gray-light;
+$navbar-default-link-hover-bg:             opacity(0.5);
+$navbar-default-link-active-color:         $gray-light;
+$navbar-default-link-active-bg:            $gray-darker;
+$navbar-default-link-disabled-color:       $gray;
+$navbar-default-link-disabled-bg:          transparent;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color;
+$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%);
+$navbar-default-brand-hover-bg:            transparent;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd;
+$navbar-default-toggle-icon-bar-bg:        #888;
+$navbar-default-toggle-border-color:       transparent;
+
+
+// Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($gray-light, 15%);
+$navbar-inverse-bg:                         #222;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($gray-light, 15%);
+$navbar-inverse-link-hover-color:           #fff;
+$navbar-inverse-link-hover-bg:              transparent;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%);
+$navbar-inverse-link-disabled-color:        #444;
+$navbar-inverse-link-disabled-bg:           transparent;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color;
+$navbar-inverse-brand-hover-color:          #fff;
+$navbar-inverse-brand-hover-bg:             transparent;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333;
+$navbar-inverse-toggle-icon-bar-bg:         #fff;
+$navbar-inverse-toggle-border-color:        #333;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px;
+$nav-link-hover-bg:                         $gray-darker-hover;
+
+$nav-disabled-link-color:                   $gray-light;
+$nav-disabled-link-hover-color:             $gray-light;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray;
+
+$nav-tabs-link-hover-border-color:          $gray;
+
+$nav-tabs-active-link-hover-bg:             $body-bg;
+$nav-tabs-active-link-hover-color:          $gray;
+$nav-tabs-active-link-hover-border-color:   $gray;
+
+$nav-tabs-justified-link-border-color:            $gray;
+$nav-tabs-justified-active-link-border-color:     $body-bg;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base;
+$nav-pills-active-link-hover-bg:            $component-active-bg;
+$nav-pills-active-link-hover-color:         $component-active-color;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color;
+$pagination-bg:                        $gray-darker;
+$pagination-border:                    $gray;
+
+$pagination-hover-color:               $link-hover-color;
+$pagination-hover-bg:                  $gray-darker-hover;
+$pagination-hover-border:              $gray;
+
+$pagination-active-color:              $gray-lighter;
+$pagination-active-bg:                 $brand-primary;
+$pagination-active-border:             $brand-primary;
+
+$pagination-disabled-color:            $gray-light;
+$pagination-disabled-bg:               $gray-dark;
+$pagination-disabled-border:           $gray;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg;
+$pager-border:                         $pagination-border;
+$pager-border-radius:                  15px;
+
+$pager-hover-bg:                       $pagination-hover-bg;
+
+$pager-active-bg:                      $pagination-active-bg;
+$pager-active-color:                   $pagination-active-color;
+
+$pager-disabled-color:                 $pagination-disabled-color;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px;
+$jumbotron-color:                inherit;
+$jumbotron-bg:                   $gray-darker-hover;
+$jumbotron-heading-color:        inherit;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             lighten($brand-success, 50%);
+$state-success-bg:               $brand-success;
+// $state-success-border:           darken(spin($state-success-bg, -10), 5%);
+
+$state-info-text:                lighten($brand-info, 50%);
+$state-info-bg:                  $brand-info;
+// $state-info-border:              darken(spin($state-info-bg, -10), 7%);
+
+$state-warning-text:             lighten($brand-warning, 50%);
+$state-warning-bg:               $brand-warning;
+// $state-warning-border:           darken(spin($state-warning-bg, -10), 5%);
+
+$state-danger-text:              lighten($brand-danger, 50%);
+$state-danger-bg:                $brand-danger;
+// $state-danger-border:            darken(spin($state-danger-bg, -10), 5%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px;
+//** Tooltip text color
+$tooltip-color:               #fff;
+//** Tooltip background color
+$tooltip-bg:                  #000;
+$tooltip-opacity:             .9;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff;
+//** Popover maximum width
+$popover-max-width:                   276px;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2);
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%);
+
+//** Popover arrow width
+$popover-arrow-width:                 10px;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1);
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%);
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light;
+//** Primary label background color
+$label-primary-bg:            $brand-primary;
+//** Success label background color
+$label-success-bg:            $brand-success;
+//** Info label background color
+$label-info-bg:               $brand-info;
+//** Warning label background color
+$label-warning-bg:            $brand-warning;
+//** Danger label background color
+$label-danger-bg:             $brand-danger;
+
+//** Default label text color
+$label-color:                 #fff;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color;
+
+$modal-lg:                    900px;
+$modal-md:                    600px;
+$modal-sm:                    300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px;
+$alert-border-radius:         $border-radius-base;
+$alert-link-font-weight:      bold;
+
+// $alert-success-bg:            $state-success-bg;
+// $alert-success-text:          $state-success-text;
+// $alert-success-border:        $state-success-border;
+//
+// $alert-info-bg:               $state-info-bg;
+// $alert-info-text:             $state-info-text;
+// $alert-info-border:           $state-info-border;
+//
+// $alert-warning-bg:            $state-warning-bg;
+// $alert-warning-text:          $state-warning-text;
+// $alert-warning-border:        $state-warning-border;
+//
+// $alert-danger-bg:             $state-danger-bg;
+// $alert-danger-text:           $state-danger-text;
+// $alert-danger-border:         $state-danger-border;
+//
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-darker-hover;
+//** Progress bar text color
+$progress-bar-color:          $gray-lighter;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 $gray-darker;
+//** `.list-group-item` border color
+$list-group-border:             $gray;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           $gray-darker-hover;
+//** Text color of active list items
+$list-group-active-color:       $gray-light;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%);
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color;
+
+$list-group-link-color:         $gray-light;
+$list-group-link-hover-color:   $list-group-link-color;
+$list-group-link-heading-color: $gray-light;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    $gray-darker;
+$panel-body-padding:          15px;
+$panel-heading-padding:       10px 15px;
+$panel-footer-padding:        $panel-heading-padding;
+$panel-border-radius:         $border-radius-base;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray;
+$panel-footer-bg:             $gray-darker-hover;
+
+$panel-default-text:          $gray-light;
+$panel-default-border:        $gray;
+$panel-default-heading-bg:    $gray-darker-hover;
+
+$panel-primary-text:          $gray-lighter;
+$panel-primary-border:        $brand-primary;
+$panel-primary-heading-bg:    $brand-primary;
+
+$panel-success-text:          $state-success-text;
+// $panel-success-border:        $state-success-border;
+$panel-success-heading-bg:    $state-success-bg;
+
+$panel-info-text:             $state-info-text;
+// $panel-info-border:           $state-info-border;
+$panel-info-heading-bg:       $state-info-bg;
+
+$panel-warning-text:          $state-warning-text;
+// $panel-warning-border:        $state-warning-border;
+$panel-warning-heading-bg:    $state-warning-bg;
+
+$panel-danger-text:           $state-danger-text;
+// $panel-danger-border:         $state-danger-border;
+$panel-danger-heading-bg:     $state-danger-bg;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg;
+//** Thumbnail border color
+$thumbnail-border:            $gray;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $gray-darker;
+$well-border:                 $gray;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 $gray-darker;
+//** Linked badge text color on hover
+$badge-link-hover-color:      $gray-darker-hover;
+$badge-bg:                    $gray-light;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color;
+//** Badge background color in active nav link
+$badge-active-bg:             $gray-darker;
+
+$badge-font-weight:           bold;
+$badge-line-height:           1;
+$badge-border-radius:         10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px;
+$breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-darker;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/";
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
+
+$carousel-control-color:                      #fff;
+$carousel-control-width:                      15%;
+$carousel-control-opacity:                    .5;
+$carousel-control-font-size:                  20px;
+
+$carousel-indicator-active-bg:                #fff;
+$carousel-indicator-border-color:             #fff;
+
+$carousel-caption-color:                      #fff;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold;
+$close-color:                 #000;
+$close-text-shadow:           0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+$code-color:                  lighten($brand-danger, 25%);
+$code-bg:                     rgba($text-color, 0.01);
+
+$kbd-color:                   #fff;
+$kbd-bg:                      #333;
+
+$pre-bg:                      #f5f5f5;      // Useless, Overwritten in _base.scss
+$pre-color:                   $gray-dark;   // Useless, Overwritten in _base.scss
+$pre-border-color:            #ccc;
+$pre-scrollable-max-height:   340px;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px;
+//** Text muted color
+$text-muted:                  $gray-light;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light;
+//** Headings small color
+$headings-small-color:        $gray-light;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25);
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter;
+//** Page header border color
+$page-header-border-color:    $gray-lighter;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter;
diff --git a/_sass/_variables-light.scss b/_sass/_variables-light.scss
new file mode 100644
index 0000000..bc57667
--- /dev/null
+++ b/_sass/_variables-light.scss
@@ -0,0 +1,871 @@
+//
+// Variables
+// --------------------------------------------------
+@import "variables-dark";
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              $gray-base;
+$gray-darker:            $gray-darker;
+$gray-darker-hover: 	   $gray-darker-hover;
+$gray-dark:              $gray-dark;
+$gray:                   $gray;
+$gray-light:             $gray-light;
+$gray-lighter:           $gray-lighter;
+$gray-white:             $gray-white;
+
+$brand-primary:         darken($brand-primary, 5%);
+$brand-success:         darken($brand-success, 5%);
+$brand-info:            darken($brand-info, 5%);
+$brand-warning:         darken($brand-warning, 5%);
+$brand-danger:          darken($brand-danger, 5%);
+
+// Icons colors
+$github-color:          #666;
+$facebook-color:        #3b5998;
+$twitter-color:         #326ada;
+$linkedin-color:        #0077b5;
+$envelope-color:        #c71610;
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for ``.
+$body-bg-header:        $gray-white;
+$body-bg:               desaturate(lighten($brand-danger, 60%), 30%);
+
+//** Global text color on ``.
+$text-color:            $gray-darker;
+$shadow-color:          transparent;
+$h1-bg:                 rgba($gray-white, 0.5);
+$bg-color1:             $brand-primary;
+$bg-color2:             $brand-danger;
+
+//** Global textual link color.
+$link-color:            lighten($brand-primary, 15%);
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color;
+//** Link hover decoration.
+$link-hover-decoration: underline;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Source Code Pro", Helvetica, Arial, sans-serif;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif;
+//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   "Source Code Pro", Menlo, Monaco, Consolas, "Courier New", monospace;
+$font-family-base:        $font-family-monospace;
+
+$font-size-base:          15px;
+$font-size-large:         ceil(($font-size-base * 1.25)); // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)); // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)); // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)); // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)); // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)); // ~18px
+$font-size-h5:            $font-size-base;
+$font-size-h6:            ceil(($font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+$headings-font-family:    inherit;
+$headings-font-weight:    500;
+$headings-line-height:    1.1;
+$headings-color:          inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path:          "../fonts/";
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     6px;
+$padding-base-horizontal:   12px;
+
+$padding-large-vertical:    10px;
+$padding-large-horizontal:  16px;
+
+$padding-small-vertical:    5px;
+$padding-small-horizontal:  10px;
+
+$padding-xs-vertical:       1px;
+$padding-xs-horizontal:     5px;
+
+$line-height-large:         1.33;
+$line-height-small:         1.5;
+
+$border-radius-base:        4px;
+$border-radius-large:       6px;
+$border-radius-small:       3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    $gray-light;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $gray-light;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+$caret-width-base:          4px;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+$table-cell-padding:            8px;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               lighten($gray-lighter, 10%);
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray-lighter;
+$table-bg-active:               $table-bg-hover;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal;
+
+$btn-default-color:              $gray-white;
+$btn-default-bg:                 $gray-dark;
+$btn-default-border:             darken($btn-default-bg, 5%);
+
+$btn-primary-color:              $gray-white;
+$btn-primary-bg:                 $brand-primary;
+$btn-primary-border:             darken($btn-primary-bg, 5%);
+
+$btn-success-color:              $gray-white;
+$btn-success-bg:                 $brand-success;
+$btn-success-border:             darken($btn-success-bg, 5%);
+
+$btn-info-color:                 $gray-white;
+$btn-info-bg:                    $brand-info;
+$btn-info-border:                darken($btn-info-bg, 5%);
+
+$btn-warning-color:              $gray-white;
+$btn-warning-bg:                 $brand-warning;
+$btn-warning-border:             darken($btn-warning-bg, 5%);
+
+$btn-danger-color:               $gray-white;
+$btn-danger-bg:                  $brand-danger;
+$btn-danger-border:              darken($btn-danger-bg, 5%);
+
+$btn-link-disabled-color:        $gray-light;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+$input-bg:                       $gray-dark;
+//** `` background color
+$input-bg-disabled:              $gray;
+
+//** Text color for ``s
+$input-color:                    $gray-lighter;
+//** `` border color
+$input-border:                   $gray;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+$input-border-radius:            $border-radius-base;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small;
+
+//** Border color for inputs on focus
+$input-border-focus:             $brand-primary;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);
+
+$legend-color:                   $gray-dark;
+$legend-border-color:            $brand-primary;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-dark;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-white;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       $gray-darker;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-dark;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $brand-primary;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($dropdown-link-color, 5%);
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $gray-lighter;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-darker;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           $gray-base;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000;
+$zindex-dropdown:          1000;
+$zindex-popover:           1060;
+$zindex-tooltip:           1070;
+$zindex-navbar-fixed:      1030;
+$zindex-modal:             1040;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px;
+$screen-sm-min:              $screen-sm;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px;
+$screen-md-min:              $screen-md;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px;
+$screen-lg-min:              $screen-lg;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1);
+$screen-sm-max:              ($screen-md-min - 1);
+$screen-md-max:              ($screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width);
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width);
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width);
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px;
+$navbar-margin-bottom:             $line-height-computed;
+$navbar-border-radius:             $border-radius-base;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2));
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2);
+$navbar-collapse-max-height:       340px;
+
+$navbar-default-color:             $gray-light;
+$navbar-default-bg:                $gray-white;
+$navbar-bg:                        rgba($gray-white, 0.5);
+$navbar-default-border:            transparent;
+
+// Navbar links
+$navbar-default-link-color:                $brand-primary;
+$navbar-default-link-hover-color:          $brand-primary;
+$navbar-default-link-hover-bg:             opacity(0.5);
+$navbar-default-link-active-color:         $gray-darker;
+$navbar-default-link-active-bg:            $gray-light;
+$navbar-default-link-disabled-color:       $gray;
+$navbar-default-link-disabled-bg:          transparent;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color;
+$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%);
+$navbar-default-brand-hover-bg:            transparent;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd;
+$navbar-default-toggle-icon-bar-bg:        #888;
+$navbar-default-toggle-border-color:       transparent;
+
+
+// Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($gray-light, 15%);
+$navbar-inverse-bg:                         #222;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($gray-light, 15%);
+$navbar-inverse-link-hover-color:           #fff;
+$navbar-inverse-link-hover-bg:              transparent;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%);
+$navbar-inverse-link-disabled-color:        #444;
+$navbar-inverse-link-disabled-bg:           transparent;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color;
+$navbar-inverse-brand-hover-color:          #fff;
+$navbar-inverse-brand-hover-bg:             transparent;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333;
+$navbar-inverse-toggle-icon-bar-bg:         #fff;
+$navbar-inverse-toggle-border-color:        #333;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px;
+$nav-link-hover-bg:                         $gray-lighter;
+
+$nav-disabled-link-color:                   $gray-light;
+$nav-disabled-link-hover-color:             $gray-light;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray;
+
+$nav-tabs-link-hover-border-color:          $gray;
+
+$nav-tabs-active-link-hover-bg:             $body-bg;
+$nav-tabs-active-link-hover-color:          $gray;
+$nav-tabs-active-link-hover-border-color:   $gray;
+
+$nav-tabs-justified-link-border-color:            $gray;
+$nav-tabs-justified-active-link-border-color:     $body-bg;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base;
+$nav-pills-active-link-hover-bg:            $component-active-bg;
+$nav-pills-active-link-hover-color:         $component-active-color;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color;
+$pagination-bg:                        $gray-darker;
+$pagination-border:                    $gray;
+
+$pagination-hover-color:               $link-hover-color;
+$pagination-hover-bg:                  $gray-darker-hover;
+$pagination-hover-border:              $gray;
+
+$pagination-active-color:              $gray-lighter;
+$pagination-active-bg:                 $brand-primary;
+$pagination-active-border:             $brand-primary;
+
+$pagination-disabled-color:            $gray-light;
+$pagination-disabled-bg:               $gray-dark;
+$pagination-disabled-border:           $gray;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg;
+$pager-border:                         $pagination-border;
+$pager-border-radius:                  15px;
+
+$pager-hover-bg:                       $pagination-hover-bg;
+
+$pager-active-bg:                      $pagination-active-bg;
+$pager-active-color:                   $pagination-active-color;
+
+$pager-disabled-color:                 $pagination-disabled-color;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px;
+$jumbotron-color:                inherit;
+$jumbotron-bg:                   $gray-lighter;
+$jumbotron-heading-color:        inherit;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             lighten($brand-success, 60%);
+$state-success-bg:               $brand-success;
+// $state-success-border:           darken(spin($state-success-bg, -10), 5%);
+
+$state-info-text:                lighten($brand-info, 60%);
+$state-info-bg:                  $brand-info;
+// $state-info-border:              darken(spin($state-info-bg, -10), 7%);
+
+$state-warning-text:             lighten($brand-warning, 60%);
+$state-warning-bg:               $brand-warning;
+// $state-warning-border:           darken(spin($state-warning-bg, -10), 5%);
+
+$state-danger-text:              lighten($brand-danger, 60%);
+$state-danger-bg:                $brand-danger;
+// $state-danger-border:            darken(spin($state-danger-bg, -10), 5%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px;
+//** Tooltip text color
+$tooltip-color:               #fff;
+//** Tooltip background color
+$tooltip-bg:                  #000;
+$tooltip-opacity:             .9;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff;
+//** Popover maximum width
+$popover-max-width:                   276px;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2);
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%);
+
+//** Popover arrow width
+$popover-arrow-width:                 10px;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1);
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%);
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light;
+//** Primary label background color
+$label-primary-bg:            $brand-primary;
+//** Success label background color
+$label-success-bg:            $brand-success;
+//** Info label background color
+$label-info-bg:               $brand-info;
+//** Warning label background color
+$label-warning-bg:            $brand-warning;
+//** Danger label background color
+$label-danger-bg:             $brand-danger;
+
+//** Default label text color
+$label-color:                 #fff;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color;
+
+$modal-lg:                    900px;
+$modal-md:                    600px;
+$modal-sm:                    300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px;
+$alert-border-radius:         $border-radius-base;
+$alert-link-font-weight:      bold;
+
+// $alert-success-bg:            $state-success-bg;
+// $alert-success-text:          $state-success-text;
+// $alert-success-border:        $state-success-border;
+//
+// $alert-info-bg:               $state-info-bg;
+// $alert-info-text:             $state-info-text;
+// $alert-info-border:           $state-info-border;
+//
+// $alert-warning-bg:            $state-warning-bg;
+// $alert-warning-text:          $state-warning-text;
+// $alert-warning-border:        $state-warning-border;
+//
+// $alert-danger-bg:             $state-danger-bg;
+// $alert-danger-text:           $state-danger-text;
+// $alert-danger-border:         $state-danger-border;
+//
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-lighter;
+//** Progress bar text color
+$progress-bar-color:          $gray-lighter;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 $gray-lighter;
+//** `.list-group-item` border color
+$list-group-border:             $gray;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           $gray-white;
+//** Text color of active list items
+$list-group-active-color:       $gray;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%);
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color;
+
+$list-group-link-color:         $gray-light;
+$list-group-link-hover-color:   $list-group-link-color;
+$list-group-link-heading-color: $gray-light;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    $gray-white;
+$panel-body-padding:          15px;
+$panel-heading-padding:       10px 15px;
+$panel-footer-padding:        $panel-heading-padding;
+$panel-border-radius:         $border-radius-base;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray;
+$panel-footer-bg:             $gray-white;
+
+$panel-default-text:          $gray-light;
+$panel-default-border:        $gray;
+$panel-default-heading-bg:    $gray-white;
+
+$panel-primary-text:          $gray-lighter;
+$panel-primary-border:        $brand-primary;
+$panel-primary-heading-bg:    $brand-primary;
+
+$panel-success-text:          $state-success-text;
+// $panel-success-border:        $state-success-border;
+$panel-success-heading-bg:    $state-success-bg;
+
+$panel-info-text:             $state-info-text;
+// $panel-info-border:           $state-info-border;
+$panel-info-heading-bg:       $state-info-bg;
+
+$panel-warning-text:          $state-warning-text;
+// $panel-warning-border:        $state-warning-border;
+$panel-warning-heading-bg:    $state-warning-bg;
+
+$panel-danger-text:           $state-danger-text;
+// $panel-danger-border:         $state-danger-border;
+$panel-danger-heading-bg:     $state-danger-bg;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg;
+//** Thumbnail border color
+$thumbnail-border:            $gray;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $gray-white;
+$well-border:                 $gray;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 $gray-darker;
+//** Linked badge text color on hover
+$badge-link-hover-color:      $gray-darker-hover;
+$badge-bg:                    $gray-light;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color;
+//** Badge background color in active nav link
+$badge-active-bg:             $gray-darker;
+
+$badge-font-weight:           bold;
+$badge-line-height:           1;
+$badge-border-radius:         10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px;
+$breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-darker;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/";
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
+
+$carousel-control-color:                      #fff;
+$carousel-control-width:                      15%;
+$carousel-control-opacity:                    .5;
+$carousel-control-font-size:                  20px;
+
+$carousel-indicator-active-bg:                #fff;
+$carousel-indicator-border-color:             #fff;
+
+$carousel-caption-color:                      #fff;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold;
+$close-color:                 #000;
+$close-text-shadow:           0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+$code-color:                  lighten($brand-danger, 25%);
+$code-bg:                     rgba($text-color, 0.1);
+
+$kbd-color:                   #fff;
+$kbd-bg:                      #333;
+
+$pre-bg:                      #f5f5f5;      // Useless, Overwritten in _base.scss
+$pre-color:                   $gray-dark;   // Useless, Overwritten in _base.scss
+$pre-border-color:            #ccc;
+$pre-scrollable-max-height:   340px;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px;
+//** Text muted color
+$text-muted:                  $gray-light;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light;
+//** Headings small color
+$headings-small-color:        $gray-light;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25);
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter;
+//** Page header border color
+$page-header-border-color:    $gray-lighter;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter;
diff --git a/_sass/highlight/base16.scss b/_sass/highlight/base16.scss
deleted file mode 100644
index b2a72d5..0000000
--- a/_sass/highlight/base16.scss
+++ /dev/null
@@ -1,176 +0,0 @@
----
----
-
-$color_1: #303030;
-$color_2: #151515;
-$color_3: #505050;
-$color_4: #f4bf75;
-$color_5: #d0d0d0;
-$color_6: #90a959;
-$color_7: #ac4142;
-$color_8: #6a9fb5;
-$color_9: #aa759f;
-$color_10: #d28445;
-$color_11: #75b5aa;
-$color_12: #8f5536;
-$background-color_1: #ac4142;
-$background-color_2: #151515;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	color: $color_1;
-	.w {
-		color: $color_1;
-	}
-	.err {
-		color: $color_2;
-		background-color: $background-color_1;
-	}
-	.c {
-		color: $color_3;
-	}
-	.cd {
-		color: $color_3;
-	}
-	.cm {
-		color: $color_3;
-	}
-	.c1 {
-		color: $color_3;
-	}
-	.cs {
-		color: $color_3;
-	}
-	.cp {
-		color: $color_4;
-	}
-	.nt {
-		color: $color_4;
-	}
-	.o {
-		color: $color_5;
-	}
-	.ow {
-		color: $color_5;
-	}
-	.p {
-		color: $color_5;
-	}
-	.pi {
-		color: $color_5;
-	}
-	.gi {
-		color: $color_6;
-	}
-	.gd {
-		color: $color_7;
-	}
-	.gh {
-		color: $color_8;
-		background-color: $background-color_2;
-		font-weight: bold;
-	}
-	.k {
-		color: $color_9;
-	}
-	.kn {
-		color: $color_9;
-	}
-	.kp {
-		color: $color_9;
-	}
-	.kr {
-		color: $color_9;
-	}
-	.kv {
-		color: $color_9;
-	}
-	.kc {
-		color: $color_10;
-	}
-	.kt {
-		color: $color_10;
-	}
-	.kd {
-		color: $color_10;
-	}
-	.s {
-		color: $color_6;
-	}
-	.sb {
-		color: $color_6;
-	}
-	.sc {
-		color: $color_6;
-	}
-	.sd {
-		color: $color_6;
-	}
-	.s2 {
-		color: $color_6;
-	}
-	.sh {
-		color: $color_6;
-	}
-	.sx {
-		color: $color_6;
-	}
-	.s1 {
-		color: $color_6;
-	}
-	.sr {
-		color: $color_11;
-	}
-	.si {
-		color: $color_12;
-	}
-	.se {
-		color: $color_12;
-	}
-	.nn {
-		color: $color_4;
-	}
-	.nc {
-		color: $color_4;
-	}
-	.no {
-		color: $color_4;
-	}
-	.na {
-		color: $color_8;
-	}
-	.m {
-		color: $color_6;
-	}
-	.mf {
-		color: $color_6;
-	}
-	.mh {
-		color: $color_6;
-	}
-	.mi {
-		color: $color_6;
-	}
-	.il {
-		color: $color_6;
-	}
-	.mo {
-		color: $color_6;
-	}
-	.mb {
-		color: $color_6;
-	}
-	.mx {
-		color: $color_6;
-	}
-	.ss {
-		color: $color_6;
-	}
-}
diff --git a/_sass/highlight/colorful.scss b/_sass/highlight/colorful.scss
deleted file mode 100644
index 39c9f0d..0000000
--- a/_sass/highlight/colorful.scss
+++ /dev/null
@@ -1,284 +0,0 @@
----
----
-
-$color_1: #bbbbbb;
-$color_2: #888;
-$color_3: #579;
-$color_4: #cc0000;
-$color_5: #080;
-$color_6: #038;
-$color_7: #339;
-$color_8: #333;
-$color_9: #000;
-$color_10: #007020;
-$color_11: #06B;
-$color_12: #B06;
-$color_13: #0e84b5;
-$color_14: #F00;
-$color_15: #963;
-$color_16: #33B;
-$color_17: #369;
-$color_18: #d70;
-$color_19: #036;
-$color_20: #970;
-$color_21: #800;
-$color_22: #00C;
-$color_23: #070;
-$color_24: #555;
-$color_25: #04D;
-$color_26: #D42;
-$color_27: #666;
-$color_28: #A60;
-$color_29: #D20;
-$color_30: #60E;
-$color_31: #00D;
-$color_32: #058;
-$color_33: #40E;
-$color_34: #000080;
-$color_35: #800080;
-$color_36: #A00000;
-$color_37: #00A000;
-$color_38: #FF0000;
-$color_39: #c65d09;
-$background-color_1: #000;
-$background-color_2: #fff0f0;
-$background-color_3: #eee;
-$background-color_4: #fff0ff;
-$background-color_5: #FAA;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	color: $color_1;
-	background-color: $background-color_1;
-	.w {
-		color: $color_1;
-		background-color: $background-color_1;
-	}
-	.c {
-		color: $color_2;
-	}
-	.cd {
-		color: $color_2;
-	}
-	.cm {
-		color: $color_2;
-	}
-	.c1 {
-		color: $color_2;
-	}
-	.cp {
-		color: $color_3;
-	}
-	.cs {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.k {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kc {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_6;
-	}
-	.kt {
-		color: $color_7;
-	}
-	.o {
-		color: $color_8;
-	}
-	.ow {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.nb {
-		color: $color_10;
-	}
-	.bp {
-		color: $color_10;
-	}
-	.nf {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.nc {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.nn {
-		color: $color_13;
-		font-weight: bold;
-	}
-	.ne {
-		color: $color_14;
-		font-weight: bold;
-	}
-	.nv {
-		color: $color_15;
-	}
-	.vi {
-		color: $color_16;
-	}
-	.vc {
-		color: $color_17;
-	}
-	.vg {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_19;
-		font-weight: bold;
-	}
-	.nl {
-		color: $color_20;
-		font-weight: bold;
-	}
-	.ni {
-		color: $color_21;
-		font-weight: bold;
-	}
-	.na {
-		color: $color_22;
-	}
-	.nt {
-		color: $color_23;
-	}
-	.nd {
-		color: $color_24;
-		font-weight: bold;
-	}
-	.s {
-		background-color: $background-color_2;
-	}
-	.sb {
-		background-color: $background-color_2;
-	}
-	.s2 {
-		background-color: $background-color_2;
-	}
-	.sh {
-		background-color: $background-color_2;
-	}
-	.s1 {
-		background-color: $background-color_2;
-	}
-	.sc {
-		color: $color_25;
-	}
-	.sd {
-		color: $color_26;
-	}
-	.si {
-		background-color: $background-color_3;
-	}
-	.se {
-		color: $color_27;
-		font-weight: bold;
-	}
-	.sr {
-		color: $color_9;
-		background-color: $background-color_4;
-	}
-	.ss {
-		color: $color_28;
-	}
-	.sx {
-		color: $color_29;
-	}
-	.m {
-		color: $color_30;
-		font-weight: bold;
-	}
-	.mb {
-		color: $color_30;
-		font-weight: bold;
-	}
-	.mx {
-		color: $color_30;
-		font-weight: bold;
-	}
-	.mi {
-		color: $color_31;
-		font-weight: bold;
-	}
-	.il {
-		color: $color_31;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_30;
-		font-weight: bold;
-	}
-	.mh {
-		color: $color_32;
-		font-weight: bold;
-	}
-	.mo {
-		color: $color_33;
-		font-weight: bold;
-	}
-	.gh {
-		color: $color_34;
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_35;
-		font-weight: bold;
-	}
-	.gd {
-		color: $color_36;
-	}
-	.gi {
-		color: $color_37;
-	}
-	.gr {
-		color: $color_38;
-	}
-	.ge {
-		font-style: italic;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gp {
-		color: $color_39;
-		font-weight: bold;
-	}
-	.go {
-		color: $color_2;
-	}
-	.gt {
-		color: $color_25;
-	}
-	.err {
-		color: $color_14;
-		background-color: $background-color_5;
-	}
-}
diff --git a/_sass/highlight/github.scss b/_sass/highlight/github.scss
deleted file mode 100644
index 1305cf9..0000000
--- a/_sass/highlight/github.scss
+++ /dev/null
@@ -1,257 +0,0 @@
----
----
-
-$color_1: #999988;
-$color_2: #999999;
-$color_3: #a61717;
-$color_4: #000000;
-$color_5: #aa0000;
-$color_6: #888888;
-$color_7: #555555;
-$color_8: #aaaaaa;
-$color_9: #445588;
-$color_10: #009999;
-$color_11: #d14;
-$color_12: #009926;
-$color_13: #990073;
-$color_14: #008080;
-$color_15: #0086B3;
-$color_16: #3c5d5d;
-$color_17: #800080;
-$color_18: #990000;
-$color_19: #000080;
-$color_20: #bbbbbb;
-$background-color_1: #e3d2d2;
-$background-color_2: #ffdddd;
-$background-color_3: #ddffdd;
-$background-color_4: #f8f8f8;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	.cm {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_2;
-		font-weight: bold;
-	}
-	.c1 {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cs {
-		color: $color_2;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.c {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_1;
-		font-style: italic;
-	}
-	.err {
-		color: $color_3;
-		background-color: $background-color_1;
-	}
-	.gd {
-		color: $color_4;
-		background-color: $background-color_2;
-	}
-	.ge {
-		color: $color_4;
-		font-style: italic;
-	}
-	.gr {
-		color: $color_5;
-	}
-	.gh {
-		color: $color_2;
-	}
-	.gi {
-		color: $color_4;
-		background-color: $background-color_3;
-	}
-	.go {
-		color: $color_6;
-	}
-	.gp {
-		color: $color_7;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_8;
-	}
-	.gt {
-		color: $color_5;
-	}
-	.kc {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kt {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.k {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_10;
-	}
-	.mh {
-		color: $color_10;
-	}
-	.il {
-		color: $color_10;
-	}
-	.mi {
-		color: $color_10;
-	}
-	.mo {
-		color: $color_10;
-	}
-	.m {
-		color: $color_10;
-	}
-	.mb {
-		color: $color_10;
-	}
-	.mx {
-		color: $color_10;
-	}
-	.sb {
-		color: $color_11;
-	}
-	.sc {
-		color: $color_11;
-	}
-	.sd {
-		color: $color_11;
-	}
-	.s2 {
-		color: $color_11;
-	}
-	.se {
-		color: $color_11;
-	}
-	.sh {
-		color: $color_11;
-	}
-	.si {
-		color: $color_11;
-	}
-	.sx {
-		color: $color_11;
-	}
-	.sr {
-		color: $color_12;
-	}
-	.s1 {
-		color: $color_11;
-	}
-	.ss {
-		color: $color_13;
-	}
-	.s {
-		color: $color_11;
-	}
-	.na {
-		color: $color_14;
-	}
-	.bp {
-		color: $color_2;
-	}
-	.nb {
-		color: $color_15;
-	}
-	.nc {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_14;
-	}
-	.nd {
-		color: $color_16;
-		font-weight: bold;
-	}
-	.ni {
-		color: $color_17;
-	}
-	.ne {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.nf {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.nl {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.nn {
-		color: $color_7;
-	}
-	.nt {
-		color: $color_19;
-	}
-	.vc {
-		color: $color_14;
-	}
-	.vg {
-		color: $color_14;
-	}
-	.vi {
-		color: $color_14;
-	}
-	.nv {
-		color: $color_14;
-	}
-	.ow {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.o {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.w {
-		color: $color_20;
-	}
-	background-color: $background-color_4;
-}
diff --git a/_sass/highlight/gruvbox.scss b/_sass/highlight/gruvbox.scss
deleted file mode 100644
index 6fc1804..0000000
--- a/_sass/highlight/gruvbox.scss
+++ /dev/null
@@ -1,191 +0,0 @@
----
----
-
-$color_1: #fbf1c7;
-$color_2: #fb4934;
-$color_3: #928374;
-$color_4: #8ec07c;
-$color_5: #b8bb26;
-$color_6: #d3869b;
-$color_7: #fabd2f;
-$color_8: #fe8019;
-$color_9: #83a598;
-$background-color_1: #282828;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	color: $color_1;
-	background-color: $background-color_1;
-	.w {
-		color: $color_1;
-		background-color: $background-color_1;
-	}
-	.err {
-		color: $color_2;
-		background-color: $background-color_1;
-		font-weight: bold;
-	}
-	.c {
-		color: $color_3;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_3;
-		font-style: italic;
-	}
-	.cm {
-		color: $color_3;
-		font-style: italic;
-	}
-	.c1 {
-		color: $color_3;
-		font-style: italic;
-	}
-	.cs {
-		color: $color_3;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_4;
-	}
-	.nt {
-		color: $color_2;
-	}
-	.o {
-		color: $color_1;
-	}
-	.ow {
-		color: $color_1;
-	}
-	.p {
-		color: $color_1;
-	}
-	.pi {
-		color: $color_1;
-	}
-	.gi {
-		color: $color_5;
-		background-color: $background-color_1;
-	}
-	.gd {
-		color: $color_2;
-		background-color: $background-color_1;
-	}
-	.gh {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.k {
-		color: $color_2;
-	}
-	.kn {
-		color: $color_2;
-	}
-	.kp {
-		color: $color_2;
-	}
-	.kr {
-		color: $color_2;
-	}
-	.kv {
-		color: $color_2;
-	}
-	.kc {
-		color: $color_6;
-	}
-	.kt {
-		color: $color_7;
-	}
-	.kd {
-		color: $color_8;
-	}
-	.s {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sb {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sc {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sd {
-		color: $color_5;
-		font-style: italic;
-	}
-	.s2 {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sh {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sx {
-		color: $color_5;
-		font-style: italic;
-	}
-	.s1 {
-		color: $color_5;
-		font-style: italic;
-	}
-	.si {
-		color: $color_5;
-		font-style: italic;
-	}
-	.sr {
-		color: $color_5;
-		font-style: italic;
-	}
-	.se {
-		color: $color_8;
-	}
-	.nn {
-		color: $color_4;
-	}
-	.nc {
-		color: $color_4;
-	}
-	.no {
-		color: $color_6;
-	}
-	.na {
-		color: $color_5;
-	}
-	.m {
-		color: $color_6;
-	}
-	.mf {
-		color: $color_6;
-	}
-	.mh {
-		color: $color_6;
-	}
-	.mi {
-		color: $color_6;
-	}
-	.il {
-		color: $color_6;
-	}
-	.mo {
-		color: $color_6;
-	}
-	.mb {
-		color: $color_6;
-	}
-	.mx {
-		color: $color_6;
-	}
-	.ss {
-		color: $color_9;
-	}
-}
diff --git a/_sass/highlight/molokai.scss b/_sass/highlight/molokai.scss
deleted file mode 100644
index e63937b..0000000
--- a/_sass/highlight/molokai.scss
+++ /dev/null
@@ -1,244 +0,0 @@
----
----
-
-$color_1: #5e5d83;
-$color_2: #465457;
-$color_3: #f8f8f2;
-$color_4: #a6e22e;
-$color_5: #f92672;
-$color_6: #1b1d1e;
-$color_7: #403d3d;
-$color_8: #66d9ef;
-$color_9: #af87ff;
-$color_10: #d7d787;
-$background-color_1: #403d3d;
-$background-color_2: #1b1d1e;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	.c {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cm {
-		color: $color_1;
-		font-style: italic;
-	}
-	.c1 {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_2;
-		font-weight: bold;
-	}
-	.cs {
-		color: $color_2;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.err {
-		color: $color_3;
-		background-color: $background-color_1;
-	}
-	.gi {
-		color: $color_4;
-	}
-	.gd {
-		color: $color_5;
-	}
-	.ge {
-		color: $color_6;
-		font-style: italic;
-	}
-	.gr {
-		color: $color_5;
-	}
-	.gt {
-		color: $color_5;
-	}
-	.gh {
-		color: $color_7;
-	}
-	.go {
-		color: $color_7;
-	}
-	.gp {
-		color: $color_8;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_2;
-	}
-	.k {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kc {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kt {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.ow {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.o {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_9;
-	}
-	.mh {
-		color: $color_9;
-	}
-	.il {
-		color: $color_9;
-	}
-	.mi {
-		color: $color_9;
-	}
-	.mo {
-		color: $color_9;
-	}
-	.m {
-		color: $color_9;
-	}
-	.mb {
-		color: $color_9;
-	}
-	.mx {
-		color: $color_9;
-	}
-	.se {
-		color: $color_9;
-	}
-	.sb {
-		color: $color_10;
-	}
-	.sc {
-		color: $color_10;
-	}
-	.sd {
-		color: $color_10;
-	}
-	.s2 {
-		color: $color_10;
-	}
-	.sh {
-		color: $color_10;
-	}
-	.si {
-		color: $color_10;
-	}
-	.sx {
-		color: $color_10;
-	}
-	.sr {
-		color: $color_10;
-	}
-	.s1 {
-		color: $color_10;
-	}
-	.ss {
-		color: $color_10;
-	}
-	.s {
-		color: $color_10;
-	}
-	.na {
-		color: $color_4;
-	}
-	.nc {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.nd {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.ne {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.nf {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_8;
-	}
-	.bp {
-		color: $color_3;
-	}
-	.nb {
-		color: $color_3;
-	}
-	.ni {
-		color: $color_3;
-	}
-	.nn {
-		color: $color_3;
-	}
-	.vc {
-		color: $color_3;
-	}
-	.vg {
-		color: $color_3;
-	}
-	.vi {
-		color: $color_3;
-	}
-	.nv {
-		color: $color_3;
-	}
-	.w {
-		color: $color_3;
-	}
-	.nl {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.nt {
-		color: $color_5;
-	}
-	color: $color_3;
-	background-color: $background-color_2;
-}
diff --git a/_sass/highlight/monokai.scss b/_sass/highlight/monokai.scss
deleted file mode 100644
index f185a01..0000000
--- a/_sass/highlight/monokai.scss
+++ /dev/null
@@ -1,253 +0,0 @@
----
----
-
-$color_1: #75715e;
-$color_2: #960050;
-$color_3: #ffffff;
-$color_4: #000000;
-$color_5: #aa0000;
-$color_6: #999999;
-$color_7: #888888;
-$color_8: #555555;
-$color_9: #aaaaaa;
-$color_10: #66d9ef;
-$color_11: #f92672;
-$color_12: #ae81ff;
-$color_13: #e6db74;
-$color_14: #a6e22e;
-$color_15: #f8f8f2;
-$background-color_1: #1e0010;
-$background-color_2: #324932;
-$background-color_3: #493131;
-$background-color_4: #49483e;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	.c {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cm {
-		color: $color_1;
-		font-style: italic;
-	}
-	.c1 {
-		color: $color_1;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.cs {
-		color: $color_1;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.err {
-		color: $color_2;
-		background-color: $background-color_1;
-	}
-	.gi {
-		color: $color_3;
-		background-color: $background-color_2;
-	}
-	.gd {
-		color: $color_3;
-		background-color: $background-color_3;
-	}
-	.ge {
-		color: $color_4;
-		font-style: italic;
-	}
-	.gr {
-		color: $color_5;
-	}
-	.gt {
-		color: $color_5;
-	}
-	.gh {
-		color: $color_6;
-	}
-	.go {
-		color: $color_7;
-	}
-	.gp {
-		color: $color_8;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_9;
-	}
-	.k {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kc {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kt {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.ow {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.o {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_12;
-	}
-	.mh {
-		color: $color_12;
-	}
-	.il {
-		color: $color_12;
-	}
-	.mi {
-		color: $color_12;
-	}
-	.mo {
-		color: $color_12;
-	}
-	.m {
-		color: $color_12;
-	}
-	.mb {
-		color: $color_12;
-	}
-	.mx {
-		color: $color_12;
-	}
-	.se {
-		color: $color_12;
-	}
-	.sb {
-		color: $color_13;
-	}
-	.sc {
-		color: $color_13;
-	}
-	.sd {
-		color: $color_13;
-	}
-	.s2 {
-		color: $color_13;
-	}
-	.sh {
-		color: $color_13;
-	}
-	.si {
-		color: $color_13;
-	}
-	.sx {
-		color: $color_13;
-	}
-	.sr {
-		color: $color_13;
-	}
-	.s1 {
-		color: $color_13;
-	}
-	.ss {
-		color: $color_13;
-	}
-	.s {
-		color: $color_13;
-	}
-	.na {
-		color: $color_14;
-	}
-	.nc {
-		color: $color_14;
-		font-weight: bold;
-	}
-	.nd {
-		color: $color_14;
-		font-weight: bold;
-	}
-	.ne {
-		color: $color_14;
-		font-weight: bold;
-	}
-	.nf {
-		color: $color_14;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_10;
-	}
-	.bp {
-		color: $color_15;
-	}
-	.nb {
-		color: $color_15;
-	}
-	.ni {
-		color: $color_15;
-	}
-	.nn {
-		color: $color_15;
-	}
-	.vc {
-		color: $color_15;
-	}
-	.vg {
-		color: $color_15;
-	}
-	.vi {
-		color: $color_15;
-	}
-	.nv {
-		color: $color_15;
-	}
-	.w {
-		color: $color_15;
-	}
-	.nl {
-		color: $color_15;
-		font-weight: bold;
-	}
-	.nt {
-		color: $color_11;
-	}
-	color: $color_15;
-	background-color: $background-color_4;
-}
diff --git a/_sass/highlight/pastie.scss b/_sass/highlight/pastie.scss
deleted file mode 100644
index 96c2b92..0000000
--- a/_sass/highlight/pastie.scss
+++ /dev/null
@@ -1,272 +0,0 @@
----
----
-
-$color_1: #888888;
-$color_2: #cc0000;
-$color_3: #a61717;
-$color_4: #aa0000;
-$color_5: #333333;
-$color_6: #666666;
-$color_7: #000000;
-$color_8: #555555;
-$color_9: #008800;
-$color_10: #0000dd;
-$color_11: #dd2200;
-$color_12: #0044dd;
-$color_13: #3333bb;
-$color_14: #22bb22;
-$color_15: #aa6600;
-$color_16: #336699;
-$color_17: #003388;
-$color_18: #bb0066;
-$color_19: #003366;
-$color_20: #0066bb;
-$color_21: #dd7700;
-$color_22: #bbbbbb;
-$background-color_1: #fff0f0;
-$background-color_2: #e3d2d2;
-$background-color_3: #ffdddd;
-$background-color_4: #ddffdd;
-$background-color_5: #f0fff0;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	.c {
-		color: $color_1;
-	}
-	.cd {
-		color: $color_1;
-	}
-	.cm {
-		color: $color_1;
-	}
-	.c1 {
-		color: $color_1;
-	}
-	.cp {
-		color: $color_2;
-		font-weight: bold;
-	}
-	.cs {
-		color: $color_2;
-		background-color: $background-color_1;
-		font-weight: bold;
-	}
-	.err {
-		color: $color_3;
-		background-color: $background-color_2;
-	}
-	.gr {
-		color: $color_4;
-	}
-	.gh {
-		color: $color_5;
-	}
-	.gu {
-		color: $color_6;
-	}
-	.gd {
-		color: $color_7;
-		background-color: $background-color_3;
-	}
-	.gi {
-		color: $color_7;
-		background-color: $background-color_4;
-	}
-	.ge {
-		font-style: italic;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gl {
-		color: $color_1;
-	}
-	.go {
-		color: $color_1;
-	}
-	.gp {
-		color: $color_8;
-	}
-	.gt {
-		color: $color_4;
-	}
-	.k {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kc {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_9;
-	}
-	.kt {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.m {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mh {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mi {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.il {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mo {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mb {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mx {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.s {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.sb {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.sc {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.sd {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.s2 {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.sh {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.s1 {
-		color: $color_11;
-		background-color: $background-color_1;
-	}
-	.se {
-		color: $color_12;
-		background-color: $background-color_1;
-	}
-	.si {
-		color: $color_13;
-		background-color: $background-color_1;
-	}
-	.sx {
-		color: $color_14;
-		background-color: $background-color_5;
-	}
-	.sr {
-		color: $color_9;
-	}
-	.ss {
-		color: $color_15;
-		background-color: $background-color_1;
-	}
-	.na {
-		color: $color_16;
-	}
-	.nb {
-		color: $color_17;
-	}
-	.bp {
-		color: $color_17;
-	}
-	.nc {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_19;
-		font-weight: bold;
-	}
-	.nd {
-		color: $color_8;
-	}
-	.ne {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.nf {
-		color: $color_20;
-		font-weight: bold;
-	}
-	.nl {
-		color: $color_16;
-	}
-	.nn {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.py {
-		color: $color_16;
-		font-weight: bold;
-	}
-	.nt {
-		color: $color_18;
-		font-weight: bold;
-	}
-	.nv {
-		color: $color_16;
-	}
-	.vc {
-		color: $color_16;
-	}
-	.vg {
-		color: $color_21;
-	}
-	.vi {
-		color: $color_13;
-	}
-	.ow {
-		color: $color_9;
-	}
-	.w {
-		color: $color_22;
-	}
-}
diff --git a/_sass/highlight/thankful_eyes.scss b/_sass/highlight/thankful_eyes.scss
deleted file mode 100644
index 5f70011..0000000
--- a/_sass/highlight/thankful_eyes.scss
+++ /dev/null
@@ -1,299 +0,0 @@
----
----
-
-$color_1: #faf6e4;
-$color_2: #dee5e7;
-$color_3: #a8e1fe;
-$color_4: #6c8b9f;
-$color_5: #b2fd6d;
-$color_6: #fefeec;
-$color_7: #cc0000;
-$color_8: #f6dd62;
-$color_9: #4df4ff;
-$color_10: #f696db;
-$color_11: #ffb000;
-$color_12: #fff0a6;
-$color_13: #999999;
-$color_14: #BBBBBB;
-$background-color_1: #122b3b;
-$background-color_2: #4e5d62;
-$background-color_3: #cc0000;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	color: $color_1;
-	background-color: $background-color_1;
-	.gl {
-		color: $color_2;
-		background-color: $background-color_2;
-	}
-	.gp {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.c {
-		color: $color_4;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_4;
-		font-style: italic;
-	}
-	.cm {
-		color: $color_4;
-		font-style: italic;
-	}
-	.c1 {
-		color: $color_4;
-		font-style: italic;
-	}
-	.cs {
-		color: $color_4;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_5;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.err {
-		color: $color_6;
-		background-color: $background-color_3;
-	}
-	.gr {
-		color: $color_7;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.k {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.o {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.ow {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.p {
-		color: $color_9;
-	}
-	.pi {
-		color: $color_9;
-	}
-	.gd {
-		color: $color_7;
-	}
-	.gi {
-		color: $color_5;
-	}
-	.ge {
-		font-style: italic;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gt {
-		color: $color_2;
-		background-color: $background-color_2;
-	}
-	.kc {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.gh {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.kt {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.nc {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.nd {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.nn {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.bp {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.ne {
-		color: $color_5;
-		font-weight: bold;
-	}
-	.nl {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.nt {
-		color: $color_11;
-		font-weight: bold;
-	}
-	.m {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mh {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mi {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.il {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mo {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mb {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.mx {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.ld {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.ss {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.s {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.sb {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.sd {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.s2 {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.sh {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.sx {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.sr {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.s1 {
-		color: $color_12;
-		font-weight: bold;
-	}
-	.se {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sc {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.si {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.nb {
-		font-weight: bold;
-	}
-	.ni {
-		color: $color_13;
-		font-weight: bold;
-	}
-	.w {
-		color: $color_14;
-	}
-	.go {
-		color: $color_14;
-	}
-	.nf {
-		color: $color_3;
-	}
-	.py {
-		color: $color_3;
-	}
-	.na {
-		color: $color_3;
-	}
-	.nv {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vc {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vg {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vi {
-		color: $color_3;
-		font-weight: bold;
-	}
-}
diff --git a/_sass/highlight/tulip.scss b/_sass/highlight/tulip.scss
deleted file mode 100644
index bf3c7a4..0000000
--- a/_sass/highlight/tulip.scss
+++ /dev/null
@@ -1,286 +0,0 @@
----
----
-
-$color_1: #FFFFFF;
-$color_2: #6D6E70;
-$color_3: #41ff5b;
-$color_4: #FFF02A;
-$color_5: #CC0000;
-$color_6: #3FB34F;
-$color_7: #9f93e6;
-$color_8: #FAAF4C;
-$color_9: #fff0a6;
-$color_10: #999999;
-$color_11: #BBBBBB;
-$background-color_1: #231529;
-$background-color_2: #CC0000;
-$background-color_3: #766DAF;
-
-.highlight {
-	table {
-		td {
-			padding: 5px;
-		}
-		pre {
-			margin: 0;
-		}
-	}
-	color: $color_1;
-	background-color: $background-color_1;
-	.c {
-		color: $color_2;
-		font-style: italic;
-	}
-	.cd {
-		color: $color_2;
-		font-style: italic;
-	}
-	.cm {
-		color: $color_2;
-		font-style: italic;
-	}
-	.c1 {
-		color: $color_2;
-		font-style: italic;
-	}
-	.cs {
-		color: $color_2;
-		font-style: italic;
-	}
-	.cp {
-		color: $color_3;
-		font-weight: bold;
-		font-style: italic;
-	}
-	.err {
-		color: $color_1;
-		background-color: $background-color_2;
-	}
-	.gr {
-		color: $color_1;
-		background-color: $background-color_2;
-	}
-	.k {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kd {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.kv {
-		color: $color_4;
-		font-weight: bold;
-	}
-	.o {
-		color: $color_3;
-	}
-	.ow {
-		color: $color_3;
-	}
-	.p {
-		color: $color_3;
-	}
-	.pi {
-		color: $color_3;
-	}
-	.gd {
-		color: $color_5;
-	}
-	.gi {
-		color: $color_6;
-	}
-	.ge {
-		font-style: italic;
-	}
-	.gs {
-		font-weight: bold;
-	}
-	.gt {
-		color: $color_1;
-		background-color: $background-color_3;
-	}
-	.gl {
-		color: $color_1;
-		background-color: $background-color_3;
-	}
-	.kc {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.kn {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.kp {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.kr {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.gh {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.gu {
-		color: $color_1;
-		font-weight: bold;
-	}
-	.kt {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.no {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.nc {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.nd {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.nn {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.bp {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.ne {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.nl {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.nt {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.m {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mf {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mh {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mi {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.il {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mo {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mb {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.mx {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.ld {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.ss {
-		color: $color_7;
-		font-weight: bold;
-	}
-	.s {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sb {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sd {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.s2 {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sh {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sx {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.sr {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.s1 {
-		color: $color_9;
-		font-weight: bold;
-	}
-	.se {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.sc {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.si {
-		color: $color_8;
-		font-weight: bold;
-	}
-	.nb {
-		font-weight: bold;
-	}
-	.ni {
-		color: $color_10;
-		font-weight: bold;
-	}
-	.w {
-		color: $color_11;
-	}
-	.nf {
-		color: $color_3;
-	}
-	.py {
-		color: $color_3;
-	}
-	.na {
-		color: $color_3;
-	}
-	.nv {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vc {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vg {
-		color: $color_3;
-		font-weight: bold;
-	}
-	.vi {
-		color: $color_3;
-		font-weight: bold;
-	}
-}
diff --git a/_sass/main-dark.scss b/_sass/main-dark.scss
deleted file mode 100644
index 7fd35f7..0000000
--- a/_sass/main-dark.scss
+++ /dev/null
@@ -1,1110 +0,0 @@
----
----
-@charset "UTF-8";
-
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-// Core variables and mixins
-@import "bootstrap/variables";
-@import "bootstrap/mixins";
-
-// Reset and dependencies
-@import "bootstrap/normalize";
-@import "bootstrap/print";
-@import "bootstrap/glyphicons";
-
-// Core CSS
-@import "bootstrap/scaffolding";
-@import "bootstrap/type";
-@import "bootstrap/code";
-@import "bootstrap/grid";
-@import "bootstrap/tables";
-@import "bootstrap/forms";
-@import "bootstrap/buttons";
-
-// Components
-@import "bootstrap/component-animations";
-@import "bootstrap/dropdowns";
-@import "bootstrap/button-groups";
-@import "bootstrap/input-groups";
-@import "bootstrap/navs";
-@import "bootstrap/navbar";
-@import "bootstrap/breadcrumbs";
-@import "bootstrap/pagination";
-@import "bootstrap/pager";
-@import "bootstrap/labels";
-@import "bootstrap/badges";
-@import "bootstrap/jumbotron";
-@import "bootstrap/thumbnails";
-@import "bootstrap/alerts";
-@import "bootstrap/progress-bars";
-@import "bootstrap/media";
-@import "bootstrap/list-group";
-@import "bootstrap/panels";
-@import "bootstrap/responsive-embed";
-@import "bootstrap/wells";
-@import "bootstrap/close";
-
-// Components w/ JavaScript
-@import "bootstrap/modals";
-@import "bootstrap/tooltip";
-@import "bootstrap/popovers";
-@import "bootstrap/carousel";
-
-// Utility classes
-@import "bootstrap/utilities";
-@import "bootstrap/responsive-utilities";
-
-
-//
-// Variables
-// --------------------------------------------------
-
-
-//== Colors
-//
-//## Gray and brand colors for use across Bootstrap.
-
-$gray-base:              #000;
-$gray-darker:            lighten($gray-base, 13.5%); // #222
-$gray-darker-hover: 	   darken($gray-darker, 5%);
-$gray-dark:              lighten($gray-base, 20%);   // #333
-$gray:                   lighten($gray-base, 33.5%); // #555
-$gray-light:             lighten($gray-base, 46.7%); // #777
-$gray-lighter:           lighten($gray-base, 82.5%);
-$gray-white:             lighten($gray-base, 100%); // #fff
-
-$brand-primary:         #1F7F1F;
-$brand-success:         #3F7F3F;
-$brand-info:            #3F7F7F;
-$brand-warning:         #7F6F3F;
-$brand-danger:          #7F3F3F;
-
-// Icons colors
-$github-color:          #666;
-$facebook-color:        #3b5998;
-$twitter-color:         #326ada;
-$linkedin-color:        #0077b5;
-$envelope-color:        #c71610;
-
-//== Scaffolding
-//
-//## Settings for some of the most global styles.
-
-//** Background color for ``.
-$body-bg-header:        $gray-base;
-$body-bg:               darken(desaturate($brand-primary, 50%), 15%);
-
-//** Global text color on ``.
-$text-color:            $gray-lighter;
-$shadow-color:          currentColor;
-$h1-bg:                 rgba($body-bg-header, 0.2);
-$bg-color1:             $brand-primary;
-$bg-color2:             $brand-danger;
-
-//** Global textual link color.
-$link-color:            lighten($brand-primary, 15%);
-//** Link hover color set via `darken()` function.
-$link-hover-color:      $link-color;
-//** Link hover decoration.
-$link-hover-decoration: underline;
-
-
-//== Typography
-//
-//## Font, line-height, and color for body text, headings, and more.
-
-$font-family-sans-serif:  "Source Code Pro", Helvetica, Arial, sans-serif;
-$font-family-serif:       Georgia, "Times New Roman", Times, serif;
-//** Default monospace fonts for ``, ``, and `
`.
-$font-family-monospace:   "Source Code Pro", Menlo, Monaco, Consolas, "Courier New", monospace;
-$font-family-base:        $font-family-monospace;
-
-$font-size-base:          15px;
-$font-size-large:         ceil(($font-size-base * 1.25)); // ~18px
-$font-size-small:         ceil(($font-size-base * 0.85)); // ~12px
-
-$font-size-h1:            floor(($font-size-base * 2.6)); // ~36px
-$font-size-h2:            floor(($font-size-base * 2.15)); // ~30px
-$font-size-h3:            ceil(($font-size-base * 1.7)); // ~24px
-$font-size-h4:            ceil(($font-size-base * 1.25)); // ~18px
-$font-size-h5:            $font-size-base;
-$font-size-h6:            ceil(($font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-$line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-$line-height-computed:    floor(($font-size-base * $line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-$headings-font-family:    inherit;
-$headings-font-weight:    500;
-$headings-line-height:    1.1;
-$headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-$icon-font-path:          "../fonts/";
-//** File name for all font files.
-$icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-$icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-$padding-base-vertical:     6px;
-$padding-base-horizontal:   12px;
-
-$padding-large-vertical:    10px;
-$padding-large-horizontal:  16px;
-
-$padding-small-vertical:    5px;
-$padding-small-horizontal:  10px;
-
-$padding-xs-vertical:       1px;
-$padding-xs-horizontal:     5px;
-
-$line-height-large:         1.33;
-$line-height-small:         1.5;
-
-$border-radius-base:        4px;
-$border-radius-large:       6px;
-$border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-$component-active-color:    $gray-darker;
-//** Global background color for active items (e.g., navs or dropdowns).
-$component-active-bg:       $gray-darker;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-$caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-$caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-$table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-$table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-$table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-$table-bg-accent:               $gray-dark;
-//** Background color used for `.table-hover`.
-$table-bg-hover:                $gray-darker-hover;
-$table-bg-active:               $table-bg-hover;
-
-//** Border color for table and cell borders.
-$table-border-color:            $gray;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-$btn-font-weight:                normal;
-
-$btn-default-color:              $gray-lighter;
-$btn-default-bg:                 $gray-dark;
-$btn-default-border:             darken($btn-default-bg, 5%);
-
-$btn-primary-color:              $gray-lighter;
-$btn-primary-bg:                 $brand-primary;
-$btn-primary-border:             darken($btn-primary-bg, 5%);
-
-$btn-success-color:              $gray-lighter;
-$btn-success-bg:                 $brand-success;
-$btn-success-border:             darken($btn-success-bg, 5%);
-
-$btn-info-color:                 $gray-lighter;
-$btn-info-bg:                    $brand-info;
-$btn-info-border:                darken($btn-info-bg, 5%);
-
-$btn-warning-color:              $gray-lighter;
-$btn-warning-bg:                 $brand-warning;
-$btn-warning-border:             darken($btn-warning-bg, 5%);
-
-$btn-danger-color:               $gray-lighter;
-$btn-danger-bg:                  $brand-danger;
-$btn-danger-border:              darken($btn-danger-bg, 5%);
-
-$btn-link-disabled-color:        $gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-$input-bg:                       $gray-dark;
-//** `` background color
-$input-bg-disabled:              $gray;
-
-//** Text color for ``s
-$input-color:                    $gray-lighter;
-//** `` border color
-$input-border:                   $gray;
-
-// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
-//** Default `.form-control` border radius
-$input-border-radius:            $border-radius-base;
-//** Large `.form-control` border radius
-$input-border-radius-large:      $border-radius-large;
-//** Small `.form-control` border radius
-$input-border-radius-small:      $border-radius-small;
-
-//** Border color for inputs on focus
-$input-border-focus:             $brand-primary;
-
-//** Placeholder text color
-$input-color-placeholder:        $gray-light;
-
-//** Default `.form-control` height
-$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);
-
-$legend-color:                   $gray-dark;
-$legend-border-color:            $brand-primary;
-
-//** Background color for textual input addons
-$input-group-addon-bg:           $gray-dark;
-//** Border color for textual input addons
-$input-group-addon-border-color: $input-border;
-
-//** Disabled cursor for form controls and buttons.
-$cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-$dropdown-bg:                    $gray-darker;
-//** Dropdown menu `border-color`.
-$dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-$dropdown-fallback-border:       $gray-darker;
-//** Divider color for between dropdown items.
-$dropdown-divider-bg:            $gray-dark;
-
-//** Dropdown link text color.
-$dropdown-link-color:            $brand-primary;
-//** Hover color for dropdown links.
-$dropdown-link-hover-color:      darken($dropdown-link-color, 5%);
-//** Hover background for dropdown links.
-$dropdown-link-hover-bg:         $gray-darker-hover;
-
-//** Active dropdown menu item text color.
-$dropdown-link-active-color:     $component-active-color;
-//** Active dropdown menu item background color.
-$dropdown-link-active-bg:        $component-active-bg;
-
-//** Disabled dropdown menu item background color.
-$dropdown-link-disabled-color:   $gray-darker;
-
-//** Text color for headers within dropdown menus.
-$dropdown-header-color:          $gray-light;
-
-//** Deprecated `$dropdown-caret-color` as of v3.1.0
-$dropdown-caret-color:           $gray-base;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-$zindex-navbar:            1000;
-$zindex-dropdown:          1000;
-$zindex-popover:           1060;
-$zindex-tooltip:           1070;
-$zindex-navbar-fixed:      1030;
-$zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `$screen-xs` as of v3.0.1
-$screen-xs:                  480px;
-//** Deprecated `$screen-xs-min` as of v3.2.0
-$screen-xs-min:              $screen-xs;
-//** Deprecated `$screen-phone` as of v3.0.1
-$screen-phone:               $screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `$screen-sm` as of v3.0.1
-$screen-sm:                  768px;
-$screen-sm-min:              $screen-sm;
-//** Deprecated `$screen-tablet` as of v3.0.1
-$screen-tablet:              $screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `$screen-md` as of v3.0.1
-$screen-md:                  992px;
-$screen-md-min:              $screen-md;
-//** Deprecated `$screen-desktop` as of v3.0.1
-$screen-desktop:             $screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `$screen-lg` as of v3.0.1
-$screen-lg:                  1200px;
-$screen-lg-min:              $screen-lg;
-//** Deprecated `$screen-lg-desktop` as of v3.0.1
-$screen-lg-desktop:          $screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-$screen-xs-max:              ($screen-sm-min - 1);
-$screen-sm-max:              ($screen-md-min - 1);
-$screen-md-max:              ($screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-$grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-$grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-$grid-float-breakpoint:     $screen-sm-min;
-//** Point at which the navbar begins collapsing.
-$grid-float-breakpoint-max: ($grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-$container-tablet:             (720px + $grid-gutter-width);
-//** For `$screen-sm-min` and up.
-$container-sm:                 $container-tablet;
-
-// Medium screen / desktop
-$container-desktop:            (940px + $grid-gutter-width);
-//** For `$screen-md-min` and up.
-$container-md:                 $container-desktop;
-
-// Large screen / wide desktop
-$container-large-desktop:      (1140px + $grid-gutter-width);
-//** For `$screen-lg-min` and up.
-$container-lg:                 $container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-$navbar-height:                    50px;
-$navbar-margin-bottom:             $line-height-computed;
-$navbar-border-radius:             $border-radius-base;
-$navbar-padding-horizontal:        floor(($grid-gutter-width / 2));
-$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2);
-$navbar-collapse-max-height:       340px;
-
-$navbar-default-color:             $gray-light;
-$navbar-default-bg:                $gray-base;
-$navbar-bg:                        rgba($body-bg-header, 0.7);
-$navbar-default-border:            transparent;
-
-// Navbar links
-$navbar-default-link-color:                $brand-primary;
-$navbar-default-link-hover-color:          $gray-light;
-$navbar-default-link-hover-bg:             opacity(0.5);
-$navbar-default-link-active-color:         $gray-light;
-$navbar-default-link-active-bg:            $gray-darker;
-$navbar-default-link-disabled-color:       $gray;
-$navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-$navbar-default-brand-color:               $navbar-default-link-color;
-$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%);
-$navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-$navbar-default-toggle-hover-bg:           #ddd;
-$navbar-default-toggle-icon-bar-bg:        #888;
-$navbar-default-toggle-border-color:       transparent;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-$navbar-inverse-color:                      lighten($gray-light, 15%);
-$navbar-inverse-bg:                         #222;
-$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-$navbar-inverse-link-color:                 lighten($gray-light, 15%);
-$navbar-inverse-link-hover-color:           #fff;
-$navbar-inverse-link-hover-bg:              transparent;
-$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color;
-$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%);
-$navbar-inverse-link-disabled-color:        #444;
-$navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-$navbar-inverse-brand-color:                $navbar-inverse-link-color;
-$navbar-inverse-brand-hover-color:          #fff;
-$navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-$navbar-inverse-toggle-hover-bg:            #333;
-$navbar-inverse-toggle-icon-bar-bg:         #fff;
-$navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-$nav-link-padding:                          10px 15px;
-$nav-link-hover-bg:                         $gray-darker-hover;
-
-$nav-disabled-link-color:                   $gray-light;
-$nav-disabled-link-hover-color:             $gray-light;
-
-//== Tabs
-$nav-tabs-border-color:                     $gray;
-
-$nav-tabs-link-hover-border-color:          $gray;
-
-$nav-tabs-active-link-hover-bg:             $body-bg;
-$nav-tabs-active-link-hover-color:          $gray;
-$nav-tabs-active-link-hover-border-color:   $gray;
-
-$nav-tabs-justified-link-border-color:            $gray;
-$nav-tabs-justified-active-link-border-color:     $body-bg;
-
-//== Pills
-$nav-pills-border-radius:                   $border-radius-base;
-$nav-pills-active-link-hover-bg:            $component-active-bg;
-$nav-pills-active-link-hover-color:         $component-active-color;
-
-
-//== Pagination
-//
-//##
-
-$pagination-color:                     $link-color;
-$pagination-bg:                        $gray-darker;
-$pagination-border:                    $gray;
-
-$pagination-hover-color:               $link-hover-color;
-$pagination-hover-bg:                  $gray-darker-hover;
-$pagination-hover-border:              $gray;
-
-$pagination-active-color:              $gray-lighter;
-$pagination-active-bg:                 $brand-primary;
-$pagination-active-border:             $brand-primary;
-
-$pagination-disabled-color:            $gray-light;
-$pagination-disabled-bg:               $gray-dark;
-$pagination-disabled-border:           $gray;
-
-
-//== Pager
-//
-//##
-
-$pager-bg:                             $pagination-bg;
-$pager-border:                         $pagination-border;
-$pager-border-radius:                  15px;
-
-$pager-hover-bg:                       $pagination-hover-bg;
-
-$pager-active-bg:                      $pagination-active-bg;
-$pager-active-color:                   $pagination-active-color;
-
-$pager-disabled-color:                 $pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-$jumbotron-padding:              30px;
-$jumbotron-color:                inherit;
-$jumbotron-bg:                   $gray-darker-hover;
-$jumbotron-heading-color:        inherit;
-$jumbotron-font-size:            ceil(($font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-$state-success-text:             lighten($brand-success, 50%);
-$state-success-bg:               $brand-success;
-// $state-success-border:           darken(spin($state-success-bg, -10), 5%);
-
-$state-info-text:                lighten($brand-info, 50%);
-$state-info-bg:                  $brand-info;
-// $state-info-border:              darken(spin($state-info-bg, -10), 7%);
-
-$state-warning-text:             lighten($brand-warning, 50%);
-$state-warning-bg:               $brand-warning;
-// $state-warning-border:           darken(spin($state-warning-bg, -10), 5%);
-
-$state-danger-text:              lighten($brand-danger, 50%);
-$state-danger-bg:                $brand-danger;
-// $state-danger-border:            darken(spin($state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-$tooltip-max-width:           200px;
-//** Tooltip text color
-$tooltip-color:               #fff;
-//** Tooltip background color
-$tooltip-bg:                  #000;
-$tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-$tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-$tooltip-arrow-color:         $tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-$popover-bg:                          #fff;
-//** Popover maximum width
-$popover-max-width:                   276px;
-//** Popover border color
-$popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-$popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-$popover-title-bg:                    darken($popover-bg, 3%);
-
-//** Popover arrow width
-$popover-arrow-width:                 10px;
-//** Popover arrow color
-$popover-arrow-color:                 $popover-bg;
-
-//** Popover outer arrow width
-$popover-arrow-outer-width:           ($popover-arrow-width + 1);
-//** Popover outer arrow color
-$popover-arrow-outer-color:           fadein($popover-border-color, 5%);
-//** Popover outer arrow fallback color
-$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-$label-default-bg:            $gray-light;
-//** Primary label background color
-$label-primary-bg:            $brand-primary;
-//** Success label background color
-$label-success-bg:            $brand-success;
-//** Info label background color
-$label-info-bg:               $brand-info;
-//** Warning label background color
-$label-warning-bg:            $brand-warning;
-//** Danger label background color
-$label-danger-bg:             $brand-danger;
-
-//** Default label text color
-$label-color:                 #fff;
-//** Default text color of a linked label
-$label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-$modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-$modal-title-padding:         15px;
-//** Modal title line-height
-$modal-title-line-height:     $line-height-base;
-
-//** Background color of modal content area
-$modal-content-bg:                             #fff;
-//** Modal content border color
-$modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-$modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-$modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-$modal-backdrop-opacity:      .5;
-//** Modal header border color
-$modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-$modal-footer-border-color:   $modal-header-border-color;
-
-$modal-lg:                    900px;
-$modal-md:                    600px;
-$modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-$alert-padding:               15px;
-$alert-border-radius:         $border-radius-base;
-$alert-link-font-weight:      bold;
-
-// $alert-success-bg:            $state-success-bg;
-// $alert-success-text:          $state-success-text;
-// $alert-success-border:        $state-success-border;
-//
-// $alert-info-bg:               $state-info-bg;
-// $alert-info-text:             $state-info-text;
-// $alert-info-border:           $state-info-border;
-//
-// $alert-warning-bg:            $state-warning-bg;
-// $alert-warning-text:          $state-warning-text;
-// $alert-warning-border:        $state-warning-border;
-//
-// $alert-danger-bg:             $state-danger-bg;
-// $alert-danger-text:           $state-danger-text;
-// $alert-danger-border:         $state-danger-border;
-//
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-$progress-bg:                 $gray-darker-hover;
-//** Progress bar text color
-$progress-bar-color:          $gray-lighter;
-//** Variable for setting rounded corners on progress bar.
-$progress-border-radius:      $border-radius-base;
-
-//** Default progress bar color
-$progress-bar-bg:             $brand-primary;
-//** Success progress bar color
-$progress-bar-success-bg:     $brand-success;
-//** Warning progress bar color
-$progress-bar-warning-bg:     $brand-warning;
-//** Danger progress bar color
-$progress-bar-danger-bg:      $brand-danger;
-//** Info progress bar color
-$progress-bar-info-bg:        $brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-$list-group-bg:                 $gray-darker;
-//** `.list-group-item` border color
-$list-group-border:             $gray;
-//** List group border radius
-$list-group-border-radius:      $border-radius-base;
-
-//** Background color of single list items on hover
-$list-group-hover-bg:           $gray-darker-hover;
-//** Text color of active list items
-$list-group-active-color:       $gray-light;
-//** Background color of active list items
-$list-group-active-bg:          $component-active-bg;
-//** Border color of active list elements
-$list-group-active-border:      $list-group-active-bg;
-//** Text color for content within active list items
-$list-group-active-text-color:  lighten($list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-$list-group-disabled-color:      $gray-light;
-//** Background color of disabled list items
-$list-group-disabled-bg:         $gray-lighter;
-//** Text color for content within disabled list items
-$list-group-disabled-text-color: $list-group-disabled-color;
-
-$list-group-link-color:         $gray-light;
-$list-group-link-hover-color:   $list-group-link-color;
-$list-group-link-heading-color: $gray-light;
-
-
-//== Panels
-//
-//##
-
-$panel-bg:                    $gray-darker;
-$panel-body-padding:          15px;
-$panel-heading-padding:       10px 15px;
-$panel-footer-padding:        $panel-heading-padding;
-$panel-border-radius:         $border-radius-base;
-
-//** Border color for elements within panels
-$panel-inner-border:          $gray;
-$panel-footer-bg:             $gray-darker-hover;
-
-$panel-default-text:          $gray-light;
-$panel-default-border:        $gray;
-$panel-default-heading-bg:    $gray-darker-hover;
-
-$panel-primary-text:          $gray-lighter;
-$panel-primary-border:        $brand-primary;
-$panel-primary-heading-bg:    $brand-primary;
-
-$panel-success-text:          $state-success-text;
-// $panel-success-border:        $state-success-border;
-$panel-success-heading-bg:    $state-success-bg;
-
-$panel-info-text:             $state-info-text;
-// $panel-info-border:           $state-info-border;
-$panel-info-heading-bg:       $state-info-bg;
-
-$panel-warning-text:          $state-warning-text;
-// $panel-warning-border:        $state-warning-border;
-$panel-warning-heading-bg:    $state-warning-bg;
-
-$panel-danger-text:           $state-danger-text;
-// $panel-danger-border:         $state-danger-border;
-$panel-danger-heading-bg:     $state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-$thumbnail-padding:           4px;
-//** Thumbnail background color
-$thumbnail-bg:                $body-bg;
-//** Thumbnail border color
-$thumbnail-border:            $gray;
-//** Thumbnail border radius
-$thumbnail-border-radius:     $border-radius-base;
-
-//** Custom text color for thumbnail captions
-$thumbnail-caption-color:     $text-color;
-//** Padding around the thumbnail caption
-$thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-$well-bg:                     $gray-darker;
-$well-border:                 $gray;
-
-
-//== Badges
-//
-//##
-
-$badge-color:                 $gray-darker;
-//** Linked badge text color on hover
-$badge-link-hover-color:      $gray-darker-hover;
-$badge-bg:                    $gray-light;
-
-//** Badge text color in active nav link
-$badge-active-color:          $link-color;
-//** Badge background color in active nav link
-$badge-active-bg:             $gray-darker;
-
-$badge-font-weight:           bold;
-$badge-line-height:           1;
-$badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-$breadcrumb-padding-vertical:   8px;
-$breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-$breadcrumb-bg:                 $gray-darker;
-//** Breadcrumb text color
-$breadcrumb-color:              $gray-light;
-//** Text color of current page in the breadcrumb
-$breadcrumb-active-color:       $gray-light;
-//** Textual separator for between breadcrumb elements
-$breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-$carousel-control-color:                      #fff;
-$carousel-control-width:                      15%;
-$carousel-control-opacity:                    .5;
-$carousel-control-font-size:                  20px;
-
-$carousel-indicator-active-bg:                #fff;
-$carousel-indicator-border-color:             #fff;
-
-$carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-$close-font-weight:           bold;
-$close-color:                 #000;
-$close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-$code-color:                  lighten($brand-danger, 25%);
-$code-bg:                     rgba($text-color, 0.01);
-
-$kbd-color:                   #fff;
-$kbd-bg:                      #333;
-
-$pre-bg:                      #f5f5f5;      // Useless, Overwritten in _base.scss
-$pre-color:                   $gray-dark;   // Useless, Overwritten in _base.scss
-$pre-border-color:            #ccc;
-$pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-$component-offset-horizontal: 180px;
-//** Text muted color
-$text-muted:                  $gray-light;
-//** Abbreviations and acronyms border color
-$abbr-border-color:           $gray-light;
-//** Headings small color
-$headings-small-color:        $gray-light;
-//** Blockquote small color
-$blockquote-small-color:      $gray-light;
-//** Blockquote font size
-$blockquote-font-size:        ($font-size-base * 1.25);
-//** Blockquote border color
-$blockquote-border-color:     $gray-lighter;
-//** Page header border color
-$page-header-border-color:    $gray-lighter;
-//** Width of horizontal description list titles
-$dl-horizontal-offset:        $component-offset-horizontal;
-//** Horizontal line color.
-$hr-border:                   $gray-lighter;
-
-// Custom SCSS
-// General
-
-body {
-  background: linear-gradient($body-bg-header 10%, $body-bg 100%);
-  background-repeat: no-repeat;
-  background-attachment: fixed;
-  height: 100%;
-  width: 100%;
-  overflow-x: hidden;
-  text-shadow: 0 0 0.01em $shadow-color;
-}
-
-a {
-  cursor: pointer;
-}
-
-blockquote {
-  border-color: $gray;
-  border-width: 0 0 0 0.2em;
-  border-style: solid;
-}
-
-h1 {
-  padding-top: 0.5em;
-  padding-bottom: 0.5em;
-}
-
-h1 a,
-h1 a:hover {
-  color: $brand-primary;
-}
-
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  color: $brand-danger;
-  text-decoration-color: $brand-danger;
-  border-bottom-color: $brand-danger;
-}
-
-#background-div,
-#background-svg {
-  width: 100%;
-  height: 100%;
-  position: fixed;
-  top: 0;
-  left: 0;
-  z-index: 0;
-}
-
-#title {
-  margin-top: 0;
-}
-
-// Social media hover colors colors
-$icon-shadow: 0.1em;
-$icons-list: github facebook twitter linkedin envelope;
-$icons-colors: $github-color $facebook-color $twitter-color $linkedin-color $envelope-color;
-@for $i from 1 through length($icons-list) {
-  .fa-#{nth($icons-list, $i)}:hover {
-    text-shadow: 0 0 $icon-shadow #{nth($icons-colors, $i)};
-  }
-}
-
-.bgColor1 {
-  stop-color: $bg-color1;
-}
-
-.bgColor2 {
-  stop-color: $bg-color2;
-}
-
-.page-footer {
-  margin-top: 8em;
-
-  center div div a i {
-    color: $gray !important;
-  }
-}
-
-.navbar-toggle:hover {
-  background-color: transparent !important;
-}
-
-.navbar-icon:hover {
-  text-shadow: 0 0 $icon-shadow lighten($brand-primary, 20%);
-  color: $brand-primary !important;
-}
-
-.navbar-icon {
-  color: $brand-primary !important;
-}
-
-.navbar {
-  background-color: $navbar-bg;
-  transition: background-color 0.25s ease-in-out;
-  -webkit-transition: background-color 0.25s ease-in-out;
-}
-
-nav:hover {
-  background-color: $navbar-default-bg;
-}
-
-.post-title {
-  color: $brand-primary;
-}
-
-.blog-post {
-  margin-bottom: 5em;
-}
-
-$avatar-size: 10em;
-.avatar-image {
-  height: auto;
-  width: auto;
-  max-height: $avatar-size;
-  max-width: $avatar-size;
-  border-radius: $avatar-size;
-  border-style: solid;
-  border-width: medium;
-  border-color: $gray-light;
-}
-
-.avatar-description {
-  color: $gray-light;
-}
-
-.hide {
-  display: none;
-}
-
-.h1-overlay {
-  background: $h1-bg;
-  position: absolute;
-  width: 100%;
-  z-index: -1;
-  padding: 1em;
-}
-
-.right-links {
-  a i {
-    font-size: 1.5em;
-    color: $gray !important;
-  }
-}
-
-
-/*!
- * animate.css -http://daneden.me/animate
- * Version - 3.5.1
- * Licensed under the MIT license - http://opensource.org/licenses/MIT
- *
- * Copyright (c) 2016 Daniel Eden
- */
-
-.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}
-
-/*!
- *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
-
-/* source-code-pro-regular - latin-ext_latin */
-@font-face {
-  font-family: 'Source Code Pro';
-  font-style: normal;
-  font-weight: 400;
-  src: local(''),
-       url('/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
-       url('/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
diff --git a/assets/css/font-awesome.min.css b/assets/css/font-awesome.min.css
new file mode 100644
index 0000000..540440c
--- /dev/null
+++ b/assets/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/assets/css/highlight/base16.css b/assets/css/highlight/base16.css
new file mode 100644
index 0000000..8a39932
--- /dev/null
+++ b/assets/css/highlight/base16.css
@@ -0,0 +1,77 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #303030;
+}
+.highlight .err {
+  color: #151515;
+  background-color: #ac4142;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #505050;
+}
+.highlight .cp {
+  color: #f4bf75;
+}
+.highlight .nt {
+  color: #f4bf75;
+}
+.highlight .o, .highlight .ow {
+  color: #d0d0d0;
+}
+.highlight .p, .highlight .pi {
+  color: #d0d0d0;
+}
+.highlight .gi {
+  color: #90a959;
+}
+.highlight .gd {
+  color: #ac4142;
+}
+.highlight .gh {
+  color: #6a9fb5;
+  background-color: #151515;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #aa759f;
+}
+.highlight .kc {
+  color: #d28445;
+}
+.highlight .kt {
+  color: #d28445;
+}
+.highlight .kd {
+  color: #d28445;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #90a959;
+}
+.highlight .sr {
+  color: #75b5aa;
+}
+.highlight .si {
+  color: #8f5536;
+}
+.highlight .se {
+  color: #8f5536;
+}
+.highlight .nn {
+  color: #f4bf75;
+}
+.highlight .nc {
+  color: #f4bf75;
+}
+.highlight .no {
+  color: #f4bf75;
+}
+.highlight .na {
+  color: #6a9fb5;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #90a959;
+}
+.highlight .ss {
+  color: #90a959;
+}
diff --git a/assets/css/highlight/colorful.css b/assets/css/highlight/colorful.css
new file mode 100644
index 0000000..f14450b
--- /dev/null
+++ b/assets/css/highlight/colorful.css
@@ -0,0 +1,170 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #bbbbbb;
+  background-color: #000;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1 {
+  color: #888;
+}
+.highlight .cp {
+  color: #579;
+}
+.highlight .cs {
+  color: #cc0000;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kc, .highlight .kd, .highlight .kn, .highlight .kr, .highlight .kv {
+  color: #080;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #038;
+}
+.highlight .kt {
+  color: #339;
+}
+.highlight .o {
+  color: #333;
+}
+.highlight .ow {
+  color: #000;
+  font-weight: bold;
+}
+.highlight .nb, .highlight .bp {
+  color: #007020;
+}
+.highlight .nf {
+  color: #06B;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #B06;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #0e84b5;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #F00;
+  font-weight: bold;
+}
+.highlight .nv {
+  color: #963;
+}
+.highlight .vi {
+  color: #33B;
+}
+.highlight .vc {
+  color: #369;
+}
+.highlight .vg {
+  color: #d70;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #036;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #970;
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #800;
+  font-weight: bold;
+}
+.highlight .na {
+  color: #00C;
+}
+.highlight .nt {
+  color: #070;
+}
+.highlight .nd {
+  color: #555;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .s2, .highlight .sh, .highlight .s1 {
+  background-color: #fff0f0;
+}
+.highlight .sc {
+  color: #04D;
+}
+.highlight .sd {
+  color: #D42;
+}
+.highlight .si {
+  background-color: #eee;
+}
+.highlight .se {
+  color: #666;
+  font-weight: bold;
+}
+.highlight .sr {
+  color: #000;
+  background-color: #fff0ff;
+}
+.highlight .ss {
+  color: #A60;
+}
+.highlight .sx {
+  color: #D20;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #60E;
+  font-weight: bold;
+}
+.highlight .mi, .highlight .il {
+  color: #00D;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #60E;
+  font-weight: bold;
+}
+.highlight .mh {
+  color: #058;
+  font-weight: bold;
+}
+.highlight .mo {
+  color: #40E;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #000080;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #800080;
+  font-weight: bold;
+}
+.highlight .gd {
+  color: #A00000;
+}
+.highlight .gi {
+  color: #00A000;
+}
+.highlight .gr {
+  color: #FF0000;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gp {
+  color: #c65d09;
+  font-weight: bold;
+}
+.highlight .go {
+  color: #888;
+}
+.highlight .gt {
+  color: #04D;
+}
+.highlight .err {
+  color: #F00;
+  background-color: #FAA;
+}
diff --git a/assets/css/highlight/github.css b/assets/css/highlight/github.css
new file mode 100644
index 0000000..daf76ad
--- /dev/null
+++ b/assets/css/highlight/github.css
@@ -0,0 +1,209 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .cm {
+  color: #999988;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .c1 {
+  color: #999988;
+  font-style: italic;
+}
+.highlight .cs {
+  color: #999999;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .c, .highlight .cd {
+  color: #999988;
+  font-style: italic;
+}
+.highlight .err {
+  color: #a61717;
+  background-color: #e3d2d2;
+}
+.highlight .gd {
+  color: #000000;
+  background-color: #ffdddd;
+}
+.highlight .ge {
+  color: #000000;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #999999;
+}
+.highlight .gi {
+  color: #000000;
+  background-color: #ddffdd;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #aaaaaa;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .kc {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kv {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #009999;
+}
+.highlight .mh {
+  color: #009999;
+}
+.highlight .il {
+  color: #009999;
+}
+.highlight .mi {
+  color: #009999;
+}
+.highlight .mo {
+  color: #009999;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #009999;
+}
+.highlight .sb {
+  color: #d14;
+}
+.highlight .sc {
+  color: #d14;
+}
+.highlight .sd {
+  color: #d14;
+}
+.highlight .s2 {
+  color: #d14;
+}
+.highlight .se {
+  color: #d14;
+}
+.highlight .sh {
+  color: #d14;
+}
+.highlight .si {
+  color: #d14;
+}
+.highlight .sx {
+  color: #d14;
+}
+.highlight .sr {
+  color: #009926;
+}
+.highlight .s1 {
+  color: #d14;
+}
+.highlight .ss {
+  color: #990073;
+}
+.highlight .s {
+  color: #d14;
+}
+.highlight .na {
+  color: #008080;
+}
+.highlight .bp {
+  color: #999999;
+}
+.highlight .nb {
+  color: #0086B3;
+}
+.highlight .nc {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #008080;
+}
+.highlight .nd {
+  color: #3c5d5d;
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #800080;
+}
+.highlight .ne {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nf {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #555555;
+}
+.highlight .nt {
+  color: #000080;
+}
+.highlight .vc {
+  color: #008080;
+}
+.highlight .vg {
+  color: #008080;
+}
+.highlight .vi {
+  color: #008080;
+}
+.highlight .nv {
+  color: #008080;
+}
+.highlight .ow {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #bbbbbb;
+}
+.highlight {
+  background-color: #f8f8f8;
+}
diff --git a/assets/css/highlight/gruvbox.css b/assets/css/highlight/gruvbox.css
new file mode 100644
index 0000000..cb5f589
--- /dev/null
+++ b/assets/css/highlight/gruvbox.css
@@ -0,0 +1,84 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #fbf1c7;
+  background-color: #282828;
+}
+.highlight .err {
+  color: #fb4934;
+  background-color: #282828;
+  font-weight: bold;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #928374;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #8ec07c;
+}
+.highlight .nt {
+  color: #fb4934;
+}
+.highlight .o, .highlight .ow {
+  color: #fbf1c7;
+}
+.highlight .p, .highlight .pi {
+  color: #fbf1c7;
+}
+.highlight .gi {
+  color: #b8bb26;
+  background-color: #282828;
+}
+.highlight .gd {
+  color: #fb4934;
+  background-color: #282828;
+}
+.highlight .gh {
+  color: #b8bb26;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #fb4934;
+}
+.highlight .kc {
+  color: #d3869b;
+}
+.highlight .kt {
+  color: #fabd2f;
+}
+.highlight .kd {
+  color: #fe8019;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .si {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .sr {
+  color: #b8bb26;
+  font-style: italic;
+}
+.highlight .se {
+  color: #fe8019;
+}
+.highlight .nn {
+  color: #8ec07c;
+}
+.highlight .nc {
+  color: #8ec07c;
+}
+.highlight .no {
+  color: #d3869b;
+}
+.highlight .na {
+  color: #b8bb26;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #d3869b;
+}
+.highlight .ss {
+  color: #83a598;
+}
diff --git a/assets/css/highlight/molokai.css b/assets/css/highlight/molokai.css
new file mode 100644
index 0000000..535376b
--- /dev/null
+++ b/assets/css/highlight/molokai.css
@@ -0,0 +1,208 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .c, .highlight .cd {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .cm {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .c1 {
+  color: #5e5d83;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #465457;
+  font-weight: bold;
+}
+.highlight .cs {
+  color: #465457;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .err {
+  color: #f8f8f2;
+  background-color: #403d3d;
+}
+.highlight .gi {
+  color: #a6e22e;
+}
+.highlight .gd {
+  color: #f92672;
+}
+.highlight .ge {
+  color: #1b1d1e;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #f92672;
+}
+.highlight .gt {
+  color: #f92672;
+}
+.highlight .gh {
+  color: #403d3d;
+}
+.highlight .go {
+  color: #403d3d;
+}
+.highlight .gp {
+  color: #66d9ef;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #465457;
+}
+.highlight .k, .highlight .kv {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kc {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #66d9ef;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .ow {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #f92672;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #af87ff;
+}
+.highlight .mh {
+  color: #af87ff;
+}
+.highlight .il {
+  color: #af87ff;
+}
+.highlight .mi {
+  color: #af87ff;
+}
+.highlight .mo {
+  color: #af87ff;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #af87ff;
+}
+.highlight .se {
+  color: #af87ff;
+}
+.highlight .sb {
+  color: #d7d787;
+}
+.highlight .sc {
+  color: #d7d787;
+}
+.highlight .sd {
+  color: #d7d787;
+}
+.highlight .s2 {
+  color: #d7d787;
+}
+.highlight .sh {
+  color: #d7d787;
+}
+.highlight .si {
+  color: #d7d787;
+}
+.highlight .sx {
+  color: #d7d787;
+}
+.highlight .sr {
+  color: #d7d787;
+}
+.highlight .s1 {
+  color: #d7d787;
+}
+.highlight .ss {
+  color: #d7d787;
+}
+.highlight .s {
+  color: #d7d787;
+}
+.highlight .na {
+  color: #a6e22e;
+}
+.highlight .nc {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .nf {
+  color: #a6e22e;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #66d9ef;
+}
+.highlight .bp {
+  color: #f8f8f2;
+}
+.highlight .nb {
+  color: #f8f8f2;
+}
+.highlight .ni {
+  color: #f8f8f2;
+}
+.highlight .nn {
+  color: #f8f8f2;
+}
+.highlight .vc {
+  color: #f8f8f2;
+}
+.highlight .vg {
+  color: #f8f8f2;
+}
+.highlight .vi {
+  color: #f8f8f2;
+}
+.highlight .nv {
+  color: #f8f8f2;
+}
+.highlight .w {
+  color: #f8f8f2;
+}
+.highlight .nl {
+  color: #f8f8f2;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #f92672;
+}
+.highlight {
+  color: #f8f8f2;
+  background-color: #1b1d1e;
+}
diff --git a/assets/css/highlight/monokai.css b/assets/css/highlight/monokai.css
index b851791..854cfb8 100644
--- a/assets/css/highlight/monokai.css
+++ b/assets/css/highlight/monokai.css
@@ -207,4 +207,4 @@
 .highlight {
   color: #f8f8f2;
   background-color: #49483e;
-}
\ No newline at end of file
+}
diff --git a/assets/css/highlight/pastie.css b/assets/css/highlight/pastie.css
new file mode 100644
index 0000000..48b57ad
--- /dev/null
+++ b/assets/css/highlight/pastie.css
@@ -0,0 +1,146 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1 {
+  color: #888888;
+}
+.highlight .cp {
+  color: #cc0000;
+  font-weight: bold;
+}
+.highlight .cs {
+  color: #cc0000;
+  background-color: #fff0f0;
+  font-weight: bold;
+}
+.highlight .err {
+  color: #a61717;
+  background-color: #e3d2d2;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #333333;
+}
+.highlight .gu {
+  color: #666666;
+}
+.highlight .gd {
+  color: #000000;
+  background-color: #ffdddd;
+}
+.highlight .gi {
+  color: #000000;
+  background-color: #ddffdd;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gl {
+  color: #888888;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .k, .highlight .kc, .highlight .kd, .highlight .kn, .highlight .kr, .highlight .kv {
+  color: #008800;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #008800;
+}
+.highlight .kt {
+  color: #888888;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #0000dd;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .s1 {
+  color: #dd2200;
+  background-color: #fff0f0;
+}
+.highlight .se {
+  color: #0044dd;
+  background-color: #fff0f0;
+}
+.highlight .si {
+  color: #3333bb;
+  background-color: #fff0f0;
+}
+.highlight .sx {
+  color: #22bb22;
+  background-color: #f0fff0;
+}
+.highlight .sr {
+  color: #008800;
+}
+.highlight .ss {
+  color: #aa6600;
+  background-color: #fff0f0;
+}
+.highlight .na {
+  color: #336699;
+}
+.highlight .nb, .highlight .bp {
+  color: #003388;
+}
+.highlight .nc {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #003366;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #555555;
+}
+.highlight .ne {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .nf {
+  color: #0066bb;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #336699;
+}
+.highlight .nn {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .py {
+  color: #336699;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #bb0066;
+  font-weight: bold;
+}
+.highlight .nv, .highlight .vc {
+  color: #336699;
+}
+.highlight .vg {
+  color: #dd7700;
+}
+.highlight .vi {
+  color: #3333bb;
+}
+.highlight .ow {
+  color: #008800;
+}
+.highlight .w {
+  color: #bbbbbb;
+}
diff --git a/assets/css/highlight/thankful_eyes.css b/assets/css/highlight/thankful_eyes.css
new file mode 100644
index 0000000..bfa0b66
--- /dev/null
+++ b/assets/css/highlight/thankful_eyes.css
@@ -0,0 +1,173 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight {
+  color: #faf6e4;
+  background-color: #122b3b;
+}
+.highlight .gl {
+  color: #dee5e7;
+  background-color: #4e5d62;
+}
+.highlight .gp {
+  color: #a8e1fe;
+  font-weight: bold;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #6c8b9f;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #b2fd6d;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .err {
+  color: #fefeec;
+  background-color: #cc0000;
+}
+.highlight .gr {
+  color: #cc0000;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .k, .highlight .kd, .highlight .kv {
+  color: #f6dd62;
+  font-weight: bold;
+}
+.highlight .o, .highlight .ow {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .p, .highlight .pi {
+  color: #4df4ff;
+}
+.highlight .gd {
+  color: #cc0000;
+}
+.highlight .gi {
+  color: #b2fd6d;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gt {
+  color: #dee5e7;
+  background-color: #4e5d62;
+}
+.highlight .kc {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .bp {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #b2fd6d;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #ffb000;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .ld {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .ss {
+  color: #f696db;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 {
+  color: #fff0a6;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .si {
+  color: #4df4ff;
+  font-weight: bold;
+}
+.highlight .nb {
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #BBBBBB;
+}
+.highlight .go {
+  color: #BBBBBB;
+}
+.highlight .nf {
+  color: #a8e1fe;
+}
+.highlight .py {
+  color: #a8e1fe;
+}
+.highlight .na {
+  color: #a8e1fe;
+}
+.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi {
+  color: #a8e1fe;
+  font-weight: bold;
+}
diff --git a/assets/css/highlight/tulip.css b/assets/css/highlight/tulip.css
new file mode 100644
index 0000000..4664fac
--- /dev/null
+++ b/assets/css/highlight/tulip.css
@@ -0,0 +1,164 @@
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight {
+  color: #FFFFFF;
+  background-color: #231529;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #6D6E70;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #41ff5b;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .err {
+  color: #FFFFFF;
+  background-color: #CC0000;
+}
+.highlight .gr {
+  color: #FFFFFF;
+  background-color: #CC0000;
+}
+.highlight .k, .highlight .kd, .highlight .kv {
+  color: #FFF02A;
+  font-weight: bold;
+}
+.highlight .o, .highlight .ow {
+  color: #41ff5b;
+}
+.highlight .p, .highlight .pi {
+  color: #41ff5b;
+}
+.highlight .gd {
+  color: #CC0000;
+}
+.highlight .gi {
+  color: #3FB34F;
+}
+.highlight .ge {
+  font-style: italic;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gt {
+  color: #FFFFFF;
+  background-color: #766DAF;
+}
+.highlight .gl {
+  color: #FFFFFF;
+  background-color: #766DAF;
+}
+.highlight .kc {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .gh {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #FFFFFF;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nc {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nd {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .bp {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .ne {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .nt {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .ld {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .ss {
+  color: #9f93e6;
+  font-weight: bold;
+}
+.highlight .s, .highlight .sb, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .sr, .highlight .s1 {
+  color: #fff0a6;
+  font-weight: bold;
+}
+.highlight .se {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .sc {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .si {
+  color: #FAAF4C;
+  font-weight: bold;
+}
+.highlight .nb {
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #999999;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #BBBBBB;
+}
+.highlight .nf {
+  color: #41ff5b;
+}
+.highlight .py {
+  color: #41ff5b;
+}
+.highlight .na {
+  color: #41ff5b;
+}
+.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi {
+  color: #41ff5b;
+  font-weight: bold;
+}
diff --git a/assets/css/main-dark.scss b/assets/css/main-dark.scss
new file mode 100644
index 0000000..9f23223
--- /dev/null
+++ b/assets/css/main-dark.scss
@@ -0,0 +1,8 @@
+---
+# Front matter comment to ensure Jekyll properly reads file.
+---
+@charset "UTF-8";
+
+@import "variables-dark";
+@import "bootstrap";
+@import "base";
diff --git a/assets/css/main-light.scss b/assets/css/main-light.scss
new file mode 100644
index 0000000..2d66510
--- /dev/null
+++ b/assets/css/main-light.scss
@@ -0,0 +1,8 @@
+---
+# Front matter comment to ensure Jekyll properly reads file.
+---
+@charset "UTF-8";
+
+@import "variables-light";
+@import "bootstrap";
+@import "base";
diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot
deleted file mode 100644
index 33b2bb8..0000000
Binary files a/assets/fonts/fontawesome-webfont.eot and /dev/null differ
diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 1ee89d4..0000000
--- a/assets/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,565 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 
\ No newline at end of file
diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index ed9372f..0000000
Binary files a/assets/fonts/fontawesome-webfont.ttf and /dev/null differ
diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 8b280b9..0000000
Binary files a/assets/fonts/fontawesome-webfont.woff and /dev/null differ
diff --git a/assets/fonts/fontawesome-webfont.woff2 b/assets/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index 3311d58..0000000
Binary files a/assets/fonts/fontawesome-webfont.woff2 and /dev/null differ
diff --git a/assets/fonts/fontawesome.min.css b/assets/fonts/fontawesome.min.css
deleted file mode 100644
index 24fcc04..0000000
--- a/assets/fonts/fontawesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}
\ No newline at end of file
diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff b/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff
deleted file mode 100644
index 5a975d1..0000000
Binary files a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff and /dev/null differ
diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 b/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2
deleted file mode 100644
index 6dab02e..0000000
Binary files a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 and /dev/null differ
diff --git a/assets/img/anonymousland_logo.png b/assets/img/anonymousland_logo.png
deleted file mode 100644
index 1f87588..0000000
Binary files a/assets/img/anonymousland_logo.png and /dev/null differ
diff --git a/assets/img/xmr_donation_wallet.svg b/assets/img/xmr_donation_wallet.svg
deleted file mode 100644
index aea2d45..0000000
Binary files a/assets/img/xmr_donation_wallet.svg and /dev/null differ
diff --git a/assets/js/bootstrap.min.js b/assets/js/bootstrap.min.js
deleted file mode 100644
index 2dd5553..0000000
--- a/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1,1758 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under the MIT license
- */
-if ("undefined" == typeof jQuery) 
-    throw new Error("Bootstrap's JavaScript requires jQuery");
-
-+ function (a) {
-    "use strict";
-    var b = a
-        .fn
-        .jquery
-        .split(" ")[0]
-        .split(".");
-    if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 3) 
-        throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than v" +
-                "ersion 4")
-        }(jQuery), + function (a) {
-    "use strict";
-    function b() {
-        var a = document.createElement("bootstrap"),
-            b = {
-                WebkitTransition: "webkitTransitionEnd",
-                MozTransition: "transitionend",
-                OTransition: "oTransitionEnd otransitionend",
-                transition: "transitionend"
-            };
-        for (var c in b) 
-            if (void 0 !== a.style[c]) 
-                return {end: b[c]};
-    return !1
-    }
-    a.fn.emulateTransitionEnd = function (b) {
-        var c = !1,
-            d = this;
-        a(this).one("bsTransitionEnd", function () {
-            c = !0
-        });
-        var e = function () {
-            c || a(d).trigger(a.support.transition.end)
-        };
-        return setTimeout(e, b),
-        this
-    },
-    a(function () {
-        a.support.transition = b(),
-        a.support.transition && (a.event.special.bsTransitionEnd = {
-            bindType: a.support.transition.end,
-            delegateType: a.support.transition.end,
-            handle: function (b) {
-                if (a(b.target).is(this)) 
-                    return b.handleObj.handler.apply(this, arguments)
-            }
-        })
-    })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var c = a(this),
-                e = c.data("bs.alert");
-            e || c.data("bs.alert", e = new d(this)),
-            "string" == typeof b && e[b].call(c)
-        })
-    }
-    var c = '[data-dismiss="alert"]',
-        d = function (b) {
-            a(b).on("click", c, this.close)
-        };
-    d.VERSION = "3.3.7",
-    d.TRANSITION_DURATION = 150,
-    d.prototype.close = function (b) {
-        function c() {
-            g
-                .detach()
-                .trigger("closed.bs.alert")
-                .remove()
-        }
-        var e = a(this),
-            f = e.attr("data-target");
-        f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
-        var g = a("#" === f
-            ? []
-            : f);
-        b && b.preventDefault(),
-        g.length || (g = e.closest(".alert")),
-        g.trigger(b = a.Event("close.bs.alert")),
-        b.isDefaultPrevented() || (g.removeClass("in"), a.support.transition && g.hasClass("fade")
-            ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION)
-            : c())
-    };
-    var e = a.fn.alert;
-    a.fn.alert = b,
-    a.fn.alert.Constructor = d,
-    a.fn.alert.noConflict = function () {
-        return a.fn.alert = e,
-        this
-    },
-    a(document).on("click.bs.alert.data-api", c, d.prototype.close)
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.button"),
-                f = "object" == typeof b && b;
-            e || d.data("bs.button", e = new c(this, f)),
-            "toggle" == b
-                ? e.toggle()
-                : b && e.setState(b)
-        })
-    }
-    var c = function (b, d) {
-        this.$element = a(b),
-        this.options = a.extend({}, c.DEFAULTS, d),
-        this.isLoading = !1
-    };
-    c.VERSION = "3.3.7",
-    c.DEFAULTS = {
-        loadingText: "loading..."
-    },
-    c.prototype.setState = function (b) {
-        var c = "disabled",
-            d = this.$element,
-            e = d.is("input")
-                ? "val"
-                : "html",
-            f = d.data();
-        b += "Text",
-        null == f.resetText && d.data("resetText", d[e]()),
-        setTimeout(a.proxy(function () {
-            d[e](null == f[b]
-                ? this.options[b]
-                : f[b]),
-            "loadingText" == b
-                ? (this.isLoading = !0, d.addClass(c).attr(c, c).prop(c, !0))
-                : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c).prop(c, !1))
-        }, this), 0)
-    },
-    c.prototype.toggle = function () {
-        var a = !0,
-            b = this
-                .$element
-                .closest('[data-toggle="buttons"]');
-        if (b.length) {
-            var c = this
-                .$element
-                .find("input");
-            "radio" == c.prop("type")
-                ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass("active"))
-                : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1), this.$element.toggleClass("active")),
-            c.prop("checked", this.$element.hasClass("active")),
-            a && c.trigger("change")
-        } else 
-            this
-                .$element
-                .attr("aria-pressed", !this.$element.hasClass("active")),
-            this
-                .$element
-                .toggleClass("active")
-        };
-    var d = a.fn.button;
-    a.fn.button = b,
-    a.fn.button.Constructor = c,
-    a.fn.button.noConflict = function () {
-        return a.fn.button = d,
-        this
-    },
-    a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function (c) {
-        var d = a(c.target).closest(".btn");
-        b.call(d, "toggle"),
-        a(c.target).is('input[type="radio"], input[type="checkbox"]') || (c.preventDefault(), d.is("input,button")
-            ? d.trigger("focus")
-            : d.find("input:visible,button:visible").first().trigger("focus"))
-    })
-        .on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function (b) {
-            a(b.target)
-                .closest(".btn")
-                .toggleClass("focus", /^focus(in)?$/.test(b.type))
-        })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.carousel"),
-                f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b),
-                g = "string" == typeof b
-                    ? b
-                    : f.slide;
-            e || d.data("bs.carousel", e = new c(this, f)),
-            "number" == typeof b
-                ? e.to(b)
-                : g
-                    ? e[g]()
-                    : f.interval && e
-                        .pause()
-                        .cycle()
-        })
-    }
-    var c = function (b, c) {
-        this.$element = a(b),
-        this.$indicators = this
-            .$element
-            .find(".carousel-indicators"),
-        this.options = c,
-        this.paused = null,
-        this.sliding = null,
-        this.interval = null,
-        this.$active = null,
-        this.$items = null,
-        this.options.keyboard && this
-            .$element
-            .on("keydown.bs.carousel", a.proxy(this.keydown, this)),
-        "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this
-            .$element
-            .on("mouseenter.bs.carousel", a.proxy(this.pause, this))
-            .on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
-    };
-    c.VERSION = "3.3.7",
-    c.TRANSITION_DURATION = 600,
-    c.DEFAULTS = {
-        interval: 5e3,
-        pause: "hover",
-        wrap: !0,
-        keyboard: !0
-    },
-    c.prototype.keydown = function (a) {
-        if (!/input|textarea/i.test(a.target.tagName)) {
-            switch (a.which) {
-                case 37:
-                    this.prev();
-                    break;
-                case 39:
-                    this.next();
-                    break;
-                default:
-                    return
-            }
-            a.preventDefault()
-        }
-    },
-    c.prototype.cycle = function (b) {
-        return b || (this.paused = !1),
-        this.interval && clearInterval(this.interval),
-        this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)),
-        this
-    },
-    c.prototype.getItemIndex = function (a) {
-        return this.$items = a
-            .parent()
-            .children(".item"),
-        this
-            .$items
-            .index(a || this.$active)
-    },
-    c.prototype.getItemForDirection = function (a, b) {
-        var c = this.getItemIndex(b),
-            d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
-        if (d && !this.options.wrap) 
-            return b;
-        var e = "prev" == a
-                ? -1
-                : 1,
-            f = (c + e) % this.$items.length;
-        return this
-            .$items
-            .eq(f)
-    },
-    c.prototype.to = function (a) {
-        var b = this,
-            c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
-        if (!(a > this.$items.length - 1 || a < 0)) 
-            return this.sliding
-                ? this.$element.one("slid.bs.carousel", function () {
-                    b.to(a)
-                })
-                : c == a
-                    ? this.pause().cycle()
-                    : this.slide(a > c
-                        ? "next"
-                        : "prev", this.$items.eq(a))
-                },
-    c.prototype.pause = function (b) {
-        return b || (this.paused = !0),
-        this
-            .$element
-            .find(".next, .prev")
-            .length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)),
-        this.interval = clearInterval(this.interval),
-        this
-    },
-    c.prototype.next = function () {
-        if (!this.sliding) 
-            return this.slide("next")
-    },
-    c.prototype.prev = function () {
-        if (!this.sliding) 
-            return this.slide("prev")
-    },
-    c.prototype.slide = function (b, d) {
-        var e = this
-                .$element
-                .find(".item.active"),
-            f = d || this.getItemForDirection(b, e),
-            g = this.interval,
-            h = "next" == b
-                ? "left"
-                : "right",
-            i = this;
-        if (f.hasClass("active")) 
-            return this.sliding = !1;
-        var j = f[0],
-            k = a.Event("slide.bs.carousel", {
-                relatedTarget: j,
-                direction: h
-            });
-        if (this.$element.trigger(k), !k.isDefaultPrevented()) {
-            if (this.sliding = !0, g && this.pause(), this.$indicators.length) {
-                this
-                    .$indicators
-                    .find(".active")
-                    .removeClass("active");
-                var l = a(this.$indicators.children()[this.getItemIndex(f)]);
-                l && l.addClass("active")
-            }
-            var m = a.Event("slid.bs.carousel", {
-                relatedTarget: j,
-                direction: h
-            });
-            return a.support.transition && this
-                .$element
-                .hasClass("slide")
-                ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one("bsTransitionEnd", function () {
-                    f
-                        .removeClass([b, h].join(" "))
-                        .addClass("active"),
-                    e.removeClass(["active", h].join(" ")),
-                    i.sliding = !1,
-                    setTimeout(function () {
-                        i
-                            .$element
-                            .trigger(m)
-                    }, 0)
-                }).emulateTransitionEnd(c.TRANSITION_DURATION))
-                : (e.removeClass("active"), f.addClass("active"), this.sliding = !1, this.$element.trigger(m)),
-            g && this.cycle(),
-            this
-        }
-    };
-    var d = a.fn.carousel;
-    a.fn.carousel = b,
-    a.fn.carousel.Constructor = c,
-    a.fn.carousel.noConflict = function () {
-        return a.fn.carousel = d,
-        this
-    };
-    var e = function (c) {
-        var d,
-            e = a(this),
-            f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
-        if (f.hasClass("carousel")) {
-            var g = a.extend({}, f.data(), e.data()),
-                h = e.attr("data-slide-to");
-            h && (g.interval = !1),
-            b.call(f, g),
-            h && f
-                .data("bs.carousel")
-                .to(h),
-            c.preventDefault()
-        }
-    };
-    a(document)
-        .on("click.bs.carousel.data-api", "[data-slide]", e)
-        .on("click.bs.carousel.data-api", "[data-slide-to]", e),
-    a(window).on("load", function () {
-        a('[data-ride="carousel"]')
-            .each(function () {
-                var c = a(this);
-                b.call(c, c.data())
-            })
-    })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        var c,
-            d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
-        return a(d)
-    }
-    function c(b) {
-        return this.each(function () {
-            var c = a(this),
-                e = c.data("bs.collapse"),
-                f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
-            !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1),
-            e || c.data("bs.collapse", e = new d(this, f)),
-            "string" == typeof b && e[b]()
-        })
-    }
-    var d = function (b, c) {
-        this.$element = a(b),
-        this.options = a.extend({}, d.DEFAULTS, c),
-        this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'),
-        this.transitioning = null,
-        this.options.parent
-            ? this.$parent = this.getParent()
-            : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
-        this.options.toggle && this.toggle()
-    };
-    d.VERSION = "3.3.7",
-    d.TRANSITION_DURATION = 350,
-    d.DEFAULTS = {
-        toggle: !0
-    },
-    d.prototype.dimension = function () {
-        var a = this
-            .$element
-            .hasClass("width");
-        return a
-            ? "width"
-            : "height"
-    },
-    d.prototype.show = function () {
-        if (!this.transitioning && !this.$element.hasClass("in")) {
-            var b,
-                e = this.$parent && this
-                    .$parent
-                    .children(".panel")
-                    .children(".in, .collapsing");
-            if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) {
-                var f = a.Event("show.bs.collapse");
-                if (this.$element.trigger(f), !f.isDefaultPrevented()) {
-                    e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null));
-                    var g = this.dimension();
-                    this
-                        .$element
-                        .removeClass("collapse")
-                        .addClass("collapsing")[g](0)
-                        .attr("aria-expanded", !0),
-                    this
-                        .$trigger
-                        .removeClass("collapsed")
-                        .attr("aria-expanded", !0),
-                    this.transitioning = 1;
-                    var h = function () {
-                        this
-                            .$element
-                            .removeClass("collapsing")
-                            .addClass("collapse in")[g](""),
-                        this.transitioning = 0,
-                        this
-                            .$element
-                            .trigger("shown.bs.collapse")
-                    };
-                    if (!a.support.transition) 
-                        return h.call(this);
-                    var i = a.camelCase(["scroll", g].join("-"));
-                    this
-                        .$element
-                        .one("bsTransitionEnd", a.proxy(h, this))
-                        .emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])
-                }
-            }
-        }
-    },
-    d.prototype.hide = function () {
-        if (!this.transitioning && this.$element.hasClass("in")) {
-            var b = a.Event("hide.bs.collapse");
-            if (this.$element.trigger(b), !b.isDefaultPrevented()) {
-                var c = this.dimension();
-                this.$element[c](this.$element[c]())[0].offsetHeight,
-                this
-                    .$element
-                    .addClass("collapsing")
-                    .removeClass("collapse in")
-                    .attr("aria-expanded", !1),
-                this
-                    .$trigger
-                    .addClass("collapsed")
-                    .attr("aria-expanded", !1),
-                this.transitioning = 1;
-                var e = function () {
-                    this.transitioning = 0,
-                    this
-                        .$element
-                        .removeClass("collapsing")
-                        .addClass("collapse")
-                        .trigger("hidden.bs.collapse")
-                };
-                return a.support.transition
-                    ? void this
-                        .$element[c](0)
-                        .one("bsTransitionEnd", a.proxy(e, this))
-                        .emulateTransitionEnd(d.TRANSITION_DURATION)
-                    : e.call(this)
-            }
-        }
-    },
-    d.prototype.toggle = function () {
-        this[this
-                .$element
-                .hasClass("in")
-                ? "hide"
-                : "show"]()
-    },
-    d.prototype.getParent = function () {
-        return a(this.options.parent)
-            .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
-            .each(a.proxy(function (c, d) {
-                var e = a(d);
-                this.addAriaAndCollapsedClass(b(e), e)
-            }, this))
-            .end()
-    },
-    d.prototype.addAriaAndCollapsedClass = function (a, b) {
-        var c = a.hasClass("in");
-        a.attr("aria-expanded", c),
-        b
-            .toggleClass("collapsed", !c)
-            .attr("aria-expanded", c)
-    };
-    var e = a.fn.collapse;
-    a.fn.collapse = c,
-    a.fn.collapse.Constructor = d,
-    a.fn.collapse.noConflict = function () {
-        return a.fn.collapse = e,
-        this
-    },
-    a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (d) {
-        var e = a(this);
-        e.attr("data-target") || d.preventDefault();
-        var f = b(e),
-            g = f.data("bs.collapse"),
-            h = g
-                ? "toggle"
-                : e.data();
-        c.call(f, h)
-    })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        var c = b.attr("data-target");
-        c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
-        var d = c && a(c);
-        return d && d.length
-            ? d
-            : b.parent()
-    }
-    function c(c) {
-        c && 3 === c.which || (a(e).remove(), a(f).each(function () {
-            var d = a(this),
-                e = b(d),
-                f = {
-                    relatedTarget: this
-                };
-            e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass("open").trigger(a.Event("hidden.bs.dropdown", f)))))
-        }))
-    }
-    function d(b) {
-        return this.each(function () {
-            var c = a(this),
-                d = c.data("bs.dropdown");
-            d || c.data("bs.dropdown", d = new g(this)),
-            "string" == typeof b && d[b].call(c)
-        })
-    }
-    var e = ".dropdown-backdrop",
-        f = '[data-toggle="dropdown"]',
-        g = function (b) {
-            a(b).on("click.bs.dropdown", this.toggle)
-        };
-    g.VERSION = "3.3.7",
-    g.prototype.toggle = function (d) {
-        var e = a(this);
-        if (!e.is(".disabled, :disabled")) {
-            var f = b(e),
-                g = f.hasClass("open");
-            if (c(), !g) {
-                "ontouchstart" in document.documentElement && !f
-                    .closest(".navbar-nav")
-                    .length && a(document.createElement("div"))
-                    .addClass("dropdown-backdrop")
-                    .insertAfter(a(this))
-                    .on("click", c);
-                var h = {
-                    relatedTarget: this
-                };
-                if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) 
-                    return;
-                e
-                    .trigger("focus")
-                    .attr("aria-expanded", "true"),
-                f
-                    .toggleClass("open")
-                    .trigger(a.Event("shown.bs.dropdown", h))
-            }
-            return !1
-        }
-    },
-    g.prototype.keydown = function (c) {
-        if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
-            var d = a(this);
-            if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
-                var e = b(d),
-                    g = e.hasClass("open");
-                if (!g && 27 != c.which || g && 27 == c.which) 
-                    return 27 == c.which && e.find(f).trigger("focus"),
-                    d.trigger("click");
-                var h = " li:not(.disabled):visible a",
-                    i = e.find(".dropdown-menu" + h);
-                if (i.length) {
-                    var j = i.index(c.target);
-                    38 == c.which && j > 0 && j--,
-                    40 == c.which && j < i.length - 1 && j++, ~ j || (j = 0),
-                    i
-                        .eq(j)
-                        .trigger("focus")
-                }
-            }
-        }
-    };
-    var h = a.fn.dropdown;
-    a.fn.dropdown = d,
-    a.fn.dropdown.Constructor = g,
-    a.fn.dropdown.noConflict = function () {
-        return a.fn.dropdown = h,
-        this
-    },
-    a(document)
-        .on("click.bs.dropdown.data-api", c)
-        .on("click.bs.dropdown.data-api", ".dropdown form", function (a) {
-            a.stopPropagation()
-        })
-        .on("click.bs.dropdown.data-api", f, g.prototype.toggle)
-        .on("keydown.bs.dropdown.data-api", f, g.prototype.keydown)
-        .on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b, d) {
-        return this.each(function () {
-            var e = a(this),
-                f = e.data("bs.modal"),
-                g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
-            f || e.data("bs.modal", f = new c(this, g)),
-            "string" == typeof b
-                ? f[b](d)
-                : g.show && f.show(d)
-        })
-    }
-    var c = function (b, c) {
-        this.options = c,
-        this.$body = a(document.body),
-        this.$element = a(b),
-        this.$dialog = this
-            .$element
-            .find(".modal-dialog"),
-        this.$backdrop = null,
-        this.isShown = null,
-        this.originalBodyPad = null,
-        this.scrollbarWidth = 0,
-        this.ignoreBackdropClick = !1,
-        this.options.remote && this
-            .$element
-            .find(".modal-content")
-            .load(this.options.remote, a.proxy(function () {
-                this
-                    .$element
-                    .trigger("loaded.bs.modal")
-            }, this))
-    };
-    c.VERSION = "3.3.7",
-    c.TRANSITION_DURATION = 300,
-    c.BACKDROP_TRANSITION_DURATION = 150,
-    c.DEFAULTS = {
-        backdrop: !0,
-        keyboard: !0,
-        show: !0
-    },
-    c.prototype.toggle = function (a) {
-        return this.isShown
-            ? this.hide()
-            : this.show(a)
-    },
-    c.prototype.show = function (b) {
-        var d = this,
-            e = a.Event("show.bs.modal", {relatedTarget: b});
-        this
-            .$element
-            .trigger(e),
-        this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function () {
-            d
-                .$element
-                .one("mouseup.dismiss.bs.modal", function (b) {
-                    a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
-                })
-        }), this.backdrop(function () {
-            var e = a.support.transition && d
-                .$element
-                .hasClass("fade");
-            d
-                .$element
-                .parent()
-                .length || d
-                .$element
-                .appendTo(d.$body),
-            d
-                .$element
-                .show()
-                .scrollTop(0),
-            d.adjustDialog(),
-            e && d.$element[0].offsetWidth,
-            d
-                .$element
-                .addClass("in"),
-            d.enforceFocus();
-            var f = a.Event("shown.bs.modal", {relatedTarget: b});
-            e
-                ? d
-                    .$dialog
-                    .one("bsTransitionEnd", function () {
-                        d
-                            .$element
-                            .trigger("focus")
-                            .trigger(f)
-                    })
-                    .emulateTransitionEnd(c.TRANSITION_DURATION)
-                : d
-                    .$element
-                    .trigger("focus")
-                    .trigger(f)
-        }))
-    },
-    c.prototype.hide = function (b) {
-        b && b.preventDefault(),
-        b = a.Event("hide.bs.modal"),
-        this
-            .$element
-            .trigger(b),
-        this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade")
-            ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION)
-            : this.hideModal())
-    },
-    c.prototype.enforceFocus = function () {
-        a(document)
-            .off("focusin.bs.modal")
-            .on("focusin.bs.modal", a.proxy(function (a) {
-                document === a.target || this.$element[0] === a.target || this
-                    .$element
-                    .has(a.target)
-                    .length || this
-                    .$element
-                    .trigger("focus")
-            }, this))
-    },
-    c.prototype.escape = function () {
-        this.isShown && this.options.keyboard
-            ? this
-                .$element
-                .on("keydown.dismiss.bs.modal", a.proxy(function (a) {
-                    27 == a.which && this.hide()
-                }, this))
-            : this.isShown || this
-                .$element
-                .off("keydown.dismiss.bs.modal")
-    },
-    c.prototype.resize = function () {
-        this.isShown
-            ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this))
-            : a(window).off("resize.bs.modal")
-    },
-    c.prototype.hideModal = function () {
-        var a = this;
-        this
-            .$element
-            .hide(),
-        this.backdrop(function () {
-            a
-                .$body
-                .removeClass("modal-open"),
-            a.resetAdjustments(),
-            a.resetScrollbar(),
-            a
-                .$element
-                .trigger("hidden.bs.modal")
-        })
-    },
-    c.prototype.removeBackdrop = function () {
-        this.$backdrop && this
-            .$backdrop
-            .remove(),
-        this.$backdrop = null
-    },
-    c.prototype.backdrop = function (b) {
-        var d = this,
-            e = this
-                .$element
-                .hasClass("fade")
-                ? "fade"
-                : "";
-        if (this.isShown && this.options.backdrop) {
-            var f = a.support.transition && e;
-            if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function (a) {
-                return this.ignoreBackdropClick
-                    ? void(this.ignoreBackdropClick = !1)
-                    : void(a.target === a.currentTarget && ("static" == this.options.backdrop
-                        ? this.$element[0].focus()
-                        : this.hide()))
-            }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) 
-                return;
-            f
-                ? this
-                    .$backdrop
-                    .one("bsTransitionEnd", b)
-                    .emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION)
-                : b()
-        } else if (!this.isShown && this.$backdrop) {
-            this
-                .$backdrop
-                .removeClass("in");
-            var g = function () {
-                d.removeBackdrop(),
-                b && b()
-            };
-            a.support.transition && this
-                .$element
-                .hasClass("fade")
-                ? this
-                    .$backdrop
-                    .one("bsTransitionEnd", g)
-                    .emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION)
-                : g()
-        } else 
-            b && b()
-    },
-    c.prototype.handleUpdate = function () {
-        this.adjustDialog()
-    },
-    c.prototype.adjustDialog = function () {
-        var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
-        this
-            .$element
-            .css({
-                paddingLeft: !this.bodyIsOverflowing && a
-                    ? this.scrollbarWidth
-                    : "",
-                paddingRight: this.bodyIsOverflowing && !a
-                    ? this.scrollbarWidth
-                    : ""
-            })
-    },
-    c.prototype.resetAdjustments = function () {
-        this
-            .$element
-            .css({paddingLeft: "", paddingRight: ""})
-    },
-    c.prototype.checkScrollbar = function () {
-        var a = window.innerWidth;
-        if (!a) {
-            var b = document
-                .documentElement
-                .getBoundingClientRect();
-            a = b.right - Math.abs(b.left)
-        }
-        this.bodyIsOverflowing = document.body.clientWidth < a,
-        this.scrollbarWidth = this.measureScrollbar()
-    },
-    c.prototype.setScrollbar = function () {
-        var a = parseInt(this.$body.css("padding-right") || 0, 10);
-        this.originalBodyPad = document.body.style.paddingRight || "",
-        this.bodyIsOverflowing && this
-            .$body
-            .css("padding-right", a + this.scrollbarWidth)
-    },
-    c.prototype.resetScrollbar = function () {
-        this
-            .$body
-            .css("padding-right", this.originalBodyPad)
-    },
-    c.prototype.measureScrollbar = function () {
-        var a = document.createElement("div");
-        a.className = "modal-scrollbar-measure",
-        this
-            .$body
-            .append(a);
-        var b = a.offsetWidth - a.clientWidth;
-        return this
-            .$body[0]
-            .removeChild(a),
-        b
-    };
-    var d = a.fn.modal;
-    a.fn.modal = b,
-    a.fn.modal.Constructor = c,
-    a.fn.modal.noConflict = function () {
-        return a.fn.modal = d,
-        this
-    },
-    a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (c) {
-        var d = a(this),
-            e = d.attr("href"),
-            f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
-            g = f.data("bs.modal")
-                ? "toggle"
-                : a.extend({
-                    remote: !/#/.test(e) && e
-                }, f.data(), d.data());
-        d.is("a") && c.preventDefault(),
-        f.one("show.bs.modal", function (a) {
-            a.isDefaultPrevented() || f.one("hidden.bs.modal", function () {
-                d.is(":visible") && d.trigger("focus")
-            })
-        }),
-        b.call(f, g, this)
-    })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.tooltip"),
-                f = "object" == typeof b && b;
-            !e && /destroy|hide/.test(b) || (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
-        })
-    }
-    var c = function (a, b) {
-        this.type = null,
-        this.options = null,
-        this.enabled = null,
-        this.timeout = null,
-        this.hoverState = null,
-        this.$element = null,
-        this.inState = null,
-        this.init("tooltip", a, b)
-    };
-    c.VERSION = "3.3.7",
-    c.TRANSITION_DURATION = 150,
-    c.DEFAULTS = {
-        animation: !0,
-        placement: "top",
-        selector: !1,
-        template: '',
-        trigger: "hover focus",
-        title: "",
-        delay: 0,
-        html: !1,
-        container: !1,
-        viewport: {
-            selector: "body",
-            padding: 0
-        }
-    },
-    c.prototype.init = function (b, c, d) {
-        if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport)
-            ? this.options.viewport.call(this, this.$element)
-            : this.options.viewport.selector || this.options.viewport), this.inState = {
-            click: !1,
-            hover: !1,
-            focus: !1
-        }, this.$element[0]instanceof document.constructor && !this.options.selector) 
-            throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
-        for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
-            var g = e[f];
-            if ("click" == g) 
-                this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
-            else if ("manual" != g) {
-                var h = "hover" == g
-                        ? "mouseenter"
-                        : "focusin",
-                    i = "hover" == g
-                        ? "mouseleave"
-                        : "focusout";
-                this
-                    .$element
-                    .on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)),
-                this
-                    .$element
-                    .on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
-            }
-        }
-        this.options.selector
-            ? this._options = a.extend({}, this.options, {
-                trigger: "manual",
-                selector: ""
-            })
-            : this.fixTitle()
-    },
-    c.prototype.getDefaults = function () {
-        return c.DEFAULTS
-    },
-    c.prototype.getOptions = function (b) {
-        return b = a.extend({}, this.getDefaults(), this.$element.data(), b),
-        b.delay && "number" == typeof b.delay && (b.delay = {
-            show: b.delay,
-            hide: b.delay
-        }),
-        b
-    },
-    c.prototype.getDelegateOptions = function () {
-        var b = {},
-            c = this.getDefaults();
-        return this._options && a.each(this._options, function (a, d) {
-            c[a] != d && (b[a] = d)
-        }),
-        b
-    },
-    c.prototype.enter = function (b) {
-        var c = b instanceof this.constructor
-            ? b
-            : a(b.currentTarget).data("bs." + this.type);
-        return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)),
-        b instanceof a.Event && (c.inState["focusin" == b.type
-                ? "focus"
-                : "hover"] = !0),
-        c
-            .tip()
-            .hasClass("in") || "in" == c.hoverState
-            ? void(c.hoverState = "in")
-            : (clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show
-                ? void(c.timeout = setTimeout(function () {
-                    "in" == c.hoverState && c.show()
-                }, c.options.delay.show))
-                : c.show())
-    },
-    c.prototype.isInStateTrue = function () {
-        for (var a in this.inState) 
-            if (this.inState[a]) 
-                return !0;
-    return !1
-    },
-    c.prototype.leave = function (b) {
-        var c = b instanceof this.constructor
-            ? b
-            : a(b.currentTarget).data("bs." + this.type);
-        if (c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type
-                ? "focus"
-                : "hover"] = !1), !c.isInStateTrue()) 
-            return clearTimeout(c.timeout),
-            c.hoverState = "out",
-            c.options.delay && c.options.delay.hide
-                ? void(c.timeout = setTimeout(function () {
-                    "out" == c.hoverState && c.hide()
-                }, c.options.delay.hide))
-                : c.hide()
-        },
-    c.prototype.show = function () {
-        var b = a.Event("show.bs." + this.type);
-        if (this.hasContent() && this.enabled) {
-            this
-                .$element
-                .trigger(b);
-            var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
-            if (b.isDefaultPrevented() || !d) 
-                return;
-            var e = this,
-                f = this.tip(),
-                g = this.getUID(this.type);
-            this.setContent(),
-            f.attr("id", g),
-            this
-                .$element
-                .attr("aria-describedby", g),
-            this.options.animation && f.addClass("fade");
-            var h = "function" == typeof this.options.placement
-                    ? this
-                        .options
-                        .placement
-                        .call(this, f[0], this.$element[0])
-                    : this.options.placement,
-                i = /\s?auto?\s?/i,
-                j = i.test(h);
-            j && (h = h.replace(i, "") || "top"),
-            f
-                .detach()
-                .css({top: 0, left: 0, display: "block"})
-                .addClass(h)
-                .data("bs." + this.type, this),
-            this.options.container
-                ? f.appendTo(this.options.container)
-                : f.insertAfter(this.$element),
-            this
-                .$element
-                .trigger("inserted.bs." + this.type);
-            var k = this.getPosition(),
-                l = f[0].offsetWidth,
-                m = f[0].offsetHeight;
-            if (j) {
-                var n = h,
-                    o = this.getPosition(this.$viewport);
-                h = "bottom" == h && k.bottom + m > o.bottom
-                    ? "top"
-                    : "top" == h && k.top - m < o.top
-                        ? "bottom"
-                        : "right" == h && k.right + l > o.width
-                            ? "left"
-                            : "left" == h && k.left - l < o.left
-                                ? "right"
-                                : h,
-                f
-                    .removeClass(n)
-                    .addClass(h)
-            }
-            var p = this.getCalculatedOffset(h, k, l, m);
-            this.applyPlacement(p, h);
-            var q = function () {
-                var a = e.hoverState;
-                e
-                    .$element
-                    .trigger("shown.bs." + e.type),
-                e.hoverState = null,
-                "out" == a && e.leave(e)
-            };
-            a.support.transition && this
-                .$tip
-                .hasClass("fade")
-                ? f
-                    .one("bsTransitionEnd", q)
-                    .emulateTransitionEnd(c.TRANSITION_DURATION)
-                : q()
-        }
-    },
-    c.prototype.applyPlacement = function (b, c) {
-        var d = this.tip(),
-            e = d[0].offsetWidth,
-            f = d[0].offsetHeight,
-            g = parseInt(d.css("margin-top"), 10),
-            h = parseInt(d.css("margin-left"), 10);
-        isNaN(g) && (g = 0),
-        isNaN(h) && (h = 0),
-        b.top += g,
-        b.left += h,
-        a
-            .offset
-            .setOffset(d[0], a.extend({
-                using: function (a) {
-                    d.css({
-                        top: Math.round(a.top),
-                        left: Math.round(a.left)
-                    })
-                }
-            }, b), 0),
-        d.addClass("in");
-        var i = d[0].offsetWidth,
-            j = d[0].offsetHeight;
-        "top" == c && j != f && (b.top = b.top + f - j);
-        var k = this.getViewportAdjustedDelta(c, b, i, j);
-        k.left
-            ? b.left += k.left
-            : b.top += k.top;
-        var l = /top|bottom/.test(c),
-            m = l
-                ? 2 * k.left - e + i
-                : 2 * k.top - f + j,
-            n = l
-                ? "offsetWidth"
-                : "offsetHeight";
-        d.offset(b),
-        this.replaceArrow(m, d[0][n], l)
-    },
-    c.prototype.replaceArrow = function (a, b, c) {
-        this
-            .arrow()
-            .css(c
-                ? "left"
-                : "top", 50 * (1 - a / b) + "%")
-            .css(c
-                ? "top"
-                : "left", "")
-    },
-    c.prototype.setContent = function () {
-        var a = this.tip(),
-            b = this.getTitle();
-        a.find(".tooltip-inner")[this.options.html
-                ? "html"
-                : "text"](b),
-        a.removeClass("fade in top bottom left right")
-    },
-    c.prototype.hide = function (b) {
-        function d() {
-            "in" != e.hoverState && f.detach(),
-            e.$element && e
-                .$element
-                .removeAttr("aria-describedby")
-                .trigger("hidden.bs." + e.type),
-            b && b()
-        }
-        var e = this,
-            f = a(this.$tip),
-            g = a.Event("hide.bs." + this.type);
-        if (this.$element.trigger(g), !g.isDefaultPrevented()) 
-            return f.removeClass("in"),
-            a.support.transition && f.hasClass("fade")
-                ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION)
-                : d(),
-            this.hoverState = null,
-            this
-    },
-    c.prototype.fixTitle = function () {
-        var a = this.$element;
-        (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
-    },
-    c.prototype.hasContent = function () {
-        return this.getTitle()
-    },
-    c.prototype.getPosition = function (b) {
-        b = b || this.$element;
-        var c = b[0],
-            d = "BODY" == c.tagName,
-            e = c.getBoundingClientRect();
-        null == e.width && (e = a.extend({}, e, {
-            width: e.right - e.left,
-            height: e.bottom - e.top
-        }));
-        var f = window.SVGElement && c instanceof window.SVGElement,
-            g = d
-                ? {
-                    top: 0,
-                    left: 0
-                }
-                : f
-                    ? null
-                    : b.offset(),
-            h = {
-                scroll: d
-                    ? document.documentElement.scrollTop || document.body.scrollTop
-                    : b.scrollTop()
-            },
-            i = d
-                ? {
-                    width: a(window).width(),
-                    height: a(window).height()
-                }
-                : null;
-        return a.extend({}, e, h, i, g)
-    },
-    c.prototype.getCalculatedOffset = function (a, b, c, d) {
-        return "bottom" == a
-            ? {
-                top: b.top + b.height,
-                left: b.left + b.width / 2 - c / 2
-            }
-            : "top" == a
-                ? {
-                    top: b.top - d,
-                    left: b.left + b.width / 2 - c / 2
-                }
-                : "left" == a
-                    ? {
-                        top: b.top + b.height / 2 - d / 2,
-                        left: b.left - c
-                    }
-                    : {
-                        top: b.top + b.height / 2 - d / 2,
-                        left: b.left + b.width
-                    }
-    },
-    c.prototype.getViewportAdjustedDelta = function (a, b, c, d) {
-        var e = {
-            top: 0,
-            left: 0
-        };
-        if (!this.$viewport) 
-            return e;
-        var f = this.options.viewport && this.options.viewport.padding || 0,
-            g = this.getPosition(this.$viewport);
-        if (/right|left/.test(a)) {
-            var h = b.top - f - g.scroll,
-                i = b.top + f - g.scroll + d;
-            h < g.top
-                ? e.top = g.top - h
-                : i > g.top + g.height && (e.top = g.top + g.height - i)
-        } else {
-            var j = b.left - f,
-                k = b.left + f + c;
-            j < g.left
-                ? e.left = g.left - j
-                : k > g.right && (e.left = g.left + g.width - k)
-        }
-        return e
-    },
-    c.prototype.getTitle = function () {
-        var a,
-            b = this.$element,
-            c = this.options;
-        return a = b.attr("data-original-title") || ("function" == typeof c.title
-            ? c.title.call(b[0])
-            : c.title)
-    },
-    c.prototype.getUID = function (a) {
-        do 
-            a += ~~ (1e6 * Math.random());
-        while (document.getElementById(a));
-        return a
-    },
-    c.prototype.tip = function () {
-        if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) 
-            throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
-        return this.$tip
-    },
-    c.prototype.arrow = function () {
-        return this.$arrow = this.$arrow || this
-            .tip()
-            .find(".tooltip-arrow")
-    },
-    c.prototype.enable = function () {
-        this.enabled = !0
-    },
-    c.prototype.disable = function () {
-        this.enabled = !1
-    },
-    c.prototype.toggleEnabled = function () {
-        this.enabled = !this.enabled
-    },
-    c.prototype.toggle = function (b) {
-        var c = this;
-        b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))),
-        b
-            ? (c.inState.click = !c.inState.click, c.isInStateTrue()
-                ? c.enter(c)
-                : c.leave(c))
-            : c
-                .tip()
-                .hasClass("in")
-                ? c.leave(c)
-                : c.enter(c)
-    },
-    c.prototype.destroy = function () {
-        var a = this;
-        clearTimeout(this.timeout),
-        this.hide(function () {
-            a
-                .$element
-                .off("." + a.type)
-                .removeData("bs." + a.type),
-            a.$tip && a
-                .$tip
-                .detach(),
-            a.$tip = null,
-            a.$arrow = null,
-            a.$viewport = null,
-            a.$element = null
-        })
-    };
-    var d = a.fn.tooltip;
-    a.fn.tooltip = b,
-    a.fn.tooltip.Constructor = c,
-    a.fn.tooltip.noConflict = function () {
-        return a.fn.tooltip = d,
-        this
-    }
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.popover"),
-                f = "object" == typeof b && b;
-            !e && /destroy|hide/.test(b) || (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
-        })
-    }
-    var c = function (a, b) {
-        this.init("popover", a, b)
-    };
-    if (!a.fn.tooltip) 
-        throw new Error("Popover requires tooltip.js");
-    c.VERSION = "3.3.7",
-    c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
-        placement: "right",
-        trigger: "click",
-        content: "",
-        template: ''
-    }),
-    c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype),
-    c.prototype.constructor = c,
-    c.prototype.getDefaults = function () {
-        return c.DEFAULTS
-    },
-    c.prototype.setContent = function () {
-        var a = this.tip(),
-            b = this.getTitle(),
-            c = this.getContent();
-        a.find(".popover-title")[this.options.html
-                ? "html"
-                : "text"](b),
-        a
-            .find(".popover-content")
-            .children()
-            .detach()
-            .end()[this.options.html
-                    ? "string" == typeof c
-                        ? "html"
-                        : "append"
-                    : "text"](c),
-        a.removeClass("fade top bottom left right in"),
-        a
-            .find(".popover-title")
-            .html() || a
-            .find(".popover-title")
-            .hide()
-    },
-    c.prototype.hasContent = function () {
-        return this.getTitle() || this.getContent()
-    },
-    c.prototype.getContent = function () {
-        var a = this.$element,
-            b = this.options;
-        return a.attr("data-content") || ("function" == typeof b.content
-            ? b.content.call(a[0])
-            : b.content)
-    },
-    c.prototype.arrow = function () {
-        return this.$arrow = this.$arrow || this
-            .tip()
-            .find(".arrow")
-    };
-    var d = a.fn.popover;
-    a.fn.popover = b,
-    a.fn.popover.Constructor = c,
-    a.fn.popover.noConflict = function () {
-        return a.fn.popover = d,
-        this
-    }
-}(jQuery), + function (a) {
-    "use strict";
-    function b(c, d) {
-        this.$body = a(document.body),
-        this.$scrollElement = a(a(c).is(document.body)
-            ? window
-            : c),
-        this.options = a.extend({}, b.DEFAULTS, d),
-        this.selector = (this.options.target || "") + " .nav li > a",
-        this.offsets = [],
-        this.targets = [],
-        this.activeTarget = null,
-        this.scrollHeight = 0,
-        this
-            .$scrollElement
-            .on("scroll.bs.scrollspy", a.proxy(this.process, this)),
-        this.refresh(),
-        this.process()
-    }
-    function c(c) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.scrollspy"),
-                f = "object" == typeof c && c;
-            e || d.data("bs.scrollspy", e = new b(this, f)),
-            "string" == typeof c && e[c]()
-        })
-    }
-    b.VERSION = "3.3.7",
-    b.DEFAULTS = {
-        offset: 10
-    },
-    b.prototype.getScrollHeight = function () {
-        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-    },
-    b.prototype.refresh = function () {
-        var b = this,
-            c = "offset",
-            d = 0;
-        this.offsets = [],
-        this.targets = [],
-        this.scrollHeight = this.getScrollHeight(),
-        a.isWindow(this.$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()),
-        this
-            .$body
-            .find(this.selector)
-            .map(function () {
-                var b = a(this),
-                    e = b.data("target") || b.attr("href"),
-                    f = /^#./.test(e) && a(e);
-                return f && f.length && f.is(":visible") && [
-                    [
-                        f[c]().top + d,
-                        e
-                    ]
-                ] || null
-            })
-            .sort(function (a, b) {
-                return a[0] - b[0]
-            })
-            .each(function () {
-                b
-                    .offsets
-                    .push(this[0]),
-                b
-                    .targets
-                    .push(this[1])
-            })
-    },
-    b.prototype.process = function () {
-        var a,
-            b = this
-                .$scrollElement
-                .scrollTop() + this.options.offset,
-            c = this.getScrollHeight(),
-            d = this.options.offset + c - this
-                .$scrollElement
-                .height(),
-            e = this.offsets,
-            f = this.targets,
-            g = this.activeTarget;
-        if (this.scrollHeight != c && this.refresh(), b >= d) 
-            return g != (a = f[f.length - 1]) && this.activate(a);
-        if (g && b < e[0]) 
-            return this.activeTarget = null,
-            this.clear();
-        for (a = e.length; a--;) 
-            g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
-    },
-    b.prototype.activate = function (b) {
-        this.activeTarget = b,
-        this.clear();
-        var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
-            d = a(c)
-                .parents("li")
-                .addClass("active");
-        d
-            .parent(".dropdown-menu")
-            .length && (d = d.closest("li.dropdown").addClass("active")),
-        d.trigger("activate.bs.scrollspy")
-    },
-    b.prototype.clear = function () {
-        a(this.selector)
-            .parentsUntil(this.options.target, ".active")
-            .removeClass("active")
-    };
-    var d = a.fn.scrollspy;
-    a.fn.scrollspy = c,
-    a.fn.scrollspy.Constructor = b,
-    a.fn.scrollspy.noConflict = function () {
-        return a.fn.scrollspy = d,
-        this
-    },
-    a(window).on("load.bs.scrollspy.data-api", function () {
-        a('[data-spy="scroll"]')
-            .each(function () {
-                var b = a(this);
-                c.call(b, b.data())
-            })
-    })
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.tab");
-            e || d.data("bs.tab", e = new c(this)),
-            "string" == typeof b && e[b]()
-        })
-    }
-    var c = function (b) {
-        this.element = a(b)
-    };
-    c.VERSION = "3.3.7",
-    c.TRANSITION_DURATION = 150,
-    c.prototype.show = function () {
-        var b = this.element,
-            c = b.closest("ul:not(.dropdown-menu)"),
-            d = b.data("target");
-        if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
-            var e = c.find(".active:last a"),
-                f = a.Event("hide.bs.tab", {relatedTarget: b[0]}),
-                g = a.Event("show.bs.tab", {relatedTarget: e[0]});
-            if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
-                var h = a(d);
-                this.activate(b.closest("li"), c),
-                this.activate(h, h.parent(), function () {
-                    e.trigger({type: "hidden.bs.tab", relatedTarget: b[0]}),
-                    b.trigger({type: "shown.bs.tab", relatedTarget: e[0]})
-                })
-            }
-        }
-    },
-    c.prototype.activate = function (b, d, e) {
-        function f() {
-            g
-                .removeClass("active")
-                .find("> .dropdown-menu > .active")
-                .removeClass("active")
-                .end()
-                .find('[data-toggle="tab"]')
-                .attr("aria-expanded", !1),
-            b
-                .addClass("active")
-                .find('[data-toggle="tab"]')
-                .attr("aria-expanded", !0),
-            h
-                ? (b[0].offsetWidth, b.addClass("in"))
-                : b.removeClass("fade"),
-            b
-                .parent(".dropdown-menu")
-                .length && b
-                .closest("li.dropdown")
-                .addClass("active")
-                .end()
-                .find('[data-toggle="tab"]')
-                .attr("aria-expanded", !0),
-            e && e()
-        }
-        var g = d.find("> .active"),
-            h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
-        g.length && h
-            ? g
-                .one("bsTransitionEnd", f)
-                .emulateTransitionEnd(c.TRANSITION_DURATION)
-            : f(),
-        g.removeClass("in")
-    };
-    var d = a.fn.tab;
-    a.fn.tab = b,
-    a.fn.tab.Constructor = c,
-    a.fn.tab.noConflict = function () {
-        return a.fn.tab = d,
-        this
-    };
-    var e = function (c) {
-        c.preventDefault(),
-        b.call(a(this), "show")
-    };
-    a(document)
-        .on("click.bs.tab.data-api", '[data-toggle="tab"]', e)
-        .on("click.bs.tab.data-api", '[data-toggle="pill"]', e)
-}(jQuery), + function (a) {
-    "use strict";
-    function b(b) {
-        return this.each(function () {
-            var d = a(this),
-                e = d.data("bs.affix"),
-                f = "object" == typeof b && b;
-            e || d.data("bs.affix", e = new c(this, f)),
-            "string" == typeof b && e[b]()
-        })
-    }
-    var c = function (b, d) {
-        this.options = a.extend({}, c.DEFAULTS, d),
-        this.$target = a(this.options.target)
-            .on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this))
-            .on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)),
-        this.$element = a(b),
-        this.affixed = null,
-        this.unpin = null,
-        this.pinnedOffset = null,
-        this.checkPosition()
-    };
-    c.VERSION = "3.3.7",
-    c.RESET = "affix affix-top affix-bottom",
-    c.DEFAULTS = {
-        offset: 0,
-        target: window
-    },
-    c.prototype.getState = function (a, b, c, d) {
-        var e = this
-                .$target
-                .scrollTop(),
-            f = this
-                .$element
-                .offset(),
-            g = this
-                .$target
-                .height();
-        if (null != c && "top" == this.affixed) 
-            return e < c && "top";
-        if ("bottom" == this.affixed) 
-            return null != c
-                ? !(e + this.unpin <= f.top) && "bottom"
-                : !(e + g <= a - d) && "bottom";
-        var h = null == this.affixed,
-            i = h
-                ? e
-                : f.top,
-            j = h
-                ? g
-                : b;
-        return null != c && e <= c
-            ? "top"
-            : null != d && i + j >= a - d && "bottom"
-    },
-    c.prototype.getPinnedOffset = function () {
-        if (this.pinnedOffset) 
-            return this.pinnedOffset;
-        this
-            .$element
-            .removeClass(c.RESET)
-            .addClass("affix");
-        var a = this
-                .$target
-                .scrollTop(),
-            b = this
-                .$element
-                .offset();
-        return this.pinnedOffset = b.top - a
-    },
-    c.prototype.checkPositionWithEventLoop = function () {
-        setTimeout(a.proxy(this.checkPosition, this), 1)
-    },
-    c.prototype.checkPosition = function () {
-        if (this.$element.is(":visible")) {
-            var b = this
-                    .$element
-                    .height(),
-                d = this.options.offset,
-                e = d.top,
-                f = d.bottom,
-                g = Math.max(a(document).height(), a(document.body).height());
-            "object" != typeof d && (f = e = d),
-            "function" == typeof e && (e = d.top(this.$element)),
-            "function" == typeof f && (f = d.bottom(this.$element));
-            var h = this.getState(g, b, e, f);
-            if (this.affixed != h) {
-                null != this.unpin && this
-                    .$element
-                    .css("top", "");
-                var i = "affix" + (h
-                        ? "-" + h
-                        : ""),
-                    j = a.Event(i + ".bs.affix");
-                if (this.$element.trigger(j), j.isDefaultPrevented()) 
-                    return;
-                this.affixed = h,
-                this.unpin = "bottom" == h
-                    ? this.getPinnedOffset()
-                    : null,
-                this
-                    .$element
-                    .removeClass(c.RESET)
-                    .addClass(i)
-                    .trigger(i.replace("affix", "affixed") + ".bs.affix")
-            }
-            "bottom" == h && this
-                .$element
-                .offset({
-                    top: g - b - f
-                })
-        }
-    };
-    var d = a.fn.affix;
-    a.fn.affix = b,
-    a.fn.affix.Constructor = c,
-    a.fn.affix.noConflict = function () {
-        return a.fn.affix = d,
-        this
-    },
-    a(window).on("load", function () {
-        a('[data-spy="affix"]')
-            .each(function () {
-                var c = a(this),
-                    d = c.data();
-                d.offset = d.offset || {},
-                null != d.offsetBottom && (d.offset.bottom = d.offsetBottom),
-                null != d.offsetTop && (d.offset.top = d.offsetTop),
-                b.call(c, d)
-            })
-    })
-}(jQuery);
\ No newline at end of file
diff --git a/assets/js/d3.min.js b/assets/js/d3.min.js
deleted file mode 100644
index e47efc6..0000000
--- a/assets/js/d3.min.js
+++ /dev/null
@@ -1,15924 +0,0 @@
-// https://d3js.org Version 4.3.0. Copyright 2016 Mike Bostock.
-(function (t, n) {
-    "object" == typeof exports && "undefined" != typeof module
-        ? n(exports)
-        : "function" == typeof define && define.amd
-            ? define(["exports"], n)
-            : n(t.d3 = t.d3 || {})
-})(this, function (t) {
-    "use strict";
-    function n(t) {
-        return function (n, e) {
-            return Ms(t(n), e)
-        }
-    }
-    function e(t, n, e) {
-        var r = Math.abs(n - t) / Math.max(0, e),
-            i = Math.pow(10, Math.floor(Math.log(r) / Math.LN10)),
-            o = r / i;
-        return o >= Fs
-            ? i *= 10
-            : o >= Is
-                ? i *= 5
-                : o >= Ys && (i *= 2),
-        n < t
-            ? -i
-            : i
-    }
-    function r(t) {
-        return t.length
-    }
-    function i() {}
-    function o(t, n) {
-        var e = new i;
-        if (t instanceof i) 
-            t.each(function (t, n) {
-                e.set(n, t)
-            });
-        else if (Array.isArray(t)) {
-            var r,
-                o = -1,
-                u = t.length;
-            if (null == n) 
-                for (; ++o < u;) 
-                    e.set(o, t[o]);
-        else 
-                for (; ++o < u;) 
-                    e.set(n(r = t[o], o, t), r)
-        } else if (t) 
-            for (var a in t) 
-                e.set(a, t[a]);
-    return e
-    }
-    function u() {
-        return {}
-    }
-    function a(t, n, e) {
-        t[n] = e
-    }
-    function c() {
-        return o()
-    }
-    function s(t, n, e) {
-        t.set(n, e)
-    }
-    function f() {}
-    function l(t, n) {
-        var e = new f;
-        if (t instanceof f) 
-            t.each(function (t) {
-                e.add(t)
-            });
-        else if (t) {
-            var r = -1,
-                i = t.length;
-            if (null == n) 
-                for (; ++r < i;) 
-                    e.add(t[r]);
-        else 
-                for (; ++r < i;) 
-                    e.add(n(t[r], r, t))
-        }
-        return e
-    }
-    function h(t) {
-        return + t
-    }
-    function p(t) {
-        return t * t
-    }
-    function d(t) {
-        return t * (2 - t)
-    }
-    function v(t) {
-        return ((t *= 2) <= 1
-            ? t * t
-            : --t * (2 - t) + 1) / 2
-    }
-    function _(t) {
-        return t * t * t
-    }
-    function y(t) {
-        return-- t * t * t + 1
-    }
-    function g(t) {
-        return ((t *= 2) <= 1
-            ? t * t * t
-            : (t -= 2) * t * t + 2) / 2
-    }
-    function m(t) {
-        return 1 - Math.cos(t * Tf)
-    }
-    function x(t) {
-        return Math.sin(t * Tf)
-    }
-    function b(t) {
-        return (1 - Math.cos(Mf * t)) / 2
-    }
-    function w(t) {
-        return Math.pow(2, 10 * t - 10)
-    }
-    function M(t) {
-        return 1 - Math.pow(2, -10 * t)
-    }
-    function T(t) {
-        return ((t *= 2) <= 1
-            ? Math.pow(2, 10 * t - 10)
-            : 2 - Math.pow(2, 10 - 10 * t)) / 2
-    }
-    function N(t) {
-        return 1 - Math.sqrt(1 - t * t)
-    }
-    function k(t) {
-        return Math.sqrt(1 - --t * t)
-    }
-    function S(t) {
-        return ((t *= 2) <= 1
-            ? 1 - Math.sqrt(1 - t * t)
-            : Math.sqrt(1 - (t -= 2) * t) + 1) / 2
-    }
-    function A(t) {
-        return 1 - E(1 - t)
-    }
-    function E(t) {
-        return (t =+ t) < Nf
-            ? Lf * t * t
-            : t < Sf
-                ? Lf * (t -= kf) * t + Af
-                : t < Cf
-                    ? Lf * (t -= Ef) * t + zf
-                    : Lf * (t -= Pf) * t + qf
-    }
-    function C(t) {
-        return ((t *= 2) <= 1
-            ? 1 - E(1 - t)
-            : E(t - 1) + 1) / 2
-    }
-    function z(t, n) {
-        return t[0] - n[0] || t[1] - n[1]
-    }
-    function P(t) {
-        for (var n = t.length, e = [
-            0, 1
-        ], r = 2, i = 2; i < n; ++i) {
-            for (; r > 1 && Wf(t[e[r - 2]], t[e[r - 1]], t[i]) <= 0;) 
-                --r;
-            e[r++] = i
-        }
-        return e.slice(0, r)
-    }
-    function q() {
-        this._x0 = this._y0 = this._x1 = this._y1 = null,
-        this._ = []
-    }
-    function L() {
-        return new q
-    }
-    function R(t, n, e, r) {
-        if (isNaN(n) || isNaN(e)) 
-            return t;
-        var i,
-            o,
-            u,
-            a,
-            c,
-            s,
-            f,
-            l,
-            h,
-            p = t._root,
-            d = {
-                data: r
-            },
-            v = t._x0,
-            _ = t._y0,
-            y = t._x1,
-            g = t._y1;
-        if (!p) 
-            return t._root = d,
-            t;
-        for (; p.length;) 
-            if ((s = n >= (o = (v + y) / 2))
-                ? v = o
-                : y = o, (f = e >= (u = (_ + g) / 2))
-                ? _ = u
-                : g = u, i = p, !(p = p[l = f << 1 | s])) 
-                return i[l] = d,
-                t;
-    if (a =+ t._x.call(null, p.data), c =+ t._y.call(null, p.data), n === a && e === c) 
-            return d.next = p,
-            i
-                ? i[l] = d
-                : t._root = d,
-            t;
-        do 
-            i = i
-                ? i[l] = new Array(4)
-                : t._root = new Array(4),
-            (s = n >= (o = (v + y) / 2))
-                ? v = o
-                : y = o,
-            (f = e >= (u = (_ + g) / 2))
-                ? _ = u
-                : g = u;
-        while ((l = f << 1 | s) === (h = (c >= u) << 1 | a >= o));
-        return i[h] = p,
-        i[l] = d,
-        t
-    }
-    function U(t) {
-        var n,
-            e,
-            r,
-            i,
-            o = t.length,
-            u = new Array(o),
-            a = new Array(o),
-            c = 1 / 0,
-            s = 1 / 0,
-            f = -(1 / 0),
-            l = -(1 / 0);
-        for (e = 0; e < o; ++e) 
-            isNaN(r =+ this._x.call(null, n = t[e])) || isNaN(i =+ this._y.call(null, n)) || (u[e] = r, a[e] = i, r < c && (c = r), r > f && (f = r), i < s && (s = i), i > l && (l = i));
-        for (f < c && (c = this._x0, f = this._x1), l < s && (s = this._y0, l = this._y1), this.cover(c, s).cover(f, l), e = 0; e < o; ++e) 
-            R(this, u[e], a[e], t[e]);
-        return this
-    }
-    function D(t) {
-        for (var n = 0, e = t.length; n < e; ++n) 
-            this.remove(t[n]);
-        return this
-    }
-    function O(t) {
-        return t[0]
-    }
-    function F(t) {
-        return t[1]
-    }
-    function I(t, n, e) {
-        var r = new Y(null == n
-            ? O
-            : n, null == e
-            ? F
-            : e, NaN, NaN, NaN, NaN);
-        return null == t
-            ? r
-            : r.addAll(t)
-    }
-    function Y(t, n, e, r, i, o) {
-        this._x = t,
-        this._y = n,
-        this._x0 = e,
-        this._y0 = r,
-        this._x1 = i,
-        this._y1 = o,
-        this._root = void 0
-    }
-    function B(t) {
-        for (var n = {
-            data: t.data
-        }, e = n; t = t.next;) 
-            e = e.next = {
-                data: t.data
-            };
-        return n
-    }
-    function j(t) {
-        if (!(t >= 1)) 
-            throw new Error;
-        this._size = t,
-        this._call = this._error = null,
-        this._tasks = [],
-        this._data = [],
-        this._waiting = this._active = this._ended = this._start = 0
-    }
-    function H(t) {
-        if (!t._start) 
-            try {
-                X(t)
-            } catch (n) {
-                if (t._tasks[t._ended + t._active - 1]) 
-                    W(t, n);
-                else if (!t._data) 
-                    throw n
-            }
-        }
-    function X(t) {
-        for (; t._start = t._waiting && t._active < t._size;) {
-            var n = t._ended + t._active,
-                e = t._tasks[n],
-                r = e.length - 1,
-                i = e[r];
-            e[r] = V(t, n),
-            --t._waiting,
-            ++t._active,
-            e = i.apply(null, e),
-            t._tasks[n] && (t._tasks[n] = e || _l)
-        }
-    }
-    function V(t, n) {
-        return function (e, r) {
-            t._tasks[n] && (--t._active, ++t._ended, t._tasks[n] = null, null == t._error && (null != e
-                ? W(t, e)
-                : (t._data[n] = r, t._waiting
-                    ? H(t)
-                    : $(t))))
-        }
-    }
-    function W(t, n) {
-        var e,
-            r = t._tasks.length;
-        for (t._error = n, t._data = void 0, t._waiting = NaN; --r >= 0;) 
-            if ((e = t._tasks[r]) && (t._tasks[r] = null, e.abort)) 
-                try {
-                    e.abort()
-                } catch (t) {}
-            t._active = NaN,
-        $(t)
-    }
-    function $(t) {
-        if (!t._active && t._call) {
-            var n = t._data;
-            t._data = void 0,
-            t._call(t._error, n)
-        }
-    }
-    function Z(t) {
-        return new j(arguments.length ?+ t : 1 / 0)
-    }
-    function G(t) {
-        return t.innerRadius
-    }
-    function J(t) {
-        return t.outerRadius
-    }
-    function Q(t) {
-        return t.startAngle
-    }
-    function K(t) {
-        return t.endAngle
-    }
-    function tt(t) {
-        return t && t.padAngle
-    }
-    function nt(t) {
-        return t >= 1
-            ? xl
-            : t <= -1
-                ? -xl
-                : Math.asin(t)
-    }
-    function et(t, n, e, r, i, o, u, a) {
-        var c = e - t,
-            s = r - n,
-            f = u - i,
-            l = a - o,
-            h = (f * (n - o) - l * (t - i)) / (l * c - f * s);
-        return [
-            t + h * c,
-            n + h * s
-        ]
-    }
-    function rt(t, n, e, r, i, o, u) {
-        var a = t - e,
-            c = n - r,
-            s = (u
-                ? o
-                : -o) / Math.sqrt(a * a + c * c),
-            f = s * c,
-            l = -s * a,
-            h = t + f,
-            p = n + l,
-            d = e + f,
-            v = r + l,
-            _ = (h + d) / 2,
-            y = (p + v) / 2,
-            g = d - h,
-            m = v - p,
-            x = g * g + m * m,
-            b = i - o,
-            w = h * v - d * p,
-            M = (m < 0
-                ? -1
-                : 1) * Math.sqrt(Math.max(0, b * b * x - w * w)),
-            T = (w * m - g * M) / x,
-            N = (-w * g - m * M) / x,
-            k = (w * m + g * M) / x,
-            S = (-w * g + m * M) / x,
-            A = T - _,
-            E = N - y,
-            C = k - _,
-            z = S - y;
-        return A * A + E * E > C * C + z * z && (T = k, N = S), {
-            cx: T,
-            cy: N,
-            x01: -f,
-            y01: -l,
-            x11: *(i / b - 1),
-            y11: *(i / b - 1)
-        }
-    }
-    function it(t) {
-        this._context = t
-    }
-    function ot(t) {
-        return t[0]
-    }
-    function ut(t) {
-        return t[1]
-    }
-    function at(t) {
-        this._curve = t
-    }
-    function ct(t) {
-        function n(n) {
-            return new at(t(n))
-        }
-        return n._curve = t,
-        n
-    }
-    function st(t) {
-        var n = t.curve;
-        return t.angle = t.x,
-        delete t.x,
-        t.radius = t.y,
-        delete t.y,
-        t.curve = function (t) {
-            return arguments.length
-                ? n(ct(t))
-                : n()._curve
-        },
-        t
-    }
-    function ft(t, n, e) {
-        t
-            ._context
-            .bezierCurveTo((2 * t._x0 + t._x1) / 3, (2 * t._y0 + t._y1) / 3, (t._x0 + 2 * t._x1) / 3, (t._y0 + 2 * t._y1) / 3, (t._x0 + 4 * t._x1 + n) / 6, (t._y0 + 4 * t._y1 + e) / 6)
-    }
-    function lt(t) {
-        this._context = t
-    }
-    function ht(t) {
-        this._context = t
-    }
-    function pt(t) {
-        this._context = t
-    }
-    function dt(t, n) {
-        this._basis = new lt(t),
-        this._beta = n
-    }
-    function vt(t, n, e) {
-        t
-            ._context
-            .bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - n), t._y2 + t._k * (t._y1 - e), t._x2, t._y2)
-    }
-    function _t(t, n) {
-        this._context = t,
-        this._k = (1 - n) / 6
-    }
-    function yt(t, n) {
-        this._context = t,
-        this._k = (1 - n) / 6
-    }
-    function gt(t, n) {
-        this._context = t,
-        this._k = (1 - n) / 6
-    }
-    function mt(t, n, e) {
-        var r = t._x1,
-            i = t._y1,
-            o = t._x2,
-            u = t._y2;
-        if (t._l01_a > gl) {
-            var a = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a,
-                c = 3 * t._l01_a * (t._l01_a + t._l12_a);
-            r = (r * a - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / c,
-            i = (i * a - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / c
-        }
-        if (t._l23_a > gl) {
-            var s = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a,
-                f = 3 * t._l23_a * (t._l23_a + t._l12_a);
-            o = (o * s + t._x1 * t._l23_2a - n * t._l12_2a) / f,
-            u = (u * s + t._y1 * t._l23_2a - e * t._l12_2a) / f
-        }
-        t
-            ._context
-            .bezierCurveTo(r, i, o, u, t._x2, t._y2)
-    }
-    function xt(t, n) {
-        this._context = t,
-        this._alpha = n
-    }
-    function bt(t, n) {
-        this._context = t,
-        this._alpha = n
-    }
-    function wt(t, n) {
-        this._context = t,
-        this._alpha = n
-    }
-    function Mt(t) {
-        this._context = t
-    }
-    function Tt(t) {
-        return t < 0
-            ? -1
-            : 1
-    }
-    function Nt(t, n, e) {
-        var r = t._x1 - t._x0,
-            i = n - t._x1,
-            o = (t._y1 - t._y0) / (r || i < 0 && -0),
-            u = (e - t._y1) / (i || r < 0 && -0),
-            a = (o * i + u * r) / (r + i);
-        return (Tt(o) + Tt(u)) * Math.min(Math.abs(o), Math.abs(u), .5 * Math.abs(a)) || 0
-    }
-    function kt(t, n) {
-        var e = t._x1 - t._x0;
-        return e
-            ? (3 * (t._y1 - t._y0) / e - n) / 2
-            : n
-    }
-    function St(t, n, e) {
-        var r = t._x0,
-            i = t._y0,
-            o = t._x1,
-            u = t._y1,
-            a = (o - r) / 3;
-        t
-            ._context
-            .bezierCurveTo(r + a, i + a * n, o - a, u - a * e, o, u)
-    }
-    function At(t) {
-        this._context = t
-    }
-    function Et(t) {
-        this._context = new Ct(t)
-    }
-    function Ct(t) {
-        this._context = t
-    }
-    function zt(t) {
-        return new At(t)
-    }
-    function Pt(t) {
-        return new Et(t)
-    }
-    function qt(t) {
-        this._context = t
-    }
-    function Lt(t) {
-        var n,
-            e,
-            r = t.length - 1,
-            i = new Array(r),
-            o = new Array(r),
-            u = new Array(r);
-        for (i[0] = 0, o[0] = 2, u[0] = t[0] + 2 * t[1], n = 1; n < r - 1; ++n) 
-            i[n] = 1,
-            o[n] = 4,
-            u[n] = 4 * t[n] + 2 * t[n + 1];
-        for (i[r - 1] = 2, o[r - 1] = 7, u[r - 1] = 8 * t[r - 1] + t[r], n = 1; n < r; ++n) 
-            e = i[n] / o[n - 1],
-            o[n] -= e,
-            u[n] -= e * u[n - 1];
-        for (i[r - 1] = u[r - 1] / o[r - 1], n = r - 2; n >= 0; --n) 
-            i[n] = (u[n] - i[n + 1]) / o[n];
-        for (o[r - 1] = (t[r] + i[r - 1]) / 2, n = 0; n < r - 1; ++n) 
-            o[n] = 2 * t[n + 1] - i[n + 1];
-        return [i, o]
-    }
-    function Rt(t, n) {
-        this._context = t,
-        this._t = n
-    }
-    function Ut(t) {
-        return new Rt(t, 0)
-    }
-    function Dt(t) {
-        return new Rt(t, 1)
-    }
-    function Ot(t, n) {
-        return t[n]
-    }
-    function Ft(t) {
-        for (var n, e = 0, r = -1, i = t.length; ++r < i;) 
-            (n =+ t[r][1]) && (e += n);
-        return e
-    }
-    function It(t, n) {
-        var e = Object.create(t.prototype);
-        for (var r in n) 
-            e[r] = n[r];
-        return e
-    }
-    function Yt() {}
-    function Bt(t) {
-        var n;
-        return t = (t + "")
-            .trim()
-            .toLowerCase(),
-        (n = kh.exec(t))
-            ? (n = parseInt(n[1], 16), new Wt(n >> 8 & 15 | n >> 4 & 240, n >> 4 & 15 | 240 & n, (15 & n) << 4 | 15 & n, 1))
-            : (n = Sh.exec(t))
-                ? jt(parseInt(n[1], 16))
-                : (n = Ah.exec(t))
-                    ? new Wt(n[1], n[2], n[3], 1)
-                    : (n = Eh.exec(t))
-                        ? new Wt(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, 1)
-                        : (n = Ch.exec(t))
-                            ? Ht(n[1], n[2], n[3], n[4])
-                            : (n = zh.exec(t))
-                                ? Ht(255 * n[1] / 100, 255 * n[2] / 100, 255 * n[3] / 100, n[4])
-                                : (n = Ph.exec(t))
-                                    ? $t(n[1], n[2] / 100, n[3] / 100, 1)
-                                    : (n = qh.exec(t))
-                                        ? $t(n[1], n[2] / 100, n[3] / 100, n[4])
-                                        : Lh.hasOwnProperty(t)
-                                            ? jt(Lh[t])
-                                            : "transparent" === t
-                                                ? new Wt(NaN, NaN, NaN, 0)
-                                                : null
-    }
-    function jt(t) {
-        return new Wt(t >> 16 & 255, t >> 8 & 255, 255 & t, 1)
-    }
-    function Ht(t, n, e, r) {
-        return r <= 0 && (t = n = e = NaN),
-        new Wt(t, n, e, r)
-    }
-    function Xt(t) {
-        return t instanceof Yt || (t = Bt(t)),
-        t
-            ? (t = t.rgb(), new Wt(t.r, t.g, t.b, t.opacity))
-            : new Wt
-    }
-    function Vt(t, n, e, r) {
-        return 1 === arguments.length
-            ? Xt(t)
-            : new Wt(t, n, e, null == r
-                ? 1
-                : r)
-    }
-    function Wt(t, n, e, r) {
-        this.r =+ t,
-        this.g =+ n,
-        this.b =+ e,
-        this.opacity =+ r
-    }
-    function $t(t, n, e, r) {
-        return r <= 0
-            ? t = n = e = NaN
-            : e <= 0 || e >= 1
-                ? t = n = NaN
-                : n <= 0 && (t = NaN),
-        new Jt(t, n, e, r)
-    }
-    function Zt(t) {
-        if (t instanceof Jt) 
-            return new Jt(t.h, t.s, t.l, t.opacity);
-        if (t instanceof Yt || (t = Bt(t)), !t) 
-            return new Jt;
-        if (t instanceof Jt) 
-            return t;
-        t = t.rgb();
-        var n = t.r / 255,
-            e = t.g / 255,
-            r = t.b / 255,
-            i = Math.min(n, e, r),
-            o = Math.max(n, e, r),
-            u = NaN,
-            a = o - i,
-            c = (o + i) / 2;
-        return a
-            ? (u = n === o
-                ? (e - r) / a + 6 * (e < r)
-                : e === o
-                    ? (r - n) / a + 2
-                    : (n - e) / a + 4, a /= c < .5
-                ? o + i
-                : 2 - o - i, u *= 60)
-            : a = c > 0 && c < 1
-                ? 0
-                : u,
-        new Jt(u, a, c, t.opacity)
-    }
-    function Gt(t, n, e, r) {
-        return 1 === arguments.length
-            ? Zt(t)
-            : new Jt(t, n, e, null == r
-                ? 1
-                : r)
-    }
-    function Jt(t, n, e, r) {
-        this.h =+ t,
-        this.s =+ n,
-        this.l =+ e,
-        this.opacity =+ r
-    }
-    function Qt(t, n, e) {
-        return 255 * (t < 60
-            ? n + (e - n) * t / 60
-            : t < 180
-                ? e
-                : t < 240
-                    ? n + (e - n) * (240 - t) / 60
-                    : n)
-    }
-    function Kt(t) {
-        if (t instanceof nn) 
-            return new nn(t.l, t.a, t.b, t.opacity);
-        if (t instanceof sn) {
-            var n = t.h * Rh;
-            return new nn(t.l, Math.cos(n) * t.c, Math.sin(n) * t.c, t.opacity)
-        }
-        t instanceof Wt || (t = Xt(t));
-        var e = un(t.r),
-            r = un(t.g),
-            i = un(t.b),
-            o = en((.4124564 * e + .3575761 * r + .1804375 * i) / Oh),
-            u = en((.2126729 * e + .7151522 * r + .072175 * i) / Fh),
-            a = en((.0193339 * e + .119192 * r + .9503041 * i) / Ih);
-        return new nn(116 * u - 16, 500 * (o - u), 200 * (u - a), t.opacity)
-    }
-    function tn(t, n, e, r) {
-        return 1 === arguments.length
-            ? Kt(t)
-            : new nn(t, n, e, null == r
-                ? 1
-                : r)
-    }
-    function nn(t, n, e, r) {
-        this.l =+ t,
-        this.a =+ n,
-        this.b =+ e,
-        this.opacity =+ r
-    }
-    function en(t) {
-        return t > Hh
-            ? Math.pow(t, 1 / 3)
-            : t / jh + Yh
-    }
-    function rn(t) {
-        return t > Bh
-            ? t * t * t
-            : jh * (t - Yh)
-    }
-    function on(t) {
-        return 255 * (t <= .0031308
-            ? 12.92 * t
-            : 1.055 * Math.pow(t, 1 / 2.4) - .055)
-    }
-    function un(t) {
-        return (t /= 255) <= .04045
-            ? t / 12.92
-            : Math.pow((t + .055) / 1.055, 2.4)
-    }
-    function an(t) {
-        if (t instanceof sn) 
-            return new sn(t.h, t.c, t.l, t.opacity);
-        t instanceof nn || (t = Kt(t));
-        var n = Math.atan2(t.b, t.a) * Uh;
-        return new sn(n < 0
-            ? n + 360
-            : n, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity)
-    }
-    function cn(t, n, e, r) {
-        return 1 === arguments.length
-            ? an(t)
-            : new sn(t, n, e, null == r
-                ? 1
-                : r)
-    }
-    function sn(t, n, e, r) {
-        this.h =+ t,
-        this.c =+ n,
-        this.l =+ e,
-        this.opacity =+ r
-    }
-    function fn(t) {
-        if (t instanceof hn) 
-            return new hn(t.h, t.s, t.l, t.opacity);
-        t instanceof Wt || (t = Xt(t));
-        var n = t.r / 255,
-            e = t.g / 255,
-            r = t.b / 255,
-            i = (Qh * r + Gh * n - Jh * e) / (Qh + Gh - Jh),
-            o = r - i,
-            u = (Zh * (e - i) - Wh * o) / $h,
-            a = Math.sqrt(u * u + o * o) / (Zh * i * (1 - i)),
-            c = a
-                ? Math.atan2(u, o) * Uh - 120
-                : NaN;
-        return new hn(c < 0
-            ? c + 360
-            : c, a, i, t.opacity)
-    }
-    function ln(t, n, e, r) {
-        return 1 === arguments.length
-            ? fn(t)
-            : new hn(t, n, e, null == r
-                ? 1
-                : r)
-    }
-    function hn(t, n, e, r) {
-        this.h =+ t,
-        this.s =+ n,
-        this.l =+ e,
-        this.opacity =+ r
-    }
-    function pn(t, n, e, r, i) {
-        var o = t * t,
-            u = o * t;
-        return ((1 - 3 * t + 3 * o - u) * n + (4 - 6 * o + 3 * u) * e + (1 + 3 * t + 3 * o - 3 * u) * r + u * i) / 6
-    }
-    function dn(t, n) {
-        return function (e) {
-            return t + e * n
-        }
-    }
-    function vn(t, n, e) {
-        return t = Math.pow(t, e),
-        n = Math.pow(n, e) - t,
-        e = 1 / e,
-        function (r) {
-            return Math.pow(t + r * n, e)
-        }
-    }
-    function _n(t, n) {
-        var e = n - t;
-        return e
-            ? dn(t, e > 180 || e < -180
-                ? e - 360 * Math.round(e / 360)
-                : e)
-            : op(isNaN(t)
-                ? n
-                : t)
-    }
-    function yn(t) {
-        return 1 === (t =+ t)
-            ? gn
-            : function (n, e) {
-                return e - n
-                    ? vn(n, e, t)
-                    : op(isNaN(n)
-                        ? e
-                        : n)
-            }
-    }
-    function gn(t, n) {
-        var e = n - t;
-        return e
-            ? dn(t, e)
-            : op(isNaN(t)
-                ? n
-                : t)
-    }
-    function mn(t) {
-        return function (n) {
-            var e,
-                r,
-                i = n.length,
-                o = new Array(i),
-                u = new Array(i),
-                a = new Array(i);
-            for (e = 0; e < i; ++e) 
-                r = Vt(n[e]),
-                o[e] = r.r || 0,
-                u[e] = r.g || 0,
-                a[e] = r.b || 0;
-            return o = t(o),
-            u = t(u),
-            a = t(a),
-            r.opacity = 1,
-            function (t) {
-                return r.r = o(t),
-                r.g = u(t),
-                r.b = a(t),
-                r + ""
-            }
-        }
-    }
-    function xn(t) {
-        return function () {
-            return t
-        }
-    }
-    function bn(t) {
-        return function (n) {
-            return t(n) + ""
-        }
-    }
-    function wn(t) {
-        return "none" === t
-            ? mp
-            : (Kh || (Kh = document.createElement("DIV"), tp = document.documentElement, np = document.defaultView), Kh.style.transform = t, t = np.getComputedStyle(tp.appendChild(Kh), null).getPropertyValue("transform"), tp.removeChild(Kh), t = t.slice(7, -1).split(","), xp(+ t[0], + t[1], + t[2], + t[3], + t[4], + t[5]))
-    }
-    function Mn(t) {
-        return null == t
-            ? mp
-            : (ep || (ep = document.createElementNS("http://www.w3.org/2000/svg", "g")), ep.setAttribute("transform", t), (t = ep.transform.baseVal.consolidate())
-                ? (t = t.matrix, xp(t.a, t.b, t.c, t.d, t.e, t.f))
-                : mp)
-    }
-    function Tn(t, n, e, r) {
-        function i(t) {
-            return t.length
-                ? t.pop() + " "
-                : ""
-        }
-        function o(t, r, i, o, u, a) {
-            if (t !== i || r !== o) {
-                var c = u.push("translate(", null, n, null, e);
-                a.push({
-                    i: c - 4,
-                    x: lp(t, i)
-                }, {
-                    i: c - 2,
-                    x: lp(r, o)
-                })
-            } else 
-                (i || o) && u.push("translate(" + i + n + o + e)
-            }
-            function u(t, n, e, o) {
-                t !== n
-                    ? (t - n > 180
-                        ? n += 360
-                        : n - t > 180 && (t += 360), o.push({
-                        i: e.push(i(e) + "rotate(", null, r) - 2,
-                        x: lp(t, n)
-                    }))
-                    : n && e.push(i(e) + "rotate(" + n + r)
-            }
-            function a(t, n, e, o) {
-                t !== n
-                    ? o.push({
-                        i: e.push(i(e) + "skewX(", null, r) - 2,
-                        x: lp(t, n)
-                    })
-                    : n && e.push(i(e) + "skewX(" + n + r)
-            }
-            function c(t, n, e, r, o, u) {
-                if (t !== e || n !== r) {
-                    var a = o.push(i(o) + "scale(", null, ",", null, ")");
-                    u.push({
-                        i: a - 4,
-                        x: lp(t, e)
-                    }, {
-                        i: a - 2,
-                        x: lp(n, r)
-                    })
-                } else 
-                    1 === e && 1 === r || o.push(i(o) + "scale(" + e + "," + r + ")")
-            }
-            return function (n, e) {
-                var r = [],
-                    i = [];
-                return n = t(n),
-                e = t(e),
-                o(n.translateX, n.translateY, e.translateX, e.translateY, r, i),
-                u(n.rotate, e.rotate, r, i),
-                a(n.skewX, e.skewX, r, i),
-                c(n.scaleX, n.scaleY, e.scaleX, e.scaleY, r, i),
-                n = e = null,
-                function (t) {
-                    for (var n, e = -1, o = i.length; ++e < o;) 
-                        r[(n = i[e]).i] = n.x(t);
-                    return r.join("")
-                }
-            }
-        }
-        function Nn(t) {
-            return ((t = Math.exp(t)) + 1 / t) / 2
-        }
-        function kn(t) {
-            return ((t = Math.exp(t)) - 1 / t) / 2
-        }
-        function Sn(t) {
-            return ((t = Math.exp(2 * t)) - 1) / (t + 1)
-        }
-        function An(t) {
-            return function (n, e) {
-                var r = t((n = Gt(n)).h, (e = Gt(e)).h),
-                    i = gn(n.s, e.s),
-                    o = gn(n.l, e.l),
-                    u = gn(n.opacity, e.opacity);
-                return function (t) {
-                    return n.h = r(t),
-                    n.s = i(t),
-                    n.l = o(t),
-                    n.opacity = u(t),
-                    n + ""
-                }
-            }
-        }
-        function En(t, n) {
-            var e = gn((t = tn(t)).l, (n = tn(n)).l),
-                r = gn(t.a, n.a),
-                i = gn(t.b, n.b),
-                o = gn(t.opacity, n.opacity);
-            return function (n) {
-                return t.l = e(n),
-                t.a = r(n),
-                t.b = i(n),
-                t.opacity = o(n),
-                t + ""
-            }
-        }
-        function Cn(t) {
-            return function (n, e) {
-                var r = t((n = cn(n)).h, (e = cn(e)).h),
-                    i = gn(n.c, e.c),
-                    o = gn(n.l, e.l),
-                    u = gn(n.opacity, e.opacity);
-                return function (t) {
-                    return n.h = r(t),
-                    n.c = i(t),
-                    n.l = o(t),
-                    n.opacity = u(t),
-                    n + ""
-                }
-            }
-        }
-        function zn(t) {
-            return function n(e) {
-                function r(n, r) {
-                    var i = t((n = ln(n)).h, (r = ln(r)).h),
-                        o = gn(n.s, r.s),
-                        u = gn(n.l, r.l),
-                        a = gn(n.opacity, r.opacity);
-                    return function (t) {
-                        return n.h = i(t),
-                        n.s = o(t),
-                        n.l = u(Math.pow(t, e)),
-                        n.opacity = a(t),
-                        n + ""
-                    }
-                }
-                return e =+ e,
-                r.gamma = n,
-                r
-            }(1)
-        }
-        function Pn() {
-            for (var t, n = 0, e = arguments.length, r = {}; n < e; ++n) {
-                if (!(t = arguments[n] + "") || t in r) 
-                    throw new Error("illegal type: " + t);
-                r[t] = []
-            }
-            return new qn(r)
-        }
-        function qn(t) {
-            this._ = t
-        }
-        function Ln(t, n) {
-            return t
-                .trim()
-                .split(/^|\s+/)
-                .map(function (t) {
-                    var e = "",
-                        r = t.indexOf(".");
-                    if (r >= 0 && (e = t.slice(r + 1), t = t.slice(0, r)), t && !n.hasOwnProperty(t)) 
-                        throw new Error("unknown type: " + t);
-                    return {type: t, name: e}
-                })
-        }
-        function Rn(t, n) {
-            for (var e, r = 0, i = t.length; r < i; ++r) 
-                if ((e = t[r]).name === n) 
-                    return e.value
-        }
-        function Un(t, n, e) {
-            for (var r = 0, i = t.length; r < i; ++r) 
-                if (t[r].name === n) {
-                    t[r] = Rp,
-                    t = t
-                        .slice(0, r)
-                        .concat(t.slice(r + 1));
-                    break
-                }
-            return null != e && t.push({name: n, value: e}),
-            t
-        }
-        function Dn(t) {
-            return new Function("d", "return {" + t.map(function (t, n) {
-                return JSON.stringify(t) + ": d[" + n + "]"
-            }).join(",") + "}")
-        }
-        function On(t, n) {
-            var e = Dn(t);
-            return function (r, i) {
-                return n(e(r), i, t)
-            }
-        }
-        function Fn(t) {
-            var n = Object.create(null),
-                e = [];
-            return t.forEach(function (t) {
-                for (var r in t) 
-                    r in n || e.push(n[r] = r)
-            }),
-            e
-        }
-        function In(t) {
-            return function (n, e) {
-                t(null == n
-                    ? e
-                    : null)
-            }
-        }
-        function Yn(t) {
-            var n = t.responseType;
-            return n && "text" !== n
-                ? t.response
-                : t.responseText
-        }
-        function Bn(t, n) {
-            return function (e) {
-                return t(e.responseText, n)
-            }
-        }
-        function jn() {
-            return sd || (hd(Hn), sd = ld.now() + fd)
-        }
-        function Hn() {
-            sd = 0
-        }
-        function Xn() {
-            this._call = this._time = this._next = null
-        }
-        function Vn(t, n, e) {
-            var r = new Xn;
-            return r.restart(t, n, e),
-            r
-        }
-        function Wn() {
-            jn(),
-            ++id;
-            for (var t, n = Up; n;) 
-                (t = sd - n._time) >= 0 && n._call.call(null, t),
-                n = n._next;
-            
-            --id
-        }
-        function $n() {
-            sd = (cd = ld.now()) + fd,
-            id = od = 0;
-            try {
-                Wn()
-            } finally {
-                id = 0,
-                Gn(),
-                sd = 0
-            }
-        }
-        function Zn() {
-            var t = ld.now(),
-                n = t - cd;
-            n > ad && (fd -= n, cd = t)
-        }
-        function Gn() {
-            for (var t, n, e = Up, r = 1 / 0; e;) 
-                e._call
-                    ? (r > e._time && (r = e._time), t = e, e = e._next)
-                    : (n = e._next, e._next = null, e = t
-                        ? t._next = n
-                        : Up = n);
-            Dp = t,
-            Jn(r)
-        }
-        function Jn(t) {
-            if (!id) {
-                od && (od = clearTimeout(od));
-                var n = t - sd;
-                n > 24
-                    ? (t < 1 / 0 && (od = setTimeout($n, n)), ud && (ud = clearInterval(ud)))
-                    : (ud || (ud = setInterval(Zn, ad)), id = 1, hd($n))
-            }
-        }
-        function Qn(t, n, e, r) {
-            function i(n) {
-                return t(n = new Date(+ n)),
-                n
-            }
-            return i.floor = i,
-            i.ceil = function (e) {
-                return t(e = new Date(e - 1)),
-                n(e, 1),
-                t(e),
-                e
-            },
-            i.round = function (t) {
-                var n = i(t),
-                    e = i.ceil(t);
-                return t - n < e - t
-                    ? n
-                    : e
-            },
-            i.offset = function (t, e) {
-                return n(t = new Date(+ t), null == e
-                    ? 1
-                    : Math.floor(e)),
-                t
-            },
-            i.range = function (e, r, o) {
-                var u = [];
-                if (e = i.ceil(e), o = null == o
-                    ? 1
-                    : Math.floor(o), !(e < r && o > 0)) 
-                    return u;
-                do 
-                    u.push(new Date(+ e));
-                while (n(e, o), t(e), e < r);
-                return u
-            },
-            i.filter = function (e) {
-                return Qn(function (n) {
-                    if (n >= n) 
-                        for (; t(n), !e(n);) 
-                            n.setTime(n - 1)
-                }, function (t, r) {
-                    if (t >= t) 
-                        for (; --r >= 0;) 
-                            for (; n(t, 1), !e(t);) ;
-                            }
-                        )
-            },
-            e && (i.count = function (n, r) {
-                return vd.setTime(+ n),
-                _d.setTime(+ r),
-                t(vd),
-                t(_d),
-                Math.floor(e(vd, _d))
-            },
-            i.every = function (t) {
-                return t = Math.floor(t),
-                isFinite(t) && t > 0
-                    ? t > 1
-                        ? i.filter(r
-                            ? function (n) {
-                                return r(n) % t === 0
-                            }
-                            : function (n) {
-                                return i.count(0, n) % t === 0
-                            })
-                        : i
-                    : null
-            }),
-            i
-        }
-        function Kn(t) {
-            return Qn(function (n) {
-                n.setDate(n.getDate() - (n.getDay() + 7 - t) % 7),
-                n.setHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setDate(t.getDate() + 7 * n)
-            }, function (t, n) {
-                return (n - t - (n.getTimezoneOffset() - t.getTimezoneOffset()) * xd) / Md
-            })
-        }
-        function te(t) {
-            return Qn(function (n) {
-                n.setUTCDate(n.getUTCDate() - (n.getUTCDay() + 7 - t) % 7),
-                n.setUTCHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setUTCDate(t.getUTCDate() + 7 * n)
-            }, function (t, n) {
-                return (n - t) / Md
-            })
-        }
-        function ne(t) {
-            if (!(n = Av.exec(t))) 
-                throw new Error("invalid format: " + t);
-            var n,
-                e = n[1] || " ",
-                r = n[2] || ">",
-                i = n[3] || "-",
-                o = n[4] || "",
-                u = !!n[5],
-                a = n[6] &&+ n[6],
-                c = !!n[7],
-                s = n[8] &&+ n[8].slice(1),
-                f = n[9] || "";
-            "n" === f
-                ? (c = !0, f = "g")
-                : Sv[f] || (f = ""),
-            (u || "0" === e && "=" === r) && (u = !0, e = "0", r = "="),
-            this.fill = e,
-            this.align = r,
-            this.sign = i,
-            this.symbol = o,
-            this.zero = u,
-            this.width = a,
-            this.comma = c,
-            this.precision = s,
-            this.type = f
-        }
-        function ee(t) {
-            return t
-        }
-        function re(n) {
-            return Cv = Pv(n),
-            t.format = Cv.format,
-            t.formatPrefix = Cv.formatPrefix,
-            Cv
-        }
-        function ie(t) {
-            if (0 <= t.y && t.y < 100) {
-                var n = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L);
-                return n.setFullYear(t.y),
-                n
-            }
-            return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L)
-        }
-        function oe(t) {
-            if (0 <= t.y && t.y < 100) {
-                var n = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L));
-                return n.setUTCFullYear(t.y),
-                n
-            }
-            return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L))
-        }
-        function ue(t) {
-            return {
-                y: t,
-                m: 0,
-                d: 1,
-                H: 0,
-                M: 0,
-                S: 0,
-                L: 0
-            }
-        }
-        function ae(t) {
-            function n(t, n) {
-                return function (e) {
-                    var r,
-                        i,
-                        o,
-                        u = [],
-                        a = -1,
-                        c = 0,
-                        s = t.length;
-                    for (e instanceof Date || (e = new Date(+ e)); ++a < s;) 
-                        37 === t.charCodeAt(a) && (u.push(t.slice(c, a)), null != (i = Dv[r = t.charAt(++a)])
-                            ? r = t.charAt(++a)
-                            : i = "e" === r
-                                ? " "
-                                : "0", (o = n[r]) && (r = o(e, i)), u.push(r), c = a + 1);
-                    return u.push(t.slice(c, a)),
-                    u.join("")
-                }
-            }
-            function e(t, n) {
-                return function (e) {
-                    var i = ue(1900),
-                        o = r(i, t, e += "", 0);
-                    if (o != e.length) 
-                        return null;
-                    if ("p" in i && (i.H = i.H % 12 + 12 * i.p), "W" in i || "U" in i) {
-                        "w" in i || (i.w = "W" in i
-                            ? 1
-                            : 0);
-                        var u = "Z" in i
-                            ? oe(ue(i.y)).getUTCDay()
-                            : n(ue(i.y)).getDay();
-                        i.m = 0,
-                        i.d = "W" in i
-                            ? (i.w + 6) % 7 + 7 * i.W - (u + 5) % 7
-                            : i.w + 7 * i.U - (u + 6) % 7
-                    }
-                    return "Z" in i
-                        ? (i.H += i.Z / 100 | 0, i.M += i.Z % 100, oe(i))
-                        : n(i)
-                }
-            }
-            function r(t, n, e, r) {
-                for (var i, o, u = 0, a = n.length, c = e.length; u < a;) {
-                    if (r >= c) 
-                        return -1;
-                    if (i = n.charCodeAt(u++), 37 === i) {
-                        if (i = n.charAt(u++), o = B[i in Dv
-                                ? n.charAt(u++)
-                                : i], !o || (r = o(t, e, r)) < 0) 
-                            return -1
-                    } else if (i != e.charCodeAt(r++)) 
-                        return -1
-                }
-                return r
-            }
-            function i(t, n, e) {
-                var r = C.exec(n.slice(e));
-                return r
-                    ? (t.p = z[r[0].toLowerCase()], e + r[0].length)
-                    : -1
-            }
-            function o(t, n, e) {
-                var r = L.exec(n.slice(e));
-                return r
-                    ? (t.w = R[r[0].toLowerCase()], e + r[0].length)
-                    : -1
-            }
-            function u(t, n, e) {
-                var r = P.exec(n.slice(e));
-                return r
-                    ? (t.w = q[r[0].toLowerCase()], e + r[0].length)
-                    : -1
-            }
-            function a(t, n, e) {
-                var r = O.exec(n.slice(e));
-                return r
-                    ? (t.m = F[r[0].toLowerCase()], e + r[0].length)
-                    : -1
-            }
-            function c(t, n, e) {
-                var r = U.exec(n.slice(e));
-                return r
-                    ? (t.m = D[r[0].toLowerCase()], e + r[0].length)
-                    : -1
-            }
-            function s(t, n, e) {
-                return r(t, w, n, e)
-            }
-            function f(t, n, e) {
-                return r(t, M, n, e)
-            }
-            function l(t, n, e) {
-                return r(t, T, n, e)
-            }
-            function h(t) {
-                return S[t.getDay()]
-            }
-            function p(t) {
-                return k[t.getDay()]
-            }
-            function d(t) {
-                return E[t.getMonth()]
-            }
-            function v(t) {
-                return A[t.getMonth()]
-            }
-            function _(t) {
-                return N[+ (t.getHours() >= 12)]
-            }
-            function y(t) {
-                return S[t.getUTCDay()]
-            }
-            function g(t) {
-                return k[t.getUTCDay()]
-            }
-            function m(t) {
-                return E[t.getUTCMonth()]
-            }
-            function x(t) {
-                return A[t.getUTCMonth()]
-            }
-            function b(t) {
-                return N[+ (t.getUTCHours() >= 12)]
-            }
-            var w = t.dateTime,
-                M = t.date,
-                T = t.time,
-                N = t.periods,
-                k = t.days,
-                S = t.shortDays,
-                A = t.months,
-                E = t.shortMonths,
-                C = fe(N),
-                z = le(N),
-                P = fe(k),
-                q = le(k),
-                L = fe(S),
-                R = le(S),
-                U = fe(A),
-                D = le(A),
-                O = fe(E),
-                F = le(E),
-                I = {
-                    a: h,
-                    A: p,
-                    b: d,
-                    B: v,
-                    c: null,
-                    d: ke,
-                    e: ke,
-                    H: Se,
-                    I: Ae,
-                    j: Ee,
-                    L: Ce,
-                    m: ze,
-                    M: Pe,
-                    p: _,
-                    S: qe,
-                    U: Le,
-                    w: Re,
-                    W: Ue,
-                    x: null,
-                    X: null,
-                    y: De,
-                    Y: Oe,
-                    Z: Fe,
-                    "%": tr
-                },
-                Y = {
-                    a: y,
-                    A: g,
-                    b: m,
-                    B: x,
-                    c: null,
-                    d: Ie,
-                    e: Ie,
-                    H: Ye,
-                    I: Be,
-                    j: je,
-                    L: He,
-                    m: Xe,
-                    M: Ve,
-                    p: b,
-                    S: We,
-                    U: $e,
-                    w: Ze,
-                    W: Ge,
-                    x: null,
-                    X: null,
-                    y: Je,
-                    Y: Qe,
-                    Z: Ke,
-                    "%": tr
-                },
-                B = {
-                    a: o,
-                    A: u,
-                    b: a,
-                    B: c,
-                    c: s,
-                    d: me,
-                    e: me,
-                    H: be,
-                    I: be,
-                    j: xe,
-                    L: Te,
-                    m: ge,
-                    M: we,
-                    p: i,
-                    S: Me,
-                    U: pe,
-                    w: he,
-                    W: de,
-                    x: f,
-                    X: l,
-                    y: _e,
-                    Y: ve,
-                    Z: ye,
-                    "%": Ne
-                };
-            return I.x = n(M, I),
-            I.X = n(T, I),
-            I.c = n(w, I),
-            Y.x = n(M, Y),
-            Y.X = n(T, Y),
-            Y.c = n(w, Y), {
-                format: function (t) {
-                    var e = n(t += "", I);
-                    return e.toString = function () {
-                        return t
-                    },
-                    e
-                },
-                parse: function (t) {
-                    var n = e(t += "", ie);
-                    return n.toString = function () {
-                        return t
-                    },
-                    n
-                },
-                utcFormat: function (t) {
-                    var e = n(t += "", Y);
-                    return e.toString = function () {
-                        return t
-                    },
-                    e
-                },
-                utcParse: function (t) {
-                    var n = e(t, oe);
-                    return n.toString = function () {
-                        return t
-                    },
-                    n
-                }
-            }
-        }
-        function ce(t, n, e) {
-            var r = t < 0
-                    ? "-"
-                    : "",
-                i = (r
-                    ? -t
-                    : t) + "",
-                o = i.length;
-            return r + (o < e
-                ? new Array(e - o + 1).join(n) + i
-                : i)
-        }
-        function se(t) {
-            return t.replace(Iv, "\\$&")
-        }
-        function fe(t) {
-            return new RegExp("^(?:" + t.map(se).join("|") + ")", "i")
-        }
-        function le(t) {
-            for (var n = {}, e = -1, r = t.length; ++e < r;) 
-                n[t[e].toLowerCase()] = e;
-            return n
-        }
-        function he(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 1));
-            return r
-                ? (t.w =+ r[0], e + r[0].length)
-                : -1
-        }
-        function pe(t, n, e) {
-            var r = Ov.exec(n.slice(e));
-            return r
-                ? (t.U =+ r[0], e + r[0].length)
-                : -1
-        }
-        function de(t, n, e) {
-            var r = Ov.exec(n.slice(e));
-            return r
-                ? (t.W =+ r[0], e + r[0].length)
-                : -1
-        }
-        function ve(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 4));
-            return r
-                ? (t.y =+ r[0], e + r[0].length)
-                : -1
-        }
-        function _e(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.y =+ r[0] + (+ r[0] > 68
-                    ? 1900
-                    : 2e3), e + r[0].length)
-                : -1
-        }
-        function ye(t, n, e) {
-            var r = /^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e, e + 6));
-            return r
-                ? (t.Z = r[1]
-                    ? 0
-                    : -(r[2] + (r[3] || "00")), e + r[0].length)
-                : -1
-        }
-        function ge(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.m = r[0] - 1, e + r[0].length)
-                : -1
-        }
-        function me(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.d =+ r[0], e + r[0].length)
-                : -1
-        }
-        function xe(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 3));
-            return r
-                ? (t.m = 0, t.d =+ r[0], e + r[0].length)
-                : -1
-        }
-        function be(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.H =+ r[0], e + r[0].length)
-                : -1
-        }
-        function we(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.M =+ r[0], e + r[0].length)
-                : -1
-        }
-        function Me(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 2));
-            return r
-                ? (t.S =+ r[0], e + r[0].length)
-                : -1
-        }
-        function Te(t, n, e) {
-            var r = Ov.exec(n.slice(e, e + 3));
-            return r
-                ? (t.L =+ r[0], e + r[0].length)
-                : -1
-        }
-        function Ne(t, n, e) {
-            var r = Fv.exec(n.slice(e, e + 1));
-            return r
-                ? e + r[0].length
-                : -1
-        }
-        function ke(t, n) {
-            return ce(t.getDate(), n, 2)
-        }
-        function Se(t, n) {
-            return ce(t.getHours(), n, 2)
-        }
-        function Ae(t, n) {
-            return ce(t.getHours() % 12 || 12, n, 2)
-        }
-        function Ee(t, n) {
-            return ce(1 + Cd.count($d(t), t), n, 3)
-        }
-        function Ce(t, n) {
-            return ce(t.getMilliseconds(), n, 3)
-        }
-        function ze(t, n) {
-            return ce(t.getMonth() + 1, n, 2)
-        }
-        function Pe(t, n) {
-            return ce(t.getMinutes(), n, 2)
-        }
-        function qe(t, n) {
-            return ce(t.getSeconds(), n, 2)
-        }
-        function Le(t, n) {
-            return ce(Pd.count($d(t), t), n, 2)
-        }
-        function Re(t) {
-            return t.getDay()
-        }
-        function Ue(t, n) {
-            return ce(qd.count($d(t), t), n, 2)
-        }
-        function De(t, n) {
-            return ce(t.getFullYear() % 100, n, 2)
-        }
-        function Oe(t, n) {
-            return ce(t.getFullYear() % 1e4, n, 4)
-        }
-        function Fe(t) {
-            var n = t.getTimezoneOffset();
-            return (n > 0
-                ? "-"
-                : (n *= -1, "+")) + ce(n / 60 | 0, "0", 2) + ce(n % 60, "0", 2)
-        }
-        function Ie(t, n) {
-            return ce(t.getUTCDate(), n, 2)
-        }
-        function Ye(t, n) {
-            return ce(t.getUTCHours(), n, 2)
-        }
-        function Be(t, n) {
-            return ce(t.getUTCHours() % 12 || 12, n, 2)
-        }
-        function je(t, n) {
-            return ce(1 + tv.count(gv(t), t), n, 3)
-        }
-        function He(t, n) {
-            return ce(t.getUTCMilliseconds(), n, 3)
-        }
-        function Xe(t, n) {
-            return ce(t.getUTCMonth() + 1, n, 2)
-        }
-        function Ve(t, n) {
-            return ce(t.getUTCMinutes(), n, 2)
-        }
-        function We(t, n) {
-            return ce(t.getUTCSeconds(), n, 2)
-        }
-        function $e(t, n) {
-            return ce(ev.count(gv(t), t), n, 2)
-        }
-        function Ze(t) {
-            return t.getUTCDay()
-        }
-        function Ge(t, n) {
-            return ce(rv.count(gv(t), t), n, 2)
-        }
-        function Je(t, n) {
-            return ce(t.getUTCFullYear() % 100, n, 2)
-        }
-        function Qe(t, n) {
-            return ce(t.getUTCFullYear() % 1e4, n, 4)
-        }
-        function Ke() {
-            return "+0000"
-        }
-        function tr() {
-            return "%"
-        }
-        function nr(n) {
-            return qv = ae(n),
-            t.timeFormat = qv.format,
-            t.timeParse = qv.parse,
-            t.utcFormat = qv.utcFormat,
-            t.utcParse = qv.utcParse,
-            qv
-        }
-        function er(t) {
-            return t.toISOString()
-        }
-        function rr(t) {
-            var n = new Date(t);
-            return isNaN(n)
-                ? null
-                : n
-        }
-        function ir(t) {
-            function n(n) {
-                var o = n + "",
-                    u = e.get(o);
-                if (!u) {
-                    if (i !== Wv) 
-                        return i;
-                    e.set(o, u = r.push(n))
-                }
-                return t[(u - 1) % t.length]
-            }
-            var e = o(),
-                r = [],
-                i = Wv;
-            return t = null == t
-                ? []
-                : Vv.call(t),
-            n.domain = function (t) {
-                if (!arguments.length) 
-                    return r.slice();
-                r = [],
-                e = o();
-                for (var i, u, a = -1, c = t.length; ++a < c;) 
-                    e.has(u = (i = t[a]) + "") || e.set(u, r.push(i));
-                return n
-            },
-            n.range = function (e) {
-                return arguments.length
-                    ? (t = Vv.call(e), n)
-                    : t.slice()
-            },
-            n.unknown = function (t) {
-                return arguments.length
-                    ? (i = t, n)
-                    : i
-            },
-            n.copy = function () {
-                return ir()
-                    .domain(r)
-                    .range(t)
-                    .unknown(i)
-            },
-            n
-        }
-        function or() {
-            function t() {
-                var t = i().length,
-                    r = u[1] < u[0],
-                    l = u[r - 0],
-                    h = u[1 - r];
-                n = (h - l) / Math.max(1, t - c + 2 * s),
-                a && (n = Math.floor(n)),
-                l += (h - l - n * (t - c)) * f,
-                e = n * (1 - c),
-                a && (l = Math.round(l), e = Math.round(e));
-                var p = Os(t).map(function (t) {
-                    return l + n * t
-                });
-                return o(r
-                    ? p.reverse()
-                    : p)
-            }
-            var n,
-                e,
-                r = ir().unknown(void 0),
-                i = r.domain,
-                o = r.range,
-                u = [
-                    0, 1
-                ],
-                a = !1,
-                c = 0,
-                s = 0,
-                f = .5;
-            return delete r.unknown,
-            r.domain = function (n) {
-                return arguments.length
-                    ? (i(n), t())
-                    : i()
-            },
-            r.range = function (n) {
-                return arguments.length
-                    ? (u = [ + n[0], + n[1]
-                    ], t())
-                    : u.slice()
-            },
-            r.rangeRound = function (n) {
-                return u = [ + n[0], + n[1]
-                ],
-                a = !0,
-                t()
-            },
-            r.bandwidth = function () {
-                return e
-            },
-            r.step = function () {
-                return n
-            },
-            r.round = function (n) {
-                return arguments.length
-                    ? (a = !!n, t())
-                    : a
-            },
-            r.padding = function (n) {
-                return arguments.length
-                    ? (c = s = Math.max(0, Math.min(1, n)), t())
-                    : c
-            },
-            r.paddingInner = function (n) {
-                return arguments.length
-                    ? (c = Math.max(0, Math.min(1, n)), t())
-                    : c
-            },
-            r.paddingOuter = function (n) {
-                return arguments.length
-                    ? (s = Math.max(0, Math.min(1, n)), t())
-                    : s
-            },
-            r.align = function (n) {
-                return arguments.length
-                    ? (f = Math.max(0, Math.min(1, n)), t())
-                    : f
-            },
-            r.copy = function () {
-                return or()
-                    .domain(i())
-                    .range(u)
-                    .round(a)
-                    .paddingInner(c)
-                    .paddingOuter(s)
-                    .align(f)
-            },
-            t()
-        }
-        function ur(t) {
-            var n = t.copy;
-            return t.padding = t.paddingOuter,
-            delete t.paddingInner,
-            delete t.paddingOuter,
-            t.copy = function () {
-                return ur(n())
-            },
-            t
-        }
-        function ar() {
-            return ur(or().paddingInner(1))
-        }
-        function cr(t, n) {
-            return (n -= t =+ t)
-                ? function (e) {
-                    return (e - t) / n
-                }
-                : $v(n)
-        }
-        function sr(t) {
-            return function (n, e) {
-                var r = t(n =+ n, e =+ e);
-                return function (t) {
-                    return t <= n
-                        ? 0
-                        : t >= e
-                            ? 1
-                            : r(t)
-                }
-            }
-        }
-        function fr(t) {
-            return function (n, e) {
-                var r = t(n =+ n, e =+ e);
-                return function (t) {
-                    return t <= 0
-                        ? n
-                        : t >= 1
-                            ? e
-                            : r(t)
-                }
-            }
-        }
-        function lr(t, n, e, r) {
-            var i = t[0],
-                o = t[1],
-                u = n[0],
-                a = n[1];
-            return o < i
-                ? (i = e(o, i), u = r(a, u))
-                : (i = e(i, o), u = r(u, a)),
-            function (t) {
-                return u(i(t))
-            }
-        }
-        function hr(t, n, e, r) {
-            var i = Math.min(t.length, n.length) - 1,
-                o = new Array(i),
-                u = new Array(i),
-                a = -1;
-            for (t[i] < t[0] && (t = t.slice().reverse(), n = n.slice().reverse()); ++a < i;) 
-                o[a] = e(t[a], t[a + 1]),
-                u[a] = r(n[a], n[a + 1]);
-            return function (n) {
-                var e = ks(t, n, 1, i) - 1;
-                return u[e](o[e](n))
-            }
-        }
-        function pr(t, n) {
-            return n
-                .domain(t.domain())
-                .range(t.range())
-                .interpolate(t.interpolate())
-                .clamp(t.clamp())
-        }
-        function dr(t, n) {
-            function e() {
-                return i = Math.min(a.length, c.length) > 2
-                    ? hr
-                    : lr,
-                o = u = null,
-                r
-            }
-            function r(n) {
-                return (o || (o = i(a, c, f
-                    ? sr(t)
-                    : t, s)))(+ n)
-            }
-            var i,
-                o,
-                u,
-                a = Gv,
-                c = Gv,
-                s = _p,
-                f = !1;
-            return r.invert = function (t) {
-                return (u || (u = i(c, a, cr, f
-                    ? fr(n)
-                    : n)))(+ t)
-            },
-            r.domain = function (t) {
-                return arguments.length
-                    ? (a = Xv.call(t, Zv), e())
-                    : a.slice()
-            },
-            r.range = function (t) {
-                return arguments.length
-                    ? (c = Vv.call(t), e())
-                    : c.slice()
-            },
-            r.rangeRound = function (t) {
-                return c = Vv.call(t),
-                s = yp,
-                e()
-            },
-            r.clamp = function (t) {
-                return arguments.length
-                    ? (f = !!t, e())
-                    : f
-            },
-            r.interpolate = function (t) {
-                return arguments.length
-                    ? (s = t, e())
-                    : s
-            },
-            e()
-        }
-        function vr(t) {
-            var n = t.domain;
-            return t.ticks = function (t) {
-                var e = n();
-                return Bs(e[0], e[e.length - 1], null == t
-                    ? 10
-                    : t)
-            },
-            t.tickFormat = function (t, e) {
-                return Jv(n(), t, e)
-            },
-            t.nice = function (r) {
-                var i = n(),
-                    o = i.length - 1,
-                    u = null == r
-                        ? 10
-                        : r,
-                    a = i[0],
-                    c = i[o],
-                    s = e(a, c, u);
-                return s && (s = e(Math.floor(a / s) * s, Math.ceil(c / s) * s, u), i[0] = Math.floor(a / s) * s, i[o] = Math.ceil(c / s) * s, n(i)),
-                t
-            },
-            t
-        }
-        function _r() {
-            var t = dr(cr, lp);
-            return t.copy = function () {
-                return pr(t, _r())
-            },
-            vr(t)
-        }
-        function yr() {
-            function t(t) {
-                return + t
-            }
-            var n = [0, 1];
-            return t.invert = t,
-            t.domain = t.range = function (e) {
-                return arguments.length
-                    ? (n = Xv.call(e, Zv), t)
-                    : n.slice()
-            },
-            t.copy = function () {
-                return yr().domain(n)
-            },
-            vr(t)
-        }
-        function gr(t, n) {
-            return (n = Math.log(n / t))
-                ? function (e) {
-                    return Math.log(e / t) / n
-                }
-                : $v(n)
-        }
-        function mr(t, n) {
-            return t < 0
-                ? function (e) {
-                    return -Math.pow(-n, e) * Math.pow(-t, 1 - e)
-                }
-                : function (e) {
-                    return Math.pow(n, e) * Math.pow(t, 1 - e)
-                }
-        }
-        function xr(t) {
-            return isFinite(t) ?+ ("1e" + t) : t < 0
-                ? 0
-                : t
-        }
-        function br(t) {
-            return 10 === t
-                ? xr
-                : t === Math.E
-                    ? Math.exp
-                    : function (n) {
-                        return Math.pow(t, n)
-                    }
-        }
-        function wr(t) {
-            return t === Math.E
-                ? Math.log
-                : 10 === t && Math.log10 || 2 === t && Math.log2 || (t = Math.log(t), function (n) {
-                    return Math.log(n) / t
-                })
-        }
-        function Mr(t) {
-            return function (n) {
-                return -t(-n)
-            }
-        }
-        function Tr() {
-            function n() {
-                return o = wr(i),
-                u = br(i),
-                r()[0] < 0 && (o = Mr(o), u = Mr(u)),
-                e
-            }
-            var e = dr(gr, mr).domain([1, 10]),
-                r = e.domain,
-                i = 10,
-                o = wr(10),
-                u = br(10);
-            return e.base = function (t) {
-                return arguments.length
-                    ? (i =+ t, n())
-                    : i
-            },
-            e.domain = function (t) {
-                return arguments.length
-                    ? (r(t), n())
-                    : r()
-            },
-            e.ticks = function (t) {
-                var n,
-                    e = r(),
-                    a = e[0],
-                    c = e[e.length - 1];
-                (n = c < a) && (h = a, a = c, c = h);
-                var s,
-                    f,
-                    l,
-                    h = o(a),
-                    p = o(c),
-                    d = null == t
-                        ? 10 :+ t,
-                    v = [];
-                if (!(i % 1) && p - h < d) {
-                    if (h = Math.round(h) - 1, p = Math.round(p) + 1, a > 0) {
-                        for (; h < p; ++h) 
-                            for (f = 1, s = u(h); f < i; ++f) 
-                                if (l = s * f, !(l < a)) {
-                                    if (l > c) 
-                                        break;
-                                    v.push(l)
-                                }
-                            } else 
-                        for (; h < p; ++h) 
-                            for (f = i - 1, s = u(h); f >= 1; --f) 
-                                if (l = s * f, !(l < a)) {
-                                    if (l > c) 
-                                        break;
-                                    v.push(l)
-                                }
-                            } else 
-                    v = Bs(h, p, Math.min(p - h, d)).map(u);
-                return n
-                    ? v.reverse()
-                    : v
-            },
-            e.tickFormat = function (n, r) {
-                if (null == r && (r = 10 === i
-                    ? ".0e"
-                    : ","), "function" != typeof r && (r = t.format(r)), n === 1 / 0) 
-                    return r;
-                null == n && (n = 10);
-                var a = Math.max(1, i * n / e.ticks().length);
-                return function (t) {
-                    var n = t / u(Math.round(o(t)));
-                    return n * i < i - .5 && (n *= i),
-                    n <= a
-                        ? r(t)
-                        : ""
-                }
-            },
-            e.nice = function () {
-                return r(Qv(r(), {
-                    floor: function (t) {
-                        return u(Math.floor(o(t)))
-                    },
-                    ceil: function (t) {
-                        return u(Math.ceil(o(t)))
-                    }
-                }))
-            },
-            e.copy = function () {
-                return pr(e, Tr().base(i))
-            },
-            e
-        }
-        function Nr(t, n) {
-            return t < 0
-                ? -Math.pow(-t, n)
-                : Math.pow(t, n)
-        }
-        function kr() {
-            function t(t, n) {
-                return (n = Nr(n, e) - (t = Nr(t, e)))
-                    ? function (r) {
-                        return (Nr(r, e) - t) / n
-                    }
-                    : $v(n)
-            }
-            function n(t, n) {
-                return n = Nr(n, e) - (t = Nr(t, e)),
-                function (r) {
-                    return Nr(t + n * r, 1 / e)
-                }
-            }
-            var e = 1,
-                r = dr(t, n),
-                i = r.domain;
-            return r.exponent = function (t) {
-                return arguments.length
-                    ? (e =+ t, i(i()))
-                    : e
-            },
-            r.copy = function () {
-                return pr(r, kr().exponent(e))
-            },
-            vr(r)
-        }
-        function Sr() {
-            return kr().exponent(.5)
-        }
-        function Ar() {
-            function t() {
-                var t = 0,
-                    o = Math.max(1, r.length);
-                for (i = new Array(o - 1); ++t < o;) 
-                    i[t - 1] = Xs(e, t / o);
-                return n
-            }
-            function n(t) {
-                if (!isNaN(t =+ t)) 
-                    return r[ks(i, t)]
-            }
-            var e = [],
-                r = [],
-                i = [];
-            return n.invertExtent = function (t) {
-                var n = r.indexOf(t);
-                return n < 0
-                    ? [NaN, NaN]
-                    : [
-                        n > 0
-                            ? i[n - 1]
-                            : e[0],
-                        n < i.length
-                            ? i[n]
-                            : e[e.length - 1]
-                    ]
-            },
-            n.domain = function (n) {
-                if (!arguments.length) 
-                    return e.slice();
-                e = [];
-                for (var r, i = 0, o = n.length; i < o; ++i) 
-                    r = n[i],
-                    null == r || isNaN(r =+ r) || e.push(r);
-                return e.sort(Ms),
-                t()
-            },
-            n.range = function (n) {
-                return arguments.length
-                    ? (r = Vv.call(n), t())
-                    : r.slice()
-            },
-            n.quantiles = function () {
-                return i.slice()
-            },
-            n.copy = function () {
-                return Ar()
-                    .domain(e)
-                    .range(r)
-            },
-            n
-        }
-        function Er() {
-            function t(t) {
-                if (t <= t) 
-                    return u[ks(o, t, 0, i)]
-            }
-            function n() {
-                var n = -1;
-                for (o = new Array(i); ++n < i;) 
-                    o[n] = ((n + 1) * r - (n - i) * e) / (i + 1);
-                return t
-            }
-            var e = 0,
-                r = 1,
-                i = 1,
-                o = [.5],
-                u = [0, 1];
-            return t.domain = function (t) {
-                return arguments.length
-                    ? (e =+ t[0], r =+ t[1], n())
-                    : [e, r]
-            },
-            t.range = function (t) {
-                return arguments.length
-                    ? (i = (u = Vv.call(t)).length - 1, n())
-                    : u.slice()
-            },
-            t.invertExtent = function (t) {
-                var n = u.indexOf(t);
-                return n < 0
-                    ? [NaN, NaN]
-                    : n < 1
-                        ? [e, o[0]]
-                        : n >= i
-                            ? [
-                                o[i - 1],
-                                r
-                            ]
-                            : [
-                                o[n - 1],
-                                o[n]
-                            ]
-            },
-            t.copy = function () {
-                return Er()
-                    .domain([e, r])
-                    .range(u)
-            },
-            vr(t)
-        }
-        function Cr() {
-            function t(t) {
-                if (t <= t) 
-                    return e[ks(n, t, 0, r)]
-            }
-            var n = [.5],
-                e = [
-                    0, 1
-                ],
-                r = 1;
-            return t.domain = function (i) {
-                return arguments.length
-                    ? (n = Vv.call(i), r = Math.min(n.length, e.length - 1), t)
-                    : n.slice()
-            },
-            t.range = function (i) {
-                return arguments.length
-                    ? (e = Vv.call(i), r = Math.min(n.length, e.length - 1), t)
-                    : e.slice()
-            },
-            t.invertExtent = function (t) {
-                var r = e.indexOf(t);
-                return [
-                    n[r - 1],
-                    n[r]
-                ]
-            },
-            t.copy = function () {
-                return Cr()
-                    .domain(n)
-                    .range(e)
-            },
-            t
-        }
-        function zr(t) {
-            return new Date(t);
-        }
-        function Pr(t) {
-            return t instanceof Date ?+ t :+ new Date(+ t)
-        }
-        function qr(t, n, r, i, o, u, a, c, s) {
-            function f(e) {
-                return (a(e) < e
-                    ? v
-                    : u(e) < e
-                        ? _
-                        : o(e) < e
-                            ? y
-                            : i(e) < e
-                                ? g
-                                : n(e) < e
-                                    ? r(e) < e
-                                        ? m
-                                        : x
-                                    : t(e) < e
-                                        ? b
-                                        : w)(e)
-            }
-            function l(n, r, i, o) {
-                if (null == n && (n = 10), "number" == typeof n) {
-                    var u = Math.abs(i - r) / n,
-                        a = Ts(function (t) {
-                            return t[2]
-                        }).right(M, u);
-                    a === M.length
-                        ? (o = e(r / o_, i / o_, n), n = t)
-                        : a
-                            ? (a = M[u / M[a - 1][2] < M[a][2] / u
-                                    ? a - 1
-                                    : a], o = a[1], n = a[0])
-                            : (o = e(r, i, n), n = c)
-                }
-                return null == o
-                    ? n
-                    : n.every(o)
-            }
-            var h = dr(cr, lp),
-                p = h.invert,
-                d = h.domain,
-                v = s(".%L"),
-                _ = s(":%S"),
-                y = s("%I:%M"),
-                g = s("%I %p"),
-                m = s("%a %d"),
-                x = s("%b %d"),
-                b = s("%B"),
-                w = s("%Y"),
-                M = [
-                    [
-                        a, 1, Kv
-                    ],
-                    [
-                        a, 5, 5 * Kv
-                    ],
-                    [
-                        a, 15, 15 * Kv
-                    ],
-                    [
-                        a, 30, 30 * Kv
-                    ],
-                    [
-                        u, 1, t_
-                    ],
-                    [
-                        u, 5, 5 * t_
-                    ],
-                    [
-                        u, 15, 15 * t_
-                    ],
-                    [
-                        u, 30, 30 * t_
-                    ],
-                    [
-                        o, 1, n_
-                    ],
-                    [
-                        o, 3, 3 * n_
-                    ],
-                    [
-                        o, 6, 6 * n_
-                    ],
-                    [
-                        o, 12, 12 * n_
-                    ],
-                    [
-                        i, 1, e_
-                    ],
-                    [
-                        i, 2, 2 * e_
-                    ],
-                    [
-                        r, 1, r_
-                    ],
-                    [
-                        n, 1, i_
-                    ],
-                    [
-                        n, 3, 3 * i_
-                    ],
-                    [t, 1, o_]
-                ];
-            return h.invert = function (t) {
-                return new Date(p(t))
-            },
-            h.domain = function (t) {
-                return arguments.length
-                    ? d(Xv.call(t, Pr))
-                    : d().map(zr)
-            },
-            h.ticks = function (t, n) {
-                var e,
-                    r = d(),
-                    i = r[0],
-                    o = r[r.length - 1],
-                    u = o < i;
-                return u && (e = i, i = o, o = e),
-                e = l(t, i, o, n),
-                e = e
-                    ? e.range(i, o + 1)
-                    : [],
-                u
-                    ? e.reverse()
-                    : e
-            },
-            h.tickFormat = function (t, n) {
-                return null == n
-                    ? f
-                    : s(n)
-            },
-            h.nice = function (t, n) {
-                var e = d();
-                return (t = l(t, e[0], e[e.length - 1], n))
-                    ? d(Qv(e, t))
-                    : h
-            },
-            h.copy = function () {
-                return pr(h, qr(t, n, r, i, o, u, a, c, s))
-            },
-            h
-        }
-        function Lr(t) {
-            var n = t.length;
-            return function (e) {
-                return t[Math.max(0, Math.min(n - 1, Math.floor(e * n)))]
-            }
-        }
-        function Rr(t) {
-            function n(n) {
-                var o = (n - e) / (r - e);
-                return t(i
-                    ? Math.max(0, Math.min(1, o))
-                    : o)
-            }
-            var e = 0,
-                r = 1,
-                i = !1;
-            return n.domain = function (t) {
-                return arguments.length
-                    ? (e =+ t[0], r =+ t[1], n)
-                    : [e, r]
-            },
-            n.clamp = function (t) {
-                return arguments.length
-                    ? (i = !!t, n)
-                    : i
-            },
-            n.interpolator = function (e) {
-                return arguments.length
-                    ? (t = e, n)
-                    : t
-            },
-            n.copy = function () {
-                return Rr(t)
-                    .domain([e, r])
-                    .clamp(i)
-            },
-            vr(n)
-        }
-        function Ur(t) {
-            return function () {
-                var n = this.ownerDocument,
-                    e = this.namespaceURI;
-                return e === w_ && n.documentElement.namespaceURI === w_
-                    ? n.createElement(t)
-                    : n.createElementNS(e, t)
-            }
-        }
-        function Dr(t) {
-            return function () {
-                return this
-                    .ownerDocument
-                    .createElementNS(t.space, t.local)
-            }
-        }
-        function Or() {
-            return new Fr
-        }
-        function Fr() {
-            this._ = "@" + (++k_).toString(36)
-        }
-        function Ir(t, n, e) {
-            return t = Yr(t, n, e),
-            function (n) {
-                var e = n.relatedTarget;
-                e && (e === this || 8 & e.compareDocumentPosition(this)) || t.call(this, n)
-            }
-        }
-        function Yr(n, e, r) {
-            return function (i) {
-                var o = t.event;
-                t.event = i;
-                try {
-                    n.call(this, this.__data__, e, r)
-                } finally {
-                    t.event = o
-                }
-            }
-        }
-        function Br(t) {
-            return t
-                .trim()
-                .split(/^|\s+/)
-                .map(function (t) {
-                    var n = "",
-                        e = t.indexOf(".");
-                    return e >= 0 && (n = t.slice(e + 1), t = t.slice(0, e)), {
-                        type: t,
-                        name: n
-                    }
-                })
-        }
-        function jr(t) {
-            return function () {
-                var n = this.__on;
-                if (n) {
-                    for (var e, r = 0, i = -1, o = n.length; r < o; ++r) 
-                        e = n[r],
-                        t.type && e.type !== t.type || e.name !== t.name
-                            ? n[++i] = e
-                            : this.removeEventListener(e.type, e.listener, e.capture);
-                    
-                    ++i
-                        ? n.length = i
-                        : delete this.__on
-                }
-            }
-        }
-        function Hr(t, n, e) {
-            var r = z_.hasOwnProperty(t.type)
-                ? Ir
-                : Yr;
-            return function (i, o, u) {
-                var a,
-                    c = this.__on,
-                    s = r(n, o, u);
-                if (c) 
-                    for (var f = 0, l = c.length; f < l; ++f) 
-                        if ((a = c[f]).type === t.type && a.name === t.name) 
-                            return this.removeEventListener(a.type, a.listener, a.capture),
-                            this.addEventListener(a.type, a.listener = s, a.capture = e),
-                            void(a.value = n);
-            this.addEventListener(t.type, s, e),
-                a = {
-                    type: t.type,
-                    name: t.name,
-                    value: n,
-                    listener: s,
-                    capture: e
-                },
-                c
-                    ? c.push(a)
-                    : this.__on = [a]
-            }
-        }
-        function Xr(n, e, r, i) {
-            var o = t.event;
-            n.sourceEvent = t.event,
-            t.event = n;
-            try {
-                return e.apply(r, i)
-            } finally {
-                t.event = o
-            }
-        }
-        function Vr() {}
-        function Wr() {
-            return []
-        }
-        function $r(t, n) {
-            this.ownerDocument = t.ownerDocument,
-            this.namespaceURI = t.namespaceURI,
-            this._next = null,
-            this._parent = t,
-            this.__data__ = n
-        }
-        function Zr(t, n, e, r, i, o) {
-            for (var u, a = 0, c = n.length, s = o.length; a < s; ++a) 
-                (u = n[a])
-                    ? (u.__data__ = o[a], r[a] = u)
-                    : e[a] = new $r(t, o[a]);
-            for (; a < c; ++a) 
-                (u = n[a]) && (i[a] = u)
-        }
-        function Gr(t, n, e, r, i, o, u) {
-            var a,
-                c,
-                s,
-                f = {},
-                l = n.length,
-                h = o.length,
-                p = new Array(l);
-            for (a = 0; a < l; ++a) 
-                (c = n[a]) && (p[a] = s = X_ + u.call(c, c.__data__, a, n), s in f
-                    ? i[a] = c
-                    : f[s] = c);
-            for (a = 0; a < h; ++a) 
-                s = X_ + u.call(t, o[a], a, o),
-                (c = f[s])
-                    ? (r[a] = c, c.__data__ = o[a], f[s] = null)
-                    : e[a] = new $r(t, o[a]);
-            for (a = 0; a < l; ++a) 
-                (c = n[a]) && f[p[a]] === c && (i[a] = c)
-        }
-        function Jr(t, n) {
-            return t < n
-                ? -1
-                : t > n
-                    ? 1
-                    : t >= n
-                        ? 0
-                        : NaN
-        }
-        function Qr(t) {
-            return function () {
-                this.removeAttribute(t)
-            }
-        }
-        function Kr(t) {
-            return function () {
-                this.removeAttributeNS(t.space, t.local)
-            }
-        }
-        function ti(t, n) {
-            return function () {
-                this.setAttribute(t, n)
-            }
-        }
-        function ni(t, n) {
-            return function () {
-                this.setAttributeNS(t.space, t.local, n)
-            }
-        }
-        function ei(t, n) {
-            return function () {
-                var e = n.apply(this, arguments);
-                null == e
-                    ? this.removeAttribute(t)
-                    : this.setAttribute(t, e)
-            }
-        }
-        function ri(t, n) {
-            return function () {
-                var e = n.apply(this, arguments);
-                null == e
-                    ? this.removeAttributeNS(t.space, t.local)
-                    : this.setAttributeNS(t.space, t.local, e)
-            }
-        }
-        function ii(t) {
-            return function () {
-                this
-                    .style
-                    .removeProperty(t)
-            }
-        }
-        function oi(t, n, e) {
-            return function () {
-                this
-                    .style
-                    .setProperty(t, n, e)
-            }
-        }
-        function ui(t, n, e) {
-            return function () {
-                var r = n.apply(this, arguments);
-                null == r
-                    ? this
-                        .style
-                        .removeProperty(t)
-                    : this
-                        .style
-                        .setProperty(t, r, e)
-            }
-        }
-        function ai(t) {
-            return function () {
-                delete this[t]
-            }
-        }
-        function ci(t, n) {
-            return function () {
-                this[t] = n
-            }
-        }
-        function si(t, n) {
-            return function () {
-                var e = n.apply(this, arguments);
-                null == e
-                    ? delete this[t]
-                    : this[t] = e
-            }
-        }
-        function fi(t) {
-            return t
-                .trim()
-                .split(/^|\s+/)
-        }
-        function li(t) {
-            return t.classList || new hi(t)
-        }
-        function hi(t) {
-            this._node = t,
-            this._names = fi(t.getAttribute("class") || "")
-        }
-        function pi(t, n) {
-            for (var e = li(t), r = -1, i = n.length; ++r < i;) 
-                e.add(n[r])
-        }
-        function di(t, n) {
-            for (var e = li(t), r = -1, i = n.length; ++r < i;) 
-                e.remove(n[r])
-        }
-        function vi(t) {
-            return function () {
-                pi(this, t)
-            }
-        }
-        function _i(t) {
-            return function () {
-                di(this, t)
-            }
-        }
-        function yi(t, n) {
-            return function () {
-                (n.apply(this, arguments)
-                    ? pi
-                    : di)(this, t)
-            }
-        }
-        function gi() {
-            this.textContent = ""
-        }
-        function mi(t) {
-            return function () {
-                this.textContent = t
-            }
-        }
-        function xi(t) {
-            return function () {
-                var n = t.apply(this, arguments);
-                this.textContent = null == n
-                    ? ""
-                    : n
-            }
-        }
-        function bi() {
-            this.innerHTML = ""
-        }
-        function wi(t) {
-            return function () {
-                this.innerHTML = t
-            }
-        }
-        function Mi(t) {
-            return function () {
-                var n = t.apply(this, arguments);
-                this.innerHTML = null == n
-                    ? ""
-                    : n
-            }
-        }
-        function Ti() {
-            this.nextSibling && this
-                .parentNode
-                .appendChild(this)
-        }
-        function Ni() {
-            this.previousSibling && this
-                .parentNode
-                .insertBefore(this, this.parentNode.firstChild)
-        }
-        function ki() {
-            return null
-        }
-        function Si() {
-            var t = this.parentNode;
-            t && t.removeChild(this)
-        }
-        function Ai(t, n, e) {
-            var r = iy(t),
-                i = r.CustomEvent;
-            i
-                ? i = new i(n, e)
-                : (i = r.document.createEvent("Event"), e
-                    ? (i.initEvent(n, e.bubbles, e.cancelable), i.detail = e.detail)
-                    : i.initEvent(n, !1, !1)),
-            t.dispatchEvent(i)
-        }
-        function Ei(t, n) {
-            return function () {
-                return Ai(this, t, n)
-            }
-        }
-        function Ci(t, n) {
-            return function () {
-                return Ai(this, t, n.apply(this, arguments))
-            }
-        }
-        function zi(t, n) {
-            this._groups = t,
-            this._parents = n
-        }
-        function Pi() {
-            return new zi([
-                [document.documentElement]
-            ], yy)
-        }
-        function qi(t, n) {
-            var e = t.__transition;
-            if (!e || !(e = e[n]) || e.state > Ty) 
-                throw new Error("too late");
-            return e
-        }
-        function Li(t, n) {
-            var e = t.__transition;
-            if (!e || !(e = e[n]) || e.state > ky) 
-                throw new Error("too late");
-            return e
-        }
-        function Ri(t, n) {
-            var e = t.__transition;
-            if (!e || !(e = e[n])) 
-                throw new Error("too late");
-            return e
-        }
-        function Ui(t, n, e) {
-            function r(t) {
-                e.state = Ny,
-                e
-                    .timer
-                    .restart(i, e.delay, e.time),
-                e.delay <= t && i(t - e.delay)
-            }
-            function i(r) {
-                var s,
-                    f,
-                    l,
-                    h;
-                if (e.state !== Ny) 
-                    return u();
-                for (s in c) 
-                    if (h = c[s], h.name === e.name) {
-                        if (h.state === Sy) 
-                            return pd(i);
-                        h.state === Ay
-                            ? (h.state = Cy, h.timer.stop(), h.on.call("interrupt", t, t.__data__, h.index, h.group), delete c[s]) :+ s < n && (h.state = Cy, h.timer.stop(), delete c[s])
-                    }
-                if (pd(function () {
-                    e.state === Sy && (e.state = Ay, e.timer.restart(o, e.delay, e.time), o(r))
-                }), e.state = ky, e.on.call("start", t, t.__data__, e.index, e.group), e.state === ky) {
-                    for (e.state = Sy, a = new Array(l = e.tween.length), s = 0, f = -1; s < l; ++s) 
-                        (h = e.tween[s].value.call(t, t.__data__, e.index, e.group)) && (a[++f] = h);
-                    a.length = f + 1
-                }
-            }
-            function o(n) {
-                for (var r = n < e.duration
-                    ? e.ease.call(null, n / e.duration)
-                    : (e.timer.restart(u), e.state = Ey, 1), i = -1, o = a.length; ++i < o;) 
-                    a[i].call(null, r);
-                e.state === Ey && (e.on.call("end", t, t.__data__, e.index, e.group), u())
-            }
-            function u() {
-                e.state = Cy,
-                e
-                    .timer
-                    .stop(),
-                delete c[n];
-                for (var r in c) 
-                    return;
-                delete t.__transition
-            }
-            var a,
-                c = t.__transition;
-            c[n] = e,
-            e.timer = Vn(r, 0, e.time)
-        }
-        function Di(t, n) {
-            var e,
-                r;
-            return function () {
-                var i = Li(this, t),
-                    o = i.tween;
-                if (o !== e) {
-                    r = e = o;
-                    for (var u = 0, a = r.length; u < a; ++u) 
-                        if (r[u].name === n) {
-                            r = r.slice(),
-                            r.splice(u, 1);
-                            break
-                        }
-                    }
-                i.tween = r
-            }
-        }
-        function Oi(t, n, e) {
-            var r,
-                i;
-            if ("function" != typeof e) 
-                throw new Error;
-            return function () {
-                var o = Li(this, t),
-                    u = o.tween;
-                if (u !== r) {
-                    i = (r = u).slice();
-                    for (var a = {
-                        name: n,
-                        value: e
-                    }, c = 0, s = i.length; c < s; ++c) 
-                        if (i[c].name === n) {
-                            i[c] = a;
-                            break
-                        }
-                    c === s && i.push(a)
-                }
-                o.tween = i
-            }
-        }
-        function Fi(t, n, e) {
-            var r = t._id;
-            return t.each(function () {
-                var t = Li(this, r);
-                (t.value || (t.value = {}))[n] = e.apply(this, arguments)
-            }),
-            function (t) {
-                return Ri(t, r).value[n]
-            }
-        }
-        function Ii(t) {
-            return function () {
-                this.removeAttribute(t)
-            }
-        }
-        function Yi(t) {
-            return function () {
-                this.removeAttributeNS(t.space, t.local)
-            }
-        }
-        function Bi(t, n, e) {
-            var r,
-                i;
-            return function () {
-                var o = this.getAttribute(t);
-                return o === e
-                    ? null
-                    : o === r
-                        ? i
-                        : i = n(r = o, e)
-            }
-        }
-        function ji(t, n, e) {
-            var r,
-                i;
-            return function () {
-                var o = this.getAttributeNS(t.space, t.local);
-                return o === e
-                    ? null
-                    : o === r
-                        ? i
-                        : i = n(r = o, e)
-            }
-        }
-        function Hi(t, n, e) {
-            var r,
-                i,
-                o;
-            return function () {
-                var u,
-                    a = e(this);
-                return null == a
-                    ? void this.removeAttribute(t)
-                    : (u = this.getAttribute(t), u === a
-                        ? null
-                        : u === r && a === i
-                            ? o
-                            : o = n(r = u, i = a))
-            }
-        }
-        function Xi(t, n, e) {
-            var r,
-                i,
-                o;
-            return function () {
-                var u,
-                    a = e(this);
-                return null == a
-                    ? void this.removeAttributeNS(t.space, t.local)
-                    : (u = this.getAttributeNS(t.space, t.local), u === a
-                        ? null
-                        : u === r && a === i
-                            ? o
-                            : o = n(r = u, i = a))
-            }
-        }
-        function Vi(t, n) {
-            function e() {
-                var e = this,
-                    r = n.apply(e, arguments);
-                return r && function (n) {
-                    e.setAttributeNS(t.space, t.local, r(n))
-                }
-            }
-            return e._value = n,
-            e
-        }
-        function Wi(t, n) {
-            function e() {
-                var e = this,
-                    r = n.apply(e, arguments);
-                return r && function (n) {
-                    e.setAttribute(t, r(n))
-                }
-            }
-            return e._value = n,
-            e
-        }
-        function $i(t, n) {
-            return function () {
-                qi(this, t).delay =+ n.apply(this, arguments)
-            }
-        }
-        function Zi(t, n) {
-            return n =+ n,
-            function () {
-                qi(this, t).delay = n
-            }
-        }
-        function Gi(t, n) {
-            return function () {
-                Li(this, t).duration =+ n.apply(this, arguments)
-            }
-        }
-        function Ji(t, n) {
-            return n =+ n,
-            function () {
-                Li(this, t).duration = n
-            }
-        }
-        function Qi(t, n) {
-            if ("function" != typeof n) 
-                throw new Error;
-            return function () {
-                Li(this, t).ease = n
-            }
-        }
-        function Ki(t) {
-            return (t + "")
-                .trim()
-                .split(/^|\s+/)
-                .every(function (t) {
-                    var n = t.indexOf(".");
-                    return n >= 0 && (t = t.slice(0, n)),
-                    !t || "start" === t
-                })
-        }
-        function to(t, n, e) {
-            var r,
-                i,
-                o = Ki(n)
-                    ? qi
-                    : Li;
-            return function () {
-                var u = o(this, t),
-                    a = u.on;
-                a !== r && (i = (r = a).copy()).on(n, e),
-                u.on = i
-            }
-        }
-        function no(t) {
-            return function () {
-                var n = this.parentNode;
-                for (var e in this.__transition) 
-                    if (+ e !== t) 
-                        return;
-            n && n.removeChild(this)
-            }
-        }
-        function eo(t, n) {
-            var e,
-                r,
-                i;
-            return function () {
-                var o = iy(this).getComputedStyle(this, null),
-                    u = o.getPropertyValue(t),
-                    a = (this.style.removeProperty(t), o.getPropertyValue(t));
-                return u === a
-                    ? null
-                    : u === e && a === r
-                        ? i
-                        : i = n(e = u, r = a)
-            }
-        }
-        function ro(t) {
-            return function () {
-                this
-                    .style
-                    .removeProperty(t)
-            }
-        }
-        function io(t, n, e) {
-            var r,
-                i;
-            return function () {
-                var o = iy(this)
-                    .getComputedStyle(this, null)
-                    .getPropertyValue(t);
-                return o === e
-                    ? null
-                    : o === r
-                        ? i
-                        : i = n(r = o, e)
-            }
-        }
-        function oo(t, n, e) {
-            var r,
-                i,
-                o;
-            return function () {
-                var u = iy(this).getComputedStyle(this, null),
-                    a = u.getPropertyValue(t),
-                    c = e(this);
-                return null == c && (this.style.removeProperty(t), c = u.getPropertyValue(t)),
-                a === c
-                    ? null
-                    : a === r && c === i
-                        ? o
-                        : o = n(r = a, i = c)
-            }
-        }
-        function uo(t, n, e) {
-            function r() {
-                var r = this,
-                    i = n.apply(r, arguments);
-                return i && function (n) {
-                    r
-                        .style
-                        .setProperty(t, i(n), e)
-                }
-            }
-            return r._value = n,
-            r
-        }
-        function ao(t) {
-            return function () {
-                this.textContent = t
-            }
-        }
-        function co(t) {
-            return function () {
-                var n = t(this);
-                this.textContent = null == n
-                    ? ""
-                    : n
-            }
-        }
-        function so(t, n, e, r) {
-            this._groups = t,
-            this._parents = n,
-            this._name = e,
-            this._id = r
-        }
-        function fo(t) {
-            return Pi().transition(t)
-        }
-        function lo() {
-            return++ Ky
-        }
-        function ho(t, n) {
-            for (var e; !(e = t.__transition) || !(e = e[n]);) 
-                if (!(t = t.parentNode)) 
-                    return ng.time = jn(),
-                    ng;
-        return e
-        }
-        function po(t, n, e) {
-            var r = t(e);
-            return "translate(" + (isFinite(r)
-                ? r
-                : n(e)) + ",0)"
-        }
-        function vo(t, n, e) {
-            var r = t(e);
-            return "translate(0," + (isFinite(r)
-                ? r
-                : n(e)) + ")"
-        }
-        function _o(t) {
-            var n = t.bandwidth() / 2;
-            return t.round() && (n = Math.round(n)),
-            function (e) {
-                return t(e) + n
-            }
-        }
-        function yo() {
-            return !this.__axis
-        }
-        function go(t, n) {
-            function e(e) {
-                var s,
-                    f = null == i
-                        ? n.ticks
-                            ? n
-                                .ticks
-                                .apply(n, r)
-                            : n.domain()
-                        : i,
-                    l = null == o
-                        ? n.tickFormat
-                            ? n
-                                .tickFormat
-                                .apply(n, r)
-                            : ug
-                        : o,
-                    h = Math.max(u, 0) + c,
-                    p = t === ag || t === sg
-                        ? po
-                        : vo,
-                    d = n.range(),
-                    v = d[0] + .5,
-                    _ = d[d.length - 1] + .5,
-                    y = (n.bandwidth
-                        ? _o
-                        : ug)(n.copy()),
-                    g = e.selection
-                        ? e.selection()
-                        : e,
-                    m = g
-                        .selectAll(".domain")
-                        .data([null]),
-                    x = g
-                        .selectAll(".tick")
-                        .data(f, n)
-                        .order(),
-                    b = x.exit(),
-                    w = x
-                        .enter()
-                        .append("g")
-                        .attr("class", "tick"),
-                    M = x.select("line"),
-                    T = x.select("text"),
-                    N = t === ag || t === fg
-                        ? -1
-                        : 1,
-                    k = t === fg || t === cg
-                        ? (s = "x", "y")
-                        : (s = "y", "x");
-                m = m.merge(m.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "#000")),
-                x = x.merge(w),
-                M = M.merge(w.append("line").attr("stroke", "#000").attr(s + "2", N * u).attr(k + "1", .5).attr(k + "2", .5)),
-                T = T.merge(w.append("text").attr("fill", "#000").attr(s, N * h).attr(k, .5).attr("dy", t === ag
-                    ? "0em"
-                    : t === sg
-                        ? "0.71em"
-                        : "0.32em")),
-                e !== g && (m = m.transition(e), x = x.transition(e), M = M.transition(e), T = T.transition(e), b = b.transition(e).attr("opacity", lg).attr("transform", function (t) {
-                    return p(y, this.parentNode.__axis || y, t)
-                }), w.attr("opacity", lg).attr("transform", function (t) {
-                    return p(this.parentNode.__axis || y, y, t)
-                })),
-                b.remove(),
-                m.attr("d", t === fg || t == cg
-                    ? "M" + N * a + "," + v + "H0.5V" + _ + "H" + N * a
-                    : "M" + v + "," + N * a + "V0.5H" + _ + "V" + N * a),
-                x
-                    .attr("opacity", 1)
-                    .attr("transform", function (t) {
-                        return p(y, y, t)
-                    }),
-                M.attr(s + "2", N * u),
-                T
-                    .attr(s, N * h)
-                    .text(l),
-                g
-                    .filter(yo)
-                    .attr("fill", "none")
-                    .attr("font-size", 10)
-                    .attr("font-family", "sans-serif")
-                    .attr("text-anchor", t === cg
-                        ? "start"
-                        : t === fg
-                            ? "end"
-                            : "middle"),
-                g.each(function () {
-                    this.__axis = y
-                })
-            }
-            var r = [],
-                i = null,
-                o = null,
-                u = 6,
-                a = 6,
-                c = 3;
-            return e.scale = function (t) {
-                return arguments.length
-                    ? (n = t, e)
-                    : n
-            },
-            e.ticks = function () {
-                return r = og.call(arguments),
-                e
-            },
-            e.tickArguments = function (t) {
-                return arguments.length
-                    ? (r = null == t
-                        ? []
-                        : og.call(t), e)
-                    : r.slice()
-            },
-            e.tickValues = function (t) {
-                return arguments.length
-                    ? (i = null == t
-                        ? null
-                        : og.call(t), e)
-                    : i && i.slice()
-            },
-            e.tickFormat = function (t) {
-                return arguments.length
-                    ? (o = t, e)
-                    : o
-            },
-            e.tickSize = function (t) {
-                return arguments.length
-                    ? (u = a =+ t, e)
-                    : u
-            },
-            e.tickSizeInner = function (t) {
-                return arguments.length
-                    ? (u =+ t, e)
-                    : u
-            },
-            e.tickSizeOuter = function (t) {
-                return arguments.length
-                    ? (a =+ t, e)
-                    : a
-            },
-            e.tickPadding = function (t) {
-                return arguments.length
-                    ? (c =+ t, e)
-                    : c
-            },
-            e
-        }
-        function mo(t) {
-            return go(ag, t)
-        }
-        function xo(t) {
-            return go(cg, t)
-        }
-        function bo(t) {
-            return go(sg, t)
-        }
-        function wo(t) {
-            return go(fg, t)
-        }
-        function Mo(t, n) {
-            return t.parent === n.parent
-                ? 1
-                : 2
-        }
-        function To(t) {
-            return t.reduce(No, 0) / t.length
-        }
-        function No(t, n) {
-            return t + n.x
-        }
-        function ko(t) {
-            return 1 + t.reduce(So, 0)
-        }
-        function So(t, n) {
-            return Math.max(t, n.y)
-        }
-        function Ao(t) {
-            for (var n; n = t.children;) 
-                t = n[0];
-            return t
-        }
-        function Eo(t) {
-            for (var n; n = t.children;) 
-                t = n[n.length - 1];
-            return t
-        }
-        function Co(t, n) {
-            if (t === n) 
-                return t;
-            var e = t.ancestors(),
-                r = n.ancestors(),
-                i = null;
-            for (t = e.pop(), n = r.pop(); t === n;) 
-                i = t,
-                t = e.pop(),
-                n = r.pop();
-            return i
-        }
-        function zo(t, n) {
-            var e,
-                r,
-                i,
-                o,
-                u,
-                a = new Uo(t),
-                c =+ t.value && (a.value = t.value),
-                s = [a];
-            for (null == n && (n = qo); e = s.pop();) 
-                if (c && (e.value =+ e.data.value), (i = n(e.data)) && (u = i.length)) 
-                    for (e.children = new Array(u), o = u - 1; o >= 0; --o) 
-                        s.push(r = e.children[o] = new Uo(i[o])),
-                        r.parent = e,
-                        r.depth = e.depth + 1;
-        return a.eachBefore(Ro)
-        }
-        function Po() {
-            return zo(this).eachBefore(Lo)
-        }
-        function qo(t) {
-            return t.children
-        }
-        function Lo(t) {
-            t.data = t.data.data
-        }
-        function Ro(t) {
-            var n = 0;
-            do 
-                t.height = n;
-            while ((t = t.parent) && t.height < ++n)
-        }
-        function Uo(t) {
-            this.data = t,
-            this.depth = this.height = 0,
-            this.parent = null
-        }
-        function Do(t) {
-            this._ = t,
-            this.next = null
-        }
-        function Oo(t, n) {
-            var e = n.x - t.x,
-                r = n.y - t.y,
-                i = t.r - n.r;
-            return i * i + 1e-6 > e * e + r * r
-        }
-        function Fo(t, n) {
-            var e,
-                r,
-                i,
-                o = null,
-                u = t.head;
-            switch (n.length) {
-                case 1:
-                    e = Io(n[0]);
-                    break;
-                case 2:
-                    e = Yo(n[0], n[1]);
-                    break;
-                case 3:
-                    e = Bo(n[0], n[1], n[2])
-            }
-            for (; u;) 
-                i = u._,
-                r = u.next,
-                e && Oo(e, i)
-                    ? o = u
-                    : (o
-                        ? (t.tail = o, o.next = null)
-                        : t.head = t.tail = null, n.push(i), e = Fo(t, n), n.pop(), t.head
-                        ? (u.next = t.head, t.head = u)
-                        : (u.next = null, t.head = t.tail = u), o = t.tail, o.next = r),
-                u = r;
-            return t.tail = o,
-            e
-        }
-        function Io(t) {
-            return {x: t.x, y: t.y, r: t.r}
-        }
-        function Yo(t, n) {
-            var e = t.x,
-                r = t.y,
-                i = t.r,
-                o = n.x,
-                u = n.y,
-                a = n.r,
-                c = o - e,
-                s = u - r,
-                f = a - i,
-                l = Math.sqrt(c * c + s * s);
-            return {
-                x: (e + o + c / l * f) / 2,
-                y: (r + u + s / l * f) / 2,
-                r: (l + i + a) / 2
-            }
-        }
-        function Bo(t, n, e) {
-            var r = t.x,
-                i = t.y,
-                o = t.r,
-                u = n.x,
-                a = n.y,
-                c = n.r,
-                s = e.x,
-                f = e.y,
-                l = e.r,
-                h = 2 * (r - u),
-                p = 2 * (i - a),
-                d = 2 * (c - o),
-                v = r * r + i * i - o * o - u * u - a * a + c * c,
-                _ = 2 * (r - s),
-                y = 2 * (i - f),
-                g = 2 * (l - o),
-                m = r * r + i * i - o * o - s * s - f * f + l * l,
-                x = _ * p - h * y,
-                b = (p * m - y * v) / x - r,
-                w = (y * d - p * g) / x,
-                M = (_ * v - h * m) / x - i,
-                T = (h * g - _ * d) / x,
-                N = w * w + T * T - 1,
-                k = 2 * (b * w + M * T + o),
-                S = b * b + M * M - o * o,
-                A = (-k - Math.sqrt(k * k - 4 * N * S)) / (2 * N);
-            return {
-                x: b + *A + r,
-                y: M + *A + i,
-                r: A
-            }
-        }
-        function jo(t, n, e) {
-            var r = t.x,
-                i = t.y,
-                o = n.r + e.r,
-                u = t.r + e.r,
-                a = n.x - r,
-                c = n.y - i,
-                s = a * a + c * c;
-            if (s) {
-                var f = .5 + ((u *= u) - (o *= o)) / (2 * s),
-                    l = Math.sqrt(Math.max(0, 2 * o * (u + s) - (u -= s) * u - o * o)) / (2 * s);
-                e.x = r + f * a + l * c,
-                e.y = i + f * c - l * a
-            } else 
-                e.x = r + u,
-                e.y = i
-        }
-        function Ho(t, n) {
-            var e = n.x - t.x,
-                r = n.y - t.y,
-                i = t.r + n.r;
-            return i * i > e * e + r * r
-        }
-        function Xo(t, n, e) {
-            var r = t.x - n,
-                i = t.y - e;
-            return r * r + i * i
-        }
-        function Vo(t) {
-            this._ = t,
-            this.next = null,
-            this.previous = null
-        }
-        function Wo(t) {
-            if (!(i = t.length)) 
-                return 0;
-            var n,
-                e,
-                r,
-                i;
-            if (n = t[0], n.x = 0, n.y = 0, !(i > 1)) 
-                return n.r;
-            if (e = t[1], n.x = -e.r, e.x = n.r, e.y = 0, !(i > 2)) 
-                return n.r + e.r;
-            jo(e, n, r = t[2]);
-            var o,
-                u,
-                a,
-                c,
-                s,
-                f,
-                l,
-                h = n.r * n.r,
-                p = e.r * e.r,
-                d = r.r * r.r,
-                v = h + p + d,
-                _ = h * n.x + p * e.x + d * r.x,
-                y = h * n.y + p * e.y + d * r.y;
-            n = new Vo(n),
-            e = new Vo(e),
-            r = new Vo(r),
-            n.next = r.previous = e,
-            e.next = n.previous = r,
-            r.next = e.previous = n;
-            t : for (a = 3; a < i; ++a) {
-                if (jo(n._, e._, r = t[a]), r = new Vo(r), (s = n.previous) === (c = e.next)) {
-                    if (Ho(c._, r._)) {
-                        n = e,
-                        e = c,
-                        --a;
-                        continue t
-                    }
-                } else {
-                    f = c._.r,
-                    l = s._.r;
-                    do 
-                        if (f <= l) {
-                            if (Ho(c._, r._)) {
-                                e = c,
-                                n.next = e,
-                                e.previous = n,
-                                --a;
-                                continue t
-                            }
-                            c = c.next,
-                            f += c._.r
-                        }
-                    else {
-                        if (Ho(s._, r._)) {
-                            n = s,
-                            n.next = e,
-                            e.previous = n,
-                            --a;
-                            continue t
-                        }
-                        s = s.previous,
-                        l += s._.r
-                    }
-                    while (c !== s.next) 
-                    }
-                for (r.previous = n, r.next = e, n.next = e.previous = e = r, v += d = r._.r * r._.r, _ += d * r._.x, y += d * r._.y, h = Xo(n._, o = _ / v, u = y / v); (r = r.next) !== e;) 
-                    (d = Xo(r._, o, u)) < h && (n = r, h = d);
-                e = n.next
-            }
-            for (n = [e._], r = e; (r = r.next) !== e;) 
-                n.push(r._);
-            for (r = Tg(n), a = 0; a < i; ++a) 
-                n = t[a],
-                n.x -= r.x,
-                n.y -= r.y;
-            return r.r
-        }
-        function $o(t) {
-            return null == t
-                ? null
-                : Zo(t)
-        }
-        function Zo(t) {
-            if ("function" != typeof t) 
-                throw new Error;
-            return t
-        }
-        function Go() {
-            return 0
-        }
-        function Jo(t) {
-            return Math.sqrt(t.value)
-        }
-        function Qo(t) {
-            return function (n) {
-                n.children || (n.r = Math.max(0, + t(n) || 0))
-            }
-        }
-        function Ko(t, n) {
-            return function (e) {
-                if (r = e.children) {
-                    var r,
-                        i,
-                        o,
-                        u = r.length,
-                        a = t(e) * n || 0;
-                    if (a) 
-                        for (i = 0; i < u; ++i) 
-                            r[i].r += a;
-                if (o = Wo(r), a) 
-                        for (i = 0; i < u; ++i) 
-                            r[i].r -= a;
-                e.r = o + a
-                }
-            }
-        }
-        function tu(t) {
-            return function (n) {
-                var e = n.parent;
-                n.r *= t,
-                e && (n.x = e.x + t * n.x, n.y = e.y + t * n.y)
-            }
-        }
-        function nu(t) {
-            return t.id
-        }
-        function eu(t) {
-            return t.parentId
-        }
-        function ru(t, n) {
-            return t.parent === n.parent
-                ? 1
-                : 2
-        }
-        function iu(t) {
-            var n = t.children;
-            return n
-                ? n[0]
-                : t.t
-        }
-        function ou(t) {
-            var n = t.children;
-            return n
-                ? n[n.length - 1]
-                : t.t
-        }
-        function uu(t, n, e) {
-            var r = e / (n.i - t.i);
-            n.c -= r,
-            n.s += e,
-            t.c += r,
-            n.z += e,
-            n.m += e
-        }
-        function au(t) {
-            for (var n, e = 0, r = 0, i = t.children, o = i.length; --o >= 0;) 
-                n = i[o],
-                n.z += e,
-                n.m += e,
-                e += n.s + (r += n.c)
-        }
-        function cu(t, n, e) {
-            return t.a.parent === n.parent
-                ? t.a
-                : e
-        }
-        function su(t, n) {
-            this._ = t,
-            this.parent = null,
-            this.children = null,
-            this.A = null,
-            this.a = this,
-            this.z = 0,
-            this.m = 0,
-            this.c = 0,
-            this.s = 0,
-            this.t = null,
-            this.i = n
-        }
-        function fu(t) {
-            for (var n, e, r, i, o, u = new su(t, 0), a = [u]; n = a.pop();) 
-                if (r = n._.children) 
-                    for (n.children = new Array(o = r.length), i = o - 1; i >= 0; --i) 
-                        a.push(e = n.children[i] = new su(r[i], i)),
-                        e.parent = n;
-        return (u.parent = new su(null, 0)).children = [u],
-            u
-        }
-        function lu(t, n, e, r, i, o) {
-            for (var u, a, c, s, f, l, h, p, d, v, _, y, g = [], m = n.children, x = 0, b = m.length, w = n.value; x < b;) {
-                for (s = i - e, f = o - r, h = p = l = m[x].value, _ = Math.max(f / s, s / f) / (w * t), y = l * l * _, v = Math.max(p / y, y / h), c = x + 1; c < b; ++c) {
-                    if (l += a = m[c].value, a < h && (h = a), a > p && (p = a), y = l * l * _, d = Math.max(p / y, y / h), d > v) {
-                        l -= a;
-                        break
-                    }
-                    v = d
-                }
-                g.push(u = {
-                    value: l,
-                    dice: s < f,
-                    children: m.slice(x, c)
-                }),
-                u.dice
-                    ? Eg(u, e, r, i, w
-                        ? r += f * l / w
-                        : o)
-                    : Ug(u, e, r, w
-                        ? e += s * l / w
-                        : i, o),
-                w -= l,
-                x = c
-            }
-            return g
-        }
-        function hu(t) {
-            return t.x + t.vx
-        }
-        function pu(t) {
-            return t.y + t.vy
-        }
-        function du(t, n) {
-            return n
-        }
-        function vu(t, n) {
-            var e = t.get(n);
-            if (!e) 
-                throw new Error("missing: " + n);
-            return e
-        }
-        function _u(t) {
-            return t.x
-        }
-        function yu(t) {
-            return t.y
-        }
-        function gu() {
-            t
-                .event
-                .stopImmediatePropagation()
-        }
-        function mu(t, n) {
-            var e = t.document.documentElement,
-                r = gy(t).on("dragstart.drag", null);
-            n && (r.on("click.drag", tm, !0), setTimeout(function () {
-                r.on("click.drag", null)
-            }, 0)),
-            "onselectstart" in e
-                ? r.on("selectstart.drag", null)
-                : (e.style.MozUserSelect = e.__noselect, delete e.__noselect)
-        }
-        function xu(t, n, e, r, i, o, u, a, c, s) {
-            this.target = t,
-            this.type = n,
-            this.subject = e,
-            this.identifier = r,
-            this.active = i,
-            this.x = o,
-            this.y = u,
-            this.dx = a,
-            this.dy = c,
-            this._ = s
-        }
-        function bu() {
-            return !t.event.button
-        }
-        function wu() {
-            return this.parentNode
-        }
-        function Mu(n) {
-            return null == n
-                ? {
-                    x: t.event.x,
-                    y: t.event.y
-                }
-                : n
-        }
-        function Tu(t) {
-            return t[0]
-        }
-        function Nu(t) {
-            return t[1]
-        }
-        function ku() {
-            this._ = null
-        }
-        function Su(t) {
-            t.U = t.C = t.L = t.R = t.P = t.N = null
-        }
-        function Au(t, n) {
-            var e = n,
-                r = n.R,
-                i = e.U;
-            i
-                ? i.L === e
-                    ? i.L = r
-                    : i.R = r
-                : t._ = r,
-            r.U = i,
-            e.U = r,
-            e.R = r.L,
-            e.R && (e.R.U = e),
-            r.L = e
-        }
-        function Eu(t, n) {
-            var e = n,
-                r = n.L,
-                i = e.U;
-            i
-                ? i.L === e
-                    ? i.L = r
-                    : i.R = r
-                : t._ = r,
-            r.U = i,
-            e.U = r,
-            e.L = r.R,
-            e.L && (e.L.U = e),
-            r.R = e
-        }
-        function Cu(t) {
-            for (; t.L;) 
-                t = t.L;
-            return t
-        }
-        function zu(t, n, e, r) {
-            var i = [
-                    null, null
-                ],
-                o = sm.push(i) - 1;
-            return i.left = t,
-            i.right = n,
-            e && qu(i, t, n, e),
-            r && qu(i, n, t, r),
-            am[t.index]
-                .halfedges
-                .push(o),
-            am[n.index]
-                .halfedges
-                .push(o),
-            i
-        }
-        function Pu(t, n, e) {
-            var r = [n, e];
-            return r.left = t,
-            r
-        }
-        function qu(t, n, e, r) {
-            t[0] || t[1]
-                ? t.left === e
-                    ? t[1] = r
-                    : t[0] = r
-                : (t[0] = r, t.left = n, t.right = e)
-        }
-        function Lu(t, n, e, r, i) {
-            var o,
-                u = t[0],
-                a = t[1],
-                c = u[0],
-                s = u[1],
-                f = a[0],
-                l = a[1],
-                h = 0,
-                p = 1,
-                d = f - c,
-                v = l - s;
-            if (o = n - c, d || !(o > 0)) {
-                if (o /= d, d < 0) {
-                    if (o < h) 
-                        return;
-                    o < p && (p = o)
-                } else if (d > 0) {
-                    if (o > p) 
-                        return;
-                    o > h && (h = o)
-                }
-                if (o = r - c, d || !(o < 0)) {
-                    if (o /= d, d < 0) {
-                        if (o > p) 
-                            return;
-                        o > h && (h = o)
-                    } else if (d > 0) {
-                        if (o < h) 
-                            return;
-                        o < p && (p = o)
-                    }
-                    if (o = e - s, v || !(o > 0)) {
-                        if (o /= v, v < 0) {
-                            if (o < h) 
-                                return;
-                            o < p && (p = o)
-                        } else if (v > 0) {
-                            if (o > p) 
-                                return;
-                            o > h && (h = o)
-                        }
-                        if (o = i - s, v || !(o < 0)) {
-                            if (o /= v, v < 0) {
-                                if (o > p) 
-                                    return;
-                                o > h && (h = o)
-                            } else if (v > 0) {
-                                if (o < h) 
-                                    return;
-                                o < p && (p = o)
-                            }
-                            return !(h > 0 || p < 1) || (h > 0 && (t[0] = [
-                                c + h * d,
-                                s + h * v
-                            ]), p < 1 && (t[1] = [
-                                c + p * d,
-                                s + p * v
-                            ]), !0)
-                        }
-                    }
-                }
-            }
-        }
-        function Ru(t, n, e, r, i) {
-            var o = t[1];
-            if (o) 
-                return !0;
-            var u,
-                a,
-                c = t[0],
-                s = t.left,
-                f = t.right,
-                l = s[0],
-                h = s[1],
-                p = f[0],
-                d = f[1],
-                v = (l + p) / 2,
-                _ = (h + d) / 2;
-            if (d === h) {
-                if (v < n || v >= r) 
-                    return;
-                if (l > p) {
-                    if (c) {
-                        if (c[1] >= i) 
-                            return
-                    } else 
-                        c = [v, e];
-                    o = [v, i]
-                } else {
-                    if (c) {
-                        if (c[1] < e) 
-                            return
-                    } else 
-                        c = [v, i];
-                    o = [v, e]
-                }
-            } else if (u = (l - p) / (d - h), a = _ - u * v, u < -1 || u > 1) 
-                if (l > p) {
-                    if (c) {
-                        if (c[1] >= i) 
-                            return
-                    } else 
-                        c = [
-                            (e - a) / u,
-                            e
-                        ];
-                    o = [
-                        (i - a) / u,
-                        i
-                    ]
-                }
-            else {
-                if (c) {
-                    if (c[1] < e) 
-                        return
-                } else 
-                    c = [
-                        (i - a) / u,
-                        i
-                    ];
-                o = [
-                    (e - a) / u,
-                    e
-                ]
-            } else if (h < d) {
-                if (c) {
-                    if (c[0] >= r) 
-                        return
-                } else 
-                    c = [
-                        n, u * n + a
-                    ];
-                o = [
-                    r, u * r + a
-                ]
-            } else {
-                if (c) {
-                    if (c[0] < n) 
-                        return
-                } else 
-                    c = [
-                        r, u * r + a
-                    ];
-                o = [
-                    n, u * n + a
-                ]
-            }
-            return t[0] = c,
-            t[1] = o,
-            !0
-        }
-        function Uu(t, n, e, r) {
-            for (var i, o = sm.length; o--;) 
-                Ru(i = sm[o], t, n, e, r) && Lu(i, t, n, e, r) && (Math.abs(i[0][0] - i[1][0]) > hm || Math.abs(i[0][1] - i[1][1]) > hm) || delete sm[o]
-        }
-        function Du(t) {
-            return am[t.index] = {
-                site: t,
-                halfedges: []
-            }
-        }
-        function Ou(t, n) {
-            var e = t.site,
-                r = n.left,
-                i = n.right;
-            return e === i && (i = r, r = e),
-            i
-                ? Math.atan2(i[1] - r[1], i[0] - r[0])
-                : (e === r
-                    ? (r = n[1], i = n[0])
-                    : (r = n[0], i = n[1]), Math.atan2(r[0] - i[0], i[1] - r[1]))
-        }
-        function Fu(t, n) {
-            return n[+ (n.left !== t.site)]
-        }
-        function Iu(t, n) {
-            return n[+ (n.left === t.site)]
-        }
-        function Yu() {
-            for (var t, n, e, r, i = 0, o = am.length; i < o; ++i) 
-                if ((t = am[i]) && (r = (n = t.halfedges).length)) {
-                    var u = new Array(r),
-                        a = new Array(r);
-                    for (e = 0; e < r; ++e) 
-                        u[e] = e,
-                        a[e] = Ou(t, sm[n[e]]);
-                    for (u.sort(function (t, n) {
-                        return a[n] - a[t]
-                    }), e = 0; e < r; ++e) 
-                        a[e] = n[u[e]];
-                    for (e = 0; e < r; ++e) 
-                        n[e] = a[e]
-                }
-            }
-        function Bu(t, n, e, r) {
-            var i,
-                o,
-                u,
-                a,
-                c,
-                s,
-                f,
-                l,
-                h,
-                p,
-                d,
-                v,
-                _ = am.length,
-                y = !0;
-            for (i = 0; i < _; ++i) 
-                if (o = am[i]) {
-                    for (u = o.site, c = o.halfedges, a = c.length; a--;) 
-                        sm[c[a]] || c.splice(a, 1);
-                    for (a = 0, s = c.length; a < s;) 
-                        p = Iu(o, sm[c[a]]),
-                        d = p[0],
-                        v = p[1],
-                        f = Fu(o, sm[c[++a % s]]),
-                        l = f[0],
-                        h = f[1],
-                        (Math.abs(d - l) > hm || Math.abs(v - h) > hm) && (c.splice(a, 0, sm.push(Pu(u, p, Math.abs(d - t) < hm && r - v > hm
-                            ? [
-                                t, Math.abs(l - t) < hm
-                                    ? h
-                                    : r
-                            ]
-                            : Math.abs(v - r) < hm && e - d > hm
-                                ? [
-                                    Math.abs(h - r) < hm
-                                        ? l
-                                        : e,
-                                    r
-                                ]
-                                : Math.abs(d - e) < hm && v - n > hm
-                                    ? [
-                                        e, Math.abs(l - e) < hm
-                                            ? h
-                                            : n
-                                    ]
-                                    : Math.abs(v - n) < hm && d - t > hm
-                                        ? [
-                                            Math.abs(h - n) < hm
-                                                ? l
-                                                : t,
-                                            n
-                                        ]
-                                        : null)) - 1), ++s);
-                    s && (y = !1)
-                }
-            if (y) {
-                var g,
-                    m,
-                    x,
-                    b = 1 / 0;
-                for (i = 0, y = null; i < _; ++i) 
-                    (o = am[i]) && (u = o.site, g = u[0] - t, m = u[1] - n, x = g * g + m * m, x < b && (b = x, y = o));
-                if (y) {
-                    var w = [
-                            t, n
-                        ],
-                        M = [
-                            t, r
-                        ],
-                        T = [
-                            e, r
-                        ],
-                        N = [e, n];
-                    y
-                        .halfedges
-                        .push(sm.push(Pu(u = y.site, w, M)) - 1, sm.push(Pu(u, M, T)) - 1, sm.push(Pu(u, T, N)) - 1, sm.push(Pu(u, N, w)) - 1)
-                }
-            }
-            for (i = 0; i < _; ++i) 
-                (o = am[i]) && (o.halfedges.length || delete am[i])
-        }
-        function ju() {
-            Su(this),
-            this.x = this.y = this.arc = this.site = this.cy = null
-        }
-        function Hu(t) {
-            var n = t.P,
-                e = t.N;
-            if (n && e) {
-                var r = n.site,
-                    i = t.site,
-                    o = e.site;
-                if (r !== o) {
-                    var u = i[0],
-                        a = i[1],
-                        c = r[0] - u,
-                        s = r[1] - a,
-                        f = o[0] - u,
-                        l = o[1] - a,
-                        h = 2 * (c * l - s * f);
-                    if (!(h >= -pm)) {
-                        var p = c * c + s * s,
-                            d = f * f + l * l,
-                            v = (l * p - s * d) / h,
-                            _ = (c * d - f * p) / h,
-                            y = fm.pop() || new ju;
-                        y.arc = t,
-                        y.site = i,
-                        y.x = v + u,
-                        y.y = (y.cy = _ + a) + Math.sqrt(v * v + _ * _),
-                        t.circle = y;
-                        for (var g = null, m = cm._; m;) 
-                            if (y.y < m.y || y.y === m.y && y.x <= m.x) {
-                                if (!m.L) {
-                                    g = m.P;
-                                    break
-                                }
-                                m = m.L
-                            }
-                        else {
-                            if (!m.R) {
-                                g = m;
-                                break
-                            }
-                            m = m.R
-                        }
-                        cm.insert(g, y),
-                        g || (om = y)
-                    }
-                }
-            }
-        }
-        function Xu(t) {
-            var n = t.circle;
-            n && (n.P || (om = n.N), cm.remove(n), fm.push(n), Su(n), t.circle = null)
-        }
-        function Vu() {
-            Su(this),
-            this.edge = this.site = this.circle = null
-        }
-        function Wu(t) {
-            var n = lm.pop() || new Vu;
-            return n.site = t,
-            n
-        }
-        function $u(t) {
-            Xu(t),
-            um.remove(t),
-            lm.push(t),
-            Su(t)
-        }
-        function Zu(t) {
-            var n = t.circle,
-                e = n.x,
-                r = n.cy,
-                i = [
-                    e, r
-                ],
-                o = t.P,
-                u = t.N,
-                a = [t];
-            $u(t);
-            for (var c = o; c.circle && Math.abs(e - c.circle.x) < hm && Math.abs(r - c.circle.cy) < hm;) 
-                o = c.P,
-                a.unshift(c),
-                $u(c),
-                c = o;
-            a.unshift(c),
-            Xu(c);
-            for (var s = u; s.circle && Math.abs(e - s.circle.x) < hm && Math.abs(r - s.circle.cy) < hm;) 
-                u = s.N,
-                a.push(s),
-                $u(s),
-                s = u;
-            a.push(s),
-            Xu(s);
-            var f,
-                l = a.length;
-            for (f = 1; f < l; ++f) 
-                s = a[f],
-                c = a[f - 1],
-                qu(s.edge, c.site, s.site, i);
-            c = a[0],
-            s = a[l - 1],
-            s.edge = zu(c.site, s.site, null, i),
-            Hu(c),
-            Hu(s)
-        }
-        function Gu(t) {
-            for (var n, e, r, i, o = t[0], u = t[1], a = um._; a;) 
-                if (r = Ju(a, u) - o, r > hm) 
-                    a = a.L;
-                else {
-                    if (i = o - Qu(a, u), !(i > hm)) {
-                        r > -hm
-                            ? (n = a.P, e = a)
-                            : i > -hm
-                                ? (n = a, e = a.N)
-                                : n = e = a;
-                        break
-                    }
-                    if (!a.R) {
-                        n = a;
-                        break
-                    }
-                    a = a.R
-                }
-            Du(t);
-            var c = Wu(t);
-            if (um.insert(n, c), n || e) {
-                if (n === e) 
-                    return Xu(n),
-                    e = Wu(n.site),
-                    um.insert(c, e),
-                    c.edge = e.edge = zu(n.site, c.site),
-                    Hu(n),
-                    void Hu(e);
-                if (!e) 
-                    return void(c.edge = zu(n.site, c.site));
-                Xu(n),
-                Xu(e);
-                var s = n.site,
-                    f = s[0],
-                    l = s[1],
-                    h = t[0] - f,
-                    p = t[1] - l,
-                    d = e.site,
-                    v = d[0] - f,
-                    _ = d[1] - l,
-                    y = 2 * (h * _ - p * v),
-                    g = h * h + p * p,
-                    m = v * v + _ * _,
-                    x = [
-                        (_ * g - p * m) / y + f,
-                        (h * m - v * g) / y + l
-                    ];
-                qu(e.edge, s, d, x),
-                c.edge = zu(s, t, null, x),
-                e.edge = zu(t, d, null, x),
-                Hu(n),
-                Hu(e)
-            }
-        }
-        function Ju(t, n) {
-            var e = t.site,
-                r = e[0],
-                i = e[1],
-                o = i - n;
-            if (!o) 
-                return r;
-            var u = t.P;
-            if (!u) 
-                return -(1 / 0);
-            e = u.site;
-            var a = e[0],
-                c = e[1],
-                s = c - n;
-            if (!s) 
-                return a;
-            var f = a - r,
-                l = 1 / o - 1 / s,
-                h = f / s;
-            return l
-                ? (-h + Math.sqrt(h * h - 2 * l * (f * f / (-2 * s) - c + s / 2 + i - o / 2))) / l + r
-                : (r + a) / 2
-        }
-        function Qu(t, n) {
-            var e = t.N;
-            if (e) 
-                return Ju(e, n);
-            var r = t.site;
-            return r[1] === n
-                ? r[0]
-                : 1 / 0
-        }
-        function Ku(t, n, e) {
-            return (t[0] - e[0]) * (n[1] - t[1]) - (t[0] - n[0]) * (e[1] - t[1])
-        }
-        function ta(t, n) {
-            return n[1] - t[1] || n[0] - t[0]
-        }
-        function na(t, n) {
-            var e,
-                r,
-                i,
-                o = t
-                    .sort(ta)
-                    .pop();
-            for (sm = [], am = new Array(t.length), um = new ku, cm = new ku;;) 
-                if (i = om, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) 
-                    o[0] === e && o[1] === r || (Gu(o), e = o[0], r = o[1]),
-                    o = t.pop();
-                else {
-                    if (!i) 
-                        break;
-                    Zu(i.arc)
-                }
-            if (Yu(), n) {
-                var u =+ n[0][0],
-                    a =+ n[0][1],
-                    c =+ n[1][0],
-                    s =+ n[1][1];
-                Uu(u, a, c, s),
-                Bu(u, a, c, s)
-            }
-            this.edges = sm,
-            this.cells = am,
-            um = cm = sm = am = null
-        }
-        function ea(t, n, e) {
-            this.target = t,
-            this.type = n,
-            this.transform = e
-        }
-        function ra(t, n, e) {
-            this.k = t,
-            this.x = n,
-            this.y = e
-        }
-        function ia(t) {
-            return t.__zoom || _m
-        }
-        function oa() {
-            t
-                .event
-                .stopImmediatePropagation()
-        }
-        function ua() {
-            return !t.event.button
-        }
-        function aa() {
-            var t,
-                n,
-                e = this;
-            return e instanceof SVGElement
-                ? (e = e.ownerSVGElement || e, t = e.width.baseVal.value, n = e.height.baseVal.value)
-                : (t = e.clientWidth, n = e.clientHeight),
-            [
-                [
-                    0, 0
-                ],
-                [t, n]
-            ]
-        }
-        function ca() {
-            return this.__zoom || _m
-        }
-        function sa() {
-            t
-                .event
-                .stopImmediatePropagation()
-        }
-        function fa(t) {
-            return {type: t}
-        }
-        function la() {
-            return !t.event.button
-        }
-        function ha() {
-            var t = this.ownerSVGElement || this;
-            return [
-                [
-                    0, 0
-                ],
-                [t.width.baseVal.value, t.height.baseVal.value]
-            ]
-        }
-        function pa(t) {
-            for (; !t.__brush;) 
-                if (!(t = t.parentNode)) 
-                    return;
-        return t.__brush
-        }
-        function da(t) {
-            return t[0][0] === t[1][0] || t[0][1] === t[1][1]
-        }
-        function va(t) {
-            var n = t.__brush;
-            return n
-                ? n
-                    .dim
-                    .output(n.selection)
-                : null
-        }
-        function _a() {
-            return ga(km)
-        }
-        function ya() {
-            return ga(Sm)
-        }
-        function ga(n) {
-            function e(t) {
-                var e = t
-                    .property("__brush", a)
-                    .selectAll(".overlay")
-                    .data([fa("overlay")]);
-                e
-                    .enter()
-                    .append("rect")
-                    .attr("class", "overlay")
-                    .attr("pointer-events", "all")
-                    .attr("cursor", Em.overlay)
-                    .merge(e)
-                    .each(function () {
-                        var t = pa(this).extent;
-                        gy(this)
-                            .attr("x", t[0][0])
-                            .attr("y", t[0][1])
-                            .attr("width", t[1][0] - t[0][0])
-                            .attr("height", t[1][1] - t[0][1])
-                    }),
-                t
-                    .selectAll(".selection")
-                    .data([fa("selection")])
-                    .enter()
-                    .append("rect")
-                    .attr("class", "selection")
-                    .attr("cursor", Em.selection)
-                    .attr("fill", "#777")
-                    .attr("fill-opacity", .3)
-                    .attr("stroke", "#fff")
-                    .attr("shape-rendering", "crispEdges");
-                var i = t
-                    .selectAll(".handle")
-                    .data(n.handles, function (t) {
-                        return t.type
-                    });
-                i
-                    .exit()
-                    .remove(),
-                i
-                    .enter()
-                    .append("rect")
-                    .attr("class", function (t) {
-                        return "handle handle--" + t.type
-                    })
-                    .attr("cursor", function (t) {
-                        return Em[t.type]
-                    }),
-                t
-                    .each(r)
-                    .attr("fill", "none")
-                    .attr("pointer-events", "all")
-                    .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
-                    .on("mousedown.brush touchstart.brush", u)
-            }
-            function r() {
-                var t = gy(this),
-                    n = pa(this).selection;
-                n
-                    ? (t.selectAll(".selection").style("display", null).attr("x", n[0][0]).attr("y", n[0][1]).attr("width", n[1][0] - n[0][0]).attr("height", n[1][1] - n[0][1]), t.selectAll(".handle").style("display", null).attr("x", function (t) {
-                        return "e" === t.type[t.type.length - 1]
-                            ? n[1][0] - h / 2
-                            : n[0][0] - h / 2
-                    }).attr("y", function (t) {
-                        return "s" === t.type[0]
-                            ? n[1][1] - h / 2
-                            : n[0][1] - h / 2
-                    }).attr("width", function (t) {
-                        return "n" === t.type || "s" === t.type
-                            ? n[1][0] - n[0][0] + h
-                            : h
-                    }).attr("height", function (t) {
-                        return "e" === t.type || "w" === t.type
-                            ? n[1][1] - n[0][1] + h
-                            : h
-                    }))
-                    : t
-                        .selectAll(".selection,.handle")
-                        .style("display", "none")
-                        .attr("x", null)
-                        .attr("y", null)
-                        .attr("width", null)
-                        .attr("height", null)
-            }
-            function i(t, n) {
-                return t.__brush.emitter || new o(t, n)
-            }
-            function o(t, n) {
-                this.that = t,
-                this.args = n,
-                this.state = t.__brush,
-                this.active = 0
-            }
-            function u() {
-                function e() {
-                    var t = U_(T);
-                    !U || w || M || (Math.abs(t[0] - O[0]) > Math.abs(t[1] - O[1])
-                        ? M = !0
-                        : w = !0),
-                    O = t,
-                    b = !0,
-                    bm(),
-                    o()
-                }
-                function o() {
-                    var t;
-                    switch (m = O[0] - D[0], x = O[1] - D[1], k) {
-                        case Mm:
-                        case wm:
-                            S && (m = Math.max(P - l, Math.min(L - v, m)), h = l + m, _ = v + m),
-                            A && (x = Math.max(q - p, Math.min(R - y, x)), d = p + x, g = y + x);
-                            break;
-                        case Tm:
-                            S < 0
-                                ? (m = Math.max(P - l, Math.min(L - l, m)), h = l + m, _ = v)
-                                : S > 0 && (m = Math.max(P - v, Math.min(L - v, m)), h = l, _ = v + m),
-                            A < 0
-                                ? (x = Math.max(q - p, Math.min(R - p, x)), d = p + x, g = y)
-                                : A > 0 && (x = Math.max(q - y, Math.min(R - y, x)), d = p, g = y + x);
-                            break;
-                        case Nm:
-                            S && (h = Math.max(P, Math.min(L, l - m * S)), _ = Math.max(P, Math.min(L, v + m * S))),
-                            A && (d = Math.max(q, Math.min(R, p - x * A)), g = Math.max(q, Math.min(R, y + x * A)))
-                    }
-                    _ < h && (S *= -1, t = l, l = v, v = t, t = h, h = _, _ = t, N in Cm && Y.attr("cursor", Em[N = Cm[N]])),
-                    g < d && (A *= -1, t = p, p = y, y = t, t = d, d = g, g = t, N in zm && Y.attr("cursor", Em[N = zm[N]])),
-                    E.selection && (z = E.selection),
-                    w && (h = z[0][0], _ = z[1][0]),
-                    M && (d = z[0][1], g = z[1][1]),
-                    z[0][0] === h && z[0][1] === d && z[1][0] === _ && z[1][1] === g || (E.selection = [
-                        [
-                            h, d
-                        ],
-                        [_, g]
-                    ], r.call(T), F.brush())
-                }
-                function u() {
-                    if (sa(), t.event.touches) {
-                        if (t.event.touches.length) 
-                            return;
-                        c && clearTimeout(c),
-                        c = setTimeout(function () {
-                            c = null
-                        }, 500),
-                        I.on("touchmove.brush touchend.brush touchcancel.brush", null)
-                    } else 
-                        mu(t.event.view, b),
-                        B.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
-                    I.attr("pointer-events", "all"),
-                    Y.attr("cursor", Em.overlay),
-                    E.selection && (z = E.selection),
-                    da(z) && (E.selection = null, r.call(T)),
-                    F.end()
-                }
-                function a() {
-                    switch (t.event.keyCode) {
-                        case 16:
-                            U = S && A;
-                            break;
-                        case 18:
-                            k === Tm && (S && (v = _ - m * S, l = h + m * S), A && (y = g - x * A, p = d + x * A), k = Nm, o());
-                            break;
-                        case 32:
-                            k !== Tm && k !== Nm || (S < 0
-                                ? v = _ - m
-                                : S > 0 && (l = h - m), A < 0
-                                ? y = g - x
-                                : A > 0 && (p = d - x), k = Mm, Y.attr("cursor", Em.selection), o());
-                            break;
-                        default:
-                            return
-                    }
-                    bm()
-                }
-                function s() {
-                    switch (t.event.keyCode) {
-                        case 16:
-                            U && (w = M = U = !1, o());
-                            break;
-                        case 18:
-                            k === Nm && (S < 0
-                                ? v = _
-                                : S > 0 && (l = h), A < 0
-                                ? y = g
-                                : A > 0 && (p = d), k = Tm, o());
-                            break;
-                        case 32:
-                            k === Mm && (t.event.altKey
-                                ? (S && (v = _ - m * S, l = h + m * S), A && (y = g - x * A, p = d + x * A), k = Nm)
-                                : (S < 0
-                                    ? v = _
-                                    : S > 0 && (l = h), A < 0
-                                    ? y = g
-                                    : A > 0 && (p = d), k = Tm), Y.attr("cursor", Em[N]), o());
-                            break;
-                        default:
-                            return
-                    }
-                    bm()
-                }
-                if (t.event.touches) {
-                    if (t.event.changedTouches.length < t.event.touches.length) 
-                        return bm()
-                } else if (c) 
-                    return;
-                if (f.apply(this, arguments)) {
-                    var l,
-                        h,
-                        p,
-                        d,
-                        v,
-                        _,
-                        y,
-                        g,
-                        m,
-                        x,
-                        b,
-                        w,
-                        M,
-                        T = this,
-                        N = t.event.target.__data__.type,
-                        k = "selection" === (t.event.metaKey
-                            ? N = "overlay"
-                            : N)
-                            ? wm
-                            : t.event.altKey
-                                ? Nm
-                                : Tm,
-                        S = n === Sm
-                            ? null
-                            : Pm[N],
-                        A = n === km
-                            ? null
-                            : qm[N],
-                        E = pa(T),
-                        C = E.extent,
-                        z = E.selection,
-                        P = C[0][0],
-                        q = C[0][1],
-                        L = C[1][0],
-                        R = C[1][1],
-                        U = S && A && t.event.shiftKey,
-                        D = U_(T),
-                        O = D,
-                        F = i(T, arguments).beforestart();
-                    "overlay" === N
-                        ? E.selection = z = [
-                            [
-                                l = n === Sm
-                                    ? P
-                                    : D[0],
-                                p = n === km
-                                    ? q
-                                    : D[1]
-                            ],
-                            [
-                                v = n === Sm
-                                    ? L
-                                    : l,
-                                y = n === km
-                                    ? R
-                                    : p
-                            ]
-                        ]
-                        : (l = z[0][0], p = z[0][1], v = z[1][0], y = z[1][1]),
-                    h = l,
-                    d = p,
-                    _ = v,
-                    g = y;
-                    var I = gy(T).attr("pointer-events", "none"),
-                        Y = I
-                            .selectAll(".overlay")
-                            .attr("cursor", Em[N]);
-                    if (t.event.touches) 
-                        I.on("touchmove.brush", e, !0).on("touchend.brush touchcancel.brush", u, !0);
-                    else {
-                        var B = gy(t.event.view)
-                            .on("keydown.brush", a, !0)
-                            .on("keyup.brush", s, !0)
-                            .on("mousemove.brush", e, !0)
-                            .on("mouseup.brush", u, !0);
-                        nm(t.event.view)
-                    }
-                    sa(),
-                    Py(T),
-                    r.call(T),
-                    F.start()
-                }
-            }
-            function a() {
-                var t = this.__brush || {
-                    selection: null
-                };
-                return t.extent = s.apply(this, arguments),
-                t.dim = n,
-                t
-            }
-            var c,
-                s = ha,
-                f = la,
-                l = Pn(e, "start", "brush", "end"),
-                h = 6;
-            return e.move = function (t, e) {
-                t.selection
-                    ? t.on("start.brush", function () {
-                        i(this, arguments)
-                            .beforestart()
-                            .start()
-                    })
-                        .on("interrupt.brush end.brush", function () {
-                            i(this, arguments).end()
-                        })
-                        .tween("brush", function () {
-                            function t(t) {
-                                u.selection = 1 === t && da(s)
-                                    ? null
-                                    : f(t),
-                                r.call(o),
-                                a.brush()
-                            }
-                            var o = this,
-                                u = o.__brush,
-                                a = i(o, arguments),
-                                c = u.selection,
-                                s = n.input("function" == typeof e
-                                    ? e.apply(this, arguments)
-                                    : e, u.extent),
-                                f = _p(c, s);
-                            return c && s
-                                ? t
-                                : t(1)
-                        })
-                    : t.each(function () {
-                        var t = this,
-                            o = arguments,
-                            u = t.__brush,
-                            a = n.input("function" == typeof e
-                                ? e.apply(t, o)
-                                : e, u.extent),
-                            c = i(t, o).beforestart();
-                        Py(t),
-                        u.selection = null == a || da(a)
-                            ? null
-                            : a,
-                        r.call(t),
-                        c
-                            .start()
-                            .brush()
-                            .end()
-                    })
-            },
-            o.prototype = {
-                beforestart: function () {
-                    return 1 === ++this.active && (this.state.emitter = this, this.starting = !0),
-                    this
-                },
-                start: function () {
-                    return this.starting && (this.starting = !1, this.emit("start")),
-                    this
-                },
-                brush: function () {
-                    return this.emit("brush"),
-                    this
-                },
-                end: function () {
-                    return 0 === --this.active && (delete this.state.emitter, this.emit("end")),
-                    this
-                },
-                emit: function (t) {
-                    Xr(new xm(e, t, n.output(this.state.selection)), l.apply, l, [t, this.that, this.args])
-                }
-            },
-            e.extent = function (t) {
-                return arguments.length
-                    ? (s = "function" == typeof t
-                        ? t
-                        : mm([
-                            [ + t[0][0], + t[0][1]
-                            ],
-                            [ + t[1][0], + t[1][1]
-                            ]
-                        ]), e)
-                    : s
-            },
-            e.filter = function (t) {
-                return arguments.length
-                    ? (f = "function" == typeof t
-                        ? t
-                        : mm(!!t), e)
-                    : f
-            },
-            e.handleSize = function (t) {
-                return arguments.length
-                    ? (h =+ t, e)
-                    : h
-            },
-            e.on = function () {
-                var t = l
-                    .on
-                    .apply(l, arguments);
-                return t === l
-                    ? e
-                    : t
-            },
-            e
-        }
-        function ma(t) {
-            return function (n, e) {
-                return t(n.source.value + n.target.value, e.source.value + e.target.value)
-            }
-        }
-        function xa(t) {
-            return t.source
-        }
-        function ba(t) {
-            return t.target
-        }
-        function wa(t) {
-            return t.radius
-        }
-        function Ma(t) {
-            return t.startAngle
-        }
-        function Ta(t) {
-            return t.endAngle
-        }
-        function Na() {
-            this.reset()
-        }
-        function ka(t, n, e) {
-            var r = t.s = n + e,
-                i = r - n,
-                o = r - i;
-            t.t = n - o + (e - i)
-        }
-        function Sa(t) {
-            return t > 1
-                ? 0
-                : t < -1
-                    ? kx
-                    : Math.acos(t)
-        }
-        function Aa(t) {
-            return t > 1
-                ? Sx
-                : t < -1
-                    ? -Sx
-                    : Math.asin(t)
-        }
-        function Ea(t) {
-            return (t = Ix(t / 2)) * t
-        }
-        function Ca() {}
-        function za(t, n) {
-            t && Xx.hasOwnProperty(t.type) && Xx[t.type](t, n)
-        }
-        function Pa(t, n, e) {
-            var r,
-                i = -1,
-                o = t.length - e;
-            for (n.lineStart(); ++i < o;) 
-                r = t[i],
-                n.point(r[0], r[1], r[2]);
-            n.lineEnd()
-        }
-        function qa(t, n) {
-            var e = -1,
-                r = t.length;
-            for (n.polygonStart(); ++e < r;) 
-                Pa(t[e], n, 1);
-            n.polygonEnd()
-        }
-        function La() {
-            Zx.point = Ua
-        }
-        function Ra() {
-            Da(Vm, Wm)
-        }
-        function Ua(t, n) {
-            Zx.point = Da,
-            Vm = t,
-            Wm = n,
-            t *= zx,
-            n *= zx,
-            $m = t,
-            Zm = Rx(n = n / 2 + Ax),
-            Gm = Ix(n)
-        }
-        function Da(t, n) {
-            t *= zx,
-            n *= zx,
-            n = n / 2 + Ax;
-            var e = t - $m,
-                r = e >= 0
-                    ? 1
-                    : -1,
-                i = r * e,
-                o = Rx(n),
-                u = Ix(n),
-                a = Gm * u,
-                c = Zm * o + a * Rx(i),
-                s = a * r * Ix(i);
-            Wx.add(Lx(s, c)),
-            $m = t,
-            Zm = o,
-            Gm = u
-        }
-        function Oa(t) {
-            return [
-                Lx(t[1], t[0]),
-                Aa(t[2])
-            ]
-        }
-        function Fa(t) {
-            var n = t[0],
-                e = t[1],
-                r = Rx(e);
-            return [
-                r * Rx(n),
-                r * Ix(n),
-                Ix(e)
-            ]
-        }
-        function Ia(t, n) {
-            return t[0] * n[0] + t[1] * n[1] + t[2] * n[2]
-        }
-        function Ya(t, n) {
-            return [
-                t[1] * n[2] - t[2] * n[1],
-                t[2] * n[0] - t[0] * n[2],
-                t[0] * n[1] - t[1] * n[0]
-            ]
-        }
-        function Ba(t, n) {
-            t[0] += n[0],
-            t[1] += n[1],
-            t[2] += n[2]
-        }
-        function ja(t, n) {
-            return [
-                t[0] * n,
-                t[1] * n,
-                t[2] * n
-            ]
-        }
-        function Ha(t) {
-            var n = Bx(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
-            t[0] /= n,
-            t[1] /= n,
-            t[2] /= n
-        }
-        function Xa(t, n) {
-            ox.push(ux = [
-                Jm = t,
-                Km = t
-            ]),
-            n < Qm && (Qm = n),
-            n > tx && (tx = n)
-        }
-        function Va(t, n) {
-            var e = Fa([
-                t * zx,
-                n * zx
-            ]);
-            if (ix) {
-                var r = Ya(ix, e),
-                    i = [
-                        r[1], -r[0],
-                        0
-                    ],
-                    o = Ya(i, r);
-                Ha(o),
-                o = Oa(o);
-                var u,
-                    a = t - nx,
-                    c = a > 0
-                        ? 1
-                        : -1,
-                    s = o[0] * Cx * c,
-                    f = Px(a) > 180;
-                f ^ (c * nx < s && s < c * t)
-                    ? (u = o[1] * Cx, u > tx && (tx = u))
-                    : (s = (s + 360) % 360 - 180, f ^ (c * nx < s && s < c * t)
-                        ? (u = -o[1] * Cx, u < Qm && (Qm = u))
-                        : (n < Qm && (Qm = n), n > tx && (tx = n))),
-                f
-                    ? t < nx
-                        ? Qa(Jm, t) > Qa(Jm, Km) && (Km = t)
-                        : Qa(t, Km) > Qa(Jm, Km) && (Jm = t)
-                    : Km >= Jm
-                        ? (t < Jm && (Jm = t), t > Km && (Km = t))
-                        : t > nx
-                            ? Qa(Jm, t) > Qa(Jm, Km) && (Km = t)
-                            : Qa(t, Km) > Qa(Jm, Km) && (Jm = t)
-            } else 
-                Xa(t, n);
-            ix = e,
-            nx = t
-        }
-        function Wa() {
-            Qx.point = Va
-        }
-        function $a() {
-            ux[0] = Jm,
-            ux[1] = Km,
-            Qx.point = Xa,
-            ix = null
-        }
-        function Za(t, n) {
-            if (ix) {
-                var e = t - nx;
-                Jx.add(Px(e) > 180
-                    ? e + (e > 0
-                        ? 360
-                        : -360)
-                    : e)
-            } else 
-                ex = t,
-                rx = n;
-            Zx.point(t, n),
-            Va(t, n)
-        }
-        function Ga() {
-            Zx.lineStart()
-        }
-        function Ja() {
-            Za(ex, rx),
-            Zx.lineEnd(),
-            Px(Jx) > Tx && (Jm = -(Km = 180)),
-            ux[0] = Jm,
-            ux[1] = Km,
-            ix = null
-        }
-        function Qa(t, n) {
-            return (n -= t) < 0
-                ? n + 360
-                : n
-        }
-        function Ka(t, n) {
-            return t[0] - n[0]
-        }
-        function tc(t, n) {
-            return t[0] <= t[1]
-                ? t[0] <= n && n <= t[1]
-                : n < t[0] || t[1] < n
-        }
-        function nc(t, n) {
-            t *= zx,
-            n *= zx;
-            var e = Rx(n);
-            ec(e * Rx(t), e * Ix(t), Ix(n))
-        }
-        function ec(t, n, e) {
-            ++ax,
-            sx += (t - sx) / ax,
-            fx += (n - fx) / ax,
-            lx += (e - lx) / ax
-        }
-        function rc() {
-            tb.point = ic
-        }
-        function ic(t, n) {
-            t *= zx,
-            n *= zx;
-            var e = Rx(n);
-            xx = e * Rx(t),
-            bx = e * Ix(t),
-            wx = Ix(n),
-            tb.point = oc,
-            ec(xx, bx, wx)
-        }
-        function oc(t, n) {
-            t *= zx,
-            n *= zx;
-            var e = Rx(n),
-                r = e * Rx(t),
-                i = e * Ix(t),
-                o = Ix(n),
-                u = Lx(Bx((u = bx * o - wx * i) * u + (u = wx * r - xx * o) * u + (u = xx * i - bx * r) * u), xx * r + bx * i + wx * o);
-            cx += u,
-            hx += u * (xx + (xx = r)),
-            px += u * (bx + (bx = i)),
-            dx += u * (wx + (wx = o)),
-            ec(xx, bx, wx)
-        }
-        function uc() {
-            tb.point = nc
-        }
-        function ac() {
-            tb.point = sc
-        }
-        function cc() {
-            fc(gx, mx),
-            tb.point = nc
-        }
-        function sc(t, n) {
-            gx = t,
-            mx = n,
-            t *= zx,
-            n *= zx,
-            tb.point = fc;
-            var e = Rx(n);
-            xx = e * Rx(t),
-            bx = e * Ix(t),
-            wx = Ix(n),
-            ec(xx, bx, wx)
-        }
-        function fc(t, n) {
-            t *= zx,
-            n *= zx;
-            var e = Rx(n),
-                r = e * Rx(t),
-                i = e * Ix(t),
-                o = Ix(n),
-                u = bx * o - wx * i,
-                a = wx * r - xx * o,
-                c = xx * i - bx * r,
-                s = Bx(u * u + a * a + c * c),
-                f = xx * r + bx * i + wx * o,
-                l = s && -Sa(f) / s,
-                h = Lx(s, f);
-            vx += l * u,
-            _x += l * a,
-            yx += l * c,
-            cx += h,
-            hx += h * (xx + (xx = r)),
-            px += h * (bx + (bx = i)),
-            dx += h * (wx + (wx = o)),
-            ec(xx, bx, wx)
-        }
-        function lc(t, n) {
-            return [
-                t > kx
-                    ? t - Ex
-                    : t < -kx
-                        ? t + Ex
-                        : t,
-                n
-            ]
-        }
-        function hc(t, n, e) {
-            return (t %= Ex)
-                ? n || e
-                    ? rb(dc(t), vc(n, e))
-                    : dc(t)
-                : n || e
-                    ? vc(n, e)
-                    : lc
-        }
-        function pc(t) {
-            return function (n, e) {
-                return n += t,
-                [
-                    n > kx
-                        ? n - Ex
-                        : n < -kx
-                            ? n + Ex
-                            : n,
-                    e
-                ]
-            }
-        }
-        function dc(t) {
-            var n = pc(t);
-            return n.invert = pc(-t),
-            n
-        }
-        function vc(t, n) {
-            function e(t, n) {
-                var e = Rx(n),
-                    a = Rx(t) * e,
-                    c = Ix(t) * e,
-                    s = Ix(n),
-                    f = s * r + a * i;
-                return [
-                    Lx(c * o - f * u, a * r - s * i),
-                    Aa(f * o + c * u)
-                ]
-            }
-            var r = Rx(t),
-                i = Ix(t),
-                o = Rx(n),
-                u = Ix(n);
-            return e.invert = function (t, n) {
-                var e = Rx(n),
-                    a = Rx(t) * e,
-                    c = Ix(t) * e,
-                    s = Ix(n),
-                    f = s * o - c * u;
-                return [
-                    Lx(c * o + s * u, a * r + f * i),
-                    Aa(f * r - a * i)
-                ]
-            },
-            e
-        }
-        function _c(t, n, e, r, i, o) {
-            if (e) {
-                var u = Rx(n),
-                    a = Ix(n),
-                    c = r * e;
-                null == i
-                    ? (i = n + r * Ex, o = n - c / 2)
-                    : (i = yc(u, i), o = yc(u, o), (r > 0
-                        ? i < o
-                        : i > o) && (i += r * Ex));
-                for (var s, f = i; r > 0
-                    ? f > o
-                    : f < o; f -= c) 
-                    s = Oa([
-                        u, -a * Rx(f), -a * Ix(f)
-                    ]),
-                    t.point(s[0], s[1])
-            }
-        }
-        function yc(t, n) {
-            n = Fa(n),
-            n[0] -= t,
-            Ha(n);
-            var e = Sa(-n[1]);
-            return ((-n[2] < 0
-                ? -e
-                : e) + Ex - Tx) % Ex
-        }
-        function gc(t, n, e, r) {
-            this.x = t,
-            this.z = n,
-            this.o = e,
-            this.e = r,
-            this.v = !1,
-            this.n = this.p = null
-        }
-        function mc(t) {
-            if (n = t.length) {
-                for (var n, e, r = 0, i = t[0]; ++r < n;) 
-                    i.n = e = t[r],
-                    e.p = i,
-                    i = e;
-                i.n = e = t[0],
-                e.p = i
-            }
-        }
-        function xc(t, n, e, r) {
-            function i(i, o) {
-                return t <= i && i <= e && n <= o && o <= r
-            }
-            function o(i, o, a, s) {
-                var f = 0,
-                    l = 0;
-                if (null == i || (f = u(i, a)) !== (l = u(o, a)) || c(i, o) < 0 ^ a > 0) {
-                    do 
-                        s.point(0 === f || 3 === f
-                            ? t
-                            : e, f > 1
-                            ? r
-                            : n);
-                    while ((f = (f + a + 4) % 4) !== l)
-                } else 
-                    s.point(o[0], o[1])
-            }
-            function u(r, i) {
-                return Px(r[0] - t) < Tx
-                    ? i > 0
-                        ? 0
-                        : 3
-                    : Px(r[0] - e) < Tx
-                        ? i > 0
-                            ? 2
-                            : 1
-                        : Px(r[1] - n) < Tx
-                            ? i > 0
-                                ? 1
-                                : 0
-                            : i > 0
-                                ? 3
-                                : 2
-            }
-            function a(t, n) {
-                return c(t.x, n.x)
-            }
-            function c(t, n) {
-                var e = u(t, 1),
-                    r = u(n, 1);
-                return e !== r
-                    ? e - r
-                    : 0 === e
-                        ? n[1] - t[1]
-                        : 1 === e
-                            ? t[0] - n[0]
-                            : 2 === e
-                                ? t[1] - n[1]
-                                : n[0] - t[0]
-            }
-            return function (u) {
-                function c(t, n) {
-                    i(t, n) && k.point(t, n)
-                }
-                function s() {
-                    for (var n = 0, e = 0, i = _.length; e < i; ++e) 
-                        for (var o, u, a = _[e], c = 1, s = a.length, f = a[0], l = f[0], h = f[1]; c < s; ++c) 
-                            o = l,
-                            u = h,
-                            f = a[c],
-                            l = f[0],
-                            h = f[1],
-                            u <= r
-                                ? h > r && (l - o) * (r - u) > (h - u) * (t - o) && ++n
-                                : h <= r && (l - o) * (r - u) < (h - u) * (t - o) && --n;
-                    return n
-                }
-                function f() {
-                    k = S,
-                    v = [],
-                    _ = [],
-                    N = !0
-                }
-                function l() {
-                    var t = s(),
-                        n = N && t,
-                        e = (v = Js(v)).length;
-                    (n || e) && (u.polygonStart(), n && (u.lineStart(), o(null, null, 1, u), u.lineEnd()), e && xb(v, a, t, o, u), u.polygonEnd()),
-                    k = u,
-                    v = _ = y = null
-                }
-                function h() {
-                    A.point = d,
-                    _ && _.push(y = []),
-                    T = !0,
-                    M = !1,
-                    b = w = NaN
-                }
-                function p() {
-                    v && (d(g, m), x && M && S.rejoin(), v.push(S.result())),
-                    A.point = c,
-                    M && k.lineEnd()
-                }
-                function d(o, u) {
-                    var a = i(o, u);
-                    if (_ && y.push([o, u]), T) 
-                        g = o,
-                        m = u,
-                        x = a,
-                        T = !1,
-                        a && (k.lineStart(), k.point(o, u));
-                    else if (a && M) 
-                        k.point(o, u);
-                    else {
-                        var c = [
-                                b = Math.max(wb, Math.min(bb, b)),
-                                w = Math.max(wb, Math.min(bb, w))
-                            ],
-                            s = [
-                                o = Math.max(wb, Math.min(bb, o)),
-                                u = Math.max(wb, Math.min(bb, u))
-                            ];
-                        gb(c, s, t, n, e, r)
-                            ? (M || (k.lineStart(), k.point(c[0], c[1])), k.point(s[0], s[1]), a || k.lineEnd(), N = !1)
-                            : a && (k.lineStart(), k.point(o, u), N = !1)
-                    }
-                    b = o,
-                    w = u,
-                    M = a
-                }
-                var v,
-                    _,
-                    y,
-                    g,
-                    m,
-                    x,
-                    b,
-                    w,
-                    M,
-                    T,
-                    N,
-                    k = u,
-                    S = yb(),
-                    A = {
-                        point: c,
-                        lineStart: h,
-                        lineEnd: p,
-                        polygonStart: f,
-                        polygonEnd: l
-                    };
-                return A
-            }
-        }
-        function bc() {
-            Nb.point = Mc,
-            Nb.lineEnd = wc
-        }
-        function wc() {
-            Nb.point = Nb.lineEnd = Ca
-        }
-        function Mc(t, n) {
-            t *= zx,
-            n *= zx,
-            ib = t,
-            ob = Ix(n),
-            ub = Rx(n),
-            Nb.point = Tc
-        }
-        function Tc(t, n) {
-            t *= zx,
-            n *= zx;
-            var e = Ix(n),
-                r = Rx(n),
-                i = Px(t - ib),
-                o = Rx(i),
-                u = Ix(i),
-                a = r * u,
-                c = ub * e - ob * r * o,
-                s = ob * e + ub * r * o;
-            Tb.add(Lx(Bx(a * a + c * c), s)),
-            ib = t,
-            ob = e,
-            ub = r
-        }
-        function Nc(t, n, e) {
-            var r = Os(t, n - Tx, e).concat(n);
-            return function (t) {
-                return r.map(function (n) {
-                    return [t, n]
-                })
-            }
-        }
-        function kc(t, n, e) {
-            var r = Os(t, n - Tx, e).concat(n);
-            return function (t) {
-                return r.map(function (n) {
-                    return [n, t]
-                })
-            }
-        }
-        function Sc() {
-            function t() {
-                return {type: "MultiLineString", coordinates: n()}
-            }
-            function n() {
-                return Os(Ux(o / _) * _, i, _)
-                    .map(h)
-                    .concat(Os(Ux(s / y) * y, c, y).map(p))
-                    .concat(Os(Ux(r / d) * d, e, d).filter(function (t) {
-                        return Px(t % _) > Tx
-                    }).map(f))
-                    .concat(Os(Ux(a / v) * v, u, v).filter(function (t) {
-                        return Px(t % y) > Tx
-                    }).map(l))
-            }
-            var e,
-                r,
-                i,
-                o,
-                u,
-                a,
-                c,
-                s,
-                f,
-                l,
-                h,
-                p,
-                d = 10,
-                v = d,
-                _ = 90,
-                y = 360,
-                g = 2.5;
-            return t.lines = function () {
-                return n().map(function (t) {
-                    return {type: "LineString", coordinates: t}
-                })
-            },
-            t.outline = function () {
-                return {
-                    type: "Polygon",
-                    coordinates: [h(o).concat(p(c).slice(1), h(i).reverse().slice(1), p(s).reverse().slice(1))]
-                }
-            },
-            t.extent = function (n) {
-                return arguments.length
-                    ? t
-                        .extentMajor(n)
-                        .extentMinor(n)
-                    : t.extentMinor()
-            },
-            t.extentMajor = function (n) {
-                return arguments.length
-                    ? (o =+ n[0][0], i =+ n[1][0], s =+ n[0][1], c =+ n[1][1], o > i && (n = o, o = i, i = n), s > c && (n = s, s = c, c = n), t.precision(g))
-                    : [
-                        [
-                            o, s
-                        ],
-                        [i, c]
-                    ]
-            },
-            t.extentMinor = function (n) {
-                return arguments.length
-                    ? (r =+ n[0][0], e =+ n[1][0], a =+ n[0][1], u =+ n[1][1], r > e && (n = r, r = e, e = n), a > u && (n = a, a = u, u = n), t.precision(g))
-                    : [
-                        [
-                            r, a
-                        ],
-                        [e, u]
-                    ]
-            },
-            t.step = function (n) {
-                return arguments.length
-                    ? t
-                        .stepMajor(n)
-                        .stepMinor(n)
-                    : t.stepMinor()
-            },
-            t.stepMajor = function (n) {
-                return arguments.length
-                    ? (_ =+ n[0], y =+ n[1], t)
-                    : [_, y]
-            },
-            t.stepMinor = function (n) {
-                return arguments.length
-                    ? (d =+ n[0], v =+ n[1], t)
-                    : [d, v]
-            },
-            t.precision = function (n) {
-                return arguments.length
-                    ? (g =+ n, f = Nc(a, u, 90), l = kc(r, e, g), h = Nc(s, c, 90), p = kc(o, i, g), t)
-                    : g
-            },
-            t.extentMajor([
-                [
-                    -180, -90 + Tx
-                ],
-                [
-                    180, 90 - Tx
-                ]
-            ]).extentMinor([
-                [
-                    -180, -80 - Tx
-                ],
-                [
-                    180, 80 + Tx
-                ]
-            ])
-        }
-        function Ac() {
-            return Sc()()
-        }
-        function Ec() {
-            Lb.point = Cc
-        }
-        function Cc(t, n) {
-            Lb.point = zc,
-            ab = sb = t,
-            cb = fb = n
-        }
-        function zc(t, n) {
-            qb.add(fb * t - sb * n),
-            sb = t,
-            fb = n
-        }
-        function Pc() {
-            zc(ab, cb)
-        }
-        function qc(t, n) {
-            t < Rb && (Rb = t),
-            t > Db && (Db = t),
-            n < Ub && (Ub = n),
-            n > Ob && (Ob = n)
-        }
-        function Lc(t, n) {
-            Ib += t,
-            Yb += n,
-            ++Bb
-        }
-        function Rc() {
-            Zb.point = Uc
-        }
-        function Uc(t, n) {
-            Zb.point = Dc,
-            Lc(pb = t, db = n)
-        }
-        function Dc(t, n) {
-            var e = t - pb,
-                r = n - db,
-                i = Bx(e * e + r * r);
-            jb += i * (pb + t) / 2,
-            Hb += i * (db + n) / 2,
-            Xb += i,
-            Lc(pb = t, db = n)
-        }
-        function Oc() {
-            Zb.point = Lc
-        }
-        function Fc() {
-            Zb.point = Yc
-        }
-        function Ic() {
-            Bc(lb, hb)
-        }
-        function Yc(t, n) {
-            Zb.point = Bc,
-            Lc(lb = pb = t, hb = db = n)
-        }
-        function Bc(t, n) {
-            var e = t - pb,
-                r = n - db,
-                i = Bx(e * e + r * r);
-            jb += i * (pb + t) / 2,
-            Hb += i * (db + n) / 2,
-            Xb += i,
-            i = db * t - pb * n,
-            Vb += i * (pb + t),
-            Wb += i * (db + n),
-            $b += 3 * i,
-            Lc(pb = t, db = n)
-        }
-        function jc(t) {
-            this._context = t
-        }
-        function Hc() {
-            this._string = []
-        }
-        function Xc(t) {
-            return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z"
-        }
-        function Vc(t) {
-            return t.length > 1
-        }
-        function Wc(t, n) {
-            return ((t = t.x)[0] < 0
-                ? t[1] - Sx - Tx
-                : Sx - t[1]) - ((n = n.x)[0] < 0
-                ? n[1] - Sx - Tx
-                : Sx - n[1])
-        }
-        function $c(t) {
-            var n,
-                e = NaN,
-                r = NaN,
-                i = NaN;
-            return {
-                lineStart: function () {
-                    t.lineStart(),
-                    n = 1
-                },
-                point: function (o, u) {
-                    var a = o > 0
-                            ? kx
-                            : -kx,
-                        c = Px(o - e);
-                    Px(c - kx) < Tx
-                        ? (t.point(e, r = (r + u) / 2 > 0
-                            ? Sx
-                            : -Sx), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), n = 0)
-                        : i !== a && c >= kx && (Px(e - i) < Tx && (e -= i * Tx), Px(o - a) < Tx && (o -= a * Tx), r = Zc(e, r, o, u), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), n = 0),
-                    t.point(e = o, r = u),
-                    i = a
-                },
-                lineEnd: function () {
-                    t.lineEnd(),
-                    e = r = NaN
-                },
-                clean: function () {
-                    return 2 - n
-                }
-            }
-        }
-        function Zc(t, n, e, r) {
-            var i,
-                o,
-                u = Ix(t - e);
-            return Px(u) > Tx
-                ? qx((Ix(n) * (o = Rx(r)) * Ix(e) - Ix(r) * (i = Rx(n)) * Ix(t)) / (i * o * u))
-                : (n + r) / 2
-        }
-        function Gc(t, n, e, r) {
-            var i;
-            if (null == t) 
-                i = e * Sx,
-                r.point(-kx, i),
-                r.point(0, i),
-                r.point(kx, i),
-                r.point(kx, 0),
-                r.point(kx, -i),
-                r.point(0, -i),
-                r.point(-kx, -i),
-                r.point(-kx, 0),
-                r.point(-kx, i);
-            else if (Px(t[0] - n[0]) > Tx) {
-                var o = t[0] < n[0]
-                    ? kx
-                    : -kx;
-                i = e * o / 2,
-                r.point(-o, i),
-                r.point(0, i),
-                r.point(o, i)
-            } else 
-                r.point(n[0], n[1])
-        }
-        function Jc(t) {
-            return function (n) {
-                var e = new Qc;
-                for (var r in t) 
-                    e[r] = t[r];
-                return e.stream = n,
-                e
-            }
-        }
-        function Qc() {}
-        function Kc(t, n, e) {
-            var r = n[1][0] - n[0][0],
-                i = n[1][1] - n[0][1],
-                o = t.clipExtent && t.clipExtent();
-            t
-                .scale(150)
-                .translate([0, 0]),
-            null != o && t.clipExtent(null),
-            Vx(e, t.stream(Fb));
-            var u = Fb.result(),
-                a = Math.min(r / (u[1][0] - u[0][0]), i / (u[1][1] - u[0][1])),
-                c =+ n[0][0] + (r - a * (u[1][0] + u[0][0])) / 2,
-                s =+ n[0][1] + (i - a * (u[1][1] + u[0][1])) / 2;
-            return null != o && t.clipExtent(o),
-            t
-                .scale(150 * a)
-                .translate([c, s])
-        }
-        function ts(t, n, e) {
-            return Kc(t, [
-                [
-                    0, 0
-                ],
-                n
-            ], e)
-        }
-        function ns(t) {
-            return Jc({
-                point: function (n, e) {
-                    n = t(n, e),
-                    this
-                        .stream
-                        .point(n[0], n[1])
-                }
-            })
-        }
-        function es(t, n) {
-            function e(r, i, o, u, a, c, s, f, l, h, p, d, v, _) {
-                var y = s - r,
-                    g = f - i,
-                    m = y * y + g * g;
-                if (m > 4 * n && v--) {
-                    var x = u + h,
-                        b = a + p,
-                        w = c + d,
-                        M = Bx(x * x + b * b + w * w),
-                        T = Aa(w /= M),
-                        N = Px(Px(w) - 1) < Tx || Px(o - l) < Tx
-                            ? (o + l) / 2
-                            : Lx(b, x),
-                        k = t(N, T),
-                        S = k[0],
-                        A = k[1],
-                        E = S - r,
-                        C = A - i,
-                        z = g * E - y * C;
-                    (z * z / m > n || Px((y * E + g * C) / m - .5) > .3 || u * h + a * p + c * d < iw) && (e(r, i, o, u, a, c, S, A, N, x /= M, b /= M, w, v, _), _.point(S, A), e(S, A, N, x, b, w, s, f, l, h, p, d, v, _))
-                }
-            }
-            return function (n) {
-                function r(e, r) {
-                    e = t(e, r),
-                    n.point(e[0], e[1])
-                }
-                function i() {
-                    y = NaN,
-                    w.point = o,
-                    n.lineStart()
-                }
-                function o(r, i) {
-                    var o = Fa([r, i]),
-                        u = t(r, i);
-                    e(y, g, _, m, x, b, y = u[0], g = u[1], _ = r, m = o[0], x = o[1], b = o[2], rw, n),
-                    n.point(y, g)
-                }
-                function u() {
-                    w.point = r,
-                    n.lineEnd()
-                }
-                function a() {
-                    i(),
-                    w.point = c,
-                    w.lineEnd = s
-                }
-                function c(t, n) {
-                    o(f = t, n),
-                    l = y,
-                    h = g,
-                    p = m,
-                    d = x,
-                    v = b,
-                    w.point = o
-                }
-                function s() {
-                    e(y, g, _, m, x, b, l, h, f, p, d, v, rw, n),
-                    w.lineEnd = u,
-                    u()
-                }
-                var f,
-                    l,
-                    h,
-                    p,
-                    d,
-                    v,
-                    _,
-                    y,
-                    g,
-                    m,
-                    x,
-                    b,
-                    w = {
-                        point: r,
-                        lineStart: i,
-                        lineEnd: u,
-                        polygonStart: function () {
-                            n.polygonStart(),
-                            w.lineStart = a
-                        },
-                        polygonEnd: function () {
-                            n.polygonEnd(),
-                            w.lineStart = i
-                        }
-                    };
-                return w
-            }
-        }
-        function rs(t) {
-            return is(function () {
-                return t
-            })()
-        }
-        function is(t) {
-            function n(t) {
-                return t = f(t[0] * zx, t[1] * zx),
-                [
-                    t[0] * _ + a,
-                    c - t[1] * _
-                ]
-            }
-            function e(t) {
-                return t = f.invert((t[0] - a) / _, (c - t[1]) / _),
-                t && [
-                    t[0] * Cx,
-                    t[1] * Cx
-                ]
-            }
-            function r(t, n) {
-                return t = u(t, n),
-                [
-                    t[0] * _ + a,
-                    c - t[1] * _
-                ]
-            }
-            function i() {
-                f = rb(s = hc(b, w, M), u);
-                var t = u(m, x);
-                return a = y - t[0] * _,
-                c = g + t[1] * _,
-                o()
-            }
-            function o() {
-                return d = v = null,
-                n
-            }
-            var u,
-                a,
-                c,
-                s,
-                f,
-                l,
-                h,
-                p,
-                d,
-                v,
-                _ = 150,
-                y = 480,
-                g = 250,
-                m = 0,
-                x = 0,
-                b = 0,
-                w = 0,
-                M = 0,
-                T = null,
-                N = tw,
-                k = null,
-                S = zb,
-                A = .5,
-                E = ow(r, A);
-            return n.stream = function (t) {
-                return d && v === t
-                    ? d
-                    : d = uw(N(s, E(S(v = t))))
-            },
-            n.clipAngle = function (t) {
-                return arguments.length
-                    ? (N =+ t
-                        ? nw(T = t * zx, 6 * zx)
-                        : (T = null, tw), o())
-                    : T * Cx
-            },
-            n.clipExtent = function (t) {
-                return arguments.length
-                    ? (S = null == t
-                        ? (k = l = h = p = null, zb)
-                        : xc(k =+ t[0][0], l =+ t[0][1], h =+ t[1][0], p =+ t[1][1]), o())
-                    : null == k
-                        ? null
-                        : [
-                            [
-                                k, l
-                            ],
-                            [h, p]
-                        ]
-            },
-            n.scale = function (t) {
-                return arguments.length
-                    ? (_ =+ t, i())
-                    : _
-            },
-            n.translate = function (t) {
-                return arguments.length
-                    ? (y =+ t[0], g =+ t[1], i())
-                    : [y, g]
-            },
-            n.center = function (t) {
-                return arguments.length
-                    ? (m = t[0] % 360 * zx, x = t[1] % 360 * zx, i())
-                    : [
-                        m * Cx,
-                        x * Cx
-                    ]
-            },
-            n.rotate = function (t) {
-                return arguments.length
-                    ? (b = t[0] % 360 * zx, w = t[1] % 360 * zx, M = t.length > 2
-                        ? t[2] % 360 * zx
-                        : 0, i())
-                    : [
-                        b * Cx,
-                        w * Cx,
-                        M * Cx
-                    ]
-            },
-            n.precision = function (t) {
-                return arguments.length
-                    ? (E = ow(r, A = t * t), o())
-                    : Bx(A)
-            },
-            n.fitExtent = function (t, e) {
-                return Kc(n, t, e)
-            },
-            n.fitSize = function (t, e) {
-                return ts(n, t, e)
-            },
-            function () {
-                return u = t.apply(this, arguments),
-                n.invert = u.invert && e,
-                i()
-            }
-        }
-        function os(t) {
-            var n = 0,
-                e = kx / 3,
-                r = is(t),
-                i = r(n, e);
-            return i.parallels = function (t) {
-                return arguments.length
-                    ? r(n = t[0] * zx, e = t[1] * zx)
-                    : [
-                        n * Cx,
-                        e * Cx
-                    ]
-            },
-            i
-        }
-        function us(t) {
-            function n(t, n) {
-                return [
-                    t * e,
-                    Ix(n) / e
-                ]
-            }
-            var e = Rx(t);
-            return n.invert = function (t, n) {
-                return [
-                    t / e,
-                    Aa(n * e)
-                ]
-            },
-            n
-        }
-        function as(t, n) {
-            function e(t, n) {
-                var e = Bx(o - 2 * i * Ix(n)) / i;
-                return [
-                    e * Ix(t *= i),
-                    u - e * Rx(t)
-                ]
-            }
-            var r = Ix(t),
-                i = (r + Ix(n)) / 2;
-            if (Px(i) < Tx) 
-                return us(t);
-            var o = 1 + r * (2 * i - r),
-                u = Bx(o) / i;
-            return e.invert = function (t, n) {
-                var e = u - n;
-                return [
-                    Lx(t, Px(e)) / i * Yx(e),
-                    Aa((o - (t * t + e * e) * i * i) / (2 * i))
-                ]
-            },
-            e
-        }
-        function cs(t) {
-            var n = t.length;
-            return {
-                point: function (e, r) {
-                    for (var i = -1; ++i < n;) 
-                        t[i].point(e, r)
-                },
-                sphere: function () {
-                    for (var e = -1; ++e < n;) 
-                        t[e].sphere()
-                },
-                lineStart: function () {
-                    for (var e = -1; ++e < n;) 
-                        t[e].lineStart()
-                },
-                lineEnd: function () {
-                    for (var e = -1; ++e < n;) 
-                        t[e].lineEnd()
-                },
-                polygonStart: function () {
-                    for (var e = -1; ++e < n;) 
-                        t[e].polygonStart()
-                },
-                polygonEnd: function () {
-                    for (var e = -1; ++e < n;) 
-                        t[e].polygonEnd()
-                }
-            }
-        }
-        function ss(t) {
-            return function (n, e) {
-                var r = Rx(n),
-                    i = Rx(e),
-                    o = t(r * i);
-                return [
-                    o * i * Ix(n),
-                    o * Ix(e)
-                ]
-            }
-        }
-        function fs(t) {
-            return function (n, e) {
-                var r = Bx(n * n + e * e),
-                    i = t(r),
-                    o = Ix(i),
-                    u = Rx(i);
-                return [
-                    Lx(n * o, r * u),
-                    Aa(r && e * o / r)
-                ]
-            }
-        }
-        function ls(t, n) {
-            return [
-                t,
-                Ox(jx((Sx + n) / 2))
-            ]
-        }
-        function hs(t) {
-            var n,
-                e = rs(t),
-                r = e.scale,
-                i = e.translate,
-                o = e.clipExtent;
-            return e.scale = function (t) {
-                return arguments.length
-                    ? (r(t), n && e.clipExtent(null), e)
-                    : r()
-            },
-            e.translate = function (t) {
-                return arguments.length
-                    ? (i(t), n && e.clipExtent(null), e)
-                    : i()
-            },
-            e.clipExtent = function (t) {
-                if (!arguments.length) 
-                    return n
-                        ? null
-                        : o();
-                if (n = null == t) {
-                    var u = kx * r(),
-                        a = i();
-                    t = [
-                        [
-                            a[0] - u,
-                            a[1] - u
-                        ],
-                        [
-                            a[0] + u,
-                            a[1] + u
-                        ]
-                    ]
-                }
-                return o(t),
-                e
-            },
-            e.clipExtent(null)
-        }
-        function ps(t) {
-            return jx((Sx + t) / 2)
-        }
-        function ds(t, n) {
-            function e(t, n) {
-                o > 0
-                    ? n < -Sx + Tx && (n = -Sx + Tx)
-                    : n > Sx - Tx && (n = Sx - Tx);
-                var e = o / Fx(ps(n), i);
-                return [
-                    e * Ix(i * t),
-                    o - e * Rx(i * t)
-                ]
-            }
-            var r = Rx(t),
-                i = t === n
-                    ? Ix(t)
-                    : Ox(r / Rx(n)) / Ox(ps(n) / ps(t)),
-                o = r * Fx(ps(t), i) / i;
-            return i
-                ? (e.invert = function (t, n) {
-                    var e = o - n,
-                        r = Yx(i) * Bx(t * t + e * e);
-                    return [
-                        Lx(t, Px(e)) / i * Yx(e),
-                        2 * qx(Fx(o / r, 1 / i)) - Sx
-                    ]
-                },
-                e)
-                : ls
-        }
-        function vs(t, n) {
-            return [t, n]
-        }
-        function _s(t, n) {
-            function e(t, n) {
-                var e = o - n,
-                    r = i * t;
-                return [
-                    e * Ix(r),
-                    o - e * Rx(r)
-                ]
-            }
-            var r = Rx(t),
-                i = t === n
-                    ? Ix(t)
-                    : (r - Rx(n)) / (n - t),
-                o = r / i + t;
-            return Px(i) < Tx
-                ? vs
-                : (e.invert = function (t, n) {
-                    var e = o - n;
-                    return [
-                        Lx(t, Px(e)) / i * Yx(e),
-                        o - Yx(i) * Bx(t * t + e * e)
-                    ]
-                },
-                e)
-        }
-        function ys(t, n) {
-            var e = Rx(n),
-                r = Rx(t) * e;
-            return [
-                e * Ix(t) / r,
-                Ix(n) / r
-            ]
-        }
-        function gs(t, n, e) {
-            return 1 === t && 0 === n && 0 === e
-                ? zb
-                : Jc({
-                    point: function (r, i) {
-                        this
-                            .stream
-                            .point(r * t + n, i * t + e)
-                    }
-                })
-        }
-        function ms(t, n) {
-            return [
-                Rx(n) * Ix(t),
-                Ix(n)
-            ]
-        }
-        function xs(t, n) {
-            var e = Rx(n),
-                r = 1 + Rx(t) * e;
-            return [
-                e * Ix(t) / r,
-                Ix(n) / r
-            ]
-        }
-        function bs(t, n) {
-            return [
-                Ox(jx((Sx + n) / 2)), -t
-            ]
-        }
-        var ws = "4.3.0",
-            Ms = function (t, n) {
-                return t < n
-                    ? -1
-                    : t > n
-                        ? 1
-                        : t >= n
-                            ? 0
-                            : NaN
-            },
-            Ts = function (t) {
-                return 1 === t.length && (t = n(t)), {
-                    left: function (n, e, r, i) {
-                        for (null == r && (r = 0), null == i && (i = n.length); r < i;) {
-                            var o = r + i >>> 1;
-                            t(n[o], e) < 0
-                                ? r = o + 1
-                                : i = o
-                        }
-                        return r
-                    },
-                    right: function (n, e, r, i) {
-                        for (null == r && (r = 0), null == i && (i = n.length); r < i;) {
-                            var o = r + i >>> 1;
-                            t(n[o], e) > 0
-                                ? i = o
-                                : r = o + 1
-                        }
-                        return r
-                    }
-                }
-            },
-            Ns = Ts(Ms),
-            ks = Ns.right,
-            Ss = Ns.left,
-            As = function (t, n) {
-                return n < t
-                    ? -1
-                    : n > t
-                        ? 1
-                        : n >= t
-                            ? 0
-                            : NaN
-            },
-            Es = function (t) {
-                return null === t
-                    ? NaN :+ t
-            },
-            Cs = function (t, n) {
-                var e,
-                    r,
-                    i = t.length,
-                    o = 0,
-                    u = 0,
-                    a = -1,
-                    c = 0;
-                if (null == n) 
-                    for (; ++a < i;) 
-                        isNaN(e = Es(t[a])) || (r = e - o, o += r / ++c, u += r * (e - o));
-            else 
-                    for (; ++a < i;) 
-                        isNaN(e = Es(n(t[a], a, t))) || (r = e - o, o += r / ++c, u += r * (e - o));
-            if (c > 1) 
-                    return u / (c - 1)
-            },
-            zs = function (t, n) {
-                var e = Cs(t, n);
-                return e
-                    ? Math.sqrt(e)
-                    : e
-            },
-            Ps = function (t, n) {
-                var e,
-                    r,
-                    i,
-                    o = -1,
-                    u = t.length;
-                if (null == n) {
-                    for (; ++o < u;) 
-                        if (null != (r = t[o]) && r >= r) {
-                            e = i = r;
-                            break
-                        }
-                    for (; ++o < u;) 
-                        null != (r = t[o]) && (e > r && (e = r), i < r && (i = r))
-                } else {
-                    for (; ++o < u;) 
-                        if (null != (r = n(t[o], o, t)) && r >= r) {
-                            e = i = r;
-                            break
-                        }
-                    for (; ++o < u;) 
-                        null != (r = n(t[o], o, t)) && (e > r && (e = r), i < r && (i = r))
-                }
-                return [e, i]
-            },
-            qs = Array.prototype,
-            Ls = qs.slice,
-            Rs = qs.map,
-            Us = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            Ds = function (t) {
-                return t
-            },
-            Os = function (t, n, e) {
-                t =+ t,
-                n =+ n,
-                e = (i = arguments.length) < 2
-                    ? (n = t, t = 0, 1)
-                    : i < 3
-                        ? 1 :+ e;
-                for (var r = -1, i = 0 | Math.max(0, Math.ceil((n - t) / e)), o = new Array(i); ++r < i;) 
-                    o[r] = t + r * e;
-                return o
-            },
-            Fs = Math.sqrt(50),
-            Is = Math.sqrt(10),
-            Ys = Math.sqrt(2),
-            Bs = function (t, n, r) {
-                var i = e(t, n, r);
-                return Os(Math.ceil(t / i) * i, Math.floor(n / i) * i + i / 2, i)
-            },
-            js = function (t) {
-                return Math.ceil(Math.log(t.length) / Math.LN2) + 1
-            },
-            Hs = function () {
-                function t(t) {
-                    var i,
-                        o,
-                        u = t.length,
-                        a = new Array(u);
-                    for (i = 0; i < u; ++i) 
-                        a[i] = n(t[i], i, t);
-                    var c = e(a),
-                        s = c[0],
-                        f = c[1],
-                        l = r(a, s, f);
-                    Array.isArray(l) || (l = Bs(s, f, l));
-                    for (var h = l.length; l[0] <= s;) 
-                        l.shift(),
-                        --h;
-                    for (; l[h - 1] >= f;) 
-                        l.pop(),
-                        --h;
-                    var p,
-                        d = new Array(h + 1);
-                    for (i = 0; i <= h; ++i) 
-                        p = d[i] = [],
-                        p.x0 = i > 0
-                            ? l[i - 1]
-                            : s,
-                        p.x1 = i < h
-                            ? l[i]
-                            : f;
-                    for (i = 0; i < u; ++i) 
-                        o = a[i],
-                        s <= o && o <= f && d[ks(l, o, 0, h)].push(t[i]);
-                    return d
-                }
-                var n = Ds,
-                    e = Ps,
-                    r = js;
-                return t.value = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : Us(e), t)
-                        : n
-                },
-                t.domain = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : Us([n[0], n[1]]), t)
-                        : e
-                },
-                t.thresholds = function (n) {
-                    return arguments.length
-                        ? (r = "function" == typeof n
-                            ? n
-                            : Us(Array.isArray(n)
-                                ? Ls.call(n)
-                                : n), t)
-                        : r
-                },
-                t
-            },
-            Xs = function (t, n, e) {
-                if (null == e && (e = Es), r = t.length) {
-                    if ((n =+ n) <= 0 || r < 2) 
-                        return + e(t[0], 0, t);
-                    if (n >= 1) 
-                        return + e(t[r - 1], r - 1, t);
-                    var r,
-                        i = (r - 1) * n,
-                        o = Math.floor(i),
-                        u =+ e(t[o], o, t),
-                        a =+ e(t[o + 1], o + 1, t);
-                    return u + (a - u) * (i - o)
-                }
-            },
-            Vs = function (t, n, e) {
-                return t = Rs
-                    .call(t, Es)
-                    .sort(Ms),
-                Math.ceil((e - n) / (2 * (Xs(t, .75) - Xs(t, .25)) * Math.pow(t.length, -1 / 3)))
-            },
-            Ws = function (t, n, e) {
-                return Math.ceil((e - n) / (3.5 * zs(t) * Math.pow(t.length, -1 / 3)))
-            },
-            $s = function (t, n) {
-                var e,
-                    r,
-                    i = -1,
-                    o = t.length;
-                if (null == n) {
-                    for (; ++i < o;) 
-                        if (null != (r = t[i]) && r >= r) {
-                            e = r;
-                            break
-                        }
-                    for (; ++i < o;) 
-                        null != (r = t[i]) && r > e && (e = r)
-                } else {
-                    for (; ++i < o;) 
-                        if (null != (r = n(t[i], i, t)) && r >= r) {
-                            e = r;
-                            break
-                        }
-                    for (; ++i < o;) 
-                        null != (r = n(t[i], i, t)) && r > e && (e = r)
-                }
-                return e
-            },
-            Zs = function (t, n) {
-                var e,
-                    r = 0,
-                    i = t.length,
-                    o = -1,
-                    u = i;
-                if (null == n) 
-                    for (; ++o < i;) 
-                        isNaN(e = Es(t[o]))
-                            ? --u
-                            : r += e;
-                else 
-                    for (; ++o < i;) 
-                        isNaN(e = Es(n(t[o], o, t)))
-                            ? --u
-                            : r += e;
-                if (u) 
-                    return r / u
-            },
-            Gs = function (t, n) {
-                var e,
-                    r = [],
-                    i = t.length,
-                    o = -1;
-                if (null == n) 
-                    for (; ++o < i;) 
-                        isNaN(e = Es(t[o])) || r.push(e);
-            else 
-                    for (; ++o < i;) 
-                        isNaN(e = Es(n(t[o], o, t))) || r.push(e);
-            return Xs(r.sort(Ms), .5)
-            },
-            Js = function (t) {
-                for (var n, e, r, i = t.length, o = -1, u = 0; ++o < i;) 
-                    u += t[o].length;
-                for (e = new Array(u); --i >= 0;) 
-                    for (r = t[i], n = r.length; --n >= 0;) 
-                        e[--u] = r[n];
-            return e
-            },
-            Qs = function (t, n) {
-                var e,
-                    r,
-                    i = -1,
-                    o = t.length;
-                if (null == n) {
-                    for (; ++i < o;) 
-                        if (null != (r = t[i]) && r >= r) {
-                            e = r;
-                            break
-                        }
-                    for (; ++i < o;) 
-                        null != (r = t[i]) && e > r && (e = r)
-                } else {
-                    for (; ++i < o;) 
-                        if (null != (r = n(t[i], i, t)) && r >= r) {
-                            e = r;
-                            break
-                        }
-                    for (; ++i < o;) 
-                        null != (r = n(t[i], i, t)) && e > r && (e = r)
-                }
-                return e
-            },
-            Ks = function (t) {
-                for (var n = 0, e = t.length - 1, r = t[0], i = new Array(e < 0
-                    ? 0
-                    : e); n < e;) 
-                    i[n] = [
-                        r, r = t[++n]
-                    ];
-                return i
-            },
-            tf = function (t, n) {
-                for (var e = n.length, r = new Array(e); e--;) 
-                    r[e] = t[n[e]];
-                return r
-            },
-            nf = function (t, n) {
-                if (e = t.length) {
-                    var e,
-                        r,
-                        i = 0,
-                        o = 0,
-                        u = t[o];
-                    for (n || (n = Ms); ++i < e;) 
-                        (n(r = t[i], u) < 0 || 0 !== n(u, u)) && (u = r, o = i);
-                    return 0 === n(u, u)
-                        ? o
-                        : void 0
-                }
-            },
-            ef = function (t, n, e) {
-                for (var r, i, o = (null == e
-                    ? t.length
-                    : e) - (n = null == n
-                    ? 0 :+ n); o;) 
-                    i = Math.random() * o-- | 0,
-                    r = t[o + n],
-                    t[o + n] = t[i + n],
-                    t[i + n] = r;
-                return t
-            },
-            rf = function (t, n) {
-                var e,
-                    r = 0,
-                    i = t.length,
-                    o = -1;
-                if (null == n) 
-                    for (; ++o < i;) 
-                        (e =+ t[o]) && (r += e);
-            else 
-                    for (; ++o < i;) 
-                        (e =+ n(t[o], o, t)) && (r += e);
-            return r
-            },
-            of = function (t) {
-                if (!(o = t.length)) 
-                    return [];
-                for (var n = -1, e = Qs(t, r), i = new Array(e); ++n < e;) 
-                    for (var o, u = -1, a = i[n] = new Array(o); ++u < o;) 
-                        a[u] = t[u][n];
-            return i
-            },
-            uf = function () {
-                return of(arguments)
-            },
-            af = "$";
-        i.prototype = o.prototype = {
-            constructor: i,
-            has: function (t) {
-                return af + t in this
-            },
-            get: function (t) {
-                return this[af + t]
-            },
-            set: function (t, n) {
-                return this[af + t] = n,
-                this
-            },
-            remove: function (t) {
-                var n = af + t;
-                return n in this && delete this[n]
-            },
-            clear: function () {
-                for (var t in this) 
-                    t[0] === af && delete this[t]
-            },
-            keys: function () {
-                var t = [];
-                for (var n in this) 
-                    n[0] === af && t.push(n.slice(1));
-                return t
-            },
-            values: function () {
-                var t = [];
-                for (var n in this) 
-                    n[0] === af && t.push(this[n]);
-                return t
-            },
-            entries: function () {
-                var t = [];
-                for (var n in this) 
-                    n[0] === af && t.push({
-                        key: n.slice(1),
-                        value: this[n]
-                    });
-                return t
-            },
-            size: function () {
-                var t = 0;
-                for (var n in this) 
-                    n[0] === af && ++t;
-                return t
-            },
-            empty: function () {
-                for (var t in this) 
-                    if (t[0] === af) 
-                        return !1;
-            return !0
-            },
-            each: function (t) {
-                for (var n in this) 
-                    n[0] === af && t(this[n], n.slice(1), this)
-            }
-        };
-        var cf = function () {
-                function t(n, i, u, a) {
-                    if (i >= f.length) 
-                        return null != r
-                            ? r(n)
-                            : null != e
-                                ? n.sort(e)
-                                : n;
-                    for (var c, s, l, h = -1, p = n.length, d = f[i++], v = o(), _ = u(); ++h < p;) 
-                        (l = v.get(c = d(s = n[h]) + ""))
-                            ? l.push(s)
-                            : v.set(c, [s]);
-                    return v.each(function (n, e) {
-                        a(_, e, t(n, i, u, a))
-                    }),
-                    _
-                }
-                function n(t, e) {
-                    if (++e > f.length) 
-                        return t;
-                    var i,
-                        o = l[e - 1];
-                    return null != r && e >= f.length
-                        ? i = t.entries()
-                        : (i = [], t.each(function (t, r) {
-                            i.push({
-                                key: r,
-                                values: n(t, e)
-                            })
-                        })),
-                    null != o
-                        ? i.sort(function (t, n) {
-                            return o(t.key, n.key)
-                        })
-                        : i
-                }
-                var e,
-                    r,
-                    i,
-                    f = [],
-                    l = [];
-                return i = {
-                    object: function (n) {
-                        return t(n, 0, u, a)
-                    },
-                    map: function (n) {
-                        return t(n, 0, c, s)
-                    },
-                    entries: function (e) {
-                        return n(t(e, 0, c, s), 0)
-                    },
-                    key: function (t) {
-                        return f.push(t),
-                        i
-                    },
-                    sortKeys: function (t) {
-                        return l[f.length - 1] = t,
-                        i
-                    },
-                    sortValues: function (t) {
-                        return e = t,
-                        i
-                    },
-                    rollup: function (t) {
-                        return r = t,
-                        i
-                    }
-                }
-            },
-            sf = o.prototype;
-        f.prototype = l.prototype = {
-            constructor: f,
-            has: sf.has,
-            add: function (t) {
-                return t += "",
-                this[af + t] = t,
-                this
-            },
-            remove: sf.remove,
-            clear: sf.clear,
-            values: sf.keys,
-            size: sf.size,
-            empty: sf.empty,
-            each: sf.each
-        };
-        var ff = function (t) {
-                var n = [];
-                for (var e in t) 
-                    n.push(e);
-                return n
-            },
-            lf = function (t) {
-                var n = [];
-                for (var e in t) 
-                    n.push(t[e]);
-                return n
-            },
-            hf = function (t) {
-                var n = [];
-                for (var e in t) 
-                    n.push({key: e, value: t[e]});
-                return n
-            },
-            pf = function (t, n) {
-                return t = null == t
-                    ? 0 :+ t,
-                n = null == n
-                    ? 1 :+ n,
-                1 === arguments.length
-                    ? (n = t, t = 0)
-                    : n -= t,
-                function () {
-                    return Math.random() * n + t
-                }
-            },
-            df = function (t, n) {
-                var e,
-                    r;
-                return t = null == t
-                    ? 0 :+ t,
-                n = null == n
-                    ? 1 :+ n,
-                function () {
-                    var i;
-                    if (null != e) 
-                        i = e,
-                        e = null;
-                    else 
-                        do 
-                            e = 2 * Math.random() - 1,
-                            i = 2 * Math.random() - 1,
-                            r = e * e + i * i;
-                while (!r || r > 1) 
-                    ;
-                    return t + n * i * Math.sqrt(-2 * Math.log(r) / r)
-                }
-            },
-            vf = function () {
-                var t = df.apply(this, arguments);
-                return function () {
-                    return Math.exp(t())
-                }
-            },
-            _f = function (t) {
-                return function () {
-                    for (var n = 0, e = 0; e < t; ++e) 
-                        n += Math.random();
-                    return n
-                }
-            },
-            yf = function (t) {
-                var n = _f(t);
-                return function () {
-                    return n() / t
-                }
-            },
-            gf = function (t) {
-                return function () {
-                    return -Math.log(1 - Math.random()) / t
-                }
-            },
-            mf = 3,
-            xf = function t(n) {
-                function e(t) {
-                    return Math.pow(t, n)
-                }
-                return n =+ n,
-                e.exponent = t,
-                e
-            }(mf),
-            bf = function t(n) {
-                function e(t) {
-                    return 1 - Math.pow(1 - t, n)
-                }
-                return n =+ n,
-                e.exponent = t,
-                e
-            }(mf),
-            wf = function t(n) {
-                function e(t) {
-                    return ((t *= 2) <= 1
-                        ? Math.pow(t, n)
-                        : 2 - Math.pow(2 - t, n)) / 2
-                }
-                return n =+ n,
-                e.exponent = t,
-                e
-            }(mf),
-            Mf = Math.PI,
-            Tf = Mf / 2,
-            Nf = 4 / 11,
-            kf = 6 / 11,
-            Sf = 8 / 11,
-            Af = .75,
-            Ef = 9 / 11,
-            Cf = 10 / 11,
-            zf = .9375,
-            Pf = 21 / 22,
-            qf = 63 / 64,
-            Lf = 1 / Nf / Nf,
-            Rf = 1.70158,
-            Uf = function t(n) {
-                function e(t) {
-                    return t * t * ((n + 1) * t - n)
-                }
-                return n =+ n,
-                e.overshoot = t,
-                e
-            }(Rf),
-            Df = function t(n) {
-                function e(t) {
-                    return-- t * t * ((n + 1) * t + n) + 1
-                }
-                return n =+ n,
-                e.overshoot = t,
-                e
-            }(Rf),
-            Of = function t(n) {
-                function e(t) {
-                    return ((t *= 2) < 1
-                        ? t * t * ((n + 1) * t - n)
-                        : (t -= 2) * t * ((n + 1) * t + n) + 2) / 2
-                }
-                return n =+ n,
-                e.overshoot = t,
-                e
-            }(Rf),
-            Ff = 2 * Math.PI,
-            If = 1,
-            Yf = .3,
-            Bf = function t(n, e) {
-                function r(t) {
-                    return n * Math.pow(2, 10 * --t) * Math.sin((i - t) / e)
-                }
-                var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff);
-                return r.amplitude = function (n) {
-                    return t(n, e * Ff)
-                },
-                r.period = function (e) {
-                    return t(n, e)
-                },
-                r
-            }(If, Yf),
-            jf = function t(n, e) {
-                function r(t) {
-                    return 1 - n * Math.pow(2, -10 * (t =+ t)) * Math.sin((t + i) / e)
-                }
-                var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff);
-                return r.amplitude = function (n) {
-                    return t(n, e * Ff)
-                },
-                r.period = function (e) {
-                    return t(n, e)
-                },
-                r
-            }(If, Yf),
-            Hf = function t(n, e) {
-                function r(t) {
-                    return ((t = 2 * t - 1) < 0
-                        ? n * Math.pow(2, 10 * t) * Math.sin((i - t) / e)
-                        : 2 - n * Math.pow(2, -10 * t) * Math.sin((i + t) / e)) / 2
-                }
-                var i = Math.asin(1 / (n = Math.max(1, n))) * (e /= Ff);
-                return r.amplitude = function (n) {
-                    return t(n, e * Ff)
-                },
-                r.period = function (e) {
-                    return t(n, e)
-                },
-                r
-            }(If, Yf),
-            Xf = function (t) {
-                for (var n, e = -1, r = t.length, i = t[r - 1], o = 0; ++e < r;) 
-                    n = i,
-                    i = t[e],
-                    o += n[1] * i[0] - n[0] * i[1];
-                return o / 2
-            },
-            Vf = function (t) {
-                for (var n, e, r = -1, i = t.length, o = 0, u = 0, a = t[i - 1], c = 0; ++r < i;) 
-                    n = a,
-                    a = t[r],
-                    c += e = n[0] * a[1] - a[0] * n[1],
-                    o += (n[0] + a[0]) * e,
-                    u += (n[1] + a[1]) * e;
-                return c *= 3,
-                [
-                    o / c,
-                    u / c
-                ]
-            },
-            Wf = function (t, n, e) {
-                return (n[0] - t[0]) * (e[1] - t[1]) - (n[1] - t[1]) * (e[0] - t[0])
-            },
-            $f = function (t) {
-                if ((e = t.length) < 3) 
-                    return null;
-                var n,
-                    e,
-                    r = new Array(e),
-                    i = new Array(e);
-                for (n = 0; n < e; ++n) 
-                    r[n] = [ + t[n][0], + t[n][1],
-                        n
-                    ];
-                for (r.sort(z), n = 0; n < e; ++n) 
-                    i[n] = [
-                        r[n][0], -r[n][1]
-                    ];
-                var o = P(r),
-                    u = P(i),
-                    a = u[0] === o[0],
-                    c = u[u.length - 1] === o[o.length - 1],
-                    s = [];
-                for (n = o.length - 1; n >= 0; --n) 
-                    s.push(t[r[o[n]][2]]);
-                for (n =+ a; n < u.length - c; ++n) 
-                    s.push(t[r[u[n]][2]]);
-                return s
-            },
-            Zf = function (t, n) {
-                for (var e, r, i = t.length, o = t[i - 1], u = n[0], a = n[1], c = o[0], s = o[1], f = !1, l = 0; l < i; ++l) 
-                    o = t[l],
-                    e = o[0],
-                    r = o[1],
-                    r > a != s > a && u < (c - e) * (a - r) / (s - r) + e && (f = !f),
-                    c = e,
-                    s = r;
-                return f
-            },
-            Gf = function (t) {
-                for (var n, e, r = -1, i = t.length, o = t[i - 1], u = o[0], a = o[1], c = 0; ++r < i;) 
-                    n = u,
-                    e = a,
-                    o = t[r],
-                    u = o[0],
-                    a = o[1],
-                    n -= u,
-                    e -= a,
-                    c += Math.sqrt(n * n + e * e);
-                return c
-            },
-            Jf = Math.PI,
-            Qf = 2 * Jf,
-            Kf = 1e-6,
-            tl = Qf - Kf;
-        q.prototype = L.prototype = {
-            constructor: q,
-            moveTo: function (t, n) {
-                this
-                    ._
-                    .push("M", this._x0 = this._x1 =+ t, ",", this._y0 = this._y1 =+ n)
-            },
-            closePath: function () {
-                null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._.push("Z"))
-            },
-            lineTo: function (t, n) {
-                this
-                    ._
-                    .push("L", this._x1 =+ t, ",", this._y1 =+ n)
-            },
-            quadraticCurveTo: function (t, n, e, r) {
-                this
-                    ._
-                    .push("Q", + t, ",", + n, ",", this._x1 =+ e, ",", this._y1 =+ r)
-            },
-            bezierCurveTo: function (t, n, e, r, i, o) {
-                this
-                    ._
-                    .push("C", + t, ",", + n, ",", + e, ",", + r, ",", this._x1 =+ i, ",", this._y1 =+ o)
-            },
-            arcTo: function (t, n, e, r, i) {
-                t =+ t,
-                n =+ n,
-                e =+ e,
-                r =+ r,
-                i =+ i;
-                var o = this._x1,
-                    u = this._y1,
-                    a = e - t,
-                    c = r - n,
-                    s = o - t,
-                    f = u - n,
-                    l = s * s + f * f;
-                if (i < 0) 
-                    throw new Error("negative radius: " + i);
-                if (null === this._x1) 
-                    this._.push("M", this._x1 = t, ",", this._y1 = n);
-                else if (l > Kf) 
-                    if (Math.abs(f * a - c * s) > Kf && i) {
-                        var h = e - o,
-                            p = r - u,
-                            d = a * a + c * c,
-                            v = h * h + p * p,
-                            _ = Math.sqrt(d),
-                            y = Math.sqrt(l),
-                            g = i * Math.tan((Jf - Math.acos((d + l - v) / (2 * _ * y))) / 2),
-                            m = g / y,
-                            x = g / _;
-                        Math.abs(m - 1) > Kf && this
-                            ._
-                            .push("L", t + m * s, ",", n + m * f),
-                        this
-                            ._
-                            .push("A", i, ",", i, ",0,0,", + (f * h > s * p), ",", this._x1 = t + x * a, ",", this._y1 = n + x * c)
-                    } else 
-                        this
-                            ._
-                            .push("L", this._x1 = t, ",", this._y1 = n);
-                else ;
-                }
-            ,
-            arc: function (t, n, e, r, i, o) {
-                t =+ t,
-                n =+ n,
-                e =+ e;
-                var u = e * Math.cos(r),
-                    a = e * Math.sin(r),
-                    c = t + u,
-                    s = n + a,
-                    f = 1 ^ o,
-                    l = o
-                        ? r - i
-                        : i - r;
-                if (e < 0) 
-                    throw new Error("negative radius: " + e);
-                null === this._x1
-                    ? this
-                        ._
-                        .push("M", c, ",", s)
-                    : (Math.abs(this._x1 - c) > Kf || Math.abs(this._y1 - s) > Kf) && this
-                        ._
-                        .push("L", c, ",", s),
-                e && (l > tl
-                    ? this._.push("A", e, ",", e, ",0,1,", f, ",", t - u, ",", n - a, "A", e, ",", e, ",0,1,", f, ",", this._x1 = c, ",", this._y1 = s)
-                    : (l < 0 && (l = l % Qf + Qf), this._.push("A", e, ",", e, ",0,", + (l >= Jf), ",", f, ",", this._x1 = t + e * Math.cos(i), ",", this._y1 = n + e * Math.sin(i))))
-            },
-            rect: function (t, n, e, r) {
-                this
-                    ._
-                    .push("M", this._x0 = this._x1 =+ t, ",", this._y0 = this._y1 =+ n, "h", + e, "v", + r, "h", -e, "Z")
-            },
-            toString: function () {
-                return this
-                    ._
-                    .join("")
-            }
-        };
-        var nl = function (t) {
-                var n =+ this
-                        ._x
-                        .call(null, t),
-                    e =+ this
-                        ._y
-                        .call(null, t);
-                return R(this.cover(n, e), n, e, t)
-            },
-            el = function (t, n) {
-                if (isNaN(t =+ t) || isNaN(n =+ n)) 
-                    return this;
-                var e = this._x0,
-                    r = this._y0,
-                    i = this._x1,
-                    o = this._y1;
-                if (isNaN(e)) 
-                    i = (e = Math.floor(t)) + 1,
-                    o = (r = Math.floor(n)) + 1;
-                else {
-                    if (!(e > t || t > i || r > n || n > o)) 
-                        return this;
-                    var u,
-                        a,
-                        c = i - e,
-                        s = this._root;
-                    switch (a = (n < (r + o) / 2) << 1 | t < (e + i) / 2) {
-                        case 0:
-                            do 
-                                u = new Array(4),
-                                u[a] = s,
-                                s = u;
-                            while (c *= 2, i = e + c, o = r + c, t > i || n > o);
-                            break;
-                        case 1:
-                            do 
-                                u = new Array(4),
-                                u[a] = s,
-                                s = u;
-                            while (c *= 2, e = i - c, o = r + c, e > t || n > o);
-                            break;
-                        case 2:
-                            do 
-                                u = new Array(4),
-                                u[a] = s,
-                                s = u;
-                            while (c *= 2, i = e + c, r = o - c, t > i || r > n);
-                            break;
-                        case 3:
-                            do 
-                                u = new Array(4),
-                                u[a] = s,
-                                s = u;
-                            while (c *= 2, e = i - c, r = o - c, e > t || r > n)
-                    }
-                    this._root && this._root.length && (this._root = s)
-                }
-                return this._x0 = e,
-                this._y0 = r,
-                this._x1 = i,
-                this._y1 = o,
-                this
-            },
-            rl = function () {
-                var t = [];
-                return this.visit(function (n) {
-                    if (!n.length) 
-                        do 
-                            t.push(n.data);
-                while (n = n.next) 
-                    }
-                ),
-                t
-            },
-            il = function (t) {
-                return arguments.length
-                    ? this.cover( + t[0][0], + t[0][1]).cover( + t[1][0], + t[1][1])
-                    : isNaN(this._x0)
-                        ? void 0
-                        : [
-                            [
-                                this._x0, this._y0
-                            ],
-                            [this._x1, this._y1]
-                        ]
-            },
-            ol = function (t, n, e, r, i) {
-                this.node = t,
-                this.x0 = n,
-                this.y0 = e,
-                this.x1 = r,
-                this.y1 = i
-            },
-            ul = function (t, n, e) {
-                var r,
-                    i,
-                    o,
-                    u,
-                    a,
-                    c,
-                    s,
-                    f = this._x0,
-                    l = this._y0,
-                    h = this._x1,
-                    p = this._y1,
-                    d = [],
-                    v = this._root;
-                for (v && d.push(new ol(v, f, l, h, p)), null == e
-                    ? e = 1 / 0
-                    : (f = t - e, l = n - e, h = t + e, p = n + e, e *= e); c = d.pop();) 
-                    if (!(!(v = c.node) || (i = c.x0) > h || (o = c.y0) > p || (u = c.x1) < f || (a = c.y1) < l)) 
-                        if (v.length) {
-                            var _ = (i + u) / 2,
-                                y = (o + a) / 2;
-                            d.push(new ol(v[3], _, y, u, a), new ol(v[2], i, y, _, a), new ol(v[1], _, o, u, y), new ol(v[0], i, o, _, y)),
-                            (s = (n >= y) << 1 | t >= _) && (c = d[d.length - 1], d[d.length - 1] = d[d.length - 1 - s], d[d.length - 1 - s] = c)
-                        }
-                    else {
-                    var g = t - + this
-                            ._x
-                            .call(null, v.data),
-                        m = n - + this
-                            ._y
-                            .call(null, v.data),
-                        x = g * g + m * m;
-                    if (x < e) {
-                        var b = Math.sqrt(e = x);
-                        f = t - b,
-                        l = n - b,
-                        h = t + b,
-                        p = n + b,
-                        r = v.data
-                    }
-                }
-                return r
-            },
-            al = function (t) {
-                if (isNaN(o =+ this._x.call(null, t)) || isNaN(u =+ this._y.call(null, t))) 
-                    return this;
-                var n,
-                    e,
-                    r,
-                    i,
-                    o,
-                    u,
-                    a,
-                    c,
-                    s,
-                    f,
-                    l,
-                    h,
-                    p = this._root,
-                    d = this._x0,
-                    v = this._y0,
-                    _ = this._x1,
-                    y = this._y1;
-                if (!p) 
-                    return this;
-                if (p.length) 
-                    for (;;) {
-                        if ((s = o >= (a = (d + _) / 2))
-                            ? d = a
-                            : _ = a, (f = u >= (c = (v + y) / 2))
-                            ? v = c
-                            : y = c, n = p, !(p = p[l = f << 1 | s])) 
-                            return this;
-                        if (!p.length) 
-                            break;
-                        
-                        (n[l + 1 & 3] || n[l + 2 & 3] || n[l + 3 & 3]) && (e = n, h = l)
-                    }
-                for (; p.data !== t;) 
-                    if (r = p, !(p = p.next)) 
-                        return this;
-            return (i = p.next) && delete p.next,
-                r
-                    ? (i
-                        ? r.next = i
-                        : delete r.next, this)
-                    : n
-                        ? (i
-                            ? n[l] = i
-                            : delete n[l], (p = n[0] || n[1] || n[2] || n[3]) && p === (n[3] || n[2] || n[1] || n[0]) && !p.length && (e
-                            ? e[h] = p
-                            : this._root = p), this)
-                        : (this._root = i, this)
-            },
-            cl = function () {
-                return this._root
-            },
-            sl = function () {
-                var t = 0;
-                return this.visit(function (n) {
-                    if (!n.length) 
-                        do 
-                            ++t;
-                while (n = n.next) 
-                    }
-                ),
-                t
-            },
-            fl = function (t) {
-                var n,
-                    e,
-                    r,
-                    i,
-                    o,
-                    u,
-                    a = [],
-                    c = this._root;
-                for (c && a.push(new ol(c, this._x0, this._y0, this._x1, this._y1)); n = a.pop();) 
-                    if (!t(c = n.node, r = n.x0, i = n.y0, o = n.x1, u = n.y1) && c.length) {
-                        var s = (r + o) / 2,
-                            f = (i + u) / 2;
-                        (e = c[3]) && a.push(new ol(e, s, f, o, u)),
-                        (e = c[2]) && a.push(new ol(e, r, f, s, u)),
-                        (e = c[1]) && a.push(new ol(e, s, i, o, f)),
-                        (e = c[0]) && a.push(new ol(e, r, i, s, f))
-                    }
-                return this
-            },
-            ll = function (t) {
-                var n,
-                    e = [],
-                    r = [];
-                for (this._root && e.push(new ol(this._root, this._x0, this._y0, this._x1, this._y1)); n = e.pop();) {
-                    var i = n.node;
-                    if (i.length) {
-                        var o,
-                            u = n.x0,
-                            a = n.y0,
-                            c = n.x1,
-                            s = n.y1,
-                            f = (u + c) / 2,
-                            l = (a + s) / 2;
-                        (o = i[0]) && e.push(new ol(o, u, a, f, l)),
-                        (o = i[1]) && e.push(new ol(o, f, a, c, l)),
-                        (o = i[2]) && e.push(new ol(o, u, l, f, s)),
-                        (o = i[3]) && e.push(new ol(o, f, l, c, s))
-                    }
-                    r.push(n)
-                }
-                for (; n = r.pop();) 
-                    t(n.node, n.x0, n.y0, n.x1, n.y1);
-                return this
-            },
-            hl = function (t) {
-                return arguments.length
-                    ? (this._x = t, this)
-                    : this._x
-            },
-            pl = function (t) {
-                return arguments.length
-                    ? (this._y = t, this)
-                    : this._y
-            },
-            dl = I.prototype = Y.prototype;
-        dl.copy = function () {
-            var t,
-                n,
-                e = new Y(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
-                r = this._root;
-            if (!r) 
-                return e;
-            if (!r.length) 
-                return e._root = B(r),
-                e;
-            for (t = [
-                {
-                    source: r,
-                    target: e._root = new Array(4)
-                }
-            ]; r = t.pop();) 
-                for (var i = 0; i < 4; ++i) 
-                    (n = r.source[i]) && (n.length
-                        ? t.push({
-                            source: n,
-                            target: r.target[i] = new Array(4)
-                        })
-                        : r.target[i] = B(n));
-            return e
-        },
-        dl.add = nl,
-        dl.addAll = U,
-        dl.cover = el,
-        dl.data = rl,
-        dl.extent = il,
-        dl.find = ul,
-        dl.remove = al,
-        dl.removeAll = D,
-        dl.root = cl,
-        dl.size = sl,
-        dl.visit = fl,
-        dl.visitAfter = ll,
-        dl.x = hl,
-        dl.y = pl;
-        var vl = [].slice,
-            _l = {};
-        j.prototype = Z.prototype = {
-            constructor: j,
-            defer: function (t) {
-                if ("function" != typeof t || this._call) 
-                    throw new Error;
-                if (null != this._error) 
-                    return this;
-                var n = vl.call(arguments, 1);
-                return n.push(t),
-                ++this._waiting,
-                this
-                    ._tasks
-                    .push(n),
-                H(this),
-                this
-            },
-            abort: function () {
-                return null == this._error && W(this, new Error("abort")),
-                this
-            },
-            await: function (t) {
-                if ("function" != typeof t || this._call) 
-                    throw new Error;
-                return this._call = function (n, e) {
-                    t.apply(null, [n].concat(e))
-                },
-                $(this),
-                this
-            },
-            awaitAll: function (t) {
-                if ("function" != typeof t || this._call) 
-                    throw new Error;
-                return this._call = t,
-                $(this),
-                this
-            }
-        };
-        var yl = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            gl = 1e-12,
-            ml = Math.PI,
-            xl = ml / 2,
-            bl = 2 * ml,
-            wl = function () {
-                function t() {
-                    var t,
-                        s,
-                        f =+ n.apply(this, arguments),
-                        l =+ e.apply(this, arguments),
-                        h = o.apply(this, arguments) - xl,
-                        p = u.apply(this, arguments) - xl,
-                        d = Math.abs(p - h),
-                        v = p > h;
-                    if (c || (c = t = L()), l < f && (s = l, l = f, f = s), l > gl) 
-                        if (d > bl - gl) 
-                            c.moveTo(l * Math.cos(h), l * Math.sin(h)),
-                            c.arc(0, 0, l, h, p, !v),
-                            f > gl && (c.moveTo(f * Math.cos(p), f * Math.sin(p)), c.arc(0, 0, f, p, h, v));
-                        else {
-                            var _,
-                                y,
-                                g = h,
-                                m = p,
-                                x = h,
-                                b = p,
-                                w = d,
-                                M = d,
-                                T = a.apply(this, arguments) / 2,
-                                N = T > gl && (i ?+ i.apply(this, arguments) : Math.sqrt(f * f + l * l)),
-                                k = Math.min(Math.abs(l - f) / 2, + r.apply(this, arguments)),
-                                S = k,
-                                A = k;
-                            if (N > gl) {
-                                var E = nt(N / f * Math.sin(T)),
-                                    C = nt(N / l * Math.sin(T));
-                                (w -= 2 * E) > gl
-                                    ? (E *= v
-                                        ? 1
-                                        : -1, x += E, b -= E)
-                                    : (w = 0, x = b = (h + p) / 2),
-                                (M -= 2 * C) > gl
-                                    ? (C *= v
-                                        ? 1
-                                        : -1, g += C, m -= C)
-                                    : (M = 0, g = m = (h + p) / 2)
-                            }
-                            var z = l * Math.cos(g),
-                                P = l * Math.sin(g),
-                                q = f * Math.cos(b),
-                                R = f * Math.sin(b);
-                            if (k > gl) {
-                                var U = l * Math.cos(m),
-                                    D = l * Math.sin(m),
-                                    O = f * Math.cos(x),
-                                    F = f * Math.sin(x);
-                                if (d < ml) {
-                                    var I = w > gl
-                                            ? et(z, P, O, F, U, D, q, R)
-                                            : [
-                                                q, R
-                                            ],
-                                        Y = z - I[0],
-                                        B = P - I[1],
-                                        j = U - I[0],
-                                        H = D - I[1],
-                                        X = 1 / Math.sin(Math.acos((Y * j + B * H) / (Math.sqrt(Y * Y + B * B) * Math.sqrt(j * j + H * H))) / 2),
-                                        V = Math.sqrt(I[0] * I[0] + I[1] * I[1]);
-                                    S = Math.min(k, (f - V) / (X - 1)),
-                                    A = Math.min(k, (l - V) / (X + 1))
-                                }
-                            }
-                            M > gl
-                                ? A > gl
-                                    ? (_ = rt(O, F, z, P, l, A, v), y = rt(U, D, q, R, l, A, v), c.moveTo(_.cx + _.x01, _.cy + _.y01), A < k
-                                        ? c.arc(_.cx, _.cy, A, Math.atan2(_.y01, _.x01), Math.atan2(y.y01, y.x01), !v)
-                                        : (c.arc(_.cx, _.cy, A, Math.atan2(_.y01, _.x01), Math.atan2(_.y11, _.x11), !v), c.arc(0, 0, l, Math.atan2(_.cy + _.y11, _.cx + _.x11), Math.atan2(y.cy + y.y11, y.cx + y.x11), !v), c.arc(y.cx, y.cy, A, Math.atan2(y.y11, y.x11), Math.atan2(y.y01, y.x01), !v)))
-                                    : (c.moveTo(z, P), c.arc(0, 0, l, g, m, !v))
-                                : c.moveTo(z, P),
-                            f > gl && w > gl
-                                ? S > gl
-                                    ? (_ = rt(q, R, U, D, f, -S, v), y = rt(z, P, O, F, f, -S, v), c.lineTo(_.cx + _.x01, _.cy + _.y01), S < k
-                                        ? c.arc(_.cx, _.cy, S, Math.atan2(_.y01, _.x01), Math.atan2(y.y01, y.x01), !v)
-                                        : (c.arc(_.cx, _.cy, S, Math.atan2(_.y01, _.x01), Math.atan2(_.y11, _.x11), !v), c.arc(0, 0, f, Math.atan2(_.cy + _.y11, _.cx + _.x11), Math.atan2(y.cy + y.y11, y.cx + y.x11), v), c.arc(y.cx, y.cy, S, Math.atan2(y.y11, y.x11), Math.atan2(y.y01, y.x01), !v)))
-                                    : c.arc(0, 0, f, b, x, v)
-                                : c.lineTo(q, R)
-                        }
-                    else 
-                        c.moveTo(0, 0);
-                    if (c.closePath(), t) 
-                        return c = null,
-                        t + "" || null
-                }
-                var n = G,
-                    e = J,
-                    r = yl(0),
-                    i = null,
-                    o = Q,
-                    u = K,
-                    a = tt,
-                    c = null;
-                return t.centroid = function () {
-                    var t = (+ n.apply(this, arguments) + + e.apply(this, arguments)) / 2,
-                        r = (+ o.apply(this, arguments) + + u.apply(this, arguments)) / 2 - ml / 2;
-                    return [
-                        Math.cos(r) * t,
-                        Math.sin(r) * t
-                    ]
-                },
-                t.innerRadius = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : yl(+ e), t)
-                        : n
-                },
-                t.outerRadius = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : e
-                },
-                t.cornerRadius = function (n) {
-                    return arguments.length
-                        ? (r = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : r
-                },
-                t.padRadius = function (n) {
-                    return arguments.length
-                        ? (i = null == n
-                            ? null
-                            : "function" == typeof n
-                                ? n
-                                : yl(+ n), t)
-                        : i
-                },
-                t.startAngle = function (n) {
-                    return arguments.length
-                        ? (o = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : o
-                },
-                t.endAngle = function (n) {
-                    return arguments.length
-                        ? (u = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : u
-                },
-                t.padAngle = function (n) {
-                    return arguments.length
-                        ? (a = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : a
-                },
-                t.context = function (n) {
-                    return arguments.length
-                        ? (c = null == n
-                            ? null
-                            : n, t)
-                        : c
-                },
-                t
-            };
-        it.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._point = 0
-            },
-            lineEnd: function () {
-                (this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(t, n)
-                            : this
-                                ._context
-                                .moveTo(t, n);
-                        break;
-                    case 1:
-                        this._point = 2;
-                    default:
-                        this
-                            ._context
-                            .lineTo(t, n)
-                }
-            }
-        };
-        var Ml = function (t) {
-                return new it(t)
-            },
-            Tl = function () {
-                function t(t) {
-                    var a,
-                        c,
-                        s,
-                        f = t.length,
-                        l = !1;
-                    for (null == i && (u = o(s = L())), a = 0; a <= f; ++a) 
-                        !(a < f && r(c = t[a], a, t)) === l && ((l = !l)
-                            ? u.lineStart()
-                            : u.lineEnd()),
-                        l && u.point(+ n(c, a, t), + e(c, a, t));
-                    if (s) 
-                        return u = null,
-                        s + "" || null
-                }
-                var n = ot,
-                    e = ut,
-                    r = yl(!0),
-                    i = null,
-                    o = Ml,
-                    u = null;
-                return t.x = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : yl(+ e), t)
-                        : n
-                },
-                t.y = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : e
-                },
-                t.defined = function (n) {
-                    return arguments.length
-                        ? (r = "function" == typeof n
-                            ? n
-                            : yl(!!n), t)
-                        : r
-                },
-                t.curve = function (n) {
-                    return arguments.length
-                        ? (o = n, null != i && (u = o(i)), t)
-                        : o
-                },
-                t.context = function (n) {
-                    return arguments.length
-                        ? (null == n
-                            ? i = u = null
-                            : u = o(i = n), t)
-                        : i
-                },
-                t
-            },
-            Nl = function () {
-                function t(t) {
-                    var n,
-                        f,
-                        l,
-                        h,
-                        p,
-                        d = t.length,
-                        v = !1,
-                        _ = new Array(d),
-                        y = new Array(d);
-                    for (null == a && (s = c(p = L())), n = 0; n <= d; ++n) {
-                        if (!(n < d && u(h = t[n], n, t)) === v) 
-                            if (v = !v) 
-                                f = n,
-                                s.areaStart(),
-                                s.lineStart();
-                            else {
-                                for (s.lineEnd(), s.lineStart(), l = n - 1; l >= f; --l) 
-                                    s.point(_[l], y[l]);
-                                s.lineEnd(),
-                                s.areaEnd()
-                            }
-                        v && (_[n] =+ e(h, n, t), y[n] =+ i(h, n, t), s.point(r ?+ r(h, n, t) : _[n], o ?+ o(h, n, t) : y[n]))
-                    }
-                    if (p) 
-                        return s = null,
-                        p + "" || null
-                }
-                function n() {
-                    return Tl()
-                        .defined(u)
-                        .curve(c)
-                        .context(a)
-                }
-                var e = ot,
-                    r = null,
-                    i = yl(0),
-                    o = ut,
-                    u = yl(!0),
-                    a = null,
-                    c = Ml,
-                    s = null;
-                return t.x = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : yl(+ n), r = null, t)
-                        : e
-                },
-                t.x0 = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : e
-                },
-                t.x1 = function (n) {
-                    return arguments.length
-                        ? (r = null == n
-                            ? null
-                            : "function" == typeof n
-                                ? n
-                                : yl(+ n), t)
-                        : r
-                },
-                t.y = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : yl(+ n), o = null, t)
-                        : i
-                },
-                t.y0 = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : i
-                },
-                t.y1 = function (n) {
-                    return arguments.length
-                        ? (o = null == n
-                            ? null
-                            : "function" == typeof n
-                                ? n
-                                : yl(+ n), t)
-                        : o
-                },
-                t.lineX0 = t.lineY0 = function () {
-                    return n()
-                        .x(e)
-                        .y(i)
-                },
-                t.lineY1 = function () {
-                    return n()
-                        .x(e)
-                        .y(o)
-                },
-                t.lineX1 = function () {
-                    return n()
-                        .x(r)
-                        .y(i)
-                },
-                t.defined = function (n) {
-                    return arguments.length
-                        ? (u = "function" == typeof n
-                            ? n
-                            : yl(!!n), t)
-                        : u
-                },
-                t.curve = function (n) {
-                    return arguments.length
-                        ? (c = n, null != a && (s = c(a)), t)
-                        : c
-                },
-                t.context = function (n) {
-                    return arguments.length
-                        ? (null == n
-                            ? a = s = null
-                            : s = c(a = n), t)
-                        : a
-                },
-                t
-            },
-            kl = function (t, n) {
-                return n < t
-                    ? -1
-                    : n > t
-                        ? 1
-                        : n >= t
-                            ? 0
-                            : NaN
-            },
-            Sl = function (t) {
-                return t
-            },
-            Al = function () {
-                function t(t) {
-                    var a,
-                        c,
-                        s,
-                        f,
-                        l,
-                        h = t.length,
-                        p = 0,
-                        d = new Array(h),
-                        v = new Array(h),
-                        _ =+ i.apply(this, arguments),
-                        y = Math.min(bl, Math.max(-bl, o.apply(this, arguments) - _)),
-                        g = Math.min(Math.abs(y) / h, u.apply(this, arguments)),
-                        m = g * (y < 0
-                            ? -1
-                            : 1);
-                    for (a = 0; a < h; ++a) 
-                        (l = v[d[a] = a] =+ n(t[a], a, t)) > 0 && (p += l);
-                    for (null != e
-                        ? d.sort(function (t, n) {
-                            return e(v[t], v[n])
-                        })
-                        : null != r && d.sort(function (n, e) {
-                            return r(t[n], t[e])
-                        }), a = 0, s = p
-                        ? (y - h * m) / p
-                        : 0; a < h; ++a, _ = f) 
-                        c = d[a],
-                        l = v[c],
-                        f = _ + (l > 0
-                            ? l * s
-                            : 0) + m,
-                        v[c] = {
-                            data: t[c],
-                            index: a,
-                            value: l,
-                            startAngle: _,
-                            endAngle: f,
-                            padAngle: g
-                        };
-                    return v
-                }
-                var n = Sl,
-                    e = kl,
-                    r = null,
-                    i = yl(0),
-                    o = yl(bl),
-                    u = yl(0);
-                return t.value = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : yl(+ e), t)
-                        : n
-                },
-                t.sortValues = function (n) {
-                    return arguments.length
-                        ? (e = n, r = null, t)
-                        : e
-                },
-                t.sort = function (n) {
-                    return arguments.length
-                        ? (r = n, e = null, t)
-                        : r
-                },
-                t.startAngle = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : i
-                },
-                t.endAngle = function (n) {
-                    return arguments.length
-                        ? (o = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : o
-                },
-                t.padAngle = function (n) {
-                    return arguments.length
-                        ? (u = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : u
-                },
-                t
-            },
-            El = ct(Ml);
-        at.prototype = {
-            areaStart: function () {
-                this
-                    ._curve
-                    .areaStart()
-            },
-            areaEnd: function () {
-                this
-                    ._curve
-                    .areaEnd()
-            },
-            lineStart: function () {
-                this
-                    ._curve
-                    .lineStart()
-            },
-            lineEnd: function () {
-                this
-                    ._curve
-                    .lineEnd()
-            },
-            point: function (t, n) {
-                this
-                    ._curve
-                    .point(n * Math.sin(t), n * -Math.cos(t))
-            }
-        };
-        var Cl = function () {
-                return st(Tl().curve(El))
-            },
-            zl = function () {
-                var t = Nl().curve(El),
-                    n = t.curve,
-                    e = t.lineX0,
-                    r = t.lineX1,
-                    i = t.lineY0,
-                    o = t.lineY1;
-                return t.angle = t.x,
-                delete t.x,
-                t.startAngle = t.x0,
-                delete t.x0,
-                t.endAngle = t.x1,
-                delete t.x1,
-                t.radius = t.y,
-                delete t.y,
-                t.innerRadius = t.y0,
-                delete t.y0,
-                t.outerRadius = t.y1,
-                delete t.y1,
-                t.lineStartAngle = function () {
-                    return st(e())
-                },
-                delete t.lineX0,
-                t.lineEndAngle = function () {
-                    return st(r())
-                },
-                delete t.lineX1,
-                t.lineInnerRadius = function () {
-                    return st(i())
-                },
-                delete t.lineY0,
-                t.lineOuterRadius = function () {
-                    return st(o())
-                },
-                delete t.lineY1,
-                t.curve = function (t) {
-                    return arguments.length
-                        ? n(ct(t))
-                        : n()._curve
-                },
-                t
-            },
-            Pl = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n / ml);
-                    t.moveTo(e, 0),
-                    t.arc(0, 0, e, 0, bl)
-                }
-            },
-            ql = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n / 5) / 2;
-                    t.moveTo(-3 * e, -e),
-                    t.lineTo(-e, -e),
-                    t.lineTo(-e, -3 * e),
-                    t.lineTo(e, -3 * e),
-                    t.lineTo(e, -e),
-                    t.lineTo(3 * e, -e),
-                    t.lineTo(3 * e, e),
-                    t.lineTo(e, e),
-                    t.lineTo(e, 3 * e),
-                    t.lineTo(-e, 3 * e),
-                    t.lineTo(-e, e),
-                    t.lineTo(-3 * e, e),
-                    t.closePath()
-                }
-            },
-            Ll = Math.sqrt(1 / 3),
-            Rl = 2 * Ll,
-            Ul = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n / Rl),
-                        r = e * Ll;
-                    t.moveTo(0, -e),
-                    t.lineTo(r, 0),
-                    t.lineTo(0, e),
-                    t.lineTo(-r, 0),
-                    t.closePath()
-                }
-            },
-            Dl = .8908130915292852,
-            Ol = Math.sin(ml / 10) / Math.sin(7 * ml / 10),
-            Fl = Math.sin(bl / 10) * Ol,
-            Il = -Math.cos(bl / 10) * Ol,
-            Yl = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n * Dl),
-                        r = Fl * e,
-                        i = Il * e;
-                    t.moveTo(0, -e),
-                    t.lineTo(r, i);
-                    for (var o = 1; o < 5; ++o) {
-                        var u = bl * o / 5,
-                            a = Math.cos(u),
-                            c = Math.sin(u);
-                        t.lineTo(c * e, -a * e),
-                        t.lineTo(a * r - c * i, c * r + a * i)
-                    }
-                    t.closePath()
-                }
-            },
-            Bl = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n),
-                        r = -e / 2;
-                    t.rect(r, r, e, e)
-                }
-            },
-            jl = Math.sqrt(3),
-            Hl = {
-                draw: function (t, n) {
-                    var e = -Math.sqrt(n / (3 * jl));
-                    t.moveTo(0, 2 * e),
-                    t.lineTo(-jl * e, -e),
-                    t.lineTo(jl * e, -e),
-                    t.closePath()
-                }
-            },
-            Xl = -.5,
-            Vl = Math.sqrt(3) / 2,
-            Wl = 1 / Math.sqrt(12),
-            $l = 3 * (Wl / 2 + 1),
-            Zl = {
-                draw: function (t, n) {
-                    var e = Math.sqrt(n / $l),
-                        r = e / 2,
-                        i = e * Wl,
-                        o = r,
-                        u = e * Wl + e,
-                        a = -o,
-                        c = u;
-                    t.moveTo(r, i),
-                    t.lineTo(o, u),
-                    t.lineTo(a, c),
-                    t.lineTo(Xl * r - Vl * i, Vl * r + Xl * i),
-                    t.lineTo(Xl * o - Vl * u, Vl * o + Xl * u),
-                    t.lineTo(Xl * a - Vl * c, Vl * a + Xl * c),
-                    t.lineTo(Xl * r + Vl * i, Xl * i - Vl * r),
-                    t.lineTo(Xl * o + Vl * u, Xl * u - Vl * o),
-                    t.lineTo(Xl * a + Vl * c, Xl * c - Vl * a),
-                    t.closePath()
-                }
-            },
-            Gl = [
-                Pl,
-                ql,
-                Ul,
-                Bl,
-                Yl,
-                Hl,
-                Zl
-            ],
-            Jl = function () {
-                function t() {
-                    var t;
-                    if (r || (r = t = L()), n.apply(this, arguments).draw(r, + e.apply(this, arguments)), t) 
-                        return r = null,
-                        t + "" || null
-                }
-                var n = yl(Pl),
-                    e = yl(64),
-                    r = null;
-                return t.type = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : yl(e), t)
-                        : n
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : e
-                },
-                t.context = function (n) {
-                    return arguments.length
-                        ? (r = null == n
-                            ? null
-                            : n, t)
-                        : r
-                },
-                t
-            },
-            Ql = function () {};
-        lt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._y0 = this._y1 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 3:
-                        ft(this, this._x1, this._y1);
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x1, this._y1)
-                }(this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(t, n)
-                            : this
-                                ._context
-                                .moveTo(t, n);
-                        break;
-                    case 1:
-                        this._point = 2;
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this
-                            ._context
-                            .lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6);
-                    default:
-                        ft(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = t,
-                this._y0 = this._y1,
-                this._y1 = n
-            }
-        };
-        var Kl = function (t) {
-            return new lt(t)
-        };
-        ht.prototype = {
-            areaStart: Ql,
-            areaEnd: Ql,
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 1:
-                        this
-                            ._context
-                            .moveTo(this._x2, this._y2),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 2:
-                        this
-                            ._context
-                            .moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3),
-                        this
-                            ._context
-                            .lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 3:
-                        this.point(this._x2, this._y2),
-                        this.point(this._x3, this._y3),
-                        this.point(this._x4, this._y4)
-                }
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._x2 = t,
-                        this._y2 = n;
-                        break;
-                    case 1:
-                        this._point = 2,
-                        this._x3 = t,
-                        this._y3 = n;
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this._x4 = t,
-                        this._y4 = n,
-                        this
-                            ._context
-                            .moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + n) / 6);
-                        break;
-                    default:
-                        ft(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = t,
-                this._y0 = this._y1,
-                this._y1 = n
-            }
-        };
-        var th = function (t) {
-            return new ht(t)
-        };
-        pt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._y0 = this._y1 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                (this._line || 0 !== this._line && 3 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1;
-                        break;
-                    case 1:
-                        this._point = 2;
-                        break;
-                    case 2:
-                        this._point = 3;
-                        var e = (this._x0 + 4 * this._x1 + t) / 6,
-                            r = (this._y0 + 4 * this._y1 + n) / 6;
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(e, r)
-                            : this
-                                ._context
-                                .moveTo(e, r);
-                        break;
-                    case 3:
-                        this._point = 4;
-                    default:
-                        ft(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = t,
-                this._y0 = this._y1,
-                this._y1 = n
-            }
-        };
-        var nh = function (t) {
-            return new pt(t)
-        };
-        dt.prototype = {
-            lineStart: function () {
-                this._x = [],
-                this._y = [],
-                this
-                    ._basis
-                    .lineStart()
-            },
-            lineEnd: function () {
-                var t = this._x,
-                    n = this._y,
-                    e = t.length - 1;
-                if (e > 0) 
-                    for (var r, i = t[0], o = n[0], u = t[e] - i, a = n[e] - o, c = -1; ++c <= e;) 
-                        r = c / e,
-                        this._basis.point(this._beta * t[c] + (1 - this._beta) * (i + r * u), this._beta * n[c] + (1 - this._beta) * (o + r * a));
-            this._x = this._y = null,
-                this
-                    ._basis
-                    .lineEnd()
-            },
-            point: function (t, n) {
-                this
-                    ._x
-                    .push(+ t),
-                this
-                    ._y
-                    .push(+ n)
-            }
-        };
-        var eh = function t(n) {
-            function e(t) {
-                return 1 === n
-                    ? new lt(t)
-                    : new dt(t, n)
-            }
-            return e.beta = function (n) {
-                return t(+ n)
-            },
-            e
-        }(.85);
-        _t.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x2, this._y2);
-                        break;
-                    case 3:
-                        vt(this, this._x1, this._y1)
-                }(this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(t, n)
-                            : this
-                                ._context
-                                .moveTo(t, n);
-                        break;
-                    case 1:
-                        this._point = 2,
-                        this._x1 = t,
-                        this._y1 = n;
-                        break;
-                    case 2:
-                        this._point = 3;
-                    default:
-                        vt(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var rh = function t(n) {
-            function e(t) {
-                return new _t(t, n)
-            }
-            return e.tension = function (n) {
-                return t(+ n)
-            },
-            e
-        }(0);
-        yt.prototype = {
-            areaStart: Ql,
-            areaEnd: Ql,
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 1:
-                        this
-                            ._context
-                            .moveTo(this._x3, this._y3),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x3, this._y3),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 3:
-                        this.point(this._x3, this._y3),
-                        this.point(this._x4, this._y4),
-                        this.point(this._x5, this._y5)
-                }
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._x3 = t,
-                        this._y3 = n;
-                        break;
-                    case 1:
-                        this._point = 2,
-                        this
-                            ._context
-                            .moveTo(this._x4 = t, this._y4 = n);
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this._x5 = t,
-                        this._y5 = n;
-                        break;
-                    default:
-                        vt(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var ih = function t(n) {
-            function e(t) {
-                return new yt(t, n)
-            }
-            return e.tension = function (n) {
-                return t(+ n)
-            },
-            e
-        }(0);
-        gt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                (this._line || 0 !== this._line && 3 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1;
-                        break;
-                    case 1:
-                        this._point = 2;
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(this._x2, this._y2)
-                            : this
-                                ._context
-                                .moveTo(this._x2, this._y2);
-                        break;
-                    case 3:
-                        this._point = 4;
-                    default:
-                        vt(this, t, n)
-                }
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var oh = function t(n) {
-            function e(t) {
-                return new gt(t, n)
-            }
-            return e.tension = function (n) {
-                return t(+ n)
-            },
-            e
-        }(0);
-        xt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN,
-                this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x2, this._y2);
-                        break;
-                    case 3:
-                        this.point(this._x2, this._y2)
-                }(this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                if (t =+ t, n =+ n, this._point) {
-                    var e = this._x2 - t,
-                        r = this._y2 - n;
-                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha))
-                }
-                switch (this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(t, n)
-                            : this
-                                ._context
-                                .moveTo(t, n);
-                        break;
-                    case 1:
-                        this._point = 2;
-                        break;
-                    case 2:
-                        this._point = 3;
-                    default:
-                        mt(this, t, n)
-                }
-                this._l01_a = this._l12_a,
-                this._l12_a = this._l23_a,
-                this._l01_2a = this._l12_2a,
-                this._l12_2a = this._l23_2a,
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var uh = function t(n) {
-            function e(t) {
-                return n
-                    ? new xt(t, n)
-                    : new _t(t, 0)
-            }
-            return e.alpha = function (n) {
-                return t(+ n)
-            },
-            e
-        }(.5);
-        bt.prototype = {
-            areaStart: Ql,
-            areaEnd: Ql,
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN,
-                this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 1:
-                        this
-                            ._context
-                            .moveTo(this._x3, this._y3),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x3, this._y3),
-                        this
-                            ._context
-                            .closePath();
-                        break;
-                    case 3:
-                        this.point(this._x3, this._y3),
-                        this.point(this._x4, this._y4),
-                        this.point(this._x5, this._y5)
-                }
-            },
-            point: function (t, n) {
-                if (t =+ t, n =+ n, this._point) {
-                    var e = this._x2 - t,
-                        r = this._y2 - n;
-                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha))
-                }
-                switch (this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._x3 = t,
-                        this._y3 = n;
-                        break;
-                    case 1:
-                        this._point = 2,
-                        this
-                            ._context
-                            .moveTo(this._x4 = t, this._y4 = n);
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this._x5 = t,
-                        this._y5 = n;
-                        break;
-                    default:
-                        mt(this, t, n)
-                }
-                this._l01_a = this._l12_a,
-                this._l12_a = this._l23_a,
-                this._l01_2a = this._l12_2a,
-                this._l12_2a = this._l23_2a,
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var ah = function t(n) {
-            function e(t) {
-                return n
-                    ? new bt(t, n)
-                    : new yt(t, 0)
-            }
-            return e.alpha = function (n) {
-                return t(+ n)
-            },
-            e
-        }(.5);
-        wt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN,
-                this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0
-            },
-            lineEnd: function () {
-                (this._line || 0 !== this._line && 3 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                if (t =+ t, n =+ n, this._point) {
-                    var e = this._x2 - t,
-                        r = this._y2 - n;
-                    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(e * e + r * r, this._alpha))
-                }
-                switch (this._point) {
-                    case 0:
-                        this._point = 1;
-                        break;
-                    case 1:
-                        this._point = 2;
-                        break;
-                    case 2:
-                        this._point = 3,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(this._x2, this._y2)
-                            : this
-                                ._context
-                                .moveTo(this._x2, this._y2);
-                        break;
-                    case 3:
-                        this._point = 4;
-                    default:
-                        mt(this, t, n)
-                }
-                this._l01_a = this._l12_a,
-                this._l12_a = this._l23_a,
-                this._l01_2a = this._l12_2a,
-                this._l12_2a = this._l23_2a,
-                this._x0 = this._x1,
-                this._x1 = this._x2,
-                this._x2 = t,
-                this._y0 = this._y1,
-                this._y1 = this._y2,
-                this._y2 = n
-            }
-        };
-        var ch = function t(n) {
-            function e(t) {
-                return n
-                    ? new wt(t, n)
-                    : new gt(t, 0)
-            }
-            return e.alpha = function (n) {
-                return t(+ n)
-            },
-            e
-        }(.5);
-        Mt.prototype = {
-            areaStart: Ql,
-            areaEnd: Ql,
-            lineStart: function () {
-                this._point = 0
-            },
-            lineEnd: function () {
-                this._point && this
-                    ._context
-                    .closePath()
-            },
-            point: function (t, n) {
-                t =+ t,
-                n =+ n,
-                this._point
-                    ? this
-                        ._context
-                        .lineTo(t, n)
-                    : (this._point = 1, this._context.moveTo(t, n))
-            }
-        };
-        var sh = function (t) {
-            return new Mt(t)
-        };
-        At.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                switch (this._point) {
-                    case 2:
-                        this
-                            ._context
-                            .lineTo(this._x1, this._y1);
-                        break;
-                    case 3:
-                        St(this, this._t0, kt(this, this._t0))
-                }(this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line
-            },
-            point: function (t, n) {
-                var e = NaN;
-                if (t =+ t, n =+ n, t !== this._x1 || n !== this._y1) {
-                    switch (this._point) {
-                        case 0:
-                            this._point = 1,
-                            this._line
-                                ? this
-                                    ._context
-                                    .lineTo(t, n)
-                                : this
-                                    ._context
-                                    .moveTo(t, n);
-                            break;
-                        case 1:
-                            this._point = 2;
-                            break;
-                        case 2:
-                            this._point = 3,
-                            St(this, kt(this, e = Nt(this, t, n)), e);
-                            break;
-                        default:
-                            St(this, this._t0, e = Nt(this, t, n))
-                    }
-                    this._x0 = this._x1,
-                    this._x1 = t,
-                    this._y0 = this._y1,
-                    this._y1 = n,
-                    this._t0 = e
-                }
-            }
-        },
-        (Et.prototype = Object.create(At.prototype)).point = function (t, n) {
-            At
-                .prototype
-                .point
-                .call(this, n, t)
-        },
-        Ct.prototype = {
-            moveTo: function (t, n) {
-                this
-                    ._context
-                    .moveTo(n, t)
-            },
-            closePath: function () {
-                this
-                    ._context
-                    .closePath()
-            },
-            lineTo: function (t, n) {
-                this
-                    ._context
-                    .lineTo(n, t)
-            },
-            bezierCurveTo: function (t, n, e, r, i, o) {
-                this
-                    ._context
-                    .bezierCurveTo(n, t, r, e, o, i)
-            }
-        },
-        qt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x = [],
-                this._y = []
-            },
-            lineEnd: function () {
-                var t = this._x,
-                    n = this._y,
-                    e = t.length;
-                if (e) 
-                    if (this._line
-                        ? this._context.lineTo(t[0], n[0])
-                        : this._context.moveTo(t[0], n[0]), 2 === e) 
-                        this._context.lineTo(t[1], n[1]);
-                    else 
-                        for (var r = Lt(t), i = Lt(n), o = 0, u = 1; u < e; ++o, ++u) 
-                            this._context.bezierCurveTo(r[0][o], i[0][o], r[1][o], i[1][o], t[u], n[u]);
-            (this._line || 0 !== this._line && 1 === e) && this
-                    ._context
-                    .closePath(),
-                this._line = 1 - this._line,
-                this._x = this._y = null
-            },
-            point: function (t, n) {
-                this
-                    ._x
-                    .push(+ t),
-                this
-                    ._y
-                    .push(+ n)
-            }
-        };
-        var fh = function (t) {
-            return new qt(t)
-        };
-        Rt.prototype = {
-            areaStart: function () {
-                this._line = 0
-            },
-            areaEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._x = this._y = NaN,
-                this._point = 0
-            },
-            lineEnd: function () {
-                0 < this._t && this._t < 1 && 2 === this._point && this
-                    ._context
-                    .lineTo(this._x, this._y),
-                (this._line || 0 !== this._line && 1 === this._point) && this
-                    ._context
-                    .closePath(),
-                this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line)
-            },
-            point: function (t, n) {
-                switch (t =+ t, n =+ n, this._point) {
-                    case 0:
-                        this._point = 1,
-                        this._line
-                            ? this
-                                ._context
-                                .lineTo(t, n)
-                            : this
-                                ._context
-                                .moveTo(t, n);
-                        break;
-                    case 1:
-                        this._point = 2;
-                    default:
-                        if (this._t <= 0) 
-                            this._context.lineTo(this._x, n),
-                            this._context.lineTo(t, n);
-                        else {
-                            var e = this._x * (1 - this._t) + t * this._t;
-                            this
-                                ._context
-                                .lineTo(e, this._y),
-                            this
-                                ._context
-                                .lineTo(e, n)
-                        }
-                }
-                this._x = t,
-                this._y = n
-            }
-        };
-        var lh = function (t) {
-                return new Rt(t, .5)
-            },
-            hh = Array.prototype.slice,
-            ph = function (t, n) {
-                if ((r = t.length) > 1) 
-                    for (var e, r, i = 1, o = t[n[0]], u = o.length; i < r; ++i) {
-                        e = o,
-                        o = t[n[i]];
-                        for (var a = 0; a < u; ++a) 
-                            o[a][1] += o[a][0] = isNaN(e[a][1])
-                                ? e[a][0]
-                                : e[a][1]
-                        }
-                },
-            dh = function (t) {
-                for (var n = t.length, e = new Array(n); --n >= 0;) 
-                    e[n] = n;
-                return e
-            },
-            vh = function () {
-                function t(t) {
-                    var o,
-                        u,
-                        a = n.apply(this, arguments),
-                        c = t.length,
-                        s = a.length,
-                        f = new Array(s);
-                    for (o = 0; o < s; ++o) {
-                        for (var l, h = a[o], p = f[o] = new Array(c), d = 0; d < c; ++d) 
-                            p[d] = l = [
-                                0, + i(t[d], h, d, t)
-                            ],
-                            l.data = t[d];
-                        p.key = h
-                    }
-                    for (o = 0, u = e(f); o < s; ++o) 
-                        f[u[o]].index = o;
-                    return r(f, u),
-                    f
-                }
-                var n = yl([]),
-                    e = dh,
-                    r = ph,
-                    i = Ot;
-                return t.keys = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : yl(hh.call(e)), t)
-                        : n
-                },
-                t.value = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : yl(+ n), t)
-                        : i
-                },
-                t.order = function (n) {
-                    return arguments.length
-                        ? (e = null == n
-                            ? dh
-                            : "function" == typeof n
-                                ? n
-                                : yl(hh.call(n)), t)
-                        : e
-                },
-                t.offset = function (n) {
-                    return arguments.length
-                        ? (r = null == n
-                            ? ph
-                            : n, t)
-                        : r
-                },
-                t
-            },
-            _h = function (t, n) {
-                if ((r = t.length) > 0) {
-                    for (var e, r, i, o = 0, u = t[0].length; o < u; ++o) {
-                        for (i = e = 0; e < r; ++e) 
-                            i += t[e][o][1] || 0;
-                        if (i) 
-                            for (e = 0; e < r; ++e) 
-                                t[e][o][1] /= i
-                    }
-                    ph(t, n)
-                }
-            },
-            yh = function (t, n) {
-                if ((e = t.length) > 0) {
-                    for (var e, r = 0, i = t[n[0]], o = i.length; r < o; ++r) {
-                        for (var u = 0, a = 0; u < e; ++u) 
-                            a += t[u][r][1] || 0;
-                        i[r][1] += i[r][0] = -a / 2
-                    }
-                    ph(t, n)
-                }
-            },
-            gh = function (t, n) {
-                if ((i = t.length) > 0 && (r = (e = t[n[0]]).length) > 0) {
-                    for (var e, r, i, o = 0, u = 1; u < r; ++u) {
-                        for (var a = 0, c = 0, s = 0; a < i; ++a) {
-                            for (var f = t[n[a]], l = f[u][1] || 0,
-                            h = f[u - 1][1] || 0,
-                            p = (l - h) / 2,
-                            d = 0; d < a; ++d) {
-                                var v = t[n[d]],
-                                    _ = v[u][1] || 0,
-                                    y = v[u - 1][1] || 0;
-                                p += _ - y
-                            }
-                            c += l,
-                            s += p * l
-                        }
-                        e[u - 1][1] += e[u - 1][0] = o,
-                        c && (o -= s / c)
-                    }
-                    e[u - 1][1] += e[u - 1][0] = o,
-                    ph(t, n)
-                }
-            },
-            mh = function (t) {
-                var n = t.map(Ft);
-                return dh(t).sort(function (t, e) {
-                    return n[t] - n[e]
-                })
-            },
-            xh = function (t) {
-                return mh(t).reverse()
-            },
-            bh = function (t) {
-                var n,
-                    e,
-                    r = t.length,
-                    i = t.map(Ft),
-                    o = dh(t).sort(function (t, n) {
-                        return i[n] - i[t]
-                    }),
-                    u = 0,
-                    a = 0,
-                    c = [],
-                    s = [];
-                for (n = 0; n < r; ++n) 
-                    e = o[n],
-                    u < a
-                        ? (u += i[e], c.push(e))
-                        : (a += i[e], s.push(e));
-                return s
-                    .reverse()
-                    .concat(c)
-            },
-            wh = function (t) {
-                return dh(t).reverse()
-            },
-            Mh = function (t, n, e) {
-                t.prototype = n.prototype = e,
-                e.constructor = t
-            },
-            Th = .7,
-            Nh = 1 / Th,
-            kh = /^#([0-9a-f]{3})$/,
-            Sh = /^#([0-9a-f]{6})$/,
-            Ah = /^rgb\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*\)$/,
-            Eh = /^rgb\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/,
-            Ch = /^rgba\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/,
-            zh = /^rgba\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/,
-            Ph = /^hsl\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/,
-            qh = /^hsla\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)\s*\)$/,
-            Lh = {
-                aliceblue: 15792383,
-                antiquewhite: 16444375,
-                aqua: 65535,
-                aquamarine: 8388564,
-                azure: 15794175,
-                beige: 16119260,
-                bisque: 16770244,
-                black: 0,
-                blanchedalmond: 16772045,
-                blue: 255,
-                blueviolet: 9055202,
-                brown: 10824234,
-                burlywood: 14596231,
-                cadetblue: 6266528,
-                chartreuse: 8388352,
-                chocolate: 13789470,
-                coral: 16744272,
-                cornflowerblue: 6591981,
-                cornsilk: 16775388,
-                crimson: 14423100,
-                cyan: 65535,
-                darkblue: 139,
-                darkcyan: 35723,
-                darkgoldenrod: 12092939,
-                darkgray: 11119017,
-                darkgreen: 25600,
-                darkgrey: 11119017,
-                darkkhaki: 12433259,
-                darkmagenta: 9109643,
-                darkolivegreen: 5597999,
-                darkorange: 16747520,
-                darkorchid: 10040012,
-                darkred: 9109504,
-                darksalmon: 15308410,
-                darkseagreen: 9419919,
-                darkslateblue: 4734347,
-                darkslategray: 3100495,
-                darkslategrey: 3100495,
-                darkturquoise: 52945,
-                darkviolet: 9699539,
-                deeppink: 16716947,
-                deepskyblue: 49151,
-                dimgray: 6908265,
-                dimgrey: 6908265,
-                dodgerblue: 2003199,
-                firebrick: 11674146,
-                floralwhite: 16775920,
-                forestgreen: 2263842,
-                fuchsia: 16711935,
-                gainsboro: 14474460,
-                ghostwhite: 16316671,
-                gold: 16766720,
-                goldenrod: 14329120,
-                gray: 8421504,
-                green: 32768,
-                greenyellow: 11403055,
-                grey: 8421504,
-                honeydew: 15794160,
-                hotpink: 16738740,
-                indianred: 13458524,
-                indigo: 4915330,
-                ivory: 16777200,
-                khaki: 15787660,
-                lavender: 15132410,
-                lavenderblush: 16773365,
-                lawngreen: 8190976,
-                lemonchiffon: 16775885,
-                lightblue: 11393254,
-                lightcoral: 15761536,
-                lightcyan: 14745599,
-                lightgoldenrodyellow: 16448210,
-                lightgray: 13882323,
-                lightgreen: 9498256,
-                lightgrey: 13882323,
-                lightpink: 16758465,
-                lightsalmon: 16752762,
-                lightseagreen: 2142890,
-                lightskyblue: 8900346,
-                lightslategray: 7833753,
-                lightslategrey: 7833753,
-                lightsteelblue: 11584734,
-                lightyellow: 16777184,
-                lime: 65280,
-                limegreen: 3329330,
-                linen: 16445670,
-                magenta: 16711935,
-                maroon: 8388608,
-                mediumaquamarine: 6737322,
-                mediumblue: 205,
-                mediumorchid: 12211667,
-                mediumpurple: 9662683,
-                mediumseagreen: 3978097,
-                mediumslateblue: 8087790,
-                mediumspringgreen: 64154,
-                mediumturquoise: 4772300,
-                mediumvioletred: 13047173,
-                midnightblue: 1644912,
-                mintcream: 16121850,
-                mistyrose: 16770273,
-                moccasin: 16770229,
-                navajowhite: 16768685,
-                navy: 128,
-                oldlace: 16643558,
-                olive: 8421376,
-                olivedrab: 7048739,
-                orange: 16753920,
-                orangered: 16729344,
-                orchid: 14315734,
-                palegoldenrod: 15657130,
-                palegreen: 10025880,
-                paleturquoise: 11529966,
-                palevioletred: 14381203,
-                papayawhip: 16773077,
-                peachpuff: 16767673,
-                peru: 13468991,
-                pink: 16761035,
-                plum: 14524637,
-                powderblue: 11591910,
-                purple: 8388736,
-                rebeccapurple: 6697881,
-                red: 16711680,
-                rosybrown: 12357519,
-                royalblue: 4286945,
-                saddlebrown: 9127187,
-                salmon: 16416882,
-                sandybrown: 16032864,
-                seagreen: 3050327,
-                seashell: 16774638,
-                sienna: 10506797,
-                silver: 12632256,
-                skyblue: 8900331,
-                slateblue: 6970061,
-                slategray: 7372944,
-                slategrey: 7372944,
-                snow: 16775930,
-                springgreen: 65407,
-                steelblue: 4620980,
-                tan: 13808780,
-                teal: 32896,
-                thistle: 14204888,
-                tomato: 16737095,
-                turquoise: 4251856,
-                violet: 15631086,
-                wheat: 16113331,
-                white: 16777215,
-                whitesmoke: 16119285,
-                yellow: 16776960,
-                yellowgreen: 10145074
-            };
-        Mh(Yt, Bt, {
-            displayable: function () {
-                return this
-                    .rgb()
-                    .displayable()
-            },
-            toString: function () {
-                return this.rgb() + ""
-            }
-        }),
-        Mh(Wt, Vt, It(Yt, {
-            brighter: function (t) {
-                return t = null == t
-                    ? Nh
-                    : Math.pow(Nh, t),
-                new Wt(this.r * t, this.g * t, this.b * t, this.opacity)
-            },
-            darker: function (t) {
-                return t = null == t
-                    ? Th
-                    : Math.pow(Th, t),
-                new Wt(this.r * t, this.g * t, this.b * t, this.opacity)
-            },
-            rgb: function () {
-                return this
-            },
-            displayable: function () {
-                return 0 <= this.r && this.r <= 255 && 0 <= this.g && this.g <= 255 && 0 <= this.b && this.b <= 255 && 0 <= this.opacity && this.opacity <= 1
-            },
-            toString: function () {
-                var t = this.opacity;
-                return t = isNaN(t)
-                    ? 1
-                    : Math.max(0, Math.min(1, t)),
-                (1 === t
-                    ? "rgb("
-                    : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (1 === t
-                    ? ")"
-                    : ", " + t + ")")
-            }
-        })),
-        Mh(Jt, Gt, It(Yt, {
-            brighter: function (t) {
-                return t = null == t
-                    ? Nh
-                    : Math.pow(Nh, t),
-                new Jt(this.h, this.s, this.l * t, this.opacity)
-            },
-            darker: function (t) {
-                return t = null == t
-                    ? Th
-                    : Math.pow(Th, t),
-                new Jt(this.h, this.s, this.l * t, this.opacity)
-            },
-            rgb: function () {
-                var t = this.h % 360 + 360 * (this.h < 0),
-                    n = isNaN(t) || isNaN(this.s)
-                        ? 0
-                        : this.s,
-                    e = this.l,
-                    r = e + (e < .5
-                        ? e
-                        : 1 - e) * n,
-                    i = 2 * e - r;
-                return new Wt(Qt(t >= 240
-                    ? t - 240
-                    : t + 120, i, r), Qt(t, i, r), Qt(t < 120
-                    ? t + 240
-                    : t - 120, i, r), this.opacity)
-            },
-            displayable: function () {
-                return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1
-            }
-        }));
-        var Rh = Math.PI / 180,
-            Uh = 180 / Math.PI,
-            Dh = 18,
-            Oh = .95047,
-            Fh = 1,
-            Ih = 1.08883,
-            Yh = 4 / 29,
-            Bh = 6 / 29,
-            jh = 3 * Bh * Bh,
-            Hh = Bh * Bh * Bh;
-        Mh(nn, tn, It(Yt, {
-            brighter: function (t) {
-                return new nn(this.l + Dh * (null == t
-                    ? 1
-                    : t), this.a, this.b, this.opacity)
-            },
-            darker: function (t) {
-                return new nn(this.l - Dh * (null == t
-                    ? 1
-                    : t), this.a, this.b, this.opacity)
-            },
-            rgb: function () {
-                var t = (this.l + 16) / 116,
-                    n = isNaN(this.a)
-                        ? t
-                        : t + this.a / 500,
-                    e = isNaN(this.b)
-                        ? t
-                        : t - this.b / 200;
-                return t = Fh * rn(t),
-                n = Oh * rn(n),
-                e = Ih * rn(e),
-                new Wt(on(3.2404542 * n - 1.5371385 * t - .4985314 * e), on(-.969266 * n + 1.8760108 * t + .041556 * e), on(.0556434 * n - .2040259 * t + 1.0572252 * e), this.opacity)
-            }
-        })),
-        Mh(sn, cn, It(Yt, {
-            brighter: function (t) {
-                return new sn(this.h, this.c, this.l + Dh * (null == t
-                    ? 1
-                    : t), this.opacity)
-            },
-            darker: function (t) {
-                return new sn(this.h, this.c, this.l - Dh * (null == t
-                    ? 1
-                    : t), this.opacity)
-            },
-            rgb: function () {
-                return Kt(this).rgb()
-            }
-        }));
-        var Xh = -.14861,
-            Vh = 1.78277,
-            Wh = -.29227,
-            $h = -.90649,
-            Zh = 1.97294,
-            Gh = Zh * $h,
-            Jh = Zh * Vh,
-            Qh = Vh * Wh - $h * Xh;
-        Mh(hn, ln, It(Yt, {
-            brighter: function (t) {
-                return t = null == t
-                    ? Nh
-                    : Math.pow(Nh, t),
-                new hn(this.h, this.s, this.l * t, this.opacity)
-            },
-            darker: function (t) {
-                return t = null == t
-                    ? Th
-                    : Math.pow(Th, t),
-                new hn(this.h, this.s, this.l * t, this.opacity)
-            },
-            rgb: function () {
-                var t = isNaN(this.h)
-                        ? 0
-                        : (this.h + 120) * Rh,
-                    n =+ this.l,
-                    e = isNaN(this.s)
-                        ? 0
-                        : this.s * n * (1 - n),
-                    r = Math.cos(t),
-                    i = Math.sin(t);
-                return new Wt(255 * (n + e * (Xh * r + Vh * i)), 255 * (n + e * (Wh * r + $h * i)), 255 * (n + e * (Zh * r)), this.opacity)
-            }
-        }));
-        var Kh,
-            tp,
-            np,
-            ep,
-            rp = function (t) {
-                var n = t.length - 1;
-                return function (e) {
-                    var r = e <= 0
-                            ? e = 0
-                            : e >= 1
-                                ? (e = 1, n - 1)
-                                : Math.floor(e * n),
-                        i = t[r],
-                        o = t[r + 1],
-                        u = r > 0
-                            ? t[r - 1]
-                            : 2 * i - o,
-                        a = r < n - 1
-                            ? t[r + 2]
-                            : 2 * o - i;
-                    return pn((e - r / n) * n, u, i, o, a)
-                }
-            },
-            ip = function (t) {
-                var n = t.length;
-                return function (e) {
-                    var r = Math.floor(((e %= 1) < 0
-                            ? ++e
-                            : e) * n),
-                        i = t[(r + n - 1) % n],
-                        o = t[r % n],
-                        u = t[(r + 1) % n],
-                        a = t[(r + 2) % n];
-                    return pn((e - r / n) * n, i, o, u, a)
-                }
-            },
-            op = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            up = function t(n) {
-                function e(t, n) {
-                    var e = r((t = Vt(t)).r, (n = Vt(n)).r),
-                        i = r(t.g, n.g),
-                        o = r(t.b, n.b),
-                        u = r(t.opacity, n.opacity);
-                    return function (n) {
-                        return t.r = e(n),
-                        t.g = i(n),
-                        t.b = o(n),
-                        t.opacity = u(n),
-                        t + ""
-                    }
-                }
-                var r = yn(n);
-                return e.gamma = t,
-                e
-            }(1),
-            ap = mn(rp),
-            cp = mn(ip),
-            sp = function (t, n) {
-                var e,
-                    r = n
-                        ? n.length
-                        : 0,
-                    i = t
-                        ? Math.min(r, t.length)
-                        : 0,
-                    o = new Array(r),
-                    u = new Array(r);
-                for (e = 0; e < i; ++e) 
-                    o[e] = _p(t[e], n[e]);
-                for (; e < r; ++e) 
-                    u[e] = n[e];
-                return function (t) {
-                    for (e = 0; e < i; ++e) 
-                        u[e] = o[e](t);
-                    return u
-                }
-            },
-            fp = function (t, n) {
-                var e = new Date;
-                return t =+ t,
-                n -= t,
-                function (r) {
-                    return e.setTime(t + n * r),
-                    e
-                }
-            },
-            lp = function (t, n) {
-                return t =+ t,
-                n -= t,
-                function (e) {
-                    return t + n * e
-                }
-            },
-            hp = function (t, n) {
-                var e,
-                    r = {},
-                    i = {};
-                null !== t && "object" == typeof t || (t = {}),
-                null !== n && "object" == typeof n || (n = {});
-                for (e in n) 
-                    e in t
-                        ? r[e] = _p(t[e], n[e])
-                        : i[e] = n[e];
-                return function (t) {
-                    for (e in r) 
-                        i[e] = r[e](t);
-                    return i
-                }
-            },
-            pp = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
-            dp = new RegExp(pp.source, "g"),
-            vp = function (t, n) {
-                var e,
-                    r,
-                    i,
-                    o = pp.lastIndex = dp.lastIndex = 0,
-                    u = -1,
-                    a = [],
-                    c = [];
-                for (t += "", n += ""; (e = pp.exec(t)) && (r = dp.exec(n));) 
-                    (i = r.index) > o && (i = n.slice(o, i), a[u]
-                        ? a[u] += i
-                        : a[++u] = i),
-                    (e = e[0]) === (r = r[0])
-                        ? a[u]
-                            ? a[u] += r
-                            : a[++u] = r
-                        : (a[++u] = null, c.push({
-                            i: u,
-                            x: lp(e, r)
-                        })),
-                    o = dp.lastIndex;
-                return o < n.length && (i = n.slice(o), a[u]
-                    ? a[u] += i
-                    : a[++u] = i),
-                a.length < 2
-                    ? c[0]
-                        ? bn(c[0].x)
-                        : xn(n)
-                    : (n = c.length, function (t) {
-                        for (var e, r = 0; r < n; ++r) 
-                            a[(e = c[r]).i] = e.x(t);
-                        return a.join("")
-                    })
-            },
-            _p = function (t, n) {
-                var e,
-                    r = typeof n;
-                return null == n || "boolean" === r
-                    ? op(n)
-                    : ("number" === r
-                        ? lp
-                        : "string" === r
-                            ? (e = Bt(n))
-                                ? (n = e, up)
-                                : vp
-                            : n instanceof Bt
-                                ? up
-                                : n instanceof Date
-                                    ? fp
-                                    : Array.isArray(n)
-                                        ? sp
-                                        : isNaN(n)
-                                            ? hp
-                                            : lp)(t, n)
-            },
-            yp = function (t, n) {
-                return t =+ t,
-                n -= t,
-                function (e) {
-                    return Math.round(t + n * e)
-                }
-            },
-            gp = 180 / Math.PI,
-            mp = {
-                translateX: 0,
-                translateY: 0,
-                rotate: 0,
-                skewX: 0,
-                scaleX: 1,
-                scaleY: 1
-            },
-            xp = function (t, n, e, r, i, o) {
-                var u,
-                    a,
-                    c;
-                return (u = Math.sqrt(t * t + n * n)) && (t /= u, n /= u),
-                (c = t * e + n * r) && (e -= t * c, r -= n * c),
-                (a = Math.sqrt(e * e + r * r)) && (e /= a, r /= a, c /= a),
-                t * r < n * e && (t = -t, n = -n, c = -c, u = -u), {
-                    translateX: i,
-                    translateY: o,
-                    rotate: Math.atan2(n, t) * gp,
-                    skewX: Math.atan(c) * gp,
-                    scaleX: u,
-                    scaleY: a
-                }
-            },
-            bp = Tn(wn, "px, ", "px)", "deg)"),
-            wp = Tn(Mn, ", ", ")", ")"),
-            Mp = Math.SQRT2,
-            Tp = 2,
-            Np = 4,
-            kp = 1e-12,
-            Sp = function (t, n) {
-                var e,
-                    r,
-                    i = t[0],
-                    o = t[1],
-                    u = t[2],
-                    a = n[0],
-                    c = n[1],
-                    s = n[2],
-                    f = a - i,
-                    l = c - o,
-                    h = f * f + l * l;
-                if (h < kp) 
-                    r = Math.log(s / u) / Mp,
-                    e = function (t) {
-                        return [
-                            i + t * f,
-                            o + t * l,
-                            u * Math.exp(Mp * t * r)
-                        ]
-                    };
-                else {
-                    var p = Math.sqrt(h),
-                        d = (s * s - u * u + Np * h) / (2 * u * Tp * p),
-                        v = (s * s - u * u - Np * h) / (2 * s * Tp * p),
-                        _ = Math.log(Math.sqrt(d * d + 1) - d),
-                        y = Math.log(Math.sqrt(v * v + 1) - v);
-                    r = (y - _) / Mp,
-                    e = function (t) {
-                        var n = t * r,
-                            e = Nn(_),
-                            a = u / (Tp * p) * (e * Sn(Mp * n + _) - kn(_));
-                        return [
-                            i + a * f,
-                            o + a * l,
-                            u * e / Nn(Mp * n + _)
-                        ]
-                    }
-                }
-                return e.duration = 1e3 * r,
-                e
-            },
-            Ap = An(_n),
-            Ep = An(gn),
-            Cp = Cn(_n),
-            zp = Cn(gn),
-            Pp = zn(_n),
-            qp = zn(gn),
-            Lp = function (t, n) {
-                for (var e = new Array(n), r = 0; r < n; ++r) 
-                    e[r] = t(r / (n - 1));
-                return e
-            },
-            Rp = {
-                value: function () {}
-            };
-        qn.prototype = Pn.prototype = {
-            constructor: qn,
-            on: function (t, n) {
-                var e,
-                    r = this._,
-                    i = Ln(t + "", r),
-                    o = -1,
-                    u = i.length;
-                {
-                    if (!(arguments.length < 2)) {
-                        if (null != n && "function" != typeof n) 
-                            throw new Error("invalid callback: " + n);
-                        for (; ++o < u;) 
-                            if (e = (t = i[o]).type) 
-                                r[e] = Un(r[e], t.name, n);
-                            else if (null == n) 
-                                for (e in r) 
-                                    r[e] = Un(r[e], t.name, null);
-                    return this
-                    }
-                    for (; ++o < u;) 
-                        if ((e = (t = i[o]).type) && (e = Rn(r[e], t.name))) 
-                            return e
-                }
-            },
-            copy: function () {
-                var t = {},
-                    n = this._;
-                for (var e in n) 
-                    t[e] = n[e].slice();
-                return new qn(t)
-            },
-            call: function (t, n) {
-                if ((e = arguments.length - 2) > 0) 
-                    for (var e, r, i = new Array(e), o = 0; o < e; ++o) 
-                        i[o] = arguments[o + 2];
-            if (!this._.hasOwnProperty(t)) 
-                    throw new Error("unknown type: " + t);
-                for (r = this._[t], o = 0, e = r.length; o < e; ++o) 
-                    r[o].value.apply(n, i)
-            },
-            apply: function (t, n, e) {
-                if (!this._.hasOwnProperty(t)) 
-                    throw new Error("unknown type: " + t);
-                for (var r = this._[t], i = 0, o = r.length; i < o; ++i) 
-                    r[i].value.apply(n, e)
-            }
-        };
-        var Up,
-            Dp,
-            Op = function (t) {
-                function n(t, n) {
-                    var r,
-                        i,
-                        o = e(t, function (t, e) {
-                            return r
-                                ? r(t, e - 1)
-                                : (i = t, void(r = n
-                                    ? On(t, n)
-                                    : Dn(t)))
-                        });
-                    return o.columns = i,
-                    o
-                }
-                function e(t, n) {
-                    function e() {
-                        if (f >= s) 
-                            return u;
-                        if (i) 
-                            return i = !1,
-                            o;
-                        var n,
-                            e = f;
-                        if (34 === t.charCodeAt(e)) {
-                            for (var r = e; r++ < s;) 
-                                if (34 === t.charCodeAt(r)) {
-                                    if (34 !== t.charCodeAt(r + 1)) 
-                                        break;
-                                    
-                                    ++r
-                                }
-                            return f = r + 2,
-                            n = t.charCodeAt(r + 1),
-                            13 === n
-                                ? (i = !0, 10 === t.charCodeAt(r + 2) && ++f)
-                                : 10 === n && (i = !0),
-                            t
-                                .slice(e + 1, r)
-                                .replace(/""/g, '"')
-                        }
-                        for (; f < s;) {
-                            var a = 1;
-                            if (n = t.charCodeAt(f++), 10 === n) 
-                                i = !0;
-                            else if (13 === n) 
-                                i = !0,
-                                10 === t.charCodeAt(f) && (++f, ++a);
-                            else if (n !== c) 
-                                continue;
-                            return t.slice(e, f - a)
-                        }
-                        return t.slice(e)
-                    }
-                    for (var r, i, o = {}, u = {}, a = [], s = t.length, f = 0, l = 0; (r = e()) !== u;) {
-                        for (var h = []; r !== o && r !== u;) 
-                            h.push(r),
-                            r = e();
-                        n && null == (h = n(h, l++)) || a.push(h)
-                    }
-                    return a
-                }
-                function r(n, e) {
-                    return null == e && (e = Fn(n)),
-                    [
-                        e
-                            .map(u)
-                            .join(t)
-                    ].concat(n.map(function (n) {
-                        return e.map(function (t) {
-                            return u(n[t])
-                        }).join(t)
-                    })).join("\n")
-                }
-                function i(t) {
-                    return t
-                        .map(o)
-                        .join("\n")
-                }
-                function o(n) {
-                    return n
-                        .map(u)
-                        .join(t)
-                }
-                function u(t) {
-                    return null == t
-                        ? ""
-                        : a.test(t += "")
-                            ? '"' + t.replace(/\"/g, '""') + '"'
-                            : t
-                }
-                var a = new RegExp('["' + t + "\n]"),
-                    c = t.charCodeAt(0);
-                return {parse: n, parseRows: e, format: r, formatRows: i}
-            },
-            Fp = Op(","),
-            Ip = Fp.parse,
-            Yp = Fp.parseRows,
-            Bp = Fp.format,
-            jp = Fp.formatRows,
-            Hp = Op("\t"),
-            Xp = Hp.parse,
-            Vp = Hp.parseRows,
-            Wp = Hp.format,
-            $p = Hp.formatRows,
-            Zp = function (t, n) {
-                function e(t) {
-                    var n,
-                        e = f.status;
-                    if (!e && Yn(f) || e >= 200 && e < 300 || 304 === e) {
-                        if (u) 
-                            try {
-                                n = u.call(r, f)
-                            } catch (t) {
-                                return void c.call("error", r, t)
-                            }
-                        else 
-                            n = f;
-                        c.call("load", r, n)
-                    } else 
-                        c.call("error", r, t)
-                }
-                var r,
-                    i,
-                    u,
-                    a,
-                    c = Pn("beforesend", "progress", "load", "error"),
-                    s = o(),
-                    f = new XMLHttpRequest,
-                    l = null,
-                    h = null,
-                    p = 0;
-                if ("undefined" == typeof XDomainRequest || "withCredentials" in f || !/^(http(s)?:)?\/\//.test(t) || (f = new XDomainRequest), "onload" in f
-                    ? f.onload = f.onerror = f.ontimeout = e
-                    : f.onreadystatechange = function (t) {
-                        f.readyState > 3 && e(t)
-                    },
-                f.onprogress = function (t) {
-                    c.call("progress", r, t)
-                },
-                r = {
-                    header: function (t, n) {
-                        return t = (t + "").toLowerCase(),
-                        arguments.length < 2
-                            ? s.get(t)
-                            : (null == n
-                                ? s.remove(t)
-                                : s.set(t, n + ""), r)
-                    },
-                    mimeType: function (t) {
-                        return arguments.length
-                            ? (i = null == t
-                                ? null
-                                : t + "", r)
-                            : i
-                    },
-                    responseType: function (t) {
-                        return arguments.length
-                            ? (a = t, r)
-                            : a
-                    },
-                    timeout: function (t) {
-                        return arguments.length
-                            ? (p =+ t, r)
-                            : p
-                    },
-                    user: function (t) {
-                        return arguments.length < 1
-                            ? l
-                            : (l = null == t
-                                ? null
-                                : t + "", r)
-                    },
-                    password: function (t) {
-                        return arguments.length < 1
-                            ? h
-                            : (h = null == t
-                                ? null
-                                : t + "", r)
-                    },
-                    response: function (t) {
-                        return u = t,
-                        r
-                    },
-                    get: function (t, n) {
-                        return r.send("GET", t, n)
-                    },
-                    post: function (t, n) {
-                        return r.send("POST", t, n)
-                    },
-                    send: function (n, e, o) {
-                        return f.open(n, t, !0, l, h),
-                        null == i || s.has("accept") || s.set("accept", i + ",*/*"),
-                        f.setRequestHeader && s.each(function (t, n) {
-                            f.setRequestHeader(n, t)
-                        }),
-                        null != i && f.overrideMimeType && f.overrideMimeType(i),
-                        null != a && (f.responseType = a),
-                        p > 0 && (f.timeout = p),
-                        null == o && "function" == typeof e && (o = e, e = null),
-                        null != o && 1 === o.length && (o = In(o)),
-                        null != o && r
-                            .on("error", o)
-                            .on("load", function (t) {
-                                o(null, t)
-                            }),
-                        c.call("beforesend", r, f),
-                        f.send(null == e
-                            ? null
-                            : e),
-                        r
-                    },
-                    abort: function () {
-                        return f.abort(),
-                        r
-                    },
-                    on: function () {
-                        var t = c
-                            .on
-                            .apply(c, arguments);
-                        return t === c
-                            ? r
-                            : t
-                    }
-                },
-                null != n) {
-                    if ("function" != typeof n) 
-                        throw new Error("invalid callback: " + n);
-                    return r.get(n)
-                }
-                return r
-            },
-            Gp = function (t, n) {
-                return function (e, r) {
-                    var i = Zp(e)
-                        .mimeType(t)
-                        .response(n);
-                    if (null != r) {
-                        if ("function" != typeof r) 
-                            throw new Error("invalid callback: " + r);
-                        return i.get(r)
-                    }
-                    return i
-                }
-            },
-            Jp = Gp("text/html", function (t) {
-                return document
-                    .createRange()
-                    .createContextualFragment(t.responseText)
-            }),
-            Qp = Gp("application/json", function (t) {
-                return JSON.parse(t.responseText)
-            }),
-            Kp = Gp("text/plain", function (t) {
-                return t.responseText
-            }),
-            td = Gp("application/xml", function (t) {
-                var n = t.responseXML;
-                if (!n) 
-                    throw new Error("parse error");
-                return n
-            }),
-            nd = function (t, n) {
-                return function (e, r, i) {
-                    arguments.length < 3 && (i = r, r = null);
-                    var o = Zp(e).mimeType(t);
-                    return o.row = function (t) {
-                        return arguments.length
-                            ? o.response(Bn(n, r = t))
-                            : r
-                    },
-                    o.row(r),
-                    i
-                        ? o.get(i)
-                        : o
-                }
-            },
-            ed = nd("text/csv", Ip),
-            rd = nd("text/tab-separated-values", Xp),
-            id = 0,
-            od = 0,
-            ud = 0,
-            ad = 1e3,
-            cd = 0,
-            sd = 0,
-            fd = 0,
-            ld = "object" == typeof performance && performance.now
-                ? performance
-                : Date,
-            hd = "function" == typeof requestAnimationFrame
-                ? requestAnimationFrame
-                : function (t) {
-                    setTimeout(t, 17)
-                };
-        Xn.prototype = Vn.prototype = {
-            constructor: Xn,
-            restart: function (t, n, e) {
-                if ("function" != typeof t) 
-                    throw new TypeError("callback is not a function");
-                e = (null == e
-                    ? jn() :+ e) + (null == n
-                    ? 0 :+ n),
-                this._next || Dp === this || (Dp
-                    ? Dp._next = this
-                    : Up = this, Dp = this),
-                this._call = t,
-                this._time = e,
-                Jn()
-            },
-            stop: function () {
-                this._call && (this._call = null, this._time = 1 / 0, Jn())
-            }
-        };
-        var pd = function (t, n, e) {
-                var r = new Xn;
-                return n = null == n
-                    ? 0 :+ n,
-                r.restart(function (e) {
-                    r.stop(),
-                    t(e + n)
-                }, n, e),
-                r
-            },
-            dd = function (t, n, e) {
-                var r = new Xn,
-                    i = n;
-                return null == n
-                    ? (r.restart(t, n, e), r)
-                    : (n =+ n, e = null == e
-                        ? jn() :+ e, r.restart(function o(u) {
-                        u += i,
-                        r.restart(o, i += n, e),
-                        t(u)
-                    }, n, e), r)
-            },
-            vd = new Date,
-            _d = new Date,
-            yd = Qn(function () {}, function (t, n) {
-                t.setTime(+ t + n)
-            }, function (t, n) {
-                return n - t
-            });
-        yd.every = function (t) {
-            return t = Math.floor(t),
-            isFinite(t) && t > 0
-                ? t > 1
-                    ? Qn(function (n) {
-                        n.setTime(Math.floor(n / t) * t)
-                    }, function (n, e) {
-                        n.setTime(+ n + e * t)
-                    }, function (n, e) {
-                        return (e - n) / t
-                    })
-                    : yd
-                : null
-        };
-        var gd = yd.range,
-            md = 1e3,
-            xd = 6e4,
-            bd = 36e5,
-            wd = 864e5,
-            Md = 6048e5,
-            Td = Qn(function (t) {
-                t.setTime(Math.floor(t / md) * md)
-            }, function (t, n) {
-                t.setTime(+ t + n * md)
-            }, function (t, n) {
-                return (n - t) / md
-            }, function (t) {
-                return t.getUTCSeconds()
-            }),
-            Nd = Td.range,
-            kd = Qn(function (t) {
-                t.setTime(Math.floor(t / xd) * xd)
-            }, function (t, n) {
-                t.setTime(+ t + n * xd)
-            }, function (t, n) {
-                return (n - t) / xd
-            }, function (t) {
-                return t.getMinutes()
-            }),
-            Sd = kd.range,
-            Ad = Qn(function (t) {
-                var n = t.getTimezoneOffset() * xd % bd;
-                n < 0 && (n += bd),
-                t.setTime(Math.floor((+ t - n) / bd) * bd + n)
-            }, function (t, n) {
-                t.setTime(+ t + n * bd)
-            }, function (t, n) {
-                return (n - t) / bd
-            }, function (t) {
-                return t.getHours()
-            }),
-            Ed = Ad.range,
-            Cd = Qn(function (t) {
-                t.setHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setDate(t.getDate() + n)
-            }, function (t, n) {
-                return (n - t - (n.getTimezoneOffset() - t.getTimezoneOffset()) * xd) / wd
-            }, function (t) {
-                return t.getDate() - 1
-            }),
-            zd = Cd.range,
-            Pd = Kn(0),
-            qd = Kn(1),
-            Ld = Kn(2),
-            Rd = Kn(3),
-            Ud = Kn(4),
-            Dd = Kn(5),
-            Od = Kn(6),
-            Fd = Pd.range,
-            Id = qd.range,
-            Yd = Ld.range,
-            Bd = Rd.range,
-            jd = Ud.range,
-            Hd = Dd.range,
-            Xd = Od.range,
-            Vd = Qn(function (t) {
-                t.setDate(1),
-                t.setHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setMonth(t.getMonth() + n)
-            }, function (t, n) {
-                return n.getMonth() - t.getMonth() + 12 * (n.getFullYear() - t.getFullYear())
-            }, function (t) {
-                return t.getMonth()
-            }),
-            Wd = Vd.range,
-            $d = Qn(function (t) {
-                t.setMonth(0, 1),
-                t.setHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setFullYear(t.getFullYear() + n)
-            }, function (t, n) {
-                return n.getFullYear() - t.getFullYear()
-            }, function (t) {
-                return t.getFullYear()
-            });
-        $d.every = function (t) {
-            return isFinite(t = Math.floor(t)) && t > 0
-                ? Qn(function (n) {
-                    n.setFullYear(Math.floor(n.getFullYear() / t) * t),
-                    n.setMonth(0, 1),
-                    n.setHours(0, 0, 0, 0)
-                }, function (n, e) {
-                    n.setFullYear(n.getFullYear() + e * t)
-                })
-                : null
-        };
-        var Zd = $d.range,
-            Gd = Qn(function (t) {
-                t.setUTCSeconds(0, 0)
-            }, function (t, n) {
-                t.setTime(+ t + n * xd)
-            }, function (t, n) {
-                return (n - t) / xd
-            }, function (t) {
-                return t.getUTCMinutes()
-            }),
-            Jd = Gd.range,
-            Qd = Qn(function (t) {
-                t.setUTCMinutes(0, 0, 0)
-            }, function (t, n) {
-                t.setTime(+ t + n * bd)
-            }, function (t, n) {
-                return (n - t) / bd
-            }, function (t) {
-                return t.getUTCHours()
-            }),
-            Kd = Qd.range,
-            tv = Qn(function (t) {
-                t.setUTCHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setUTCDate(t.getUTCDate() + n)
-            }, function (t, n) {
-                return (n - t) / wd
-            }, function (t) {
-                return t.getUTCDate() - 1
-            }),
-            nv = tv.range,
-            ev = te(0),
-            rv = te(1),
-            iv = te(2),
-            ov = te(3),
-            uv = te(4),
-            av = te(5),
-            cv = te(6),
-            sv = ev.range,
-            fv = rv.range,
-            lv = iv.range,
-            hv = ov.range,
-            pv = uv.range,
-            dv = av.range,
-            vv = cv.range,
-            _v = Qn(function (t) {
-                t.setUTCDate(1),
-                t.setUTCHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setUTCMonth(t.getUTCMonth() + n)
-            }, function (t, n) {
-                return n.getUTCMonth() - t.getUTCMonth() + 12 * (n.getUTCFullYear() - t.getUTCFullYear())
-            }, function (t) {
-                return t.getUTCMonth()
-            }),
-            yv = _v.range,
-            gv = Qn(function (t) {
-                t.setUTCMonth(0, 1),
-                t.setUTCHours(0, 0, 0, 0)
-            }, function (t, n) {
-                t.setUTCFullYear(t.getUTCFullYear() + n)
-            }, function (t, n) {
-                return n.getUTCFullYear() - t.getUTCFullYear()
-            }, function (t) {
-                return t.getUTCFullYear()
-            });
-        gv.every = function (t) {
-            return isFinite(t = Math.floor(t)) && t > 0
-                ? Qn(function (n) {
-                    n.setUTCFullYear(Math.floor(n.getUTCFullYear() / t) * t),
-                    n.setUTCMonth(0, 1),
-                    n.setUTCHours(0, 0, 0, 0)
-                }, function (n, e) {
-                    n.setUTCFullYear(n.getUTCFullYear() + e * t)
-                })
-                : null
-        };
-        var mv,
-            xv = gv.range,
-            bv = function (t, n) {
-                if ((e = (t = n
-                    ? t.toExponential(n - 1)
-                    : t.toExponential()).indexOf("e")) < 0) 
-                    return null;
-                var e,
-                    r = t.slice(0, e);
-                return [
-                    r.length > 1
-                        ? r[0] + r.slice(2)
-                        : r, + t.slice(e + 1)
-                ]
-            },
-            wv = function (t) {
-                return t = bv(Math.abs(t)),
-                t
-                    ? t[1]
-                    : NaN
-            },
-            Mv = function (t, n) {
-                return function (e, r) {
-                    for (var i = e.length, o = [], u = 0, a = t[0], c = 0; i > 0 && a > 0 && (c + a + 1 > r && (a = Math.max(1, r - c)), o.push(e.substring(i -= a, i + a)), !((c += a + 1) > r));) 
-                        a = t[u = (u + 1) % t.length];
-                    return o
-                        .reverse()
-                        .join(n)
-                }
-            },
-            Tv = function (t, n) {
-                t = t.toPrecision(n);
-                t : for (var e, r = t.length, i = 1, o = -1; i < r; ++i) 
-                    switch (t[i]) {
-                        case ".":
-                            o = e = i;
-                            break;
-                        case "0":
-                            0 === o && (o = i),
-                            e = i;
-                            break;
-                        case "e":
-                            break t;
-                        default:
-                            o > 0 && (o = 0)
-                    }
-                return o > 0
-                    ? t.slice(0, o) + t.slice(e + 1)
-                    : t
-            },
-            Nv = function (t, n) {
-                var e = bv(t, n);
-                if (!e) 
-                    return t + "";
-                var r = e[0],
-                    i = e[1],
-                    o = i - (mv = 3 * Math.max(-8, Math.min(8, Math.floor(i / 3)))) + 1,
-                    u = r.length;
-                return o === u
-                    ? r
-                    : o > u
-                        ? r + new Array(o - u + 1).join("0")
-                        : o > 0
-                            ? r.slice(0, o) + "." + r.slice(o)
-                            : "0." + new Array(1 - o).join("0") + bv(t, Math.max(0, n + o - 1))[0]
-            },
-            kv = function (t, n) {
-                var e = bv(t, n);
-                if (!e) 
-                    return t + "";
-                var r = e[0],
-                    i = e[1];
-                return i < 0
-                    ? "0." + new Array(-i).join("0") + r
-                    : r.length > i + 1
-                        ? r.slice(0, i + 1) + "." + r.slice(i + 1)
-                        : r + new Array(i - r.length + 2).join("0")
-            },
-            Sv = {
-                "": Tv,
-                "%": function (t, n) {
-                    return (100 * t).toFixed(n)
-                },
-                b: function (t) {
-                    return Math
-                        .round(t)
-                        .toString(2)
-                },
-                c: function (t) {
-                    return t + ""
-                },
-                d: function (t) {
-                    return Math
-                        .round(t)
-                        .toString(10)
-                },
-                e: function (t, n) {
-                    return t.toExponential(n)
-                },
-                f: function (t, n) {
-                    return t.toFixed(n)
-                },
-                g: function (t, n) {
-                    return t.toPrecision(n)
-                },
-                o: function (t) {
-                    return Math
-                        .round(t)
-                        .toString(8)
-                },
-                p: function (t, n) {
-                    return kv(100 * t, n)
-                },
-                r: kv,
-                s: Nv,
-                X: function (t) {
-                    return Math
-                        .round(t)
-                        .toString(16)
-                        .toUpperCase()
-                },
-                x: function (t) {
-                    return Math
-                        .round(t)
-                        .toString(16)
-                }
-            },
-            Av = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i,
-            Ev = function (t) {
-                return new ne(t)
-            };
-        ne.prototype.toString = function () {
-            return this.fill + this.align + this.sign + this.symbol + (this.zero
-                ? "0"
-                : "") + (null == this.width
-                ? ""
-                : Math.max(1, 0 | this.width)) + (this.comma
-                ? ","
-                : "") + (null == this.precision
-                ? ""
-                : "." + Math.max(0, 0 | this.precision)) + this.type
-        };
-        var Cv,
-            zv = [
-                "y",
-                "z",
-                "a",
-                "f",
-                "p",
-                "n",
-                "µ",
-                "m",
-                "",
-                "k",
-                "M",
-                "G",
-                "T",
-                "P",
-                "E",
-                "Z",
-                "Y"
-            ],
-            Pv = function (t) {
-                function n(t) {
-                    function n(t) {
-                        var n,
-                            i,
-                            c,
-                            g = d,
-                            m = v;
-                        if ("c" === p) 
-                            m = _(t) + m,
-                            t = "";
-                        else {
-                            t =+ t;
-                            var x = (t < 0 || 1 / t < 0) && (t *= -1, !0);
-                            if (t = _(t, h), x) 
-                                for (n = -1, i = t.length, x = !1; ++n < i;) 
-                                    if (c = t.charCodeAt(n), 48 < c && c < 58 || "x" === p && 96 < c && c < 103 || "X" === p && 64 < c && c < 71) {
-                                        x = !0;
-                                        break
-                                    }
-                                if (g = (x
-                                ? "(" === a
-                                    ? a
-                                    : "-"
-                                : "-" === a || "(" === a
-                                    ? ""
-                                    : a) + g, m = m + ("s" === p
-                                ? zv[8 + mv / 3]
-                                : "") + (x && "(" === a
-                                ? ")"
-                                : ""), y) 
-                                for (n = -1, i = t.length; ++n < i;) 
-                                    if (c = t.charCodeAt(n), 48 > c || c > 57) {
-                                        m = (46 === c
-                                            ? o + t.slice(n + 1)
-                                            : t.slice(n)) + m,
-                                        t = t.slice(0, n);
-                                        break
-                                    }
-                                }
-                        l && !s && (t = r(t, 1 / 0));
-                        var b = g.length + t.length + m.length,
-                            w = b < f
-                                ? new Array(f - b + 1).join(e)
-                                : "";
-                        switch (l && s && (t = r(w + t, w.length
-                            ? f - m.length
-                            : 1 / 0), w = ""), u) {
-                            case "<":
-                                return g + t + m + w;
-                            case "=":
-                                return g + w + t + m;
-                            case "^":
-                                return w.slice(0, b = w.length >> 1) + g + t + m + w.slice(b)
-                        }
-                        return w + g + t + m
-                    }
-                    t = Ev(t);
-                    var e = t.fill,
-                        u = t.align,
-                        a = t.sign,
-                        c = t.symbol,
-                        s = t.zero,
-                        f = t.width,
-                        l = t.comma,
-                        h = t.precision,
-                        p = t.type,
-                        d = "$" === c
-                            ? i[0]
-                            : "#" === c && /[boxX]/.test(p)
-                                ? "0" + p.toLowerCase()
-                                : "",
-                        v = "$" === c
-                            ? i[1]
-                            : /[%p]/.test(p)
-                                ? "%"
-                                : "",
-                        _ = Sv[p],
-                        y = !p || /[defgprs%]/.test(p);
-                    return h = null == h
-                        ? p
-                            ? 6
-                            : 12
-                        : /[gprs]/.test(p)
-                            ? Math.max(1, Math.min(21, h))
-                            : Math.max(0, Math.min(20, h)),
-                    n.toString = function () {
-                        return t + ""
-                    },
-                    n
-                }
-                function e(t, e) {
-                    var r = n((t = Ev(t), t.type = "f", t)),
-                        i = 3 * Math.max(-8, Math.min(8, Math.floor(wv(e) / 3))),
-                        o = Math.pow(10, -i),
-                        u = zv[8 + i / 3];
-                    return function (t) {
-                        return r(o * t) + u
-                    }
-                }
-                var r = t.grouping && t.thousands
-                        ? Mv(t.grouping, t.thousands)
-                        : ee,
-                    i = t.currency,
-                    o = t.decimal;
-                return {format: n, formatPrefix: e}
-            };
-        re({
-            decimal: ".",
-            thousands: ",",
-            grouping: [3],
-            currency: ["$", ""]
-        });
-        var qv,
-            Lv = function (t) {
-                return Math.max(0, -wv(Math.abs(t)))
-            },
-            Rv = function (t, n) {
-                return Math.max(0, 3 * Math.max(-8, Math.min(8, Math.floor(wv(n) / 3))) - wv(Math.abs(t)))
-            },
-            Uv = function (t, n) {
-                return t = Math.abs(t),
-                n = Math.abs(n) - t,
-                Math.max(0, wv(n) - wv(t)) + 1
-            },
-            Dv = {
-                "-": "",
-                _: " ",
-                0: "0"
-            },
-            Ov = /^\s*\d+/,
-            Fv = /^%/,
-            Iv = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
-        nr({
-            dateTime: "%x, %X",
-            date: "%-m/%-d/%Y",
-            time: "%-I:%M:%S %p",
-            periods: [
-                "AM", "PM"
-            ],
-            days: [
-                "Sunday",
-                "Monday",
-                "Tuesday",
-                "Wednesday",
-                "Thursday",
-                "Friday",
-                "Saturday"
-            ],
-            shortDays: [
-                "Sun",
-                "Mon",
-                "Tue",
-                "Wed",
-                "Thu",
-                "Fri",
-                "Sat"
-            ],
-            months: [
-                "January",
-                "February",
-                "March",
-                "April",
-                "May",
-                "June",
-                "July",
-                "August",
-                "September",
-                "October",
-                "November",
-                "December"
-            ],
-            shortMonths: [
-                "Jan",
-                "Feb",
-                "Mar",
-                "Apr",
-                "May",
-                "Jun",
-                "Jul",
-                "Aug",
-                "Sep",
-                "Oct",
-                "Nov",
-                "Dec"
-            ]
-        });
-        var Yv = "%Y-%m-%dT%H:%M:%S.%LZ",
-            Bv = Date.prototype.toISOString
-                ? er
-                : t.utcFormat(Yv),
-            jv =+ new Date("2000-01-01T00:00:00.000Z")
-                ? rr
-                : t.utcParse(Yv),
-            Hv = Array.prototype,
-            Xv = Hv.map,
-            Vv = Hv.slice,
-            Wv = {
-                name: "implicit"
-            },
-            $v = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            Zv = function (t) {
-                return + t
-            },
-            Gv = [
-                0, 1
-            ],
-            Jv = function (n, r, i) {
-                var o,
-                    u = n[0],
-                    a = n[n.length - 1],
-                    c = e(u, a, null == r
-                        ? 10
-                        : r);
-                switch (i = Ev(null == i
-                    ? ",f"
-                    : i), i.type) {
-                    case "s":
-                        var s = Math.max(Math.abs(u), Math.abs(a));
-                        return null != i.precision || isNaN(o = Rv(c, s)) || (i.precision = o),
-                        t.formatPrefix(i, s);
-                    case "":
-                    case "e":
-                    case "g":
-                    case "p":
-                    case "r":
-                        null != i.precision || isNaN(o = Uv(c, Math.max(Math.abs(u), Math.abs(a)))) || (i.precision = o - ("e" === i.type));
-                        break;
-                    case "f":
-                    case "%":
-                        null != i.precision || isNaN(o = Lv(c)) || (i.precision = o - 2 * ("%" === i.type))
-                }
-                return t.format(i)
-            },
-            Qv = function (t, n) {
-                t = t.slice();
-                var e,
-                    r = 0,
-                    i = t.length - 1,
-                    o = t[r],
-                    u = t[i];
-                return u < o && (e = r, r = i, i = e, e = o, o = u, u = e),
-                t[r] = n.floor(o),
-                t[i] = n.ceil(u),
-                t
-            },
-            Kv = 1e3,
-            t_ = 60 * Kv,
-            n_ = 60 * t_,
-            e_ = 24 * n_,
-            r_ = 7 * e_,
-            i_ = 30 * e_,
-            o_ = 365 * e_,
-            u_ = function () {
-                return qr($d, Vd, Pd, Cd, Ad, kd, Td, yd, t.timeFormat).domain([
-                    new Date(2e3, 0, 1),
-                    new Date(2e3, 0, 2)
-                ])
-            },
-            a_ = function () {
-                return qr(gv, _v, ev, tv, Qd, Gd, Td, yd, t.utcFormat).domain([
-                    Date.UTC(2e3, 0, 1),
-                    Date.UTC(2e3, 0, 2)
-                ])
-            },
-            c_ = function (t) {
-                return t
-                    .match(/.{6}/g)
-                    .map(function (t) {
-                        return "#" + t
-                    })
-            },
-            s_ = c_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),
-            f_ = c_("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad" +
-                    "494ad6616be7969c7b4173a55194ce6dbdde9ed6"),
-            l_ = c_("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e" +
-                    "9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),
-            h_ = c_("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7" +
-                    "b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),
-            p_ = qp(ln(300, .5, 0), ln(-240, .5, 1)),
-            d_ = qp(ln(-100, .75, .35), ln(80, 1.5, .8)),
-            v_ = qp(ln(260, .75, .35), ln(80, 1.5, .8)),
-            __ = ln(),
-            y_ = function (t) {
-                (t < 0 || t > 1) && (t -= Math.floor(t));
-                var n = Math.abs(t - .5);
-                return __.h = 360 * t - 100,
-                __.s = 1.5 - 1.5 * n,
-                __.l = .8 - .9 * n,
-                __ + ""
-            },
-            g_ = Lr(c_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548" +
-                    "146748166848176948186a481a6c481b6d481c6e481d6f481f704820714821734823744824754825" +
-                    "76482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581" +
-                    "453781453882443983443a83443b84433d84433e85423f8542408642418641428741448740458840" +
-                    "46883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a54" +
-                    "8c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d" +
-                    "33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d" +
-                    "708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c" +
-                    "8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e" +
-                    "23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f" +
-                    "958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1" +
-                    "871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad81" +
-                    "28ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773a" +
-                    "ba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c5" +
-                    "6954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece58" +
-                    "70cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590" +
-                    "d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd" +
-                    "2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21a" +
-                    "d8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8" +
-                    "e621fbe723fde725")),
-            m_ = Lr(c_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07" +
-                    "061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e" +
-                    "38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e221150241253251255271258" +
-                    "29115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f" +
-                    "0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c5413" +
-                    "7d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c81" +
-                    "6a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e" +
-                    "24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b" +
-                    "80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327d" +
-                    "aa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf" +
-                    "3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd343" +
-                    "6ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064" +
-                    "e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3" +
-                    "655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d" +
-                    "5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668" +
-                    "fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77fe" +
-                    "b078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec8" +
-                    "8cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1" +
-                    "fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fc" +
-                    "f9bbfcfbbdfcfdbf")),
-            x_ = Lr(c_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08" +
-                    "051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c" +
-                    "3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b59" +
-                    "2f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a6845" +
-                    "0a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a11" +
-                    "6e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e" +
-                    "71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85" +
-                    "216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28" +
-                    "659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305c" +
-                    "b0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c3" +
-                    "3b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d448" +
-                    "42d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933" +
-                    "e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef" +
-                    "6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f784" +
-                    "10f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06" +
-                    "fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fb" +
-                    "b61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf" +
-                    "3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865" +
-                    "f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9" +
-                    "fc9dfafda1fcffa4")),
-            b_ = Lr(c_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c" +
-                    "05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d4303" +
-                    "9e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a4" +
-                    "5901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e" +
-                    "00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104" +
-                    "a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a2" +
-                    "9511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a6" +
-                    "2098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f" +
-                    "8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80" +
-                    "c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d0" +
-                    "4d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c" +
-                    "68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5d" +
-                    "e66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef" +
-                    "7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d" +
-                    "45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3a" +
-                    "fba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffd" +
-                    "b42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc8" +
-                    "27fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25" +
-                    "f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1" +
-                    "f525f0f724f0f921")),
-            w_ = "http://www.w3.org/1999/xhtml",
-            M_ = {
-                svg: "http://www.w3.org/2000/svg",
-                xhtml: w_,
-                xlink: "http://www.w3.org/1999/xlink",
-                xml: "http://www.w3.org/XML/1998/namespace",
-                xmlns: "http://www.w3.org/2000/xmlns/"
-            },
-            T_ = function (t) {
-                var n = t += "",
-                    e = n.indexOf(":");
-                return e >= 0 && "xmlns" !== (n = t.slice(0, e)) && (t = t.slice(e + 1)),
-                M_.hasOwnProperty(n)
-                    ? {
-                        space: M_[n],
-                        local: t
-                    }
-                    : t
-            },
-            N_ = function (t) {
-                var n = T_(t);
-                return (n.local
-                    ? Dr
-                    : Ur)(n)
-            },
-            k_ = 0;
-        Fr.prototype = Or.prototype = {
-            constructor: Fr,
-            get: function (t) {
-                for (var n = this._; !(n in t);) 
-                    if (!(t = t.parentNode)) 
-                        return;
-            return t[n]
-            },
-            set: function (t, n) {
-                return t[this._] = n
-            },
-            remove: function (t) {
-                return this._ in t && delete t[this._]
-            },
-            toString: function () {
-                return this._
-            }
-        };
-        var S_ = function (t) {
-            return function () {
-                return this.matches(t)
-            }
-        };
-        if ("undefined" != typeof document) {
-            var A_ = document.documentElement;
-            if (!A_.matches) {
-                var E_ = A_.webkitMatchesSelector || A_.msMatchesSelector || A_.mozMatchesSelector || A_.oMatchesSelector;
-                S_ = function (t) {
-                    return function () {
-                        return E_.call(this, t)
-                    }
-                }
-            }
-        }
-        var C_ = S_,
-            z_ = {};
-        if (t.event = null, "undefined" != typeof document) {
-            var P_ = document.documentElement;
-            "onmouseenter" in P_ || (z_ = {
-                mouseenter: "mouseover",
-                mouseleave: "mouseout"
-            })
-        }
-        var q_ = function (t, n, e) {
-                var r,
-                    i,
-                    o = Br(t + ""),
-                    u = o.length;
-                {
-                    if (!(arguments.length < 2)) {
-                        for (a = n
-                            ? Hr
-                            : jr, null == e && (e = !1), r = 0; r < u; ++r) 
-                            this.each(a(o[r], n, e));
-                        return this
-                    }
-                    var a = this
-                        .node()
-                        .__on;
-                    if (a) 
-                        for (var c, s = 0, f = a.length; s < f; ++s) 
-                            for (r = 0, c = a[s]; r < u; ++r) 
-                                if ((i = o[r]).type === c.type && i.name === c.name) 
-                                    return c.value
-                }
-            },
-            L_ = function () {
-                for (var n, e = t.event; n = e.sourceEvent;) 
-                    e = n;
-                return e
-            },
-            R_ = function (t, n) {
-                var e = t.ownerSVGElement || t;
-                if (e.createSVGPoint) {
-                    var r = e.createSVGPoint();
-                    return r.x = n.clientX,
-                    r.y = n.clientY,
-                    r = r.matrixTransform(t.getScreenCTM().inverse()),
-                    [r.x, r.y]
-                }
-                var i = t.getBoundingClientRect();
-                return [
-                    n.clientX - i.left - t.clientLeft,
-                    n.clientY - i.top - t.clientTop
-                ]
-            },
-            U_ = function (t) {
-                var n = L_();
-                return n.changedTouches && (n = n.changedTouches[0]),
-                R_(t, n)
-            },
-            D_ = function (t) {
-                return null == t
-                    ? Vr
-                    : function () {
-                        return this.querySelector(t)
-                    }
-            },
-            O_ = function (t) {
-                "function" != typeof t && (t = D_(t));
-                for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) 
-                    for (var o, u, a = n[i], c = a.length, s = r[i] = new Array(c), f = 0; f < c; ++f) 
-                        (o = a[f]) && (u = t.call(o, o.__data__, f, a)) && ("__data__" in o && (u.__data__ = o.__data__), s[f] = u);
-            return new zi(r, this._parents)
-            },
-            F_ = function (t) {
-                return null == t
-                    ? Wr
-                    : function () {
-                        return this.querySelectorAll(t)
-                    }
-            },
-            I_ = function (t) {
-                "function" != typeof t && (t = F_(t));
-                for (var n = this._groups, e = n.length, r = [], i = [], o = 0; o < e; ++o) 
-                    for (var u, a = n[o], c = a.length, s = 0; s < c; ++s) 
-                        (u = a[s]) && (r.push(t.call(u, u.__data__, s, a)), i.push(u));
-            return new zi(r, i)
-            },
-            Y_ = function (t) {
-                "function" != typeof t && (t = C_(t));
-                for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) 
-                    for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s) 
-                        (o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o);
-            return new zi(r, this._parents)
-            },
-            B_ = function (t) {
-                return new Array(t.length)
-            },
-            j_ = function () {
-                return new zi(this._enter || this._groups.map(B_), this._parents)
-            };
-        $r.prototype = {
-            constructor: $r,
-            appendChild: function (t) {
-                return this
-                    ._parent
-                    .insertBefore(t, this._next)
-            },
-            insertBefore: function (t, n) {
-                return this
-                    ._parent
-                    .insertBefore(t, n)
-            },
-            querySelector: function (t) {
-                return this
-                    ._parent
-                    .querySelector(t)
-            },
-            querySelectorAll: function (t) {
-                return this
-                    ._parent
-                    .querySelectorAll(t)
-            }
-        };
-        var H_ = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            X_ = "$",
-            V_ = function (t, n) {
-                if (!t) 
-                    return p = new Array(this.size()),
-                    s = -1,
-                    this.each(function (t) {
-                        p[++s] = t
-                    }),
-                    p;
-                var e = n
-                        ? Gr
-                        : Zr,
-                    r = this._parents,
-                    i = this._groups;
-                "function" != typeof t && (t = H_(t));
-                for (var o = i.length, u = new Array(o), a = new Array(o), c = new Array(o), s = 0; s < o; ++s) {
-                    var f = r[s],
-                        l = i[s],
-                        h = l.length,
-                        p = t.call(f, f && f.__data__, s, r),
-                        d = p.length,
-                        v = a[s] = new Array(d),
-                        _ = u[s] = new Array(d),
-                        y = c[s] = new Array(h);
-                    e(f, l, v, _, y, p, n);
-                    for (var g, m, x = 0, b = 0; x < d; ++x) 
-                        if (g = v[x]) {
-                            for (x >= b && (b = x + 1); !(m = _[b]) && ++b < d;) 
-                            ;
-                            g._next = m || null
-                        }
-                    }
-                return u = new zi(u, r),
-                u._enter = a,
-                u._exit = c,
-                u
-            },
-            W_ = function () {
-                return new zi(this._exit || this._groups.map(B_), this._parents)
-            },
-            $_ = function (t) {
-                for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) 
-                    for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p) 
-                        (c = s[p] || f[p]) && (h[p] = c);
-            for (; a < r; ++a) 
-                    u[a] = n[a];
-                return new zi(u, this._parents)
-            },
-            Z_ = function () {
-                for (var t = this._groups, n = -1, e = t.length; ++n < e;) 
-                    for (var r, i = t[n], o = i.length - 1, u = i[o]; --o >= 0;) 
-                        (r = i[o]) && (u && u !== r.nextSibling && u.parentNode.insertBefore(r, u), u = r);
-            return this
-            },
-            G_ = function (t) {
-                function n(n, e) {
-                    return n && e
-                        ? t(n.__data__, e.__data__)
-                        : !n - !e
-                }
-                t || (t = Jr);
-                for (var e = this._groups, r = e.length, i = new Array(r), o = 0; o < r; ++o) {
-                    for (var u, a = e[o], c = a.length, s = i[o] = new Array(c), f = 0; f < c; ++f) 
-                        (u = a[f]) && (s[f] = u);
-                    s.sort(n)
-                }
-                return new zi(i, this._parents).order()
-            },
-            J_ = function () {
-                var t = arguments[0];
-                return arguments[0] = this,
-                t.apply(null, arguments),
-                this
-            },
-            Q_ = function () {
-                var t = new Array(this.size()),
-                    n = -1;
-                return this.each(function () {
-                    t[++n] = this
-                }),
-                t
-            },
-            K_ = function () {
-                for (var t = this._groups, n = 0, e = t.length; n < e; ++n) 
-                    for (var r = t[n], i = 0, o = r.length; i < o; ++i) {
-                        var u = r[i];
-                        if (u) 
-                            return u
-                    }
-                return null
-            },
-            ty = function () {
-                var t = 0;
-                return this.each(function () {
-                    ++t
-                }),
-                t
-            },
-            ny = function () {
-                return !this.node()
-            },
-            ey = function (t) {
-                for (var n = this._groups, e = 0, r = n.length; e < r; ++e) 
-                    for (var i, o = n[e], u = 0, a = o.length; u < a; ++u) 
-                        (i = o[u]) && t.call(i, i.__data__, u, o);
-            return this
-            },
-            ry = function (t, n) {
-                var e = T_(t);
-                if (arguments.length < 2) {
-                    var r = this.node();
-                    return e.local
-                        ? r.getAttributeNS(e.space, e.local)
-                        : r.getAttribute(e)
-                }
-                return this.each((null == n
-                    ? e.local
-                        ? Kr
-                        : Qr
-                    : "function" == typeof n
-                        ? e.local
-                            ? ri
-                            : ei
-                        : e.local
-                            ? ni
-                            : ti)(e, n))
-            },
-            iy = function (t) {
-                return t.ownerDocument && t.ownerDocument.defaultView || t.document && t || t.defaultView
-            },
-            oy = function (t, n, e) {
-                var r;
-                return arguments.length > 1
-                    ? this.each((null == n
-                        ? ii
-                        : "function" == typeof n
-                            ? ui
-                            : oi)(t, n, null == e
-                        ? ""
-                        : e))
-                    : iy(r = this.node())
-                        .getComputedStyle(r, null)
-                        .getPropertyValue(t)
-            },
-            uy = function (t, n) {
-                return arguments.length > 1
-                    ? this.each((null == n
-                        ? ai
-                        : "function" == typeof n
-                            ? si
-                            : ci)(t, n))
-                    : this.node()[t]
-            };
-        hi.prototype = {
-            add: function (t) {
-                var n = this
-                    ._names
-                    .indexOf(t);
-                n < 0 && (this._names.push(t), this._node.setAttribute("class", this._names.join(" ")))
-            },
-            remove: function (t) {
-                var n = this
-                    ._names
-                    .indexOf(t);
-                n >= 0 && (this._names.splice(n, 1), this._node.setAttribute("class", this._names.join(" ")))
-            },
-            contains: function (t) {
-                return this
-                    ._names
-                    .indexOf(t) >= 0
-            }
-        };
-        var ay = function (t, n) {
-                var e = fi(t + "");
-                if (arguments.length < 2) {
-                    for (var r = li(this.node()), i = -1, o = e.length; ++i < o;) 
-                        if (!r.contains(e[i])) 
-                            return !1;
-                return !0
-                }
-                return this.each(("function" == typeof n
-                    ? yi
-                    : n
-                        ? vi
-                        : _i)(e, n))
-            },
-            cy = function (t) {
-                return arguments.length
-                    ? this.each(null == t
-                        ? gi
-                        : ("function" == typeof t
-                            ? xi
-                            : mi)(t))
-                    : this
-                        .node()
-                        .textContent
-            },
-            sy = function (t) {
-                return arguments.length
-                    ? this.each(null == t
-                        ? bi
-                        : ("function" == typeof t
-                            ? Mi
-                            : wi)(t))
-                    : this
-                        .node()
-                        .innerHTML
-            },
-            fy = function () {
-                return this.each(Ti)
-            },
-            ly = function () {
-                return this.each(Ni)
-            },
-            hy = function (t) {
-                var n = "function" == typeof t
-                    ? t
-                    : N_(t);
-                return this.select(function () {
-                    return this.appendChild(n.apply(this, arguments))
-                })
-            },
-            py = function (t, n) {
-                var e = "function" == typeof t
-                        ? t
-                        : N_(t),
-                    r = null == n
-                        ? ki
-                        : "function" == typeof n
-                            ? n
-                            : D_(n);
-                return this.select(function () {
-                    return this.insertBefore(e.apply(this, arguments), r.apply(this, arguments) || null)
-                })
-            },
-            dy = function () {
-                return this.each(Si)
-            },
-            vy = function (t) {
-                return arguments.length
-                    ? this.property("__data__", t)
-                    : this
-                        .node()
-                        .__data__
-            },
-            _y = function (t, n) {
-                return this.each(("function" == typeof n
-                    ? Ci
-                    : Ei)(t, n))
-            },
-            yy = [null];
-        zi.prototype = Pi.prototype = {
-            constructor: zi,
-            select: O_,
-            selectAll: I_,
-            filter: Y_,
-            data: V_,
-            enter: j_,
-            exit: W_,
-            merge: $_,
-            order: Z_,
-            sort: G_,
-            call: J_,
-            nodes: Q_,
-            node: K_,
-            size: ty,
-            empty: ny,
-            each: ey,
-            attr: ry,
-            style: oy,
-            property: uy,
-            classed: ay,
-            text: cy,
-            html: sy,
-            raise: fy,
-            lower: ly,
-            append: hy,
-            insert: py,
-            remove: dy,
-            datum: vy,
-            on: q_,
-            dispatch: _y
-        };
-        var gy = function (t) {
-                return "string" == typeof t
-                    ? new zi([
-                        [document.querySelector(t)]
-                    ], [document.documentElement])
-                    : new zi([
-                        [t]
-                    ], yy)
-            },
-            my = function (t) {
-                return "string" == typeof t
-                    ? new zi([document.querySelectorAll(t)], [document.documentElement])
-                    : new zi([null == t
-                            ? []
-                            : t], yy)
-            },
-            xy = function (t, n, e) {
-                arguments.length < 3 && (e = n, n = L_().changedTouches);
-                for (var r, i = 0, o = n
-                    ? n.length
-                    : 0; i < o; ++i) 
-                    if ((r = n[i]).identifier === e) 
-                        return R_(t, r);
-            return null
-            },
-            by = function (t, n) {
-                null == n && (n = L_().touches);
-                for (var e = 0, r = n
-                    ? n.length
-                    : 0, i = new Array(r); e < r; ++e) 
-                    i[e] = R_(t, n[e]);
-                return i
-            },
-            wy = Pn("start", "end", "interrupt"),
-            My = [],
-            Ty = 0,
-            Ny = 1,
-            ky = 2,
-            Sy = 3,
-            Ay = 4,
-            Ey = 5,
-            Cy = 6,
-            zy = function (t, n, e, r, i, o) {
-                var u = t.__transition;
-                if (u) {
-                    if (e in u) 
-                        return
-                } else 
-                    t.__transition = {};
-                Ui(t, e, {
-                    name: n,
-                    index: r,
-                    group: i,
-                    on: wy,
-                    tween: My,
-                    time: o.time,
-                    delay: o.delay,
-                    duration: o.duration,
-                    ease: o.ease,
-                    timer: null,
-                    state: Ty
-                })
-            },
-            Py = function (t, n) {
-                var e,
-                    r,
-                    i,
-                    o = t.__transition,
-                    u = !0;
-                if (o) {
-                    n = null == n
-                        ? null
-                        : n + "";
-                    for (i in o) 
-                        (e = o[i]).name === n
-                            ? (r = e.state > ky && e.state < Ey, e.state = Cy, e.timer.stop(), r && e.on.call("interrupt", t, t.__data__, e.index, e.group), delete o[i])
-                            : u = !1;
-                    u && delete t.__transition
-                }
-            },
-            qy = function (t) {
-                return this.each(function () {
-                    Py(this, t)
-                })
-            },
-            Ly = function (t, n) {
-                var e = this._id;
-                if (t += "", arguments.length < 2) {
-                    for (var r, i = Ri(this.node(), e).tween, o = 0, u = i.length; o < u; ++o) 
-                        if ((r = i[o]).name === t) 
-                            return r.value;
-                return null
-                }
-                return this.each((null == n
-                    ? Di
-                    : Oi)(e, t, n))
-            },
-            Ry = function (t, n) {
-                var e;
-                return ("number" == typeof n
-                    ? lp
-                    : n instanceof Bt
-                        ? up
-                        : (e = Bt(n))
-                            ? (n = e, up)
-                            : vp)(t, n)
-            },
-            Uy = function (t, n) {
-                var e = T_(t),
-                    r = "transform" === e
-                        ? wp
-                        : Ry;
-                return this.attrTween(t, "function" == typeof n
-                    ? (e.local
-                        ? Xi
-                        : Hi)(e, r, Fi(this, "attr." + t, n))
-                    : null == n
-                        ? (e.local
-                            ? Yi
-                            : Ii)(e)
-                        : (e.local
-                            ? ji
-                            : Bi)(e, r, n))
-            },
-            Dy = function (t, n) {
-                var e = "attr." + t;
-                if (arguments.length < 2) 
-                    return (e = this.tween(e)) && e._value;
-                if (null == n) 
-                    return this.tween(e, null);
-                if ("function" != typeof n) 
-                    throw new Error;
-                var r = T_(t);
-                return this.tween(e, (r.local
-                    ? Vi
-                    : Wi)(r, n))
-            },
-            Oy = function (t) {
-                var n = this._id;
-                return arguments.length
-                    ? this.each(("function" == typeof t
-                        ? $i
-                        : Zi)(n, t))
-                    : Ri(this.node(), n).delay
-            },
-            Fy = function (t) {
-                var n = this._id;
-                return arguments.length
-                    ? this.each(("function" == typeof t
-                        ? Gi
-                        : Ji)(n, t))
-                    : Ri(this.node(), n).duration
-            },
-            Iy = function (t) {
-                var n = this._id;
-                return arguments.length
-                    ? this.each(Qi(n, t))
-                    : Ri(this.node(), n).ease
-            },
-            Yy = function (t) {
-                "function" != typeof t && (t = C_(t));
-                for (var n = this._groups, e = n.length, r = new Array(e), i = 0; i < e; ++i) 
-                    for (var o, u = n[i], a = u.length, c = r[i] = [], s = 0; s < a; ++s) 
-                        (o = u[s]) && t.call(o, o.__data__, s, u) && c.push(o);
-            return new so(r, this._parents, this._name, this._id)
-            },
-            By = function (t) {
-                if (t._id !== this._id) 
-                    throw new Error;
-                for (var n = this._groups, e = t._groups, r = n.length, i = e.length, o = Math.min(r, i), u = new Array(r), a = 0; a < o; ++a) 
-                    for (var c, s = n[a], f = e[a], l = s.length, h = u[a] = new Array(l), p = 0; p < l; ++p) 
-                        (c = s[p] || f[p]) && (h[p] = c);
-            for (; a < r; ++a) 
-                    u[a] = n[a];
-                return new so(u, this._parents, this._name, this._id)
-            },
-            jy = function (t, n) {
-                var e = this._id;
-                return arguments.length < 2
-                    ? Ri(this.node(), e)
-                        .on
-                        .on(t)
-                    : this.each(to(e, t, n))
-            },
-            Hy = function () {
-                return this.on("end.remove", no(this._id))
-            },
-            Xy = function (t) {
-                var n = this._name,
-                    e = this._id;
-                "function" != typeof t && (t = D_(t));
-                for (var r = this._groups, i = r.length, o = new Array(i), u = 0; u < i; ++u) 
-                    for (var a, c, s = r[u], f = s.length, l = o[u] = new Array(f), h = 0; h < f; ++h) 
-                        (a = s[h]) && (c = t.call(a, a.__data__, h, s)) && ("__data__" in a && (c.__data__ = a.__data__), l[h] = c, zy(l[h], n, e, h, l, Ri(a, e)));
-            return new so(o, this._parents, n, e)
-            },
-            Vy = function (t) {
-                var n = this._name,
-                    e = this._id;
-                "function" != typeof t && (t = F_(t));
-                for (var r = this._groups, i = r.length, o = [], u = [], a = 0; a < i; ++a) 
-                    for (var c, s = r[a], f = s.length, l = 0; l < f; ++l) 
-                        if (c = s[l]) {
-                            for (var h, p = t.call(c, c.__data__, l, s), d = Ri(c, e), v = 0, _ = p.length; v < _; ++v) 
-                                (h = p[v]) && zy(h, n, e, v, p, d);
-                            o.push(p),
-                            u.push(c)
-                        }
-                    return new so(o, u, n, e)
-            },
-            Wy = Pi.prototype.constructor,
-            $y = function () {
-                return new Wy(this._groups, this._parents)
-            },
-            Zy = function (t, n, e) {
-                var r = "transform" == (t += "")
-                    ? bp
-                    : Ry;
-                return null == n
-                    ? this
-                        .styleTween(t, eo(t, r))
-                        .on("end.style." + t, ro(t))
-                    : this.styleTween(t, "function" == typeof n
-                        ? oo(t, r, Fi(this, "style." + t, n))
-                        : io(t, r, n), e)
-            },
-            Gy = function (t, n, e) {
-                var r = "style." + (t += "");
-                if (arguments.length < 2) 
-                    return (r = this.tween(r)) && r._value;
-                if (null == n) 
-                    return this.tween(r, null);
-                if ("function" != typeof n) 
-                    throw new Error;
-                return this.tween(r, uo(t, n, null == e
-                    ? ""
-                    : e))
-            },
-            Jy = function (t) {
-                return this.tween("text", "function" == typeof t
-                    ? co(Fi(this, "text", t))
-                    : ao(null == t
-                        ? ""
-                        : t + ""))
-            },
-            Qy = function () {
-                for (var t = this._name, n = this._id, e = lo(), r = this._groups, i = r.length, o = 0; o < i; ++o) 
-                    for (var u, a = r[o], c = a.length, s = 0; s < c; ++s) 
-                        if (u = a[s]) {
-                            var f = Ri(u, n);
-                            zy(u, t, e, s, a, {
-                                time: f.time + f.delay + f.duration,
-                                delay: 0,
-                                duration: f.duration,
-                                ease: f.ease
-                            })
-                        }
-                    return new so(r, this._parents, t, e)
-            },
-            Ky = 0,
-            tg = Pi.prototype;
-        so.prototype = fo.prototype = {
-            constructor: so,
-            select: Xy,
-            selectAll: Vy,
-            filter: Yy,
-            merge: By,
-            selection: $y,
-            transition: Qy,
-            call: tg.call,
-            nodes: tg.nodes,
-            node: tg.node,
-            size: tg.size,
-            empty: tg.empty,
-            each: tg.each,
-            on: jy,
-            attr: Uy,
-            attrTween: Dy,
-            style: Zy,
-            styleTween: Gy,
-            text: Jy,
-            remove: Hy,
-            tween: Ly,
-            delay: Oy,
-            duration: Fy,
-            ease: Iy
-        };
-        var ng = {
-                time: null,
-                delay: 0,
-                duration: 250,
-                ease: g
-            },
-            eg = function (t) {
-                var n,
-                    e;
-                t instanceof so
-                    ? (n = t._id, t = t._name)
-                    : (n = lo(), (e = ng).time = jn(), t = null == t
-                        ? null
-                        : t + "");
-                for (var r = this._groups, i = r.length, o = 0; o < i; ++o) 
-                    for (var u, a = r[o], c = a.length, s = 0; s < c; ++s) 
-                        (u = a[s]) && zy(u, t, n, s, a, e || ho(u, n));
-            return new so(r, this._parents, t, n)
-            };
-        Pi.prototype.interrupt = qy,
-        Pi.prototype.transition = eg;
-        var rg = [null],
-            ig = function (t, n) {
-                var e,
-                    r,
-                    i = t.__transition;
-                if (i) {
-                    n = null == n
-                        ? null
-                        : n + "";
-                    for (r in i) 
-                        if ((e = i[r]).state > Ny && e.name === n) 
-                            return new so([
-                                [t]
-                            ], rg, n, + r)
-                }
-                return null
-            },
-            og = Array.prototype.slice,
-            ug = function (t) {
-                return t
-            },
-            ag = 1,
-            cg = 2,
-            sg = 3,
-            fg = 4,
-            lg = 1e-6,
-            hg = function () {
-                function t(t) {
-                    var o,
-                        u = 0;
-                    t.eachAfter(function (t) {
-                        var e = t.children;
-                        e
-                            ? (t.x = To(e), t.y = ko(e))
-                            : (t.x = o
-                                ? u += n(t, o)
-                                : 0, t.y = 0, o = t)
-                    });
-                    var a = Ao(t),
-                        c = Eo(t),
-                        s = a.x - n(a, c) / 2,
-                        f = c.x + n(c, a) / 2;
-                    return t.eachAfter(i
-                        ? function (n) {
-                            n.x = (n.x - t.x) * e,
-                            n.y = (t.y - n.y) * r
-                        }
-                        : function (n) {
-                            n.x = (n.x - s) / (f - s) * e,
-                            n.y = (1 - (t.y
-                                ? n.y / t.y
-                                : 1)) * r
-                        })
-                }
-                var n = Mo,
-                    e = 1,
-                    r = 1,
-                    i = !1;
-                return t.separation = function (e) {
-                    return arguments.length
-                        ? (n = e, t)
-                        : n
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (i = !1, e =+ n[0], r =+ n[1], t)
-                        : i
-                            ? null
-                            : [e, r]
-                },
-                t.nodeSize = function (n) {
-                    return arguments.length
-                        ? (i = !0, e =+ n[0], r =+ n[1], t)
-                        : i
-                            ? [e, r]
-                            : null
-                },
-                t
-            },
-            pg = function (t) {
-                var n,
-                    e,
-                    r,
-                    i,
-                    o = this,
-                    u = [o];
-                do 
-                    for (n = u.reverse(), u = []; o = n.pop();) 
-                        if (t(o), e = o.children) 
-                            for (r = 0, i = e.length; r < i; ++r) 
-                                u.push(e[r]);
-            while (u.length);
-                return this
-            },
-            dg = function (t) {
-                for (var n, e, r = this, i = [r]; r = i.pop();) 
-                    if (t(r), n = r.children) 
-                        for (e = n.length - 1; e >= 0; --e) 
-                            i.push(n[e]);
-            return this
-            },
-            vg = function (t) {
-                for (var n, e, r, i = this, o = [i], u = []; i = o.pop();) 
-                    if (u.push(i), n = i.children) 
-                        for (e = 0, r = n.length; e < r; ++e) 
-                            o.push(n[e]);
-            for (; i = u.pop();) 
-                    t(i);
-                return this
-            },
-            _g = function (t) {
-                return this.eachAfter(function (n) {
-                    for (var e =+ t(n.data) || 0, r = n.children, i = r && r.length; --i >= 0;) 
-                        e += r[i].value;
-                    n.value = e
-                })
-            },
-            yg = function (t) {
-                return this.eachBefore(function (n) {
-                    n.children && n
-                        .children
-                        .sort(t)
-                })
-            },
-            gg = function (t) {
-                for (var n = this, e = Co(n, t), r = [n]; n !== e;) 
-                    n = n.parent,
-                    r.push(n);
-                for (var i = r.length; t !== e;) 
-                    r.splice(i, 0, t),
-                    t = t.parent;
-                return r
-            },
-            mg = function () {
-                for (var t = this, n = [t]; t = t.parent;) 
-                    n.push(t);
-                return n
-            },
-            xg = function () {
-                var t = [];
-                return this.each(function (n) {
-                    t.push(n)
-                }),
-                t
-            },
-            bg = function () {
-                var t = [];
-                return this.eachBefore(function (n) {
-                    n.children || t.push(n)
-                }),
-                t
-            },
-            wg = function () {
-                var t = this,
-                    n = [];
-                return t.each(function (e) {
-                    e !== t && n.push({source: e.parent, target: e})
-                }),
-                n
-            };
-        Uo.prototype = zo.prototype = {
-            constructor: Uo,
-            each: pg,
-            eachAfter: vg,
-            eachBefore: dg,
-            sum: _g,
-            sort: yg,
-            path: gg,
-            ancestors: mg,
-            descendants: xg,
-            leaves: bg,
-            links: wg,
-            copy: Po
-        };
-        var Mg = function (t) {
-                for (var n, e = (t = t.slice()).length, r = null, i = r; e;) {
-                    var o = new Do(t[e - 1]);
-                    i = i
-                        ? i.next = o
-                        : r = o,
-                    t[n] = t[--e]
-                }
-                return {head: r, tail: i}
-            },
-            Tg = function (t) {
-                return Fo(Mg(t), [])
-            },
-            Ng = function (t) {
-                return Wo(t),
-                t
-            },
-            kg = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            Sg = function () {
-                function t(t) {
-                    return t.x = e / 2,
-                    t.y = r / 2,
-                    n
-                        ? t
-                            .eachBefore(Qo(n))
-                            .eachAfter(Ko(i, .5))
-                            .eachBefore(tu(1))
-                        : t
-                            .eachBefore(Qo(Jo))
-                            .eachAfter(Ko(Go, 1))
-                            .eachAfter(Ko(i, t.r / Math.min(e, r)))
-                            .eachBefore(tu(Math.min(e, r) / (2 * t.r))),
-                    t
-                }
-                var n = null,
-                    e = 1,
-                    r = 1,
-                    i = Go;
-                return t.radius = function (e) {
-                    return arguments.length
-                        ? (n = $o(e), t)
-                        : n
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (e =+ n[0], r =+ n[1], t)
-                        : [e, r]
-                },
-                t.padding = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : i
-                },
-                t
-            },
-            Ag = function (t) {
-                t.x0 = Math.round(t.x0),
-                t.y0 = Math.round(t.y0),
-                t.x1 = Math.round(t.x1),
-                t.y1 = Math.round(t.y1)
-            },
-            Eg = function (t, n, e, r, i) {
-                for (var o, u = t.children, a = -1, c = u.length, s = t.value && (r - n) / t.value; ++a < c;) 
-                    o = u[a],
-                    o.y0 = e,
-                    o.y1 = i,
-                    o.x0 = n,
-                    o.x1 = n += o.value * s
-            },
-            Cg = function () {
-                function t(t) {
-                    var u = t.height + 1;
-                    return t.x0 = t.y0 = i,
-                    t.x1 = e,
-                    t.y1 = r / u,
-                    t.eachBefore(n(r, u)),
-                    o && t.eachBefore(Ag),
-                    t
-                }
-                function n(t, n) {
-                    return function (e) {
-                        e.children && Eg(e, e.x0, t * (e.depth + 1) / n, e.x1, t * (e.depth + 2) / n);
-                        var r = e.x0,
-                            o = e.y0,
-                            u = e.x1 - i,
-                            a = e.y1 - i;
-                        u < r && (r = u = (r + u) / 2),
-                        a < o && (o = a = (o + a) / 2),
-                        e.x0 = r,
-                        e.y0 = o,
-                        e.x1 = u,
-                        e.y1 = a
-                    }
-                }
-                var e = 1,
-                    r = 1,
-                    i = 0,
-                    o = !1;
-                return t.round = function (n) {
-                    return arguments.length
-                        ? (o = !!n, t)
-                        : o
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (e =+ n[0], r =+ n[1], t)
-                        : [e, r]
-                },
-                t.padding = function (n) {
-                    return arguments.length
-                        ? (i =+ n, t)
-                        : i
-                },
-                t
-            },
-            zg = "$",
-            Pg = {
-                depth: -1
-            },
-            qg = {},
-            Lg = function () {
-                function t(t) {
-                    var r,
-                        i,
-                        o,
-                        u,
-                        a,
-                        c,
-                        s,
-                        f = t.length,
-                        l = new Array(f),
-                        h = {};
-                    for (i = 0; i < f; ++i) 
-                        r = t[i],
-                        a = l[i] = new Uo(r),
-                        null != (c = n(r, i, t)) && (c += "") && (s = zg + (a.id = c), h[s] = s in h
-                            ? qg
-                            : a);
-                    for (i = 0; i < f; ++i) 
-                        if (a = l[i], c = e(t[i], i, t), null != c && (c += "")) {
-                            if (u = h[zg + c], !u) 
-                                throw new Error("missing: " + c);
-                            if (u === qg) 
-                                throw new Error("ambiguous: " + c);
-                            u.children
-                                ? u
-                                    .children
-                                    .push(a)
-                                : u.children = [a],
-                            a.parent = u
-                        }
-                    else {
-                        if (o) 
-                            throw new Error("multiple roots");
-                        o = a
-                    }
-                    if (!o) 
-                        throw new Error("no root");
-                    if (o.parent = Pg, o.eachBefore(function (t) {
-                        t.depth = t.parent.depth + 1,
-                        --f
-                    }).eachBefore(Ro), o.parent = null, f > 0) 
-                        throw new Error("cycle");
-                    return o
-                }
-                var n = nu,
-                    e = eu;
-                return t.id = function (e) {
-                    return arguments.length
-                        ? (n = Zo(e), t)
-                        : n
-                },
-                t.parentId = function (n) {
-                    return arguments.length
-                        ? (e = Zo(n), t)
-                        : e
-                },
-                t
-            };
-        su.prototype = Object.create(Uo.prototype);
-        var Rg = function () {
-                function t(t) {
-                    var r = fu(t);
-                    if (r.eachAfter(n), r.parent.m = -r.z, r.eachBefore(e), c) 
-                        t.eachBefore(i);
-                    else {
-                        var s = t,
-                            f = t,
-                            l = t;
-                        t.eachBefore(function (t) {
-                            t.x < s.x && (s = t),
-                            t.x > f.x && (f = t),
-                            t.depth > l.depth && (l = t)
-                        });
-                        var h = s === f
-                                ? 1
-                                : o(s, f) / 2,
-                            p = h - s.x,
-                            d = u / (f.x + h + p),
-                            v = a / (l.depth || 1);
-                        t.eachBefore(function (t) {
-                            t.x = (t.x + p) * d,
-                            t.y = t.depth * v
-                        })
-                    }
-                    return t
-                }
-                function n(t) {
-                    var n = t.children,
-                        e = t.parent.children,
-                        i = t.i
-                            ? e[t.i - 1]
-                            : null;
-                    if (n) {
-                        au(t);
-                        var u = (n[0].z + n[n.length - 1].z) / 2;
-                        i
-                            ? (t.z = i.z + o(t._, i._), t.m = t.z - u)
-                            : t.z = u
-                    } else 
-                        i && (t.z = i.z + o(t._, i._));
-                    t.parent.A = r(t, i, t.parent.A || e[0])
-                }
-                function e(t) {
-                    t._.x = t.z + t.parent.m,
-                    t.m += t.parent.m
-                }
-                function r(t, n, e) {
-                    if (n) {
-                        for (var r, i = t, u = t, a = n, c = i.parent.children[0], s = i.m, f = u.m, l = a.m, h = c.m; a = ou(a), i = iu(i), a && i;) 
-                            c = iu(c),
-                            u = ou(u),
-                            u.a = t,
-                            r = a.z + l - i.z - s + o(a._, i._),
-                            r > 0 && (uu(cu(a, t, e), t, r), s += r, f += r),
-                            l += a.m,
-                            s += i.m,
-                            h += c.m,
-                            f += u.m;
-                        a && !ou(u) && (u.t = a, u.m += l - f),
-                        i && !iu(c) && (c.t = i, c.m += s - h, e = t)
-                    }
-                    return e
-                }
-                function i(t) {
-                    t.x *= u,
-                    t.y = t.depth * a
-                }
-                var o = ru,
-                    u = 1,
-                    a = 1,
-                    c = null;
-                return t.separation = function (n) {
-                    return arguments.length
-                        ? (o = n, t)
-                        : o
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (c = !1, u =+ n[0], a =+ n[1], t)
-                        : c
-                            ? null
-                            : [u, a]
-                },
-                t.nodeSize = function (n) {
-                    return arguments.length
-                        ? (c = !0, u =+ n[0], a =+ n[1], t)
-                        : c
-                            ? [u, a]
-                            : null
-                },
-                t
-            },
-            Ug = function (t, n, e, r, i) {
-                for (var o, u = t.children, a = -1, c = u.length, s = t.value && (i - e) / t.value; ++a < c;) 
-                    o = u[a],
-                    o.x0 = n,
-                    o.x1 = r,
-                    o.y0 = e,
-                    o.y1 = e += o.value * s
-            },
-            Dg = (1 + Math.sqrt(5)) / 2,
-            Og = function t(n) {
-                function e(t, e, r, i, o) {
-                    lu(n, t, e, r, i, o)
-                }
-                return e.ratio = function (n) {
-                    return t((n =+ n) > 1
-                        ? n
-                        : 1)
-                },
-                e
-            }(Dg),
-            Fg = function () {
-                function t(t) {
-                    return t.x0 = t.y0 = 0,
-                    t.x1 = i,
-                    t.y1 = o,
-                    t.eachBefore(n),
-                    u = [0],
-                    r && t.eachBefore(Ag),
-                    t
-                }
-                function n(t) {
-                    var n = u[t.depth],
-                        r = t.x0 + n,
-                        i = t.y0 + n,
-                        o = t.x1 - n,
-                        h = t.y1 - n;
-                    o < r && (r = o = (r + o) / 2),
-                    h < i && (i = h = (i + h) / 2),
-                    t.x0 = r,
-                    t.y0 = i,
-                    t.x1 = o,
-                    t.y1 = h,
-                    t.children && (n = u[t.depth + 1] = a(t) / 2, r += l(t) - n, i += c(t) - n, o -= s(t) - n, h -= f(t) - n, o < r && (r = o = (r + o) / 2), h < i && (i = h = (i + h) / 2), e(t, r, i, o, h))
-                }
-                var e = Og,
-                    r = !1,
-                    i = 1,
-                    o = 1,
-                    u = [0],
-                    a = Go,
-                    c = Go,
-                    s = Go,
-                    f = Go,
-                    l = Go;
-                return t.round = function (n) {
-                    return arguments.length
-                        ? (r = !!n, t)
-                        : r
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (i =+ n[0], o =+ n[1], t)
-                        : [i, o]
-                },
-                t.tile = function (n) {
-                    return arguments.length
-                        ? (e = Zo(n), t)
-                        : e
-                },
-                t.padding = function (n) {
-                    return arguments.length
-                        ? t
-                            .paddingInner(n)
-                            .paddingOuter(n)
-                        : t.paddingInner()
-                },
-                t.paddingInner = function (n) {
-                    return arguments.length
-                        ? (a = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : a
-                },
-                t.paddingOuter = function (n) {
-                    return arguments.length
-                        ? t
-                            .paddingTop(n)
-                            .paddingRight(n)
-                            .paddingBottom(n)
-                            .paddingLeft(n)
-                        : t.paddingTop()
-                },
-                t.paddingTop = function (n) {
-                    return arguments.length
-                        ? (c = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : c
-                },
-                t.paddingRight = function (n) {
-                    return arguments.length
-                        ? (s = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : s
-                },
-                t.paddingBottom = function (n) {
-                    return arguments.length
-                        ? (f = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : f
-                },
-                t.paddingLeft = function (n) {
-                    return arguments.length
-                        ? (l = "function" == typeof n
-                            ? n
-                            : kg(+ n), t)
-                        : l
-                },
-                t
-            },
-            Ig = function (t, n, e, r, i) {
-                function o(t, n, e, r, i, u, a) {
-                    if (t >= n - 1) {
-                        var s = c[t];
-                        return s.x0 = r,
-                        s.y0 = i,
-                        s.x1 = u,
-                        s.y1 = a,
-                        void 0
-                    }
-                    for (var l = f[t], h = e / 2 + l, p = t + 1, d = n - 1; p < d;) {
-                        var v = p + d >>> 1;
-                        f[v] < h
-                            ? p = v + 1
-                            : d = v
-                    }
-                    var _ = f[p] - l,
-                        y = e - _;
-                    if (a - i > u - r) {
-                        var g = (i * y + a * _) / e;
-                        o(t, p, _, r, i, u, g),
-                        o(p, n, y, r, g, u, a)
-                    } else {
-                        var m = (r * y + u * _) / e;
-                        o(t, p, _, r, i, m, a),
-                        o(p, n, y, m, i, u, a)
-                    }
-                }
-                var u,
-                    a,
-                    c = t.children,
-                    s = c.length,
-                    f = new Array(s + 1);
-                for (f[0] = a = u = 0; u < s; ++u) 
-                    f[u + 1] = a += c[u].value;
-                o(0, s, t.value, n, e, r, i)
-            },
-            Yg = function (t, n, e, r, i) {
-                (1 & t.depth
-                    ? Ug
-                    : Eg)(t, n, e, r, i)
-            },
-            Bg = function t(n) {
-                function e(t, e, r, i, o) {
-                    if ((u = t._squarify) && u.ratio === n) 
-                        for (var u, a, c, s, f, l = -1, h = u.length, p = t.value; ++l < h;) {
-                            for (a = u[l], c = a.children, s = a.value = 0, f = c.length; s < f; ++s) 
-                                a.value += c[s].value;
-                            a.dice
-                                ? Eg(a, e, r, i, r += (o - r) * a.value / p)
-                                : Ug(a, e, r, e += (i - e) * a.value / p, o),
-                            p -= a.value
-                        }
-                    else 
-                        t._squarify = u = lu(n, t, e, r, i, o),
-                        u.ratio = n
-                }
-                return e.ratio = function (n) {
-                    return t((n =+ n) > 1
-                        ? n
-                        : 1)
-                },
-                e
-            }(Dg),
-            jg = function (t, n) {
-                function e() {
-                    var e,
-                        i,
-                        o = r.length,
-                        u = 0,
-                        a = 0;
-                    for (e = 0; e < o; ++e) 
-                        i = r[e],
-                        u += i.x,
-                        a += i.y;
-                    for (u = u / o - t, a = a / o - n, e = 0; e < o; ++e) 
-                        i = r[e],
-                        i.x -= u,
-                        i.y -= a
-                }
-                var r;
-                return null == t && (t = 0),
-                null == n && (n = 0),
-                e.initialize = function (t) {
-                    r = t
-                },
-                e.x = function (n) {
-                    return arguments.length
-                        ? (t =+ n, e)
-                        : t
-                },
-                e.y = function (t) {
-                    return arguments.length
-                        ? (n =+ t, e)
-                        : n
-                },
-                e
-            },
-            Hg = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            Xg = function () {
-                return 1e-6 * (Math.random() - .5)
-            },
-            Vg = function (t) {
-                function n() {
-                    function t(t, e, r, i, o) {
-                        var a = t.data,
-                            p = t.r,
-                            d = l + p;
-                        {
-                            if (!a) 
-                                return e > s + d || i < s - d || r > f + d || o < f - d;
-                            if (a.index > n) {
-                                var v = s - a.x - a.vx,
-                                    _ = f - a.y - a.vy,
-                                    y = v * v + _ * _;
-                                y < d * d && (0 === v && (v = Xg(), y += v * v), 0 === _ && (_ = Xg(), y += _ * _), y = (d - (y = Math.sqrt(y))) / y * u, c.vx += (v *= y) * (d = (p *= p) / (h + p)), c.vy += (_ *= y) * d, a.vx -= v * (d = 1 - d), a.vy -= _ * d)
-                            }
-                        }
-                    }
-                    for (var n, r, c, s, f, l, h, p = i.length, d = 0; d < a; ++d) 
-                        for (r = I(i, hu, pu).visitAfter(e), n = 0; n < p; ++n) 
-                            c = i[n],
-                            l = o[n],
-                            h = l * l,
-                            s = c.x + c.vx,
-                            f = c.y + c.vy,
-                            r.visit(t)
-                }
-                function e(t) {
-                    if (t.data) 
-                        return t.r = o[t.data.index];
-                    for (var n = t.r = 0; n < 4; ++n) 
-                        t[n] && t[n].r > t.r && (t.r = t[n].r)
-                }
-                function r() {
-                    if (i) {
-                        var n,
-                            e = i.length;
-                        for (o = new Array(e), n = 0; n < e; ++n) 
-                            o[n] =+ t(i[n], n, i)
-                    }
-                }
-                var i,
-                    o,
-                    u = 1,
-                    a = 1;
-                return "function" != typeof t && (t = Hg(null == t
-                    ? 1 :+ t)),
-                n.initialize = function (t) {
-                    i = t,
-                    r()
-                },
-                n.iterations = function (t) {
-                    return arguments.length
-                        ? (a =+ t, n)
-                        : a
-                },
-                n.strength = function (t) {
-                    return arguments.length
-                        ? (u =+ t, n)
-                        : u
-                },
-                n.radius = function (e) {
-                    return arguments.length
-                        ? (t = "function" == typeof e
-                            ? e
-                            : Hg(+ e), r(), n)
-                        : t
-                },
-                n
-            },
-            Wg = function (t) {
-                function n(t) {
-                    return 1 / Math.min(f[t.source.index], f[t.target.index])
-                }
-                function e(n) {
-                    for (var e = 0, r = t.length; e < v; ++e) 
-                        for (var i, o, u, s, f, h, p, d = 0; d < r; ++d) 
-                            i = t[d],
-                            o = i.source,
-                            u = i.target,
-                            s = u.x + u.vx - o.x - o.vx || Xg(),
-                            f = u.y + u.vy - o.y - o.vy || Xg(),
-                            h = Math.sqrt(s * s + f * f),
-                            h = (h - c[d]) / h * n * a[d],
-                            s *= h,
-                            f *= h,
-                            u.vx -= s * (p = l[d]),
-                            u.vy -= f * p,
-                            o.vx += s * (p = 1 - p),
-                            o.vy += f * p
-                }
-                function r() {
-                    if (s) {
-                        var n,
-                            e,
-                            r = s.length,
-                            p = t.length,
-                            d = o(s, h);
-                        for (n = 0, f = new Array(r); n < r; ++n) 
-                            f[n] = 0;
-                        for (n = 0; n < p; ++n) 
-                            e = t[n],
-                            e.index = n,
-                            "object" != typeof e.source && (e.source = vu(d, e.source)),
-                            "object" != typeof e.target && (e.target = vu(d, e.target)),
-                            ++f[e.source.index],
-                            ++f[e.target.index];
-                        for (n = 0, l = new Array(p); n < p; ++n) 
-                            e = t[n],
-                            l[n] = f[e.source.index] / (f[e.source.index] + f[e.target.index]);
-                        a = new Array(p),
-                        i(),
-                        c = new Array(p),
-                        u()
-                    }
-                }
-                function i() {
-                    if (s) 
-                        for (var n = 0, e = t.length; n < e; ++n) 
-                            a[n] =+ p(t[n], n, t)
-                }
-                function u() {
-                    if (s) 
-                        for (var n = 0, e = t.length; n < e; ++n) 
-                            c[n] =+ d(t[n], n, t)
-                }
-                var a,
-                    c,
-                    s,
-                    f,
-                    l,
-                    h = du,
-                    p = n,
-                    d = Hg(30),
-                    v = 1;
-                return null == t && (t = []),
-                e.initialize = function (t) {
-                    s = t,
-                    r()
-                },
-                e.links = function (n) {
-                    return arguments.length
-                        ? (t = n, r(), e)
-                        : t
-                },
-                e.id = function (t) {
-                    return arguments.length
-                        ? (h = t, e)
-                        : h
-                },
-                e.iterations = function (t) {
-                    return arguments.length
-                        ? (v =+ t, e)
-                        : v
-                },
-                e.strength = function (t) {
-                    return arguments.length
-                        ? (p = "function" == typeof t
-                            ? t
-                            : Hg(+ t), i(), e)
-                        : p
-                },
-                e.distance = function (t) {
-                    return arguments.length
-                        ? (d = "function" == typeof t
-                            ? t
-                            : Hg(+ t), u(), e)
-                        : d
-                },
-                e
-            },
-            $g = 10,
-            Zg = Math.PI * (3 - Math.sqrt(5)),
-            Gg = function (t) {
-                function n() {
-                    e(),
-                    d.call("tick", u),
-                    a < c && (p.stop(), d.call("end", u))
-                }
-                function e() {
-                    var n,
-                        e,
-                        r = t.length;
-                    for (a += (f - a) * s, h.each(function (t) {
-                        t(a)
-                    }), n = 0; n < r; ++n) 
-                        e = t[n],
-                        null == e.fx
-                            ? e.x += e.vx *= l
-                            : (e.x = e.fx, e.vx = 0),
-                        null == e.fy
-                            ? e.y += e.vy *= l
-                            : (e.y = e.fy, e.vy = 0)
-                    }
-                function r() {
-                    for (var n, e = 0, r = t.length; e < r; ++e) {
-                        if (n = t[e], n.index = e, isNaN(n.x) || isNaN(n.y)) {
-                            var i = $g * Math.sqrt(e),
-                                o = e * Zg;
-                            n.x = i * Math.cos(o),
-                            n.y = i * Math.sin(o)
-                        }
-                        (isNaN(n.vx) || isNaN(n.vy)) && (n.vx = n.vy = 0)
-                    }
-                }
-                function i(n) {
-                    return n.initialize && n.initialize(t),
-                    n
-                }
-                var u,
-                    a = 1,
-                    c = .001,
-                    s = 1 - Math.pow(c, 1 / 300),
-                    f = 0,
-                    l = .6,
-                    h = o(),
-                    p = Vn(n),
-                    d = Pn("tick", "end");
-                return null == t && (t = []),
-                r(),
-                u = {
-                    tick: e,
-                    restart: function () {
-                        return p.restart(n),
-                        u
-                    },
-                    stop: function () {
-                        return p.stop(),
-                        u
-                    },
-                    nodes: function (n) {
-                        return arguments.length
-                            ? (t = n, r(), h.each(i), u)
-                            : t
-                    },
-                    alpha: function (t) {
-                        return arguments.length
-                            ? (a =+ t, u)
-                            : a
-                    },
-                    alphaMin: function (t) {
-                        return arguments.length
-                            ? (c =+ t, u)
-                            : c
-                    },
-                    alphaDecay: function (t) {
-                        return arguments.length
-                            ? (s =+ t, u) :+ s
-                    },
-                    alphaTarget: function (t) {
-                        return arguments.length
-                            ? (f =+ t, u)
-                            : f
-                    },
-                    velocityDecay: function (t) {
-                        return arguments.length
-                            ? (l = 1 - t, u)
-                            : 1 - l
-                    },
-                    force: function (t, n) {
-                        return arguments.length > 1
-                            ? (null == n
-                                ? h.remove(t)
-                                : h.set(t, i(n)), u)
-                            : h.get(t)
-                    },
-                    find: function (n, e, r) {
-                        var i,
-                            o,
-                            u,
-                            a,
-                            c,
-                            s = 0,
-                            f = t.length;
-                        for (null == r
-                            ? r = 1 / 0
-                            : r *= r, s = 0; s < f; ++s) 
-                            a = t[s],
-                            i = n - a.x,
-                            o = e - a.y,
-                            u = i * i + o * o,
-                            u < r && (c = a, r = u);
-                        return c
-                    },
-                    on: function (t, n) {
-                        return arguments.length > 1
-                            ? (d.on(t, n), u)
-                            : d.on(t)
-                    }
-                }
-            },
-            Jg = function () {
-                function t(t) {
-                    var n,
-                        a = i.length,
-                        c = I(i, _u, yu).visitAfter(e);
-                    for (u = t, n = 0; n < a; ++n) 
-                        o = i[n],
-                        c.visit(r)
-                }
-                function n() {
-                    if (i) {
-                        var t,
-                            n = i.length;
-                        for (a = new Array(n), t = 0; t < n; ++t) 
-                            a[t] =+ c(i[t], t, i)
-                    }
-                }
-                function e(t) {
-                    var n,
-                        e,
-                        r,
-                        i,
-                        o,
-                        u = 0;
-                    if (t.length) {
-                        for (r = i = o = 0; o < 4; ++o) 
-                            (n = t[o]) && (e = n.value) && (u += e, r += e * n.x, i += e * n.y);
-                        t.x = r / u,
-                        t.y = i / u
-                    } else {
-                        n = t,
-                        n.x = n.data.x,
-                        n.y = n.data.y;
-                        do 
-                            u += a[n.data.index];
-                        while (n = n.next)
-                    }
-                    t.value = u
-                }
-                function r(t, n, e, r) {
-                    if (!t.value) 
-                        return !0;
-                    var i = t.x - o.x,
-                        c = t.y - o.y,
-                        h = r - n,
-                        p = i * i + c * c;
-                    if (h * h / l < p) 
-                        return p < f && (0 === i && (i = Xg(), p += i * i), 0 === c && (c = Xg(), p += c * c), p < s && (p = Math.sqrt(s * p)), o.vx += i * t.value * u / p, o.vy += c * t.value * u / p),
-                        !0;
-                    if (!(t.length || p >= f)) {
-                        (t.data !== o || t.next) && (0 === i && (i = Xg(), p += i * i), 0 === c && (c = Xg(), p += c * c), p < s && (p = Math.sqrt(s * p)));
-                        do 
-                            t.data !== o && (h = a[t.data.index] * u / p, o.vx += i * h, o.vy += c * h);
-                        while (t = t.next)
-                    }
-                }
-                var i,
-                    o,
-                    u,
-                    a,
-                    c = Hg(-30),
-                    s = 1,
-                    f = 1 / 0,
-                    l = .81;
-                return t.initialize = function (t) {
-                    i = t,
-                    n()
-                },
-                t.strength = function (e) {
-                    return arguments.length
-                        ? (c = "function" == typeof e
-                            ? e
-                            : Hg(+ e), n(), t)
-                        : c
-                },
-                t.distanceMin = function (n) {
-                    return arguments.length
-                        ? (s = n * n, t)
-                        : Math.sqrt(s)
-                },
-                t.distanceMax = function (n) {
-                    return arguments.length
-                        ? (f = n * n, t)
-                        : Math.sqrt(f)
-                },
-                t.theta = function (n) {
-                    return arguments.length
-                        ? (l = n * n, t)
-                        : Math.sqrt(l)
-                },
-                t
-            },
-            Qg = function (t) {
-                function n(t) {
-                    for (var n, e = 0, u = r.length; e < u; ++e) 
-                        n = r[e],
-                        n.vx += (o[e] - n.x) * i[e] * t
-                }
-                function e() {
-                    if (r) {
-                        var n,
-                            e = r.length;
-                        for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) 
-                            i[n] = isNaN(o[n] =+ t(r[n], n, r))
-                                ? 0 :+ u(r[n], n, r)
-                        }
-                }
-                var r,
-                    i,
-                    o,
-                    u = Hg(.1);
-                return "function" != typeof t && (t = Hg(null == t
-                    ? 0 :+ t)),
-                n.initialize = function (t) {
-                    r = t,
-                    e()
-                },
-                n.strength = function (t) {
-                    return arguments.length
-                        ? (u = "function" == typeof t
-                            ? t
-                            : Hg(+ t), e(), n)
-                        : u
-                },
-                n.x = function (r) {
-                    return arguments.length
-                        ? (t = "function" == typeof r
-                            ? r
-                            : Hg(+ r), e(), n)
-                        : t
-                },
-                n
-            },
-            Kg = function (t) {
-                function n(t) {
-                    for (var n, e = 0, u = r.length; e < u; ++e) 
-                        n = r[e],
-                        n.vy += (o[e] - n.y) * i[e] * t
-                }
-                function e() {
-                    if (r) {
-                        var n,
-                            e = r.length;
-                        for (i = new Array(e), o = new Array(e), n = 0; n < e; ++n) 
-                            i[n] = isNaN(o[n] =+ t(r[n], n, r))
-                                ? 0 :+ u(r[n], n, r)
-                        }
-                }
-                var r,
-                    i,
-                    o,
-                    u = Hg(.1);
-                return "function" != typeof t && (t = Hg(null == t
-                    ? 0 :+ t)),
-                n.initialize = function (t) {
-                    r = t,
-                    e()
-                },
-                n.strength = function (t) {
-                    return arguments.length
-                        ? (u = "function" == typeof t
-                            ? t
-                            : Hg(+ t), e(), n)
-                        : u
-                },
-                n.y = function (r) {
-                    return arguments.length
-                        ? (t = "function" == typeof r
-                            ? r
-                            : Hg(+ r), e(), n)
-                        : t
-                },
-                n
-            },
-            tm = function () {
-                t
-                    .event
-                    .preventDefault(),
-                t
-                    .event
-                    .stopImmediatePropagation()
-            },
-            nm = function (t) {
-                var n = t.document.documentElement,
-                    e = gy(t).on("dragstart.drag", tm, !0);
-                "onselectstart" in n
-                    ? e.on("selectstart.drag", tm, !0)
-                    : (n.__noselect = n.style.MozUserSelect, n.style.MozUserSelect = "none")
-            },
-            em = function (t) {
-                return function () {
-                    return t
-                }
-            };
-        xu.prototype.on = function () {
-            var t = this
-                ._
-                .on
-                .apply(this._, arguments);
-            return t === this._
-                ? this
-                : t
-        };
-        var rm = function () {
-                function n(t) {
-                    t
-                        .on("mousedown.drag", e)
-                        .on("touchstart.drag", o)
-                        .on("touchmove.drag", u)
-                        .on("touchend.drag touchcancel.drag", a)
-                        .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
-                }
-                function e() {
-                    if (!f && l.apply(this, arguments)) {
-                        var n = c("mouse", h.apply(this, arguments), U_, this, arguments);
-                        n && (gy(t.event.view).on("mousemove.drag", r, !0).on("mouseup.drag", i, !0), nm(t.event.view), gu(), s = !1, n("start"))
-                    }
-                }
-                function r() {
-                    tm(),
-                    s = !0,
-                    d.mouse("drag")
-                }
-                function i() {
-                    gy(t.event.view).on("mousemove.drag mouseup.drag", null),
-                    mu(t.event.view, s),
-                    tm(),
-                    d.mouse("end")
-                }
-                function o() {
-                    if (l.apply(this, arguments)) {
-                        var n,
-                            e,
-                            r = t.event.changedTouches,
-                            i = h.apply(this, arguments),
-                            o = r.length;
-                        for (n = 0; n < o; ++n) 
-                            (e = c(r[n].identifier, i, xy, this, arguments)) && (gu(), e("start"))
-                    }
-                }
-                function u() {
-                    var n,
-                        e,
-                        r = t.event.changedTouches,
-                        i = r.length;
-                    for (n = 0; n < i; ++n) 
-                        (e = d[r[n].identifier]) && (tm(), e("drag"))
-                }
-                function a() {
-                    var n,
-                        e,
-                        r = t.event.changedTouches,
-                        i = r.length;
-                    for (f && clearTimeout(f), f = setTimeout(function () {
-                        f = null
-                    }, 500), n = 0; n < i; ++n) 
-                        (e = d[r[n].identifier]) && (gu(), e("end"))
-                }
-                function c(e, r, i, o, u) {
-                    var a,
-                        c,
-                        s,
-                        f = i(r, e),
-                        l = v.copy();
-                    if (Xr(new xu(n, "beforestart", a, e, _, f[0], f[1], 0, 0, l), function () {
-                        return null != (t.event.subject = a = p.apply(o, u)) && (c = a.x - f[0] || 0, s = a.y - f[1] || 0, !0)
-                    })) 
-                        return function t(h) {
-                            var p,
-                                v = f;
-                            switch (h) {
-                                case "start":
-                                    d[e] = t,
-                                    p = _++;
-                                    break;
-                                case "end":
-                                    delete d[e],
-                                    --_;
-                                case "drag":
-                                    f = i(r, e),
-                                    p = _
-                            }
-                            Xr(new xu(n, h, a, e, p, f[0] + c, f[1] + s, f[0] - v[0], f[1] - v[1], l), l.apply, l, [h, o, u])
-                        }
-                    }
-                var s,
-                    f,
-                    l = bu,
-                    h = wu,
-                    p = Mu,
-                    d = {},
-                    v = Pn("start", "drag", "end"),
-                    _ = 0;
-                return n.filter = function (t) {
-                    return arguments.length
-                        ? (l = "function" == typeof t
-                            ? t
-                            : em(!!t), n)
-                        : l
-                },
-                n.container = function (t) {
-                    return arguments.length
-                        ? (h = "function" == typeof t
-                            ? t
-                            : em(t), n)
-                        : h
-                },
-                n.subject = function (t) {
-                    return arguments.length
-                        ? (p = "function" == typeof t
-                            ? t
-                            : em(t), n)
-                        : p
-                },
-                n.on = function () {
-                    var t = v
-                        .on
-                        .apply(v, arguments);
-                    return t === v
-                        ? n
-                        : t
-                },
-                n
-            },
-            im = function (t) {
-                return function () {
-                    return t
-                }
-            };
-        ku.prototype = {
-            constructor: ku,
-            insert: function (t, n) {
-                var e,
-                    r,
-                    i;
-                if (t) {
-                    if (n.P = t, n.N = t.N, t.N && (t.N.P = n), t.N = n, t.R) {
-                        for (t = t.R; t.L;) 
-                            t = t.L;
-                        t.L = n
-                    } else 
-                        t.R = n;
-                    e = t
-                } else 
-                    this._
-                        ? (t = Cu(this._), n.P = null, n.N = t, t.P = t.L = n, e = t)
-                        : (n.P = n.N = null, this._ = n, e = null);
-                for (n.L = n.R = null, n.U = e, n.C = !0, t = n; e && e.C;) 
-                    r = e.U,
-                    e === r.L
-                        ? (i = r.R, i && i.C
-                            ? (e.C = i.C = !1, r.C = !0, t = r)
-                            : (t === e.R && (Au(this, e), t = e, e = t.U), e.C = !1, r.C = !0, Eu(this, r)))
-                        : (i = r.L, i && i.C
-                            ? (e.C = i.C = !1, r.C = !0, t = r)
-                            : (t === e.L && (Eu(this, e), t = e, e = t.U), e.C = !1, r.C = !0, Au(this, r))),
-                    e = t.U;
-                this._.C = !1
-            },
-            remove: function (t) {
-                t.N && (t.N.P = t.P),
-                t.P && (t.P.N = t.N),
-                t.N = t.P = null;
-                var n,
-                    e,
-                    r,
-                    i = t.U,
-                    o = t.L,
-                    u = t.R;
-                if (e = o
-                    ? u
-                        ? Cu(u)
-                        : o
-                    : u, i
-                    ? i.L === t
-                        ? i.L = e
-                        : i.R = e
-                    : this._ = e, o && u
-                    ? (r = e.C, e.C = t.C, e.L = o, o.U = e, e !== u
-                        ? (i = e.U, e.U = t.U, t = e.R, i.L = t, e.R = u, u.U = e)
-                        : (e.U = i, i = e, t = e.R))
-                    : (r = t.C, t = e), t && (t.U = i), !r) {
-                    if (t && t.C) 
-                        return void(t.C = !1);
-                    do {
-                        if (t === this._) 
-                            break;
-                        if (t === i.L) {
-                            if (n = i.R, n.C && (n.C = !1, i.C = !0, Au(this, i), n = i.R), n.L && n.L.C || n.R && n.R.C) {
-                                n.R && n.R.C || (n.L.C = !1, n.C = !0, Eu(this, n), n = i.R),
-                                n.C = i.C,
-                                i.C = n.R.C = !1,
-                                Au(this, i),
-                                t = this._;
-                                break
-                            }
-                        } else if (n = i.L, n.C && (n.C = !1, i.C = !0, Eu(this, i), n = i.L), n.L && n.L.C || n.R && n.R.C) {
-                            n.L && n.L.C || (n.R.C = !1, n.C = !0, Au(this, n), n = i.L),
-                            n.C = i.C,
-                            i.C = n.L.C = !1,
-                            Eu(this, i),
-                            t = this._;
-                            break
-                        }
-                        n.C = !0,
-                        t = i,
-                        i = i.U
-                    } while (!t.C);
-                    t && (t.C = !1)
-                }
-            }
-        };
-        var om,
-            um,
-            am,
-            cm,
-            sm,
-            fm = [],
-            lm = [],
-            hm = 1e-6,
-            pm = 1e-12;
-        na.prototype = {
-            constructor: na,
-            polygons: function () {
-                var t = this.edges;
-                return this
-                    .cells
-                    .map(function (n) {
-                        var e = n
-                            .halfedges
-                            .map(function (e) {
-                                return Fu(n, t[e])
-                            });
-                        return e.data = n.site.data,
-                        e
-                    })
-            },
-            triangles: function () {
-                var t = [],
-                    n = this.edges;
-                return this
-                    .cells
-                    .forEach(function (e, r) {
-                        for (var i, o = e.site, u = e.halfedges, a = -1, c = u.length, s = n[u[c - 1]], f = s.left === o
-                            ? s.right
-                            : s.left; ++a < c;) 
-                            i = f,
-                            s = n[u[a]],
-                            f = s.left === o
-                                ? s.right
-                                : s.left,
-                            i && f && r < i.index && r < f.index && Ku(o, i, f) < 0 && t.push([o.data, i.data, f.data])
-                    }),
-                t
-            },
-            links: function () {
-                return this
-                    .edges
-                    .filter(function (t) {
-                        return t.right
-                    })
-                    .map(function (t) {
-                        return {source: t.left.data, target: t.right.data}
-                    })
-            },
-            find: function (t, n, e) {
-                var r,
-                    i = this,
-                    o = i._found || 0,
-                    u = i.cells[o] || i.cells[o = 0],
-                    a = t - u.site[0],
-                    c = n - u.site[1],
-                    s = a * a + c * c;
-                do 
-                    u = i.cells[r = o],
-                    o = null,
-                    u
-                        .halfedges
-                        .forEach(function (e) {
-                            var r = i.edges[e],
-                                a = r.left;
-                            if (a !== u.site && a || (a = r.right)) {
-                                var c = t - a[0],
-                                    f = n - a[1],
-                                    l = c * c + f * f;
-                                l < s && (s = l, o = a.index)
-                            }
-                        });
-                while (null !== o);
-                return i._found = r,
-                null == e || s <= e * e
-                    ? u.site
-                    : null
-            }
-        };
-        var dm = function () {
-                function t(t) {
-                    return new na(t.map(function (r, i) {
-                        var o = [
-                            Math.round(n(r, i, t) / hm) * hm,
-                            Math.round(e(r, i, t) / hm) * hm
-                        ];
-                        return o.index = i,
-                        o.data = r,
-                        o
-                    }), r)
-                }
-                var n = Tu,
-                    e = Nu,
-                    r = null;
-                return t.polygons = function (n) {
-                    return t(n).polygons()
-                },
-                t.links = function (n) {
-                    return t(n).links()
-                },
-                t.triangles = function (n) {
-                    return t(n).triangles()
-                },
-                t.x = function (e) {
-                    return arguments.length
-                        ? (n = "function" == typeof e
-                            ? e
-                            : im(+ e), t)
-                        : n
-                },
-                t.y = function (n) {
-                    return arguments.length
-                        ? (e = "function" == typeof n
-                            ? n
-                            : im(+ n), t)
-                        : e
-                },
-                t.extent = function (n) {
-                    return arguments.length
-                        ? (r = null == n
-                            ? null
-                            : [
-                                [ + n[0][0], + n[0][1]
-                                ],
-                                [ + n[1][0], + n[1][1]
-                                ]
-                            ], t)
-                        : r && [
-                            [r[0][0], r[0][1]
-                            ],
-                            [r[1][0], r[1][1]
-                            ]
-                        ]
-                },
-                t.size = function (n) {
-                    return arguments.length
-                        ? (r = null == n
-                            ? null
-                            : [
-                                [
-                                    0, 0
-                                ],
-                                [ + n[0], + n[1]
-                                ]
-                            ], t)
-                        : r && [r[1][0] - r[0][0],
-                            r[1][1] - r[0][1]
-                        ]
-                },
-                t
-            },
-            vm = function (t) {
-                return function () {
-                    return t
-                }
-            };
-        ra.prototype = {
-            constructor: ra,
-            scale: function (t) {
-                return 1 === t
-                    ? this
-                    : new ra(this.k * t, this.x, this.y)
-            },
-            translate: function (t, n) {
-                return 0 === t & 0 === n
-                    ? this
-                    : new ra(this.k, this.x + this.k * t, this.y + this.k * n)
-            },
-            apply: function (t) {
-                return [
-                    t[0] * this.k + this.x,
-                    t[1] * this.k + this.y
-                ]
-            },
-            applyX: function (t) {
-                return t * this.k + this.x
-            },
-            applyY: function (t) {
-                return t * this.k + this.y
-            },
-            invert: function (t) {
-                return [
-                    (t[0] - this.x) / this.k,
-                    (t[1] - this.y) / this.k
-                ]
-            },
-            invertX: function (t) {
-                return (t - this.x) / this.k
-            },
-            invertY: function (t) {
-                return (t - this.y) / this.k
-            },
-            rescaleX: function (t) {
-                return t
-                    .copy()
-                    .domain(t.range().map(this.invertX, this).map(t.invert, t))
-            },
-            rescaleY: function (t) {
-                return t
-                    .copy()
-                    .domain(t.range().map(this.invertY, this).map(t.invert, t))
-            },
-            toString: function () {
-                return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"
-            }
-        };
-        var _m = new ra(1, 0, 0);
-        ia.prototype = ra.prototype;
-        var ym = function () {
-                t
-                    .event
-                    .preventDefault(),
-                t
-                    .event
-                    .stopImmediatePropagation()
-            },
-            gm = function () {
-                function n(t) {
-                    t
-                        .on("wheel.zoom", s)
-                        .on("mousedown.zoom", f)
-                        .on("dblclick.zoom", l)
-                        .on("touchstart.zoom", h)
-                        .on("touchmove.zoom", p)
-                        .on("touchend.zoom touchcancel.zoom", d)
-                        .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
-                        .property("__zoom", ca)
-                }
-                function e(t, n) {
-                    return n = Math.max(m, Math.min(x, n)),
-                    n === t.k
-                        ? t
-                        : new ra(n, t.x, t.y)
-                }
-                function r(t, n, e) {
-                    var r = n[0] - e[0] * t.k,
-                        i = n[1] - e[1] * t.k;
-                    return r === t.x && i === t.y
-                        ? t
-                        : new ra(t.k, r, i)
-                }
-                function i(t, n) {
-                    var e = Math.min(0, t.invertX(n[0][0]) - b) || Math.max(0, t.invertX(n[1][0]) - w),
-                        r = Math.min(0, t.invertY(n[0][1]) - M) || Math.max(0, t.invertY(n[1][1]) - T);
-                    return e || r
-                        ? t.translate(e, r)
-                        : t
-                }
-                function o(t) {
-                    return [
-                        ( + t[0][0] + + t[1][0]) / 2,
-                        ( + t[0][1] + + t[1][1]) / 2
-                    ]
-                }
-                function u(t, n, e) {
-                    t
-                        .on("start.zoom", function () {
-                            a(this, arguments).start()
-                        })
-                        .on("interrupt.zoom end.zoom", function () {
-                            a(this, arguments).end()
-                        })
-                        .tween("zoom", function () {
-                            var t = this,
-                                r = arguments,
-                                i = a(t, r),
-                                u = g.apply(t, r),
-                                c = e || o(u),
-                                s = Math.max(u[1][0] - u[0][0], u[1][1] - u[0][1]),
-                                f = t.__zoom,
-                                l = "function" == typeof n
-                                    ? n.apply(t, r)
-                                    : n,
-                                h = Sp(f.invert(c).concat(s / f.k), l.invert(c).concat(s / l.k));
-                            return function (t) {
-                                if (1 === t) 
-                                    t = l;
-                                else {
-                                    var n = h(t),
-                                        e = s / n[2];
-                                    t = new ra(e, c[0] - n[0] * e, c[1] - n[1] * e)
-                                }
-                                i.zoom(null, t)
-                            }
-                        })
-                }
-                function a(t, n) {
-                    for (var e, r = 0, i = k.length; r < i; ++r) 
-                        if ((e = k[r]).that === t) 
-                            return e;
-                return new c(t, n)
-                }
-                function c(t, n) {
-                    this.that = t,
-                    this.args = n,
-                    this.index = -1,
-                    this.active = 0,
-                    this.extent = g.apply(t, n)
-                }
-                function s() {
-                    function n() {
-                        o.wheel = null,
-                        o.end()
-                    }
-                    if (y.apply(this, arguments)) {
-                        var o = a(this, arguments),
-                            u = this.__zoom,
-                            c = Math.max(m, Math.min(x, u.k * Math.pow(2, -t.event.deltaY * (t.event.deltaMode
-                                ? 120
-                                : 1) / 500))),
-                            s = U_(this);
-                        if (o.wheel) 
-                            o.mouse[0][0] === s[0] && o.mouse[0][1] === s[1] || (o.mouse[1] = u.invert(o.mouse[0] = s)),
-                            clearTimeout(o.wheel);
-                        else {
-                            if (u.k === c) 
-                                return;
-                            o.mouse = [
-                                s, u.invert(s)
-                            ],
-                            Py(this),
-                            o.start()
-                        }
-                        ym(),
-                        o.wheel = setTimeout(n, E),
-                        o.zoom("mouse", i(r(e(u, c), o.mouse[0], o.mouse[1]), o.extent))
-                    }
-                }
-                function f() {
-                    function n() {
-                        ym(),
-                        o.moved = !0,
-                        o.zoom("mouse", i(r(o.that.__zoom, o.mouse[0] = U_(o.that), o.mouse[1]), o.extent))
-                    }
-                    function e() {
-                        u.on("mousemove.zoom mouseup.zoom", null),
-                        mu(t.event.view, o.moved),
-                        ym(),
-                        o.end()
-                    }
-                    if (!_ && y.apply(this, arguments)) {
-                        var o = a(this, arguments),
-                            u = gy(t.event.view)
-                                .on("mousemove.zoom", n, !0)
-                                .on("mouseup.zoom", e, !0),
-                            c = U_(this);
-                        nm(t.event.view),
-                        oa(),
-                        o.mouse = [
-                            c,
-                            this
-                                .__zoom
-                                .invert(c)
-                        ],
-                        Py(this),
-                        o.start()
-                    }
-                }
-                function l() {
-                    if (y.apply(this, arguments)) {
-                        var o = this.__zoom,
-                            a = U_(this),
-                            c = o.invert(a),
-                            s = o.k * (t.event.shiftKey
-                                ? .5
-                                : 2),
-                            f = i(r(e(o, s), a, c), g.apply(this, arguments));
-                        ym(),
-                        N > 0
-                            ? gy(this)
-                                .transition()
-                                .duration(N)
-                                .call(u, f, a)
-                            : gy(this).call(n.transform, f)
-                    }
-                }
-                function h() {
-                    if (y.apply(this, arguments)) {
-                        var n,
-                            e,
-                            r,
-                            i = a(this, arguments),
-                            o = t.event.changedTouches,
-                            u = o.length;
-                        for (oa(), n = 0; n < u; ++n) 
-                            e = o[n],
-                            r = xy(this, o, e.identifier),
-                            r = [
-                                r,
-                                this
-                                    .__zoom
-                                    .invert(r),
-                                e.identifier
-                            ],
-                            i.touch0
-                                ? i.touch1 || (i.touch1 = r)
-                                : i.touch0 = r;
-                        return v && (v = clearTimeout(v), !i.touch1)
-                            ? (i.end(), l.apply(this, arguments))
-                            : void(t.event.touches.length === u && (v = setTimeout(function () {
-                                v = null
-                            }, A), Py(this), i.start()))
-                    }
-                }
-                function p() {
-                    var n,
-                        o,
-                        u,
-                        c,
-                        s = a(this, arguments),
-                        f = t.event.changedTouches,
-                        l = f.length;
-                    for (ym(), v && (v = clearTimeout(v)), n = 0; n < l; ++n) 
-                        o = f[n],
-                        u = xy(this, f, o.identifier),
-                        s.touch0 && s.touch0[2] === o.identifier
-                            ? s.touch0[0] = u
-                            : s.touch1 && s.touch1[2] === o.identifier && (s.touch1[0] = u);
-                    if (o = s.that.__zoom, s.touch1) {
-                        var h = s.touch0[0],
-                            p = s.touch0[1],
-                            d = s.touch1[0],
-                            _ = s.touch1[1],
-                            y = (y = d[0] - h[0]) * y + (y = d[1] - h[1]) * y,
-                            g = (g = _[0] - p[0]) * g + (g = _[1] - p[1]) * g;
-                        o = e(o, Math.sqrt(y / g)),
-                        u = [
-                            (h[0] + d[0]) / 2,
-                            (h[1] + d[1]) / 2
-                        ],
-                        c = [
-                            (p[0] + _[0]) / 2,
-                            (p[1] + _[1]) / 2
-                        ]
-                    } else {
-                        if (!s.touch0) 
-                            return;
-                        u = s.touch0[0],
-                        c = s.touch0[1]
-                    }
-                    s.zoom("touch", i(r(o, u, c), s.extent))
-                }
-                function d() {
-                    var n,
-                        e,
-                        r = a(this, arguments),
-                        i = t.event.changedTouches,
-                        o = i.length;
-                    for (oa(), _ && clearTimeout(_), _ = setTimeout(function () {
-                        _ = null
-                    }, A), n = 0; n < o; ++n) 
-                        e = i[n],
-                        r.touch0 && r.touch0[2] === e.identifier
-                            ? delete r.touch0
-                            : r.touch1 && r.touch1[2] === e.identifier && delete r.touch1;
-                    r.touch1 && !r.touch0 && (r.touch0 = r.touch1, delete r.touch1),
-                    r.touch0 || r.end()
-                }
-                var v,
-                    _,
-                    y = ua,
-                    g = aa,
-                    m = 0,
-                    x = 1 / 0,
-                    b = -x,
-                    w = x,
-                    M = b,
-                    T = w,
-                    N = 250,
-                    k = [],
-                    S = Pn("start", "zoom", "end"),
-                    A = 500,
-                    E = 150;
-                return n.transform = function (t, n) {
-                    var e = t.selection
-                        ? t.selection()
-                        : t;
-                    e.property("__zoom", ca),
-                    t !== e
-                        ? u(t, n)
-                        : e
-                            .interrupt()
-                            .each(function () {
-                                a(this, arguments)
-                                    .start()
-                                    .zoom(null, "function" == typeof n
-                                        ? n.apply(this, arguments)
-                                        : n)
-                                    .end()
-                            })
-                },
-                n.scaleBy = function (t, e) {
-                    n
-                        .scaleTo(t, function () {
-                            var t = this.__zoom.k,
-                                n = "function" == typeof e
-                                    ? e.apply(this, arguments)
-                                    : e;
-                            return t * n
-                        })
-                },
-                n.scaleTo = function (t, u) {
-                    n
-                        .transform(t, function () {
-                            var t = g.apply(this, arguments),
-                                n = this.__zoom,
-                                a = o(t),
-                                c = n.invert(a),
-                                s = "function" == typeof u
-                                    ? u.apply(this, arguments)
-                                    : u;
-                            return i(r(e(n, s), a, c), t)
-                        })
-                },
-                n.translateBy = function (t, e, r) {
-                    n
-                        .transform(t, function () {
-                            return i(this.__zoom.translate("function" == typeof e
-                                ? e.apply(this, arguments)
-                                : e, "function" == typeof r
-                                ? r.apply(this, arguments)
-                                : r), g.apply(this, arguments))
-                        })
-                },
-                c.prototype = {
-                    start: function () {
-                        return 1 === ++this.active && (this.index = k.push(this) - 1, this.emit("start")),
-                        this
-                    },
-                    zoom: function (t, n) {
-                        return this.mouse && "mouse" !== t && (this.mouse[1] = n.invert(this.mouse[0])),
-                        this.touch0 && "touch" !== t && (this.touch0[1] = n.invert(this.touch0[0])),
-                        this.touch1 && "touch" !== t && (this.touch1[1] = n.invert(this.touch1[0])),
-                        this.that.__zoom = n,
-                        this.emit("zoom"),
-                        this
-                    },
-                    end: function () {
-                        return 0 === --this.active && (k.splice(this.index, 1), this.index = -1, this.emit("end")),
-                        this
-                    },
-                    emit: function (t) {
-                        Xr(new ea(n, t, this.that.__zoom), S.apply, S, [t, this.that, this.args])
-                    }
-                },
-                n.filter = function (t) {
-                    return arguments.length
-                        ? (y = "function" == typeof t
-                            ? t
-                            : vm(!!t), n)
-                        : y
-                },
-                n.extent = function (t) {
-                    return arguments.length
-                        ? (g = "function" == typeof t
-                            ? t
-                            : vm([
-                                [ + t[0][0], + t[0][1]
-                                ],
-                                [ + t[1][0], + t[1][1]
-                                ]
-                            ]), n)
-                        : g
-                },
-                n.scaleExtent = function (t) {
-                    return arguments.length
-                        ? (m =+ t[0], x =+ t[1], n)
-                        : [m, x]
-                },
-                n.translateExtent = function (t) {
-                    return arguments.length
-                        ? (b =+ t[0][0], w =+ t[1][0], M =+ t[0][1], T =+ t[1][1], n)
-                        : [
-                            [
-                                b, M
-                            ],
-                            [w, T]
-                        ]
-                },
-                n.duration = function (t) {
-                    return arguments.length
-                        ? (N =+ t, n)
-                        : N
-                },
-                n.on = function () {
-                    var t = S
-                        .on
-                        .apply(S, arguments);
-                    return t === S
-                        ? n
-                        : t
-                },
-                n
-            },
-            mm = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            xm = function (t, n, e) {
-                this.target = t,
-                this.type = n,
-                this.selection = e
-            },
-            bm = function () {
-                t
-                    .event
-                    .preventDefault(),
-                t
-                    .event
-                    .stopImmediatePropagation()
-            },
-            wm = {
-                name: "drag"
-            },
-            Mm = {
-                name: "space"
-            },
-            Tm = {
-                name: "handle"
-            },
-            Nm = {
-                name: "center"
-            },
-            km = {
-                name: "x",
-                handles: ["e", "w"].map(fa),
-                input: function (t, n) {
-                    return t && [
-                        [t[0], n[0][1]
-                        ],
-                        [t[1], n[1][1]
-                        ]
-                    ]
-                },
-                output: function (t) {
-                    return t && [t[0][0], t[1][0]
-                    ]
-                }
-            },
-            Sm = {
-                name: "y",
-                handles: ["n", "s"].map(fa),
-                input: function (t, n) {
-                    return t && [
-                        [
-                            n[0][0], t[0]
-                        ],
-                        [n[1][0], t[1]]
-                    ]
-                },
-                output: function (t) {
-                    return t && [t[0][1], t[1][1]
-                    ]
-                }
-            },
-            Am = {
-                name: "xy",
-                handles: [
-                    "n",
-                    "e",
-                    "s",
-                    "w",
-                    "nw",
-                    "ne",
-                    "se",
-                    "sw"
-                ].map(fa),
-                input: function (t) {
-                    return t
-                },
-                output: function (t) {
-                    return t
-                }
-            },
-            Em = {
-                overlay: "crosshair",
-                selection: "move",
-                n: "ns-resize",
-                e: "ew-resize",
-                s: "ns-resize",
-                w: "ew-resize",
-                nw: "nwse-resize",
-                ne: "nesw-resize",
-                se: "nwse-resize",
-                sw: "nesw-resize"
-            },
-            Cm = {
-                e: "w",
-                w: "e",
-                nw: "ne",
-                ne: "nw",
-                se: "sw",
-                sw: "se"
-            },
-            zm = {
-                n: "s",
-                s: "n",
-                nw: "sw",
-                ne: "se",
-                se: "ne",
-                sw: "nw"
-            },
-            Pm = {
-                overlay: 1,
-                selection: 1,
-                n: null,
-                e: 1,
-                s: null,
-                w: -1,
-                nw: -1,
-                ne: 1,
-                se: 1,
-                sw: -1
-            },
-            qm = {
-                overlay: 1,
-                selection: 1,
-                n: -1,
-                e: null,
-                s: 1,
-                w: null,
-                nw: -1,
-                ne: -1,
-                se: 1,
-                sw: 1
-            },
-            Lm = function () {
-                return ga(Am)
-            },
-            Rm = Math.cos,
-            Um = Math.sin,
-            Dm = Math.PI,
-            Om = Dm / 2,
-            Fm = 2 * Dm,
-            Im = Math.max,
-            Ym = function () {
-                function t(t) {
-                    var o,
-                        u,
-                        a,
-                        c,
-                        s,
-                        f,
-                        l = t.length,
-                        h = [],
-                        p = Os(l),
-                        d = [],
-                        v = [],
-                        _ = v.groups = new Array(l),
-                        y = new Array(l * l);
-                    for (o = 0, s = -1; ++s < l;) {
-                        for (u = 0, f = -1; ++f < l;) 
-                            u += t[s][f];
-                        h.push(u),
-                        d.push(Os(l)),
-                        o += u
-                    }
-                    for (e && p.sort(function (t, n) {
-                        return e(h[t], h[n])
-                    }), r && d.forEach(function (n, e) {
-                        n
-                            .sort(function (n, i) {
-                                return r(t[e][n], t[e][i])
-                            })
-                    }), o = Im(0, Fm - n * l) / o, c = o
-                        ? n
-                        : Fm / l, u = 0, s = -1; ++s < l;) {
-                        for (a = u, f = -1; ++f < l;) {
-                            var g = p[s],
-                                m = d[g][f],
-                                x = t[g][m],
-                                b = u,
-                                w = u += x * o;
-                            y[m * l + g] = {
-                                index: g,
-                                subindex: m,
-                                startAngle: b,
-                                endAngle: w,
-                                value: x
-                            }
-                        }
-                        _[g] = {
-                            index: g,
-                            startAngle: a,
-                            endAngle: u,
-                            value: h[g]
-                        },
-                        u += c
-                    }
-                    for (s = -1; ++s < l;) 
-                        for (f = s - 1; ++f < l;) {
-                            var M = y[f * l + s],
-                                T = y[s * l + f];
-                            (M.value || T.value) && v.push(M.value < T.value
-                                ? {
-                                    source: T,
-                                    target: M
-                                }
-                                : {
-                                    source: M,
-                                    target: T
-                                })
-                        }
-                    return i
-                        ? v.sort(i)
-                        : v
-                }
-                var n = 0,
-                    e = null,
-                    r = null,
-                    i = null;
-                return t.padAngle = function (e) {
-                    return arguments.length
-                        ? (n = Im(0, e), t)
-                        : n
-                },
-                t.sortGroups = function (n) {
-                    return arguments.length
-                        ? (e = n, t)
-                        : e
-                },
-                t.sortSubgroups = function (n) {
-                    return arguments.length
-                        ? (r = n, t)
-                        : r
-                },
-                t.sortChords = function (n) {
-                    return arguments.length
-                        ? (null == n
-                            ? i = null
-                            : (i = ma(n))._ = n, t)
-                        : i && i._
-                },
-                t
-            },
-            Bm = Array.prototype.slice,
-            jm = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            Hm = function () {
-                function t() {
-                    var t,
-                        a = Bm.call(arguments),
-                        c = n.apply(this, a),
-                        s = e.apply(this, a),
-                        f =+ r.apply(this, (a[0] = c, a)),
-                        l = i.apply(this, a) - Om,
-                        h = o.apply(this, a) - Om,
-                        p = f * Rm(l),
-                        d = f * Um(l),
-                        v =+ r.apply(this, (a[0] = s, a)),
-                        _ = i.apply(this, a) - Om,
-                        y = o.apply(this, a) - Om;
-                    if (u || (u = t = L()), u.moveTo(p, d), u.arc(0, 0, f, l, h), l === _ && h === y || (u.quadraticCurveTo(0, 0, v * Rm(_), v * Um(_)), u.arc(0, 0, v, _, y)), u.quadraticCurveTo(0, 0, p, d), u.closePath(), t) 
-                        return u = null,
-                        t + "" || null
-                }
-                var n = xa,
-                    e = ba,
-                    r = wa,
-                    i = Ma,
-                    o = Ta,
-                    u = null;
-                return t.radius = function (n) {
-                    return arguments.length
-                        ? (r = "function" == typeof n
-                            ? n
-                            : jm(+ n), t)
-                        : r
-                },
-                t.startAngle = function (n) {
-                    return arguments.length
-                        ? (i = "function" == typeof n
-                            ? n
-                            : jm(+ n), t)
-                        : i
-                },
-                t.endAngle = function (n) {
-                    return arguments.length
-                        ? (o = "function" == typeof n
-                            ? n
-                            : jm(+ n), t)
-                        : o
-                },
-                t.source = function (e) {
-                    return arguments.length
-                        ? (n = e, t)
-                        : n
-                },
-                t.target = function (n) {
-                    return arguments.length
-                        ? (e = n, t)
-                        : e
-                },
-                t.context = function (n) {
-                    return arguments.length
-                        ? (u = null == n
-                            ? null
-                            : n, t)
-                        : u
-                },
-                t
-            },
-            Xm = function () {
-                return new Na
-            };
-        Na.prototype = {
-            constructor: Na,
-            reset: function () {
-                this.s = this.t = 0
-            },
-            add: function (t) {
-                ka(Mx, t, this.t),
-                ka(this, Mx.s, this.s),
-                this.s
-                    ? this.t += Mx.t
-                    : this.s = Mx.t
-            },
-            valueOf: function () {
-                return this.s
-            }
-        };
-        var Vm,
-            Wm,
-            $m,
-            Zm,
-            Gm,
-            Jm,
-            Qm,
-            Km,
-            tx,
-            nx,
-            ex,
-            rx,
-            ix,
-            ox,
-            ux,
-            ax,
-            cx,
-            sx,
-            fx,
-            lx,
-            hx,
-            px,
-            dx,
-            vx,
-            _x,
-            yx,
-            gx,
-            mx,
-            xx,
-            bx,
-            wx,
-            Mx = new Na,
-            Tx = 1e-6,
-            Nx = 1e-12,
-            kx = Math.PI,
-            Sx = kx / 2,
-            Ax = kx / 4,
-            Ex = 2 * kx,
-            Cx = 180 / kx,
-            zx = kx / 180,
-            Px = Math.abs,
-            qx = Math.atan,
-            Lx = Math.atan2,
-            Rx = Math.cos,
-            Ux = Math.ceil,
-            Dx = Math.exp,
-            Ox = Math.log,
-            Fx = Math.pow,
-            Ix = Math.sin,
-            Yx = Math.sign || function (t) {
-                return t > 0
-                    ? 1
-                    : t < 0
-                        ? -1
-                        : 0;
-            },
-            Bx = Math.sqrt,
-            jx = Math.tan,
-            Hx = {
-                Feature: function (t, n) {
-                    za(t.geometry, n)
-                },
-                FeatureCollection: function (t, n) {
-                    for (var e = t.features, r = -1, i = e.length; ++r < i;) 
-                        za(e[r].geometry, n)
-                }
-            },
-            Xx = {
-                Sphere: function (t, n) {
-                    n.sphere()
-                },
-                Point: function (t, n) {
-                    t = t.coordinates,
-                    n.point(t[0], t[1], t[2])
-                },
-                MultiPoint: function (t, n) {
-                    for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) 
-                        t = e[r],
-                        n.point(t[0], t[1], t[2])
-                },
-                LineString: function (t, n) {
-                    Pa(t.coordinates, n, 0)
-                },
-                MultiLineString: function (t, n) {
-                    for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) 
-                        Pa(e[r], n, 0)
-                },
-                Polygon: function (t, n) {
-                    qa(t.coordinates, n)
-                },
-                MultiPolygon: function (t, n) {
-                    for (var e = t.coordinates, r = -1, i = e.length; ++r < i;) 
-                        qa(e[r], n)
-                },
-                GeometryCollection: function (t, n) {
-                    for (var e = t.geometries, r = -1, i = e.length; ++r < i;) 
-                        za(e[r], n)
-                }
-            },
-            Vx = function (t, n) {
-                t && Hx.hasOwnProperty(t.type)
-                    ? Hx[t.type](t, n)
-                    : za(t, n)
-            },
-            Wx = Xm(),
-            $x = Xm(),
-            Zx = {
-                point: Ca,
-                lineStart: Ca,
-                lineEnd: Ca,
-                polygonStart: function () {
-                    Wx.reset(),
-                    Zx.lineStart = La,
-                    Zx.lineEnd = Ra
-                },
-                polygonEnd: function () {
-                    var t =+ Wx;
-                    $x.add(t < 0
-                        ? Ex + t
-                        : t),
-                    this.lineStart = this.lineEnd = this.point = Ca
-                },
-                sphere: function () {
-                    $x.add(Ex)
-                }
-            },
-            Gx = function (t) {
-                return $x.reset(),
-                Vx(t, Zx),
-                2 * $x
-            },
-            Jx = Xm(),
-            Qx = {
-                point: Xa,
-                lineStart: Wa,
-                lineEnd: $a,
-                polygonStart: function () {
-                    Qx.point = Za,
-                    Qx.lineStart = Ga,
-                    Qx.lineEnd = Ja,
-                    Jx.reset(),
-                    Zx.polygonStart()
-                },
-                polygonEnd: function () {
-                    Zx.polygonEnd(),
-                    Qx.point = Xa,
-                    Qx.lineStart = Wa,
-                    Qx.lineEnd = $a,
-                    Wx < 0
-                        ? (Jm = -(Km = 180), Qm = -(tx = 90))
-                        : Jx > Tx
-                            ? tx = 90
-                            : Jx < -Tx && (Qm = -90),
-                    ux[0] = Jm,
-                    ux[1] = Km
-                }
-            },
-            Kx = function (t) {
-                var n,
-                    e,
-                    r,
-                    i,
-                    o,
-                    u,
-                    a;
-                if (tx = Km = -(Jm = Qm = 1 / 0), ox = [], Vx(t, Qx), e = ox.length) {
-                    for (ox.sort(Ka), n = 1, r = ox[0], o = [r]; n < e; ++n) 
-                        i = ox[n],
-                        tc(r, i[0]) || tc(r, i[1])
-                            ? (Qa(r[0], i[1]) > Qa(r[0], r[1]) && (r[1] = i[1]), Qa(i[0], r[1]) > Qa(r[0], r[1]) && (r[0] = i[0]))
-                            : o.push(r = i);
-                    for (u = -(1 / 0), e = o.length - 1, n = 0, r = o[e]; n <= e; r = i, ++n) 
-                        i = o[n],
-                        (a = Qa(r[1], i[0])) > u && (u = a, Jm = i[0], Km = r[1])
-                }
-                return ox = ux = null,
-                Jm === 1 / 0 || Qm === 1 / 0
-                    ? [
-                        [
-                            NaN, NaN
-                        ],
-                        [NaN, NaN]
-                    ]
-                    : [
-                        [
-                            Jm, Qm
-                        ],
-                        [Km, tx]
-                    ]
-            },
-            tb = {
-                sphere: Ca,
-                point: nc,
-                lineStart: rc,
-                lineEnd: uc,
-                polygonStart: function () {
-                    tb.lineStart = ac,
-                    tb.lineEnd = cc
-                },
-                polygonEnd: function () {
-                    tb.lineStart = rc,
-                    tb.lineEnd = uc
-                }
-            },
-            nb = function (t) {
-                ax = cx = sx = fx = lx = hx = px = dx = vx = _x = yx = 0,
-                Vx(t, tb);
-                var n = vx,
-                    e = _x,
-                    r = yx,
-                    i = n * n + e * e + r * r;
-                return i < Nx && (n = hx, e = px, r = dx, cx < Tx && (n = sx, e = fx, r = lx), i = n * n + e * e + r * r, i < Nx)
-                    ? [NaN, NaN]
-                    : [
-                        Lx(e, n) * Cx,
-                        Aa(r / Bx(i)) * Cx
-                    ]
-            },
-            eb = function (t) {
-                return function () {
-                    return t
-                }
-            },
-            rb = function (t, n) {
-                function e(e, r) {
-                    return e = t(e, r),
-                    n(e[0], e[1])
-                }
-                return t.invert && n.invert && (e.invert = function (e, r) {
-                    return e = n.invert(e, r),
-                    e && t.invert(e[0], e[1])
-                }),
-                e
-            };
-        lc.invert = lc;
-        var ib,
-            ob,
-            ub,
-            ab,
-            cb,
-            sb,
-            fb,
-            lb,
-            hb,
-            pb,
-            db,
-            vb = function (t) {
-                function n(n) {
-                    return n = t(n[0] * zx, n[1] * zx),
-                    n[0] *= Cx,
-                    n[1] *= Cx,
-                    n
-                }
-                return t = hc(t[0] * zx, t[1] * zx, t.length > 2
-                    ? t[2] * zx
-                    : 0),
-                n.invert = function (n) {
-                    return n = t.invert(n[0] * zx, n[1] * zx),
-                    n[0] *= Cx,
-                    n[1] *= Cx,
-                    n
-                },
-                n
-            },
-            _b = function () {
-                function t(t, n) {
-                    e.push(t = r(t, n)),
-                    t[0] *= Cx,
-                    t[1] *= Cx
-                }
-                function n() {
-                    var t = i.apply(this, arguments),
-                        n = o.apply(this, arguments) * zx,
-                        c = u.apply(this, arguments) * zx;
-                    return e = [],
-                    r = hc(-t[0] * zx, -t[1] * zx, 0).invert,
-                    _c(a, n, c, 1),
-                    t = {
-                        type: "Polygon",
-                        coordinates: [e]
-                    },
-                    e = r = null,
-                    t
-                }
-                var e,
-                    r,
-                    i = eb([0, 0]),
-                    o = eb(90),
-                    u = eb(6),
-                    a = {
-                        point: t
-                    };
-                return n.center = function (t) {
-                    return arguments.length
-                        ? (i = "function" == typeof t
-                            ? t
-                            : eb([ + t[0], + t[1]
-                            ]), n)
-                        : i
-                },
-                n.radius = function (t) {
-                    return arguments.length
-                        ? (o = "function" == typeof t
-                            ? t
-                            : eb(+ t), n)
-                        : o
-                },
-                n.precision = function (t) {
-                    return arguments.length
-                        ? (u = "function" == typeof t
-                            ? t
-                            : eb(+ t), n)
-                        : u
-                },
-                n
-            },
-            yb = function () {
-                var t,
-                    n = [];
-                return {
-                    point: function (n, e) {
-                        t.push([n, e])
-                    },
-                    lineStart: function () {
-                        n.push(t = [])
-                    },
-                    lineEnd: Ca,
-                    rejoin: function () {
-                        n.length > 1 && n.push(n.pop().concat(n.shift()))
-                    },
-                    result: function () {
-                        var e = n;
-                        return n = [],
-                        t = null,
-                        e
-                    }
-                }
-            },
-            gb = function (t, n, e, r, i, o) {
-                var u,
-                    a = t[0],
-                    c = t[1],
-                    s = n[0],
-                    f = n[1],
-                    l = 0,
-                    h = 1,
-                    p = s - a,
-                    d = f - c;
-                if (u = e - a, p || !(u > 0)) {
-                    if (u /= p, p < 0) {
-                        if (u < l) 
-                            return;
-                        u < h && (h = u)
-                    } else if (p > 0) {
-                        if (u > h) 
-                            return;
-                        u > l && (l = u)
-                    }
-                    if (u = i - a, p || !(u < 0)) {
-                        if (u /= p, p < 0) {
-                            if (u > h) 
-                                return;
-                            u > l && (l = u)
-                        } else if (p > 0) {
-                            if (u < l) 
-                                return;
-                            u < h && (h = u)
-                        }
-                        if (u = r - c, d || !(u > 0)) {
-                            if (u /= d, d < 0) {
-                                if (u < l) 
-                                    return;
-                                u < h && (h = u)
-                            } else if (d > 0) {
-                                if (u > h) 
-                                    return;
-                                u > l && (l = u)
-                            }
-                            if (u = o - c, d || !(u < 0)) {
-                                if (u /= d, d < 0) {
-                                    if (u > h) 
-                                        return;
-                                    u > l && (l = u)
-                                } else if (d > 0) {
-                                    if (u < l) 
-                                        return;
-                                    u < h && (h = u)
-                                }
-                                return l > 0 && (t[0] = a + l * p, t[1] = c + l * d),
-                                h < 1 && (n[0] = a + h * p, n[1] = c + h * d),
-                                !0
-                            }
-                        }
-                    }
-                }
-            },
-            mb = function (t, n) {
-                return Px(t[0] - n[0]) < Tx && Px(t[1] - n[1]) < Tx
-            },
-            xb = function (t, n, e, r, i) {
-                var o,
-                    u,
-                    a = [],
-                    c = [];
-                if (t.forEach(function (t) {
-                    if (!((n = t.length - 1) <= 0)) {
-                        var n,
-                            e,
-                            r = t[0],
-                            u = t[n];
-                        if (mb(r, u)) {
-                            for (i.lineStart(), o = 0; o < n; ++o) 
-                                i.point((r = t[o])[0], r[1]);
-                            return void i.lineEnd()
-                        }
-                        a.push(e = new gc(r, t, null, !0)),
-                        c.push(e.o = new gc(r, null, e, !1)),
-                        a.push(e = new gc(u, t, null, !1)),
-                        c.push(e.o = new gc(u, null, e, !0))
-                    }
-                }), a.length) {
-                    for (c.sort(n), mc(a), mc(c), o = 0, u = c.length; o < u; ++o) 
-                        c[o].e = e = !e;
-                    for (var s, f, l = a[0];;) {
-                        for (var h = l, p = !0; h.v;) 
-                            if ((h = h.n) === l) 
-                                return;
-                    s = h.z,
-                        i.lineStart();
-                        do {
-                            if (h.v = h.o.v = !0, h.e) {
-                                if (p) 
-                                    for (o = 0, u = s.length; o < u; ++o) 
-                                        i.point((f = s[o])[0], f[1]);
-                            else 
-                                    r(h.x, h.n.x, 1, i);
-                                h = h.n
-                            } else {
-                                if (p) 
-                                    for (s = h.p.z, o = s.length - 1; o >= 0; --o) 
-                                        i.point((f = s[o])[0], f[1]);
-                            else 
-                                    r(h.x, h.p.x, -1, i);
-                                h = h.p
-                            }
-                            h = h.o,
-                            s = h.z,
-                            p = !p
-                        } while (!h.v);
-                        i.lineEnd()
-                    }
-                }
-            },
-            bb = 1e9,
-            wb = -bb,
-            Mb = function () {
-                var t,
-                    n,
-                    e,
-                    r = 0,
-                    i = 0,
-                    o = 960,
-                    u = 500;
-                return e = {
-                    stream: function (e) {
-                        return t && n === e
-                            ? t
-                            : t = xc(r, i, o, u)(n = e)
-                    },
-                    extent: function (a) {
-                        return arguments.length
-                            ? (r =+ a[0][0], i =+ a[0][1], o =+ a[1][0], u =+ a[1][1], t = n = null, e)
-                            : [
-                                [
-                                    r, i
-                                ],
-                                [o, u]
-                            ]
-                    }
-                }
-            },
-            Tb = Xm(),
-            Nb = {
-                sphere: Ca,
-                point: Ca,
-                lineStart: bc,
-                lineEnd: Ca,
-                polygonStart: Ca,
-                polygonEnd: Ca
-            },
-            kb = function (t) {
-                return Tb.reset(),
-                Vx(t, Nb), + Tb
-            },
-            Sb = [
-                null, null
-            ],
-            Ab = {
-                type: "LineString",
-                coordinates: Sb
-            },
-            Eb = function (t, n) {
-                return Sb[0] = t,
-                Sb[1] = n,
-                kb(Ab)
-            },
-            Cb = function (t, n) {
-                var e = t[0] * zx,
-                    r = t[1] * zx,
-                    i = n[0] * zx,
-                    o = n[1] * zx,
-                    u = Rx(r),
-                    a = Ix(r),
-                    c = Rx(o),
-                    s = Ix(o),
-                    f = u * Rx(e),
-                    l = u * Ix(e),
-                    h = c * Rx(i),
-                    p = c * Ix(i),
-                    d = 2 * Aa(Bx(Ea(o - r) + u * c * Ea(i - e))),
-                    v = Ix(d),
-                    _ = d
-                        ? function (t) {
-                            var n = Ix(t *= d) / v,
-                                e = Ix(d - t) / v,
-                                r = e * f + n * h,
-                                i = e * l + n * p,
-                                o = e * a + n * s;
-                            return [
-                                Lx(i, r) * Cx,
-                                Lx(o, Bx(r * r + i * i)) * Cx
-                            ]
-                        }
-                        : function () {
-                            return [
-                                e * Cx,
-                                r * Cx
-                            ]
-                        };
-                return _.distance = d,
-                _
-            },
-            zb = function (t) {
-                return t
-            },
-            Pb = Xm(),
-            qb = Xm(),
-            Lb = {
-                point: Ca,
-                lineStart: Ca,
-                lineEnd: Ca,
-                polygonStart: function () {
-                    Lb.lineStart = Ec,
-                    Lb.lineEnd = Pc
-                },
-                polygonEnd: function () {
-                    Lb.lineStart = Lb.lineEnd = Lb.point = Ca,
-                    Pb.add(Px(qb)),
-                    qb.reset()
-                },
-                result: function () {
-                    var t = Pb / 2;
-                    return Pb.reset(),
-                    t
-                }
-            },
-            Rb = 1 / 0,
-            Ub = Rb,
-            Db = -Rb,
-            Ob = Db,
-            Fb = {
-                point: qc,
-                lineStart: Ca,
-                lineEnd: Ca,
-                polygonStart: Ca,
-                polygonEnd: Ca,
-                result: function () {
-                    var t = [
-                        [
-                            Rb, Ub
-                        ],
-                        [Db, Ob]
-                    ];
-                    return Db = Ob = -(Ub = Rb = 1 / 0),
-                    t
-                }
-            },
-            Ib = 0,
-            Yb = 0,
-            Bb = 0,
-            jb = 0,
-            Hb = 0,
-            Xb = 0,
-            Vb = 0,
-            Wb = 0,
-            $b = 0,
-            Zb = {
-                point: Lc,
-                lineStart: Rc,
-                lineEnd: Oc,
-                polygonStart: function () {
-                    Zb.lineStart = Fc,
-                    Zb.lineEnd = Ic
-                },
-                polygonEnd: function () {
-                    Zb.point = Lc,
-                    Zb.lineStart = Rc,
-                    Zb.lineEnd = Oc
-                },
-                result: function () {
-                    var t = $b
-                        ? [
-                            Vb / $b,
-                            Wb / $b
-                        ]
-                        : Xb
-                            ? [
-                                jb / Xb,
-                                Hb / Xb
-                            ]
-                            : Bb
-                                ? [
-                                    Ib / Bb,
-                                    Yb / Bb
-                                ]
-                                : [NaN, NaN];
-                    return Ib = Yb = Bb = jb = Hb = Xb = Vb = Wb = $b = 0,
-                    t
-                }
-            };
-        jc.prototype = {
-            _radius: 4.5,
-            pointRadius: function (t) {
-                return this._radius = t,
-                this
-            },
-            polygonStart: function () {
-                this._line = 0
-            },
-            polygonEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._point = 0
-            },
-            lineEnd: function () {
-                0 === this._line && this
-                    ._context
-                    .closePath(),
-                this._point = NaN
-            },
-            point: function (t, n) {
-                switch (this._point) {
-                    case 0:
-                        this
-                            ._context
-                            .moveTo(t, n),
-                        this._point = 1;
-                        break;
-                    case 1:
-                        this
-                            ._context
-                            .lineTo(t, n);
-                        break;
-                    default:
-                        this
-                            ._context
-                            .moveTo(t + this._radius, n),
-                        this
-                            ._context
-                            .arc(t, n, this._radius, 0, Ex)
-                }
-            },
-            result: Ca
-        },
-        Hc.prototype = {
-            _circle: Xc(4.5),
-            pointRadius: function (t) {
-                return this._circle = Xc(t),
-                this
-            },
-            polygonStart: function () {
-                this._line = 0
-            },
-            polygonEnd: function () {
-                this._line = NaN
-            },
-            lineStart: function () {
-                this._point = 0
-            },
-            lineEnd: function () {
-                0 === this._line && this
-                    ._string
-                    .push("Z"),
-                this._point = NaN
-            },
-            point: function (t, n) {
-                switch (this._point) {
-                    case 0:
-                        this
-                            ._string
-                            .push("M", t, ",", n),
-                        this._point = 1;
-                        break;
-                    case 1:
-                        this
-                            ._string
-                            .push("L", t, ",", n);
-                        break;
-                    default:
-                        this
-                            ._string
-                            .push("M", t, ",", n, this._circle)
-                }
-            },
-            result: function () {
-                if (this._string.length) {
-                    var t = this
-                        ._string
-                        .join("");
-                    return this._string = [],
-                    t
-                }
-            }
-        };
-        var Gb = function (t, n) {
-                function e(t) {
-                    return t && ("function" == typeof o && i.pointRadius(+ o.apply(this, arguments)), Vx(t, r(i))),
-                    i.result()
-                }
-                var r,
-                    i,
-                    o = 4.5;
-                return e.area = function (t) {
-                    return Vx(t, r(Lb)),
-                    Lb.result()
-                },
-                e.bounds = function (t) {
-                    return Vx(t, r(Fb)),
-                    Fb.result()
-                },
-                e.centroid = function (t) {
-                    return Vx(t, r(Zb)),
-                    Zb.result()
-                },
-                e.projection = function (n) {
-                    return arguments.length
-                        ? (r = null == (t = n)
-                            ? zb
-                            : n.stream, e)
-                        : t
-                },
-                e.context = function (t) {
-                    return arguments.length
-                        ? (i = null == (n = t)
-                            ? new Hc
-                            : new jc(t), "function" != typeof o && i.pointRadius(o), e)
-                        : n
-                },
-                e.pointRadius = function (t) {
-                    return arguments.length
-                        ? (o = "function" == typeof t
-                            ? t
-                            : (i.pointRadius(+ t), + t), e)
-                        : o
-                },
-                e
-                    .projection(t)
-                    .context(n)
-            },
-            Jb = Xm(),
-            Qb = function (t, n) {
-                var e = n[0],
-                    r = n[1],
-                    i = [
-                        Ix(e), -Rx(e),
-                        0
-                    ],
-                    o = 0,
-                    u = 0;
-                Jb.reset();
-                for (var a = 0, c = t.length; a < c; ++a) 
-                    if (f = (s = t[a]).length) 
-                        for (var s, f, l = s[f - 1], h = l[0], p = l[1] / 2 + Ax, d = Ix(p), v = Rx(p), _ = 0; _ < f; ++_, h = g, d = x, v = b, l = y) {
-                            var y = s[_],
-                                g = y[0],
-                                m = y[1] / 2 + Ax,
-                                x = Ix(m),
-                                b = Rx(m),
-                                w = g - h,
-                                M = w >= 0
-                                    ? 1
-                                    : -1,
-                                T = M * w,
-                                N = T > kx,
-                                k = d * x;
-                            if (Jb.add(Lx(k * M * Ix(T), v * b + k * Rx(T))), o += N
-                                ? w + M * Ex
-                                : w, N ^ h >= e ^ g >= e) {
-                                var S = Ya(Fa(l), Fa(y));
-                                Ha(S);
-                                var A = Ya(i, S);
-                                Ha(A);
-                                var E = (N ^ w >= 0
-                                    ? -1
-                                    : 1) * Aa(A[2]);
-                                (r > E || r === E && (S[0] || S[1])) && (u += N ^ w >= 0
-                                    ? 1
-                                    : -1)
-                            }
-                        }
-                    return (o < -Tx || o < Tx && Jb < -Tx) ^ 1 & u
-            },
-            Kb = function (t, n, e, r) {
-                return function (i, o) {
-                    function u(n, e) {
-                        var r = i(n, e);
-                        t(n = r[0], e = r[1]) && o.point(n, e)
-                    }
-                    function a(t, n) {
-                        var e = i(t, n);
-                        _.point(e[0], e[1])
-                    }
-                    function c() {
-                        b.point = a,
-                        _.lineStart()
-                    }
-                    function s() {
-                        b.point = u,
-                        _.lineEnd()
-                    }
-                    function f(t, n) {
-                        v.push([t, n]);
-                        var e = i(t, n);
-                        m.point(e[0], e[1])
-                    }
-                    function l() {
-                        m.lineStart(),
-                        v = []
-                    }
-                    function h() {
-                        f(v[0][0], v[0][1]),
-                        m.lineEnd();
-                        var t,
-                            n,
-                            e,
-                            r,
-                            i = m.clean(),
-                            u = g.result(),
-                            a = u.length;
-                        if (v.pop(), p.push(v), v = null, a) 
-                            if (1 & i) {
-                                if (e = u[0], (n = e.length - 1) > 0) {
-                                    for (x || (o.polygonStart(), x = !0), o.lineStart(), t = 0; t < n; ++t) 
-                                        o.point((r = e[t])[0], r[1]);
-                                    o.lineEnd()
-                                }
-                            } else 
-                                a > 1 && 2 & i && u.push(u.pop().concat(u.shift())),
-                                d.push(u.filter(Vc))
-                    }
-                    var p,
-                        d,
-                        v,
-                        _ = n(o),
-                        y = i.invert(r[0], r[1]),
-                        g = yb(),
-                        m = n(g),
-                        x = !1,
-                        b = {
-                            point: u,
-                            lineStart: c,
-                            lineEnd: s,
-                            polygonStart: function () {
-                                b.point = f,
-                                b.lineStart = l,
-                                b.lineEnd = h,
-                                d = [],
-                                p = []
-                            },
-                            polygonEnd: function () {
-                                b.point = u,
-                                b.lineStart = c,
-                                b.lineEnd = s,
-                                d = Js(d);
-                                var t = Qb(p, y);
-                                d.length
-                                    ? (x || (o.polygonStart(), x = !0), xb(d, Wc, t, e, o))
-                                    : t && (x || (o.polygonStart(), x = !0), o.lineStart(), e(null, null, 1, o), o.lineEnd()),
-                                x && (o.polygonEnd(), x = !1),
-                                d = p = null
-                            },
-                            sphere: function () {
-                                o.polygonStart(),
-                                o.lineStart(),
-                                e(null, null, 1, o),
-                                o.lineEnd(),
-                                o.polygonEnd()
-                            }
-                        };
-                    return b
-                }
-            },
-            tw = Kb(function () {
-                return !0
-            }, $c, Gc, [-kx, -Sx
-            ]),
-            nw = function (t, n) {
-                function e(e, r, i, o) {
-                    _c(o, t, n, i, e, r)
-                }
-                function r(t, n) {
-                    return Rx(t) * Rx(n) > a
-                }
-                function i(t) {
-                    var n,
-                        e,
-                        i,
-                        a,
-                        f;
-                    return {
-                        lineStart: function () {
-                            a = i = !1,
-                            f = 1
-                        },
-                        point: function (l, h) {
-                            var p,
-                                d = [
-                                    l, h
-                                ],
-                                v = r(l, h),
-                                _ = c
-                                    ? v
-                                        ? 0
-                                        : u(l, h)
-                                    : v
-                                        ? u(l + (l < 0
-                                            ? kx
-                                            : -kx), h)
-                                        : 0;
-                            if (!n && (a = i = v) && t.lineStart(), v !== i && (p = o(n, d), (mb(n, p) || mb(d, p)) && (d[0] += Tx, d[1] += Tx, v = r(d[0], d[1]))), v !== i) 
-                                f = 0,
-                                v
-                                    ? (t.lineStart(), p = o(d, n), t.point(p[0], p[1]))
-                                    : (p = o(n, d), t.point(p[0], p[1]), t.lineEnd()),
-                                n = p;
-                            else if (s && n && c ^ v) {
-                                var y;
-                                _ & e || !(y = o(d, n, !0)) || (f = 0, c
-                                    ? (t.lineStart(), t.point(y[0][0], y[0][1]), t.point(y[1][0], y[1][1]), t.lineEnd())
-                                    : (t.point(y[1][0], y[1][1]), t.lineEnd(), t.lineStart(), t.point(y[0][0], y[0][1])))
-                            }
-                            !v || n && mb(n, d) || t.point(d[0], d[1]),
-                            n = d,
-                            i = v,
-                            e = _
-                        },
-                        lineEnd: function () {
-                            i && t.lineEnd(),
-                            n = null
-                        },
-                        clean: function () {
-                            return f | (a && i) << 1
-                        }
-                    }
-                }
-                function o(t, n, e) {
-                    var r = Fa(t),
-                        i = Fa(n),
-                        o = [
-                            1, 0, 0
-                        ],
-                        u = Ya(r, i),
-                        c = Ia(u, u),
-                        s = u[0],
-                        f = c - s * s;
-                    if (!f) 
-                        return !e && t;
-                    var l = a * c / f,
-                        h = -a * s / f,
-                        p = Ya(o, u),
-                        d = ja(o, l),
-                        v = ja(u, h);
-                    Ba(d, v);
-                    var _ = p,
-                        y = Ia(d, _),
-                        g = Ia(_, _),
-                        m = y * y - g * (Ia(d, d) - 1);
-                    if (!(m < 0)) {
-                        var x = Bx(m),
-                            b = ja(_, (-y - x) / g);
-                        if (Ba(b, d), b = Oa(b), !e) 
-                            return b;
-                        var w,
-                            M = t[0],
-                            T = n[0],
-                            N = t[1],
-                            k = n[1];
-                        T < M && (w = M, M = T, T = w);
-                        var S = T - M,
-                            A = Px(S - kx) < Tx,
-                            E = A || S < Tx;
-                        if (!A && k < N && (w = N, N = k, k = w), E
-                            ? A
-                                ? N + k > 0 ^ b[1] < (Px(b[0] - M) < Tx
-                                    ? N
-                                    : k)
-                                : N <= b[1] && b[1] <= k
-                            : S > kx ^ (M <= b[0] && b[0] <= T)) {
-                            var C = ja(_, (-y + x) / g);
-                            return Ba(C, d),
-                            [b, Oa(C)]
-                        }
-                    }
-                }
-                function u(n, e) {
-                    var r = c
-                            ? t
-                            : kx - t,
-                        i = 0;
-                    return n < -r
-                        ? i |= 1
-                        : n > r && (i |= 2),
-                    e < -r
-                        ? i |= 4
-                        : e > r && (i |= 8),
-                    i
-                }
-                var a = Rx(t),
-                    c = a > 0,
-                    s = Px(a) > Tx;
-                return Kb(r, i, e, c
-                    ? [
-                        0, -t
-                    ]
-                    : [-kx,
-                        t - kx
-                    ])
-            },
-            ew = function (t) {
-                return {stream: Jc(t)}
-            };
-        Qc.prototype = {
-            constructor: Qc,
-            point: function (t, n) {
-                this
-                    .stream
-                    .point(t, n)
-            },
-            sphere: function () {
-                this
-                    .stream
-                    .sphere()
-            },
-            lineStart: function () {
-                this
-                    .stream
-                    .lineStart()
-            },
-            lineEnd: function () {
-                this
-                    .stream
-                    .lineEnd()
-            },
-            polygonStart: function () {
-                this
-                    .stream
-                    .polygonStart()
-            },
-            polygonEnd: function () {
-                this
-                    .stream
-                    .polygonEnd()
-            }
-        };
-        var rw = 16,
-            iw = Rx(30 * zx),
-            ow = function (t, n) {
-                return + n
-                    ? es(t, n)
-                    : ns(t)
-            },
-            uw = Jc({
-                point: function (t, n) {
-                    this
-                        .stream
-                        .point(t * zx, n * zx)
-                }
-            }),
-            aw = function () {
-                return os(as)
-                    .scale(155.424)
-                    .center([0, 33.6442])
-            },
-            cw = function () {
-                return aw()
-                    .parallels([29.5, 45.5])
-                    .scale(1070)
-                    .translate([480, 250])
-                    .rotate([96, 0])
-                    .center([-.6, 38.7])
-            },
-            sw = function () {
-                function t(t) {
-                    var n = t[0],
-                        e = t[1];
-                    return a = null,
-                    i.point(n, e),
-                    a || (o.point(n, e), a) || (u.point(n, e), a)
-                }
-                function n() {
-                    return e = r = null,
-                    t
-                }
-                var e,
-                    r,
-                    i,
-                    o,
-                    u,
-                    a,
-                    c = cw(),
-                    s = aw()
-                        .rotate([154, 0])
-                        .center([-2, 58.5])
-                        .parallels([55, 65]),
-                    f = aw()
-                        .rotate([157, 0])
-                        .center([-3, 19.9])
-                        .parallels([8, 18]),
-                    l = {
-                        point: function (t, n) {
-                            a = [t, n]
-                        }
-                    };
-                return t.invert = function (t) {
-                    var n = c.scale(),
-                        e = c.translate(),
-                        r = (t[0] - e[0]) / n,
-                        i = (t[1] - e[1]) / n;
-                    return (i >= .12 && i < .234 && r >= -.425 && r < -.214
-                        ? s
-                        : i >= .166 && i < .234 && r >= -.214 && r < -.115
-                            ? f
-                            : c).invert(t)
-                },
-                t.stream = function (t) {
-                    return e && r === t
-                        ? e
-                        : e = cs([
-                            c.stream(r = t),
-                            s.stream(t),
-                            f.stream(t)
-                        ])
-                },
-                t.precision = function (t) {
-                    return arguments.length
-                        ? (c.precision(t), s.precision(t), f.precision(t), n())
-                        : c.precision()
-                },
-                t.scale = function (n) {
-                    return arguments.length
-                        ? (c.scale(n), s.scale(.35 * n), f.scale(n), t.translate(c.translate()))
-                        : c.scale()
-                },
-                t.translate = function (t) {
-                    if (!arguments.length) 
-                        return c.translate();
-                    var e = c.scale(),
-                        r =+ t[0],
-                        a =+ t[1];
-                    return i = c
-                        .translate(t)
-                        .clipExtent([
-                            [
-                                r - .455 * e,
-                                a - .238 * e
-                            ],
-                            [
-                                r + .455 * e,
-                                a + .238 * e
-                            ]
-                        ])
-                        .stream(l),
-                    o = s
-                        .translate([
-                        r - .307 * e,
-                        a + .201 * e
-                    ])
-                        .clipExtent([
-                            [
-                                r - .425 * e + Tx,
-                                a + .12 * e + Tx
-                            ],
-                            [
-                                r - .214 * e - Tx,
-                                a + .234 * e - Tx
-                            ]
-                        ])
-                        .stream(l),
-                    u = f
-                        .translate([
-                        r - .205 * e,
-                        a + .212 * e
-                    ])
-                        .clipExtent([
-                            [
-                                r - .214 * e + Tx,
-                                a + .166 * e + Tx
-                            ],
-                            [
-                                r - .115 * e - Tx,
-                                a + .234 * e - Tx
-                            ]
-                        ])
-                        .stream(l),
-                    n()
-                },
-                t.fitExtent = function (n, e) {
-                    return Kc(t, n, e)
-                },
-                t.fitSize = function (n, e) {
-                    return ts(t, n, e)
-                },
-                t.scale(1070)
-            },
-            fw = ss(function (t) {
-                return Bx(2 / (1 + t))
-            });
-        fw.invert = fs(function (t) {
-            return 2 * Aa(t / 2)
-        });
-        var lw = function () {
-                return rs(fw)
-                    .scale(124.75)
-                    .clipAngle(179.999)
-            },
-            hw = ss(function (t) {
-                return (t = Sa(t)) && t / Ix(t)
-            });
-        hw.invert = fs(function (t) {
-            return t
-        });
-        var pw = function () {
-            return rs(hw)
-                .scale(79.4188)
-                .clipAngle(179.999)
-        };
-        ls.invert = function (t, n) {
-            return [
-                t, 2 * qx(Dx(n)) - Sx
-            ]
-        };
-        var dw = function () {
-                return hs(ls).scale(961 / Ex)
-            },
-            vw = function () {
-                return os(ds)
-                    .scale(109.5)
-                    .parallels([30, 30])
-            };
-        vs.invert = vs;
-        var _w = function () {
-                return rs(vs).scale(152.63)
-            },
-            yw = function () {
-                return os(_s)
-                    .scale(131.154)
-                    .center([0, 13.9389])
-            };
-        ys.invert = fs(qx);
-        var gw = function () {
-                return rs(ys)
-                    .scale(144.049)
-                    .clipAngle(60)
-            },
-            mw = function () {
-                function t() {
-                    return i = o = null,
-                    u
-                }
-                var n,
-                    e,
-                    r,
-                    i,
-                    o,
-                    u,
-                    a = 1,
-                    c = 0,
-                    s = 0,
-                    f = zb,
-                    l = null,
-                    h = zb;
-                return u = {
-                    stream: function (t) {
-                        return i && o === t
-                            ? i
-                            : i = f(h(o = t))
-                    },
-                    clipExtent: function (i) {
-                        return arguments.length
-                            ? (h = null == i
-                                ? (l = n = e = r = null, zb)
-                                : xc(l =+ i[0][0], n =+ i[0][1], e =+ i[1][0], r =+ i[1][1]), t())
-                            : null == l
-                                ? null
-                                : [
-                                    [
-                                        l, n
-                                    ],
-                                    [e, r]
-                                ]
-                    },
-                    scale: function (n) {
-                        return arguments.length
-                            ? (f = gs(a =+ n, c, s), t())
-                            : a
-                    },
-                    translate: function (n) {
-                        return arguments.length
-                            ? (f = gs(a, c =+ n[0], s =+ n[1]), t())
-                            : [c, s]
-                    },
-                    fitExtent: function (t, n) {
-                        return Kc(u, t, n)
-                    },
-                    fitSize: function (t, n) {
-                        return ts(u, t, n)
-                    }
-                }
-            };
-        ms.invert = fs(Aa);
-        var xw = function () {
-            return rs(ms)
-                .scale(249.5)
-                .clipAngle(90 + Tx)
-        };
-        xs.invert = fs(function (t) {
-            return 2 * qx(t)
-        });
-        var bw = function () {
-            return rs(xs)
-                .scale(250)
-                .clipAngle(142)
-        };
-        bs.invert = function (t, n) {
-            return [-n,
-                2 * qx(Dx(t)) - Sx
-            ]
-        };
-        var ww = function () {
-            var t = hs(bs),
-                n = t.center,
-                e = t.rotate;
-            return t.center = function (t) {
-                return arguments.length
-                    ? n([-t[1],
-                        t[0]
-                    ])
-                    : (t = n(), [
-                        t[1], -t[0]
-                    ])
-            },
-            t.rotate = function (t) {
-                return arguments.length
-                    ? e([
-                        t[0], t[1], t.length > 2
-                            ? t[2] + 90
-                            : 90
-                    ])
-                    : (t = e(), [
-                        t[0], t[1], t[2] - 90
-                    ])
-            },
-            e([0, 0, 90]).scale(159.155)
-        };
-        t.version = ws,
-        t.bisect = ks,
-        t.bisectRight = ks,
-        t.bisectLeft = Ss,
-        t.ascending = Ms,
-        t.bisector = Ts,
-        t.descending = As,
-        t.deviation = zs,
-        t.extent = Ps,
-        t.histogram = Hs,
-        t.thresholdFreedmanDiaconis = Vs,
-        t.thresholdScott = Ws,
-        t.thresholdSturges = js,
-        t.max = $s,
-        t.mean = Zs,
-        t.median = Gs,
-        t.merge = Js,
-        t.min = Qs,
-        t.pairs = Ks,
-        t.permute = tf,
-        t.quantile = Xs,
-        t.range = Os,
-        t.scan = nf,
-        t.shuffle = ef,
-        t.sum = rf,
-        t.ticks = Bs,
-        t.tickStep = e,
-        t.transpose = of,
-        t.variance = Cs,
-        t.zip = uf,
-        t.entries = hf,
-        t.keys = ff,
-        t.values = lf,
-        t.map = o,
-        t.set = l,
-        t.nest = cf,
-        t.randomUniform = pf,
-        t.randomNormal = df,
-        t.randomLogNormal = vf,
-        t.randomBates = yf,
-        t.randomIrwinHall = _f,
-        t.randomExponential = gf,
-        t.easeLinear = h,
-        t.easeQuad = v,
-        t.easeQuadIn = p,
-        t.easeQuadOut = d,
-        t.easeQuadInOut = v,
-        t.easeCubic = g,
-        t.easeCubicIn = _,
-        t.easeCubicOut = y,
-        t.easeCubicInOut = g,
-        t.easePoly = wf,
-        t.easePolyIn = xf,
-        t.easePolyOut = bf,
-        t.easePolyInOut = wf,
-        t.easeSin = b,
-        t.easeSinIn = m,
-        t.easeSinOut = x,
-        t.easeSinInOut = b,
-        t.easeExp = T,
-        t.easeExpIn = w,
-        t.easeExpOut = M,
-        t.easeExpInOut = T,
-        t.easeCircle = S,
-        t.easeCircleIn = N,
-        t.easeCircleOut = k,
-        t.easeCircleInOut = S,
-        t.easeBounce = E,
-        t.easeBounceIn = A,
-        t.easeBounceOut = E,
-        t.easeBounceInOut = C,
-        t.easeBack = Of,
-        t.easeBackIn = Uf,
-        t.easeBackOut = Df,
-        t.easeBackInOut = Of,
-        t.easeElastic = jf,
-        t.easeElasticIn = Bf,
-        t.easeElasticOut = jf,
-        t.easeElasticInOut = Hf,
-        t.polygonArea = Xf,
-        t.polygonCentroid = Vf,
-        t.polygonHull = $f,
-        t.polygonContains = Zf,
-        t.polygonLength = Gf,
-        t.path = L,
-        t.quadtree = I,
-        t.queue = Z,
-        t.arc = wl,
-        t.area = Nl,
-        t.line = Tl,
-        t.pie = Al,
-        t.radialArea = zl,
-        t.radialLine = Cl,
-        t.symbol = Jl,
-        t.symbols = Gl,
-        t.symbolCircle = Pl,
-        t.symbolCross = ql,
-        t.symbolDiamond = Ul,
-        t.symbolSquare = Bl,
-        t.symbolStar = Yl,
-        t.symbolTriangle = Hl,
-        t.symbolWye = Zl,
-        t.curveBasisClosed = th,
-        t.curveBasisOpen = nh,
-        t.curveBasis = Kl,
-        t.curveBundle = eh,
-        t.curveCardinalClosed = ih,
-        t.curveCardinalOpen = oh,
-        t.curveCardinal = rh,
-        t.curveCatmullRomClosed = ah,
-        t.curveCatmullRomOpen = ch,
-        t.curveCatmullRom = uh,
-        t.curveLinearClosed = sh,
-        t.curveLinear = Ml,
-        t.curveMonotoneX = zt,
-        t.curveMonotoneY = Pt,
-        t.curveNatural = fh,
-        t.curveStep = lh,
-        t.curveStepAfter = Dt,
-        t.curveStepBefore = Ut,
-        t.stack = vh,
-        t.stackOffsetExpand = _h,
-        t.stackOffsetNone = ph,
-        t.stackOffsetSilhouette = yh,
-        t.stackOffsetWiggle = gh,
-        t.stackOrderAscending = mh,
-        t.stackOrderDescending = xh,
-        t.stackOrderInsideOut = bh,
-        t.stackOrderNone = dh,
-        t.stackOrderReverse = wh,
-        t.color = Bt,
-        t.rgb = Vt,
-        t.hsl = Gt,
-        t.lab = tn,
-        t.hcl = cn,
-        t.cubehelix = ln,
-        t.interpolate = _p,
-        t.interpolateArray = sp,
-        t.interpolateDate = fp,
-        t.interpolateNumber = lp,
-        t.interpolateObject = hp,
-        t.interpolateRound = yp,
-        t.interpolateString = vp,
-        t.interpolateTransformCss = bp,
-        t.interpolateTransformSvg = wp,
-        t.interpolateZoom = Sp,
-        t.interpolateRgb = up,
-        t.interpolateRgbBasis = ap,
-        t.interpolateRgbBasisClosed = cp,
-        t.interpolateHsl = Ap,
-        t.interpolateHslLong = Ep,
-        t.interpolateLab = En,
-        t.interpolateHcl = Cp,
-        t.interpolateHclLong = zp,
-        t.interpolateCubehelix = Pp,
-        t.interpolateCubehelixLong = qp,
-        t.interpolateBasis = rp,
-        t.interpolateBasisClosed = ip,
-        t.quantize = Lp,
-        t.dispatch = Pn,
-        t.dsvFormat = Op,
-        t.csvParse = Ip,
-        t.csvParseRows = Yp,
-        t.csvFormat = Bp,
-        t.csvFormatRows = jp,
-        t.tsvParse = Xp,
-        t.tsvParseRows = Vp,
-        t.tsvFormat = Wp,
-        t.tsvFormatRows = $p,
-        t.request = Zp,
-        t.html = Jp,
-        t.json = Qp,
-        t.text = Kp,
-        t.xml = td,
-        t.csv = ed,
-        t.tsv = rd,
-        t.now = jn,
-        t.timer = Vn,
-        t.timerFlush = Wn,
-        t.timeout = pd,
-        t.interval = dd,
-        t.timeInterval = Qn,
-        t.timeMillisecond = yd,
-        t.timeMilliseconds = gd,
-        t.timeSecond = Td,
-        t.timeSeconds = Nd,
-        t.timeMinute = kd,
-        t.timeMinutes = Sd,
-        t.timeHour = Ad,
-        t.timeHours = Ed,
-        t.timeDay = Cd,
-        t.timeDays = zd,
-        t.timeWeek = Pd,
-        t.timeWeeks = Fd,
-        t.timeSunday = Pd,
-        t.timeSundays = Fd,
-        t.timeMonday = qd,
-        t.timeMondays = Id,
-        t.timeTuesday = Ld,
-        t.timeTuesdays = Yd;
-        t.timeWednesday = Rd;
-        t.timeWednesdays = Bd,
-        t.timeThursday = Ud,
-        t.timeThursdays = jd,
-        t.timeFriday = Dd,
-        t.timeFridays = Hd,
-        t.timeSaturday = Od,
-        t.timeSaturdays = Xd,
-        t.timeMonth = Vd,
-        t.timeMonths = Wd,
-        t.timeYear = $d,
-        t.timeYears = Zd,
-        t.utcMillisecond = yd,
-        t.utcMilliseconds = gd,
-        t.utcSecond = Td,
-        t.utcSeconds = Nd,
-        t.utcMinute = Gd,
-        t.utcMinutes = Jd,
-        t.utcHour = Qd,
-        t.utcHours = Kd,
-        t.utcDay = tv,
-        t.utcDays = nv,
-        t.utcWeek = ev,
-        t.utcWeeks = sv,
-        t.utcSunday = ev,
-        t.utcSundays = sv,
-        t.utcMonday = rv,
-        t.utcMondays = fv,
-        t.utcTuesday = iv,
-        t.utcTuesdays = lv,
-        t.utcWednesday = ov,
-        t.utcWednesdays = hv,
-        t.utcThursday = uv,
-        t.utcThursdays = pv,
-        t.utcFriday = av,
-        t.utcFridays = dv,
-        t.utcSaturday = cv,
-        t.utcSaturdays = vv,
-        t.utcMonth = _v,
-        t.utcMonths = yv,
-        t.utcYear = gv,
-        t.utcYears = xv,
-        t.formatLocale = Pv,
-        t.formatDefaultLocale = re,
-        t.formatSpecifier = Ev,
-        t.precisionFixed = Lv,
-        t.precisionPrefix = Rv,
-        t.precisionRound = Uv,
-        t.isoFormat = Bv,
-        t.isoParse = jv,
-        t.timeFormatLocale = ae,
-        t.timeFormatDefaultLocale = nr,
-        t.scaleBand = or,
-        t.scalePoint = ar,
-        t.scaleIdentity = yr,
-        t.scaleLinear = _r,
-        t.scaleLog = Tr,
-        t.scaleOrdinal = ir,
-        t.scaleImplicit = Wv,
-        t.scalePow = kr,
-        t.scaleSqrt = Sr,
-        t.scaleQuantile = Ar,
-        t.scaleQuantize = Er,
-        t.scaleThreshold = Cr,
-        t.scaleTime = u_,
-        t.scaleUtc = a_,
-        t.schemeCategory10 = s_,
-        t.schemeCategory20b = f_,
-        t.schemeCategory20c = l_,
-        t.schemeCategory20 = h_,
-        t.scaleSequential = Rr,
-        t.interpolateCubehelixDefault = p_,
-        t.interpolateRainbow = y_,
-        t.interpolateWarm = d_,
-        t.interpolateCool = v_,
-        t.interpolateViridis = g_,
-        t.interpolateMagma = m_,
-        t.interpolateInferno = x_,
-        t.interpolatePlasma = b_,
-        t.creator = N_,
-        t.customEvent = Xr,
-        t.local = Or,
-        t.matcher = C_,
-        t.mouse = U_,
-        t.namespace = T_,
-        t.namespaces = M_,
-        t.select = gy,
-        t.selectAll = my,
-        t.selection = Pi,
-        t.selector = D_,
-        t.selectorAll = F_,
-        t.touch = xy,
-        t.touches = by,
-        t.window = iy,
-        t.active = ig,
-        t.interrupt = Py,
-        t.transition = fo,
-        t.axisTop = mo,
-        t.axisRight = xo,
-        t.axisBottom = bo,
-        t.axisLeft = wo,
-        t.cluster = hg,
-        t.hierarchy = zo,
-        t.pack = Sg,
-        t.packSiblings = Ng,
-        t.packEnclose = Tg,
-        t.partition = Cg,
-        t.stratify = Lg,
-        t.tree = Rg,
-        t.treemap = Fg,
-        t.treemapBinary = Ig,
-        t.treemapDice = Eg,
-        t.treemapSlice = Ug,
-        t.treemapSliceDice = Yg,
-        t.treemapSquarify = Og,
-        t.treemapResquarify = Bg,
-        t.forceCenter = jg,
-        t.forceCollide = Vg,
-        t.forceLink = Wg,
-        t.forceManyBody = Jg,
-        t.forceSimulation = Gg,
-        t.forceX = Qg,
-        t.forceY = Kg,
-        t.drag = rm,
-        t.dragDisable = nm,
-        t.dragEnable = mu,
-        t.voronoi = dm,
-        t.zoom = gm,
-        t.zoomIdentity = _m,
-        t.zoomTransform = ia,
-        t.brush = Lm,
-        t.brushX = _a,
-        t.brushY = ya,
-        t.brushSelection = va,
-        t.chord = Ym,
-        t.ribbon = Hm,
-        t.geoAlbers = cw,
-        t.geoAlbersUsa = sw,
-        t.geoArea = Gx,
-        t.geoAzimuthalEqualArea = lw,
-        t.geoAzimuthalEqualAreaRaw = fw,
-        t.geoAzimuthalEquidistant = pw,
-        t.geoAzimuthalEquidistantRaw = hw,
-        t.geoBounds = Kx,
-        t.geoCentroid = nb,
-        t.geoCircle = _b,
-        t.geoClipExtent = Mb,
-        t.geoConicConformal = vw,
-        t.geoConicConformalRaw = ds,
-        t.geoConicEqualArea = aw,
-        t.geoConicEqualAreaRaw = as,
-        t.geoConicEquidistant = yw,
-        t.geoConicEquidistantRaw = _s,
-        t.geoDistance = Eb,
-        t.geoEquirectangular = _w,
-        t.geoEquirectangularRaw = vs,
-        t.geoGnomonic = gw,
-        t.geoGnomonicRaw = ys,
-        t.geoGraticule = Sc,
-        t.geoGraticule10 = Ac,
-        t.geoIdentity = mw,
-        t.geoInterpolate = Cb,
-        t.geoLength = kb,
-        t.geoMercator = dw,
-        t.geoMercatorRaw = ls,
-        t.geoOrthographic = xw,
-        t.geoOrthographicRaw = ms,
-        t.geoPath = Gb,
-        t.geoProjection = rs,
-        t.geoProjectionMutator = is,
-        t.geoRotation = vb,
-        t.geoStereographic = bw,
-        t.geoStereographicRaw = xs,
-        t.geoStream = Vx,
-        t.geoTransform = ew,
-        t.geoTransverseMercator = ww,
-        t.geoTransverseMercatorRaw = bs,
-        Object.defineProperty(t, "__esModule", {
-            value: !0
-        })
-    });
\ No newline at end of file
diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js
deleted file mode 100644
index ac35a19..0000000
--- a/assets/js/jquery.min.js
+++ /dev/null
@@ -1,5315 +0,0 @@
-/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
-!function (a, b) {
-    "use strict";
-    "object" == typeof module && "object" == typeof module.exports
-        ? module.exports = a.document
-            ? b(a, !0)
-            : function (a) {
-                if (!a.document) 
-                    throw new Error("jQuery requires a window with a document");
-                return b(a)
-            }
-        : b(a)
-}("undefined" != typeof window
-    ? window
-    : this, function (a, b) {
-    "use strict";
-    var c = [],
-        d = a.document,
-        e = Object.getPrototypeOf,
-        f = c.slice,
-        g = c.concat,
-        h = c.push,
-        i = c.indexOf,
-        j = {},
-        k = j.toString,
-        l = j.hasOwnProperty,
-        m = l.toString,
-        n = m.call(Object),
-        o = {};
-    function p(a, b) {
-        b = b || d;
-        var c = b.createElement("script");
-        c.text = a,
-        b
-            .head
-            .appendChild(c)
-            .parentNode
-            .removeChild(c)
-    }
-    var q = "3.1.1",
-        r = function (a, b) {
-            return new r
-                .fn
-                .init(a, b)
-        },
-        s = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-        t = /^-ms-/,
-        u = /-([a-z])/g,
-        v = function (a, b) {
-            return b.toUpperCase()
-        };
-    r.fn = r.prototype = {
-        jquery: q,
-        constructor: r,
-        length: 0,
-        toArray: function () {
-            return f.call(this)
-        },
-        get: function (a) {
-            return null == a
-                ? f.call(this)
-                : a < 0
-                    ? this[a + this.length]
-                    : this[a]
-        },
-        pushStack: function (a) {
-            var b = r.merge(this.constructor(), a);
-            return b.prevObject = this,
-            b
-        },
-        each: function (a) {
-            return r.each(this, a)
-        },
-        map: function (a) {
-            return this.pushStack(r.map(this, function (b, c) {
-                return a.call(b, c, b)
-            }))
-        },
-        slice: function () {
-            return this.pushStack(f.apply(this, arguments))
-        },
-        first: function () {
-            return this.eq(0)
-        },
-        last: function () {
-            return this.eq(-1)
-        },
-        eq: function (a) {
-            var b = this.length,
-                c =+ a + (a < 0
-                    ? b
-                    : 0);
-            return this.pushStack(c >= 0 && c < b
-                ? [this[c]]
-                : [])
-        },
-        end: function () {
-            return this.prevObject || this.constructor()
-        },
-        push: h,
-        sort: c.sort,
-        splice: c.splice
-    },
-    r.extend = r.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 || r.isFunction(g) || (g = {}), h === i && (g = this, h--); h < i; h++) 
-            if (null != (a = arguments[h])) 
-                for (b in a) 
-                    c = g[b],
-                    d = a[b],
-                    g !== d && (j && d && (r.isPlainObject(d) || (e = r.isArray(d)))
-                        ? (e
-                            ? (e = !1, f = c && r.isArray(c)
-                                ? c
-                                : [])
-                            : f = c && r.isPlainObject(c)
-                                ? c
-                                : {}, g[b] = r.extend(j, f, d))
-                        : void 0 !== d && (g[b] = d));
-        return g
-    },
-    r.extend({
-        expando: "jQuery" + (q + Math.random()).replace(/\D/g, ""),
-        isReady: !0,
-        error: function (a) {
-            throw new Error(a)
-        },
-        noop: function () {},
-        isFunction: function (a) {
-            return "function" === r.type(a)
-        },
-        isArray: Array.isArray,
-        isWindow: function (a) {
-            return null != a && a === a.window
-        },
-        isNumeric: function (a) {
-            var b = r.type(a);
-            return ("number" === b || "string" === b) && !isNaN(a - parseFloat(a))
-        },
-        isPlainObject: function (a) {
-            var b,
-                c;
-            return !(!a || "[object Object]" !== k.call(a)) && (!(b = e(a)) || (c = l.call(b, "constructor") && b.constructor, "function" == typeof c && m.call(c) === n))
-        },
-        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
-                    ? j[k.call(a)] || "object"
-                    : typeof a
-        },
-        globalEval: function (a) {
-            p(a)
-        },
-        camelCase: function (a) {
-            return a
-                .replace(t, "ms-")
-                .replace(u, v)
-        },
-        nodeName: function (a, b) {
-            return a.nodeName && a
-                .nodeName
-                .toLowerCase() === b.toLowerCase()
-        },
-        each: function (a, b) {
-            var c,
-                d = 0;
-            if (w(a)) {
-                for (c = a.length; d < c; d++) 
-                    if (b.call(a[d], d, a[d]) === !1) 
-                        break
-                }
-            else 
-                for (d in a) 
-                    if (b.call(a[d], d, a[d]) === !1) 
-                        break;
-        return a
-        },
-        trim: function (a) {
-            return null == a
-                ? ""
-                : (a + "").replace(s, "")
-        },
-        makeArray: function (a, b) {
-            var c = b || [];
-            return null != a && (w(Object(a))
-                ? r.merge(c, "string" == typeof a
-                    ? [a]
-                    : a)
-                : h.call(c, a)),
-            c
-        },
-        inArray: function (a, b, c) {
-            return null == b
-                ? -1
-                : i.call(b, a, c)
-        },
-        merge: function (a, b) {
-            for (var c =+ b.length, d = 0, e = a.length; d < c; 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; f < g; f++) 
-                d = !b(a[f], f),
-                d !== h && e.push(a[f]);
-            return e
-        },
-        map: function (a, b, c) {
-            var d,
-                e,
-                f = 0,
-                h = [];
-            if (w(a)) 
-                for (d = a.length; f < d; f++) 
-                    e = b(a[f], f, c),
-                    null != e && h.push(e);
-        else 
-                for (f in a) 
-                    e = b(a[f], f, c),
-                    null != e && h.push(e);
-        return g.apply([], h)
-        },
-        guid: 1,
-        proxy: function (a, b) {
-            var c,
-                d,
-                e;
-            if ("string" == typeof b && (c = a[b], b = a, a = c), r.isFunction(a)) 
-                return d = f.call(arguments, 2),
-                e = function () {
-                    return a.apply(b || this, d.concat(f.call(arguments)))
-                }
-            ,
-            e.guid = a.guid = a.guid || r.guid++,
-            e
-        },
-        now: Date.now,
-        support: o
-    }),
-    "function" == typeof Symbol && (r.fn[Symbol.iterator] = c[Symbol.iterator]),
-    r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (a, b) {
-        j["[object " + b + "]"] = b.toLowerCase()
-    });
-    function w(a) {
-        var b = !!a && "length" in a && a.length,
-            c = r.type(a);
-        return "function" !== c && !r.isWindow(a) && ("array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a)
-    }
-    var x = function (a) {
-        var b,
-            c,
-            d,
-            e,
-            f,
-            g,
-            h,
-            i,
-            j,
-            k,
-            l,
-            m,
-            n,
-            o,
-            p,
-            q,
-            r,
-            s,
-            t,
-            u = "sizzle" + 1 * new Date,
-            v = a.document,
-            w = 0,
-            x = 0,
-            y = ha(),
-            z = ha(),
-            A = ha(),
-            B = function (a, b) {
-                return a === b && (l = !0),
-                0
-            },
-            C = {}.hasOwnProperty,
-            D = [],
-            E = D.pop,
-            F = D.push,
-            G = D.push,
-            H = D.slice,
-            I = function (a, b) {
-                for (var c = 0, d = a.length; c < d; c++) 
-                    if (a[c] === b) 
-                        return c;
-            return -1
-            },
-            J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|l" +
-                    "oop|multiple|open|readonly|required|scoped",
-            K = "[\\x20\\t\\r\\n\\f]",
-            L = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
-            M = "\\[" + K + "*(" + L + ")(?:" + K + "*([*^$|!~]?=)" + K + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + L + "))|)" + K + "*\\]",
-            N = ":(" + L + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[" +
-                    "\\]]|" + M + ")*)|.*)\\)|)",
-            O = new RegExp(K + "+", "g"),
-            P = new RegExp("^" + K + "+|((?:^|[^\\\\])(?:\\\\.)*)" + K + "+$", "g"),
-            Q = new RegExp("^" + K + "*," + K + "*"),
-            R = new RegExp("^" + K + "*([>+~]|" + K + ")" + K + "*"),
-            S = new RegExp("=" + K + "*([^\\]'\"]*?)" + K + "*\\]", "g"),
-            T = new RegExp(N),
-            U = new RegExp("^" + L + "$"),
-            V = {
-                ID: new RegExp("^#(" + L + ")"),
-                CLASS: new RegExp("^\\.(" + L + ")"),
-                TAG: new RegExp("^(" + L + "|[*])"),
-                ATTR: new RegExp("^" + M),
-                PSEUDO: new RegExp("^" + N),
-                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + K + "*(even|odd|(([+-]|)(\\d*)n|)" + K + "*(?:([+-]|)" + K + "*(\\d+)|))" + K + "*\\)|)", "i"),
-                bool: new RegExp("^(?:" + J + ")$", "i"),
-                needsContext: new RegExp("^" + K + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + K + "*((?:-\\d)?\\d*)" + K + "*\\)|)(?=[^-]|$)", "i")
-            },
-            W = /^(?:input|select|textarea|button)$/i,
-            X = /^h\d$/i,
-            Y = /^[^{]+\{\s*\[native \w/,
-            Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-            $ = /[+~]/,
-            _ = new RegExp("\\\\([\\da-f]{1,6}" + K + "?|(" + K + ")|.)", "ig"),
-            aa = function (a, b, c) {
-                var d = "0x" + b - 65536;
-                return d !== d || c
-                    ? b
-                    : d < 0
-                        ? String.fromCharCode(d + 65536)
-                        : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320)
-            },
-            ba = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
-            ca = function (a, b) {
-                return b
-                    ? "\0" === a
-                        ? "\ufffd"
-                        : a.slice(0, -1) + "\\" + a
-                            .charCodeAt(a.length - 1)
-                            .toString(16) + " "
-                    : "\\" + a
-            },
-            da = function () {
-                m()
-            },
-            ea = ta(function (a) {
-                return a.disabled === !0 && ("form" in a || "label" in a)
-            }, {
-                dir: "parentNode",
-                next: "legend"
-            });
-        try {
-            G.apply(D = H.call(v.childNodes), v.childNodes),
-            D[v.childNodes.length].nodeType
-        } catch (fa) {
-            G = {
-                apply: D.length
-                    ? function (a, b) {
-                        F.apply(a, H.call(b))
-                    }
-                    : function (a, b) {
-                        var c = a.length,
-                            d = 0;
-                        while (a[c++] = b[d++]) 
-                        ;
-                        a.length = c - 1
-                    }
-            }
-        }
-        function ga(a, b, d, e) {
-            var f,
-                h,
-                j,
-                k,
-                l,
-                o,
-                r,
-                s = b && b.ownerDocument,
-                w = b
-                    ? b.nodeType
-                    : 9;
-            if (d = d || [], "string" != typeof a || !a || 1 !== w && 9 !== w && 11 !== w) 
-                return d;
-            if (!e && ((b
-                ? b.ownerDocument || b
-                : v) !== n && m(b), b = b || n, p)) {
-                if (11 !== w && (l = Z.exec(a))) 
-                    if (f = l[1]) {
-                        if (9 === w) {
-                            if (!(j = b.getElementById(f))) 
-                                return d;
-                            if (j.id === f) 
-                                return d.push(j),
-                                d
-                        } else if (s && (j = s.getElementById(f)) && t(b, j) && j.id === f) 
-                            return d.push(j),
-                            d
-                    }
-                else {
-                    if (l[2]) 
-                        return G.apply(d, b.getElementsByTagName(a)),
-                        d;
-                    if ((f = l[3]) && c.getElementsByClassName && b.getElementsByClassName) 
-                        return G.apply(d, b.getElementsByClassName(f)),
-                        d
-                }
-                if (c.qsa && !A[a + " "] && (!q || !q.test(a))) {
-                    if (1 !== w) 
-                        s = b,
-                        r = a;
-                    else if ("object" !== b.nodeName.toLowerCase()) {
-                        (k = b.getAttribute("id"))
-                            ? k = k.replace(ba, ca)
-                            : b.setAttribute("id", k = u),
-                        o = g(a),
-                        h = o.length;
-                        while (h--) 
-                            o[h] = "#" + k + " " + sa(o[h]);
-                        r = o.join(","),
-                        s = $.test(a) && qa(b.parentNode) || b
-                    }
-                    if (r) 
-                        try {
-                            return G.apply(d, s.querySelectorAll(r)),
-                            d
-                        } catch (x) {}
-                    finally {
-                        k === u && b.removeAttribute("id")
-                    }
-                }
-            }
-            return i(a.replace(P, "$1"), b, d, e)
-        }
-        function ha() {
-            var a = [];
-            function b(c, e) {
-                return a.push(c + " ") > d.cacheLength && delete b[a.shift()],
-                b[c + " "] = e
-            }
-            return b
-        }
-        function ia(a) {
-            return a[u] = !0,
-            a
-        }
-        function ja(a) {
-            var b = n.createElement("fieldset");
-            try {
-                return !!a(b)
-            } catch (c) {
-                return !1
-            } finally {
-                b.parentNode && b
-                    .parentNode
-                    .removeChild(b),
-                b = null
-            }
-        }
-        function ka(a, b) {
-            var c = a.split("|"),
-                e = c.length;
-            while (e--) 
-                d.attrHandle[c[e]] = b
-        }
-        function la(a, b) {
-            var c = b && a,
-                d = c && 1 === a.nodeType && 1 === b.nodeType && a.sourceIndex - b.sourceIndex;
-            if (d) 
-                return d;
-            if (c) 
-                while (c = c.nextSibling) 
-                    if (c === b) 
-                        return -1;
-        return a
-                ? 1
-                : -1
-        }
-        function ma(a) {
-            return function (b) {
-                var c = b
-                    .nodeName
-                    .toLowerCase();
-                return "input" === c && b.type === a
-            }
-        }
-        function na(a) {
-            return function (b) {
-                var c = b
-                    .nodeName
-                    .toLowerCase();
-                return ("input" === c || "button" === c) && b.type === a
-            }
-        }
-        function oa(a) {
-            return function (b) {
-                return "form" in b
-                    ? b.parentNode && b.disabled === !1
-                        ? "label" in b
-                            ? "label" in b.parentNode
-                                ? b.parentNode.disabled === a
-                                : b.disabled === a
-                            : b.isDisabled === a || b.isDisabled !== !a && ea(b) === a
-                        : b.disabled === a
-                        : "label" in b && b.disabled === a
-            }
-        }
-        function pa(a) {
-            return ia(function (b) {
-                return b =+ b,
-                ia(function (c, d) {
-                    var e,
-                        f = a([], c.length, b),
-                        g = f.length;
-                    while (g--) 
-                        c[e = f[g]] && (c[e] = !(d[e] = c[e]))
-                })
-            })
-        }
-        function qa(a) {
-            return a && "undefined" != typeof a.getElementsByTagName && a
-        }
-        c = ga.support = {},
-        f = ga.isXML = function (a) {
-            var b = a && (a.ownerDocument || a).documentElement;
-            return !!b && "HTML" !== b.nodeName
-        },
-        m = ga.setDocument = function (a) {
-            var b,
-                e,
-                g = a
-                    ? a.ownerDocument || a
-                    : v;
-            return g !== n && 9 === g.nodeType && g.documentElement
-                ? (n = g, o = n.documentElement, p = !f(n), v !== n && (e = n.defaultView) && e.top !== e && (e.addEventListener
-                    ? e.addEventListener("unload", da, !1)
-                    : e.attachEvent && e.attachEvent("onunload", da)), c.attributes = ja(function (a) {
-                    return a.className = "i",
-                    !a.getAttribute("className")
-                }), c.getElementsByTagName = ja(function (a) {
-                    return a.appendChild(n.createComment("")),
-                    !a
-                        .getElementsByTagName("*")
-                        .length
-                }), c.getElementsByClassName = Y.test(n.getElementsByClassName), c.getById = ja(function (a) {
-                    return o
-                        .appendChild(a)
-                        .id = u,
-                    !n.getElementsByName || !n
-                        .getElementsByName(u)
-                        .length
-                }), c.getById
-                    ? (d.filter.ID = function (a) {
-                        var b = a.replace(_, aa);
-                        return function (a) {
-                            return a.getAttribute("id") === b
-                        }
-                    },
-                    d.find.ID = function (a, b) {
-                        if ("undefined" != typeof b.getElementById && p) {
-                            var c = b.getElementById(a);
-                            return c
-                                ? [c]
-                                : []
-                        }
-                    })
-                    : (d.filter.ID = function (a) {
-                        var b = a.replace(_, aa);
-                        return function (a) {
-                            var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id");
-                            return c && c.value === b
-                        }
-                    },
-                    d.find.ID = function (a, b) {
-                        if ("undefined" != typeof b.getElementById && p) {
-                            var c,
-                                d,
-                                e,
-                                f = b.getElementById(a);
-                            if (f) {
-                                if (c = f.getAttributeNode("id"), c && c.value === a) 
-                                    return [f];
-                                e = b.getElementsByName(a),
-                                d = 0;
-                                while (f = e[d++]) 
-                                    if (c = f.getAttributeNode("id"), c && c.value === a) 
-                                        return [f]
-                            }
-                            return []
-                        }
-                    }), d.find.TAG = c.getElementsByTagName
-                    ? function (a, b) {
-                        return "undefined" != typeof b.getElementsByTagName
-                            ? b.getElementsByTagName(a)
-                            : c.qsa
-                                ? b.querySelectorAll(a)
-                                : void 0
-                    }
-                    : function (a, b) {
-                        var c,
-                            d = [],
-                            e = 0,
-                            f = b.getElementsByTagName(a);
-                        if ("*" === a) {
-                            while (c = f[e++]) 
-                                1 === c.nodeType && d.push(c);
-                            return d
-                        }
-                        return f
-                    },
-                d.find.CLASS = c.getElementsByClassName && function (a, b) {
-                    if ("undefined" != typeof b.getElementsByClassName && p) 
-                        return b.getElementsByClassName(a)
-                },
-                r = [],
-                q = [],
-                (c.qsa = Y.test(n.querySelectorAll)) && (ja(function (a) {
-                    o
-                        .appendChild(a)
-                        .innerHTML = "",
-                    a
-                        .querySelectorAll("[msallowcapture^='']")
-                        .length && q.push("[*^$]=" + K + "*(?:''|\"\")"),
-                    a
-                        .querySelectorAll("[selected]")
-                        .length || q.push("\\[" + K + "*(?:value|" + J + ")"),
-                    a
-                        .querySelectorAll("[id~=" + u + "-]")
-                        .length || q.push("~="),
-                    a
-                        .querySelectorAll(":checked")
-                        .length || q.push(":checked"),
-                    a
-                        .querySelectorAll("a#" + u + "+*")
-                        .length || q.push(".#.+[+~]")
-                }), ja(function (a) {
-                    a.innerHTML = "",
-            a
-                .firstChild
-                .setAttribute("value", ""),
-            "" === a
-                .firstChild
-                .getAttribute("value")
-        }) || ka("value", function (a, b, c) {
-            if (!c && "input" === a.nodeName.toLowerCase()) 
-                return a.defaultValue
-        }),
-        ja(function (a) {
-            return null == a.getAttribute("disabled")
-        }) || ka(J, function (a, b, c) {
-            var d;
-            if (!c) 
-                return a[b] === !0
-                    ? b.toLowerCase()
-                    : (d = a.getAttributeNode(b)) && d.specified
-                        ? d.value
-                        : null
-                }),
-        ga
-    }(a);
-    r.find = x,
-    r.expr = x.selectors,
-    r.expr[":"] = r.expr.pseudos,
-    r.uniqueSort = r.unique = x.uniqueSort,
-    r.text = x.getText,
-    r.isXMLDoc = x.isXML,
-    r.contains = x.contains,
-    r.escapeSelector = x.escape;
-    var y = function (a, b, c) {
-            var d = [],
-                e = void 0 !== c;
-            while ((a = a[b]) && 9 !== a.nodeType) 
-                if (1 === a.nodeType) {
-                    if (e && r(a).is(c)) 
-                        break;
-                    d.push(a)
-                }
-            return d
-        },
-        z = function (a, b) {
-            for (var c = []; a; a = a.nextSibling) 
-                1 === a.nodeType && a !== b && c.push(a);
-            return c
-        },
-        A = r.expr.match.needsContext,
-        B = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
-        C = /^.[^:#\[\.,]*$/;
-    function D(a, b, c) {
-        return r.isFunction(b)
-            ? r.grep(a, function (a, d) {
-                return !!b.call(a, d, a) !== c
-            })
-            : b.nodeType
-                ? r.grep(a, function (a) {
-                    return a === b !== c
-                })
-                : "string" != typeof b
-                    ? r.grep(a, function (a) {
-                        return i.call(b, a) > -1 !== c
-                    })
-                    : C.test(b)
-                        ? r.filter(b, a, c)
-                        : (b = r.filter(b, a), r.grep(a, function (a) {
-                            return i.call(b, a) > -1 !== c && 1 === a.nodeType
-                        }))
-    }
-    r.filter = function (a, b, c) {
-        var d = b[0];
-        return c && (a = ":not(" + a + ")"),
-        1 === b.length && 1 === d.nodeType
-            ? r
-                .find
-                .matchesSelector(d, a)
-                ? [d]
-                : []
-            : r
-                .find
-                .matches(a, r.grep(b, function (a) {
-                    return 1 === a.nodeType
-                }))
-    },
-    r
-        .fn
-        .extend({
-            find: function (a) {
-                var b,
-                    c,
-                    d = this.length,
-                    e = this;
-                if ("string" != typeof a) 
-                    return this.pushStack(r(a).filter(function () {
-                        for (b = 0; b < d; b++) 
-                            if (r.contains(e[b], this)) 
-                                return !0
-                    }));
-                for (c = this.pushStack([]), b = 0; b < d; b++) 
-                    r.find(a, e[b], c);
-                return d > 1
-                    ? r.uniqueSort(c)
-                    : c
-            },
-            filter: function (a) {
-                return this.pushStack(D(this, a || [], !1))
-            },
-            not: function (a) {
-                return this.pushStack(D(this, a || [], !0))
-            },
-            is: function (a) {
-                return !!D(this, "string" == typeof a && A.test(a)
-                    ? r(a)
-                    : a || [], !1).length
-            }
-        });
-    var E,
-        F = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
-        G = r.fn.init = function (a, b, c) {
-            var e,
-                f;
-            if (!a) 
-                return this;
-            if (c = c || E, "string" == typeof a) {
-                if (e = "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3
-                    ? [null, a, null]
-                    : F.exec(a), !e || !e[1] && b) 
-                    return !b || b.jquery
-                        ? (b || c).find(a)
-                        : this.constructor(b).find(a);
-                if (e[1]) {
-                    if (b = b instanceof r
-                        ? b[0]
-                        : b, r.merge(this, r.parseHTML(e[1], b && b.nodeType
-                        ? b.ownerDocument || b
-                        : d, !0)), B.test(e[1]) && r.isPlainObject(b)) 
-                        for (e in b) 
-                            r.isFunction(this[e])
-                                ? this[e](b[e])
-                                : this.attr(e, b[e]);
-                    return this
-                }
-                return f = d.getElementById(e[2]),
-                f && (this[0] = f, this.length = 1),
-                this
-            }
-            return a.nodeType
-                ? (this[0] = a, this.length = 1, this)
-                : r.isFunction(a)
-                    ? void 0 !== c.ready
-                        ? c.ready(a)
-                        : a(r)
-                    : r.makeArray(a, this)
-        };
-    G.prototype = r.fn,
-    E = r(d);
-    var H = /^(?:parents|prev(?:Until|All))/,
-        I = {
-            children: !0,
-            contents: !0,
-            next: !0,
-            prev: !0
-        };
-    r
-        .fn
-        .extend({
-            has: function (a) {
-                var b = r(a, this),
-                    c = b.length;
-                return this.filter(function () {
-                    for (var a = 0; a < c; a++) 
-                        if (r.contains(this, b[a])) 
-                            return !0
-                })
-            },
-            closest: function (a, b) {
-                var c,
-                    d = 0,
-                    e = this.length,
-                    f = [],
-                    g = "string" != typeof a && r(a);
-                if (!A.test(a)) 
-                    for (; d < e; d++) 
-                        for (c = this[d]; c && c !== b; c = c.parentNode) 
-                            if (c.nodeType < 11 && (g
-                                ? g.index(c) > -1
-                                : 1 === c.nodeType && r.find.matchesSelector(c, a))) {
-                                f.push(c);
-                                break
-                            }
-                        return this.pushStack(f.length > 1
-                    ? r.uniqueSort(f)
-                    : f)
-            },
-            index: function (a) {
-                return a
-                    ? "string" == typeof a
-                        ? i.call(r(a), this[0])
-                        : i.call(this, a.jquery
-                            ? a[0]
-                            : a)
-                    : this[0] && this[0].parentNode
-                        ? this
-                            .first()
-                            .prevAll()
-                            .length
-                        : -1
-            },
-            add: function (a, b) {
-                return this.pushStack(r.uniqueSort(r.merge(this.get(), r(a, b))))
-            },
-            addBack: function (a) {
-                return this.add(null == a
-                    ? this.prevObject
-                    : this.prevObject.filter(a))
-            }
-        });
-    function J(a, b) {
-        while ((a = a[b]) && 1 !== a.nodeType) 
-        ;
-        return a
-    }
-    r
-        .each({
-            parent: function (a) {
-                var b = a.parentNode;
-                return b && 11 !== b.nodeType
-                    ? b
-                    : null
-            },
-            parents: function (a) {
-                return y(a, "parentNode")
-            },
-            parentsUntil: function (a, b, c) {
-                return y(a, "parentNode", c)
-            },
-            next: function (a) {
-                return J(a, "nextSibling")
-            },
-            prev: function (a) {
-                return J(a, "previousSibling")
-            },
-            nextAll: function (a) {
-                return y(a, "nextSibling")
-            },
-            prevAll: function (a) {
-                return y(a, "previousSibling")
-            },
-            nextUntil: function (a, b, c) {
-                return y(a, "nextSibling", c)
-            },
-            prevUntil: function (a, b, c) {
-                return y(a, "previousSibling", c)
-            },
-            siblings: function (a) {
-                return z((a.parentNode || {}).firstChild, a)
-            },
-            children: function (a) {
-                return z(a.firstChild)
-            },
-            contents: function (a) {
-                return a.contentDocument || r.merge([], a.childNodes)
-            }
-        }, function (a, b) {
-            r.fn[a] = function (c, d) {
-                var e = r.map(this, b, c);
-                return "Until" !== a.slice(-5) && (d = c),
-                d && "string" == typeof d && (e = r.filter(d, e)),
-                this.length > 1 && (I[a] || r.uniqueSort(e), H.test(a) && e.reverse()),
-                this.pushStack(e)
-            }
-        });
-    var K = /[^\x20\t\r\n\f]+/g;
-    function L(a) {
-        var b = {};
-        return r.each(a.match(K) || [], function (a, c) {
-            b[c] = !0
-        }),
-        b
-    }
-    r.Callbacks = function (a) {
-        a = "string" == typeof a
-            ? L(a)
-            : r.extend({}, a);
-        var b,
-            c,
-            d,
-            e,
-            f = [],
-            g = [],
-            h = -1,
-            i = function () {
-                for (e = a.once, d = b = !0; g.length; h = -1) {
-                    c = g.shift();
-                    while (++h < f.length) 
-                        f[h].apply(c[0], c[1]) === !1 && a.stopOnFalse && (h = f.length, c = !1)
-                }
-                a.memory || (c = !1),
-                b = !1,
-                e && (f = c
-                    ? []
-                    : "")
-            },
-            j = {
-                add: function () {
-                    return f && (c && !b && (h = f.length - 1, g.push(c)), function d(b) {
-                        r
-                            .each(b, function (b, c) {
-                                r.isFunction(c)
-                                    ? a.unique && j.has(c) || f.push(c)
-                                    : c && c.length && "string" !== r.type(c) && d(c)
-                            })
-                    }(arguments),
-                    c && !b && i()),
-                    this
-                },
-                remove: function () {
-                    return r.each(arguments, function (a, b) {
-                        var c;
-                        while ((c = r.inArray(b, f, c)) > -1) 
-                            f.splice(c, 1),
-                            c <= h && h--
-                    }),
-                    this
-                },
-                has: function (a) {
-                    return a
-                        ? r.inArray(a, f) > -1
-                        : f.length > 0
-                },
-                empty: function () {
-                    return f && (f = []),
-                    this
-                },
-                disable: function () {
-                    return e = g = [],
-                    f = c = "",
-                    this
-                },
-                disabled: function () {
-                    return !f
-                },
-                lock: function () {
-                    return e = g = [],
-                    c || b || (f = c = ""),
-                    this
-                },
-                locked: function () {
-                    return !!e
-                },
-                fireWith: function (a, c) {
-                    return e || (c = c || [], c = [
-                        a, c.slice
-                            ? c.slice()
-                            : c
-                    ], g.push(c), b || i()),
-                    this
-                },
-                fire: function () {
-                    return j.fireWith(this, arguments),
-                    this
-                },
-                fired: function () {
-                    return !!d
-                }
-            };
-        return j
-    };
-    function M(a) {
-        return a
-    }
-    function N(a) {
-        throw a
-    }
-    function O(a, b, c) {
-        var d;
-        try {
-            a && r.isFunction(d = a.promise)
-                ? d
-                    .call(a)
-                    .done(b)
-                    .fail(c)
-                : a && r.isFunction(d = a.then)
-                    ? d.call(a, b, c)
-                    : b.call(void 0, a)
-        } catch (a) {
-            c.call(void 0, a)
-        }
-    }
-    r.extend({
-        Deferred: function (b) {
-            var c = [
-                    [
-                        "notify", "progress", r.Callbacks("memory"),
-                        r.Callbacks("memory"),
-                        2
-                    ],
-                    [
-                        "resolve", "done", r.Callbacks("once memory"),
-                        r.Callbacks("once memory"),
-                        0,
-                        "resolved"
-                    ],
-                    [
-                        "reject", "fail", r.Callbacks("once memory"),
-                        r.Callbacks("once memory"),
-                        1,
-                        "rejected"
-                    ]
-                ],
-                d = "pending",
-                e = {
-                    state: function () {
-                        return d
-                    },
-                    always: function () {
-                        return f
-                            .done(arguments)
-                            .fail(arguments),
-                        this
-                    },
-                    "catch": function (a) {
-                        return e.then(null, a)
-                    },
-                    pipe: function () {
-                        var a = arguments;
-                        return r.Deferred(function (b) {
-                            r
-                                .each(c, function (c, d) {
-                                    var e = r.isFunction(a[d[4]]) && a[d[4]];
-                                    f[d[1]](function () {
-                                        var a = e && e.apply(this, arguments);
-                                        a && r.isFunction(a.promise)
-                                            ? a
-                                                .promise()
-                                                .progress(b.notify)
-                                                .done(b.resolve)
-                                                .fail(b.reject)
-                                            : b[d[0] + "With"](this, e
-                                                ? [a]
-                                                : arguments)
-                                    })
-                                }),
-                            a = null
-                        }).promise()
-                    },
-                    then: function (b, d, e) {
-                        var f = 0;
-                        function g(b, c, d, e) {
-                            return function () {
-                                var h = this,
-                                    i = arguments,
-                                    j = function () {
-                                        var a,
-                                            j;
-                                        if (!(b < f)) {
-                                            if (a = d.apply(h, i), a === c.promise()) 
-                                                throw new TypeError("Thenable self-resolution");
-                                            j = a && ("object" == typeof a || "function" == typeof a) && a.then,
-                                            r.isFunction(j)
-                                                ? e
-                                                    ? j.call(a, g(f, c, M, e), g(f, c, N, e))
-                                                    : (f++, j.call(a, g(f, c, M, e), g(f, c, N, e), g(f, c, M, c.notifyWith)))
-                                                : (d !== M && (h = void 0, i = [a]), (e || c.resolveWith)(h, i))
-                                        }
-                                    },
-                                    k = e
-                                        ? j
-                                        : function () {
-                                            try {
-                                                j()
-                                            } catch (a) {
-                                                r.Deferred.exceptionHook && r
-                                                    .Deferred
-                                                    .exceptionHook(a, k.stackTrace),
-                                                b + 1 >= f && (d !== N && (h = void 0, i = [a]), c.rejectWith(h, i))
-                                            }
-                                        };
-                                b
-                                    ? k()
-                                    : (r.Deferred.getStackHook && (k.stackTrace = r.Deferred.getStackHook()), a.setTimeout(k))
-                            }
-                        }
-                        return r.Deferred(function (a) {
-                            c[0][3].add(g(0, a, r.isFunction(e)
-                                ? e
-                                : M, a.notifyWith)),
-                            c[1][3].add(g(0, a, r.isFunction(b)
-                                ? b
-                                : M)),
-                            c[2][3].add(g(0, a, r.isFunction(d)
-                                ? d
-                                : N))
-                        }).promise()
-                    },
-                    promise: function (a) {
-                        return null != a
-                            ? r.extend(a, e)
-                            : e
-                    }
-                },
-                f = {};
-            return r.each(c, function (a, b) {
-                var g = b[2],
-                    h = b[5];
-                e[b[1]] = g.add,
-                h && g.add(function () {
-                    d = h
-                }, c[3 - a][2].disable, c[0][2].lock),
-                g.add(b[3].fire),
-                f[b[0]] = function () {
-                    return f[b[0] + "With"](this === f
-                        ? void 0
-                        : this, arguments),
-                    this
-                },
-                f[b[0] + "With"] = g.fireWith
-            }),
-            e.promise(f),
-            b && b.call(f, f),
-            f
-        },
-        when: function (a) {
-            var b = arguments.length,
-                c = b,
-                d = Array(c),
-                e = f.call(arguments),
-                g = r.Deferred(),
-                h = function (a) {
-                    return function (c) {
-                        d[a] = this,
-                        e[a] = arguments.length > 1
-                            ? f.call(arguments)
-                            : c,
-                        --b || g.resolveWith(d, e)
-                    }
-                };
-            if (b <= 1 && (O(a, g.done(h(c)).resolve, g.reject), "pending" === g.state() || r.isFunction(e[c] && e[c].then))) 
-                return g.then();
-            while (c--) 
-                O(e[c], h(c), g.reject);
-            return g.promise()
-        }
-    });
-    var P = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
-    r.Deferred.exceptionHook = function (b, c) {
-        a.console && a.console.warn && b && P.test(b.name) && a
-            .console
-            .warn("jQuery.Deferred exception: " + b.message, b.stack, c)
-    },
-    r.readyException = function (b) {
-        a
-            .setTimeout(function () {
-                throw b
-            })
-    };
-    var Q = r.Deferred();
-    r.fn.ready = function (a) {
-        return Q.then(a)["catch"](function (a) {
-            r.readyException(a)
-        }),
-        this
-    },
-    r.extend({
-        isReady: !1,
-        readyWait: 1,
-        holdReady: function (a) {
-            a
-                ? r.readyWait++
-                : r.ready(!0)
-        },
-        ready: function (a) {
-            (a === !0
-                ? --r.readyWait
-                : r.isReady) || (r.isReady = !0, a !== !0 && --r.readyWait > 0 || Q.resolveWith(d, [r]))
-        }
-    }),
-    r.ready.then = Q.then;
-    function R() {
-        d.removeEventListener("DOMContentLoaded", R),
-        a.removeEventListener("load", R),
-        r.ready()
-    }
-    "complete" === d.readyState || "loading" !== d.readyState && !d.documentElement.doScroll
-        ? a.setTimeout(r.ready)
-        : (d.addEventListener("DOMContentLoaded", R), a.addEventListener("load", R));
-    var S = function (a, b, c, d, e, f, g) {
-            var h = 0,
-                i = a.length,
-                j = null == c;
-            if ("object" === r.type(c)) {
-                e = !0;
-                for (h in c) 
-                    S(a, b, h, c[h], !0, f, g)
-            } else if (void 0 !== d && (e = !0, r.isFunction(d) || (g = !0), j && (g
-                ? (b.call(a, d), b = null)
-                : (j = b, b = function (a, b, c) {
-                    return j.call(r(a), c)
-                })), b)) 
-                for (; h < i; 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
-        },
-        T = function (a) {
-            return 1 === a.nodeType || 9 === a.nodeType || !+ a.nodeType
-        };
-    function U() {
-        this.expando = r.expando + U.uid++
-    }
-    U.uid = 1,
-    U.prototype = {
-        cache: function (a) {
-            var b = a[this.expando];
-            return b || (b = {}, T(a) && (a.nodeType
-                ? a[this.expando] = b
-                : Object.defineProperty(a, this.expando, {
-                    value: b,
-                    configurable: !0
-                }))),
-            b
-        },
-        set: function (a, b, c) {
-            var d,
-                e = this.cache(a);
-            if ("string" == typeof b) 
-                e[r.camelCase(b)] = c;
-            else 
-                for (d in b) 
-                    e[r.camelCase(d)] = b[d];
-        return e
-        },
-        get: function (a, b) {
-            return void 0 === b
-                ? this.cache(a)
-                : a[this.expando] && a[this.expando][r.camelCase(b)]
-        },
-        access: function (a, b, c) {
-            return void 0 === b || b && "string" == typeof b && void 0 === c
-                ? this.get(a, b)
-                : (this.set(a, b, c), void 0 !== c
-                    ? c
-                    : b)
-        },
-        remove: function (a, b) {
-            var c,
-                d = a[this.expando];
-            if (void 0 !== d) {
-                if (void 0 !== b) {
-                    r.isArray(b)
-                        ? b = b.map(r.camelCase)
-                        : (b = r.camelCase(b), b = b in d
-                            ? [b]
-                            : b.match(K) || []),
-                    c = b.length;
-                    while (c--) 
-                        delete d[b[c]]
-                }
-                (void 0 === b || r.isEmptyObject(d)) && (a.nodeType
-                    ? a[this.expando] = void 0
-                    : delete a[this.expando])
-            }
-        },
-        hasData: function (a) {
-            var b = a[this.expando];
-            return void 0 !== b && !r.isEmptyObject(b)
-        }
-    };
-    var V = new U,
-        W = new U,
-        X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-        Y = /[A-Z]/g;
-    function Z(a) {
-        return "true" === a || "false" !== a && ("null" === a
-            ? null
-            : a ===+ a + "" ?+ a : X.test(a)
-            ? JSON.parse(a)
-            : a)
-    }
-    function $(a, b, c) {
-        var d;
-        if (void 0 === c && 1 === a.nodeType) 
-            if (d = "data-" + b.replace(Y, "-$&").toLowerCase(), c = a.getAttribute(d), "string" == typeof c) {
-                try {
-                    c = Z(c)
-                } catch (e) {}
-                W.set(a, b, c)
-            } else 
-                c = void 0;
-    return c
-    }
-    r.extend({
-        hasData: function (a) {
-            return W.hasData(a) || V.hasData(a)
-        },
-        data: function (a, b, c) {
-            return W.access(a, b, c)
-        },
-        removeData: function (a, b) {
-            W.remove(a, b)
-        },
-        _data: function (a, b, c) {
-            return V.access(a, b, c)
-        },
-        _removeData: function (a, b) {
-            V.remove(a, b)
-        }
-    }),
-    r
-        .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 = W.get(f), 1 === f.nodeType && !V.get(f, "hasDataAttrs"))) {
-                        c = g.length;
-                        while (c--) 
-                            g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = r.camelCase(d.slice(5)), $(f, d, e[d])));
-                        V.set(f, "hasDataAttrs", !0)
-                    }
-                    return e
-                }
-                return "object" == typeof a
-                    ? this.each(function () {
-                        W.set(this, a)
-                    })
-                    : S(this, function (b) {
-                        var c;
-                        if (f && void 0 === b) {
-                            if (c = W.get(f, a), void 0 !== c) 
-                                return c;
-                            if (c = $(f, a), void 0 !== c) 
-                                return c
-                        } else 
-                            this
-                                .each(function () {
-                                    W.set(this, a, b)
-                                })
-                        }, null, b, arguments.length > 1, null, !0)
-            },
-            removeData: function (a) {
-                return this.each(function () {
-                    W.remove(this, a)
-                })
-            }
-        }),
-    r.extend({
-        queue: function (a, b, c) {
-            var d;
-            if (a) 
-                return b = (b || "fx") + "queue",
-                d = V.get(a, b),
-                c && (!d || r.isArray(c)
-                    ? d = V.access(a, b, r.makeArray(c))
-                    : d.push(c)),
-                d || []
-        },
-        dequeue: function (a, b) {
-            b = b || "fx";
-            var c = r.queue(a, b),
-                d = c.length,
-                e = c.shift(),
-                f = r._queueHooks(a, b),
-                g = function () {
-                    r.dequeue(a, b)
-                };
-            "inprogress" === e && (e = c.shift(), d--),
-            e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)),
-            !d && f && f
-                .empty
-                .fire()
-        },
-        _queueHooks: function (a, b) {
-            var c = b + "queueHooks";
-            return V.get(a, c) || V.access(a, c, {
-                empty: r
-                    .Callbacks("once memory")
-                    .add(function () {
-                        V.remove(a, [
-                            b + "queue",
-                            c
-                        ])
-                    })
-            })
-        }
-    }),
-    r
-        .fn
-        .extend({
-            queue: function (a, b) {
-                var c = 2;
-                return "string" != typeof a && (b = a, a = "fx", c--),
-                arguments.length < c
-                    ? r.queue(this[0], a)
-                    : void 0 === b
-                        ? this
-                        : this.each(function () {
-                            var c = r.queue(this, a, b);
-                            r._queueHooks(this, a),
-                            "fx" === a && "inprogress" !== c[0] && r.dequeue(this, a)
-                        })
-            },
-            dequeue: function (a) {
-                return this.each(function () {
-                    r.dequeue(this, a)
-                })
-            },
-            clearQueue: function (a) {
-                return this.queue(a || "fx", [])
-            },
-            promise: function (a, b) {
-                var c,
-                    d = 1,
-                    e = r.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 = V.get(f[g], a + "queueHooks"),
-                    c && c.empty && (d++, c.empty.add(h));
-                return h(),
-                e.promise(b)
-            }
-        });
-    var _ = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
-        aa = new RegExp("^(?:([+-])=|)(" + _ + ")([a-z%]*)$", "i"),
-        ba = [
-            "Top", "Right", "Bottom", "Left"
-        ],
-        ca = function (a, b) {
-            return a = b || a,
-            "none" === a.style.display || "" === a.style.display && r.contains(a.ownerDocument, a) && "none" === r.css(a, "display")
-        },
-        da = 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
-        };
-    function ea(a, b, c, d) {
-        var e,
-            f = 1,
-            g = 20,
-            h = d
-                ? function () {
-                    return d.cur()
-                }
-                : function () {
-                    return r.css(a, b, "")
-                },
-            i = h(),
-            j = c && c[3] || (r.cssNumber[b]
-                ? ""
-                : "px"),
-            k = (r.cssNumber[b] || "px" !== j &&+ i) && aa.exec(r.css(a, b));
-        if (k && k[3] !== j) {
-            j = j || k[3],
-            c = c || [],
-            k =+ i || 1;
-            do 
-                f = f || ".5",
-                k /= f,
-                r.style(a, b, k + j);
-            while (f !== (f = h() / i) && 1 !== f && --g)
-        }
-        return c && (k =+ k ||+ i || 0, e = c[1]
-            ? k + (c[1] + 1) * c[2] :+ c[2], d && (d.unit = j, d.start = k, d.end = e)),
-        e
-    }
-    var fa = {};
-    function ga(a) {
-        var b,
-            c = a.ownerDocument,
-            d = a.nodeName,
-            e = fa[d];
-        return e
-            ? e
-            : (b = c.body.appendChild(c.createElement(d)), e = r.css(b, "display"), b.parentNode.removeChild(b), "none" === e && (e = "block"), fa[d] = e, e)
-    }
-    function ha(a, b) {
-        for (var c, d, e = [], f = 0, g = a.length; f < g; f++) 
-            d = a[f],
-            d.style && (c = d.style.display, b
-                ? ("none" === c && (e[f] = V.get(d, "display") || null, e[f] || (d.style.display = "")), "" === d.style.display && ca(d) && (e[f] = ga(d)))
-                : "none" !== c && (e[f] = "none", V.set(d, "display", c)));
-        for (f = 0; f < g; f++) 
-            null != e[f] && (a[f].style.display = e[f]);
-        return a
-    }
-    r
-        .fn
-        .extend({
-            show: function () {
-                return ha(this, !0)
-            },
-            hide: function () {
-                return ha(this)
-            },
-            toggle: function (a) {
-                return "boolean" == typeof a
-                    ? a
-                        ? this.show()
-                        : this.hide()
-                    : this.each(function () {
-                        ca(this)
-                            ? r(this).show()
-                            : r(this).hide()
-                    })
-            }
-        });
-    var ia = /^(?:checkbox|radio)$/i,
-        ja = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
-        ka = /^$|\/(?:java|ecma)script/i,
-        la = {
-            option: [
-                1, ""
-            ],
-            thead: [
-                1, "", "
" - ], - col: [ - 2, "", "
" - ], - tr: [ - 2, "", "
" - ], - td: [ - 3, "", "
" - ], - _default: [0, "", ""] - }; - la.optgroup = la.option, - la.tbody = la.tfoot = la.colgroup = la.caption = la.thead, - la.th = la.td; - function ma(a, b) { - var c; - return c = "undefined" != typeof a.getElementsByTagName - ? a.getElementsByTagName(b || "*") - : "undefined" != typeof a.querySelectorAll - ? a.querySelectorAll(b || "*") - : [], - void 0 === b || b && r.nodeName(a, b) - ? r.merge([a], c) - : c - } - function na(a, b) { - for (var c = 0, d = a.length; c < d; c++) - V.set(a[c], "globalEval", !b || V.get(b[c], "globalEval")) - } - var oa = /<|&#?\w+;/; - function pa(a, b, c, d, e) { - for (var f, g, h, i, j, k, l = b.createDocumentFragment(), m = [], n = 0, o = a.length; n < o; n++) - if (f = a[n], f || 0 === f) - if ("object" === r.type(f)) - r.merge(m, f.nodeType - ? [f] - : f); - else if (oa.test(f)) { - g = g || l.appendChild(b.createElement("div")), - h = (ja.exec(f) || ["", ""])[1].toLowerCase(), - i = la[h] || la._default, - g.innerHTML = i[1] + r.htmlPrefilter(f) + i[2], - k = i[0]; - while (k--) - g = g.lastChild; - r.merge(m, g.childNodes), - g = l.firstChild, - g.textContent = "" - } - else - m.push(b.createTextNode(f)); - l.textContent = "", - n = 0; - while (f = m[n++]) - if (d && r.inArray(f, d) > -1) - e && e.push(f); - else if (j = r.contains(f.ownerDocument, f), g = ma(l.appendChild(f), "script"), j && na(g), c) { - k = 0; - while (f = g[k++]) - ka.test(f.type || "") && c.push(f) - } - return l - } - !function () { - var a = d.createDocumentFragment(), - b = a.appendChild(d.createElement("div")), - c = d.createElement("input"); - c.setAttribute("type", "radio"), - c.setAttribute("checked", "checked"), - c.setAttribute("name", "t"), - b.appendChild(c), - o.checkClone = b - .cloneNode(!0) - .cloneNode(!0) - .lastChild - .checked, - b.innerHTML = "", - o.noCloneChecked = !!b - .cloneNode(!0) - .lastChild - .defaultValue - }(); - var qa = d.documentElement, - ra = /^key/, - sa = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - ta = /^([^.]*)(?:\.(.+)|)/; - function ua() { - return !0 - } - function va() { - return !1 - } - function wa() { - try { - return d.activeElement - } catch (a) {} - } - function xa(a, b, c, d, e, f) { - var g, - h; - if ("object" == typeof b) { - "string" != typeof c && (d = d || c, c = void 0); - for (h in b) - xa(a, h, c, d, b[h], f); - return a - } - if (null == d && null == e - ? (e = c, d = c = void 0) - : null == e && ("string" == typeof c - ? (e = d, d = void 0) - : (e = d, d = c, c = void 0)), e === !1) - e = va; - else if (!e) - return a; - return 1 === f && (g = e, e = function (a) { - return r().off(a), - g.apply(this, arguments) - }, - e.guid = g.guid || (g.guid = r.guid++)), - a.each(function () { - r - .event - .add(this, b, e, d, c) - }) - } - r.event = { - global: {}, - add: function (a, b, c, d, e) { - var f, - g, - h, - i, - j, - k, - l, - m, - n, - o, - p, - q = V.get(a); - if (q) { - c.handler && (f = c, c = f.handler, e = f.selector), - e && r - .find - .matchesSelector(qa, e), - c.guid || (c.guid = r.guid++), - (i = q.events) || (i = q.events = {}), - (g = q.handle) || (g = q.handle = function (b) { - return "undefined" != typeof r && r.event.triggered !== b.type - ? r - .event - .dispatch - .apply(a, arguments) - : void 0 - }), - b = (b || "").match(K) || [""], - j = b.length; - while (j--) - h = ta.exec(b[j]) || [], - n = p = h[1], - o = (h[2] || "").split(".").sort(), - n && (l = r.event.special[n] || {}, n = (e - ? l.delegateType - : l.bindType) || n, l = r.event.special[n] || {}, k = r.extend({ - type: n, - origType: p, - data: d, - handler: c, - guid: c.guid, - selector: e, - needsContext: e && r - .expr - .match - .needsContext - .test(e), - namespace: o.join(".") - }, f), (m = i[n]) || (m = i[n] = [], m.delegateCount = 0, l.setup && l.setup.call(a, d, o, g) !== !1 || a.addEventListener && a.addEventListener(n, g)), l.add && (l.add.call(a, k), k.handler.guid || (k.handler.guid = c.guid)), e - ? m.splice(m.delegateCount++, 0, k) - : m.push(k), r.event.global[n] = !0) - } - }, - remove: function (a, b, c, d, e) { - var f, - g, - h, - i, - j, - k, - l, - m, - n, - o, - p, - q = V.hasData(a) && V.get(a); - if (q && (i = q.events)) { - b = (b || "").match(K) || [""], - j = b.length; - while (j--) - if (h = ta.exec(b[j]) || [], n = p = h[1], o = (h[2] || "").split(".").sort(), n) { - l = r.event.special[n] || {}, - n = (d - ? l.delegateType - : l.bindType) || n, - m = i[n] || [], - h = h[2] && new RegExp("(^|\\.)" + o.join("\\.(?:.*\\.|)") + "(\\.|$)"), - g = f = m.length; - while (f--) - k = m[f], - !e && p !== k.origType || c && c.guid !== k.guid || h && !h.test(k.namespace) || d && d !== k.selector && ("**" !== d || !k.selector) || (m.splice(f, 1), k.selector && m.delegateCount--, l.remove && l.remove.call(a, k)); - g && !m.length && (l.teardown && l.teardown.call(a, o, q.handle) !== !1 || r.removeEvent(a, n, q.handle), delete i[n]) - } - else - for (n in i) - r.event.remove(a, n + b[j], c, d, !0); - r.isEmptyObject(i) && V.remove(a, "handle events") - } - }, - dispatch: function (a) { - var b = r - .event - .fix(a), - c, - d, - e, - f, - g, - h, - i = new Array(arguments.length), - j = (V.get(this, "events") || {})[b.type] || [], - k = r.event.special[b.type] || {}; - for (i[0] = b, c = 1; c < arguments.length; c++) - i[c] = arguments[c]; - if (b.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, b) !== !1) { - h = r - .event - .handlers - .call(this, b, j), - c = 0; - while ((f = h[c++]) && !b.isPropagationStopped()) { - b.currentTarget = f.elem, - d = 0; - while ((g = f.handlers[d++]) && !b.isImmediatePropagationStopped()) - b.rnamespace && !b.rnamespace.test(g.namespace) || (b.handleObj = g, b.data = g.data, e = ((r.event.special[g.origType] || {}).handle || g.handler).apply(f.elem, i), void 0 !== e && (b.result = e) === !1 && (b.preventDefault(), b.stopPropagation())) - } - return k.postDispatch && k - .postDispatch - .call(this, b), - b.result - } - }, - handlers: function (a, b) { - var c, - d, - e, - f, - g, - h = [], - i = b.delegateCount, - j = a.target; - if (i && j.nodeType && !("click" === a.type && a.button >= 1)) - for (; j !== this; j = j.parentNode || this) - if (1 === j.nodeType && ("click" !== a.type || j.disabled !== !0)) { - for (f = [], g = {}, c = 0; c < i; c++) - d = b[c], - e = d.selector + " ", - void 0 === g[e] && (g[e] = d.needsContext - ? r(e, this).index(j) > -1 - : r.find(e, this, null, [j]).length), - g[e] && f.push(d); - f.length && h.push({elem: j, handlers: f}) - } - return j = this, - i < b.length && h.push({ - elem: j, - handlers: b.slice(i) - }), - h - }, - addProp: function (a, b) { - Object.defineProperty(r.Event.prototype, a, { - enumerable: !0, - configurable: !0, - get: r.isFunction(b) - ? function () { - if (this.originalEvent) - return b(this.originalEvent) - } - : function () { - if (this.originalEvent) - return this.originalEvent[a] - }, - set: function (b) { - Object.defineProperty(this, a, { - enumerable: !0, - configurable: !0, - writable: !0, - value: b - }) - } - }) - }, - fix: function (a) { - return a[r.expando] - ? a - : new r.Event(a) - }, - special: { - load: { - noBubble: !0 - }, - focus: { - trigger: function () { - if (this !== wa() && this.focus) - return this.focus(), - !1 - }, - delegateType: "focusin" - }, - blur: { - trigger: function () { - if (this === wa() && this.blur) - return this.blur(), - !1 - }, - delegateType: "focusout" - }, - click: { - trigger: function () { - if ("checkbox" === this.type && this.click && r.nodeName(this, "input")) - return this.click(), - !1 - }, - _default: function (a) { - return r.nodeName(a.target, "a") - } - }, - beforeunload: { - postDispatch: function (a) { - void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result) - } - } - } - }, - r.removeEvent = function (a, b, c) { - a.removeEventListener && a.removeEventListener(b, c) - }, - r.Event = function (a, b) { - return this instanceof r.Event - ? (a && a.type - ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 - ? ua - : va, this.target = a.target && 3 === a.target.nodeType - ? a.target.parentNode - : a.target, this.currentTarget = a.currentTarget, this.relatedTarget = a.relatedTarget) - : this.type = a, b && r.extend(this, b), this.timeStamp = a && a.timeStamp || r.now(), void(this[r.expando] = !0)) - : new r.Event(a, b) - }, - r.Event.prototype = { - constructor: r.Event, - isDefaultPrevented: va, - isPropagationStopped: va, - isImmediatePropagationStopped: va, - isSimulated: !1, - preventDefault: function () { - var a = this.originalEvent; - this.isDefaultPrevented = ua, - a && !this.isSimulated && a.preventDefault() - }, - stopPropagation: function () { - var a = this.originalEvent; - this.isPropagationStopped = ua, - a && !this.isSimulated && a.stopPropagation() - }, - stopImmediatePropagation: function () { - var a = this.originalEvent; - this.isImmediatePropagationStopped = ua, - a && !this.isSimulated && a.stopImmediatePropagation(), - this.stopPropagation() - } - }, - r.each({ - altKey: !0, - bubbles: !0, - cancelable: !0, - changedTouches: !0, - ctrlKey: !0, - detail: !0, - eventPhase: !0, - metaKey: !0, - pageX: !0, - pageY: !0, - shiftKey: !0, - view: !0, - "char": !0, - charCode: !0, - key: !0, - keyCode: !0, - button: !0, - buttons: !0, - clientX: !0, - clientY: !0, - offsetX: !0, - offsetY: !0, - pointerId: !0, - pointerType: !0, - screenX: !0, - screenY: !0, - targetTouches: !0, - toElement: !0, - touches: !0, - which: function (a) { - var b = a.button; - return null == a.which && ra.test(a.type) - ? null != a.charCode - ? a.charCode - : a.keyCode - : !a.which && void 0 !== b && sa.test(a.type) - ? 1 & b - ? 1 - : 2 & b - ? 3 - : 4 & b - ? 2 - : 0 - : a.which - } - }, r.event.addProp), - r.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" - }, function (a, b) { - r.event.special[a] = { - delegateType: b, - bindType: b, - handle: function (a) { - var c, - d = this, - e = a.relatedTarget, - f = a.handleObj; - return e && (e === d || r.contains(d, e)) || (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), - c - } - } - }), - r - .fn - .extend({ - on: function (a, b, c, d) { - return xa(this, a, b, c, d) - }, - one: function (a, b, c, d) { - return xa(this, a, b, c, d, 1) - }, - off: function (a, b, c) { - var d, - e; - if (a && a.preventDefault && a.handleObj) - return d = a.handleObj, - r(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 = va), - this.each(function () { - r - .event - .remove(this, a, c, b) - }) - } - }); - var ya = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - za = /\s*$/g; - function Da(a, b) { - return r.nodeName(a, "table") && r.nodeName(11 !== b.nodeType - ? b - : b.firstChild, "tr") - ? a.getElementsByTagName("tbody")[0] || a - : a - } - function Ea(a) { - return a.type = (null !== a.getAttribute("type")) + "/" + a.type, - a - } - function Fa(a) { - var b = Ba.exec(a.type); - return b - ? a.type = b[1] - : a.removeAttribute("type"), - a - } - function Ga(a, b) { - var c, - d, - e, - f, - g, - h, - i, - j; - if (1 === b.nodeType) { - if (V.hasData(a) && (f = V.access(a), g = V.set(b, f), j = f.events)) { - delete g.handle, - g.events = {}; - for (e in j) - for (c = 0, d = j[e].length; c < d; c++) - r.event.add(b, e, j[e][c]) - } - W.hasData(a) && (h = W.access(a), i = r.extend({}, h), W.set(b, i)) - } - } - function Ha(a, b) { - var c = b - .nodeName - .toLowerCase(); - "input" === c && ia.test(a.type) - ? b.checked = a.checked - : "input" !== c && "textarea" !== c || (b.defaultValue = a.defaultValue) - } - function Ia(a, b, c, d) { - b = g.apply([], b); - var e, - f, - h, - i, - j, - k, - l = 0, - m = a.length, - n = m - 1, - q = b[0], - s = r.isFunction(q); - if (s || m > 1 && "string" == typeof q && !o.checkClone && Aa.test(q)) - return a.each(function (e) { - var f = a.eq(e); - s && (b[0] = q.call(this, e, f.html())), - Ia(f, b, c, d) - }); - if (m && (e = pa(b, a[0].ownerDocument, !1, a, d), f = e.firstChild, 1 === e.childNodes.length && (e = f), f || d)) { - for (h = r.map(ma(e, "script"), Ea), i = h.length; l < m; l++) - j = e, - l !== n && (j = r.clone(j, !0, !0), i && r.merge(h, ma(j, "script"))), - c.call(a[l], j, l); - if (i) - for (k = h[h.length - 1].ownerDocument, r.map(h, Fa), l = 0; l < i; l++) - j = h[l], - ka.test(j.type || "") && !V.access(j, "globalEval") && r.contains(k, j) && (j.src - ? r._evalUrl && r._evalUrl(j.src) - : p(j.textContent.replace(Ca, ""), k)) - } - return a - } - function Ja(a, b, c) { - for (var d, e = b - ? r.filter(b, a) - : a, f = 0; null != (d = e[f]); f++) - c || 1 !== d.nodeType || r.cleanData(ma(d)), - d.parentNode && (c && r.contains(d.ownerDocument, d) && na(ma(d, "script")), d.parentNode.removeChild(d)); - return a - } - r.extend({ - htmlPrefilter: function (a) { - return a.replace(ya, "<$1>") - }, - clone: function (a, b, c) { - var d, - e, - f, - g, - h = a.cloneNode(!0), - i = r.contains(a.ownerDocument, a); - if (!(o.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || r.isXMLDoc(a))) - for (g = ma(h), f = ma(a), d = 0, e = f.length; d < e; d++) - Ha(f[d], g[d]); - if (b) - if (c) - for (f = f || ma(a), g = g || ma(h), d = 0, e = f.length; d < e; d++) - Ga(f[d], g[d]); - else - Ga(a, h); - return g = ma(h, "script"), - g.length > 0 && na(g, !i && ma(a, "script")), - h - }, - cleanData: function (a) { - for (var b, c, d, e = r.event.special, f = 0; void 0 !== (c = a[f]); f++) - if (T(c)) { - if (b = c[V.expando]) { - if (b.events) - for (d in b.events) - e[d] - ? r.event.remove(c, d) - : r.removeEvent(c, d, b.handle); - c[V.expando] = void 0 - } - c[W.expando] && (c[W.expando] = void 0) - } - } - }), - r - .fn - .extend({ - detach: function (a) { - return Ja(this, a, !0) - }, - remove: function (a) { - return Ja(this, a) - }, - text: function (a) { - return S(this, function (a) { - return void 0 === a - ? r.text(this) - : this - .empty() - .each(function () { - 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = a) - }) - }, null, a, arguments.length) - }, - append: function () { - return Ia(this, arguments, function (a) { - if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { - var b = Da(this, a); - b.appendChild(a) - } - }) - }, - prepend: function () { - return Ia(this, arguments, function (a) { - if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { - var b = Da(this, a); - b.insertBefore(a, b.firstChild) - } - }) - }, - before: function () { - return Ia(this, arguments, function (a) { - this.parentNode && this - .parentNode - .insertBefore(a, this) - }) - }, - after: function () { - return Ia(this, arguments, function (a) { - this.parentNode && this - .parentNode - .insertBefore(a, this.nextSibling) - }) - }, - empty: function () { - for (var a, b = 0; null != (a = this[b]); b++) - 1 === a.nodeType && (r.cleanData(ma(a, !1)), a.textContent = ""); - return this - }, - clone: function (a, b) { - return a = null != a && a, - b = null == b - ? a - : b, - this.map(function () { - return r.clone(this, a, b) - }) - }, - html: function (a) { - return S(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 && !za.test(a) && !la[(ja.exec(a) || ["", ""])[1].toLowerCase()]) { - a = r.htmlPrefilter(a); - try { - for (; c < d; c++) - b = this[c] || {} - , - 1 === b.nodeType && (r.cleanData(ma(b, !1)), b.innerHTML = a); - b = 0 - } catch (e) {} - } - b && this - .empty() - .append(a) - }, null, a, arguments.length) - }, - replaceWith: function () { - var a = []; - return Ia(this, arguments, function (b) { - var c = this.parentNode; - r.inArray(this, a) < 0 && (r.cleanData(ma(this)), c && c.replaceChild(b, this)) - }, a) - } - }), - r.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" - }, function (a, b) { - r.fn[a] = function (a) { - for (var c, d = [], e = r(a), f = e.length - 1, g = 0; g <= f; g++) - c = g === f - ? this - : this.clone(!0), - r(e[g])[b](c), - h.apply(d, c.get()); - return this.pushStack(d) - } - }); - var Ka = /^margin/, - La = new RegExp("^(" + _ + ")(?!px)[a-z%]+$", "i"), - Ma = function (b) { - var c = b.ownerDocument.defaultView; - return c && c.opener || (c = a), - c.getComputedStyle(b) - }; - !function () { - function b() { - if (i) { - i.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;pad" + - "ding:1px;top:1%;width:50%", - i.innerHTML = "", - qa.appendChild(h); - var b = a.getComputedStyle(i); - c = "1%" !== b.top, - g = "2px" === b.marginLeft, - e = "4px" === b.width, - i.style.marginRight = "50%", - f = "4px" === b.marginRight, - qa.removeChild(h), - i = null - } - } - var c, - e, - f, - g, - h = d.createElement("div"), - i = d.createElement("div"); - i.style && (i.style.backgroundClip = "content-box", i.cloneNode(!0).style.backgroundClip = "", o.clearCloneStyle = "content-box" === i.style.backgroundClip, h.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position" + - ":absolute", - h.appendChild(i), r.extend(o, { - pixelPosition: function () { - return b(), - c - }, - boxSizingReliable: function () { - return b(), - e - }, - pixelMarginRight: function () { - return b(), - f - }, - reliableMarginLeft: function () { - return b(), - g - } - })) - }(); - function Na(a, b, c) { - var d, - e, - f, - g, - h = a.style; - return c = c || Ma(a), - c && (g = c.getPropertyValue(b) || c[b], "" !== g || r.contains(a.ownerDocument, a) || (g = r.style(a, b)), !o.pixelMarginRight() && La.test(g) && Ka.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 Oa(a, b) { - return { - get: function () { - return a() - ? void delete this.get - : (this.get = b).apply(this, arguments) - } - } - } - var Pa = /^(none|table(?!-c[ea]).+)/, - Qa = { - position: "absolute", - visibility: "hidden", - display: "block" - }, - Ra = { - letterSpacing: "0", - fontWeight: "400" - }, - Sa = [ - "Webkit", "Moz", "ms" - ], - Ta = d - .createElement("div") - .style; - function Ua(a) { - if (a in Ta) - return a; - var b = a[0].toUpperCase() + a.slice(1), - c = Sa.length; - while (c--) - if (a = Sa[c] + b, a in Ta) - return a - } - function Va(a, b, c) { - var d = aa.exec(b); - return d - ? Math.max(0, d[2] - (c || 0)) + (d[3] || "px") - : b - } - function Wa(a, b, c, d, e) { - var f, - g = 0; - for (f = c === (d - ? "border" - : "content") - ? 4 - : "width" === b - ? 1 - : 0; f < 4; f += 2) - "margin" === c && (g += r.css(a, c + ba[f], !0, e)), - d - ? ("content" === c && (g -= r.css(a, "padding" + ba[f], !0, e)), "margin" !== c && (g -= r.css(a, "border" + ba[f] + "Width", !0, e))) - : (g += r.css(a, "padding" + ba[f], !0, e), "padding" !== c && (g += r.css(a, "border" + ba[f] + "Width", !0, e))); - return g - } - function Xa(a, b, c) { - var d, - e = !0, - f = Ma(a), - g = "border-box" === r.css(a, "boxSizing", !1, f); - if (a.getClientRects().length && (d = a.getBoundingClientRect()[b]), d <= 0 || null == d) { - if (d = Na(a, b, f), (d < 0 || null == d) && (d = a.style[b]), La.test(d)) - return d; - e = g && (o.boxSizingReliable() || d === a.style[b]), - d = parseFloat(d) || 0 - } - return d + Wa(a, b, c || (g - ? "border" - : "content"), e, f) + "px" - } - r.extend({ - cssHooks: { - opacity: { - get: function (a, b) { - if (b) { - var c = Na(a, "opacity"); - return "" === c - ? "1" - : c - } - } - } - }, - cssNumber: { - animationIterationCount: !0, - 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 = r.camelCase(b), - i = a.style; - return b = r.cssProps[h] || (r.cssProps[h] = Ua(h) || h), - g = r.cssHooks[b] || r.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 = aa.exec(c)) && e[1] && (c = ea(a, b, e), f = "number"), null != c && c === c && ("number" === f && (c += e && e[3] || (r.cssNumber[h] - ? "" - : "px")), o.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 = r.camelCase(b); - return b = r.cssProps[h] || (r.cssProps[h] = Ua(h) || h), - g = r.cssHooks[b] || r.cssHooks[h], - g && "get" in g && (e = g.get(a, !0, c)), - void 0 === e && (e = Na(a, b, d)), - "normal" === e && b in Ra && (e = Ra[b]), - "" === c || c - ? (f = parseFloat(e), c === !0 || isFinite(f) - ? f || 0 - : e) - : e - } - }), - r.each([ - "height", "width" - ], function (a, b) { - r.cssHooks[b] = { - get: function (a, c, d) { - if (c) - return !Pa.test(r.css(a, "display")) || a.getClientRects().length && a.getBoundingClientRect().width - ? Xa(a, b, d) - : da(a, Qa, function () { - return Xa(a, b, d) - }) - }, - set: function (a, c, d) { - var e, - f = d && Ma(a), - g = d && Wa(a, b, d, "border-box" === r.css(a, "boxSizing", !1, f), f); - return g && (e = aa.exec(c)) && "px" !== (e[3] || "px") && (a.style[b] = c, c = r.css(a, b)), - Va(a, c, g) - } - } - }), - r.cssHooks.marginLeft = Oa(o.reliableMarginLeft, function (a, b) { - if (b) - return (parseFloat(Na(a, "marginLeft")) || a.getBoundingClientRect().left - da(a, { - marginLeft: 0 - }, function () { - return a - .getBoundingClientRect() - .left - })) + "px" - }), - r.each({ - margin: "", - padding: "", - border: "Width" - }, function (a, b) { - r.cssHooks[a + b] = { - expand: function (c) { - for (var d = 0, e = {}, f = "string" == typeof c - ? c.split(" ") - : [c]; d < 4; d++) - e[a + ba[d] + b] = f[d] || f[d - 2] || f[0]; - return e - } - }, - Ka.test(a) || (r.cssHooks[a + b].set = Va) - }), - r - .fn - .extend({ - css: function (a, b) { - return S(this, function (a, b, c) { - var d, - e, - f = {}, - g = 0; - if (r.isArray(b)) { - for (d = Ma(a), e = b.length; g < e; g++) - f[b[g]] = r.css(a, b[g], !1, d); - return f - } - return void 0 !== c - ? r.style(a, b, c) - : r.css(a, b) - }, a, b, arguments.length > 1) - } - }); - function Ya(a, b, c, d, e) { - return new Ya - .prototype - .init(a, b, c, d, e) - } - r.Tween = Ya, - Ya.prototype = { - constructor: Ya, - init: function (a, b, c, d, e, f) { - this.elem = a, - this.prop = c, - this.easing = e || r.easing._default, - this.options = b, - this.start = this.now = this.cur(), - this.end = d, - this.unit = f || (r.cssNumber[c] - ? "" - : "px") - }, - cur: function () { - var a = Ya.propHooks[this.prop]; - return a && a.get - ? a.get(this) - : Ya - .propHooks - ._default - .get(this) - }, - run: function (a) { - var b, - c = Ya.propHooks[this.prop]; - return this.options.duration - ? this.pos = b = r.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) - : this.pos = b = a, - this.now = (this.end - this.start) * b + this.start, - this.options.step && this - .options - .step - .call(this.elem, this.now, this), - c && c.set - ? c.set(this) - : Ya - .propHooks - ._default - .set(this), - this - } - }, - Ya.prototype.init.prototype = Ya.prototype, - Ya.propHooks = { - _default: { - get: function (a) { - var b; - return 1 !== a.elem.nodeType || null != a.elem[a.prop] && null == a.elem.style[a.prop] - ? a.elem[a.prop] - : (b = r.css(a.elem, a.prop, ""), b && "auto" !== b - ? b - : 0) - }, - set: function (a) { - r.fx.step[a.prop] - ? r.fx.step[a.prop](a) - : 1 !== a.elem.nodeType || null == a.elem.style[r.cssProps[a.prop]] && !r.cssHooks[a.prop] - ? a.elem[a.prop] = a.now - : r.style(a.elem, a.prop, a.now + a.unit) - } - } - }, - Ya.propHooks.scrollTop = Ya.propHooks.scrollLeft = { - set: function (a) { - a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now) - } - }, - r.easing = { - linear: function (a) { - return a - }, - swing: function (a) { - return.5 - Math.cos(a * Math.PI) / 2 - }, - _default: "swing" - }, - r.fx = Ya.prototype.init, - r.fx.step = {}; - var Za, - $a, - _a = /^(?:toggle|show|hide)$/, - ab = /queueHooks$/; - function bb() { - $a && (a.requestAnimationFrame(bb), r.fx.tick()) - } - function cb() { - return a.setTimeout(function () { - Za = void 0 - }), - Za = r.now() - } - function db(a, b) { - var c, - d = 0, - e = { - height: a - }; - for (b = b - ? 1 - : 0; d < 4; d += 2 - b) - c = ba[d], - e["margin" + c] = e["padding" + c] = a; - return b && (e.opacity = e.width = a), - e - } - function eb(a, b, c) { - for (var d, e = (hb.tweeners[b] || []).concat(hb.tweeners["*"]), f = 0, g = e.length; f < g; f++) - if (d = e[f].call(c, b, a)) - return d - } - function fb(a, b, c) { - var d, - e, - f, - g, - h, - i, - j, - k, - l = "width" in b || "height" in b, - m = this, - n = {}, - o = a.style, - p = a.nodeType && ca(a), - q = V.get(a, "fxshow"); - c.queue || (g = r._queueHooks(a, "fx"), null == g.unqueued && (g.unqueued = 0, h = g.empty.fire, g.empty.fire = function () { - g.unqueued || h() - }), g.unqueued++, m.always(function () { - m - .always(function () { - g.unqueued--, - r - .queue(a, "fx") - .length || g - .empty - .fire() - }) - })); - for (d in b) - if (e = b[d], _a.test(e)) { - if (delete b[d], f = f || "toggle" === e, e === (p - ? "hide" - : "show")) { - if ("show" !== e || !q || void 0 === q[d]) - continue; - p = !0 - } - n[d] = q && q[d] || r.style(a, d) - } - if (i = !r.isEmptyObject(b), i || !r.isEmptyObject(n)) { - l && 1 === a.nodeType && (c.overflow = [ - o.overflow, o.overflowX, o.overflowY - ], j = q && q.display, null == j && (j = V.get(a, "display")), k = r.css(a, "display"), "none" === k && (j - ? k = j - : (ha([a], !0), j = a.style.display || j, k = r.css(a, "display"), ha([a]))), ("inline" === k || "inline-block" === k && null != j) && "none" === r.css(a, "float") && (i || (m.done(function () { - o.display = j - }), null == j && (k = o.display, j = "none" === k - ? "" - : k)), o.display = "inline-block")), - c.overflow && (o.overflow = "hidden", m.always(function () { - o.overflow = c.overflow[0], - o.overflowX = c.overflow[1], - o.overflowY = c.overflow[2] - })), - i = !1; - for (d in n) - i || (q - ? "hidden" in q && (p = q.hidden) - : q = V.access(a, "fxshow", {display: j}), f && (q.hidden = !p), p && ha([a], !0), m.done(function () { - p || ha([a]), - V.remove(a, "fxshow"); - for (d in n) - r.style(a, d, n[d]) - })), - i = eb(p - ? q[d] - : 0, d, m), - d in q || (q[d] = i.start, p && (i.end = i.start, i.start = 0)) - } - } - function gb(a, b) { - var c, - d, - e, - f, - g; - for (c in a) - if (d = r.camelCase(c), e = b[d], f = a[c], r.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = r.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 hb(a, b, c) { - var d, - e, - f = 0, - g = hb.prefilters.length, - h = r - .Deferred() - .always(function () { - delete i.elem - }), - i = function () { - if (e) - return !1; - for (var b = Za || cb(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; g < i; g++) - j.tweens[g].run(f); - return h.notifyWith(a, [j, f, c]), - f < 1 && i - ? c - : (h.resolveWith(a, [j]), !1) - }, - j = h.promise({ - elem: a, - props: r.extend({}, b), - opts: r.extend(!0, { - specialEasing: {}, - easing: r.easing._default - }, c), - originalProperties: b, - originalOptions: c, - startTime: Za || cb(), - duration: c.duration, - tweens: [], - createTween: function (b, c) { - var d = r.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; c < d; c++) - j.tweens[c].run(1); - return b - ? (h.notifyWith(a, [j, 1, 0]), h.resolveWith(a, [j, b])) - : h.rejectWith(a, [j, b]), - this - } - }), - k = j.props; - for (gb(k, j.opts.specialEasing); f < g; f++) - if (d = hb.prefilters[f].call(j, a, k, j.opts)) - return r.isFunction(d.stop) && (r._queueHooks(j.elem, j.opts.queue).stop = r.proxy(d.stop, d)), - d; - return r.map(k, eb, j), - r.isFunction(j.opts.start) && j - .opts - .start - .call(a, j), - r - .fx - .timer(r.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) - } - r.Animation = r.extend(hb, { - tweeners: { - "*": [function (a, b) { - var c = this.createTween(a, b); - return ea(c.elem, a, aa.exec(b), c), - c - } - ] - }, - tweener: function (a, b) { - r.isFunction(a) - ? (b = a, a = ["*"]) - : a = a.match(K); - for (var c, d = 0, e = a.length; d < e; d++) - c = a[d], - hb.tweeners[c] = hb.tweeners[c] || [], - hb.tweeners[c].unshift(b) - }, - prefilters: [fb], - prefilter: function (a, b) { - b - ? hb - .prefilters - .unshift(a) - : hb - .prefilters - .push(a) - } - }), - r.speed = function (a, b, c) { - var e = a && "object" == typeof a - ? r.extend({}, a) - : { - complete: c || !c && b || r.isFunction(a) && a, - duration: a, - easing: c && b || b && !r.isFunction(b) && b - }; - return r.fx.off || d.hidden - ? e.duration = 0 - : "number" != typeof e.duration && (e.duration in r.fx.speeds - ? e.duration = r.fx.speeds[e.duration] - : e.duration = r.fx.speeds._default), - null != e.queue && e.queue !== !0 || (e.queue = "fx"), - e.old = e.complete, - e.complete = function () { - r.isFunction(e.old) && e - .old - .call(this), - e.queue && r.dequeue(this, e.queue) - }, - e - }, - r - .fn - .extend({ - fadeTo: function (a, b, c, d) { - return this - .filter(ca) - .css("opacity", 0) - .show() - .end() - .animate({ - opacity: b - }, a, c, d) - }, - animate: function (a, b, c, d) { - var e = r.isEmptyObject(a), - f = r.speed(b, c, d), - g = function () { - var b = hb(this, r.extend({}, a), f); - (e || V.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 = r.timers, - g = V.get(this); - if (e) - g[e] && g[e].stop && d(g[e]); - else - for (e in g) - g[e] && g[e].stop && ab.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 || r.dequeue(this, a) - }) - }, - finish: function (a) { - return a !== !1 && (a = a || "fx"), - this.each(function () { - var b, - c = V.get(this), - d = c[a + "queue"], - e = c[a + "queueHooks"], - f = r.timers, - g = d - ? d.length - : 0; - for (c.finish = !0, r.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; b < g; b++) - d[b] && d[b].finish && d[b].finish.call(this); - delete c.finish - }) - } - }), - r.each([ - "toggle", "show", "hide" - ], function (a, b) { - var c = r.fn[b]; - r.fn[b] = function (a, d, e) { - return null == a || "boolean" == typeof a - ? c.apply(this, arguments) - : this.animate(db(b, !0), a, d, e) - } - }), - r.each({ - slideDown: db("show"), - slideUp: db("hide"), - slideToggle: db("toggle"), - fadeIn: { - opacity: "show" - }, - fadeOut: { - opacity: "hide" - }, - fadeToggle: { - opacity: "toggle" - } - }, function (a, b) { - r.fn[a] = function (a, c, d) { - return this.animate(b, a, c, d) - } - }), - r.timers = [], - r.fx.tick = function () { - var a, - b = 0, - c = r.timers; - for (Za = r.now(); b < c.length; b++) - a = c[b], - a() || c[b] !== a || c.splice(b--, 1); - c.length || r - .fx - .stop(), - Za = void 0 - }, - r.fx.timer = function (a) { - r - .timers - .push(a), - a() - ? r - .fx - .start() - : r - .timers - .pop() - }, - r.fx.interval = 13, - r.fx.start = function () { - $a || ($a = a.requestAnimationFrame - ? a.requestAnimationFrame(bb) - : a.setInterval(r.fx.tick, r.fx.interval)) - }, - r.fx.stop = function () { - a.cancelAnimationFrame - ? a.cancelAnimationFrame($a) - : a.clearInterval($a), - $a = null - }, - r.fx.speeds = { - slow: 600, - fast: 200, - _default: 400 - }, - r.fn.delay = function (b, c) { - return b = r.fx - ? r.fx.speeds[b] || b - : b, - c = c || "fx", - this.queue(c, function (c, d) { - var e = a.setTimeout(c, b); - d.stop = function () { - a.clearTimeout(e) - } - }) - }, - function () { - var a = d.createElement("input"), - b = d.createElement("select"), - c = b.appendChild(d.createElement("option")); - a.type = "checkbox", - o.checkOn = "" !== a.value, - o.optSelected = c.selected, - a = d.createElement("input"), - a.value = "t", - a.type = "radio", - o.radioValue = "t" === a.value - }(); - var ib, - jb = r.expr.attrHandle; - r - .fn - .extend({ - attr: function (a, b) { - return S(this, r.attr, a, b, arguments.length > 1) - }, - removeAttr: function (a) { - return this.each(function () { - r.removeAttr(this, a) - }) - } - }), - r.extend({ - attr: function (a, b, c) { - var d, - e, - f = a.nodeType; - if (3 !== f && 8 !== f && 2 !== f) - return "undefined" == typeof a.getAttribute - ? r.prop(a, b, c) - : (1 === f && r.isXMLDoc(a) || (e = r.attrHooks[b.toLowerCase()] || (r.expr.match.bool.test(b) - ? ib - : void 0)), void 0 !== c - ? null === c - ? void r.removeAttr(a, b) - : e && "set" in e && void 0 !== (d = e.set(a, c, b)) - ? d - : (a.setAttribute(b, c + ""), c) - : e && "get" in e && null !== (d = e.get(a, b)) - ? d - : (d = r.find.attr(a, b), null == d - ? void 0 - : d)) - }, - attrHooks: { - type: { - set: function (a, b) { - if (!o.radioValue && "radio" === b && r.nodeName(a, "input")) { - var c = a.value; - return a.setAttribute("type", b), - c && (a.value = c), - b - } - } - } - }, - removeAttr: function (a, b) { - var c, - d = 0, - e = b && b.match(K); - if (e && 1 === a.nodeType) - while (c = e[d++]) - a.removeAttribute(c) - } - }), - ib = { - set: function (a, b, c) { - return b === !1 - ? r.removeAttr(a, c) - : a.setAttribute(c, c), - c - } - }, - r.each(r.expr.match.bool.source.match(/\w+/g), function (a, b) { - var c = jb[b] || r.find.attr; - jb[b] = function (a, b, d) { - var e, - f, - g = b.toLowerCase(); - return d || (f = jb[g], jb[g] = e, e = null != c(a, b, d) - ? g - : null, jb[g] = f), - e - } - }); - var kb = /^(?:input|select|textarea|button)$/i, - lb = /^(?:a|area)$/i; - r - .fn - .extend({ - prop: function (a, b) { - return S(this, r.prop, a, b, arguments.length > 1) - }, - removeProp: function (a) { - return this.each(function () { - delete this[r.propFix[a] || a] - }) - } - }), - r.extend({ - prop: function (a, b, c) { - var d, - e, - f = a.nodeType; - if (3 !== f && 8 !== f && 2 !== f) - return 1 === f && r.isXMLDoc(a) || (b = r.propFix[b] || b, e = r.propHooks[b]), - void 0 !== c - ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) - ? d - : a[b] = c - : e && "get" in e && null !== (d = e.get(a, b)) - ? d - : a[b] - }, - propHooks: { - tabIndex: { - get: function (a) { - var b = r - .find - .attr(a, "tabindex"); - return b - ? parseInt(b, 10) - : kb.test(a.nodeName) || lb.test(a.nodeName) && a.href - ? 0 - : -1 - } - } - }, - propFix: { - "for": "htmlFor", - "class": "className" - } - }), - o.optSelected || (r.propHooks.selected = { - get: function (a) { - var b = a.parentNode; - return b && b.parentNode && b.parentNode.selectedIndex, - null - }, - set: function (a) { - var b = a.parentNode; - b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex) - } - }), - r.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" - ], function () { - r.propFix[this.toLowerCase()] = this - }); - function mb(a) { - var b = a.match(K) || []; - return b.join(" ") - } - function nb(a) { - return a.getAttribute && a.getAttribute("class") || "" - } - r - .fn - .extend({ - addClass: function (a) { - var b, - c, - d, - e, - f, - g, - h, - i = 0; - if (r.isFunction(a)) - return this.each(function (b) { - r(this).addClass(a.call(this, b, nb(this))) - }); - if ("string" == typeof a && a) { - b = a.match(K) || []; - while (c = this[i++]) - if (e = nb(c), d = 1 === c.nodeType && " " + mb(e) + " ") { - g = 0; - while (f = b[g++]) - d.indexOf(" " + f + " ") < 0 && (d += f + " "); - h = mb(d), - e !== h && c.setAttribute("class", h) - } - } - return this - }, - removeClass: function (a) { - var b, - c, - d, - e, - f, - g, - h, - i = 0; - if (r.isFunction(a)) - return this.each(function (b) { - r(this).removeClass(a.call(this, b, nb(this))) - }); - if (!arguments.length) - return this.attr("class", ""); - if ("string" == typeof a && a) { - b = a.match(K) || []; - while (c = this[i++]) - if (e = nb(c), d = 1 === c.nodeType && " " + mb(e) + " ") { - g = 0; - while (f = b[g++]) - while (d.indexOf(" " + f + " ") > -1) - d = d.replace(" " + f + " ", " "); - h = mb(d), - e !== h && c.setAttribute("class", h) - } - } - return this - }, - toggleClass: function (a, b) { - var c = typeof a; - return "boolean" == typeof b && "string" === c - ? b - ? this.addClass(a) - : this.removeClass(a) - : r.isFunction(a) - ? this.each(function (c) { - r(this).toggleClass(a.call(this, c, nb(this), b), b) - }) - : this.each(function () { - var b, - d, - e, - f; - if ("string" === c) { - d = 0, - e = r(this), - f = a.match(K) || []; - while (b = f[d++]) - e.hasClass(b) - ? e.removeClass(b) - : e.addClass(b) - } else - void 0 !== a && "boolean" !== c || (b = nb(this), b && V.set(this, "__className__", b), this.setAttribute && this.setAttribute("class", b || a === !1 - ? "" - : V.get(this, "__className__") || "")) - }) - }, - hasClass: function (a) { - var b, - c, - d = 0; - b = " " + a + " "; - while (c = this[d++]) - if (1 === c.nodeType && (" " + mb(nb(c)) + " ").indexOf(b) > -1) - return !0; - return !1 - } - }); - var ob = /\r/g; - r - .fn - .extend({ - val: function (a) { - var b, - c, - d, - e = this[0]; - { - if (arguments.length) - return d = r.isFunction(a), - this.each(function (c) { - var e; - 1 === this.nodeType && (e = d - ? a.call(this, c, r(this).val()) - : a, null == e - ? e = "" - : "number" == typeof e - ? e += "" - : r.isArray(e) && (e = r.map(e, function (a) { - return null == a - ? "" - : a + "" - })), b = r.valHooks[this.type] || r.valHooks[ - this - .nodeName - .toLowerCase() - ], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e)) - }); - if (e) - return b = r.valHooks[e.type] || r.valHooks[ - e - .nodeName - .toLowerCase() - ], - b && "get" in b && void 0 !== (c = b.get(e, "value")) - ? c - : (c = e.value, "string" == typeof c - ? c.replace(ob, "") - : null == c - ? "" - : c) - } - } - }), - r.extend({ - valHooks: { - option: { - get: function (a) { - var b = r - .find - .attr(a, "value"); - return null != b - ? b - : mb(r.text(a)) - } - }, - select: { - get: function (a) { - var b, - c, - d, - e = a.options, - f = a.selectedIndex, - g = "select-one" === a.type, - h = g - ? null - : [], - i = g - ? f + 1 - : e.length; - for (d = f < 0 - ? i - : g - ? f - : 0; d < i; d++) - if (c = e[d], (c.selected || d === f) && !c.disabled && (!c.parentNode.disabled || !r.nodeName(c.parentNode, "optgroup"))) { - if (b = r(c).val(), g) - return b; - h.push(b) - } - return h - }, - set: function (a, b) { - var c, - d, - e = a.options, - f = r.makeArray(b), - g = e.length; - while (g--) - d = e[g], - (d.selected = r.inArray(r.valHooks.option.get(d), f) > -1) && (c = !0); - return c || (a.selectedIndex = -1), - f - } - } - } - }), - r.each([ - "radio", "checkbox" - ], function () { - r.valHooks[this] = { - set: function (a, b) { - if (r.isArray(b)) - return a.checked = r.inArray(r(a).val(), b) > -1 - } - }, - o.checkOn || (r.valHooks[this].get = function (a) { - return null === a.getAttribute("value") - ? "on" - : a.value - }) - }); - var pb = /^(?:focusinfocus|focusoutblur)$/; - r.extend(r.event, { - trigger: function (b, c, e, f) { - var g, - h, - i, - j, - k, - m, - n, - o = [e || d], - p = l.call(b, "type") - ? b.type - : b, - q = l.call(b, "namespace") - ? b - .namespace - .split(".") - : []; - if (h = i = e = e || d, 3 !== e.nodeType && 8 !== e.nodeType && !pb.test(p + r.event.triggered) && (p.indexOf(".") > -1 && (q = p.split("."), p = q.shift(), q.sort()), k = p.indexOf(":") < 0 && "on" + p, b = b[r.expando] - ? b - : new r.Event(p, "object" == typeof b && b), b.isTrigger = f - ? 2 - : 3, b.namespace = q.join("."), b.rnamespace = b.namespace - ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") - : null, b.result = void 0, b.target || (b.target = e), c = null == c - ? [b] - : r.makeArray(c, [b]), n = r.event.special[p] || {}, f || !n.trigger || n.trigger.apply(e, c) !== !1)) { - if (!f && !n.noBubble && !r.isWindow(e)) { - for (j = n.delegateType || p, pb.test(j + p) || (h = h.parentNode); h; h = h.parentNode) - o.push(h), - i = h; - i === (e.ownerDocument || d) && o.push(i.defaultView || i.parentWindow || a) - } - g = 0; - while ((h = o[g++]) && !b.isPropagationStopped()) - b.type = g > 1 - ? j - : n.bindType || p, - m = (V.get(h, "events") || {})[b.type] && V.get(h, "handle"), - m && m.apply(h, c), - m = k && h[k], - m && m.apply && T(h) && (b.result = m.apply(h, c), b.result === !1 && b.preventDefault()); - return b.type = p, - f || b.isDefaultPrevented() || n._default && n - ._default - .apply(o.pop(), c) !== !1 || !T(e) || k && r.isFunction(e[p]) && !r.isWindow(e) && (i = e[k], i && (e[k] = null), r.event.triggered = p, e[p](), r.event.triggered = void 0, i && (e[k] = i)), - b.result - } - }, - simulate: function (a, b, c) { - var d = r.extend(new r.Event, c, { - type: a, - isSimulated: !0 - }); - r - .event - .trigger(d, null, b) - } - }), - r - .fn - .extend({ - trigger: function (a, b) { - return this.each(function () { - r - .event - .trigger(a, b, this) - }) - }, - triggerHandler: function (a, b) { - var c = this[0]; - if (c) - return r.event.trigger(a, b, c, !0) - } - }), - r.each(("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mous" + - "emove mouseover mouseout mouseenter mouseleave change select submit keydown keyp" + - "ress keyup contextmenu").split(" "), function (a, b) { - r.fn[b] = function (a, c) { - return arguments.length > 0 - ? this.on(b, null, a, c) - : this.trigger(b) - } - }), - r - .fn - .extend({ - hover: function (a, b) { - return this - .mouseenter(a) - .mouseleave(b || a) - } - }), - o.focusin = "onfocusin" in a, - o.focusin || r.each({ - focus: "focusin", - blur: "focusout" - }, function (a, b) { - var c = function (a) { - r - .event - .simulate(b, a.target, r.event.fix(a)) - }; - r.event.special[b] = { - setup: function () { - var d = this.ownerDocument || this, - e = V.access(d, b); - e || d.addEventListener(a, c, !0), - V.access(d, b, (e || 0) + 1) - }, - teardown: function () { - var d = this.ownerDocument || this, - e = V.access(d, b) - 1; - e - ? V.access(d, b, e) - : (d.removeEventListener(a, c, !0), V.remove(d, b)) - } - } - }); - var qb = a.location, - rb = r.now(), - sb = /\?/; - r.parseXML = function (b) { - var c; - if (!b || "string" != typeof b) - return null; - try { - c = (new a.DOMParser).parseFromString(b, "text/xml") - } catch (d) { - c = void 0 - } - return c && !c - .getElementsByTagName("parsererror") - .length || r.error("Invalid XML: " + b), - c - }; - var tb = /\[\]$/, - ub = /\r?\n/g, - vb = /^(?:submit|button|image|reset|file)$/i, - wb = /^(?:input|select|textarea|keygen)/i; - function xb(a, b, c, d) { - var e; - if (r.isArray(b)) - r.each(b, function (b, e) { - c || tb.test(a) - ? d(a, e) - : xb(a + "[" + ("object" == typeof e && null != e - ? b - : "") + "]", e, c, d) - }); - else if (c || "object" !== r.type(b)) - d(a, b); - else - for (e in b) - xb(a + "[" + e + "]", b[e], c, d) - } - r.param = function (a, b) { - var c, - d = [], - e = function (a, b) { - var c = r.isFunction(b) - ? b() - : b; - d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(null == c - ? "" - : c) - }; - if (r.isArray(a) || a.jquery && !r.isPlainObject(a)) - r.each(a, function () { - e(this.name, this.value) - }); - else - for (c in a) - xb(c, a[c], b, e); - return d.join("&") - }, - r - .fn - .extend({ - serialize: function () { - return r.param(this.serializeArray()) - }, - serializeArray: function () { - return this.map(function () { - var a = r.prop(this, "elements"); - return a - ? r.makeArray(a) - : this - }) - .filter(function () { - var a = this.type; - return this.name && !r(this).is(":disabled") && wb.test(this.nodeName) && !vb.test(a) && (this.checked || !ia.test(a)) - }) - .map(function (a, b) { - var c = r(this).val(); - return null == c - ? null - : r.isArray(c) - ? r.map(c, function (a) { - return { - name: b.name, - value: a.replace(ub, "\r\n") - } - }) - : { - name: b.name, - value: c.replace(ub, "\r\n") - } - }) - .get() - } - }); - var yb = /%20/g, - zb = /#.*$/, - Ab = /([?&])_=[^&]*/, - Bb = /^(.*?):[ \t]*([^\r\n]*)$/gm, - Cb = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - Db = /^(?:GET|HEAD)$/, - Eb = /^\/\//, - Fb = {}, - Gb = {}, - Hb = "*/".concat("*"), - Ib = d.createElement("a"); - Ib.href = qb.href; - function Jb(a) { - return function (b, c) { - "string" != typeof b && (c = b, b = "*"); - var d, - e = 0, - f = b - .toLowerCase() - .match(K) || []; - if (r.isFunction(c)) - while (d = f[e++]) - "+" === d[0] - ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) - : (a[d] = a[d] || []).push(c) - } - } - function Kb(a, b, c, d) { - var e = {}, - f = a === Gb; - function g(h) { - var i; - return e[h] = !0, - r.each(a[h] || [], function (a, h) { - var j = h(b, c, d); - return "string" != typeof j || f || e[j] - ? f - ? !(i = j) - : void 0 - : (b.dataTypes.unshift(j), g(j), !1) - }), - i - } - return g(b.dataTypes[0]) || !e["*"] && g("*") - } - function Lb(a, b) { - var c, - d, - e = r.ajaxSettings.flatOptions || {}; - for (c in b) - void 0 !== b[c] && ((e[c] - ? a - : d || (d = {}))[c] = b[c]); - return d && r.extend(!0, a, d), - a - } - function Mb(a, b, c) { - var d, - e, - f, - g, - h = a.contents, - i = a.dataTypes; - while ("*" === i[0]) - i.shift(), - void 0 === d && (d = a.mimeType || b.getResponseHeader("Content-Type")); - if (d) - for (e in h) - if (h[e] && h[e].test(d)) { - i.unshift(e); - break - } - if (i[0] in c) - f = i[0]; - else { - for (e in c) { - if (!i[0] || a.converters[e + " " + i[0]]) { - f = e; - break - } - g || (g = e) - } - f = f || g - } - if (f) - return f !== i[0] && i.unshift(f), - c[f] - } - function Nb(a, b, c, d) { - var e, - f, - g, - h, - i, - j = {}, - k = a - .dataTypes - .slice(); - if (k[1]) - for (g in a.converters) - j[g.toLowerCase()] = a.converters[g]; - f = k.shift(); - while (f) - if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift()) - if ("*" === f) - f = i; - else if ("*" !== i && i !== f) { - if (g = j[i + " " + f] || j["* " + f], !g) - for (e in j) - if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) { - g === !0 - ? g = j[e] - : j[e] !== !0 && (f = h[0], k.unshift(h[1])); - break - } - if (g !== !0) - if (g && a["throws"]) - b = g(b); - else - try { - b = g(b) - } catch (l) { - return { - state: "parsererror", - error: g - ? l - : "No conversion from " + i + " to " + f - } - } - } - return {state: "success", data: b} - } - r.extend({ - active: 0, - lastModified: {}, - etag: {}, - ajaxSettings: { - url: qb.href, - type: "GET", - isLocal: Cb.test(qb.protocol), - global: !0, - processData: !0, - async: !0, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - accepts: { - "*": Hb, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - converters: { - "* text": String, - "text html": !0, - "text json": JSON.parse, - "text xml": r.parseXML - }, - flatOptions: { - url: !0, - context: !0 - } - }, - ajaxSetup: function (a, b) { - return b - ? Lb(Lb(a, r.ajaxSettings), b) - : Lb(r.ajaxSettings, a) - }, - ajaxPrefilter: Jb(Fb), - ajaxTransport: Jb(Gb), - ajax: function (b, c) { - "object" == typeof b && (c = b, b = void 0), - c = c || {}; - var e, - f, - g, - h, - i, - j, - k, - l, - m, - n, - o = r.ajaxSetup({}, c), - p = o.context || o, - q = o.context && (p.nodeType || p.jquery) - ? r(p) - : r.event, - s = r.Deferred(), - t = r.Callbacks("once memory"), - u = o.statusCode || {}, - v = {}, - w = {}, - x = "canceled", - y = { - readyState: 0, - getResponseHeader: function (a) { - var b; - if (k) { - if (!h) { - h = {}; - while (b = Bb.exec(g)) - h[b[1].toLowerCase()] = b[2] - } - b = h[a.toLowerCase()] - } - return null == b - ? null - : b - }, - getAllResponseHeaders: function () { - return k - ? g - : null - }, - setRequestHeader: function (a, b) { - return null == k && (a = w[a.toLowerCase()] = w[a.toLowerCase()] || a, v[a] = b), - this - }, - overrideMimeType: function (a) { - return null == k && (o.mimeType = a), - this - }, - statusCode: function (a) { - var b; - if (a) - if (k) - y.always(a[y.status]); - else - for (b in a) - u[b] = [u[b], a[b]]; - return this - }, - abort: function (a) { - var b = a || x; - return e && e.abort(b), - A(0, b), - this - } - }; - if (s.promise(y), o.url = ((b || o.url || qb.href) + "").replace(Eb, qb.protocol + "//"), o.type = c.method || c.type || o.method || o.type, o.dataTypes = (o.dataType || "*").toLowerCase().match(K) || [""], null == o.crossDomain) { - j = d.createElement("a"); - try { - j.href = o.url, - j.href = j.href, - o.crossDomain = Ib.protocol + "//" + Ib.host != j.protocol + "//" + j.host - } catch (z) { - o.crossDomain = !0 - } - } - if (o.data && o.processData && "string" != typeof o.data && (o.data = r.param(o.data, o.traditional)), Kb(Fb, o, c, y), k) - return y; - l = r.event && o.global, - l && 0 === r.active++ && r - .event - .trigger("ajaxStart"), - o.type = o - .type - .toUpperCase(), - o.hasContent = !Db.test(o.type), - f = o - .url - .replace(zb, ""), - o.hasContent - ? o.data && o.processData && 0 === (o.contentType || "").indexOf("application/x-www-form-urlencoded") && (o.data = o.data.replace(yb, "+")) - : (n = o.url.slice(f.length), o.data && (f += (sb.test(f) - ? "&" - : "?") + o.data, delete o.data), o.cache === !1 && (f = f.replace(Ab, "$1"), n = (sb.test(f) - ? "&" - : "?") + "_=" + rb++ + n), o.url = f + n), - o.ifModified && (r.lastModified[f] && y.setRequestHeader("If-Modified-Since", r.lastModified[f]), r.etag[f] && y.setRequestHeader("If-None-Match", r.etag[f])), - (o.data && o.hasContent && o.contentType !== !1 || c.contentType) && y.setRequestHeader("Content-Type", o.contentType), - y.setRequestHeader("Accept", o.dataTypes[0] && o.accepts[o.dataTypes[0]] - ? o.accepts[o.dataTypes[0]] + ("*" !== o.dataTypes[0] - ? ", " + Hb + "; q=0.01" - : "") - : o.accepts["*"]); - for (m in o.headers) - y.setRequestHeader(m, o.headers[m]); - if (o.beforeSend && (o.beforeSend.call(p, y, o) === !1 || k)) - return y.abort(); - if (x = "abort", t.add(o.complete), y.done(o.success), y.fail(o.error), e = Kb(Gb, o, c, y)) { - if (y.readyState = 1, l && q.trigger("ajaxSend", [y, o]), k) - return y; - o.async && o.timeout > 0 && (i = a.setTimeout(function () { - y.abort("timeout") - }, o.timeout)); - try { - k = !1, - e.send(v, A) - } catch (z) { - if (k) - throw z; - A(-1, z) - } - } else - A(-1, "No Transport"); - function A(b, c, d, h) { - var j, - m, - n, - v, - w, - x = c; - k || (k = !0, i && a.clearTimeout(i), e = void 0, g = h || "", y.readyState = b > 0 - ? 4 - : 0, j = b >= 200 && b < 300 || 304 === b, d && (v = Mb(o, y, d)), v = Nb(o, v, y, j), j - ? (o.ifModified && (w = y.getResponseHeader("Last-Modified"), w && (r.lastModified[f] = w), w = y.getResponseHeader("etag"), w && (r.etag[f] = w)), 204 === b || "HEAD" === o.type - ? x = "nocontent" - : 304 === b - ? x = "notmodified" - : (x = v.state, m = v.data, n = v.error, j = !n)) - : (n = x, !b && x || (x = "error", b < 0 && (b = 0))), y.status = b, y.statusText = (c || x) + "", j - ? s.resolveWith(p, [m, x, y]) - : s.rejectWith(p, [y, x, n]), y.statusCode(u), u = void 0, l && q.trigger(j - ? "ajaxSuccess" - : "ajaxError", [ - y, o, j - ? m - : n - ]), t.fireWith(p, [y, x]), l && (q.trigger("ajaxComplete", [y, o]), --r.active || r.event.trigger("ajaxStop"))) - } - return y - }, - getJSON: function (a, b, c) { - return r.get(a, b, c, "json") - }, - getScript: function (a, b) { - return r.get(a, void 0, b, "script") - } - }), - r.each([ - "get", "post" - ], function (a, b) { - r[b] = function (a, c, d, e) { - return r.isFunction(c) && (e = e || d, d = c, c = void 0), - r.ajax(r.extend({ - url: a, - type: b, - dataType: e, - data: c, - success: d - }, r.isPlainObject(a) && a)) - } - }), - r._evalUrl = function (a) { - return r.ajax({ - url: a, - type: "GET", - dataType: "script", - cache: !0, - async: !1, - global: !1, - "throws": !0 - }) - }, - r - .fn - .extend({ - wrapAll: function (a) { - var b; - return this[0] && (r.isFunction(a) && (a = a.call(this[0])), b = r(a, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && b.insertBefore(this[0]), b.map(function () { - var a = this; - while (a.firstElementChild) - a = a.firstElementChild; - return a - }).append(this)), - this - }, - wrapInner: function (a) { - return r.isFunction(a) - ? this.each(function (b) { - r(this).wrapInner(a.call(this, b)) - }) - : this.each(function () { - var b = r(this), - c = b.contents(); - c.length - ? c.wrapAll(a) - : b.append(a) - }) - }, - wrap: function (a) { - var b = r.isFunction(a); - return this.each(function (c) { - r(this).wrapAll(b - ? a.call(this, c) - : a) - }) - }, - unwrap: function (a) { - return this - .parent(a) - .not("body") - .each(function () { - r(this).replaceWith(this.childNodes) - }), - this - } - }), - r.expr.pseudos.hidden = function (a) { - return !r - .expr - .pseudos - .visible(a) - }, - r.expr.pseudos.visible = function (a) { - return !!(a.offsetWidth || a.offsetHeight || a.getClientRects().length) - }, - r.ajaxSettings.xhr = function () { - try { - return new a.XMLHttpRequest - } catch (b) {} - }; - var Ob = { - 0: 200, - 1223: 204 - }, - Pb = r - .ajaxSettings - .xhr(); - o.cors = !!Pb && "withCredentials" in Pb, - o.ajax = Pb = !!Pb, - r.ajaxTransport(function (b) { - var c, - d; - if (o.cors || Pb && !b.crossDomain) - return { - send: function (e, f) { - var g, - h = b.xhr(); - if (h.open(b.type, b.url, b.async, b.username, b.password), b.xhrFields) - for (g in b.xhrFields) - h[g] = b.xhrFields[g]; - b.mimeType && h.overrideMimeType && h.overrideMimeType(b.mimeType), - b.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"); - for (g in e) - h.setRequestHeader(g, e[g]); - c = function (a) { - return function () { - c && (c = d = h.onload = h.onerror = h.onabort = h.onreadystatechange = null, "abort" === a - ? h.abort() - : "error" === a - ? "number" != typeof h.status - ? f(0, "error") - : f(h.status, h.statusText) - : f(Ob[h.status] || h.status, h.statusText, "text" !== (h.responseType || "text") || "string" != typeof h.responseText - ? { - binary: h.response - } - : { - text: h.responseText - }, h.getAllResponseHeaders())) - } - }, - h.onload = c(), - d = h.onerror = c("error"), - void 0 !== h.onabort - ? h.onabort = d - : h.onreadystatechange = function () { - 4 === h.readyState && a.setTimeout(function () { - c && d() - }) - }, - c = c("abort"); - try { - h.send(b.hasContent && b.data || null) - } catch (i) { - if (c) - throw i - } - }, - abort: function () { - c && c() - } - } - }), - r.ajaxPrefilter(function (a) { - a.crossDomain && (a.contents.script = !1) - }), - r.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, application/ecmascript, application/x-e" + - "cmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function (a) { - return r.globalEval(a), - a - } - } - }), - r.ajaxPrefilter("script", function (a) { - void 0 === a.cache && (a.cache = !1), - a.crossDomain && (a.type = "GET") - }), - r.ajaxTransport("script", function (a) { - if (a.crossDomain) { - var b, - c; - return { - send: function (e, f) { - b = r("