summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-12-06 06:06:10 +0100
committerDan McGee <dan@archlinux.org>2011-12-06 06:06:10 +0100
commit943ef2e8e436a32ce5dc956c4d855866cd644cc1 (patch)
tree870f68873a61bcceff00e27b692abaef7542c991 /media
parent1c23308299f33e5b429899463eb207f07ad51403 (diff)
downloadarchweb-943ef2e8e436a32ce5dc956c4d855866cd644cc1.tar.gz
archweb-943ef2e8e436a32ce5dc956c4d855866cd644cc1.tar.xz
Convert to and enable staticfiles contrib application
This moves our site static files into the sitestatic directory if they are shared resources, and also moves a handful of things (such as the artwork logos) into application-specific static/ directories. This allows the staticfiles contrib app to work after a few settings tweaks, a run of collectstatic, and massaging the hardcoded '/media/' prefix out of our templates. Django 1.4 is going to make this a lot easier to move things to a CDN and provides better template tags; for now this is setting the stage before we can move to that. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'media')
-rw-r--r--media/CP_EN_BK_S_001.gifbin3036 -> 0 bytes
-rw-r--r--media/airvm_button.pngbin4931 -> 0 bytes
-rw-r--r--media/archnavbar/archlogo.gifbin1845 -> 0 bytes
-rw-r--r--media/archnavbar/archlogo.pngbin4192 -> 0 bytes
-rw-r--r--media/archnavbar/archnavbar.css33
-rw-r--r--media/archweb-print.css11
-rw-r--r--media/archweb.css1000
-rw-r--r--media/archweb.js323
-rw-r--r--media/asc.gifbin54 -> 0 bytes
-rw-r--r--media/d3.geom.js835
-rw-r--r--media/d3.geom.min.js1
-rw-r--r--media/d3.js4676
-rw-r--r--media/d3.layout.js1891
-rw-r--r--media/d3.layout.min.js1
-rw-r--r--media/d3.min.js2
-rw-r--r--media/desc.gifbin54 -> 0 bytes
-rw-r--r--media/favicon.icobin575 -> 0 bytes
-rw-r--r--media/jquery-1.4.4.min.js167
-rw-r--r--media/jquery.tablesorter.js1031
-rw-r--r--media/jquery.tablesorter.min.js4
-rw-r--r--media/logos/apple-touch-icon-114x114.pngbin3240 -> 0 bytes
-rw-r--r--media/logos/apple-touch-icon-57x57.pngbin1638 -> 0 bytes
-rw-r--r--media/logos/apple-touch-icon-72x72.pngbin2076 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-black-1200dpi.pngbin283011 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-black-90dpi.pngbin12971 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-black-scalable.svg153
-rw-r--r--media/logos/archlinux-logo-dark-1200dpi.pngbin291912 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-dark-90dpi.pngbin13805 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-dark-scalable.svg156
-rw-r--r--media/logos/archlinux-logo-light-1200dpi.pngbin284099 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-light-90dpi.pngbin13084 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-light-scalable.svg156
-rw-r--r--media/logos/archlinux-logo-only.svg45
-rw-r--r--media/logos/archlinux-logo-white-1200dpi.pngbin263771 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-white-90dpi.pngbin11870 -> 0 bytes
-rw-r--r--media/logos/archlinux-logo-white-scalable.svg157
-rw-r--r--media/logos/legacy/arch-legacy-aqua-blue.pngbin11150 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-aqua-blue.svg200
-rw-r--r--media/logos/legacy/arch-legacy-aqua-white.pngbin9171 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-aqua-white.svg200
-rw-r--r--media/logos/legacy/arch-legacy-aqua.pngbin7709 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-aqua.svg103
-rw-r--r--media/logos/legacy/arch-legacy-blue1.pngbin6563 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-blue1.svg57
-rw-r--r--media/logos/legacy/arch-legacy-blue2.pngbin4588 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-blue2.svg57
-rw-r--r--media/logos/legacy/arch-legacy-noodle-blue.pngbin13223 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-noodle-blue.svg217
-rw-r--r--media/logos/legacy/arch-legacy-noodle-box.pngbin12060 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-noodle-box.svg775
-rw-r--r--media/logos/legacy/arch-legacy-noodle-cup.pngbin9971 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-noodle-cup.svg474
-rw-r--r--media/logos/legacy/arch-legacy-noodle-white.pngbin11340 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-noodle-white.svg217
-rw-r--r--media/logos/legacy/arch-legacy-ribbon1.pngbin11628 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-ribbon2.pngbin12390 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-ribbon3.pngbin15590 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-ribbon4.pngbin16747 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-ribbon5.pngbin4986 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-ribbon6.pngbin15700 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-wombat-lg.pngbin114926 -> 0 bytes
-rw-r--r--media/logos/legacy/arch-legacy-wombat.pngbin7761 -> 0 bytes
-rw-r--r--media/new.pngbin378 -> 0 bytes
-rw-r--r--media/nosort.gifbin64 -> 0 bytes
-rw-r--r--media/rss.pngbin725 -> 0 bytes
-rw-r--r--media/sevenl_button.pngbin6840 -> 0 bytes
-rw-r--r--media/silhouette.pngbin33090 -> 0 bytes
-rw-r--r--media/visualize.js253
-rw-r--r--media/vnet_button.pngbin4908 -> 0 bytes
69 files changed, 0 insertions, 13195 deletions
diff --git a/media/CP_EN_BK_S_001.gif b/media/CP_EN_BK_S_001.gif
deleted file mode 100644
index 41cf088..0000000
--- a/media/CP_EN_BK_S_001.gif
+++ /dev/null
Binary files differ
diff --git a/media/airvm_button.png b/media/airvm_button.png
deleted file mode 100644
index 0acadc9..0000000
--- a/media/airvm_button.png
+++ /dev/null
Binary files differ
diff --git a/media/archnavbar/archlogo.gif b/media/archnavbar/archlogo.gif
deleted file mode 100644
index e1852a0..0000000
--- a/media/archnavbar/archlogo.gif
+++ /dev/null
Binary files differ
diff --git a/media/archnavbar/archlogo.png b/media/archnavbar/archlogo.png
deleted file mode 100644
index e873e94..0000000
--- a/media/archnavbar/archlogo.png
+++ /dev/null
Binary files differ
diff --git a/media/archnavbar/archnavbar.css b/media/archnavbar/archnavbar.css
deleted file mode 100644
index d95832b..0000000
--- a/media/archnavbar/archnavbar.css
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * ARCH GLOBAL NAVBAR
- *
- * We're forcing all generic selectors with !important
- * to help prevent other stylesheets from interfering.
- *
- */
-
-/* container for the entire bar */
-#archnavbar { height: 40px !important; padding: 10px 15px !important; background: #333 !important; border-bottom: 5px #08c solid !important; }
-
-/* logo trickery -- GIF for IE6 and PNG for the rest */
-#archnavbarlogo { float: left !important; margin: 0 !important; padding: 0 !important; height: 40px !important; width: 190px !important; }
-/* IE6 doesn't support alpha PNGs so we serve it a GIF */
-#archnavbarlogo { background: url('archlogo.gif') no-repeat !important; }
-/* and use a proper PNG for all other modern browsers */
-html > body #archnavbarlogo { background: url('archlogo.png') no-repeat !important; }
-
-/* move the heading/paragraph text offscreen */
-#archnavbarlogo p { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; }
-#archnavbarlogo h1 { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; }
-
-/* make the link the same size as the logo */
-#archnavbarlogo a { display: block !important; height: 40px !important; width: 190px !important; }
-
-/* display the list inline, float it to the right and style it */
-#archnavbar ul { display: inline !important; float: right !important; list-style: none !important; margin: 0 !important; padding: 0 !important; }
-#archnavbar ul li { float: left !important; font-size: 14px !important; font-family: sans-serif !important; line-height: 45px !important; padding-right: 15px !important; padding-left: 15px !important; }
-
-/* style the links */
-#archnavbar ul#archnavbarlist li a { color: #999; font-weight: bold !important; text-decoration: none !important; }
-#archnavbar ul li a:hover { color: white !important; text-decoration: underline !important; }
-
diff --git a/media/archweb-print.css b/media/archweb-print.css
deleted file mode 100644
index 2946de5..0000000
--- a/media/archweb-print.css
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * ARCH LINUX DJANGO (MAIN SITE)
- *
- * Stylesheet for printing
- */
-
-/* general styling */
-body { font: normal 100% sans-serif; }
-#content { font-size: 0.812em; }
-#archnavbarmenu, #archdev-navbar, .admin-actions { display: none; }
-
diff --git a/media/archweb.css b/media/archweb.css
deleted file mode 100644
index a354cb9..0000000
--- a/media/archweb.css
+++ /dev/null
@@ -1,1000 +0,0 @@
-/*
- * ARCH LINUX DJANGO (MAIN SITE)
- *
- * Font sizing based on 16px browser defaults (use em):
- * 14px = 0.875em
- * 13px = 0.812em
- * 12px = 0.75em
- * 11px = 0.6875em
- *
- */
-
-/* import the global navbar stylesheet */
-@import url('archnavbar/archnavbar.css');
-
-/* simple reset */
-* {
- margin: 0;
- padding: 0;
- line-height: 1.4;
-}
-
-/* general styling */
-body {
- min-width: 650px;
- background: #f6f9fc;
- color: #222;
- font: normal 100% sans-serif;
- text-align: center;
-}
-
-p {
- margin: .33em 0 1em;
-}
-
-ol,
-ul {
- margin-bottom: 1em;
- padding-left: 2em;
-}
-
- ul {
- list-style: square;
- }
-
-code {
- font: 1.2em monospace;
- background: #ffd;
- padding: 0.15em 0.25em;
-}
-
-pre {
- font: 1.2em monospace;
- border: 1px solid #bdb;
- background: #dfd;
- padding: 0.5em;
- margin: 1em;
-}
-
- pre code {
- display: block;
- background: none;
- }
-
-blockquote {
- margin: 1.5em 2em;
-}
-
-input {
- vertical-align: middle;
-}
-
-select[multiple] {
- padding: 1px 0;
-}
-
- select[multiple] option {
- padding: 0 0.5em 0 0.3em;
- }
-
-input[type=submit] {
- padding: 0 0.6em;
-}
-
-.clear {
- clear: both;
-}
-
-hr {
- border: none;
- border-top: 1px solid #888;
-}
-
-img {
- border: 0;
-}
-
-/* scale fonts down to a sane default (16 * .812 = 13px) */
-#content {
- font-size: 0.812em;
-}
-
-/* link style */
-a {
- text-decoration: none;
-}
-
- a:link,
- th a:visited {
- color: #07b;
- }
-
- a:visited {
- color: #666;
- }
-
- a:hover {
- text-decoration: underline;
- color: #666;
- }
-
- a:active {
- color: #e90;
- }
-
-/* headings */
-h2 {
- font-size: 1.5em;
- margin-bottom: 0.5em;
- border-bottom: 1px solid #888;
-}
-
-h3 {
- font-size: 1.25em;
- margin-top: .5em;
-}
-
-h4 {
- font-size: 1.15em;
- margin-top: 1em;
-}
-
-h5 {
- font-size: 1em;
- margin-top: 1em;
-}
-
-/* general layout */
-div#content {
- width: 95%;
- margin: 0 auto;
- text-align: left;
-}
-
-div#content-left-wrapper {
- float: left;
- width: 100%; /* req to keep content above sidebar in source code */
-}
-
-div#content-left {
- margin: 0 340px 0 0;
-}
-
-div#content-right {
- float: left;
- width: 300px;
- margin-left: -300px;
-}
-
-div.box {
- margin-bottom: 1.5em;
- padding: 0.65em;
- background: #ecf2f5;
- border: 1px solid #bcd;
-}
-
-div#footer {
- clear: both;
- margin: 2em 0 1em;
-}
-
- div#footer p {
- margin: 0;
- text-align: center;
- font-size: 0.85em;
- }
-
-/* alignment */
-div.center,
-table.center,
-img.center {
- width: auto;
- margin-left: auto;
- margin-right: auto;
-}
-
-p.center,
-td.center,
-th.center {
- text-align: center;
-}
-
-/* table generics */
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
- table .wrap {
- white-space: normal;
- }
-
-th,
-td {
- white-space: nowrap;
- text-align: left;
-}
-
- th {
- vertical-align: middle;
- font-weight: bold;
- }
-
- td {
- vertical-align: top;
- }
-
-/* table pretty styles */
-table.pretty1 {
- width: auto;
- margin-top: 0.25em;
- margin-bottom: 0.5em;
- border-collapse: collapse;
- border: 1px solid #bcd;
-}
-
- table.pretty1 th {
- padding: 0.35em;
- background: #e4eeff;
- border: 1px solid #bcd;
- }
-
- table.pretty1 td {
- padding: 0.35em;
- border: 1px dotted #bcd;
- }
-
-table.pretty2 {
- width: auto;
- margin-top: 0.25em;
- margin-bottom: 0.5em;
- border-collapse: collapse;
- border: 1px solid #bbb;
-}
-
- table.pretty2 th {
- padding: 0.35em;
- background: #eee;
- border: 1px solid #bbb;
- }
-
- table.pretty2 td {
- padding: 0.35em;
- border: 1px dotted #bbb;
- }
-
-/* definition lists */
-dl {
- clear: both;
-}
-
- dl dt,
- dl dd {
- margin-bottom: 4px;
- padding: 8px 0px 4px;
- font-weight: bold;
- border-top: 1px dotted #bbb;
- }
-
- dl dt {
- color: #333;
- float:left;
- padding-right:15px;
- }
-
-/* forms and input styling */
-form p {
- margin: 0.5em 0;
-}
-
-fieldset {
- border: 0;
-}
-
-label {
- width: 12em;
- vertical-align: top;
- display: inline-block;
- font-weight: bold;
-}
-
-input[type=text],
-input[type=password],
-textarea {
- padding: 0.10em;
-}
-
-form.general-form label,
-form.general-form .form-help {
- width: 10em;
- vertical-align: top;
- display: inline-block;
-}
-
-form.general-form input[type=text],
-form.general-form textarea {
- width: 45%;
-}
-
-/* archdev navbar */
-div#archdev-navbar {
- margin: 1.5em 0;
-}
-
- div#archdev-navbar ul {
- list-style: none;
- margin: -0.5em 0;
- padding: 0;
- }
-
- div#archdev-navbar li {
- display: inline;
- margin: 0;
- padding: 0;
- font-size: 0.9em;
- }
-
- div#archdev-navbar li a {
- padding: 0 0.5em;
- color: #07b;
- }
-
-/* error/info messages (x pkg is already flagged out-of-date, etc) */
-#sys-message {
- width: 35em;
- text-align: center;
- margin: 1em auto;
- padding: 0.5em;
- background: #fff;
- border: 1px solid #f00;
-}
-
- #sys-message p {
- margin: 0;
- }
-
-ul.errorlist {
- color: red;
-}
-
-/**
- * PAGE SPECIFIC STYLES
- */
-
-/* home: introduction */
-#intro p.readmore {
- margin: -0.5em 0 0 0;
- font-size: .9em;
- text-align: right;
-}
-
-/* home: news */
-#news {
- margin-top: 1.5em;
-}
-
- #news h3 {
- float: left;
- padding-bottom: .5em
- }
-
- #news div {
- margin-bottom: 1em;
- }
-
- #news div p {
- margin-bottom: 0.5em;
- }
-
- #news .more {
- font-weight: normal;
- }
-
- #news .rss-icon {
- float: right;
- margin-top: 1em;
- }
-
- #news h4 {
- clear: both;
- font-size: 1em;
- margin-top: 1.5em;
- border-bottom: 1px dotted #bbb;
- }
-
- #news .timestamp {
- float: right;
- font-size: 0.85em;
- margin: -1.8em 0.5em 0 0;
- }
-
-/* home: arrowed headings */
-#news h3 a {
- display: block;
- background: #1794D1;
- font-size: 15px;
- padding: 2px 10px;
- color: white;
-}
-
- #news a:active {
- color: white;
- }
-
-h3 span.arrow {
- display: block;
- width: 0px;
- height: 0px;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- border-top: 6px solid #1794D1;
- margin: 0 auto;
- font-size: 0px;
- line-height: 0px;
-}
-
-/* home: pkgsearch box */
-#pkgsearch {
- padding: 1em 0.75em;
- background: #3ad;
- color: #fff;
- border: 1px solid #08b;
-}
-
- #pkgsearch label {
- width: auto;
- padding: 0.1em 0;
- }
-
- #pkgsearch input {
- width: 10em;
- float: right;
- font-size: 1em;
- color: #000;
- background: #fff;
- border: 1px solid #09c;
- }
-
-/* home: recent pkg updates */
-#pkg-updates h3 {
- margin: 0 0 0.3em;
-}
-
- #pkg-updates .more {
- font-weight: normal;
- }
-
- #pkg-updates .rss-icon {
- float: right;
- margin: -2em 0 0 0;
- }
-
- #pkg-updates table {
- margin: 0;
- }
-
- #pkg-updates td.pkg-name {
- white-space: normal;
- }
-
- #pkg-updates td.pkg-arch {
- text-align: right;
- }
-
- #pkg-updates span.testing,
- #pkg-updates span.community-testing,
- span.multilib-testing {
- font-style: italic;
- }
-
- #pkg-updates span.staging,
- #pkg-updates span.community-staging,
- span.multilib-staging {
- font-style: italic;
- color: #ff8040;
- }
-
-/* home: sidebar navigation */
-div#nav-sidebar ul {
- list-style: none;
- margin: 0.5em 0 0.5em 1em;
- padding: 0;
-}
-
-/* home: sponsor banners */
-div#arch-sponsors img {
- padding: 0.3em 0;
-}
-
-/* home: sidebar components (navlist, sponsors, pkgsearch, etc) */
-div.widget {
- margin-bottom: 1.5em;
-}
-
-/* feeds page */
-#rss-feeds .rss {
- padding-right: 20px;
- background: url(rss.png) top right no-repeat;
-}
-
-/* artwork: logo images */
-#artwork img.inverted {
- background: #333;
- padding: 0;
-}
-
-#artwork div.imagelist img {
- display: inline;
- margin: 0.75em;
-}
-
-/* news: article list */
-.news-nav {
- float: right;
- margin-top: -2.2em;
-}
-
- .news-nav .prev,
- .news-nav .next {
- margin: 0 1em;
- }
-
-/* news: article pages */
-div.news-article .article-info {
- margin: 0;
- color: #999;
-}
-
-/* news: add/edit article */
-form#newsform {
- width: 60em;
-}
-
- form#newsform input[type=text],
- form#newsform textarea {
- width: 75%;
- }
-
-/* donate: donor list */
-div#donor-list ul {
- width: 100%;
-}
- /* max 4 columns, but possibly fewer if screen size doesn't allow for more */
- div#donor-list li {
- float: left;
- width: 25%;
- min-width: 20em;
- }
-
-/* download page */
-#arch-downloads h3 {
- border-bottom: 1px dotted #bbb;
-}
-
-table#download-torrents .cpu-arch {
- text-align: center;
-}
-
-table#download-mirrors {
- width: auto;
- margin-bottom: 1em;
-}
-
- table#download-mirrors td.mirror-country {
- padding-top: 1em;
- }
-
- table#download-mirrors td.mirror-server {
- padding-right: 1em;
- }
-
- table#download-mirrors a {
- display: block;
- float: right;
- width: 4em;
- }
-
-/* pkglists/devlists */
-table.results {
- font-size: 0.846em;
- border-top: 1px dotted #999;
- border-bottom: 1px dotted #999;
-}
-
- table.results th {
- padding: 0.5em 1em 0.25em 0.25em;
- border-bottom: 1px solid #999;
- white-space: nowrap;
- background-color:#fff;
- }
-
- /* additional styles for JS sorting */
- table.results th.header {
- padding-right: 20px;
- background-image: url(nosort.gif);
- background-repeat: no-repeat;
- background-position: center right;
- cursor: pointer;
- }
-
- table.results th.headerSortDown {
- background-color: #e4eeff;
- background-image: url(desc.gif);
- }
-
- table.results th.headerSortUp {
- background-color: #e4eeff;
- background-image: url(asc.gif);
- }
-
- table.results td {
- padding: .3em 1em .3em 3px;
- }
-
- table.results tr.odd {
- background: #fff;
- }
-
- table.results tr.even {
- background: #e4eeff;
- }
-
- table.results .flagged {
- color: red;
- }
-
-/* pkglist: layout */
-div#pkglist-about {
- margin-top: 1.5em;
-}
-
-/* pkglist: results navigation */
-#pkglist-stats-top,
-#pkglist-stats-bottom {
- font-size: 0.85em;
-}
-
-#pkglist-results .pkglist-nav {
- float: right;
- margin-top: -2.2em;
-}
-
-.pkglist-nav .prev {
- margin-right: 1em;
-}
-
-.pkglist-nav .next {
- margin-right: 1em;
-}
-
-/* search fields and other filter selections */
-.filter-criteria h3 {
- font-size: 1em;
- margin-top:0;
-}
-
-.filter-criteria div {
- float: left;
- margin-right: 1.65em;
- font-size: 0.85em;
-}
-
-.filter-criteria legend {
- display: none;
-}
-
-.filter-criteria label {
- width: auto;
- display: block;
- font-weight: normal;
-}
-
-/* pkgdetails: details links that float on the right */
-#pkgdetails #detailslinks {
- float: right;
-}
-
- #pkgdetails #detailslinks h4 {
- margin-top: 0;
- margin-bottom: 0.25em;
- }
-
- #pkgdetails #detailslinks ul {
- list-style: none;
- padding: 0;
- margin-bottom: 0;
- font-size: 0.846em;
- }
-
- #pkgdetails #detailslinks > div {
- padding: 0.5em;
- margin-bottom: 1em;
- background: #eee;
- border: 1px solid #bbb;
- }
-
-#pkgdetails #actionlist .flagged {
- color: red;
- font-size: 0.9em;
- font-style: italic;
-}
-
-/* pkgdetails: pkg info */
-#pkgdetails #pkginfo {
- width: auto;
-}
-
- #pkgdetails #pkginfo td {
- padding: 0.25em 0 0.25em 1.5em;
- }
-
-/* pkgdetails: flag package */
-form#flag-pkg-form label {
- width: 10em;
-}
-
-form#flag-pkg-form textarea,
-form#flag-pkg-form input[type=text] {
- width: 45%;
-}
-
-/* pkgdetails: deps, required by and file lists */
-#pkgdetails #metadata {
- clear: both;
-}
-
-#pkgdetails #metadata h3 {
- background: #555;
- color: #fff;
- font-size: 1em;
- margin-bottom: 0.5em;
- padding: 0.2em 0.35em;
-}
-
-#pkgdetails #metadata ul {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-#pkgdetails #metadata li {
- padding-left: 0.5em;
-}
-
-#pkgdetails #metadata p {
- padding-left: 0.5em;
-}
-
-#pkgdetails #metadata .message {
- font-style: italic;
-}
-
-#pkgdetails #metadata br {
- clear: both;
-}
-
-#pkgdetails #pkgdeps {
- float: left;
- width: 48%;
- margin-right: 2%;
-}
-
-#pkgdetails #metadata .virtual-dep,
-#pkgdetails #metadata .testing-dep,
-#pkgdetails #metadata .opt-dep,
-#pkgdetails #metadata .dep-desc {
- font-style: italic;
-}
-#pkgdetails #pkgreqs {
- float: left;
- width: 50%;
-}
-
-#pkgdetails #pkgfiles {
- clear: left;
- padding-top: 1em;
-}
-
-/* dev/TU biographies */
-div#arch-bio-toc {
- width: 75%;
- margin: 0 auto;
- text-align: center;
-}
-
- div#arch-bio-toc a {
- white-space: nowrap;
- }
-
-table.arch-bio-entry td.pic {
- vertical-align: top;
- padding-right: 15px;
- padding-top: 10px;
-}
-
- table.arch-bio-entry td.pic img {
- padding: 4px;
- border: 1px solid #ccc;
- }
-
-table.arch-bio-entry table.bio {
- margin-bottom: 2em;
-}
-
- table.arch-bio-entry table.bio th {
- text-align: left;
- padding-right: 0.5em;
- vertical-align: top;
- white-space: nowrap;
- }
-
- table.arch-bio-entry table.bio td {
- width: 100%;
- padding-bottom: 0.25em;
- }
-
-/* dev: login/out */
-table#dev-login {
- width: auto;
-}
-
-/* dev dashboard: flagged packages */
-form#dash-pkg-notify {
- text-align: right;
- padding: 1em 0 0;
- margin-top: 1em;
- font-size: 0.85em;
- border-top: 1px dotted #bbb;
-}
-
- form#dash-pkg-notify label {
- width: auto;
- font-weight: normal;
- }
-
- form#dash-pkg-notify input {
- vertical-align: middle;
- margin: 0 0.25em;
- }
-
- form#dash-pkg-notify input[type=submit] {
- margin-top: -0.25em;
- }
-
- form#dash-pkg-notify p {
- margin: 0;
- }
-
-table.dash-stats .key {
- width: 50%;
-}
-
-/* dev dashboard: admin actions (add news items, todo list, etc) */
-ul.admin-actions {
- float: right;
- list-style: none;
- margin-top: -2.5em;
-}
-
- ul.admin-actions li {
- display: inline;
- padding-left: 1.5em;
- }
-
-/* todo lists (public and private) */
-.todo-table .complete {
- color: green;
-}
-
-.todo-table .incomplete {
- color: red;
-}
-.todo-info {
- margin: 0; color: #999;
-}
-
-.todo-list h4 {
- margin-top: 0;
- margin-bottom: 0.4em;
-}
-
-/* dev: signoff page */
-#dev-signoffs tr:hover {
- background: #ffd;
-}
-
-ul.signoff-list {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-.signoff-yes {
- color: green;
- font-weight: bold;
-}
-
-.signoff-no {
- color: red;
-}
-
-.signoff-bad {
- color: darkorange;
-}
-
-.signoff-disabled {
- color: gray;
-}
-
-/* iso testing feedback form */
-#releng-feedback label {
- width: auto;
- display: inline;
- font-weight: normal;
-}
-
-#releng-feedback ul {
- padding-left: 1em;
-}
-
-#releng-feedback li {
- list-style: none;
-}
-
-#releng-feedback ul+.helptext {
- position: relative; top: -0.9em;
-}
-
-#releng-result .success-yes {
- color: green;
-}
-
-#releng-result .success-no {
- color: red;
-}
-
-/* highlight current website in the navbar */
-#archnavbar.anb-home ul li#anb-home a,
-#archnavbar.anb-packages ul li#anb-packages a,
-#archnavbar.anb-download ul li#anb-download a {
- color: white !important;
-}
-
-/* visualizations page */
-.visualize-buttons {
- margin: 0.5em 0.33em;
-}
-
- .visualize-buttons button.active {
- depressed: true;
- }
-
-.visualize-chart {
- position: relative;
- height: 500px;
- margin: 0.33em;
-}
-
-#visualize-archrepo .treemap-cell {
- border: solid 1px white;
- overflow: hidden;
- position: absolute;
-}
-
- #visualize-archrepo .treemap-cell span {
- padding: 3px;
- font-size: 0.85em;
- line-height: 1em;
- }
-
-#visualize-keys svg {
- width: 100%;
-}
-
- #visualize-keys circle {
- stroke-width: 1.5px;
- }
-
- #visualize-keys line {
- stroke: #888;
- }
diff --git a/media/archweb.js b/media/archweb.js
deleted file mode 100644
index 151d0f8..0000000
--- a/media/archweb.js
+++ /dev/null
@@ -1,323 +0,0 @@
-/* tablesorter custom parsers for various pages:
- * devel/index.html, mirrors/status.html, todolists/view.html */
-if (typeof $.tablesorter !== 'undefined') {
- $.tablesorter.addParser({
- id: 'pkgcount',
- is: function(s) { return false; },
- format: function(s) {
- var m = s.match(/\d+/);
- return m ? parseInt(m[0], 10) : 0;
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- id: 'todostatus',
- is: function(s) { return false; },
- format: function(s) {
- return s.match(/incomplete/i) ? 1 : 0;
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- /* sorts numeric, but put '', 'unknown', and '∞' last. */
- id: 'mostlydigit',
- special: ['', 'unknown', '∞'],
- is: function(s, table) {
- var c = table.config;
- return ($.inArray(s, this.special) > -1) || $.tablesorter.isDigit(s, c);
- },
- format: function(s) {
- if ($.inArray(s, this.special) > -1) {
- return Number.MAX_VALUE;
- }
- return $.tablesorter.formatFloat(s);
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- /* sorts duration; put '', 'unknown', and '∞' last. */
- id: 'duration',
- re: /^([0-9]+):([0-5][0-9])$/,
- special: ['', 'unknown', '∞'],
- is: function(s) {
- return ($.inArray(s, this.special) > -1) || this.re.test(s);
- },
- format: function(s) {
- if ($.inArray(s, this.special) > -1) {
- return Number.MAX_VALUE;
- }
- var matches = this.re.exec(s);
- if (!matches) {
- return Number.MAX_VALUE;
- }
- return matches[1] * 60 + matches[2];
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- id: 'epochdate',
- is: function(s) { return false; },
- format: function(s, t, c) {
- /* TODO: this assumes our magic class is the only one */
- var epoch = $(c).attr('class');
- if (!epoch.indexOf('epoch-') == 0) {
- return 0;
- }
- return epoch.slice(6);
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- id: 'longDateTime',
- re: /^(\d{4})-(\d{2})-(\d{2}) ([012]\d):([0-5]\d)(:([0-5]\d))?( (\w+))?$/,
- is: function(s) {
- return this.re.test(s);
- },
- format: function(s) {
- var matches = this.re.exec(s);
- if (!matches) {
- return 0;
- }
- /* skip group 6, group 7 is optional seconds */
- if (matches[7] === undefined) {
- matches[7] = 0;
- }
- /* The awesomeness of the JS date constructor. Month needs to be
- * between 0-11, because things have to be difficult. */
- var date = new Date(matches[1], matches[2] - 1, matches[3],
- matches[4], matches[5], matches[7]);
- return $.tablesorter.formatFloat(date.getTime());
- },
- type: 'numeric'
- });
- $.tablesorter.addParser({
- id: 'filesize',
- re: /^(\d+(?:\.\d+)?) (bytes?|KB|MB|GB|TB|PB)$/,
- is: function(s) {
- return this.re.test(s);
- },
- format: function(s) {
- var matches = this.re.exec(s);
- if (!matches) {
- return 0;
- }
- var size = parseFloat(matches[1]);
- var suffix = matches[2];
-
- switch(suffix) {
- /* intentional fall-through at each level */
- case 'PB':
- size *= 1024;
- case 'TB':
- size *= 1024;
- case 'GB':
- size *= 1024;
- case 'MB':
- size *= 1024;
- case 'KB':
- size *= 1024;
- }
- return size;
- },
- type: 'numeric'
- });
-}
-
-/* news/add.html */
-function enablePreview() {
- $('#news-preview-button').click(function(event) {
- event.preventDefault();
- $.post('/news/preview/', {
- data: $('#id_content').val(),
- csrfmiddlewaretoken: $('#newsform input[name=csrfmiddlewaretoken]').val()
- },
- function(data) {
- $('#news-preview-data').html(data);
- $('#news-preview').show();
- }
- );
- $('#news-preview-title').html($('#id_title').val());
- });
-}
-
-/* packages/details.html */
-function ajaxifyFiles() {
- $('#filelink').click(function(event) {
- event.preventDefault();
- $.get(this.href, function(data) {
- $('#pkgfilelist').html(data);
- });
- });
-}
-
-/* packages/differences.html */
-function filter_packages() {
- /* start with all rows, and then remove ones we shouldn't show */
- var rows = $('#tbody_differences').children();
- var all_rows = rows;
- if (!$('#id_multilib').is(':checked')) {
- rows = rows.not('.multilib').not('.multilib-testing');
- }
- var arch = $('#id_archonly').val();
- if (arch !== 'all') {
- rows = rows.filter('.' + arch);
- }
- if (!$('#id_minor').is(':checked')) {
- /* this check is done last because it is the most expensive */
- var pat = /(.*)-(.+)/;
- rows = rows.filter(function(index) {
- var cells = $(this).children('td');
-
- /* all this just to get the split version out of the table cell */
- var ver_a = cells.eq(2).find('span').text().match(pat);
- if (!ver_a) {
- return true;
- }
-
- var ver_b = cells.eq(3).find('span').text().match(pat);
- if (!ver_b) {
- return true;
- }
-
- /* first check pkgver */
- if (ver_a[1] !== ver_b[1]) {
- return true;
- }
- /* pkgver matched, so see if rounded pkgrel matches */
- if (Math.floor(parseFloat(ver_a[2])) ===
- Math.floor(parseFloat(ver_b[2]))) {
- return false;
- }
- /* pkgrel didn't match, so keep the row */
- return true;
- });
- }
- /* hide all rows, then show the set we care about */
- all_rows.hide();
- rows.show();
- /* make sure we update the odd/even styling from sorting */
- $('.results').trigger('applyWidgets');
-}
-function filter_packages_reset() {
- $('#id_archonly').val('both');
- $('#id_multilib').removeAttr('checked');
- $('#id_minor').removeAttr('checked');
- filter_packages();
-}
-
-/* todolists/view.html */
-function todolist_flag() {
- var link = this;
- $.getJSON(link.href, function(data) {
- if (data.complete) {
- $(link).text('Complete').addClass(
- 'complete').removeClass('incomplete');
- } else {
- $(link).text('Incomplete').addClass(
- 'incomplete').removeClass('complete');
- }
- /* let tablesorter know the cell value has changed */
- $('.results').trigger('updateCell', $(link).closest('td'));
- });
- return false;
-}
-
-/* signoffs.html */
-function signoff_package() {
- var link = this;
- $.getJSON(link.href, function(data) {
- link = $(link);
- var signoff = null;
- var cell = link.closest('td');
- if (data.created) {
- signoff = $('<li>').addClass('signed-username').text(data.user);
- var list = cell.children('ul.signoff-list');
- if (list.size() == 0) {
- list = $('<ul class="signoff-list">').prependTo(cell);
- }
- list.append(signoff);
- } else if(data.user) {
- signoff = link.closest('td').find('li').filter(function(index) {
- return $(this).text() == data.user;
- });
- }
- if (signoff && data.revoked) {
- signoff.text(signoff.text() + ' (revoked)');
- }
- /* update the approved column to reflect reality */
- var approved = link.closest('tr').children('.approval');
- approved.attr('class', '');
- if (data.known_bad) {
- approved.text('Bad').addClass('signoff-bad');
- } else if (!data.enabled) {
- approved.text('Disabled').addClass('signoff-disabled');
- } else if (data.approved) {
- approved.text('Yes').addClass('signoff-yes');
- } else {
- approved.text('No').addClass('signoff-no');
- }
- link.removeAttr('title');
- /* Form our new link. The current will be something like
- * '/packages/repo/arch/package/...' */
- var base_href = link.attr('href').split('/').slice(0, 5).join('/');
- if (data.revoked) {
- link.text('Signoff');
- link.attr('href', base_href + '/signoff/');
- /* should we be hiding the link? */
- if (data.known_bad || !data.enabled) {
- link.remove();
- }
- } else {
- link.text('Revoke Signoff');
- link.attr('href', base_href + '/signoff/revoke/');
- }
- $('.results').trigger('updateCell', approved);
- });
- return false;
-}
-
-function filter_signoffs() {
- /* start with all rows, and then remove ones we shouldn't show */
- var rows = $('#tbody_signoffs').children();
- var all_rows = rows;
- /* apply arch and repo filters */
- $('#signoffs_filter .arch_filter').add(
- '#signoffs_filter .repo_filter').each(function() {
- if (!$(this).is(':checked')) {
- rows = rows.not('.' + $(this).val());
- }
- });
- /* and then the slightly more expensive pending check */
- if ($('#id_pending').is(':checked')) {
- rows = rows.has('td.signoff-no');
- }
- /* hide all rows, then show the set we care about */
- all_rows.hide();
- rows.show();
- $('#filter-count').text(rows.length);
- /* make sure we update the odd/even styling from sorting */
- $('.results').trigger('applyWidgets');
-}
-function filter_signoffs_reset() {
- $('#signoffs_filter .arch_filter').attr('checked', 'checked');
- $('#signoffs_filter .repo_filter').attr('checked', 'checked');
- $('#id_pending').removeAttr('checked');
- filter_signoffs();
-}
-
-/* visualizations */
-function format_filesize(size, decimals) {
- /*var labels = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];*/
- var labels = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
- var label = 0;
-
- while (size > 2048.0 && label < labels.length - 1) {
- label++;
- size /= 1024.0;
- }
- if (decimals === undefined) {
- decimals = 2;
- }
-
- return size.toFixed(decimals) + ' ' + labels[label];
-}
diff --git a/media/asc.gif b/media/asc.gif
deleted file mode 100644
index 7415786..0000000
--- a/media/asc.gif
+++ /dev/null
Binary files differ
diff --git a/media/d3.geom.js b/media/d3.geom.js
deleted file mode 100644
index d860c2b..0000000
--- a/media/d3.geom.js
+++ /dev/null
@@ -1,835 +0,0 @@
-(function(){d3.geom = {};
-/**
- * Computes a contour for a given input grid function using the <a
- * href="http://en.wikipedia.org/wiki/Marching_squares">marching
- * squares</a> algorithm. Returns the contour polygon as an array of points.
- *
- * @param grid a two-input function(x, y) that returns true for values
- * inside the contour and false for values outside the contour.
- * @param start an optional starting point [x, y] on the grid.
- * @returns polygon [[x1, y1], [x2, y2], …]
- */
-d3.geom.contour = function(grid, start) {
- var s = start || d3_geom_contourStart(grid), // starting point
- c = [], // contour polygon
- x = s[0], // current x position
- y = s[1], // current y position
- dx = 0, // next x direction
- dy = 0, // next y direction
- pdx = NaN, // previous x direction
- pdy = NaN, // previous y direction
- i = 0;
-
- do {
- // determine marching squares index
- i = 0;
- if (grid(x-1, y-1)) i += 1;
- if (grid(x, y-1)) i += 2;
- if (grid(x-1, y )) i += 4;
- if (grid(x, y )) i += 8;
-
- // determine next direction
- if (i === 6) {
- dx = pdy === -1 ? -1 : 1;
- dy = 0;
- } else if (i === 9) {
- dx = 0;
- dy = pdx === 1 ? -1 : 1;
- } else {
- dx = d3_geom_contourDx[i];
- dy = d3_geom_contourDy[i];
- }
-
- // update contour polygon
- if (dx != pdx && dy != pdy) {
- c.push([x, y]);
- pdx = dx;
- pdy = dy;
- }
-
- x += dx;
- y += dy;
- } while (s[0] != x || s[1] != y);
-
- return c;
-};
-
-// lookup tables for marching directions
-var d3_geom_contourDx = [1, 0, 1, 1,-1, 0,-1, 1,0, 0,0,0,-1, 0,-1,NaN],
- d3_geom_contourDy = [0,-1, 0, 0, 0,-1, 0, 0,1,-1,1,1, 0,-1, 0,NaN];
-
-function d3_geom_contourStart(grid) {
- var x = 0,
- y = 0;
-
- // search for a starting point; begin at origin
- // and proceed along outward-expanding diagonals
- while (true) {
- if (grid(x,y)) {
- return [x,y];
- }
- if (x === 0) {
- x = y + 1;
- y = 0;
- } else {
- x = x - 1;
- y = y + 1;
- }
- }
-}
-/**
- * Computes the 2D convex hull of a set of points using Graham's scanning
- * algorithm. The algorithm has been implemented as described in Cormen,
- * Leiserson, and Rivest's Introduction to Algorithms. The running time of
- * this algorithm is O(n log n), where n is the number of input points.
- *
- * @param vertices [[x1, y1], [x2, y2], …]
- * @returns polygon [[x1, y1], [x2, y2], …]
- */
-d3.geom.hull = function(vertices) {
- if (vertices.length < 3) return [];
-
- var len = vertices.length,
- plen = len - 1,
- points = [],
- stack = [],
- i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
-
- // find the starting ref point: leftmost point with the minimum y coord
- for (i=1; i<len; ++i) {
- if (vertices[i][1] < vertices[h][1]) {
- h = i;
- } else if (vertices[i][1] == vertices[h][1]) {
- h = (vertices[i][0] < vertices[h][0] ? i : h);
- }
- }
-
- // calculate polar angles from ref point and sort
- for (i=0; i<len; ++i) {
- if (i === h) continue;
- y1 = vertices[i][1] - vertices[h][1];
- x1 = vertices[i][0] - vertices[h][0];
- points.push({angle: Math.atan2(y1, x1), index: i});
- }
- points.sort(function(a, b) { return a.angle - b.angle; });
-
- // toss out duplicate angles
- a = points[0].angle;
- v = points[0].index;
- u = 0;
- for (i=1; i<plen; ++i) {
- j = points[i].index;
- if (a == points[i].angle) {
- // keep angle for point most distant from the reference
- x1 = vertices[v][0] - vertices[h][0];
- y1 = vertices[v][1] - vertices[h][1];
- x2 = vertices[j][0] - vertices[h][0];
- y2 = vertices[j][1] - vertices[h][1];
- if ((x1*x1 + y1*y1) >= (x2*x2 + y2*y2)) {
- points[i].index = -1;
- } else {
- points[u].index = -1;
- a = points[i].angle;
- u = i;
- v = j;
- }
- } else {
- a = points[i].angle;
- u = i;
- v = j;
- }
- }
-
- // initialize the stack
- stack.push(h);
- for (i=0, j=0; i<2; ++j) {
- if (points[j].index !== -1) {
- stack.push(points[j].index);
- i++;
- }
- }
- sp = stack.length;
-
- // do graham's scan
- for (; j<plen; ++j) {
- if (points[j].index === -1) continue; // skip tossed out points
- while (!d3_geom_hullCCW(stack[sp-2], stack[sp-1], points[j].index, vertices)) {
- --sp;
- }
- stack[sp++] = points[j].index;
- }
-
- // construct the hull
- var poly = [];
- for (i=0; i<sp; ++i) {
- poly.push(vertices[stack[i]]);
- }
- return poly;
-}
-
-// are three points in counter-clockwise order?
-function d3_geom_hullCCW(i1, i2, i3, v) {
- var t, a, b, c, d, e, f;
- t = v[i1]; a = t[0]; b = t[1];
- t = v[i2]; c = t[0]; d = t[1];
- t = v[i3]; e = t[0]; f = t[1];
- return ((f-b)*(c-a) - (d-b)*(e-a)) > 0;
-}
-// Note: requires coordinates to be counterclockwise and convex!
-d3.geom.polygon = function(coordinates) {
-
- coordinates.area = function() {
- var i = 0,
- n = coordinates.length,
- a = coordinates[n - 1][0] * coordinates[0][1],
- b = coordinates[n - 1][1] * coordinates[0][0];
- while (++i < n) {
- a += coordinates[i - 1][0] * coordinates[i][1];
- b += coordinates[i - 1][1] * coordinates[i][0];
- }
- return (b - a) * .5;
- };
-
- coordinates.centroid = function(k) {
- var i = -1,
- n = coordinates.length - 1,
- x = 0,
- y = 0,
- a,
- b,
- c;
- if (!arguments.length) k = -1 / (6 * coordinates.area());
- while (++i < n) {
- a = coordinates[i];
- b = coordinates[i + 1];
- c = a[0] * b[1] - b[0] * a[1];
- x += (a[0] + b[0]) * c;
- y += (a[1] + b[1]) * c;
- }
- return [x * k, y * k];
- };
-
- // The Sutherland-Hodgman clipping algorithm.
- coordinates.clip = function(subject) {
- var input,
- i = -1,
- n = coordinates.length,
- j,
- m,
- a = coordinates[n - 1],
- b,
- c,
- d;
- while (++i < n) {
- input = subject.slice();
- subject.length = 0;
- b = coordinates[i];
- c = input[(m = input.length) - 1];
- j = -1;
- while (++j < m) {
- d = input[j];
- if (d3_geom_polygonInside(d, a, b)) {
- if (!d3_geom_polygonInside(c, a, b)) {
- subject.push(d3_geom_polygonIntersect(c, d, a, b));
- }
- subject.push(d);
- } else if (d3_geom_polygonInside(c, a, b)) {
- subject.push(d3_geom_polygonIntersect(c, d, a, b));
- }
- c = d;
- }
- a = b;
- }
- return subject;
- };
-
- return coordinates;
-};
-
-function d3_geom_polygonInside(p, a, b) {
- return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
-}
-
-// Intersect two infinite lines cd and ab.
-function d3_geom_polygonIntersect(c, d, a, b) {
- var x1 = c[0], x2 = d[0], x3 = a[0], x4 = b[0],
- y1 = c[1], y2 = d[1], y3 = a[1], y4 = b[1],
- x13 = x1 - x3,
- x21 = x2 - x1,
- x43 = x4 - x3,
- y13 = y1 - y3,
- y21 = y2 - y1,
- y43 = y4 - y3,
- ua = (x43 * y13 - y43 * x13) / (y43 * x21 - x43 * y21);
- return [x1 + ua * x21, y1 + ua * y21];
-}
-// Adapted from Nicolas Garcia Belmonte's JIT implementation:
-// http://blog.thejit.org/2010/02/12/voronoi-tessellation/
-// http://blog.thejit.org/assets/voronoijs/voronoi.js
-// See lib/jit/LICENSE for details.
-
-// Notes:
-//
-// This implementation does not clip the returned polygons, so if you want to
-// clip them to a particular shape you will need to do that either in SVG or by
-// post-processing with d3.geom.polygon's clip method.
-//
-// If any vertices are coincident or have NaN positions, the behavior of this
-// method is undefined. Most likely invalid polygons will be returned. You
-// should filter invalid points, and consolidate coincident points, before
-// computing the tessellation.
-
-/**
- * @param vertices [[x1, y1], [x2, y2], …]
- * @returns polygons [[[x1, y1], [x2, y2], …], …]
- */
-d3.geom.voronoi = function(vertices) {
- var polygons = vertices.map(function() { return []; });
-
- d3_voronoi_tessellate(vertices, function(e) {
- var s1,
- s2,
- x1,
- x2,
- y1,
- y2;
- if (e.a === 1 && e.b >= 0) {
- s1 = e.ep.r;
- s2 = e.ep.l;
- } else {
- s1 = e.ep.l;
- s2 = e.ep.r;
- }
- if (e.a === 1) {
- y1 = s1 ? s1.y : -1e6;
- x1 = e.c - e.b * y1;
- y2 = s2 ? s2.y : 1e6;
- x2 = e.c - e.b * y2;
- } else {
- x1 = s1 ? s1.x : -1e6;
- y1 = e.c - e.a * x1;
- x2 = s2 ? s2.x : 1e6;
- y2 = e.c - e.a * x2;
- }
- var v1 = [x1, y1],
- v2 = [x2, y2];
- polygons[e.region.l.index].push(v1, v2);
- polygons[e.region.r.index].push(v1, v2);
- });
-
- // Reconnect the polygon segments into counterclockwise loops.
- return polygons.map(function(polygon, i) {
- var cx = vertices[i][0],
- cy = vertices[i][1];
- polygon.forEach(function(v) {
- v.angle = Math.atan2(v[0] - cx, v[1] - cy);
- });
- return polygon.sort(function(a, b) {
- return a.angle - b.angle;
- }).filter(function(d, i) {
- return !i || (d.angle - polygon[i - 1].angle > 1e-10);
- });
- });
-};
-
-var d3_voronoi_opposite = {"l": "r", "r": "l"};
-
-function d3_voronoi_tessellate(vertices, callback) {
-
- var Sites = {
- list: vertices
- .map(function(v, i) {
- return {
- index: i,
- x: v[0],
- y: v[1]
- };
- })
- .sort(function(a, b) {
- return a.y < b.y ? -1
- : a.y > b.y ? 1
- : a.x < b.x ? -1
- : a.x > b.x ? 1
- : 0;
- }),
- bottomSite: null
- };
-
- var EdgeList = {
- list: [],
- leftEnd: null,
- rightEnd: null,
-
- init: function() {
- EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
- EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
- EdgeList.leftEnd.r = EdgeList.rightEnd;
- EdgeList.rightEnd.l = EdgeList.leftEnd;
- EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
- },
-
- createHalfEdge: function(edge, side) {
- return {
- edge: edge,
- side: side,
- vertex: null,
- "l": null,
- "r": null
- };
- },
-
- insert: function(lb, he) {
- he.l = lb;
- he.r = lb.r;
- lb.r.l = he;
- lb.r = he;
- },
-
- leftBound: function(p) {
- var he = EdgeList.leftEnd;
- do {
- he = he.r;
- } while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
- he = he.l;
- return he;
- },
-
- del: function(he) {
- he.l.r = he.r;
- he.r.l = he.l;
- he.edge = null;
- },
-
- right: function(he) {
- return he.r;
- },
-
- left: function(he) {
- return he.l;
- },
-
- leftRegion: function(he) {
- return he.edge == null
- ? Sites.bottomSite
- : he.edge.region[he.side];
- },
-
- rightRegion: function(he) {
- return he.edge == null
- ? Sites.bottomSite
- : he.edge.region[d3_voronoi_opposite[he.side]];
- }
- };
-
- var Geom = {
-
- bisect: function(s1, s2) {
- var newEdge = {
- region: {"l": s1, "r": s2},
- ep: {"l": null, "r": null}
- };
-
- var dx = s2.x - s1.x,
- dy = s2.y - s1.y,
- adx = dx > 0 ? dx : -dx,
- ady = dy > 0 ? dy : -dy;
-
- newEdge.c = s1.x * dx + s1.y * dy
- + (dx * dx + dy * dy) * .5;
-
- if (adx > ady) {
- newEdge.a = 1;
- newEdge.b = dy / dx;
- newEdge.c /= dx;
- } else {
- newEdge.b = 1;
- newEdge.a = dx / dy;
- newEdge.c /= dy;
- }
-
- return newEdge;
- },
-
- intersect: function(el1, el2) {
- var e1 = el1.edge,
- e2 = el2.edge;
- if (!e1 || !e2 || (e1.region.r == e2.region.r)) {
- return null;
- }
- var d = (e1.a * e2.b) - (e1.b * e2.a);
- if (Math.abs(d) < 1e-10) {
- return null;
- }
- var xint = (e1.c * e2.b - e2.c * e1.b) / d,
- yint = (e2.c * e1.a - e1.c * e2.a) / d,
- e1r = e1.region.r,
- e2r = e2.region.r,
- el,
- e;
- if ((e1r.y < e2r.y) ||
- (e1r.y == e2r.y && e1r.x < e2r.x)) {
- el = el1;
- e = e1;
- } else {
- el = el2;
- e = e2;
- }
- var rightOfSite = (xint >= e.region.r.x);
- if ((rightOfSite && (el.side === "l")) ||
- (!rightOfSite && (el.side === "r"))) {
- return null;
- }
- return {
- x: xint,
- y: yint
- };
- },
-
- rightOf: function(he, p) {
- var e = he.edge,
- topsite = e.region.r,
- rightOfSite = (p.x > topsite.x);
-
- if (rightOfSite && (he.side === "l")) {
- return 1;
- }
- if (!rightOfSite && (he.side === "r")) {
- return 0;
- }
- if (e.a === 1) {
- var dyp = p.y - topsite.y,
- dxp = p.x - topsite.x,
- fast = 0,
- above = 0;
-
- if ((!rightOfSite && (e.b < 0)) ||
- (rightOfSite && (e.b >= 0))) {
- above = fast = (dyp >= e.b * dxp);
- } else {
- above = ((p.x + p.y * e.b) > e.c);
- if (e.b < 0) {
- above = !above;
- }
- if (!above) {
- fast = 1;
- }
- }
- if (!fast) {
- var dxs = topsite.x - e.region.l.x;
- above = (e.b * (dxp * dxp - dyp * dyp)) <
- (dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b));
-
- if (e.b < 0) {
- above = !above;
- }
- }
- } else /* e.b == 1 */ {
- var yl = e.c - e.a * p.x,
- t1 = p.y - yl,
- t2 = p.x - topsite.x,
- t3 = yl - topsite.y;
-
- above = (t1 * t1) > (t2 * t2 + t3 * t3);
- }
- return he.side === "l" ? above : !above;
- },
-
- endPoint: function(edge, side, site) {
- edge.ep[side] = site;
- if (!edge.ep[d3_voronoi_opposite[side]]) return;
- callback(edge);
- },
-
- distance: function(s, t) {
- var dx = s.x - t.x,
- dy = s.y - t.y;
- return Math.sqrt(dx * dx + dy * dy);
- }
- };
-
- var EventQueue = {
- list: [],
-
- insert: function(he, site, offset) {
- he.vertex = site;
- he.ystar = site.y + offset;
- for (var i=0, list=EventQueue.list, l=list.length; i<l; i++) {
- var next = list[i];
- if (he.ystar > next.ystar ||
- (he.ystar == next.ystar &&
- site.x > next.vertex.x)) {
- continue;
- } else {
- break;
- }
- }
- list.splice(i, 0, he);
- },
-
- del: function(he) {
- for (var i=0, ls=EventQueue.list, l=ls.length; i<l && (ls[i] != he); ++i) {}
- ls.splice(i, 1);
- },
-
- empty: function() { return EventQueue.list.length === 0; },
-
- nextEvent: function(he) {
- for (var i=0, ls=EventQueue.list, l=ls.length; i<l; ++i) {
- if (ls[i] == he) return ls[i+1];
- }
- return null;
- },
-
- min: function() {
- var elem = EventQueue.list[0];
- return {
- x: elem.vertex.x,
- y: elem.ystar
- };
- },
-
- extractMin: function() {
- return EventQueue.list.shift();
- }
- };
-
- EdgeList.init();
- Sites.bottomSite = Sites.list.shift();
-
- var newSite = Sites.list.shift(), newIntStar;
- var lbnd, rbnd, llbnd, rrbnd, bisector;
- var bot, top, temp, p, v;
- var e, pm;
-
- while (true) {
- if (!EventQueue.empty()) {
- newIntStar = EventQueue.min();
- }
- if (newSite && (EventQueue.empty()
- || newSite.y < newIntStar.y
- || (newSite.y == newIntStar.y
- && newSite.x < newIntStar.x))) { //new site is smallest
- lbnd = EdgeList.leftBound(newSite);
- rbnd = EdgeList.right(lbnd);
- bot = EdgeList.rightRegion(lbnd);
- e = Geom.bisect(bot, newSite);
- bisector = EdgeList.createHalfEdge(e, "l");
- EdgeList.insert(lbnd, bisector);
- p = Geom.intersect(lbnd, bisector);
- if (p) {
- EventQueue.del(lbnd);
- EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
- }
- lbnd = bisector;
- bisector = EdgeList.createHalfEdge(e, "r");
- EdgeList.insert(lbnd, bisector);
- p = Geom.intersect(bisector, rbnd);
- if (p) {
- EventQueue.insert(bisector, p, Geom.distance(p, newSite));
- }
- newSite = Sites.list.shift();
- } else if (!EventQueue.empty()) { //intersection is smallest
- lbnd = EventQueue.extractMin();
- llbnd = EdgeList.left(lbnd);
- rbnd = EdgeList.right(lbnd);
- rrbnd = EdgeList.right(rbnd);
- bot = EdgeList.leftRegion(lbnd);
- top = EdgeList.rightRegion(rbnd);
- v = lbnd.vertex;
- Geom.endPoint(lbnd.edge, lbnd.side, v);
- Geom.endPoint(rbnd.edge, rbnd.side, v);
- EdgeList.del(lbnd);
- EventQueue.del(rbnd);
- EdgeList.del(rbnd);
- pm = "l";
- if (bot.y > top.y) {
- temp = bot;
- bot = top;
- top = temp;
- pm = "r";
- }
- e = Geom.bisect(bot, top);
- bisector = EdgeList.createHalfEdge(e, pm);
- EdgeList.insert(llbnd, bisector);
- Geom.endPoint(e, d3_voronoi_opposite[pm], v);
- p = Geom.intersect(llbnd, bisector);
- if (p) {
- EventQueue.del(llbnd);
- EventQueue.insert(llbnd, p, Geom.distance(p, bot));
- }
- p = Geom.intersect(bisector, rrbnd);
- if (p) {
- EventQueue.insert(bisector, p, Geom.distance(p, bot));
- }
- } else {
- break;
- }
- }//end while
-
- for (lbnd = EdgeList.right(EdgeList.leftEnd);
- lbnd != EdgeList.rightEnd;
- lbnd = EdgeList.right(lbnd)) {
- callback(lbnd.edge);
- }
-}
-/**
-* @param vertices [[x1, y1], [x2, y2], …]
-* @returns triangles [[[x1, y1], [x2, y2], [x3, y3]], …]
- */
-d3.geom.delaunay = function(vertices) {
- var edges = vertices.map(function() { return []; }),
- triangles = [];
-
- // Use the Voronoi tessellation to determine Delaunay edges.
- d3_voronoi_tessellate(vertices, function(e) {
- edges[e.region.l.index].push(vertices[e.region.r.index]);
- });
-
- // Reconnect the edges into counterclockwise triangles.
- edges.forEach(function(edge, i) {
- var v = vertices[i],
- cx = v[0],
- cy = v[1];
- edge.forEach(function(v) {
- v.angle = Math.atan2(v[0] - cx, v[1] - cy);
- });
- edge.sort(function(a, b) {
- return a.angle - b.angle;
- });
- for (var j = 0, m = edge.length - 1; j < m; j++) {
- triangles.push([v, edge[j], edge[j + 1]]);
- }
- });
-
- return triangles;
-};
-// Constructs a new quadtree for the specified array of points. A quadtree is a
-// two-dimensional recursive spatial subdivision. This implementation uses
-// square partitions, dividing each square into four equally-sized squares. Each
-// point exists in a unique node; if multiple points are in the same position,
-// some points may be stored on internal nodes rather than leaf nodes. Quadtrees
-// can be used to accelerate various spatial operations, such as the Barnes-Hut
-// approximation for computing n-body forces, or collision detection.
-d3.geom.quadtree = function(points, x1, y1, x2, y2) {
- var p,
- i = -1,
- n = points.length;
-
- // Type conversion for deprecated API.
- if (n && isNaN(points[0].x)) points = points.map(d3_geom_quadtreePoint);
-
- // Allow bounds to be specified explicitly.
- if (arguments.length < 5) {
- if (arguments.length === 3) {
- y2 = x2 = y1;
- y1 = x1;
- } else {
- x1 = y1 = Infinity;
- x2 = y2 = -Infinity;
-
- // Compute bounds.
- while (++i < n) {
- p = points[i];
- if (p.x < x1) x1 = p.x;
- if (p.y < y1) y1 = p.y;
- if (p.x > x2) x2 = p.x;
- if (p.y > y2) y2 = p.y;
- }
-
- // Squarify the bounds.
- var dx = x2 - x1,
- dy = y2 - y1;
- if (dx > dy) y2 = y1 + dx;
- else x2 = x1 + dy;
- }
- }
-
- // Recursively inserts the specified point p at the node n or one of its
- // descendants. The bounds are defined by [x1, x2] and [y1, y2].
- function insert(n, p, x1, y1, x2, y2) {
- if (isNaN(p.x) || isNaN(p.y)) return; // ignore invalid points
- if (n.leaf) {
- var v = n.point;
- if (v) {
- // If the point at this leaf node is at the same position as the new
- // point we are adding, we leave the point associated with the
- // internal node while adding the new point to a child node. This
- // avoids infinite recursion.
- if ((Math.abs(v.x - p.x) + Math.abs(v.y - p.y)) < .01) {
- insertChild(n, p, x1, y1, x2, y2);
- } else {
- n.point = null;
- insertChild(n, v, x1, y1, x2, y2);
- insertChild(n, p, x1, y1, x2, y2);
- }
- } else {
- n.point = p;
- }
- } else {
- insertChild(n, p, x1, y1, x2, y2);
- }
- }
-
- // Recursively inserts the specified point p into a descendant of node n. The
- // bounds are defined by [x1, x2] and [y1, y2].
- function insertChild(n, p, x1, y1, x2, y2) {
- // Compute the split point, and the quadrant in which to insert p.
- var sx = (x1 + x2) * .5,
- sy = (y1 + y2) * .5,
- right = p.x >= sx,
- bottom = p.y >= sy,
- i = (bottom << 1) + right;
-
- // Recursively insert into the child node.
- n.leaf = false;
- n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
-
- // Update the bounds as we recurse.
- if (right) x1 = sx; else x2 = sx;
- if (bottom) y1 = sy; else y2 = sy;
- insert(n, p, x1, y1, x2, y2);
- }
-
- // Create the root node.
- var root = d3_geom_quadtreeNode();
-
- root.add = function(p) {
- insert(root, p, x1, y1, x2, y2);
- };
-
- root.visit = function(f) {
- d3_geom_quadtreeVisit(f, root, x1, y1, x2, y2);
- };
-
- // Insert all points.
- points.forEach(root.add);
- return root;
-};
-
-function d3_geom_quadtreeNode() {
- return {
- leaf: true,
- nodes: [],
- point: null
- };
-}
-
-function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
- if (!f(node, x1, y1, x2, y2)) {
- var sx = (x1 + x2) * .5,
- sy = (y1 + y2) * .5,
- children = node.nodes;
- if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
- if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
- if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
- if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
- }
-}
-
-function d3_geom_quadtreePoint(p) {
- return {
- x: p[0],
- y: p[1]
- };
-}
-})();
diff --git a/media/d3.geom.min.js b/media/d3.geom.min.js
deleted file mode 100644
index 2dc6395..0000000
--- a/media/d3.geom.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){function c(a){var b=0,c=0;for(;;){if(a(b,c))return[b,c];b===0?(b=c+1,c=0):(b-=1,c+=1)}}function d(a,b,c,d){var e,f,g,h,i,j,k;return e=d[a],f=e[0],g=e[1],e=d[b],h=e[0],i=e[1],e=d[c],j=e[0],k=e[1],(k-g)*(h-f)-(i-g)*(j-f)>0}function e(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function f(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function h(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.y<b.y?-1:a.y>b.y?1:a.x<b.x?-1:a.x>b.x?1:0}),bottomSite:null},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[g[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y<i.y||h.y==i.y&&h.x<i.x?(j=a,k=c):(j=b,k=d);var l=f>=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)<j*f*(1+2*g/j+c.b*c.b),c.b<0&&(i=!i)}}else{var k=c.c-c.a*b.x,l=b.y-k,m=b.x-d.x,n=k-d.y;i=l*l>m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[g[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;d<g;d++){var h=e[d];if(a.ystar>h.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;b<d&&c[b]!=a;++b);c.splice(b,1)},empty:function(){return f.list.length===0},nextEvent:function(a){for(var b=0,c=f.list,d=c.length;b<d;++b)if(c[b]==a)return c[b+1];return null},min:function(){var a=f.list[0];return{x:a.vertex.x,y:a.ystar}},extractMin:function(){return f.list.shift()}};d.init(),c.bottomSite=c.list.shift();var h=c.list.shift(),i,j,k,l,m,n,o,p,q,r,s,t,u;for(;;){f.empty()||(i=f.min());if(h&&(f.empty()||h.y<i.y||h.y==i.y&&h.x<i.x))j=d.leftBound(h),k=d.right(j),o=d.rightRegion(j),t=e.bisect(o,h),n=d.createHalfEdge(t,"l"),d.insert(j,n),r=e.intersect(j,n),r&&(f.del(j),f.insert(j,r,e.distance(r,h))),j=n,n=d.createHalfEdge(t,"r"),d.insert(j,n),r=e.intersect(n,k),r&&f.insert(n,r,e.distance(r,h)),h=c.list.shift();else if(!f.empty())j=f.extractMin(),l=d.left(j),k=d.right(j),m=d.right(k),o=d.leftRegion(j),p=d.rightRegion(k),s=j.vertex,e.endPoint(j.edge,j.side,s),e.endPoint(k.edge,k.side,s),d.del(j),f.del(k),d.del(k),u="l",o.y>p.y&&(q=o,o=p,p=q,u="r"),t=e.bisect(o,p),n=d.createHalfEdge(t,u),d.insert(l,n),e.endPoint(t,g[u],s),r=e.intersect(l,n),r&&(f.del(l),f.insert(l,r,e.distance(r,o))),r=e.intersect(n,m),r&&f.insert(n,r,e.distance(r,o));else break}for(j=d.right(d.leftEnd);j!=d.rightEnd;j=d.right(j))b(j.edge)}function i(){return{leaf:!0,nodes:[],point:null}}function j(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&j(a,i[0],c,d,g,h),i[1]&&j(a,i[1],g,d,e,h),i[2]&&j(a,i[2],c,h,g,f),i[3]&&j(a,i[3],g,h,e,f)}}function k(a){return{x:a[0],y:a[1]}}d3.geom={},d3.geom.contour=function(d,e){var f=e||c(d),g=[],h=f[0],i=f[1],j=0,k=0,l=NaN,m=NaN,n=0;do n=0,d(h-1,i-1)&&(n+=1),d(h,i-1)&&(n+=2),d(h-1,i)&&(n+=4),d(h,i)&&(n+=8),n===6?(j=m===-1?-1:1,k=0):n===9?(j=0,k=l===1?-1:1):(j=a[n],k=b[n]),j!=l&&k!=m&&(g.push([h,i]),l=j,m=k),h+=j,i+=k;while(f[0]!=h||f[1]!=i);return g};var a=[1,0,1,1,-1,0,-1,1,0,0,0,0,-1,0,-1,NaN],b=[0,-1,0,0,0,-1,0,0,1,-1,1,1,0,-1,0,NaN];d3.geom.hull=function(a){if(a.length<3)return[];var b=a.length,c=b-1,e=[],f=[],g,h,i=0,j,k,l,m,n,o,p,q;for(g=1;g<b;++g)a[g][1]<a[i][1]?i=g:a[g][1]==a[i][1]&&(i=a[g][0]<a[i][0]?g:i);for(g=0;g<b;++g){if(g===i)continue;k=a[g][1]-a[i][1],j=a[g][0]-a[i][0],e.push({angle:Math.atan2(k,j),index:g})}e.sort(function(a,b){return a.angle-b.angle}),p=e[0].angle,o=e[0].index,n=0;for(g=1;g<c;++g)h=e[g].index,p==e[g].angle?(j=a[o][0]-a[i][0],k=a[o][1]-a[i][1],l=a[h][0]-a[i][0],m=a[h][1]-a[i][1],j*j+k*k>=l*l+m*m?e[g].index=-1:(e[n].index=-1,p=e[g].angle,n=g,o=h)):(p=e[g].angle,n=g,o=h);f.push(i);for(g=0,h=0;g<2;++h)e[h].index!==-1&&(f.push(e[h].index),g++);q=f.length;for(;h<c;++h){if(e[h].index===-1)continue;while(!d(f[q-2],f[q-1],e[h].index,a))--q;f[q++]=e[h].index}var r=[];for(g=0;g<q;++g)r.push(a[f[g]]);return r},d3.geom.polygon=function(a){return a.area=function(){var b=0,c=a.length,d=a[c-1][0]*a[0][1],e=a[c-1][1]*a[0][0];while(++b<c)d+=a[b-1][0]*a[b][1],e+=a[b-1][1]*a[b][0];return(e-d)*.5},a.centroid=function(b){var c=-1,d=a.length-1,e=0,f=0,g,h,i;arguments.length||(b=-1/(6*a.area()));while(++c<d)g=a[c],h=a[c+1],i=g[0]*h[1]-h[0]*g[1],e+=(g[0]+h[0])*i,f+=(g[1]+h[1])*i;return[e*b,f*b]},a.clip=function(b){var c,d=-1,g=a.length,h,i,j=a[g-1],k,l,m;while(++d<g){c=b.slice(),b.length=0,k=a[d],l=c[(i=c.length)-1],h=-1;while(++h<i)m=c[h],e(m,j,k)?(e(l,j,k)||b.push(f(l,m,j,k)),b.push(m)):e(l,j,k)&&b.push(f(l,m,j,k)),l=m;j=k}return b},a},d3.geom.voronoi=function(a){var b=a.map(function(){return[]});return h(a,function(a){var c,d,e,f,g,h;a.a===1&&a.b>=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var g={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return h(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h<i;h++)c.push([e,b[h],b[h+1]])}),c},d3.geom.quadtree=function(a,b,c,d,e){function n(a,b,c,d,e,f){if(isNaN(b.x)||isNaN(b.y))return;if(a.leaf){var g=a.point;g?Math.abs(g.x-b.x)+Math.abs(g.y-b.y)<.01?o(a,b,c,d,e,f):(a.point=null,o(a,g,c,d,e,f),o(a,b,c,d,e,f)):a.point=b}else o(a,b,c,d,e,f)}function o(a,b,c,d,e,f){var g=(c+e)*.5,h=(d+f)*.5,j=b.x>=g,k=b.y>=h,l=(k<<1)+j;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=i()),j?c=g:e=g,k?d=h:f=h,n(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(k));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++g<h)f=a[g],f.x<b&&(b=f.x),f.y<c&&(c=f.y),f.x>d&&(d=f.x),f.y>e&&(e=f.y);var l=d-b,m=e-c;l>m?e=c+l:d=b+m}var p=i();return p.add=function(a){n(p,a,b,c,d,e)},p.visit=function(a){j(a,p,b,c,d,e)},a.forEach(p.add),p}})(); \ No newline at end of file
diff --git a/media/d3.js b/media/d3.js
deleted file mode 100644
index d71f57d..0000000
--- a/media/d3.js
+++ /dev/null
@@ -1,4676 +0,0 @@
-(function(){if (!Date.now) Date.now = function() {
- return +new Date;
-};
-try {
- document.createElement("div").style.setProperty("opacity", 0, "");
-} catch (error) {
- var d3_style_prototype = CSSStyleDeclaration.prototype,
- d3_style_setProperty = d3_style_prototype.setProperty;
- d3_style_prototype.setProperty = function(name, value, priority) {
- d3_style_setProperty.call(this, name, value + "", priority);
- };
-}
-d3 = {version: "2.6.1"}; // semver
-var d3_array = d3_arraySlice; // conversion for NodeLists
-
-function d3_arrayCopy(pseudoarray) {
- var i = -1, n = pseudoarray.length, array = [];
- while (++i < n) array.push(pseudoarray[i]);
- return array;
-}
-
-function d3_arraySlice(pseudoarray) {
- return Array.prototype.slice.call(pseudoarray);
-}
-
-try {
- d3_array(document.documentElement.childNodes)[0].nodeType;
-} catch(e) {
- d3_array = d3_arrayCopy;
-}
-
-var d3_arraySubclass = [].__proto__?
-
-// Until ECMAScript supports array subclassing, prototype injection works well.
-function(array, prototype) {
- array.__proto__ = prototype;
-}:
-
-// And if your browser doesn't support __proto__, we'll use direct extension.
-function(array, prototype) {
- for (var property in prototype) array[property] = prototype[property];
-};
-function d3_this() {
- return this;
-}
-d3.functor = function(v) {
- return typeof v === "function" ? v : function() { return v; };
-};
-// Copies a variable number of methods from source to target.
-d3.rebind = function(target, source) {
- var i = 1, n = arguments.length, method;
- while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
- return target;
-};
-
-// Method is assumed to be a standard D3 getter-setter:
-// If passed with no arguments, gets the value.
-// If passed with arguments, sets the value and returns the target.
-function d3_rebind(target, source, method) {
- return function() {
- var value = method.apply(source, arguments);
- return arguments.length ? target : value;
- };
-}
-d3.ascending = function(a, b) {
- return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
-};
-d3.descending = function(a, b) {
- return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
-};
-d3.mean = function(array, f) {
- var n = array.length,
- a,
- m = 0,
- i = -1,
- j = 0;
- if (arguments.length === 1) {
- while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
- } else {
- while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
- }
- return j ? m : undefined;
-};
-d3.median = function(array, f) {
- if (arguments.length > 1) array = array.map(f);
- array = array.filter(d3_number);
- return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
-};
-d3.min = function(array, f) {
- var i = -1,
- n = array.length,
- a,
- b;
- if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
- while (++i < n) if ((b = array[i]) != null && a > b) a = b;
- } else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
- }
- return a;
-};
-d3.max = function(array, f) {
- var i = -1,
- n = array.length,
- a,
- b;
- if (arguments.length === 1) {
- while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
- while (++i < n) if ((b = array[i]) != null && b > a) a = b;
- } else {
- while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
- }
- return a;
-};
-d3.extent = function(array, f) {
- var i = -1,
- n = array.length,
- a,
- b,
- c;
- if (arguments.length === 1) {
- while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
- while (++i < n) if ((b = array[i]) != null) {
- if (a > b) a = b;
- if (c < b) c = b;
- }
- } else {
- while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
- while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
- if (a > b) a = b;
- if (c < b) c = b;
- }
- }
- return [a, c];
-};
-d3.random = {
- normal: function(mean, deviation) {
- if (arguments.length < 2) deviation = 1;
- if (arguments.length < 1) mean = 0;
- return function() {
- var x, y, r;
- do {
- x = Math.random() * 2 - 1;
- y = Math.random() * 2 - 1;
- r = x * x + y * y;
- } while (!r || r > 1);
- return mean + deviation * x * Math.sqrt(-2 * Math.log(r) / r);
- };
- }
-};
-function d3_number(x) {
- return x != null && !isNaN(x);
-}
-d3.sum = function(array, f) {
- var s = 0,
- n = array.length,
- a,
- i = -1;
-
- if (arguments.length === 1) {
- while (++i < n) if (!isNaN(a = +array[i])) s += a;
- } else {
- while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
- }
-
- return s;
-};
-// R-7 per <http://en.wikipedia.org/wiki/Quantile>
-d3.quantile = function(values, p) {
- var H = (values.length - 1) * p + 1,
- h = Math.floor(H),
- v = values[h - 1],
- e = H - h;
- return e ? v + e * (values[h] - v) : v;
-};
-d3.transpose = function(matrix) {
- return d3.zip.apply(d3, matrix);
-};
-d3.zip = function() {
- if (!(n = arguments.length)) return [];
- for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
- for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) {
- zip[j] = arguments[j][i];
- }
- }
- return zips;
-};
-
-function d3_zipLength(d) {
- return d.length;
-}
-// Locate the insertion point for x in a to maintain sorted order. The
-// arguments lo and hi may be used to specify a subset of the array which should
-// be considered; by default the entire array is used. If x is already present
-// in a, the insertion point will be before (to the left of) any existing
-// entries. The return value is suitable for use as the first argument to
-// `array.splice` assuming that a is already sorted.
-//
-// The returned insertion point i partitions the array a into two halves so that
-// all v < x for v in a[lo:i] for the left side and all v >= x for v in a[i:hi]
-// for the right side.
-d3.bisectLeft = function(a, x, lo, hi) {
- if (arguments.length < 3) lo = 0;
- if (arguments.length < 4) hi = a.length;
- while (lo < hi) {
- var mid = (lo + hi) >> 1;
- if (a[mid] < x) lo = mid + 1;
- else hi = mid;
- }
- return lo;
-};
-
-// Similar to bisectLeft, but returns an insertion point which comes after (to
-// the right of) any existing entries of x in a.
-//
-// The returned insertion point i partitions the array into two halves so that
-// all v <= x for v in a[lo:i] for the left side and all v > x for v in a[i:hi]
-// for the right side.
-d3.bisect =
-d3.bisectRight = function(a, x, lo, hi) {
- if (arguments.length < 3) lo = 0;
- if (arguments.length < 4) hi = a.length;
- while (lo < hi) {
- var mid = (lo + hi) >> 1;
- if (x < a[mid]) hi = mid;
- else lo = mid + 1;
- }
- return lo;
-};
-d3.first = function(array, f) {
- var i = 0,
- n = array.length,
- a = array[0],
- b;
- if (arguments.length === 1) f = d3.ascending;
- while (++i < n) {
- if (f.call(array, a, b = array[i]) > 0) {
- a = b;
- }
- }
- return a;
-};
-d3.last = function(array, f) {
- var i = 0,
- n = array.length,
- a = array[0],
- b;
- if (arguments.length === 1) f = d3.ascending;
- while (++i < n) {
- if (f.call(array, a, b = array[i]) <= 0) {
- a = b;
- }
- }
- return a;
-};
-d3.nest = function() {
- var nest = {},
- keys = [],
- sortKeys = [],
- sortValues,
- rollup;
-
- function map(array, depth) {
- if (depth >= keys.length) return rollup
- ? rollup.call(nest, array) : (sortValues
- ? array.sort(sortValues)
- : array);
-
- var i = -1,
- n = array.length,
- key = keys[depth++],
- keyValue,
- object,
- o = {};
-
- while (++i < n) {
- if ((keyValue = key(object = array[i])) in o) {
- o[keyValue].push(object);
- } else {
- o[keyValue] = [object];
- }
- }
-
- for (keyValue in o) {
- o[keyValue] = map(o[keyValue], depth);
- }
-
- return o;
- }
-
- function entries(map, depth) {
- if (depth >= keys.length) return map;
-
- var a = [],
- sortKey = sortKeys[depth++],
- key;
-
- for (key in map) {
- a.push({key: key, values: entries(map[key], depth)});
- }
-
- if (sortKey) a.sort(function(a, b) {
- return sortKey(a.key, b.key);
- });
-
- return a;
- }
-
- nest.map = function(array) {
- return map(array, 0);
- };
-
- nest.entries = function(array) {
- return entries(map(array, 0), 0);
- };
-
- nest.key = function(d) {
- keys.push(d);
- return nest;
- };
-
- // Specifies the order for the most-recently specified key.
- // Note: only applies to entries. Map keys are unordered!
- nest.sortKeys = function(order) {
- sortKeys[keys.length - 1] = order;
- return nest;
- };
-
- // Specifies the order for leaf values.
- // Applies to both maps and entries array.
- nest.sortValues = function(order) {
- sortValues = order;
- return nest;
- };
-
- nest.rollup = function(f) {
- rollup = f;
- return nest;
- };
-
- return nest;
-};
-d3.keys = function(map) {
- var keys = [];
- for (var key in map) keys.push(key);
- return keys;
-};
-d3.values = function(map) {
- var values = [];
- for (var key in map) values.push(map[key]);
- return values;
-};
-d3.entries = function(map) {
- var entries = [];
- for (var key in map) entries.push({key: key, value: map[key]});
- return entries;
-};
-d3.permute = function(array, indexes) {
- var permutes = [],
- i = -1,
- n = indexes.length;
- while (++i < n) permutes[i] = array[indexes[i]];
- return permutes;
-};
-d3.merge = function(arrays) {
- return Array.prototype.concat.apply([], arrays);
-};
-d3.split = function(array, f) {
- var arrays = [],
- values = [],
- value,
- i = -1,
- n = array.length;
- if (arguments.length < 2) f = d3_splitter;
- while (++i < n) {
- if (f.call(values, value = array[i], i)) {
- values = [];
- } else {
- if (!values.length) arrays.push(values);
- values.push(value);
- }
- }
- return arrays;
-};
-
-function d3_splitter(d) {
- return d == null;
-}
-function d3_collapse(s) {
- return s.replace(/(^\s+)|(\s+$)/g, "").replace(/\s+/g, " ");
-}
-/**
- * @param {number} start
- * @param {number=} stop
- * @param {number=} step
- */
-d3.range = function(start, stop, step) {
- if (arguments.length < 3) {
- step = 1;
- if (arguments.length < 2) {
- stop = start;
- start = 0;
- }
- }
- if ((stop - start) / step == Infinity) throw new Error("infinite range");
- var range = [],
- i = -1,
- j;
- if (step < 0) while ((j = start + step * ++i) > stop) range.push(j);
- else while ((j = start + step * ++i) < stop) range.push(j);
- return range;
-};
-d3.requote = function(s) {
- return s.replace(d3_requote_re, "\\$&");
-};
-
-var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
-d3.round = function(x, n) {
- return n
- ? Math.round(x * Math.pow(10, n)) * Math.pow(10, -n)
- : Math.round(x);
-};
-d3.xhr = function(url, mime, callback) {
- var req = new XMLHttpRequest;
- if (arguments.length < 3) callback = mime;
- else if (mime && req.overrideMimeType) req.overrideMimeType(mime);
- req.open("GET", url, true);
- req.onreadystatechange = function() {
- if (req.readyState === 4) callback(req.status < 300 ? req : null);
- };
- req.send(null);
-};
-d3.text = function(url, mime, callback) {
- function ready(req) {
- callback(req && req.responseText);
- }
- if (arguments.length < 3) {
- callback = mime;
- mime = null;
- }
- d3.xhr(url, mime, ready);
-};
-d3.json = function(url, callback) {
- d3.text(url, "application/json", function(text) {
- callback(text ? JSON.parse(text) : null);
- });
-};
-d3.html = function(url, callback) {
- d3.text(url, "text/html", function(text) {
- if (text != null) { // Treat empty string as valid HTML.
- var range = document.createRange();
- range.selectNode(document.body);
- text = range.createContextualFragment(text);
- }
- callback(text);
- });
-};
-d3.xml = function(url, mime, callback) {
- function ready(req) {
- callback(req && req.responseXML);
- }
- if (arguments.length < 3) {
- callback = mime;
- mime = null;
- }
- d3.xhr(url, mime, ready);
-};
-var d3_nsPrefix = {
- svg: "http://www.w3.org/2000/svg",
- xhtml: "http://www.w3.org/1999/xhtml",
- xlink: "http://www.w3.org/1999/xlink",
- xml: "http://www.w3.org/XML/1998/namespace",
- xmlns: "http://www.w3.org/2000/xmlns/"
-};
-
-d3.ns = {
- prefix: d3_nsPrefix,
- qualify: function(name) {
- var i = name.indexOf(":");
- return i < 0 ? (name in d3_nsPrefix
- ? {space: d3_nsPrefix[name], local: name} : name)
- : {space: d3_nsPrefix[name.substring(0, i)], local: name.substring(i + 1)};
- }
-};
-d3.dispatch = function() {
- var dispatch = new d3_dispatch(),
- i = -1,
- n = arguments.length;
- while (++i < n) dispatch[arguments[i]] = d3_dispatch_event();
- return dispatch;
-};
-
-function d3_dispatch() {}
-
-d3_dispatch.prototype.on = function(type, listener) {
- var i = type.indexOf("."),
- name = "";
-
- // Extract optional namespace, e.g., "click.foo"
- if (i > 0) {
- name = type.substring(i + 1);
- type = type.substring(0, i);
- }
-
- return arguments.length < 2
- ? this[type].on(name)
- : (this[type].on(name, listener), this);
-};
-
-function d3_dispatch_event() {
- var listeners = [],
- listenerByName = {};
-
- function dispatch() {
- var z = listeners, // defensive reference
- i = -1,
- n = z.length,
- l;
- while (++i < n) if (l = z[i].on) l.apply(this, arguments);
- }
-
- dispatch.on = function(name, listener) {
- var l, i;
-
- // return the current listener, if any
- if (arguments.length < 2) return (l = listenerByName[name]) && l.on;
-
- // remove the old listener, if any (with copy-on-write)
- if (l = listenerByName[name]) {
- l.on = null;
- listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
- delete listenerByName[name];
- }
-
- // add the new listener, if any
- if (listener) {
- listeners.push(listenerByName[name] = {on: listener});
- }
-
- return dispatch;
- };
-
- return dispatch;
-};
-// TODO align
-d3.format = function(specifier) {
- var match = d3_format_re.exec(specifier),
- fill = match[1] || " ",
- sign = match[3] || "",
- zfill = match[5],
- width = +match[6],
- comma = match[7],
- precision = match[8],
- type = match[9],
- scale = 1,
- suffix = "",
- integer = false;
-
- if (precision) precision = +precision.substring(1);
-
- if (zfill) {
- fill = "0"; // TODO align = "=";
- if (comma) width -= Math.floor((width - 1) / 4);
- }
-
- switch (type) {
- case "n": comma = true; type = "g"; break;
- case "%": scale = 100; suffix = "%"; type = "f"; break;
- case "p": scale = 100; suffix = "%"; type = "r"; break;
- case "d": integer = true; precision = 0; break;
- case "s": scale = -1; type = "r"; break;
- }
-
- // If no precision is specified for r, fallback to general notation.
- if (type == "r" && !precision) type = "g";
-
- type = d3_format_types[type] || d3_format_typeDefault;
-
- return function(value) {
-
- // Return the empty string for floats formatted as ints.
- if (integer && (value % 1)) return "";
-
- // Convert negative to positive, and record the sign prefix.
- var negative = (value < 0) && (value = -value) ? "\u2212" : sign;
-
- // Apply the scale, computing it from the value's exponent for si format.
- if (scale < 0) {
- var prefix = d3.formatPrefix(value, precision);
- value *= prefix.scale;
- suffix = prefix.symbol;
- } else {
- value *= scale;
- }
-
- // Convert to the desired precision.
- value = type(value, precision);
-
- // If the fill character is 0, the sign and group is applied after the fill.
- if (zfill) {
- var length = value.length + negative.length;
- if (length < width) value = new Array(width - length + 1).join(fill) + value;
- if (comma) value = d3_format_group(value);
- value = negative + value;
- }
-
- // Otherwise (e.g., space-filling), the sign and group is applied before.
- else {
- if (comma) value = d3_format_group(value);
- value = negative + value;
- var length = value.length;
- if (length < width) value = new Array(width - length + 1).join(fill) + value;
- }
-
- return value + suffix;
- };
-};
-
-// [[fill]align][sign][#][0][width][,][.precision][type]
-var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/;
-
-var d3_format_types = {
- g: function(x, p) { return x.toPrecision(p); },
- e: function(x, p) { return x.toExponential(p); },
- f: function(x, p) { return x.toFixed(p); },
- r: function(x, p) { return d3.round(x, p = d3_format_precision(x, p)).toFixed(Math.max(0, Math.min(20, p))); }
-};
-
-function d3_format_precision(x, p) {
- return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1);
-}
-
-function d3_format_typeDefault(x) {
- return x + "";
-}
-
-// Apply comma grouping for thousands.
-function d3_format_group(value) {
- var i = value.lastIndexOf("."),
- f = i >= 0 ? value.substring(i) : (i = value.length, ""),
- t = [];
- while (i > 0) t.push(value.substring(i -= 3, i + 3));
- return t.reverse().join(",") + f;
-}
-var d3_formatPrefixes = ["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(d3_formatPrefix);
-
-d3.formatPrefix = function(value, precision) {
- var i = 0;
- if (value) {
- if (value < 0) value *= -1;
- if (precision) value = d3.round(value, d3_format_precision(value, precision));
- i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
- i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
- }
- return d3_formatPrefixes[8 + i / 3];
-};
-
-function d3_formatPrefix(d, i) {
- return {
- scale: Math.pow(10, (8 - i) * 3),
- symbol: d
- };
-}
-
-/*
- * TERMS OF USE - EASING EQUATIONS
- *
- * Open source under the BSD License.
- *
- * Copyright 2001 Robert Penner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * - Neither the name of the author nor the names of contributors may be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-var d3_ease_quad = d3_ease_poly(2),
- d3_ease_cubic = d3_ease_poly(3);
-
-var d3_ease = {
- linear: function() { return d3_ease_linear; },
- poly: d3_ease_poly,
- quad: function() { return d3_ease_quad; },
- cubic: function() { return d3_ease_cubic; },
- sin: function() { return d3_ease_sin; },
- exp: function() { return d3_ease_exp; },
- circle: function() { return d3_ease_circle; },
- elastic: d3_ease_elastic,
- back: d3_ease_back,
- bounce: function() { return d3_ease_bounce; }
-};
-
-var d3_ease_mode = {
- "in": function(f) { return f; },
- "out": d3_ease_reverse,
- "in-out": d3_ease_reflect,
- "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
-};
-
-d3.ease = function(name) {
- var i = name.indexOf("-"),
- t = i >= 0 ? name.substring(0, i) : name,
- m = i >= 0 ? name.substring(i + 1) : "in";
- return d3_ease_clamp(d3_ease_mode[m](d3_ease[t].apply(null, Array.prototype.slice.call(arguments, 1))));
-};
-
-function d3_ease_clamp(f) {
- return function(t) {
- return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
- };
-}
-
-function d3_ease_reverse(f) {
- return function(t) {
- return 1 - f(1 - t);
- };
-}
-
-function d3_ease_reflect(f) {
- return function(t) {
- return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
- };
-}
-
-function d3_ease_linear(t) {
- return t;
-}
-
-function d3_ease_poly(e) {
- return function(t) {
- return Math.pow(t, e);
- }
-}
-
-function d3_ease_sin(t) {
- return 1 - Math.cos(t * Math.PI / 2);
-}
-
-function d3_ease_exp(t) {
- return Math.pow(2, 10 * (t - 1));
-}
-
-function d3_ease_circle(t) {
- return 1 - Math.sqrt(1 - t * t);
-}
-
-function d3_ease_elastic(a, p) {
- var s;
- if (arguments.length < 2) p = 0.45;
- if (arguments.length < 1) { a = 1; s = p / 4; }
- else s = p / (2 * Math.PI) * Math.asin(1 / a);
- return function(t) {
- return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p);
- };
-}
-
-function d3_ease_back(s) {
- if (!s) s = 1.70158;
- return function(t) {
- return t * t * ((s + 1) * t - s);
- };
-}
-
-function d3_ease_bounce(t) {
- return t < 1 / 2.75 ? 7.5625 * t * t
- : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
- : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
- : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
-}
-d3.event = null;
-
-function d3_eventCancel() {
- d3.event.stopPropagation();
- d3.event.preventDefault();
-}
-d3.interpolate = function(a, b) {
- var i = d3.interpolators.length, f;
- while (--i >= 0 && !(f = d3.interpolators[i](a, b)));
- return f;
-};
-
-d3.interpolateNumber = function(a, b) {
- b -= a;
- return function(t) { return a + b * t; };
-};
-
-d3.interpolateRound = function(a, b) {
- b -= a;
- return function(t) { return Math.round(a + b * t); };
-};
-
-d3.interpolateString = function(a, b) {
- var m, // current match
- i, // current index
- j, // current index (for coallescing)
- s0 = 0, // start index of current string prefix
- s1 = 0, // end index of current string prefix
- s = [], // string constants and placeholders
- q = [], // number interpolators
- n, // q.length
- o;
-
- // Reset our regular expression!
- d3_interpolate_number.lastIndex = 0;
-
- // Find all numbers in b.
- for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
- if (m.index) s.push(b.substring(s0, s1 = m.index));
- q.push({i: s.length, x: m[0]});
- s.push(null);
- s0 = d3_interpolate_number.lastIndex;
- }
- if (s0 < b.length) s.push(b.substring(s0));
-
- // Find all numbers in a.
- for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
- o = q[i];
- if (o.x == m[0]) { // The numbers match, so coallesce.
- if (o.i) {
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i - 1] += o.x;
- s.splice(o.i, 1);
- for (j = i + 1; j < n; ++j) q[j].i--;
- } else { // This match is followed by a string, so coallesce twice.
- s[o.i - 1] += o.x + s[o.i + 1];
- s.splice(o.i, 2);
- for (j = i + 1; j < n; ++j) q[j].i -= 2;
- }
- } else {
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i] = o.x;
- } else { // This match is followed by a string, so coallesce twice.
- s[o.i] = o.x + s[o.i + 1];
- s.splice(o.i + 1, 1);
- for (j = i + 1; j < n; ++j) q[j].i--;
- }
- }
- q.splice(i, 1);
- n--;
- i--;
- } else {
- o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
- }
- }
-
- // Remove any numbers in b not found in a.
- while (i < n) {
- o = q.pop();
- if (s[o.i + 1] == null) { // This match is followed by another number.
- s[o.i] = o.x;
- } else { // This match is followed by a string, so coallesce twice.
- s[o.i] = o.x + s[o.i + 1];
- s.splice(o.i + 1, 1);
- }
- n--;
- }
-
- // Special optimization for only a single match.
- if (s.length === 1) {
- return s[0] == null ? q[0].x : function() { return b; };
- }
-
- // Otherwise, interpolate each of the numbers and rejoin the string.
- return function(t) {
- for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
- return s.join("");
- };
-};
-
-d3.interpolateTransform = function(a, b) {
- return d3.interpolateString(d3.transform(a) + "", d3.transform(b) + "");
-};
-
-d3.interpolateRgb = function(a, b) {
- a = d3.rgb(a);
- b = d3.rgb(b);
- var ar = a.r,
- ag = a.g,
- ab = a.b,
- br = b.r - ar,
- bg = b.g - ag,
- bb = b.b - ab;
- return function(t) {
- return "#"
- + d3_rgb_hex(Math.round(ar + br * t))
- + d3_rgb_hex(Math.round(ag + bg * t))
- + d3_rgb_hex(Math.round(ab + bb * t));
- };
-};
-
-// interpolates HSL space, but outputs RGB string (for compatibility)
-d3.interpolateHsl = function(a, b) {
- a = d3.hsl(a);
- b = d3.hsl(b);
- var h0 = a.h,
- s0 = a.s,
- l0 = a.l,
- h1 = b.h - h0,
- s1 = b.s - s0,
- l1 = b.l - l0;
- return function(t) {
- return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t).toString();
- };
-};
-
-d3.interpolateArray = function(a, b) {
- var x = [],
- c = [],
- na = a.length,
- nb = b.length,
- n0 = Math.min(a.length, b.length),
- i;
- for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i]));
- for (; i < na; ++i) c[i] = a[i];
- for (; i < nb; ++i) c[i] = b[i];
- return function(t) {
- for (i = 0; i < n0; ++i) c[i] = x[i](t);
- return c;
- };
-};
-
-d3.interpolateObject = function(a, b) {
- var i = {},
- c = {},
- k;
- for (k in a) {
- if (k in b) {
- i[k] = d3_interpolateByName(k)(a[k], b[k]);
- } else {
- c[k] = a[k];
- }
- }
- for (k in b) {
- if (!(k in a)) {
- c[k] = b[k];
- }
- }
- return function(t) {
- for (k in i) c[k] = i[k](t);
- return c;
- };
-}
-
-var d3_interpolate_number = /[-+]?(?:\d*\.?\d+)(?:[eE][-+]?\d+)?/g;
-
-function d3_interpolateByName(n) {
- return n == "transform"
- ? d3.interpolateTransform
- : d3.interpolate;
-}
-
-d3.interpolators = [
- d3.interpolateObject,
- function(a, b) { return (b instanceof Array) && d3.interpolateArray(a, b); },
- function(a, b) { return (typeof a === "string" || typeof b === "string") && d3.interpolateString(a + "", b + ""); },
- function(a, b) { return (typeof b === "string" ? b in d3_rgb_names || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Rgb || b instanceof d3_Hsl) && d3.interpolateRgb(a, b); },
- function(a, b) { return !isNaN(a = +a) && !isNaN(b = +b) && d3.interpolateNumber(a, b); }
-];
-function d3_uninterpolateNumber(a, b) {
- b = b - (a = +a) ? 1 / (b - a) : 0;
- return function(x) { return (x - a) * b; };
-}
-
-function d3_uninterpolateClamp(a, b) {
- b = b - (a = +a) ? 1 / (b - a) : 0;
- return function(x) { return Math.max(0, Math.min(1, (x - a) * b)); };
-}
-d3.rgb = function(r, g, b) {
- return arguments.length === 1
- ? (r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b)
- : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
- : d3_rgb(~~r, ~~g, ~~b);
-};
-
-function d3_rgb(r, g, b) {
- return new d3_Rgb(r, g, b);
-}
-
-function d3_Rgb(r, g, b) {
- this.r = r;
- this.g = g;
- this.b = b;
-}
-
-d3_Rgb.prototype.brighter = function(k) {
- k = Math.pow(0.7, arguments.length ? k : 1);
- var r = this.r,
- g = this.g,
- b = this.b,
- i = 30;
- if (!r && !g && !b) return d3_rgb(i, i, i);
- if (r && r < i) r = i;
- if (g && g < i) g = i;
- if (b && b < i) b = i;
- return d3_rgb(
- Math.min(255, Math.floor(r / k)),
- Math.min(255, Math.floor(g / k)),
- Math.min(255, Math.floor(b / k)));
-};
-
-d3_Rgb.prototype.darker = function(k) {
- k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_rgb(
- Math.floor(k * this.r),
- Math.floor(k * this.g),
- Math.floor(k * this.b));
-};
-
-d3_Rgb.prototype.hsl = function() {
- return d3_rgb_hsl(this.r, this.g, this.b);
-};
-
-d3_Rgb.prototype.toString = function() {
- return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
-};
-
-function d3_rgb_hex(v) {
- return v < 0x10
- ? "0" + Math.max(0, v).toString(16)
- : Math.min(255, v).toString(16);
-}
-
-function d3_rgb_parse(format, rgb, hsl) {
- var r = 0, // red channel; int in [0, 255]
- g = 0, // green channel; int in [0, 255]
- b = 0, // blue channel; int in [0, 255]
- m1, // CSS color specification match
- m2, // CSS color specification type (e.g., rgb)
- name;
-
- /* Handle hsl, rgb. */
- m1 = /([a-z]+)\((.*)\)/i.exec(format);
- if (m1) {
- m2 = m1[2].split(",");
- switch (m1[1]) {
- case "hsl": {
- return hsl(
- parseFloat(m2[0]), // degrees
- parseFloat(m2[1]) / 100, // percentage
- parseFloat(m2[2]) / 100 // percentage
- );
- }
- case "rgb": {
- return rgb(
- d3_rgb_parseNumber(m2[0]),
- d3_rgb_parseNumber(m2[1]),
- d3_rgb_parseNumber(m2[2])
- );
- }
- }
- }
-
- /* Named colors. */
- if (name = d3_rgb_names[format]) return rgb(name.r, name.g, name.b);
-
- /* Hexadecimal colors: #rgb and #rrggbb. */
- if (format != null && format.charAt(0) === "#") {
- if (format.length === 4) {
- r = format.charAt(1); r += r;
- g = format.charAt(2); g += g;
- b = format.charAt(3); b += b;
- } else if (format.length === 7) {
- r = format.substring(1, 3);
- g = format.substring(3, 5);
- b = format.substring(5, 7);
- }
- r = parseInt(r, 16);
- g = parseInt(g, 16);
- b = parseInt(b, 16);
- }
-
- return rgb(r, g, b);
-}
-
-function d3_rgb_hsl(r, g, b) {
- var min = Math.min(r /= 255, g /= 255, b /= 255),
- max = Math.max(r, g, b),
- d = max - min,
- h,
- s,
- l = (max + min) / 2;
- if (d) {
- s = l < .5 ? d / (max + min) : d / (2 - max - min);
- if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
- else if (g == max) h = (b - r) / d + 2;
- else h = (r - g) / d + 4;
- h *= 60;
- } else {
- s = h = 0;
- }
- return d3_hsl(h, s, l);
-}
-
-function d3_rgb_parseNumber(c) { // either integer or percentage
- var f = parseFloat(c);
- return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
-}
-
-var d3_rgb_names = {
- aliceblue: "#f0f8ff",
- antiquewhite: "#faebd7",
- aqua: "#00ffff",
- aquamarine: "#7fffd4",
- azure: "#f0ffff",
- beige: "#f5f5dc",
- bisque: "#ffe4c4",
- black: "#000000",
- blanchedalmond: "#ffebcd",
- blue: "#0000ff",
- blueviolet: "#8a2be2",
- brown: "#a52a2a",
- burlywood: "#deb887",
- cadetblue: "#5f9ea0",
- chartreuse: "#7fff00",
- chocolate: "#d2691e",
- coral: "#ff7f50",
- cornflowerblue: "#6495ed",
- cornsilk: "#fff8dc",
- crimson: "#dc143c",
- cyan: "#00ffff",
- darkblue: "#00008b",
- darkcyan: "#008b8b",
- darkgoldenrod: "#b8860b",
- darkgray: "#a9a9a9",
- darkgreen: "#006400",
- darkgrey: "#a9a9a9",
- darkkhaki: "#bdb76b",
- darkmagenta: "#8b008b",
- darkolivegreen: "#556b2f",
- darkorange: "#ff8c00",
- darkorchid: "#9932cc",
- darkred: "#8b0000",
- darksalmon: "#e9967a",
- darkseagreen: "#8fbc8f",
- darkslateblue: "#483d8b",
- darkslategray: "#2f4f4f",
- darkslategrey: "#2f4f4f",
- darkturquoise: "#00ced1",
- darkviolet: "#9400d3",
- deeppink: "#ff1493",
- deepskyblue: "#00bfff",
- dimgray: "#696969",
- dimgrey: "#696969",
- dodgerblue: "#1e90ff",
- firebrick: "#b22222",
- floralwhite: "#fffaf0",
- forestgreen: "#228b22",
- fuchsia: "#ff00ff",
- gainsboro: "#dcdcdc",
- ghostwhite: "#f8f8ff",
- gold: "#ffd700",
- goldenrod: "#daa520",
- gray: "#808080",
- green: "#008000",
- greenyellow: "#adff2f",
- grey: "#808080",
- honeydew: "#f0fff0",
- hotpink: "#ff69b4",
- indianred: "#cd5c5c",
- indigo: "#4b0082",
- ivory: "#fffff0",
- khaki: "#f0e68c",
- lavender: "#e6e6fa",
- lavenderblush: "#fff0f5",
- lawngreen: "#7cfc00",
- lemonchiffon: "#fffacd",
- lightblue: "#add8e6",
- lightcoral: "#f08080",
- lightcyan: "#e0ffff",
- lightgoldenrodyellow: "#fafad2",
- lightgray: "#d3d3d3",
- lightgreen: "#90ee90",
- lightgrey: "#d3d3d3",
- lightpink: "#ffb6c1",
- lightsalmon: "#ffa07a",
- lightseagreen: "#20b2aa",
- lightskyblue: "#87cefa",
- lightslategray: "#778899",
- lightslategrey: "#778899",
- lightsteelblue: "#b0c4de",
- lightyellow: "#ffffe0",
- lime: "#00ff00",
- limegreen: "#32cd32",
- linen: "#faf0e6",
- magenta: "#ff00ff",
- maroon: "#800000",
- mediumaquamarine: "#66cdaa",
- mediumblue: "#0000cd",
- mediumorchid: "#ba55d3",
- mediumpurple: "#9370db",
- mediumseagreen: "#3cb371",
- mediumslateblue: "#7b68ee",
- mediumspringgreen: "#00fa9a",
- mediumturquoise: "#48d1cc",
- mediumvioletred: "#c71585",
- midnightblue: "#191970",
- mintcream: "#f5fffa",
- mistyrose: "#ffe4e1",
- moccasin: "#ffe4b5",
- navajowhite: "#ffdead",
- navy: "#000080",
- oldlace: "#fdf5e6",
- olive: "#808000",
- olivedrab: "#6b8e23",
- orange: "#ffa500",
- orangered: "#ff4500",
- orchid: "#da70d6",
- palegoldenrod: "#eee8aa",
- palegreen: "#98fb98",
- paleturquoise: "#afeeee",
- palevioletred: "#db7093",
- papayawhip: "#ffefd5",
- peachpuff: "#ffdab9",
- peru: "#cd853f",
- pink: "#ffc0cb",
- plum: "#dda0dd",
- powderblue: "#b0e0e6",
- purple: "#800080",
- red: "#ff0000",
- rosybrown: "#bc8f8f",
- royalblue: "#4169e1",
- saddlebrown: "#8b4513",
- salmon: "#fa8072",
- sandybrown: "#f4a460",
- seagreen: "#2e8b57",
- seashell: "#fff5ee",
- sienna: "#a0522d",
- silver: "#c0c0c0",
- skyblue: "#87ceeb",
- slateblue: "#6a5acd",
- slategray: "#708090",
- slategrey: "#708090",
- snow: "#fffafa",
- springgreen: "#00ff7f",
- steelblue: "#4682b4",
- tan: "#d2b48c",
- teal: "#008080",
- thistle: "#d8bfd8",
- tomato: "#ff6347",
- turquoise: "#40e0d0",
- violet: "#ee82ee",
- wheat: "#f5deb3",
- white: "#ffffff",
- whitesmoke: "#f5f5f5",
- yellow: "#ffff00",
- yellowgreen: "#9acd32"
-};
-
-for (var d3_rgb_name in d3_rgb_names) {
- d3_rgb_names[d3_rgb_name] = d3_rgb_parse(
- d3_rgb_names[d3_rgb_name],
- d3_rgb,
- d3_hsl_rgb);
-}
-d3.hsl = function(h, s, l) {
- return arguments.length === 1
- ? (h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l)
- : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
- : d3_hsl(+h, +s, +l);
-};
-
-function d3_hsl(h, s, l) {
- return new d3_Hsl(h, s, l);
-}
-
-function d3_Hsl(h, s, l) {
- this.h = h;
- this.s = s;
- this.l = l;
-}
-
-d3_Hsl.prototype.brighter = function(k) {
- k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_hsl(this.h, this.s, this.l / k);
-};
-
-d3_Hsl.prototype.darker = function(k) {
- k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_hsl(this.h, this.s, k * this.l);
-};
-
-d3_Hsl.prototype.rgb = function() {
- return d3_hsl_rgb(this.h, this.s, this.l);
-};
-
-d3_Hsl.prototype.toString = function() {
- return this.rgb().toString();
-};
-
-function d3_hsl_rgb(h, s, l) {
- var m1,
- m2;
-
- /* Some simple corrections for h, s and l. */
- h = h % 360; if (h < 0) h += 360;
- s = s < 0 ? 0 : s > 1 ? 1 : s;
- l = l < 0 ? 0 : l > 1 ? 1 : l;
-
- /* From FvD 13.37, CSS Color Module Level 3 */
- m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
- m1 = 2 * l - m2;
-
- function v(h) {
- if (h > 360) h -= 360;
- else if (h < 0) h += 360;
- if (h < 60) return m1 + (m2 - m1) * h / 60;
- if (h < 180) return m2;
- if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
- return m1;
- }
-
- function vv(h) {
- return Math.round(v(h) * 255);
- }
-
- return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
-}
-function d3_selection(groups) {
- d3_arraySubclass(groups, d3_selectionPrototype);
- return groups;
-}
-
-var d3_select = function(s, n) { return n.querySelector(s); },
- d3_selectAll = function(s, n) { return n.querySelectorAll(s); };
-
-// Prefer Sizzle, if available.
-if (typeof Sizzle === "function") {
- d3_select = function(s, n) { return Sizzle(s, n)[0]; };
- d3_selectAll = function(s, n) { return Sizzle.uniqueSort(Sizzle(s, n)); };
-}
-
-var d3_selectionPrototype = [];
-
-d3.selection = function() {
- return d3_selectionRoot;
-};
-
-d3.selection.prototype = d3_selectionPrototype;
-d3_selectionPrototype.select = function(selector) {
- var subgroups = [],
- subgroup,
- subnode,
- group,
- node;
-
- if (typeof selector !== "function") selector = d3_selection_selector(selector);
-
- for (var j = -1, m = this.length; ++j < m;) {
- subgroups.push(subgroup = []);
- subgroup.parentNode = (group = this[j]).parentNode;
- for (var i = -1, n = group.length; ++i < n;) {
- if (node = group[i]) {
- subgroup.push(subnode = selector.call(node, node.__data__, i));
- if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
- } else {
- subgroup.push(null);
- }
- }
- }
-
- return d3_selection(subgroups);
-};
-
-function d3_selection_selector(selector) {
- return function() {
- return d3_select(selector, this);
- };
-}
-d3_selectionPrototype.selectAll = function(selector) {
- var subgroups = [],
- subgroup,
- node;
-
- if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
-
- for (var j = -1, m = this.length; ++j < m;) {
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- if (node = group[i]) {
- subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i)));
- subgroup.parentNode = node;
- }
- }
- }
-
- return d3_selection(subgroups);
-};
-
-function d3_selection_selectorAll(selector) {
- return function() {
- return d3_selectAll(selector, this);
- };
-}
-d3_selectionPrototype.attr = function(name, value) {
- name = d3.ns.qualify(name);
-
- // If no value is specified, return the first value.
- if (arguments.length < 2) {
- var node = this.node();
- return name.local
- ? node.getAttributeNS(name.space, name.local)
- : node.getAttribute(name);
- }
-
- function attrNull() {
- this.removeAttribute(name);
- }
-
- function attrNullNS() {
- this.removeAttributeNS(name.space, name.local);
- }
-
- function attrConstant() {
- this.setAttribute(name, value);
- }
-
- function attrConstantNS() {
- this.setAttributeNS(name.space, name.local, value);
- }
-
- function attrFunction() {
- var x = value.apply(this, arguments);
- if (x == null) this.removeAttribute(name);
- else this.setAttribute(name, x);
- }
-
- function attrFunctionNS() {
- var x = value.apply(this, arguments);
- if (x == null) this.removeAttributeNS(name.space, name.local);
- else this.setAttributeNS(name.space, name.local, x);
- }
-
- return this.each(value == null
- ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
- ? (name.local ? attrFunctionNS : attrFunction)
- : (name.local ? attrConstantNS : attrConstant)));
-};
-d3_selectionPrototype.classed = function(name, value) {
- var names = name.split(d3_selection_classedWhitespace),
- n = names.length,
- i = -1;
- if (arguments.length > 1) {
- while (++i < n) d3_selection_classed.call(this, names[i], value);
- return this;
- } else {
- while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
- return true;
- }
-};
-
-var d3_selection_classedWhitespace = /\s+/g;
-
-function d3_selection_classed(name, value) {
- var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g");
-
- // If no value is specified, return the first value.
- if (arguments.length < 2) {
- var node = this.node();
- if (c = node.classList) return c.contains(name);
- var c = node.className;
- re.lastIndex = 0;
- return re.test(c.baseVal != null ? c.baseVal : c);
- }
-
- function classedAdd() {
- if (c = this.classList) return c.add(name);
- var c = this.className,
- cb = c.baseVal != null,
- cv = cb ? c.baseVal : c;
- re.lastIndex = 0;
- if (!re.test(cv)) {
- cv = d3_collapse(cv + " " + name);
- if (cb) c.baseVal = cv;
- else this.className = cv;
- }
- }
-
- function classedRemove() {
- if (c = this.classList) return c.remove(name);
- var c = this.className,
- cb = c.baseVal != null,
- cv = cb ? c.baseVal : c;
- cv = d3_collapse(cv.replace(re, " "));
- if (cb) c.baseVal = cv;
- else this.className = cv;
- }
-
- function classedFunction() {
- (value.apply(this, arguments)
- ? classedAdd
- : classedRemove).call(this);
- }
-
- return this.each(typeof value === "function"
- ? classedFunction : value
- ? classedAdd
- : classedRemove);
-}
-d3_selectionPrototype.style = function(name, value, priority) {
- if (arguments.length < 3) priority = "";
-
- // If no value is specified, return the first value.
- if (arguments.length < 2) return window
- .getComputedStyle(this.node(), null)
- .getPropertyValue(name);
-
- function styleNull() {
- this.style.removeProperty(name);
- }
-
- function styleConstant() {
- this.style.setProperty(name, value, priority);
- }
-
- function styleFunction() {
- var x = value.apply(this, arguments);
- if (x == null) this.style.removeProperty(name);
- else this.style.setProperty(name, x, priority);
- }
-
- return this.each(value == null
- ? styleNull : (typeof value === "function"
- ? styleFunction : styleConstant));
-};
-d3_selectionPrototype.property = function(name, value) {
-
- // If no value is specified, return the first value.
- if (arguments.length < 2) return this.node()[name];
-
- function propertyNull() {
- delete this[name];
- }
-
- function propertyConstant() {
- this[name] = value;
- }
-
- function propertyFunction() {
- var x = value.apply(this, arguments);
- if (x == null) delete this[name];
- else this[name] = x;
- }
-
- return this.each(value == null
- ? propertyNull : (typeof value === "function"
- ? propertyFunction : propertyConstant));
-};
-d3_selectionPrototype.text = function(value) {
- return arguments.length < 1 ? this.node().textContent
- : (this.each(typeof value === "function"
- ? function() { this.textContent = value.apply(this, arguments); }
- : function() { this.textContent = value; }));
-};
-d3_selectionPrototype.html = function(value) {
- return arguments.length < 1 ? this.node().innerHTML
- : (this.each(typeof value === "function"
- ? function() { this.innerHTML = value.apply(this, arguments); }
- : function() { this.innerHTML = value; }));
-};
-// TODO append(node)?
-// TODO append(function)?
-d3_selectionPrototype.append = function(name) {
- name = d3.ns.qualify(name);
-
- function append() {
- return this.appendChild(document.createElementNS(this.namespaceURI, name));
- }
-
- function appendNS() {
- return this.appendChild(document.createElementNS(name.space, name.local));
- }
-
- return this.select(name.local ? appendNS : append);
-};
-// TODO insert(node, function)?
-// TODO insert(function, string)?
-// TODO insert(function, function)?
-d3_selectionPrototype.insert = function(name, before) {
- name = d3.ns.qualify(name);
-
- function insert() {
- return this.insertBefore(
- document.createElementNS(this.namespaceURI, name),
- d3_select(before, this));
- }
-
- function insertNS() {
- return this.insertBefore(
- document.createElementNS(name.space, name.local),
- d3_select(before, this));
- }
-
- return this.select(name.local ? insertNS : insert);
-};
-// TODO remove(selector)?
-// TODO remove(node)?
-// TODO remove(function)?
-d3_selectionPrototype.remove = function() {
- return this.each(function() {
- var parent = this.parentNode;
- if (parent) parent.removeChild(this);
- });
-};
-// TODO data(null) for clearing data?
-d3_selectionPrototype.data = function(data, join) {
- var enter = [],
- update = [],
- exit = [];
-
- function bind(group, groupData) {
- var i,
- n = group.length,
- m = groupData.length,
- n0 = Math.min(n, m),
- n1 = Math.max(n, m),
- updateNodes = [],
- enterNodes = [],
- exitNodes = [],
- node,
- nodeData;
-
- if (join) {
- var nodeByKey = {},
- keys = [],
- key,
- j = groupData.length;
-
- for (i = -1; ++i < n;) {
- key = join.call(node = group[i], node.__data__, i);
- if (key in nodeByKey) {
- exitNodes[j++] = node; // duplicate key
- } else {
- nodeByKey[key] = node;
- }
- keys.push(key);
- }
-
- for (i = -1; ++i < m;) {
- node = nodeByKey[key = join.call(groupData, nodeData = groupData[i], i)];
- if (node) {
- node.__data__ = nodeData;
- updateNodes[i] = node;
- enterNodes[i] = exitNodes[i] = null;
- } else {
- enterNodes[i] = d3_selection_dataNode(nodeData);
- updateNodes[i] = exitNodes[i] = null;
- }
- delete nodeByKey[key];
- }
-
- for (i = -1; ++i < n;) {
- if (keys[i] in nodeByKey) {
- exitNodes[i] = group[i];
- }
- }
- } else {
- for (i = -1; ++i < n0;) {
- node = group[i];
- nodeData = groupData[i];
- if (node) {
- node.__data__ = nodeData;
- updateNodes[i] = node;
- enterNodes[i] = exitNodes[i] = null;
- } else {
- enterNodes[i] = d3_selection_dataNode(nodeData);
- updateNodes[i] = exitNodes[i] = null;
- }
- }
- for (; i < m; ++i) {
- enterNodes[i] = d3_selection_dataNode(groupData[i]);
- updateNodes[i] = exitNodes[i] = null;
- }
- for (; i < n1; ++i) {
- exitNodes[i] = group[i];
- enterNodes[i] = updateNodes[i] = null;
- }
- }
-
- enterNodes.update
- = updateNodes;
-
- enterNodes.parentNode
- = updateNodes.parentNode
- = exitNodes.parentNode
- = group.parentNode;
-
- enter.push(enterNodes);
- update.push(updateNodes);
- exit.push(exitNodes);
- }
-
- var i = -1,
- n = this.length,
- group;
- if (typeof data === "function") {
- while (++i < n) {
- bind(group = this[i], data.call(group, group.parentNode.__data__, i));
- }
- } else {
- while (++i < n) {
- bind(group = this[i], data);
- }
- }
-
- var selection = d3_selection(update);
- selection.enter = function() { return d3_selection_enter(enter); };
- selection.exit = function() { return d3_selection(exit); };
- return selection;
-};
-
-function d3_selection_dataNode(data) {
- return {__data__: data};
-}
-// TODO preserve null elements to maintain index?
-d3_selectionPrototype.filter = function(filter) {
- var subgroups = [],
- subgroup,
- group,
- node;
-
- for (var j = 0, m = this.length; j < m; j++) {
- subgroups.push(subgroup = []);
- subgroup.parentNode = (group = this[j]).parentNode;
- for (var i = 0, n = group.length; i < n; i++) {
- if ((node = group[i]) && filter.call(node, node.__data__, i)) {
- subgroup.push(node);
- }
- }
- }
-
- return d3_selection(subgroups);
-};
-d3_selectionPrototype.map = function(map) {
- return this.each(function() {
- this.__data__ = map.apply(this, arguments);
- });
-};
-d3_selectionPrototype.sort = function(comparator) {
- comparator = d3_selection_sortComparator.apply(this, arguments);
- for (var j = 0, m = this.length; j < m; j++) {
- for (var group = this[j].sort(comparator), i = 1, n = group.length, prev = group[0]; i < n; i++) {
- var node = group[i];
- if (node) {
- if (prev) prev.parentNode.insertBefore(node, prev.nextSibling);
- prev = node;
- }
- }
- }
- return this;
-};
-
-function d3_selection_sortComparator(comparator) {
- if (!arguments.length) comparator = d3.ascending;
- return function(a, b) {
- return comparator(a && a.__data__, b && b.__data__);
- };
-}
-// type can be namespaced, e.g., "click.foo"
-// listener can be null for removal
-d3_selectionPrototype.on = function(type, listener, capture) {
- if (arguments.length < 3) capture = false;
-
- // parse the type specifier
- var name = "__on" + type, i = type.indexOf(".");
- if (i > 0) type = type.substring(0, i);
-
- // if called with only one argument, return the current listener
- if (arguments.length < 2) return (i = this.node()[name]) && i._;
-
- // remove the old event listener, and add the new event listener
- return this.each(function(d, i) {
- var node = this;
-
- if (node[name]) node.removeEventListener(type, node[name], capture);
- if (listener) node.addEventListener(type, node[name] = l, capture);
-
- // wrapped event listener that preserves i
- function l(e) {
- var o = d3.event; // Events can be reentrant (e.g., focus).
- d3.event = e;
- try {
- listener.call(node, node.__data__, i);
- } finally {
- d3.event = o;
- }
- }
-
- // stash the unwrapped listener for retrieval
- l._ = listener;
- });
-};
-d3_selectionPrototype.each = function(callback) {
- for (var j = -1, m = this.length; ++j < m;) {
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- var node = group[i];
- if (node) callback.call(node, node.__data__, i, j);
- }
- }
- return this;
-};
-//
-// Note: assigning to the arguments array simultaneously changes the value of
-// the corresponding argument!
-//
-// TODO The `this` argument probably shouldn't be the first argument to the
-// callback, anyway, since it's redundant. However, that will require a major
-// version bump due to backwards compatibility, so I'm not changing it right
-// away.
-//
-d3_selectionPrototype.call = function(callback) {
- callback.apply(this, (arguments[0] = this, arguments));
- return this;
-};
-d3_selectionPrototype.empty = function() {
- return !this.node();
-};
-d3_selectionPrototype.node = function(callback) {
- for (var j = 0, m = this.length; j < m; j++) {
- for (var group = this[j], i = 0, n = group.length; i < n; i++) {
- var node = group[i];
- if (node) return node;
- }
- }
- return null;
-};
-d3_selectionPrototype.transition = function() {
- var subgroups = [],
- subgroup,
- node;
-
- for (var j = -1, m = this.length; ++j < m;) {
- subgroups.push(subgroup = []);
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- subgroup.push((node = group[i]) ? {node: node, delay: 0, duration: 250} : null);
- }
- }
-
- return d3_transition(subgroups, d3_transitionInheritId || ++d3_transitionId, Date.now());
-};
-var d3_selectionRoot = d3_selection([[document]]);
-
-d3_selectionRoot[0].parentNode = document.documentElement;
-
-// TODO fast singleton implementation!
-// TODO select(function)
-d3.select = function(selector) {
- return typeof selector === "string"
- ? d3_selectionRoot.select(selector)
- : d3_selection([[selector]]); // assume node
-};
-
-// TODO selectAll(function)
-d3.selectAll = function(selector) {
- return typeof selector === "string"
- ? d3_selectionRoot.selectAll(selector)
- : d3_selection([d3_array(selector)]); // assume node[]
-};
-function d3_selection_enter(selection) {
- d3_arraySubclass(selection, d3_selection_enterPrototype);
- return selection;
-}
-
-var d3_selection_enterPrototype = [];
-
-d3_selection_enterPrototype.append = d3_selectionPrototype.append;
-d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
-d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
-d3_selection_enterPrototype.node = d3_selectionPrototype.node;
-d3_selection_enterPrototype.select = function(selector) {
- var subgroups = [],
- subgroup,
- subnode,
- upgroup,
- group,
- node;
-
- for (var j = -1, m = this.length; ++j < m;) {
- upgroup = (group = this[j]).update;
- subgroups.push(subgroup = []);
- subgroup.parentNode = group.parentNode;
- for (var i = -1, n = group.length; ++i < n;) {
- if (node = group[i]) {
- subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i));
- subnode.__data__ = node.__data__;
- } else {
- subgroup.push(null);
- }
- }
- }
-
- return d3_selection(subgroups);
-};
-function d3_transition(groups, id, time) {
- d3_arraySubclass(groups, d3_transitionPrototype);
-
- var tweens = {},
- event = d3.dispatch("start", "end"),
- ease = d3_transitionEase;
-
- groups.id = id;
-
- groups.time = time;
-
- groups.tween = function(name, tween) {
- if (arguments.length < 2) return tweens[name];
- if (tween == null) delete tweens[name];
- else tweens[name] = tween;
- return groups;
- };
-
- groups.ease = function(value) {
- if (!arguments.length) return ease;
- ease = typeof value === "function" ? value : d3.ease.apply(d3, arguments);
- return groups;
- };
-
- groups.each = function(type, listener) {
- if (arguments.length < 2) return d3_transition_each.call(groups, type);
- event.on(type, listener);
- return groups;
- };
-
- d3.timer(function(elapsed) {
- groups.each(function(d, i, j) {
- var tweened = [],
- node = this,
- delay = groups[j][i].delay,
- duration = groups[j][i].duration,
- lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0});
-
- ++lock.count;
-
- delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time);
-
- function start(elapsed) {
- if (lock.active > id) return stop();
- lock.active = id;
-
- for (var tween in tweens) {
- if (tween = tweens[tween].call(node, d, i)) {
- tweened.push(tween);
- }
- }
-
- event.start.call(node, d, i);
- if (!tick(elapsed)) d3.timer(tick, 0, time);
- return 1;
- }
-
- function tick(elapsed) {
- if (lock.active !== id) return stop();
-
- var t = (elapsed - delay) / duration,
- e = ease(t),
- n = tweened.length;
-
- while (n > 0) {
- tweened[--n].call(node, e);
- }
-
- if (t >= 1) {
- stop();
- d3_transitionInheritId = id;
- event.end.call(node, d, i);
- d3_transitionInheritId = 0;
- return 1;
- }
- }
-
- function stop() {
- if (!--lock.count) delete node.__transition__;
- return 1;
- }
- });
- return 1;
- }, 0, time);
-
- return groups;
-}
-
-var d3_transitionRemove = {};
-
-function d3_transitionNull(d, i, a) {
- return a != "" && d3_transitionRemove;
-}
-
-function d3_transitionTween(name, b) {
- var interpolate = d3_interpolateByName(name);
-
- function transitionFunction(d, i, a) {
- var v = b.call(this, d, i);
- return v == null
- ? a != "" && d3_transitionRemove
- : a != v && interpolate(a, v);
- }
-
- function transitionString(d, i, a) {
- return a != b && interpolate(a, b);
- }
-
- return typeof b === "function" ? transitionFunction
- : b == null ? d3_transitionNull
- : (b += "", transitionString);
-}
-
-var d3_transitionPrototype = [],
- d3_transitionId = 0,
- d3_transitionInheritId = 0,
- d3_transitionEase = d3.ease("cubic-in-out");
-
-d3_transitionPrototype.call = d3_selectionPrototype.call;
-
-d3.transition = function() {
- return d3_selectionRoot.transition();
-};
-
-d3.transition.prototype = d3_transitionPrototype;
-d3_transitionPrototype.select = function(selector) {
- var subgroups = [],
- subgroup,
- subnode,
- node;
-
- if (typeof selector !== "function") selector = d3_selection_selector(selector);
-
- for (var j = -1, m = this.length; ++j < m;) {
- subgroups.push(subgroup = []);
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- if ((node = group[i]) && (subnode = selector.call(node.node, node.node.__data__, i))) {
- if ("__data__" in node.node) subnode.__data__ = node.node.__data__;
- subgroup.push({node: subnode, delay: node.delay, duration: node.duration});
- } else {
- subgroup.push(null);
- }
- }
- }
-
- return d3_transition(subgroups, this.id, this.time).ease(this.ease());
-};
-d3_transitionPrototype.selectAll = function(selector) {
- var subgroups = [],
- subgroup,
- subnodes,
- node;
-
- if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
-
- for (var j = -1, m = this.length; ++j < m;) {
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- if (node = group[i]) {
- subnodes = selector.call(node.node, node.node.__data__, i);
- subgroups.push(subgroup = []);
- for (var k = -1, o = subnodes.length; ++k < o;) {
- subgroup.push({node: subnodes[k], delay: node.delay, duration: node.duration});
- }
- }
- }
- }
-
- return d3_transition(subgroups, this.id, this.time).ease(this.ease());
-};
-d3_transitionPrototype.attr = function(name, value) {
- return this.attrTween(name, d3_transitionTween(name, value));
-};
-
-d3_transitionPrototype.attrTween = function(nameNS, tween) {
- var name = d3.ns.qualify(nameNS);
-
- function attrTween(d, i) {
- var f = tween.call(this, d, i, this.getAttribute(name));
- return f === d3_transitionRemove
- ? (this.removeAttribute(name), null)
- : f && function(t) { this.setAttribute(name, f(t)); };
- }
-
- function attrTweenNS(d, i) {
- var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
- return f === d3_transitionRemove
- ? (this.removeAttributeNS(name.space, name.local), null)
- : f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); };
- }
-
- return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
-};
-d3_transitionPrototype.style = function(name, value, priority) {
- if (arguments.length < 3) priority = "";
- return this.styleTween(name, d3_transitionTween(name, value), priority);
-};
-
-d3_transitionPrototype.styleTween = function(name, tween, priority) {
- if (arguments.length < 3) priority = "";
- return this.tween("style." + name, function(d, i) {
- var f = tween.call(this, d, i, window.getComputedStyle(this, null).getPropertyValue(name));
- return f === d3_transitionRemove
- ? (this.style.removeProperty(name), null)
- : f && function(t) { this.style.setProperty(name, f(t), priority); };
- });
-};
-d3_transitionPrototype.text = function(value) {
- return this.tween("text", function(d, i) {
- this.textContent = typeof value === "function"
- ? value.call(this, d, i)
- : value;
- });
-};
-d3_transitionPrototype.remove = function() {
- return this.each("end", function() {
- var p;
- if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this);
- });
-};
-d3_transitionPrototype.delay = function(value) {
- var groups = this;
- return groups.each(typeof value === "function"
- ? function(d, i, j) { groups[j][i].delay = +value.apply(this, arguments); }
- : (value = +value, function(d, i, j) { groups[j][i].delay = value; }));
-};
-d3_transitionPrototype.duration = function(value) {
- var groups = this;
- return groups.each(typeof value === "function"
- ? function(d, i, j) { groups[j][i].duration = +value.apply(this, arguments); }
- : (value = +value, function(d, i, j) { groups[j][i].duration = value; }));
-};
-function d3_transition_each(callback) {
- for (var j = 0, m = this.length; j < m; j++) {
- for (var group = this[j], i = 0, n = group.length; i < n; i++) {
- var node = group[i];
- if (node) callback.call(node = node.node, node.__data__, i, j);
- }
- }
- return this;
-}
-d3_transitionPrototype.transition = function() {
- return this.select(d3_this);
-};
-var d3_timer_queue = null,
- d3_timer_interval, // is an interval (or frame) active?
- d3_timer_timeout; // is a timeout active?
-
-// The timer will continue to fire until callback returns true.
-d3.timer = function(callback, delay, then) {
- var found = false,
- t0,
- t1 = d3_timer_queue;
-
- if (arguments.length < 3) {
- if (arguments.length < 2) delay = 0;
- else if (!isFinite(delay)) return;
- then = Date.now();
- }
-
- // See if the callback's already in the queue.
- while (t1) {
- if (t1.callback === callback) {
- t1.then = then;
- t1.delay = delay;
- found = true;
- break;
- }
- t0 = t1;
- t1 = t1.next;
- }
-
- // Otherwise, add the callback to the queue.
- if (!found) d3_timer_queue = {
- callback: callback,
- then: then,
- delay: delay,
- next: d3_timer_queue
- };
-
- // Start animatin'!
- if (!d3_timer_interval) {
- d3_timer_timeout = clearTimeout(d3_timer_timeout);
- d3_timer_interval = 1;
- d3_timer_frame(d3_timer_step);
- }
-}
-
-function d3_timer_step() {
- var elapsed,
- now = Date.now(),
- t1 = d3_timer_queue;
-
- while (t1) {
- elapsed = now - t1.then;
- if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed);
- t1 = t1.next;
- }
-
- var delay = d3_timer_flush() - now;
- if (delay > 24) {
- if (isFinite(delay)) {
- clearTimeout(d3_timer_timeout);
- d3_timer_timeout = setTimeout(d3_timer_step, delay);
- }
- d3_timer_interval = 0;
- } else {
- d3_timer_interval = 1;
- d3_timer_frame(d3_timer_step);
- }
-}
-
-d3.timer.flush = function() {
- var elapsed,
- now = Date.now(),
- t1 = d3_timer_queue;
-
- while (t1) {
- elapsed = now - t1.then;
- if (!t1.delay) t1.flush = t1.callback(elapsed);
- t1 = t1.next;
- }
-
- d3_timer_flush();
-};
-
-// Flush after callbacks, to avoid concurrent queue modification.
-function d3_timer_flush() {
- var t0 = null,
- t1 = d3_timer_queue,
- then = Infinity;
- while (t1) {
- if (t1.flush) {
- t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next;
- } else {
- then = Math.min(then, t1.then + t1.delay);
- t1 = (t0 = t1).next;
- }
- }
- return then;
-}
-
-var d3_timer_frame = window.requestAnimationFrame
- || window.webkitRequestAnimationFrame
- || window.mozRequestAnimationFrame
- || window.oRequestAnimationFrame
- || window.msRequestAnimationFrame
- || function(callback) { setTimeout(callback, 17); };
-d3.transform = function(string) {
- d3_transformG.setAttribute("transform", string);
- var t = d3_transformG.transform.baseVal.consolidate();
- return new d3_transform(t ? t.matrix : d3_transformIdentity);
-};
-
-// Compute x-scale and normalize the first row.
-// Compute shear and make second row orthogonal to first.
-// Compute y-scale and normalize the second row.
-// Finally, compute the rotation.
-function d3_transform(m) {
- var r0 = [m.a, m.b],
- r1 = [m.c, m.d],
- kx = d3_transformNormalize(r0),
- kz = d3_transformDot(r0, r1),
- ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
- if (r0[0] * r1[1] < r1[0] * r0[1]) {
- r0[0] *= -1;
- r0[1] *= -1;
- kx *= -1;
- kz *= -1;
- }
- this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees;
- this.translate = [m.e, m.f];
- this.scale = [kx, ky];
- this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0;
-};
-
-d3_transform.prototype.toString = function() {
- return "translate(" + this.translate
- + ")rotate(" + this.rotate
- + ")skewX(" + this.skew
- + ")scale(" + this.scale
- + ")";
-};
-
-function d3_transformDot(a, b) {
- return a[0] * b[0] + a[1] * b[1];
-}
-
-function d3_transformNormalize(a) {
- var k = Math.sqrt(d3_transformDot(a, a));
- if (k) {
- a[0] /= k;
- a[1] /= k;
- }
- return k;
-}
-
-function d3_transformCombine(a, b, k) {
- a[0] += k * b[0];
- a[1] += k * b[1];
- return a;
-}
-
-var d3_transformG = document.createElementNS(d3.ns.prefix.svg, "g"),
- d3_transformIdentity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0},
- d3_transformDegrees = 180 / Math.PI;
-function d3_noop() {}
-d3.scale = {};
-
-function d3_scaleExtent(domain) {
- var start = domain[0], stop = domain[domain.length - 1];
- return start < stop ? [start, stop] : [stop, start];
-}
-
-function d3_scaleRange(scale) {
- return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
-}
-function d3_scale_nice(domain, nice) {
- var i0 = 0,
- i1 = domain.length - 1,
- x0 = domain[i0],
- x1 = domain[i1],
- dx;
-
- if (x1 < x0) {
- dx = i0; i0 = i1; i1 = dx;
- dx = x0; x0 = x1; x1 = dx;
- }
-
- if (dx = x1 - x0) {
- nice = nice(dx);
- domain[i0] = nice.floor(x0);
- domain[i1] = nice.ceil(x1);
- }
-
- return domain;
-}
-
-function d3_scale_niceDefault() {
- return Math;
-}
-d3.scale.linear = function() {
- return d3_scale_linear([0, 1], [0, 1], d3.interpolate, false);
-};
-
-function d3_scale_linear(domain, range, interpolate, clamp) {
- var output,
- input;
-
- function rescale() {
- var linear = domain.length == 2 ? d3_scale_bilinear : d3_scale_polylinear,
- uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
- output = linear(domain, range, uninterpolate, interpolate);
- input = linear(range, domain, uninterpolate, d3.interpolate);
- return scale;
- }
-
- function scale(x) {
- return output(x);
- }
-
- // Note: requires range is coercible to number!
- scale.invert = function(y) {
- return input(y);
- };
-
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = x.map(Number);
- return rescale();
- };
-
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
-
- scale.rangeRound = function(x) {
- return scale.range(x).interpolate(d3.interpolateRound);
- };
-
- scale.clamp = function(x) {
- if (!arguments.length) return clamp;
- clamp = x;
- return rescale();
- };
-
- scale.interpolate = function(x) {
- if (!arguments.length) return interpolate;
- interpolate = x;
- return rescale();
- };
-
- scale.ticks = function(m) {
- return d3_scale_linearTicks(domain, m);
- };
-
- scale.tickFormat = function(m) {
- return d3_scale_linearTickFormat(domain, m);
- };
-
- scale.nice = function() {
- d3_scale_nice(domain, d3_scale_linearNice);
- return rescale();
- };
-
- scale.copy = function() {
- return d3_scale_linear(domain, range, interpolate, clamp);
- };
-
- return rescale();
-};
-
-function d3_scale_linearRebind(scale, linear) {
- return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
-}
-
-function d3_scale_linearNice(dx) {
- dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
- return {
- floor: function(x) { return Math.floor(x / dx) * dx; },
- ceil: function(x) { return Math.ceil(x / dx) * dx; }
- };
-}
-
-// TODO Dates? Ugh.
-function d3_scale_linearTickRange(domain, m) {
- var extent = d3_scaleExtent(domain),
- span = extent[1] - extent[0],
- step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),
- err = m / span * step;
-
- // Filter ticks to get closer to the desired count.
- if (err <= .15) step *= 10;
- else if (err <= .35) step *= 5;
- else if (err <= .75) step *= 2;
-
- // Round start and stop values to step interval.
- extent[0] = Math.ceil(extent[0] / step) * step;
- extent[1] = Math.floor(extent[1] / step) * step + step * .5; // inclusive
- extent[2] = step;
- return extent;
-}
-
-function d3_scale_linearTicks(domain, m) {
- return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
-}
-
-function d3_scale_linearTickFormat(domain, m) {
- return d3.format(",." + Math.max(0, -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01)) + "f");
-}
-function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
- var u = uninterpolate(domain[0], domain[1]),
- i = interpolate(range[0], range[1]);
- return function(x) {
- return i(u(x));
- };
-}
-function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
- var u = [],
- i = [],
- j = 0,
- n = domain.length;
-
- while (++j < n) {
- u.push(uninterpolate(domain[j - 1], domain[j]));
- i.push(interpolate(range[j - 1], range[j]));
- }
-
- return function(x) {
- var j = d3.bisect(domain, x, 1, domain.length - 1) - 1;
- return i[j](u[j](x));
- };
-}
-d3.scale.log = function() {
- return d3_scale_log(d3.scale.linear(), d3_scale_logp);
-};
-
-function d3_scale_log(linear, log) {
- var pow = log.pow;
-
- function scale(x) {
- return linear(log(x));
- }
-
- scale.invert = function(x) {
- return pow(linear.invert(x));
- };
-
- scale.domain = function(x) {
- if (!arguments.length) return linear.domain().map(pow);
- log = x[0] < 0 ? d3_scale_logn : d3_scale_logp;
- pow = log.pow;
- linear.domain(x.map(log));
- return scale;
- };
-
- scale.nice = function() {
- linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault));
- return scale;
- };
-
- scale.ticks = function() {
- var extent = d3_scaleExtent(linear.domain()),
- ticks = [];
- if (extent.every(isFinite)) {
- var i = Math.floor(extent[0]),
- j = Math.ceil(extent[1]),
- u = pow(extent[0]),
- v = pow(extent[1]);
- if (log === d3_scale_logn) {
- ticks.push(pow(i));
- for (; i++ < j;) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k);
- } else {
- for (; i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k);
- ticks.push(pow(i));
- }
- for (i = 0; ticks[i] < u; i++) {} // strip small values
- for (j = ticks.length; ticks[j - 1] > v; j--) {} // strip big values
- ticks = ticks.slice(i, j);
- }
- return ticks;
- };
-
- scale.tickFormat = function(n, format) {
- if (arguments.length < 2) format = d3_scale_logFormat;
- if (arguments.length < 1) return format;
- var k = n / scale.ticks().length,
- f = log === d3_scale_logn ? (e = -1e-12, Math.floor) : (e = 1e-12, Math.ceil),
- e;
- return function(d) {
- return d / pow(f(log(d) + e)) < k ? format(d) : "";
- };
- };
-
- scale.copy = function() {
- return d3_scale_log(linear.copy(), log);
- };
-
- return d3_scale_linearRebind(scale, linear);
-};
-
-var d3_scale_logFormat = d3.format(".0e");
-
-function d3_scale_logp(x) {
- return Math.log(x) / Math.LN10;
-}
-
-function d3_scale_logn(x) {
- return -Math.log(-x) / Math.LN10;
-}
-
-d3_scale_logp.pow = function(x) {
- return Math.pow(10, x);
-};
-
-d3_scale_logn.pow = function(x) {
- return -Math.pow(10, -x);
-};
-d3.scale.pow = function() {
- return d3_scale_pow(d3.scale.linear(), 1);
-};
-
-function d3_scale_pow(linear, exponent) {
- var powp = d3_scale_powPow(exponent),
- powb = d3_scale_powPow(1 / exponent);
-
- function scale(x) {
- return linear(powp(x));
- }
-
- scale.invert = function(x) {
- return powb(linear.invert(x));
- };
-
- scale.domain = function(x) {
- if (!arguments.length) return linear.domain().map(powb);
- linear.domain(x.map(powp));
- return scale;
- };
-
- scale.ticks = function(m) {
- return d3_scale_linearTicks(scale.domain(), m);
- };
-
- scale.tickFormat = function(m) {
- return d3_scale_linearTickFormat(scale.domain(), m);
- };
-
- scale.nice = function() {
- return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice));
- };
-
- scale.exponent = function(x) {
- if (!arguments.length) return exponent;
- var domain = scale.domain();
- powp = d3_scale_powPow(exponent = x);
- powb = d3_scale_powPow(1 / exponent);
- return scale.domain(domain);
- };
-
- scale.copy = function() {
- return d3_scale_pow(linear.copy(), exponent);
- };
-
- return d3_scale_linearRebind(scale, linear);
-};
-
-function d3_scale_powPow(e) {
- return function(x) {
- return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
- };
-}
-d3.scale.sqrt = function() {
- return d3.scale.pow().exponent(.5);
-};
-d3.scale.ordinal = function() {
- return d3_scale_ordinal([], {t: "range", x: []});
-};
-
-function d3_scale_ordinal(domain, ranger) {
- var index,
- range,
- rangeBand;
-
- function scale(x) {
- return range[((index[x] || (index[x] = domain.push(x))) - 1) % range.length];
- }
-
- function steps(start, step) {
- return d3.range(domain.length).map(function(i) { return start + step * i; });
- }
-
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = [];
- index = {};
- var i = -1, n = x.length, xi;
- while (++i < n) if (!index[xi = x[i]]) index[xi] = domain.push(xi);
- return scale[ranger.t](ranger.x, ranger.p);
- };
-
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- rangeBand = 0;
- ranger = {t: "range", x: x};
- return scale;
- };
-
- scale.rangePoints = function(x, padding) {
- if (arguments.length < 2) padding = 0;
- var start = x[0],
- stop = x[1],
- step = (stop - start) / (domain.length - 1 + padding);
- range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
- rangeBand = 0;
- ranger = {t: "rangePoints", x: x, p: padding};
- return scale;
- };
-
- scale.rangeBands = function(x, padding) {
- if (arguments.length < 2) padding = 0;
- var start = x[0],
- stop = x[1],
- step = (stop - start) / (domain.length + padding);
- range = steps(start + step * padding, step);
- rangeBand = step * (1 - padding);
- ranger = {t: "rangeBands", x: x, p: padding};
- return scale;
- };
-
- scale.rangeRoundBands = function(x, padding) {
- if (arguments.length < 2) padding = 0;
- var start = x[0],
- stop = x[1],
- step = Math.floor((stop - start) / (domain.length + padding));
- range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);
- rangeBand = Math.round(step * (1 - padding));
- ranger = {t: "rangeRoundBands", x: x, p: padding};
- return scale;
- };
-
- scale.rangeBand = function() {
- return rangeBand;
- };
-
- scale.rangeExtent = function() {
- return ranger.x;
- };
-
- scale.copy = function() {
- return d3_scale_ordinal(domain, ranger);
- };
-
- return scale.domain(domain);
-};
-/*
- * This product includes color specifications and designs developed by Cynthia
- * Brewer (http://colorbrewer.org/). See lib/colorbrewer for more information.
- */
-
-d3.scale.category10 = function() {
- return d3.scale.ordinal().range(d3_category10);
-};
-
-d3.scale.category20 = function() {
- return d3.scale.ordinal().range(d3_category20);
-};
-
-d3.scale.category20b = function() {
- return d3.scale.ordinal().range(d3_category20b);
-};
-
-d3.scale.category20c = function() {
- return d3.scale.ordinal().range(d3_category20c);
-};
-
-var d3_category10 = [
- "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd",
- "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"
-];
-
-var d3_category20 = [
- "#1f77b4", "#aec7e8",
- "#ff7f0e", "#ffbb78",
- "#2ca02c", "#98df8a",
- "#d62728", "#ff9896",
- "#9467bd", "#c5b0d5",
- "#8c564b", "#c49c94",
- "#e377c2", "#f7b6d2",
- "#7f7f7f", "#c7c7c7",
- "#bcbd22", "#dbdb8d",
- "#17becf", "#9edae5"
-];
-
-var d3_category20b = [
- "#393b79", "#5254a3", "#6b6ecf", "#9c9ede",
- "#637939", "#8ca252", "#b5cf6b", "#cedb9c",
- "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94",
- "#843c39", "#ad494a", "#d6616b", "#e7969c",
- "#7b4173", "#a55194", "#ce6dbd", "#de9ed6"
-];
-
-var d3_category20c = [
- "#3182bd", "#6baed6", "#9ecae1", "#c6dbef",
- "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2",
- "#31a354", "#74c476", "#a1d99b", "#c7e9c0",
- "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb",
- "#636363", "#969696", "#bdbdbd", "#d9d9d9"
-];
-d3.scale.quantile = function() {
- return d3_scale_quantile([], []);
-};
-
-function d3_scale_quantile(domain, range) {
- var thresholds;
-
- function rescale() {
- var k = 0,
- n = domain.length,
- q = range.length;
- thresholds = [];
- while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
- return scale;
- }
-
- function scale(x) {
- if (isNaN(x = +x)) return NaN;
- return range[d3.bisect(thresholds, x)];
- }
-
- scale.domain = function(x) {
- if (!arguments.length) return domain;
- domain = x.filter(function(d) { return !isNaN(d); }).sort(d3.ascending);
- return rescale();
- };
-
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
-
- scale.quantiles = function() {
- return thresholds;
- };
-
- scale.copy = function() {
- return d3_scale_quantile(domain, range); // copy on write!
- };
-
- return rescale();
-};
-d3.scale.quantize = function() {
- return d3_scale_quantize(0, 1, [0, 1]);
-};
-
-function d3_scale_quantize(x0, x1, range) {
- var kx, i;
-
- function scale(x) {
- return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
- }
-
- function rescale() {
- kx = range.length / (x1 - x0);
- i = range.length - 1;
- return scale;
- }
-
- scale.domain = function(x) {
- if (!arguments.length) return [x0, x1];
- x0 = +x[0];
- x1 = +x[x.length - 1];
- return rescale();
- };
-
- scale.range = function(x) {
- if (!arguments.length) return range;
- range = x;
- return rescale();
- };
-
- scale.copy = function() {
- return d3_scale_quantize(x0, x1, range); // copy on write
- };
-
- return rescale();
-};
-d3.svg = {};
-d3.svg.arc = function() {
- var innerRadius = d3_svg_arcInnerRadius,
- outerRadius = d3_svg_arcOuterRadius,
- startAngle = d3_svg_arcStartAngle,
- endAngle = d3_svg_arcEndAngle;
-
- function arc() {
- var r0 = innerRadius.apply(this, arguments),
- r1 = outerRadius.apply(this, arguments),
- a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset,
- a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset,
- da = (a1 < a0 && (da = a0, a0 = a1, a1 = da), a1 - a0),
- df = da < Math.PI ? "0" : "1",
- c0 = Math.cos(a0),
- s0 = Math.sin(a0),
- c1 = Math.cos(a1),
- s1 = Math.sin(a1);
- return da >= d3_svg_arcMax
- ? (r0
- ? "M0," + r1
- + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
- + "A" + r1 + "," + r1 + " 0 1,1 0," + r1
- + "M0," + r0
- + "A" + r0 + "," + r0 + " 0 1,0 0," + (-r0)
- + "A" + r0 + "," + r0 + " 0 1,0 0," + r0
- + "Z"
- : "M0," + r1
- + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
- + "A" + r1 + "," + r1 + " 0 1,1 0," + r1
- + "Z")
- : (r0
- ? "M" + r1 * c0 + "," + r1 * s0
- + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1
- + "L" + r0 * c1 + "," + r0 * s1
- + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0
- + "Z"
- : "M" + r1 * c0 + "," + r1 * s0
- + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1
- + "L0,0"
- + "Z");
- }
-
- arc.innerRadius = function(v) {
- if (!arguments.length) return innerRadius;
- innerRadius = d3.functor(v);
- return arc;
- };
-
- arc.outerRadius = function(v) {
- if (!arguments.length) return outerRadius;
- outerRadius = d3.functor(v);
- return arc;
- };
-
- arc.startAngle = function(v) {
- if (!arguments.length) return startAngle;
- startAngle = d3.functor(v);
- return arc;
- };
-
- arc.endAngle = function(v) {
- if (!arguments.length) return endAngle;
- endAngle = d3.functor(v);
- return arc;
- };
-
- arc.centroid = function() {
- var r = (innerRadius.apply(this, arguments)
- + outerRadius.apply(this, arguments)) / 2,
- a = (startAngle.apply(this, arguments)
- + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
- return [Math.cos(a) * r, Math.sin(a) * r];
- };
-
- return arc;
-};
-
-var d3_svg_arcOffset = -Math.PI / 2,
- d3_svg_arcMax = 2 * Math.PI - 1e-6;
-
-function d3_svg_arcInnerRadius(d) {
- return d.innerRadius;
-}
-
-function d3_svg_arcOuterRadius(d) {
- return d.outerRadius;
-}
-
-function d3_svg_arcStartAngle(d) {
- return d.startAngle;
-}
-
-function d3_svg_arcEndAngle(d) {
- return d.endAngle;
-}
-function d3_svg_line(projection) {
- var x = d3_svg_lineX,
- y = d3_svg_lineY,
- interpolate = "linear",
- interpolator = d3_svg_lineInterpolators[interpolate],
- tension = .7;
-
- function line(d) {
- return d.length < 1 ? null : "M" + interpolator(projection(d3_svg_linePoints(this, d, x, y)), tension);
- }
-
- line.x = function(v) {
- if (!arguments.length) return x;
- x = v;
- return line;
- };
-
- line.y = function(v) {
- if (!arguments.length) return y;
- y = v;
- return line;
- };
-
- line.interpolate = function(v) {
- if (!arguments.length) return interpolate;
- interpolator = d3_svg_lineInterpolators[interpolate = v];
- return line;
- };
-
- line.tension = function(v) {
- if (!arguments.length) return tension;
- tension = v;
- return line;
- };
-
- return line;
-}
-
-d3.svg.line = function() {
- return d3_svg_line(Object);
-};
-
-// Converts the specified array of data into an array of points
-// (x-y tuples), by evaluating the specified `x` and `y` functions on each
-// data point. The `this` context of the evaluated functions is the specified
-// "self" object; each function is passed the current datum and index.
-function d3_svg_linePoints(self, d, x, y) {
- var points = [],
- i = -1,
- n = d.length,
- fx = typeof x === "function",
- fy = typeof y === "function",
- value;
- if (fx && fy) {
- while (++i < n) points.push([
- x.call(self, value = d[i], i),
- y.call(self, value, i)
- ]);
- } else if (fx) {
- while (++i < n) points.push([x.call(self, d[i], i), y]);
- } else if (fy) {
- while (++i < n) points.push([x, y.call(self, d[i], i)]);
- } else {
- while (++i < n) points.push([x, y]);
- }
- return points;
-}
-
-// The default `x` property, which references d[0].
-function d3_svg_lineX(d) {
- return d[0];
-}
-
-// The default `y` property, which references d[1].
-function d3_svg_lineY(d) {
- return d[1];
-}
-
-// The various interpolators supported by the `line` class.
-var d3_svg_lineInterpolators = {
- "linear": d3_svg_lineLinear,
- "step-before": d3_svg_lineStepBefore,
- "step-after": d3_svg_lineStepAfter,
- "basis": d3_svg_lineBasis,
- "basis-open": d3_svg_lineBasisOpen,
- "basis-closed": d3_svg_lineBasisClosed,
- "bundle": d3_svg_lineBundle,
- "cardinal": d3_svg_lineCardinal,
- "cardinal-open": d3_svg_lineCardinalOpen,
- "cardinal-closed": d3_svg_lineCardinalClosed,
- "monotone": d3_svg_lineMonotone
-};
-
-// Linear interpolation; generates "L" commands.
-function d3_svg_lineLinear(points) {
- var i = 0,
- n = points.length,
- p = points[0],
- path = [p[0], ",", p[1]];
- while (++i < n) path.push("L", (p = points[i])[0], ",", p[1]);
- return path.join("");
-}
-
-// Step interpolation; generates "H" and "V" commands.
-function d3_svg_lineStepBefore(points) {
- var i = 0,
- n = points.length,
- p = points[0],
- path = [p[0], ",", p[1]];
- while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
- return path.join("");
-}
-
-// Step interpolation; generates "H" and "V" commands.
-function d3_svg_lineStepAfter(points) {
- var i = 0,
- n = points.length,
- p = points[0],
- path = [p[0], ",", p[1]];
- while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
- return path.join("");
-}
-
-// Open cardinal spline interpolation; generates "C" commands.
-function d3_svg_lineCardinalOpen(points, tension) {
- return points.length < 4
- ? d3_svg_lineLinear(points)
- : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1),
- d3_svg_lineCardinalTangents(points, tension));
-}
-
-// Closed cardinal spline interpolation; generates "C" commands.
-function d3_svg_lineCardinalClosed(points, tension) {
- return points.length < 3
- ? d3_svg_lineLinear(points)
- : points[0] + d3_svg_lineHermite((points.push(points[0]), points),
- d3_svg_lineCardinalTangents([points[points.length - 2]]
- .concat(points, [points[1]]), tension));
-}
-
-// Cardinal spline interpolation; generates "C" commands.
-function d3_svg_lineCardinal(points, tension, closed) {
- return points.length < 3
- ? d3_svg_lineLinear(points)
- : points[0] + d3_svg_lineHermite(points,
- d3_svg_lineCardinalTangents(points, tension));
-}
-
-// Hermite spline construction; generates "C" commands.
-function d3_svg_lineHermite(points, tangents) {
- if (tangents.length < 1
- || (points.length != tangents.length
- && points.length != tangents.length + 2)) {
- return d3_svg_lineLinear(points);
- }
-
- var quad = points.length != tangents.length,
- path = "",
- p0 = points[0],
- p = points[1],
- t0 = tangents[0],
- t = t0,
- pi = 1;
-
- if (quad) {
- path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3)
- + "," + p[0] + "," + p[1];
- p0 = points[1];
- pi = 2;
- }
-
- if (tangents.length > 1) {
- t = tangents[1];
- p = points[pi];
- pi++;
- path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1])
- + "," + (p[0] - t[0]) + "," + (p[1] - t[1])
- + "," + p[0] + "," + p[1];
- for (var i = 2; i < tangents.length; i++, pi++) {
- p = points[pi];
- t = tangents[i];
- path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1])
- + "," + p[0] + "," + p[1];
- }
- }
-
- if (quad) {
- var lp = points[pi];
- path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3)
- + "," + lp[0] + "," + lp[1];
- }
-
- return path;
-}
-
-// Generates tangents for a cardinal spline.
-function d3_svg_lineCardinalTangents(points, tension) {
- var tangents = [],
- a = (1 - tension) / 2,
- p0,
- p1 = points[0],
- p2 = points[1],
- i = 1,
- n = points.length;
- while (++i < n) {
- p0 = p1;
- p1 = p2;
- p2 = points[i];
- tangents.push([a * (p2[0] - p0[0]), a * (p2[1] - p0[1])]);
- }
- return tangents;
-}
-
-// B-spline interpolation; generates "C" commands.
-function d3_svg_lineBasis(points) {
- if (points.length < 3) return d3_svg_lineLinear(points);
- var i = 1,
- n = points.length,
- pi = points[0],
- x0 = pi[0],
- y0 = pi[1],
- px = [x0, x0, x0, (pi = points[1])[0]],
- py = [y0, y0, y0, pi[1]],
- path = [x0, ",", y0];
- d3_svg_lineBasisBezier(path, px, py);
- while (++i < n) {
- pi = points[i];
- px.shift(); px.push(pi[0]);
- py.shift(); py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- i = -1;
- while (++i < 2) {
- px.shift(); px.push(pi[0]);
- py.shift(); py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
-}
-
-// Open B-spline interpolation; generates "C" commands.
-function d3_svg_lineBasisOpen(points) {
- if (points.length < 4) return d3_svg_lineLinear(points);
- var path = [],
- i = -1,
- n = points.length,
- pi,
- px = [0],
- py = [0];
- while (++i < 3) {
- pi = points[i];
- px.push(pi[0]);
- py.push(pi[1]);
- }
- path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px)
- + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
- --i; while (++i < n) {
- pi = points[i];
- px.shift(); px.push(pi[0]);
- py.shift(); py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
-}
-
-// Closed B-spline interpolation; generates "C" commands.
-function d3_svg_lineBasisClosed(points) {
- var path,
- i = -1,
- n = points.length,
- m = n + 4,
- pi,
- px = [],
- py = [];
- while (++i < 4) {
- pi = points[i % n];
- px.push(pi[0]);
- py.push(pi[1]);
- }
- path = [
- d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",",
- d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)
- ];
- --i; while (++i < m) {
- pi = points[i % n];
- px.shift(); px.push(pi[0]);
- py.shift(); py.push(pi[1]);
- d3_svg_lineBasisBezier(path, px, py);
- }
- return path.join("");
-}
-
-function d3_svg_lineBundle(points, tension) {
- var n = points.length - 1,
- x0 = points[0][0],
- y0 = points[0][1],
- dx = points[n][0] - x0,
- dy = points[n][1] - y0,
- i = -1,
- p,
- t;
- while (++i <= n) {
- p = points[i];
- t = i / n;
- p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
- p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
- }
- return d3_svg_lineBasis(points);
-}
-
-// Returns the dot product of the given four-element vectors.
-function d3_svg_lineDot4(a, b) {
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
-}
-
-// Matrix to transform basis (b-spline) control points to bezier
-// control points. Derived from FvD 11.2.8.
-var d3_svg_lineBasisBezier1 = [0, 2/3, 1/3, 0],
- d3_svg_lineBasisBezier2 = [0, 1/3, 2/3, 0],
- d3_svg_lineBasisBezier3 = [0, 1/6, 2/3, 1/6];
-
-// Pushes a "C" Bézier curve onto the specified path array, given the
-// two specified four-element arrays which define the control points.
-function d3_svg_lineBasisBezier(path, x, y) {
- path.push(
- "C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x),
- ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y),
- ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x),
- ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y),
- ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x),
- ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
-}
-
-// Computes the slope from points p0 to p1.
-function d3_svg_lineSlope(p0, p1) {
- return (p1[1] - p0[1]) / (p1[0] - p0[0]);
-}
-
-// Compute three-point differences for the given points.
-// http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Finite_difference
-function d3_svg_lineFiniteDifferences(points) {
- var i = 0,
- j = points.length - 1,
- m = [],
- p0 = points[0],
- p1 = points[1],
- d = m[0] = d3_svg_lineSlope(p0, p1);
- while (++i < j) {
- m[i] = d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]));
- }
- m[i] = d;
- return m;
-}
-
-// Interpolates the given points using Fritsch-Carlson Monotone cubic Hermite
-// interpolation. Returns an array of tangent vectors. For details, see
-// http://en.wikipedia.org/wiki/Monotone_cubic_interpolation
-function d3_svg_lineMonotoneTangents(points) {
- var tangents = [],
- d,
- a,
- b,
- s,
- m = d3_svg_lineFiniteDifferences(points),
- i = -1,
- j = points.length - 1;
-
- // The first two steps are done by computing finite-differences:
- // 1. Compute the slopes of the secant lines between successive points.
- // 2. Initialize the tangents at every point as the average of the secants.
-
- // Then, for each segment…
- while (++i < j) {
- d = d3_svg_lineSlope(points[i], points[i + 1]);
-
- // 3. If two successive yk = y{k + 1} are equal (i.e., d is zero), then set
- // mk = m{k + 1} = 0 as the spline connecting these points must be flat to
- // preserve monotonicity. Ignore step 4 and 5 for those k.
-
- if (Math.abs(d) < 1e-6) {
- m[i] = m[i + 1] = 0;
- } else {
- // 4. Let ak = mk / dk and bk = m{k + 1} / dk.
- a = m[i] / d;
- b = m[i + 1] / d;
-
- // 5. Prevent overshoot and ensure monotonicity by restricting the
- // magnitude of vector <ak, bk> to a circle of radius 3.
- s = a * a + b * b;
- if (s > 9) {
- s = d * 3 / Math.sqrt(s);
- m[i] = s * a;
- m[i + 1] = s * b;
- }
- }
- }
-
- // Compute the normalized tangent vector from the slopes. Note that if x is
- // not monotonic, it's possible that the slope will be infinite, so we protect
- // against NaN by setting the coordinate to zero.
- i = -1; while (++i <= j) {
- s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0])
- / (6 * (1 + m[i] * m[i]));
- tangents.push([s || 0, m[i] * s || 0]);
- }
-
- return tangents;
-}
-
-function d3_svg_lineMonotone(points) {
- return points.length < 3
- ? d3_svg_lineLinear(points)
- : points[0] +
- d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
-}
-d3.svg.line.radial = function() {
- var line = d3_svg_line(d3_svg_lineRadial);
- line.radius = line.x, delete line.x;
- line.angle = line.y, delete line.y;
- return line;
-};
-
-function d3_svg_lineRadial(points) {
- var point,
- i = -1,
- n = points.length,
- r,
- a;
- while (++i < n) {
- point = points[i];
- r = point[0];
- a = point[1] + d3_svg_arcOffset;
- point[0] = r * Math.cos(a);
- point[1] = r * Math.sin(a);
- }
- return points;
-}
-function d3_svg_area(projection) {
- var x0 = d3_svg_lineX,
- x1 = d3_svg_lineX,
- y0 = 0,
- y1 = d3_svg_lineY,
- interpolate,
- i0,
- i1,
- tension = .7;
-
- function area(d) {
- if (d.length < 1) return null;
- var points0 = d3_svg_linePoints(this, d, x0, y0),
- points1 = d3_svg_linePoints(this, d, x0 === x1 ? d3_svg_areaX(points0) : x1, y0 === y1 ? d3_svg_areaY(points0) : y1);
- return "M" + i0(projection(points1), tension)
- + "L" + i1(projection(points0.reverse()), tension)
- + "Z";
- }
-
- area.x = function(x) {
- if (!arguments.length) return x1;
- x0 = x1 = x;
- return area;
- };
-
- area.x0 = function(x) {
- if (!arguments.length) return x0;
- x0 = x;
- return area;
- };
-
- area.x1 = function(x) {
- if (!arguments.length) return x1;
- x1 = x;
- return area;
- };
-
- area.y = function(y) {
- if (!arguments.length) return y1;
- y0 = y1 = y;
- return area;
- };
-
- area.y0 = function(y) {
- if (!arguments.length) return y0;
- y0 = y;
- return area;
- };
-
- area.y1 = function(y) {
- if (!arguments.length) return y1;
- y1 = y;
- return area;
- };
-
- area.interpolate = function(x) {
- if (!arguments.length) return interpolate;
- i0 = d3_svg_lineInterpolators[interpolate = x];
- i1 = i0.reverse || i0;
- return area;
- };
-
- area.tension = function(x) {
- if (!arguments.length) return tension;
- tension = x;
- return area;
- };
-
- return area.interpolate("linear");
-}
-
-d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
-d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
-
-d3.svg.area = function() {
- return d3_svg_area(Object);
-};
-
-function d3_svg_areaX(points) {
- return function(d, i) {
- return points[i][0];
- };
-}
-
-function d3_svg_areaY(points) {
- return function(d, i) {
- return points[i][1];
- };
-}
-d3.svg.area.radial = function() {
- var area = d3_svg_area(d3_svg_lineRadial);
- area.radius = area.x, delete area.x;
- area.innerRadius = area.x0, delete area.x0;
- area.outerRadius = area.x1, delete area.x1;
- area.angle = area.y, delete area.y;
- area.startAngle = area.y0, delete area.y0;
- area.endAngle = area.y1, delete area.y1;
- return area;
-};
-d3.svg.chord = function() {
- var source = d3_svg_chordSource,
- target = d3_svg_chordTarget,
- radius = d3_svg_chordRadius,
- startAngle = d3_svg_arcStartAngle,
- endAngle = d3_svg_arcEndAngle;
-
- // TODO Allow control point to be customized.
-
- function chord(d, i) {
- var s = subgroup(this, source, d, i),
- t = subgroup(this, target, d, i);
- return "M" + s.p0
- + arc(s.r, s.p1) + (equals(s, t)
- ? curve(s.r, s.p1, s.r, s.p0)
- : curve(s.r, s.p1, t.r, t.p0)
- + arc(t.r, t.p1)
- + curve(t.r, t.p1, s.r, s.p0))
- + "Z";
- }
-
- function subgroup(self, f, d, i) {
- var subgroup = f.call(self, d, i),
- r = radius.call(self, subgroup, i),
- a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset,
- a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
- return {
- r: r,
- a0: a0,
- a1: a1,
- p0: [r * Math.cos(a0), r * Math.sin(a0)],
- p1: [r * Math.cos(a1), r * Math.sin(a1)]
- };
- }
-
- function equals(a, b) {
- return a.a0 == b.a0 && a.a1 == b.a1;
- }
-
- function arc(r, p) {
- return "A" + r + "," + r + " 0 0,1 " + p;
- }
-
- function curve(r0, p0, r1, p1) {
- return "Q 0,0 " + p1;
- }
-
- chord.radius = function(v) {
- if (!arguments.length) return radius;
- radius = d3.functor(v);
- return chord;
- };
-
- chord.source = function(v) {
- if (!arguments.length) return source;
- source = d3.functor(v);
- return chord;
- };
-
- chord.target = function(v) {
- if (!arguments.length) return target;
- target = d3.functor(v);
- return chord;
- };
-
- chord.startAngle = function(v) {
- if (!arguments.length) return startAngle;
- startAngle = d3.functor(v);
- return chord;
- };
-
- chord.endAngle = function(v) {
- if (!arguments.length) return endAngle;
- endAngle = d3.functor(v);
- return chord;
- };
-
- return chord;
-};
-
-function d3_svg_chordSource(d) {
- return d.source;
-}
-
-function d3_svg_chordTarget(d) {
- return d.target;
-}
-
-function d3_svg_chordRadius(d) {
- return d.radius;
-}
-
-function d3_svg_chordStartAngle(d) {
- return d.startAngle;
-}
-
-function d3_svg_chordEndAngle(d) {
- return d.endAngle;
-}
-d3.svg.diagonal = function() {
- var source = d3_svg_chordSource,
- target = d3_svg_chordTarget,
- projection = d3_svg_diagonalProjection;
-
- function diagonal(d, i) {
- var p0 = source.call(this, d, i),
- p3 = target.call(this, d, i),
- m = (p0.y + p3.y) / 2,
- p = [p0, {x: p0.x, y: m}, {x: p3.x, y: m}, p3];
- p = p.map(projection);
- return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
- }
-
- diagonal.source = function(x) {
- if (!arguments.length) return source;
- source = d3.functor(x);
- return diagonal;
- };
-
- diagonal.target = function(x) {
- if (!arguments.length) return target;
- target = d3.functor(x);
- return diagonal;
- };
-
- diagonal.projection = function(x) {
- if (!arguments.length) return projection;
- projection = x;
- return diagonal;
- };
-
- return diagonal;
-};
-
-function d3_svg_diagonalProjection(d) {
- return [d.x, d.y];
-}
-d3.svg.diagonal.radial = function() {
- var diagonal = d3.svg.diagonal(),
- projection = d3_svg_diagonalProjection,
- projection_ = diagonal.projection;
-
- diagonal.projection = function(x) {
- return arguments.length
- ? projection_(d3_svg_diagonalRadialProjection(projection = x))
- : projection;
- };
-
- return diagonal;
-};
-
-function d3_svg_diagonalRadialProjection(projection) {
- return function() {
- var d = projection.apply(this, arguments),
- r = d[0],
- a = d[1] + d3_svg_arcOffset;
- return [r * Math.cos(a), r * Math.sin(a)];
- };
-}
-d3.svg.mouse = function(container) {
- return d3_svg_mousePoint(container, d3.event);
-};
-
-// https://bugs.webkit.org/show_bug.cgi?id=44083
-var d3_mouse_bug44083 = /WebKit/.test(navigator.userAgent) ? -1 : 0;
-
-function d3_svg_mousePoint(container, e) {
- var point = (container.ownerSVGElement || container).createSVGPoint();
- if ((d3_mouse_bug44083 < 0) && (window.scrollX || window.scrollY)) {
- var svg = d3.select(document.body)
- .append("svg")
- .style("position", "absolute")
- .style("top", 0)
- .style("left", 0);
- var ctm = svg[0][0].getScreenCTM();
- d3_mouse_bug44083 = !(ctm.f || ctm.e);
- svg.remove();
- }
- if (d3_mouse_bug44083) {
- point.x = e.pageX;
- point.y = e.pageY;
- } else {
- point.x = e.clientX;
- point.y = e.clientY;
- }
- point = point.matrixTransform(container.getScreenCTM().inverse());
- return [point.x, point.y];
-};
-d3.svg.touches = function(container, touches) {
- if (arguments.length < 2) touches = d3.event.touches;
-
- return touches ? d3_array(touches).map(function(touch) {
- var point = d3_svg_mousePoint(container, touch);
- point.identifier = touch.identifier;
- return point;
- }) : [];
-};
-d3.svg.symbol = function() {
- var type = d3_svg_symbolType,
- size = d3_svg_symbolSize;
-
- function symbol(d, i) {
- return (d3_svg_symbols[type.call(this, d, i)]
- || d3_svg_symbols.circle)
- (size.call(this, d, i));
- }
-
- symbol.type = function(x) {
- if (!arguments.length) return type;
- type = d3.functor(x);
- return symbol;
- };
-
- // size of symbol in square pixels
- symbol.size = function(x) {
- if (!arguments.length) return size;
- size = d3.functor(x);
- return symbol;
- };
-
- return symbol;
-};
-
-function d3_svg_symbolSize() {
- return 64;
-}
-
-function d3_svg_symbolType() {
- return "circle";
-}
-
-// TODO cross-diagonal?
-var d3_svg_symbols = {
- "circle": function(size) {
- var r = Math.sqrt(size / Math.PI);
- return "M0," + r
- + "A" + r + "," + r + " 0 1,1 0," + (-r)
- + "A" + r + "," + r + " 0 1,1 0," + r
- + "Z";
- },
- "cross": function(size) {
- var r = Math.sqrt(size / 5) / 2;
- return "M" + -3 * r + "," + -r
- + "H" + -r
- + "V" + -3 * r
- + "H" + r
- + "V" + -r
- + "H" + 3 * r
- + "V" + r
- + "H" + r
- + "V" + 3 * r
- + "H" + -r
- + "V" + r
- + "H" + -3 * r
- + "Z";
- },
- "diamond": function(size) {
- var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)),
- rx = ry * d3_svg_symbolTan30;
- return "M0," + -ry
- + "L" + rx + ",0"
- + " 0," + ry
- + " " + -rx + ",0"
- + "Z";
- },
- "square": function(size) {
- var r = Math.sqrt(size) / 2;
- return "M" + -r + "," + -r
- + "L" + r + "," + -r
- + " " + r + "," + r
- + " " + -r + "," + r
- + "Z";
- },
- "triangle-down": function(size) {
- var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
- ry = rx * d3_svg_symbolSqrt3 / 2;
- return "M0," + ry
- + "L" + rx +"," + -ry
- + " " + -rx + "," + -ry
- + "Z";
- },
- "triangle-up": function(size) {
- var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
- ry = rx * d3_svg_symbolSqrt3 / 2;
- return "M0," + -ry
- + "L" + rx +"," + ry
- + " " + -rx + "," + ry
- + "Z";
- }
-};
-
-d3.svg.symbolTypes = d3.keys(d3_svg_symbols);
-
-var d3_svg_symbolSqrt3 = Math.sqrt(3),
- d3_svg_symbolTan30 = Math.tan(30 * Math.PI / 180);
-d3.svg.axis = function() {
- var scale = d3.scale.linear(),
- orient = "bottom",
- tickMajorSize = 6,
- tickMinorSize = 6,
- tickEndSize = 6,
- tickPadding = 3,
- tickArguments_ = [10],
- tickFormat_,
- tickSubdivide = 0;
-
- function axis(selection) {
- selection.each(function(d, i, j) {
- var g = d3.select(this);
-
- // If selection is a transition, create subtransitions.
- var transition = selection.delay ? function(o) {
- var id = d3_transitionInheritId;
- try {
- d3_transitionInheritId = selection.id;
- return o.transition()
- .delay(selection[j][i].delay)
- .duration(selection[j][i].duration)
- .ease(selection.ease());
- } finally {
- d3_transitionInheritId = id;
- }
- } : Object;
-
- // Ticks, or domain values for ordinal scales.
- var ticks = scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain(),
- tickFormat = tickFormat_ == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String) : tickFormat_;
-
- // Minor ticks.
- var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide),
- subtick = g.selectAll(".minor").data(subticks, String),
- subtickEnter = subtick.enter().insert("line", "g").attr("class", "tick minor").style("opacity", 1e-6),
- subtickExit = transition(subtick.exit()).style("opacity", 1e-6).remove(),
- subtickUpdate = transition(subtick).style("opacity", 1);
-
- // Major ticks.
- var tick = g.selectAll("g").data(ticks, String),
- tickEnter = tick.enter().insert("g", "path").style("opacity", 1e-6),
- tickExit = transition(tick.exit()).style("opacity", 1e-6).remove(),
- tickUpdate = transition(tick).style("opacity", 1),
- tickTransform;
-
- // Domain.
- var range = d3_scaleRange(scale),
- path = g.selectAll(".domain").data([0]),
- pathEnter = path.enter().append("path").attr("class", "domain"),
- pathUpdate = transition(path);
-
- // Stash a snapshot of the new scale, and retrieve the old snapshot.
- var scale1 = scale.copy(),
- scale0 = this.__chart__ || scale1;
- this.__chart__ = scale1;
-
- tickEnter.append("line").attr("class", "tick");
- tickEnter.append("text");
- tickUpdate.select("text").text(tickFormat);
-
- switch (orient) {
- case "bottom": {
- tickTransform = d3_svg_axisX;
- subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
- tickUpdate.select("line").attr("x2", 0).attr("y2", tickMajorSize);
- tickUpdate.select("text").attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding).attr("dy", ".71em").attr("text-anchor", "middle");
- pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
- break;
- }
- case "top": {
- tickTransform = d3_svg_axisX;
- subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
- tickUpdate.select("line").attr("x2", 0).attr("y2", -tickMajorSize);
- tickUpdate.select("text").attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("dy", "0em").attr("text-anchor", "middle");
- pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
- break;
- }
- case "left": {
- tickTransform = d3_svg_axisY;
- subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
- tickUpdate.select("line").attr("x2", -tickMajorSize).attr("y2", 0);
- tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "end");
- pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
- break;
- }
- case "right": {
- tickTransform = d3_svg_axisY;
- subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
- tickUpdate.select("line").attr("x2", tickMajorSize).attr("y2", 0);
- tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "start");
- pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
- break;
- }
- }
-
- // For quantitative scales:
- // - enter new ticks from the old scale
- // - exit old ticks to the new scale
- if (scale.ticks) {
- tickEnter.call(tickTransform, scale0);
- tickUpdate.call(tickTransform, scale1);
- tickExit.call(tickTransform, scale1);
- subtickEnter.call(tickTransform, scale0);
- subtickUpdate.call(tickTransform, scale1);
- subtickExit.call(tickTransform, scale1);
- }
-
- // For ordinal scales:
- // - any entering ticks are undefined in the old scale
- // - any exiting ticks are undefined in the new scale
- // Therefore, we only need to transition updating ticks.
- else {
- var dx = scale1.rangeBand() / 2, x = function(d) { return scale1(d) + dx; };
- tickEnter.call(tickTransform, x);
- tickUpdate.call(tickTransform, x);
- }
- });
- }
-
- axis.scale = function(x) {
- if (!arguments.length) return scale;
- scale = x;
- return axis;
- };
-
- axis.orient = function(x) {
- if (!arguments.length) return orient;
- orient = x;
- return axis;
- };
-
- axis.ticks = function() {
- if (!arguments.length) return tickArguments_;
- tickArguments_ = arguments;
- return axis;
- };
-
- axis.tickFormat = function(x) {
- if (!arguments.length) return tickFormat_;
- tickFormat_ = x;
- return axis;
- };
-
- axis.tickSize = function(x, y, z) {
- if (!arguments.length) return tickMajorSize;
- var n = arguments.length - 1;
- tickMajorSize = +x;
- tickMinorSize = n > 1 ? +y : tickMajorSize;
- tickEndSize = n > 0 ? +arguments[n] : tickMajorSize;
- return axis;
- };
-
- axis.tickPadding = function(x) {
- if (!arguments.length) return tickPadding;
- tickPadding = +x;
- return axis;
- };
-
- axis.tickSubdivide = function(x) {
- if (!arguments.length) return tickSubdivide;
- tickSubdivide = +x;
- return axis;
- };
-
- return axis;
-};
-
-function d3_svg_axisX(selection, x) {
- selection.attr("transform", function(d) { return "translate(" + x(d) + ",0)"; });
-}
-
-function d3_svg_axisY(selection, y) {
- selection.attr("transform", function(d) { return "translate(0," + y(d) + ")"; });
-}
-
-function d3_svg_axisSubdivide(scale, ticks, m) {
- subticks = [];
- if (m && ticks.length > 1) {
- var extent = d3_scaleExtent(scale.domain()),
- subticks,
- i = -1,
- n = ticks.length,
- d = (ticks[1] - ticks[0]) / ++m,
- j,
- v;
- while (++i < n) {
- for (j = m; --j > 0;) {
- if ((v = +ticks[i] - j * d) >= extent[0]) {
- subticks.push(v);
- }
- }
- }
- for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1];) {
- subticks.push(v);
- }
- }
- return subticks;
-}
-d3.svg.brush = function() {
- var event = d3.dispatch("brushstart", "brush", "brushend"),
- x, // x-scale, optional
- y, // y-scale, optional
- extent = [[0, 0], [0, 0]]; // [x0, y0], [x1, y1]
-
- function brush(g) {
- var resizes = x && y ? ["n", "e", "s", "w", "nw", "ne", "se", "sw"]
- : x ? ["e", "w"]
- : y ? ["n", "s"]
- : [];
-
- g.each(function() {
- var g = d3.select(this).on("mousedown.brush", down),
- bg = g.selectAll(".background").data([,]),
- fg = g.selectAll(".extent").data([,]),
- tz = g.selectAll(".resize").data(resizes, String),
- e;
-
- // An invisible, mouseable area for starting a new brush.
- bg.enter().append("rect")
- .attr("class", "background")
- .style("visibility", "hidden")
- .style("pointer-events", "all")
- .style("cursor", "crosshair");
-
- // The visible brush extent; style this as you like!
- fg.enter().append("rect")
- .attr("class", "extent")
- .style("cursor", "move");
-
- // More invisible rects for resizing the extent.
- tz.enter().append("rect")
- .attr("class", function(d) { return "resize " + d; })
- .attr("width", 6)
- .attr("height", 6)
- .style("visibility", "hidden")
- .style("pointer-events", brush.empty() ? "none" : "all")
- .style("cursor", function(d) { return d3_svg_brushCursor[d]; });
-
- // Remove any superfluous resizers.
- tz.exit().remove();
-
- // Initialize the background to fill the defined range.
- // If the range isn't defined, you can post-process.
- if (x) {
- e = d3_scaleRange(x);
- bg.attr("x", e[0]).attr("width", e[1] - e[0]);
- d3_svg_brushRedrawX(g, extent);
- }
- if (y) {
- e = d3_scaleRange(y);
- bg.attr("y", e[0]).attr("height", e[1] - e[0]);
- d3_svg_brushRedrawY(g, extent);
- }
- });
- }
-
- function down() {
- var target = d3.select(d3.event.target);
-
- // Store some global state for the duration of the brush gesture.
- d3_svg_brush = brush;
- d3_svg_brushTarget = this;
- d3_svg_brushExtent = extent;
- d3_svg_brushOffset = d3.svg.mouse(d3_svg_brushTarget);
-
- // If the extent was clicked on, drag rather than brush;
- // store the offset between the mouse and extent origin instead.
- if (d3_svg_brushDrag = target.classed("extent")) {
- d3_svg_brushOffset[0] = extent[0][0] - d3_svg_brushOffset[0];
- d3_svg_brushOffset[1] = extent[0][1] - d3_svg_brushOffset[1];
- }
-
- // If a resizer was clicked on, record which side is to be resized.
- // Also, set the offset to the opposite side.
- else if (target.classed("resize")) {
- d3_svg_brushResize = d3.event.target.__data__;
- d3_svg_brushOffset[0] = extent[+/w$/.test(d3_svg_brushResize)][0];
- d3_svg_brushOffset[1] = extent[+/^n/.test(d3_svg_brushResize)][1];
- }
-
- // If the ALT key is down when starting a brush, the center is at the mouse.
- else if (d3.event.altKey) {
- d3_svg_brushCenter = d3_svg_brushOffset.slice();
- }
-
- // Restrict which dimensions are resized.
- d3_svg_brushX = !/^(n|s)$/.test(d3_svg_brushResize) && x;
- d3_svg_brushY = !/^(e|w)$/.test(d3_svg_brushResize) && y;
-
- // Notify listeners.
- d3_svg_brushDispatch = dispatcher(this, arguments);
- d3_svg_brushDispatch("brushstart");
- d3_svg_brushMove();
- d3_eventCancel();
- }
-
- function dispatcher(that, argumentz) {
- return function(type) {
- var e = d3.event;
- try {
- d3.event = {type: type, target: brush};
- event[type].apply(that, argumentz);
- } finally {
- d3.event = e;
- }
- };
- }
-
- brush.x = function(z) {
- if (!arguments.length) return x;
- x = z;
- return brush;
- };
-
- brush.y = function(z) {
- if (!arguments.length) return y;
- y = z;
- return brush;
- };
-
- brush.extent = function(z) {
- var x0, x1, y0, y1, t;
-
- // Invert the pixel extent to data-space.
- if (!arguments.length) {
- if (x) {
- x0 = extent[0][0], x1 = extent[1][0];
- if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
- if (x1 < x0) t = x0, x0 = x1, x1 = t;
- }
- if (y) {
- y0 = extent[0][1], y1 = extent[1][1];
- if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
- if (y1 < y0) t = y0, y0 = y1, y1 = t;
- }
- return x && y ? [[x0, y0], [x1, y1]] : x ? [x0, x1] : y && [y0, y1];
- }
-
- // Scale the data-space extent to pixels.
- if (x) {
- x0 = z[0], x1 = z[1];
- if (y) x0 = x0[0], x1 = x1[0];
- if (x.invert) x0 = x(x0), x1 = x(x1);
- if (x1 < x0) t = x0, x0 = x1, x1 = t;
- extent[0][0] = x0, extent[1][0] = x1;
- }
- if (y) {
- y0 = z[0], y1 = z[1];
- if (x) y0 = y0[1], y1 = y1[1];
- if (y.invert) y0 = y(y0), y1 = y(y1);
- if (y1 < y0) t = y0, y0 = y1, y1 = t;
- extent[0][1] = y0, extent[1][1] = y1;
- }
-
- return brush;
- };
-
- brush.clear = function() {
- extent[0][0] =
- extent[0][1] =
- extent[1][0] =
- extent[1][1] = 0;
- return brush;
- };
-
- brush.empty = function() {
- return (x && extent[0][0] === extent[1][0])
- || (y && extent[0][1] === extent[1][1]);
- };
-
- d3.select(window)
- .on("mousemove.brush", d3_svg_brushMove)
- .on("mouseup.brush", d3_svg_brushUp)
- .on("keydown.brush", d3_svg_brushKeydown)
- .on("keyup.brush", d3_svg_brushKeyup);
-
- return d3.rebind(brush, event, "on");
-};
-
-var d3_svg_brush,
- d3_svg_brushDispatch,
- d3_svg_brushTarget,
- d3_svg_brushX,
- d3_svg_brushY,
- d3_svg_brushExtent,
- d3_svg_brushDrag,
- d3_svg_brushResize,
- d3_svg_brushCenter,
- d3_svg_brushOffset;
-
-function d3_svg_brushRedrawX(g, extent) {
- g.select(".extent").attr("x", extent[0][0]);
- g.selectAll(".n,.s,.w,.nw,.sw").attr("x", extent[0][0] - 2);
- g.selectAll(".e,.ne,.se").attr("x", extent[1][0] - 3);
- g.selectAll(".extent,.n,.s").attr("width", extent[1][0] - extent[0][0]);
-}
-
-function d3_svg_brushRedrawY(g, extent) {
- g.select(".extent").attr("y", extent[0][1]);
- g.selectAll(".n,.e,.w,.nw,.ne").attr("y", extent[0][1] - 3);
- g.selectAll(".s,.se,.sw").attr("y", extent[1][1] - 4);
- g.selectAll(".extent,.e,.w").attr("height", extent[1][1] - extent[0][1]);
-}
-
-function d3_svg_brushKeydown() {
- if (d3.event.keyCode == 32 && d3_svg_brushTarget && !d3_svg_brushDrag) {
- d3_svg_brushCenter = null;
- d3_svg_brushOffset[0] -= d3_svg_brushExtent[1][0];
- d3_svg_brushOffset[1] -= d3_svg_brushExtent[1][1];
- d3_svg_brushDrag = 2;
- d3_eventCancel();
- }
-}
-
-function d3_svg_brushKeyup() {
- if (d3.event.keyCode == 32 && d3_svg_brushDrag == 2) {
- d3_svg_brushOffset[0] += d3_svg_brushExtent[1][0];
- d3_svg_brushOffset[1] += d3_svg_brushExtent[1][1];
- d3_svg_brushDrag = 0;
- d3_eventCancel();
- }
-}
-
-function d3_svg_brushMove() {
- if (d3_svg_brushOffset) {
- var mouse = d3.svg.mouse(d3_svg_brushTarget),
- g = d3.select(d3_svg_brushTarget);
-
- if (!d3_svg_brushDrag) {
-
- // If needed, determine the center from the current extent.
- if (d3.event.altKey) {
- if (!d3_svg_brushCenter) {
- d3_svg_brushCenter = [
- (d3_svg_brushExtent[0][0] + d3_svg_brushExtent[1][0]) / 2,
- (d3_svg_brushExtent[0][1] + d3_svg_brushExtent[1][1]) / 2
- ];
- }
-
- // Update the offset, for when the ALT key is released.
- d3_svg_brushOffset[0] = d3_svg_brushExtent[+(mouse[0] < d3_svg_brushCenter[0])][0];
- d3_svg_brushOffset[1] = d3_svg_brushExtent[+(mouse[1] < d3_svg_brushCenter[1])][1];
- }
-
- // When the ALT key is released, we clear the center.
- else d3_svg_brushCenter = null;
- }
-
- // Update the brush extent for each dimension.
- if (d3_svg_brushX) {
- d3_svg_brushMove1(mouse, d3_svg_brushX, 0);
- d3_svg_brushRedrawX(g, d3_svg_brushExtent);
- }
- if (d3_svg_brushY) {
- d3_svg_brushMove1(mouse, d3_svg_brushY, 1);
- d3_svg_brushRedrawY(g, d3_svg_brushExtent);
- }
-
- // Notify listeners.
- d3_svg_brushDispatch("brush");
- }
-}
-
-function d3_svg_brushMove1(mouse, scale, i) {
- var range = d3_scaleRange(scale),
- r0 = range[0],
- r1 = range[1],
- offset = d3_svg_brushOffset[i],
- size = d3_svg_brushExtent[1][i] - d3_svg_brushExtent[0][i],
- min,
- max;
-
- // When dragging, reduce the range by the extent size and offset.
- if (d3_svg_brushDrag) {
- r0 -= offset;
- r1 -= size + offset;
- }
-
- // Clamp the mouse so that the extent fits within the range extent.
- min = Math.max(r0, Math.min(r1, mouse[i]));
-
- // Compute the new extent bounds.
- if (d3_svg_brushDrag) {
- max = (min += offset) + size;
- } else {
-
- // If the ALT key is pressed, then preserve the center of the extent.
- if (d3_svg_brushCenter) offset = Math.max(r0, Math.min(r1, 2 * d3_svg_brushCenter[i] - min));
-
- // Compute the min and max of the offset and mouse.
- if (offset < min) {
- max = min;
- min = offset;
- } else {
- max = offset;
- }
- }
-
- // Update the stored bounds.
- d3_svg_brushExtent[0][i] = min;
- d3_svg_brushExtent[1][i] = max;
-}
-
-function d3_svg_brushUp() {
- if (d3_svg_brushOffset) {
- d3_svg_brushMove();
- d3.select(d3_svg_brushTarget).selectAll(".resize").style("pointer-events", d3_svg_brush.empty() ? "none" : "all");
- d3_svg_brushDispatch("brushend");
- d3_svg_brush =
- d3_svg_brushDispatch =
- d3_svg_brushTarget =
- d3_svg_brushX =
- d3_svg_brushY =
- d3_svg_brushExtent =
- d3_svg_brushDrag =
- d3_svg_brushResize =
- d3_svg_brushCenter =
- d3_svg_brushOffset = null;
- d3_eventCancel();
- }
-}
-
-var d3_svg_brushCursor = {
- n: "ns-resize",
- e: "ew-resize",
- s: "ns-resize",
- w: "ew-resize",
- nw: "nwse-resize",
- ne: "nesw-resize",
- se: "nwse-resize",
- sw: "nesw-resize"
-};
-d3.behavior = {};
-// TODO Track touch points by identifier.
-
-d3.behavior.drag = function() {
- var event = d3.dispatch("drag", "dragstart", "dragend"),
- origin = null;
-
- function drag() {
- this
- .on("mousedown.drag", mousedown)
- .on("touchstart.drag", mousedown);
-
- d3.select(window)
- .on("mousemove.drag", d3_behavior_dragMove)
- .on("touchmove.drag", d3_behavior_dragMove)
- .on("mouseup.drag", d3_behavior_dragUp, true)
- .on("touchend.drag", d3_behavior_dragUp, true)
- .on("click.drag", d3_behavior_dragClick, true);
- }
-
- // snapshot the local context for subsequent dispatch
- function start() {
- d3_behavior_dragEvent = event;
- d3_behavior_dragEventTarget = d3.event.target;
- d3_behavior_dragTarget = this;
- d3_behavior_dragArguments = arguments;
- d3_behavior_dragOrigin = d3_behavior_dragPoint();
- if (origin) {
- d3_behavior_dragOffset = origin.apply(d3_behavior_dragTarget, d3_behavior_dragArguments);
- d3_behavior_dragOffset = [d3_behavior_dragOffset.x - d3_behavior_dragOrigin[0], d3_behavior_dragOffset.y - d3_behavior_dragOrigin[1]];
- } else {
- d3_behavior_dragOffset = [0, 0];
- }
- d3_behavior_dragMoved = 0;
- }
-
- function mousedown() {
- start.apply(this, arguments);
- d3_behavior_dragDispatch("dragstart");
- }
-
- drag.origin = function(x) {
- if (!arguments.length) return origin;
- origin = x;
- return drag;
- };
-
- return d3.rebind(drag, event, "on");
-};
-
-var d3_behavior_dragEvent,
- d3_behavior_dragEventTarget,
- d3_behavior_dragTarget,
- d3_behavior_dragArguments,
- d3_behavior_dragOffset,
- d3_behavior_dragOrigin,
- d3_behavior_dragMoved;
-
-function d3_behavior_dragDispatch(type) {
- var p = d3_behavior_dragPoint(),
- o = d3.event,
- e = d3.event = {type: type};
-
- if (p) {
- e.x = p[0] + d3_behavior_dragOffset[0];
- e.y = p[1] + d3_behavior_dragOffset[1];
- e.dx = p[0] - d3_behavior_dragOrigin[0];
- e.dy = p[1] - d3_behavior_dragOrigin[1];
- d3_behavior_dragMoved |= e.dx | e.dy;
- d3_behavior_dragOrigin = p;
- }
-
- try {
- d3_behavior_dragEvent[type].apply(d3_behavior_dragTarget, d3_behavior_dragArguments);
- } finally {
- d3.event = o;
- }
-
- o.stopPropagation();
- o.preventDefault();
-}
-
-function d3_behavior_dragPoint() {
- var p = d3_behavior_dragTarget.parentNode,
- t = d3.event.changedTouches;
- return p && (t
- ? d3.svg.touches(p, t)[0]
- : d3.svg.mouse(p));
-}
-
-function d3_behavior_dragMove() {
- if (!d3_behavior_dragTarget) return;
- var parent = d3_behavior_dragTarget.parentNode;
-
- // O NOES! The drag element was removed from the DOM.
- if (!parent) return d3_behavior_dragUp();
-
- d3_behavior_dragDispatch("drag");
- d3_eventCancel();
-}
-
-function d3_behavior_dragUp() {
- if (!d3_behavior_dragTarget) return;
- d3_behavior_dragDispatch("dragend");
-
- // If the node was moved, prevent the mouseup from propagating.
- // Also prevent the subsequent click from propagating (e.g., for anchors).
- if (d3_behavior_dragMoved) {
- d3_eventCancel();
- d3_behavior_dragMoved = d3.event.target === d3_behavior_dragEventTarget;
- }
-
- d3_behavior_dragEvent =
- d3_behavior_dragEventTarget =
- d3_behavior_dragTarget =
- d3_behavior_dragArguments =
- d3_behavior_dragOffset =
- d3_behavior_dragOrigin = null;
-}
-
-function d3_behavior_dragClick() {
- if (d3_behavior_dragMoved) {
- d3_eventCancel();
- d3_behavior_dragMoved = 0;
- }
-}
-// TODO unbind zoom behavior?
-d3.behavior.zoom = function() {
- var xyz = [0, 0, 0],
- event = d3.dispatch("zoom"),
- extent = d3_behavior_zoomInfiniteExtent;
-
- function zoom() {
- this
- .on("mousedown.zoom", mousedown)
- .on("mousewheel.zoom", mousewheel)
- .on("DOMMouseScroll.zoom", mousewheel)
- .on("dblclick.zoom", dblclick)
- .on("touchstart.zoom", touchstart);
-
- d3.select(window)
- .on("mousemove.zoom", d3_behavior_zoomMousemove)
- .on("mouseup.zoom", d3_behavior_zoomMouseup)
- .on("touchmove.zoom", d3_behavior_zoomTouchmove)
- .on("touchend.zoom", d3_behavior_zoomTouchup)
- .on("click.zoom", d3_behavior_zoomClick, true);
- }
-
- // snapshot the local context for subsequent dispatch
- function start() {
- d3_behavior_zoomXyz = xyz;
- d3_behavior_zoomExtent = extent;
- d3_behavior_zoomDispatch = event.zoom;
- d3_behavior_zoomEventTarget = d3.event.target;
- d3_behavior_zoomTarget = this;
- d3_behavior_zoomArguments = arguments;
- }
-
- function mousedown() {
- start.apply(this, arguments);
- d3_behavior_zoomPanning = d3_behavior_zoomLocation(d3.svg.mouse(d3_behavior_zoomTarget));
- d3_behavior_zoomMoved = 0;
- d3.event.preventDefault();
- window.focus();
- }
-
- // store starting mouse location
- function mousewheel() {
- start.apply(this, arguments);
- if (!d3_behavior_zoomZooming) d3_behavior_zoomZooming = d3_behavior_zoomLocation(d3.svg.mouse(d3_behavior_zoomTarget));
- d3_behavior_zoomTo(d3_behavior_zoomDelta() + xyz[2], d3.svg.mouse(d3_behavior_zoomTarget), d3_behavior_zoomZooming);
- }
-
- function dblclick() {
- start.apply(this, arguments);
- var mouse = d3.svg.mouse(d3_behavior_zoomTarget);
- d3_behavior_zoomTo(d3.event.shiftKey ? Math.ceil(xyz[2] - 1) : Math.floor(xyz[2] + 1), mouse, d3_behavior_zoomLocation(mouse));
- }
-
- // doubletap detection
- function touchstart() {
- start.apply(this, arguments);
- var touches = d3_behavior_zoomTouchup(),
- touch,
- now = Date.now();
- if ((touches.length === 1) && (now - d3_behavior_zoomLast < 300)) {
- d3_behavior_zoomTo(1 + Math.floor(xyz[2]), touch = touches[0], d3_behavior_zoomLocations[touch.identifier]);
- }
- d3_behavior_zoomLast = now;
- }
-
- zoom.extent = function(x) {
- if (!arguments.length) return extent;
- extent = x == null ? d3_behavior_zoomInfiniteExtent : x;
- return zoom;
- };
-
- return d3.rebind(zoom, event, "on");
-};
-
-var d3_behavior_zoomDiv,
- d3_behavior_zoomPanning,
- d3_behavior_zoomZooming,
- d3_behavior_zoomLocations = {}, // identifier -> location
- d3_behavior_zoomLast = 0,
- d3_behavior_zoomXyz,
- d3_behavior_zoomExtent,
- d3_behavior_zoomDispatch,
- d3_behavior_zoomEventTarget,
- d3_behavior_zoomTarget,
- d3_behavior_zoomArguments,
- d3_behavior_zoomMoved;
-
-function d3_behavior_zoomLocation(point) {
- return [
- point[0] - d3_behavior_zoomXyz[0],
- point[1] - d3_behavior_zoomXyz[1],
- d3_behavior_zoomXyz[2]
- ];
-}
-
-// detect the pixels that would be scrolled by this wheel event
-function d3_behavior_zoomDelta() {
-
- // mousewheel events are totally broken!
- // https://bugs.webkit.org/show_bug.cgi?id=40441
- // not only that, but Chrome and Safari differ in re. to acceleration!
- if (!d3_behavior_zoomDiv) {
- d3_behavior_zoomDiv = d3.select("body").append("div")
- .style("visibility", "hidden")
- .style("top", 0)
- .style("height", 0)
- .style("width", 0)
- .style("overflow-y", "scroll")
- .append("div")
- .style("height", "2000px")
- .node().parentNode;
- }
-
- var e = d3.event, delta;
- try {
- d3_behavior_zoomDiv.scrollTop = 1000;
- d3_behavior_zoomDiv.dispatchEvent(e);
- delta = 1000 - d3_behavior_zoomDiv.scrollTop;
- } catch (error) {
- delta = e.wheelDelta || (-e.detail * 5);
- }
-
- return delta * .005;
-}
-
-// Note: Since we don't rotate, it's possible for the touches to become
-// slightly detached from their original positions. Thus, we recompute the
-// touch points on touchend as well as touchstart!
-function d3_behavior_zoomTouchup() {
- var touches = d3.svg.touches(d3_behavior_zoomTarget),
- i = -1,
- n = touches.length,
- touch;
- while (++i < n) d3_behavior_zoomLocations[(touch = touches[i]).identifier] = d3_behavior_zoomLocation(touch);
- return touches;
-}
-
-function d3_behavior_zoomTouchmove() {
- var touches = d3.svg.touches(d3_behavior_zoomTarget);
- switch (touches.length) {
-
- // single-touch pan
- case 1: {
- var touch = touches[0];
- d3_behavior_zoomTo(d3_behavior_zoomXyz[2], touch, d3_behavior_zoomLocations[touch.identifier]);
- break;
- }
-
- // double-touch pan + zoom
- case 2: {
- var p0 = touches[0],
- p1 = touches[1],
- p2 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2],
- l0 = d3_behavior_zoomLocations[p0.identifier],
- l1 = d3_behavior_zoomLocations[p1.identifier],
- l2 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2, l0[2]];
- d3_behavior_zoomTo(Math.log(d3.event.scale) / Math.LN2 + l0[2], p2, l2);
- break;
- }
- }
-}
-
-function d3_behavior_zoomMousemove() {
- d3_behavior_zoomZooming = null;
- if (d3_behavior_zoomPanning) {
- d3_behavior_zoomMoved = 1;
- d3_behavior_zoomTo(d3_behavior_zoomXyz[2], d3.svg.mouse(d3_behavior_zoomTarget), d3_behavior_zoomPanning);
- }
-}
-
-function d3_behavior_zoomMouseup() {
- if (d3_behavior_zoomPanning) {
- if (d3_behavior_zoomMoved) {
- d3_eventCancel();
- d3_behavior_zoomMoved = d3_behavior_zoomEventTarget === d3.event.target;
- }
-
- d3_behavior_zoomXyz =
- d3_behavior_zoomExtent =
- d3_behavior_zoomDispatch =
- d3_behavior_zoomEventTarget =
- d3_behavior_zoomTarget =
- d3_behavior_zoomArguments =
- d3_behavior_zoomPanning = null;
- }
-}
-
-function d3_behavior_zoomClick() {
- if (d3_behavior_zoomMoved) {
- d3_eventCancel();
- d3_behavior_zoomMoved = 0;
- }
-}
-
-function d3_behavior_zoomTo(z, x0, x1) {
- z = d3_behavior_zoomExtentClamp(z, 2);
- var j = Math.pow(2, d3_behavior_zoomXyz[2]),
- k = Math.pow(2, z),
- K = Math.pow(2, (d3_behavior_zoomXyz[2] = z) - x1[2]),
- x_ = d3_behavior_zoomXyz[0],
- y_ = d3_behavior_zoomXyz[1],
- x = d3_behavior_zoomXyz[0] = d3_behavior_zoomExtentClamp((x0[0] - x1[0] * K), 0, k),
- y = d3_behavior_zoomXyz[1] = d3_behavior_zoomExtentClamp((x0[1] - x1[1] * K), 1, k),
- o = d3.event; // Events can be reentrant (e.g., focus).
-
- d3.event = {
- scale: k,
- translate: [x, y],
- transform: function(sx, sy) {
- if (sx) transform(sx, x_, x);
- if (sy) transform(sy, y_, y);
- }
- };
-
- function transform(scale, a, b) {
- scale.domain(scale.range().map(function(v) { return scale.invert(((v - b) * j) / k + a); }));
- }
-
- try {
- d3_behavior_zoomDispatch.apply(d3_behavior_zoomTarget, d3_behavior_zoomArguments);
- } finally {
- d3.event = o;
- }
-
- o.preventDefault();
-}
-
-var d3_behavior_zoomInfiniteExtent = [
- [-Infinity, Infinity],
- [-Infinity, Infinity],
- [-Infinity, Infinity]
-];
-
-function d3_behavior_zoomExtentClamp(x, i, k) {
- var range = d3_behavior_zoomExtent[i],
- r0 = range[0],
- r1 = range[1];
- return arguments.length === 3
- ? Math.max(r1 * (r1 === Infinity ? -Infinity : 1 / k - 1),
- Math.min(r0 === -Infinity ? Infinity : r0, x / k)) * k
- : Math.max(r0, Math.min(r1, x));
-}
-})();
diff --git a/media/d3.layout.js b/media/d3.layout.js
deleted file mode 100644
index 30ba791..0000000
--- a/media/d3.layout.js
+++ /dev/null
@@ -1,1891 +0,0 @@
-(function(){d3.layout = {};
-// Implements hierarchical edge bundling using Holten's algorithm. For each
-// input link, a path is computed that travels through the tree, up the parent
-// hierarchy to the least common ancestor, and then back down to the destination
-// node. Each path is simply an array of nodes.
-d3.layout.bundle = function() {
- return function(links) {
- var paths = [],
- i = -1,
- n = links.length;
- while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
- return paths;
- };
-};
-
-function d3_layout_bundlePath(link) {
- var start = link.source,
- end = link.target,
- lca = d3_layout_bundleLeastCommonAncestor(start, end),
- points = [start];
- while (start !== lca) {
- start = start.parent;
- points.push(start);
- }
- var k = points.length;
- while (end !== lca) {
- points.splice(k, 0, end);
- end = end.parent;
- }
- return points;
-}
-
-function d3_layout_bundleAncestors(node) {
- var ancestors = [],
- parent = node.parent;
- while (parent != null) {
- ancestors.push(node);
- node = parent;
- parent = parent.parent;
- }
- ancestors.push(node);
- return ancestors;
-}
-
-function d3_layout_bundleLeastCommonAncestor(a, b) {
- if (a === b) return a;
- var aNodes = d3_layout_bundleAncestors(a),
- bNodes = d3_layout_bundleAncestors(b),
- aNode = aNodes.pop(),
- bNode = bNodes.pop(),
- sharedNode = null;
- while (aNode === bNode) {
- sharedNode = aNode;
- aNode = aNodes.pop();
- bNode = bNodes.pop();
- }
- return sharedNode;
-}
-d3.layout.chord = function() {
- var chord = {},
- chords,
- groups,
- matrix,
- n,
- padding = 0,
- sortGroups,
- sortSubgroups,
- sortChords;
-
- function relayout() {
- var subgroups = {},
- groupSums = [],
- groupIndex = d3.range(n),
- subgroupIndex = [],
- k,
- x,
- x0,
- i,
- j;
-
- chords = [];
- groups = [];
-
- // Compute the sum.
- k = 0, i = -1; while (++i < n) {
- x = 0, j = -1; while (++j < n) {
- x += matrix[i][j];
- }
- groupSums.push(x);
- subgroupIndex.push(d3.range(n));
- k += x;
- }
-
- // Sort groups…
- if (sortGroups) {
- groupIndex.sort(function(a, b) {
- return sortGroups(groupSums[a], groupSums[b]);
- });
- }
-
- // Sort subgroups…
- if (sortSubgroups) {
- subgroupIndex.forEach(function(d, i) {
- d.sort(function(a, b) {
- return sortSubgroups(matrix[i][a], matrix[i][b]);
- });
- });
- }
-
- // Convert the sum to scaling factor for [0, 2pi].
- // TODO Allow start and end angle to be specified.
- // TODO Allow padding to be specified as percentage?
- k = (2 * Math.PI - padding * n) / k;
-
- // Compute the start and end angle for each group and subgroup.
- // Note: Opera has a bug reordering object literal properties!
- x = 0, i = -1; while (++i < n) {
- x0 = x, j = -1; while (++j < n) {
- var di = groupIndex[i],
- dj = subgroupIndex[di][j],
- v = matrix[di][dj],
- a0 = x,
- a1 = x += v * k;
- subgroups[di + "-" + dj] = {
- index: di,
- subindex: dj,
- startAngle: a0,
- endAngle: a1,
- value: v
- };
- }
- groups.push({
- index: di,
- startAngle: x0,
- endAngle: x,
- value: (x - x0) / k
- });
- x += padding;
- }
-
- // Generate chords for each (non-empty) subgroup-subgroup link.
- i = -1; while (++i < n) {
- j = i - 1; while (++j < n) {
- var source = subgroups[i + "-" + j],
- target = subgroups[j + "-" + i];
- if (source.value || target.value) {
- chords.push(source.value < target.value
- ? {source: target, target: source}
- : {source: source, target: target});
- }
- }
- }
-
- if (sortChords) resort();
- }
-
- function resort() {
- chords.sort(function(a, b) {
- return sortChords(
- (a.source.value + a.target.value) / 2,
- (b.source.value + b.target.value) / 2);
- });
- }
-
- chord.matrix = function(x) {
- if (!arguments.length) return matrix;
- n = (matrix = x) && matrix.length;
- chords = groups = null;
- return chord;
- };
-
- chord.padding = function(x) {
- if (!arguments.length) return padding;
- padding = x;
- chords = groups = null;
- return chord;
- };
-
- chord.sortGroups = function(x) {
- if (!arguments.length) return sortGroups;
- sortGroups = x;
- chords = groups = null;
- return chord;
- };
-
- chord.sortSubgroups = function(x) {
- if (!arguments.length) return sortSubgroups;
- sortSubgroups = x;
- chords = null;
- return chord;
- };
-
- chord.sortChords = function(x) {
- if (!arguments.length) return sortChords;
- sortChords = x;
- if (chords) resort();
- return chord;
- };
-
- chord.chords = function() {
- if (!chords) relayout();
- return chords;
- };
-
- chord.groups = function() {
- if (!groups) relayout();
- return groups;
- };
-
- return chord;
-};
-// A rudimentary force layout using Gauss-Seidel.
-d3.layout.force = function() {
- var force = {},
- event = d3.dispatch("tick"),
- size = [1, 1],
- drag,
- alpha,
- friction = .9,
- linkDistance = d3_layout_forceLinkDistance,
- linkStrength = d3_layout_forceLinkStrength,
- charge = -30,
- gravity = .1,
- theta = .8,
- interval,
- nodes = [],
- links = [],
- distances,
- strengths,
- charges;
-
- function repulse(node) {
- return function(quad, x1, y1, x2, y2) {
- if (quad.point !== node) {
- var dx = quad.cx - node.x,
- dy = quad.cy - node.y,
- dn = 1 / Math.sqrt(dx * dx + dy * dy);
-
- /* Barnes-Hut criterion. */
- if ((x2 - x1) * dn < theta) {
- var k = quad.charge * dn * dn;
- node.px -= dx * k;
- node.py -= dy * k;
- return true;
- }
-
- if (quad.point && isFinite(dn)) {
- var k = quad.pointCharge * dn * dn;
- node.px -= dx * k;
- node.py -= dy * k;
- }
- }
- return !quad.charge;
- };
- }
-
- function tick() {
- var n = nodes.length,
- m = links.length,
- q,
- i, // current index
- o, // current object
- s, // current source
- t, // current target
- l, // current distance
- k, // current force
- x, // x-distance
- y; // y-distance
-
- // gauss-seidel relaxation for links
- for (i = 0; i < m; ++i) {
- o = links[i];
- s = o.source;
- t = o.target;
- x = t.x - s.x;
- y = t.y - s.y;
- if (l = (x * x + y * y)) {
- l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
- x *= l;
- y *= l;
- t.x -= x * (k = s.weight / (t.weight + s.weight));
- t.y -= y * k;
- s.x += x * (k = 1 - k);
- s.y += y * k;
- }
- }
-
- // apply gravity forces
- if (k = alpha * gravity) {
- x = size[0] / 2;
- y = size[1] / 2;
- i = -1; if (k) while (++i < n) {
- o = nodes[i];
- o.x += (x - o.x) * k;
- o.y += (y - o.y) * k;
- }
- }
-
- // compute quadtree center of mass and apply charge forces
- if (charge) {
- d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
- i = -1; while (++i < n) {
- if (!(o = nodes[i]).fixed) {
- q.visit(repulse(o));
- }
- }
- }
-
- // position verlet integration
- i = -1; while (++i < n) {
- o = nodes[i];
- if (o.fixed) {
- o.x = o.px;
- o.y = o.py;
- } else {
- o.x -= (o.px - (o.px = o.x)) * friction;
- o.y -= (o.py - (o.py = o.y)) * friction;
- }
- }
-
- event.tick({type: "tick", alpha: alpha});
-
- // simulated annealing, basically
- return (alpha *= .99) < .005;
- }
-
- force.nodes = function(x) {
- if (!arguments.length) return nodes;
- nodes = x;
- return force;
- };
-
- force.links = function(x) {
- if (!arguments.length) return links;
- links = x;
- return force;
- };
-
- force.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return force;
- };
-
- force.linkDistance = function(x) {
- if (!arguments.length) return linkDistance;
- linkDistance = d3.functor(x);
- return force;
- };
-
- // For backwards-compatibility.
- force.distance = force.linkDistance;
-
- force.linkStrength = function(x) {
- if (!arguments.length) return linkStrength;
- linkStrength = d3.functor(x);
- return force;
- };
-
- force.friction = function(x) {
- if (!arguments.length) return friction;
- friction = x;
- return force;
- };
-
- force.charge = function(x) {
- if (!arguments.length) return charge;
- charge = typeof x === "function" ? x : +x;
- return force;
- };
-
- force.gravity = function(x) {
- if (!arguments.length) return gravity;
- gravity = x;
- return force;
- };
-
- force.theta = function(x) {
- if (!arguments.length) return theta;
- theta = x;
- return force;
- };
-
- force.start = function() {
- var i,
- j,
- n = nodes.length,
- m = links.length,
- w = size[0],
- h = size[1],
- neighbors,
- o;
-
- for (i = 0; i < n; ++i) {
- (o = nodes[i]).index = i;
- o.weight = 0;
- }
-
- distances = [];
- strengths = [];
- for (i = 0; i < m; ++i) {
- o = links[i];
- if (typeof o.source == "number") o.source = nodes[o.source];
- if (typeof o.target == "number") o.target = nodes[o.target];
- distances[i] = linkDistance.call(this, o, i);
- strengths[i] = linkStrength.call(this, o, i);
- ++o.source.weight;
- ++o.target.weight;
- }
-
- for (i = 0; i < n; ++i) {
- o = nodes[i];
- if (isNaN(o.x)) o.x = position("x", w);
- if (isNaN(o.y)) o.y = position("y", h);
- if (isNaN(o.px)) o.px = o.x;
- if (isNaN(o.py)) o.py = o.y;
- }
-
- charges = [];
- if (typeof charge === "function") {
- for (i = 0; i < n; ++i) {
- charges[i] = +charge.call(this, nodes[i], i);
- }
- } else {
- for (i = 0; i < n; ++i) {
- charges[i] = charge;
- }
- }
-
- // initialize node position based on first neighbor
- function position(dimension, size) {
- var neighbors = neighbor(i),
- j = -1,
- m = neighbors.length,
- x;
- while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x;
- return Math.random() * size;
- }
-
- // initialize neighbors lazily
- function neighbor() {
- if (!neighbors) {
- neighbors = [];
- for (j = 0; j < n; ++j) {
- neighbors[j] = [];
- }
- for (j = 0; j < m; ++j) {
- var o = links[j];
- neighbors[o.source.index].push(o.target);
- neighbors[o.target.index].push(o.source);
- }
- }
- return neighbors[i];
- }
-
- return force.resume();
- };
-
- force.resume = function() {
- alpha = .1;
- d3.timer(tick);
- return force;
- };
-
- force.stop = function() {
- alpha = 0;
- return force;
- };
-
- // use `node.call(force.drag)` to make nodes draggable
- force.drag = function() {
- if (!drag) drag = d3.behavior.drag()
- .origin(Object)
- .on("dragstart", dragstart)
- .on("drag", d3_layout_forceDrag)
- .on("dragend", d3_layout_forceDragEnd);
-
- this.on("mouseover.force", d3_layout_forceDragOver)
- .on("mouseout.force", d3_layout_forceDragOut)
- .call(drag);
- };
-
- function dragstart(d) {
- d3_layout_forceDragOver(d3_layout_forceDragNode = d);
- d3_layout_forceDragForce = force;
- }
-
- return d3.rebind(force, event, "on");
-};
-
-var d3_layout_forceDragForce,
- d3_layout_forceDragNode;
-
-function d3_layout_forceDragOver(d) {
- d.fixed |= 2;
-}
-
-function d3_layout_forceDragOut(d) {
- if (d !== d3_layout_forceDragNode) d.fixed &= 1;
-}
-
-function d3_layout_forceDragEnd() {
- d3_layout_forceDrag();
- d3_layout_forceDragNode.fixed &= 1;
- d3_layout_forceDragForce = d3_layout_forceDragNode = null;
-}
-
-function d3_layout_forceDrag() {
- d3_layout_forceDragNode.px = d3.event.x;
- d3_layout_forceDragNode.py = d3.event.y;
- d3_layout_forceDragForce.resume(); // restart annealing
-}
-
-function d3_layout_forceAccumulate(quad, alpha, charges) {
- var cx = 0,
- cy = 0;
- quad.charge = 0;
- if (!quad.leaf) {
- var nodes = quad.nodes,
- n = nodes.length,
- i = -1,
- c;
- while (++i < n) {
- c = nodes[i];
- if (c == null) continue;
- d3_layout_forceAccumulate(c, alpha, charges);
- quad.charge += c.charge;
- cx += c.charge * c.cx;
- cy += c.charge * c.cy;
- }
- }
- if (quad.point) {
- // jitter internal nodes that are coincident
- if (!quad.leaf) {
- quad.point.x += Math.random() - .5;
- quad.point.y += Math.random() - .5;
- }
- var k = alpha * charges[quad.point.index];
- quad.charge += quad.pointCharge = k;
- cx += k * quad.point.x;
- cy += k * quad.point.y;
- }
- quad.cx = cx / quad.charge;
- quad.cy = cy / quad.charge;
-}
-
-function d3_layout_forceLinkDistance(link) {
- return 20;
-}
-
-function d3_layout_forceLinkStrength(link) {
- return 1;
-}
-d3.layout.partition = function() {
- var hierarchy = d3.layout.hierarchy(),
- size = [1, 1]; // width, height
-
- function position(node, x, dx, dy) {
- var children = node.children;
- node.x = x;
- node.y = node.depth * dy;
- node.dx = dx;
- node.dy = dy;
- if (children && (n = children.length)) {
- var i = -1,
- n,
- c,
- d;
- dx = node.value ? dx / node.value : 0;
- while (++i < n) {
- position(c = children[i], x, d = c.value * dx, dy);
- x += d;
- }
- }
- }
-
- function depth(node) {
- var children = node.children,
- d = 0;
- if (children && (n = children.length)) {
- var i = -1,
- n;
- while (++i < n) d = Math.max(d, depth(children[i]));
- }
- return 1 + d;
- }
-
- function partition(d, i) {
- var nodes = hierarchy.call(this, d, i);
- position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
- return nodes;
- }
-
- partition.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return partition;
- };
-
- return d3_layout_hierarchyRebind(partition, hierarchy);
-};
-d3.layout.pie = function() {
- var value = Number,
- sort = d3_layout_pieSortByValue,
- startAngle = 0,
- endAngle = 2 * Math.PI;
-
- function pie(data, i) {
-
- // Compute the numeric values for each data element.
- var values = data.map(function(d, i) { return +value.call(pie, d, i); });
-
- // Compute the start angle.
- var a = +(typeof startAngle === "function"
- ? startAngle.apply(this, arguments)
- : startAngle);
-
- // Compute the angular scale factor: from value to radians.
- var k = ((typeof endAngle === "function"
- ? endAngle.apply(this, arguments)
- : endAngle) - startAngle)
- / d3.sum(values);
-
- // Optionally sort the data.
- var index = d3.range(data.length);
- if (sort != null) index.sort(sort === d3_layout_pieSortByValue
- ? function(i, j) { return values[j] - values[i]; }
- : function(i, j) { return sort(data[i], data[j]); });
-
- // Compute the arcs!
- var arcs = index.map(function(i) {
- return {
- data: data[i],
- value: d = values[i],
- startAngle: a,
- endAngle: a += d * k
- };
- });
-
- // Return the arcs in the original data's order.
- return data.map(function(d, i) {
- return arcs[index[i]];
- });
- }
-
- /**
- * Specifies the value function *x*, which returns a nonnegative numeric value
- * for each datum. The default value function is `Number`. The value function
- * is passed two arguments: the current datum and the current index.
- */
- pie.value = function(x) {
- if (!arguments.length) return value;
- value = x;
- return pie;
- };
-
- /**
- * Specifies a sort comparison operator *x*. The comparator is passed two data
- * elements from the data array, a and b; it returns a negative value if a is
- * less than b, a positive value if a is greater than b, and zero if a equals
- * b.
- */
- pie.sort = function(x) {
- if (!arguments.length) return sort;
- sort = x;
- return pie;
- };
-
- /**
- * Specifies the overall start angle of the pie chart. Defaults to 0. The
- * start angle can be specified either as a constant or as a function; in the
- * case of a function, it is evaluated once per array (as opposed to per
- * element).
- */
- pie.startAngle = function(x) {
- if (!arguments.length) return startAngle;
- startAngle = x;
- return pie;
- };
-
- /**
- * Specifies the overall end angle of the pie chart. Defaults to 2Ï€. The
- * end angle can be specified either as a constant or as a function; in the
- * case of a function, it is evaluated once per array (as opposed to per
- * element).
- */
- pie.endAngle = function(x) {
- if (!arguments.length) return endAngle;
- endAngle = x;
- return pie;
- };
-
- return pie;
-};
-
-var d3_layout_pieSortByValue = {};
-// data is two-dimensional array of x,y; we populate y0
-d3.layout.stack = function() {
- var values = Object,
- order = d3_layout_stackOrders["default"],
- offset = d3_layout_stackOffsets["zero"],
- out = d3_layout_stackOut,
- x = d3_layout_stackX,
- y = d3_layout_stackY;
-
- function stack(data, index) {
-
- // Convert series to canonical two-dimensional representation.
- var series = data.map(function(d, i) {
- return values.call(stack, d, i);
- });
-
- // Convert each series to canonical [[x,y]] representation.
- var points = series.map(function(d, i) {
- return d.map(function(v, i) {
- return [x.call(stack, v, i), y.call(stack, v, i)];
- });
- });
-
- // Compute the order of series, and permute them.
- var orders = order.call(stack, points, index);
- series = d3.permute(series, orders);
- points = d3.permute(points, orders);
-
- // Compute the baseline…
- var offsets = offset.call(stack, points, index);
-
- // And propagate it to other series.
- var n = series.length,
- m = series[0].length,
- i,
- j,
- o;
- for (j = 0; j < m; ++j) {
- out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
- for (i = 1; i < n; ++i) {
- out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
- }
- }
-
- return data;
- }
-
- stack.values = function(x) {
- if (!arguments.length) return values;
- values = x;
- return stack;
- };
-
- stack.order = function(x) {
- if (!arguments.length) return order;
- order = typeof x === "function" ? x : d3_layout_stackOrders[x];
- return stack;
- };
-
- stack.offset = function(x) {
- if (!arguments.length) return offset;
- offset = typeof x === "function" ? x : d3_layout_stackOffsets[x];
- return stack;
- };
-
- stack.x = function(z) {
- if (!arguments.length) return x;
- x = z;
- return stack;
- };
-
- stack.y = function(z) {
- if (!arguments.length) return y;
- y = z;
- return stack;
- };
-
- stack.out = function(z) {
- if (!arguments.length) return out;
- out = z;
- return stack;
- };
-
- return stack;
-}
-
-function d3_layout_stackX(d) {
- return d.x;
-}
-
-function d3_layout_stackY(d) {
- return d.y;
-}
-
-function d3_layout_stackOut(d, y0, y) {
- d.y0 = y0;
- d.y = y;
-}
-
-var d3_layout_stackOrders = {
-
- "inside-out": function(data) {
- var n = data.length,
- i,
- j,
- max = data.map(d3_layout_stackMaxIndex),
- sums = data.map(d3_layout_stackReduceSum),
- index = d3.range(n).sort(function(a, b) { return max[a] - max[b]; }),
- top = 0,
- bottom = 0,
- tops = [],
- bottoms = [];
- for (i = 0; i < n; ++i) {
- j = index[i];
- if (top < bottom) {
- top += sums[j];
- tops.push(j);
- } else {
- bottom += sums[j];
- bottoms.push(j);
- }
- }
- return bottoms.reverse().concat(tops);
- },
-
- "reverse": function(data) {
- return d3.range(data.length).reverse();
- },
-
- "default": function(data) {
- return d3.range(data.length);
- }
-
-};
-
-var d3_layout_stackOffsets = {
-
- "silhouette": function(data) {
- var n = data.length,
- m = data[0].length,
- sums = [],
- max = 0,
- i,
- j,
- o,
- y0 = [];
- for (j = 0; j < m; ++j) {
- for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
- if (o > max) max = o;
- sums.push(o);
- }
- for (j = 0; j < m; ++j) {
- y0[j] = (max - sums[j]) / 2;
- }
- return y0;
- },
-
- "wiggle": function(data) {
- var n = data.length,
- x = data[0],
- m = x.length,
- max = 0,
- i,
- j,
- k,
- s1,
- s2,
- s3,
- dx,
- o,
- o0,
- y0 = [];
- y0[0] = o = o0 = 0;
- for (j = 1; j < m; ++j) {
- for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
- for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
- for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
- s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
- }
- s2 += s3 * data[i][j][1];
- }
- y0[j] = o -= s1 ? s2 / s1 * dx : 0;
- if (o < o0) o0 = o;
- }
- for (j = 0; j < m; ++j) y0[j] -= o0;
- return y0;
- },
-
- "expand": function(data) {
- var n = data.length,
- m = data[0].length,
- k = 1 / n,
- i,
- j,
- o,
- y0 = [];
- for (j = 0; j < m; ++j) {
- for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
- if (o) for (i = 0; i < n; i++) data[i][j][1] /= o;
- else for (i = 0; i < n; i++) data[i][j][1] = k;
- }
- for (j = 0; j < m; ++j) y0[j] = 0;
- return y0;
- },
-
- "zero": function(data) {
- var j = -1,
- m = data[0].length,
- y0 = [];
- while (++j < m) y0[j] = 0;
- return y0;
- }
-
-};
-
-function d3_layout_stackMaxIndex(array) {
- var i = 1,
- j = 0,
- v = array[0][1],
- k,
- n = array.length;
- for (; i < n; ++i) {
- if ((k = array[i][1]) > v) {
- j = i;
- v = k;
- }
- }
- return j;
-}
-
-function d3_layout_stackReduceSum(d) {
- return d.reduce(d3_layout_stackSum, 0);
-}
-
-function d3_layout_stackSum(p, d) {
- return p + d[1];
-}
-d3.layout.histogram = function() {
- var frequency = true,
- valuer = Number,
- ranger = d3_layout_histogramRange,
- binner = d3_layout_histogramBinSturges;
-
- function histogram(data, i) {
- var bins = [],
- values = data.map(valuer, this),
- range = ranger.call(this, values, i),
- thresholds = binner.call(this, range, values, i),
- bin,
- i = -1,
- n = values.length,
- m = thresholds.length - 1,
- k = frequency ? 1 : 1 / n,
- x;
-
- // Initialize the bins.
- while (++i < m) {
- bin = bins[i] = [];
- bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
- bin.y = 0;
- }
-
- // Fill the bins, ignoring values outside the range.
- i = -1; while(++i < n) {
- x = values[i];
- if ((x >= range[0]) && (x <= range[1])) {
- bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
- bin.y += k;
- bin.push(data[i]);
- }
- }
-
- return bins;
- }
-
- // Specifies how to extract a value from the associated data. The default
- // value function is `Number`, which is equivalent to the identity function.
- histogram.value = function(x) {
- if (!arguments.length) return valuer;
- valuer = x;
- return histogram;
- };
-
- // Specifies the range of the histogram. Values outside the specified range
- // will be ignored. The argument `x` may be specified either as a two-element
- // array representing the minimum and maximum value of the range, or as a
- // function that returns the range given the array of values and the current
- // index `i`. The default range is the extent (minimum and maximum) of the
- // values.
- histogram.range = function(x) {
- if (!arguments.length) return ranger;
- ranger = d3.functor(x);
- return histogram;
- };
-
- // Specifies how to bin values in the histogram. The argument `x` may be
- // specified as a number, in which case the range of values will be split
- // uniformly into the given number of bins. Or, `x` may be an array of
- // threshold values, defining the bins; the specified array must contain the
- // rightmost (upper) value, thus specifying n + 1 values for n bins. Or, `x`
- // may be a function which is evaluated, being passed the range, the array of
- // values, and the current index `i`, returning an array of thresholds. The
- // default bin function will divide the values into uniform bins using
- // Sturges' formula.
- histogram.bins = function(x) {
- if (!arguments.length) return binner;
- binner = typeof x === "number"
- ? function(range) { return d3_layout_histogramBinFixed(range, x); }
- : d3.functor(x);
- return histogram;
- };
-
- // Specifies whether the histogram's `y` value is a count (frequency) or a
- // probability (density). The default value is true.
- histogram.frequency = function(x) {
- if (!arguments.length) return frequency;
- frequency = !!x;
- return histogram;
- };
-
- return histogram;
-};
-
-function d3_layout_histogramBinSturges(range, values) {
- return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
-}
-
-function d3_layout_histogramBinFixed(range, n) {
- var x = -1,
- b = +range[0],
- m = (range[1] - b) / n,
- f = [];
- while (++x <= n) f[x] = m * x + b;
- return f;
-}
-
-function d3_layout_histogramRange(values) {
- return [d3.min(values), d3.max(values)];
-}
-d3.layout.hierarchy = function() {
- var sort = d3_layout_hierarchySort,
- children = d3_layout_hierarchyChildren,
- value = d3_layout_hierarchyValue;
-
- // Recursively compute the node depth and value.
- // Also converts the data representation into a standard hierarchy structure.
- function recurse(data, depth, nodes) {
- var childs = children.call(hierarchy, data, depth),
- node = d3_layout_hierarchyInline ? data : {data: data};
- node.depth = depth;
- nodes.push(node);
- if (childs && (n = childs.length)) {
- var i = -1,
- n,
- c = node.children = [],
- v = 0,
- j = depth + 1;
- while (++i < n) {
- d = recurse(childs[i], j, nodes);
- d.parent = node;
- c.push(d);
- v += d.value;
- }
- if (sort) c.sort(sort);
- if (value) node.value = v;
- } else if (value) {
- node.value = +value.call(hierarchy, data, depth) || 0;
- }
- return node;
- }
-
- // Recursively re-evaluates the node value.
- function revalue(node, depth) {
- var children = node.children,
- v = 0;
- if (children && (n = children.length)) {
- var i = -1,
- n,
- j = depth + 1;
- while (++i < n) v += revalue(children[i], j);
- } else if (value) {
- v = +value.call(hierarchy, d3_layout_hierarchyInline ? node : node.data, depth) || 0;
- }
- if (value) node.value = v;
- return v;
- }
-
- function hierarchy(d) {
- var nodes = [];
- recurse(d, 0, nodes);
- return nodes;
- }
-
- hierarchy.sort = function(x) {
- if (!arguments.length) return sort;
- sort = x;
- return hierarchy;
- };
-
- hierarchy.children = function(x) {
- if (!arguments.length) return children;
- children = x;
- return hierarchy;
- };
-
- hierarchy.value = function(x) {
- if (!arguments.length) return value;
- value = x;
- return hierarchy;
- };
-
- // Re-evaluates the `value` property for the specified hierarchy.
- hierarchy.revalue = function(root) {
- revalue(root, 0);
- return root;
- };
-
- return hierarchy;
-};
-
-// A method assignment helper for hierarchy subclasses.
-function d3_layout_hierarchyRebind(object, hierarchy) {
- d3.rebind(object, hierarchy, "sort", "children", "value");
-
- // Add an alias for links, for convenience.
- object.links = d3_layout_hierarchyLinks;
-
- // If the new API is used, enabling inlining.
- object.nodes = function(d) {
- d3_layout_hierarchyInline = true;
- return (object.nodes = object)(d);
- };
-
- return object;
-}
-
-function d3_layout_hierarchyChildren(d) {
- return d.children;
-}
-
-function d3_layout_hierarchyValue(d) {
- return d.value;
-}
-
-function d3_layout_hierarchySort(a, b) {
- return b.value - a.value;
-}
-
-// Returns an array source+target objects for the specified nodes.
-function d3_layout_hierarchyLinks(nodes) {
- return d3.merge(nodes.map(function(parent) {
- return (parent.children || []).map(function(child) {
- return {source: parent, target: child};
- });
- }));
-}
-
-// For backwards-compatibility, don't enable inlining by default.
-var d3_layout_hierarchyInline = false;
-d3.layout.pack = function() {
- var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort),
- size = [1, 1];
-
- function pack(d, i) {
- var nodes = hierarchy.call(this, d, i),
- root = nodes[0];
-
- // Recursively compute the layout.
- root.x = 0;
- root.y = 0;
- d3_layout_packTree(root);
-
- // Scale the layout to fit the requested size.
- var w = size[0],
- h = size[1],
- k = 1 / Math.max(2 * root.r / w, 2 * root.r / h);
- d3_layout_packTransform(root, w / 2, h / 2, k);
-
- return nodes;
- }
-
- pack.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return pack;
- };
-
- return d3_layout_hierarchyRebind(pack, hierarchy);
-};
-
-function d3_layout_packSort(a, b) {
- return a.value - b.value;
-}
-
-function d3_layout_packInsert(a, b) {
- var c = a._pack_next;
- a._pack_next = b;
- b._pack_prev = a;
- b._pack_next = c;
- c._pack_prev = b;
-}
-
-function d3_layout_packSplice(a, b) {
- a._pack_next = b;
- b._pack_prev = a;
-}
-
-function d3_layout_packIntersects(a, b) {
- var dx = b.x - a.x,
- dy = b.y - a.y,
- dr = a.r + b.r;
- return (dr * dr - dx * dx - dy * dy) > .001; // within epsilon
-}
-
-function d3_layout_packCircle(nodes) {
- var xMin = Infinity,
- xMax = -Infinity,
- yMin = Infinity,
- yMax = -Infinity,
- n = nodes.length,
- a, b, c, j, k;
-
- function bound(node) {
- xMin = Math.min(node.x - node.r, xMin);
- xMax = Math.max(node.x + node.r, xMax);
- yMin = Math.min(node.y - node.r, yMin);
- yMax = Math.max(node.y + node.r, yMax);
- }
-
- // Create node links.
- nodes.forEach(d3_layout_packLink);
-
- // Create first node.
- a = nodes[0];
- a.x = -a.r;
- a.y = 0;
- bound(a);
-
- // Create second node.
- if (n > 1) {
- b = nodes[1];
- b.x = b.r;
- b.y = 0;
- bound(b);
-
- // Create third node and build chain.
- if (n > 2) {
- c = nodes[2];
- d3_layout_packPlace(a, b, c);
- bound(c);
- d3_layout_packInsert(a, c);
- a._pack_prev = c;
- d3_layout_packInsert(c, b);
- b = a._pack_next;
-
- // Now iterate through the rest.
- for (var i = 3; i < n; i++) {
- d3_layout_packPlace(a, b, c = nodes[i]);
-
- // Search for the closest intersection.
- var isect = 0, s1 = 1, s2 = 1;
- for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
- if (d3_layout_packIntersects(j, c)) {
- isect = 1;
- break;
- }
- }
- if (isect == 1) {
- for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
- if (d3_layout_packIntersects(k, c)) {
- if (s2 < s1) {
- isect = -1;
- j = k;
- }
- break;
- }
- }
- }
-
- // Update node chain.
- if (isect == 0) {
- d3_layout_packInsert(a, c);
- b = c;
- bound(c);
- } else if (isect > 0) {
- d3_layout_packSplice(a, j);
- b = j;
- i--;
- } else { // isect < 0
- d3_layout_packSplice(j, b);
- a = j;
- i--;
- }
- }
- }
- }
-
- // Re-center the circles and return the encompassing radius.
- var cx = (xMin + xMax) / 2,
- cy = (yMin + yMax) / 2,
- cr = 0;
- for (var i = 0; i < n; i++) {
- var node = nodes[i];
- node.x -= cx;
- node.y -= cy;
- cr = Math.max(cr, node.r + Math.sqrt(node.x * node.x + node.y * node.y));
- }
-
- // Remove node links.
- nodes.forEach(d3_layout_packUnlink);
-
- return cr;
-}
-
-function d3_layout_packLink(node) {
- node._pack_next = node._pack_prev = node;
-}
-
-function d3_layout_packUnlink(node) {
- delete node._pack_next;
- delete node._pack_prev;
-}
-
-function d3_layout_packTree(node) {
- var children = node.children;
- if (children && children.length) {
- children.forEach(d3_layout_packTree);
- node.r = d3_layout_packCircle(children);
- } else {
- node.r = Math.sqrt(node.value);
- }
-}
-
-function d3_layout_packTransform(node, x, y, k) {
- var children = node.children;
- node.x = (x += k * node.x);
- node.y = (y += k * node.y);
- node.r *= k;
- if (children) {
- var i = -1, n = children.length;
- while (++i < n) d3_layout_packTransform(children[i], x, y, k);
- }
-}
-
-function d3_layout_packPlace(a, b, c) {
- var db = a.r + c.r,
- dx = b.x - a.x,
- dy = b.y - a.y;
- if (db && (dx || dy)) {
- var da = b.r + c.r,
- dc = Math.sqrt(dx * dx + dy * dy),
- cos = Math.max(-1, Math.min(1, (db * db + dc * dc - da * da) / (2 * db * dc))),
- theta = Math.acos(cos),
- x = cos * (db /= dc),
- y = Math.sin(theta) * db;
- c.x = a.x + x * dx + y * dy;
- c.y = a.y + x * dy - y * dx;
- } else {
- c.x = a.x + db;
- c.y = a.y;
- }
-}
-// Implements a hierarchical layout using the cluster (or dendogram) algorithm.
-d3.layout.cluster = function() {
- var hierarchy = d3.layout.hierarchy().sort(null).value(null),
- separation = d3_layout_treeSeparation,
- size = [1, 1]; // width, height
-
- function cluster(d, i) {
- var nodes = hierarchy.call(this, d, i),
- root = nodes[0],
- previousNode,
- x = 0,
- kx,
- ky;
-
- // First walk, computing the initial x & y values.
- d3_layout_treeVisitAfter(root, function(node) {
- var children = node.children;
- if (children && children.length) {
- node.x = d3_layout_clusterX(children);
- node.y = d3_layout_clusterY(children);
- } else {
- node.x = previousNode ? x += separation(node, previousNode) : 0;
- node.y = 0;
- previousNode = node;
- }
- });
-
- // Compute the left-most, right-most, and depth-most nodes for extents.
- var left = d3_layout_clusterLeft(root),
- right = d3_layout_clusterRight(root),
- x0 = left.x - separation(left, right) / 2,
- x1 = right.x + separation(right, left) / 2;
-
- // Second walk, normalizing x & y to the desired size.
- d3_layout_treeVisitAfter(root, function(node) {
- node.x = (node.x - x0) / (x1 - x0) * size[0];
- node.y = (1 - node.y / root.y) * size[1];
- });
-
- return nodes;
- }
-
- cluster.separation = function(x) {
- if (!arguments.length) return separation;
- separation = x;
- return cluster;
- };
-
- cluster.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return cluster;
- };
-
- return d3_layout_hierarchyRebind(cluster, hierarchy);
-};
-
-function d3_layout_clusterY(children) {
- return 1 + d3.max(children, function(child) {
- return child.y;
- });
-}
-
-function d3_layout_clusterX(children) {
- return children.reduce(function(x, child) {
- return x + child.x;
- }, 0) / children.length;
-}
-
-function d3_layout_clusterLeft(node) {
- var children = node.children;
- return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
-}
-
-function d3_layout_clusterRight(node) {
- var children = node.children, n;
- return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
-}
-// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
-d3.layout.tree = function() {
- var hierarchy = d3.layout.hierarchy().sort(null).value(null),
- separation = d3_layout_treeSeparation,
- size = [1, 1]; // width, height
-
- function tree(d, i) {
- var nodes = hierarchy.call(this, d, i),
- root = nodes[0];
-
- function firstWalk(node, previousSibling) {
- var children = node.children,
- layout = node._tree;
- if (children && (n = children.length)) {
- var n,
- firstChild = children[0],
- previousChild,
- ancestor = firstChild,
- child,
- i = -1;
- while (++i < n) {
- child = children[i];
- firstWalk(child, previousChild);
- ancestor = apportion(child, previousChild, ancestor);
- previousChild = child;
- }
- d3_layout_treeShift(node);
- var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
- if (previousSibling) {
- layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
- layout.mod = layout.prelim - midpoint;
- } else {
- layout.prelim = midpoint;
- }
- } else {
- if (previousSibling) {
- layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
- }
- }
- }
-
- function secondWalk(node, x) {
- node.x = node._tree.prelim + x;
- var children = node.children;
- if (children && (n = children.length)) {
- var i = -1,
- n;
- x += node._tree.mod;
- while (++i < n) {
- secondWalk(children[i], x);
- }
- }
- }
-
- function apportion(node, previousSibling, ancestor) {
- if (previousSibling) {
- var vip = node,
- vop = node,
- vim = previousSibling,
- vom = node.parent.children[0],
- sip = vip._tree.mod,
- sop = vop._tree.mod,
- sim = vim._tree.mod,
- som = vom._tree.mod,
- shift;
- while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
- vom = d3_layout_treeLeft(vom);
- vop = d3_layout_treeRight(vop);
- vop._tree.ancestor = node;
- shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
- if (shift > 0) {
- d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
- sip += shift;
- sop += shift;
- }
- sim += vim._tree.mod;
- sip += vip._tree.mod;
- som += vom._tree.mod;
- sop += vop._tree.mod;
- }
- if (vim && !d3_layout_treeRight(vop)) {
- vop._tree.thread = vim;
- vop._tree.mod += sim - sop;
- }
- if (vip && !d3_layout_treeLeft(vom)) {
- vom._tree.thread = vip;
- vom._tree.mod += sip - som;
- ancestor = node;
- }
- }
- return ancestor;
- }
-
- // Initialize temporary layout variables.
- d3_layout_treeVisitAfter(root, function(node, previousSibling) {
- node._tree = {
- ancestor: node,
- prelim: 0,
- mod: 0,
- change: 0,
- shift: 0,
- number: previousSibling ? previousSibling._tree.number + 1 : 0
- };
- });
-
- // Compute the layout using Buchheim et al.'s algorithm.
- firstWalk(root);
- secondWalk(root, -root._tree.prelim);
-
- // Compute the left-most, right-most, and depth-most nodes for extents.
- var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost),
- right = d3_layout_treeSearch(root, d3_layout_treeRightmost),
- deep = d3_layout_treeSearch(root, d3_layout_treeDeepest),
- x0 = left.x - separation(left, right) / 2,
- x1 = right.x + separation(right, left) / 2,
- y1 = deep.depth || 1;
-
- // Clear temporary layout variables; transform x and y.
- d3_layout_treeVisitAfter(root, function(node) {
- node.x = (node.x - x0) / (x1 - x0) * size[0];
- node.y = node.depth / y1 * size[1];
- delete node._tree;
- });
-
- return nodes;
- }
-
- tree.separation = function(x) {
- if (!arguments.length) return separation;
- separation = x;
- return tree;
- };
-
- tree.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return tree;
- };
-
- return d3_layout_hierarchyRebind(tree, hierarchy);
-};
-
-function d3_layout_treeSeparation(a, b) {
- return a.parent == b.parent ? 1 : 2;
-}
-
-// function d3_layout_treeSeparationRadial(a, b) {
-// return (a.parent == b.parent ? 1 : 2) / a.depth;
-// }
-
-function d3_layout_treeLeft(node) {
- var children = node.children;
- return children && children.length ? children[0] : node._tree.thread;
-}
-
-function d3_layout_treeRight(node) {
- var children = node.children,
- n;
- return children && (n = children.length) ? children[n - 1] : node._tree.thread;
-}
-
-function d3_layout_treeSearch(node, compare) {
- var children = node.children;
- if (children && (n = children.length)) {
- var child,
- n,
- i = -1;
- while (++i < n) {
- if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
- node = child;
- }
- }
- }
- return node;
-}
-
-function d3_layout_treeRightmost(a, b) {
- return a.x - b.x;
-}
-
-function d3_layout_treeLeftmost(a, b) {
- return b.x - a.x;
-}
-
-function d3_layout_treeDeepest(a, b) {
- return a.depth - b.depth;
-}
-
-function d3_layout_treeVisitAfter(node, callback) {
- function visit(node, previousSibling) {
- var children = node.children;
- if (children && (n = children.length)) {
- var child,
- previousChild = null,
- i = -1,
- n;
- while (++i < n) {
- child = children[i];
- visit(child, previousChild);
- previousChild = child;
- }
- }
- callback(node, previousSibling);
- }
- visit(node, null);
-}
-
-function d3_layout_treeShift(node) {
- var shift = 0,
- change = 0,
- children = node.children,
- i = children.length,
- child;
- while (--i >= 0) {
- child = children[i]._tree;
- child.prelim += shift;
- child.mod += shift;
- shift += child.shift + (change += child.change);
- }
-}
-
-function d3_layout_treeMove(ancestor, node, shift) {
- ancestor = ancestor._tree;
- node = node._tree;
- var change = shift / (node.number - ancestor.number);
- ancestor.change += change;
- node.change -= change;
- node.shift += shift;
- node.prelim += shift;
- node.mod += shift;
-}
-
-function d3_layout_treeAncestor(vim, node, ancestor) {
- return vim._tree.ancestor.parent == node.parent
- ? vim._tree.ancestor
- : ancestor;
-}
-// Squarified Treemaps by Mark Bruls, Kees Huizing, and Jarke J. van Wijk
-// Modified to support a target aspect ratio by Jeff Heer
-d3.layout.treemap = function() {
- var hierarchy = d3.layout.hierarchy(),
- round = Math.round,
- size = [1, 1], // width, height
- padding = null,
- pad = d3_layout_treemapPadNull,
- sticky = false,
- stickies,
- ratio = 0.5 * (1 + Math.sqrt(5)); // golden ratio
-
- // Compute the area for each child based on value & scale.
- function scale(children, k) {
- var i = -1,
- n = children.length,
- child,
- area;
- while (++i < n) {
- area = (child = children[i]).value * (k < 0 ? 0 : k);
- child.area = isNaN(area) || area <= 0 ? 0 : area;
- }
- }
-
- // Recursively arranges the specified node's children into squarified rows.
- function squarify(node) {
- var children = node.children;
- if (children && children.length) {
- var rect = pad(node),
- row = [],
- remaining = children.slice(), // copy-on-write
- child,
- best = Infinity, // the best row score so far
- score, // the current row score
- u = Math.min(rect.dx, rect.dy), // initial orientation
- n;
- scale(remaining, rect.dx * rect.dy / node.value);
- row.area = 0;
- while ((n = remaining.length) > 0) {
- row.push(child = remaining[n - 1]);
- row.area += child.area;
- if ((score = worst(row, u)) <= best) { // continue with this orientation
- remaining.pop();
- best = score;
- } else { // abort, and try a different orientation
- row.area -= row.pop().area;
- position(row, u, rect, false);
- u = Math.min(rect.dx, rect.dy);
- row.length = row.area = 0;
- best = Infinity;
- }
- }
- if (row.length) {
- position(row, u, rect, true);
- row.length = row.area = 0;
- }
- children.forEach(squarify);
- }
- }
-
- // Recursively resizes the specified node's children into existing rows.
- // Preserves the existing layout!
- function stickify(node) {
- var children = node.children;
- if (children && children.length) {
- var rect = pad(node),
- remaining = children.slice(), // copy-on-write
- child,
- row = [];
- scale(remaining, rect.dx * rect.dy / node.value);
- row.area = 0;
- while (child = remaining.pop()) {
- row.push(child);
- row.area += child.area;
- if (child.z != null) {
- position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
- row.length = row.area = 0;
- }
- }
- children.forEach(stickify);
- }
- }
-
- // Computes the score for the specified row, as the worst aspect ratio.
- function worst(row, u) {
- var s = row.area,
- r,
- rmax = 0,
- rmin = Infinity,
- i = -1,
- n = row.length;
- while (++i < n) {
- if (!(r = row[i].area)) continue;
- if (r < rmin) rmin = r;
- if (r > rmax) rmax = r;
- }
- s *= s;
- u *= u;
- return s
- ? Math.max((u * rmax * ratio) / s, s / (u * rmin * ratio))
- : Infinity;
- }
-
- // Positions the specified row of nodes. Modifies `rect`.
- function position(row, u, rect, flush) {
- var i = -1,
- n = row.length,
- x = rect.x,
- y = rect.y,
- v = u ? round(row.area / u) : 0,
- o;
- if (u == rect.dx) { // horizontal subdivision
- if (flush || v > rect.dy) v = v ? rect.dy : 0; // over+underflow
- while (++i < n) {
- o = row[i];
- o.x = x;
- o.y = y;
- o.dy = v;
- x += o.dx = v ? round(o.area / v) : 0;
- }
- o.z = true;
- o.dx += rect.x + rect.dx - x; // rounding error
- rect.y += v;
- rect.dy -= v;
- } else { // vertical subdivision
- if (flush || v > rect.dx) v = v ? rect.dx : 0; // over+underflow
- while (++i < n) {
- o = row[i];
- o.x = x;
- o.y = y;
- o.dx = v;
- y += o.dy = v ? round(o.area / v) : 0;
- }
- o.z = false;
- o.dy += rect.y + rect.dy - y; // rounding error
- rect.x += v;
- rect.dx -= v;
- }
- }
-
- function treemap(d) {
- var nodes = stickies || hierarchy(d),
- root = nodes[0];
- root.x = 0;
- root.y = 0;
- root.dx = size[0];
- root.dy = size[1];
- if (stickies) hierarchy.revalue(root);
- scale([root], root.dx * root.dy / root.value);
- (stickies ? stickify : squarify)(root);
- if (sticky) stickies = nodes;
- return nodes;
- }
-
- treemap.size = function(x) {
- if (!arguments.length) return size;
- size = x;
- return treemap;
- };
-
- treemap.padding = function(x) {
- if (!arguments.length) return padding;
-
- function padFunction(node) {
- var p = x.call(treemap, node, node.depth);
- return p == null
- ? d3_layout_treemapPadNull(node)
- : d3_layout_treemapPad(node, typeof p === "number" ? [p, p, p, p] : p);
- }
-
- function padConstant(node) {
- return d3_layout_treemapPad(node, x);
- }
-
- var type;
- pad = (padding = x) == null ? d3_layout_treemapPadNull
- : (type = typeof x) === "function" ? padFunction
- : type === "number" ? (x = [x, x, x, x], padConstant)
- : padConstant;
- return treemap;
- };
-
- treemap.round = function(x) {
- if (!arguments.length) return round != Number;
- round = x ? Math.round : Number;
- return treemap;
- };
-
- treemap.sticky = function(x) {
- if (!arguments.length) return sticky;
- sticky = x;
- stickies = null;
- return treemap;
- };
-
- treemap.ratio = function(x) {
- if (!arguments.length) return ratio;
- ratio = x;
- return treemap;
- };
-
- return d3_layout_hierarchyRebind(treemap, hierarchy);
-};
-
-function d3_layout_treemapPadNull(node) {
- return {x: node.x, y: node.y, dx: node.dx, dy: node.dy};
-}
-
-function d3_layout_treemapPad(node, padding) {
- var x = node.x + padding[3],
- y = node.y + padding[0],
- dx = node.dx - padding[1] - padding[3],
- dy = node.dy - padding[0] - padding[2];
- if (dx < 0) { x += dx / 2; dx = 0; }
- if (dy < 0) { y += dy / 2; dy = 0; }
- return {x: x, y: y, dx: dx, dy: dy};
-}
-})();
diff --git a/media/d3.layout.min.js b/media/d3.layout.min.js
deleted file mode 100644
index a6a893e..0000000
--- a/media/d3.layout.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){function a(a){var b=a.source,d=a.target,e=c(b,d),f=[b];while(b!==e)b=b.parent,f.push(b);var g=f.length;while(d!==e)f.splice(g,0,d),d=d.parent;return f}function b(a){var b=[],c=a.parent;while(c!=null)b.push(a),a=c,c=c.parent;return b.push(a),b}function c(a,c){if(a===c)return a;var d=b(a),e=b(c),f=d.pop(),g=e.pop(),h=null;while(f===g)h=f,f=d.pop(),g=e.pop();return h}function g(a){a.fixed|=2}function h(a){a!==f&&(a.fixed&=1)}function i(){j(),f.fixed&=1,e=f=null}function j(){f.px=d3.event.x,f.py=d3.event.y,e.resume()}function k(a,b,c){var d=0,e=0;a.charge=0;if(!a.leaf){var f=a.nodes,g=f.length,h=-1,i;while(++h<g){i=f[h];if(i==null)continue;k(i,b,c),a.charge+=i.charge,d+=i.charge*i.cx,e+=i.charge*i.cy}}if(a.point){a.leaf||(a.point.x+=Math.random()-.5,a.point.y+=Math.random()-.5);var j=b*c[a.point.index];a.charge+=a.pointCharge=j,d+=j*a.point.x,e+=j*a.point.y}a.cx=d/a.charge,a.cy=e/a.charge}function l(a){return 20}function m(a){return 1}function o(a){return a.x}function p(a){return a.y}function q(a,b,c){a.y0=b,a.y=c}function t(a){var b=1,c=0,d=a[0][1],e,f=a.length;for(;b<f;++b)(e=a[b][1])>d&&(c=b,d=e);return c}function u(a){return a.reduce(v,0)}function v(a,b){return a+b[1]}function w(a,b){return x(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function x(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function y(a){return[d3.min(a),d3.max(a)]}function z(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=D,a.nodes=function(b){return E=!0,(a.nodes=a)(b)},a}function A(a){return a.children}function B(a){return a.value}function C(a,b){return b.value-a.value}function D(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function F(a,b){return a.value-b.value}function G(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function H(a,b){a._pack_next=b,b._pack_prev=a}function I(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function J(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(K),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],O(g,h,i),l(i),G(g,i),g._pack_prev=i,G(i,h),h=g._pack_next;for(var m=3;m<f;m++){O(g,h,i=a[m]);var n=0,o=1,p=1;for(j=h._pack_next;j!==h;j=j._pack_next,o++)if(I(j,i)){n=1;break}if(n==1)for(k=g._pack_prev;k!==j._pack_prev;k=k._pack_prev,p++)if(I(k,i)){p<o&&(n=-1,j=k);break}n==0?(G(g,i),h=i,l(i)):n>0?(H(g,j),h=j,m--):(H(j,h),g=j,m--)}}}var q=(b+c)/2,r=(d+e)/2,s=0;for(var m=0;m<f;m++){var t=a[m];t.x-=q,t.y-=r,s=Math.max(s,t.r+Math.sqrt(t.x*t.x+t.y*t.y))}return a.forEach(L),s}function K(a){a._pack_next=a._pack_prev=a}function L(a){delete a._pack_next,delete a._pack_prev}function M(a){var b=a.children;b&&b.length?(b.forEach(M),a.r=J(b)):a.r=Math.sqrt(a.value)}function N(a,b,c,d){var e=a.children;a.x=b+=d*a.x,a.y=c+=d*a.y,a.r*=d;if(e){var f=-1,g=e.length;while(++f<g)N(e[f],b,c,d)}}function O(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var g=b.r+c.r,h=Math.sqrt(e*e+f*f),i=Math.max(-1,Math.min(1,(d*d+h*h-g*g)/(2*d*h))),j=Math.acos(i),k=i*(d/=h),l=Math.sin(j)*d;c.x=a.x+k*e+l*f,c.y=a.y+k*f-l*e}else c.x=a.x+d,c.y=a.y}function P(a){return 1+d3.max(a,function(a){return a.y})}function Q(a){return a.reduce(function(a,b){return a+b.x},0)/a.length}function R(a){var b=a.children;return b&&b.length?R(b[0]):a}function S(a){var b=a.children,c;return b&&(c=b.length)?S(b[c-1]):a}function T(a,b){return a.parent==b.parent?1:2}function U(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function V(a){var b=a.children,c;return b&&(c=b.length)?b[c-1]:a._tree.thread}function W(a,b){var c=a.children;if(c&&(e=c.length)){var d,e,f=-1;while(++f<e)b(d=W(c[f],b),a)>0&&(a=d)}return a}function X(a,b){return a.x-b.x}function Y(a,b){return b.x-a.x}function Z(a,b){return a.depth-b.depth}function $(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h<i)f=e[h],c(f,g),g=f}b(a,d)}c(a,null)}function _(a){var b=0,c=0,d=a.children,e=d.length,f;while(--e>=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function ba(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function bb(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function bc(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function bd(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}d3.layout={},d3.layout.bundle=function(){return function(b){var c=[],d=-1,e=b.length;while(++d<e)c.push(a(b[d]));return c}},d3.layout.chord=function(){function j(){var a={},j=[],l=d3.range(e),m=[],n,o,p,q,r;b=[],c=[],n=0,q=-1;while(++q<e){o=0,r=-1;while(++r<e)o+=d[q][r];j.push(o),m.push(d3.range(e)),n+=o}g&&l.sort(function(a,b){return g(j[a],j[b])}),h&&m.forEach(function(a,b){a.sort(function(a,c){return h(d[b][a],d[b][c])})}),n=(2*Math.PI-f*e)/n,o=0,q=-1;while(++q<e){p=o,r=-1;while(++r<e){var s=l[q],t=m[s][r],u=d[s][t],v=o,w=o+=u*n;a[s+"-"+t]={index:s,subindex:t,startAngle:v,endAngle:w,value:u}}c.push({index:s,startAngle:p,endAngle:o,value:(o-p)/n}),o+=f}q=-1;while(++q<e){r=q-1;while(++r<e){var x=a[q+"-"+r],y=a[r+"-"+q];(x.value||y.value)&&b.push(x.value<y.value?{source:y,target:x}:{source:x,target:y})}}i&&k()}function k(){b.sort(function(a,b){return i((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)})}var a={},b,c,d,e,f=0,g,h,i;return a.matrix=function(f){return arguments.length?(e=(d=f)&&d.length,b=c=null,a):d},a.padding=function(d){return arguments.length?(f=d,b=c=null,a):f},a.sortGroups=function(d){return arguments.length?(g=d,b=c=null,a):g},a.sortSubgroups=function(c){return arguments.length?(h=c,b=null,a):h},a.sortChords=function(c){return arguments.length?(i=c,b&&k(),a):i},a.chords=function(){return b||j(),b},a.groups=function(){return c||j(),c},a},d3.layout.force=function(){function A(a){return function(b,c,d,e,f){if(b.point!==a){var g=b.cx-a.x,h=b.cy-a.y,i=1/Math.sqrt(g*g+h*h);if((e-c)*i<t){var j=b.charge*i*i;return a.px-=g*j,a.py-=h*j,!0}if(b.point&&isFinite(i)){var j=b.pointCharge*i*i;a.px-=g*j,a.py-=h*j}}return!b.charge}}function B(){var a=v.length,d=w.length,e,f,g,h,i,j,l,m,p;for(f=0;f<d;++f){g=w[f],h=g.source,i=g.target,m=i.x-h.x,p=i.y-h.y;if(j=m*m+p*p)j=n*y[f]*((j=Math.sqrt(j))-x[f])/j,m*=j,p*=j,i.x-=m*(l=h.weight/(i.weight+h.weight)),i.y-=p*l,h.x+=m*(l=1-l),h.y+=p*l}if(l=n*s){m=c[0]/2,p=c[1]/2,f=-1;if(l)while(++f<a)g=v[f],g.x+=(m-g.x)*l,g.y+=(p-g.y)*l}if(r){k(e=d3.geom.quadtree(v),n,z),f=-1;while(++f<a)(g=v[f]).fixed||e.visit(A(g))}f=-1;while(++f<a)g=v[f],g.fixed?(g.x=g.px,g.y=g.py):(g.x-=(g.px-(g.px=g.x))*o,g.y-=(g.py-(g.py=g.y))*o);return b.tick({type:"tick",alpha:n}),(n*=.99)<.005}function C(b){g(f=b),e=a}var a={},b=d3.dispatch("tick"),c=[1,1],d,n,o=.9,p=l,q=m,r=-30,s=.1,t=.8,u,v=[],w=[],x,y,z;return a.nodes=function(b){return arguments.length?(v=b,a):v},a.links=function(b){return arguments.length?(w=b,a):w},a.size=function(b){return arguments.length?(c=b,a):c},a.linkDistance=function(b){return arguments.length?(p=d3.functor(b),a):p},a.distance=a.linkDistance,a.linkStrength=function(b){return arguments.length?(q=d3.functor(b),a):q},a.friction=function(b){return arguments.length?(o=b,a):o},a.charge=function(b){return arguments.length?(r=typeof b=="function"?b:+b,a):r},a.gravity=function(b){return arguments.length?(s=b,a):s},a.theta=function(b){return arguments.length?(t=b,a):t},a.start=function(){function k(a,c){var d=l(b),e=-1,f=d.length,g;while(++e<f)if(!isNaN(g=d[e][a]))return g;return Math.random()*c}function l(){if(!i){i=[];for(d=0;d<e;++d)i[d]=[];for(d=0;d<f;++d){var a=w[d];i[a.source.index].push(a.target),i[a.target.index].push(a.source)}}return i[b]}var b,d,e=v.length,f=w.length,g=c[0],h=c[1],i,j;for(b=0;b<e;++b)(j=v[b]).index=b,j.weight=0;x=[],y=[];for(b=0;b<f;++b)j=w[b],typeof j.source=="number"&&(j.source=v[j.source]),typeof j.target=="number"&&(j.target=v[j.target]),x[b]=p.call(this,j,b),y[b]=q.call(this,j,b),++j.source.weight,++j.target.weight;for(b=0;b<e;++b)j=v[b],isNaN(j.x)&&(j.x=k("x",g)),isNaN(j.y)&&(j.y=k("y",h)),isNaN(j.px)&&(j.px=j.x),isNaN(j.py)&&(j.py=j.y);z=[];if(typeof r=="function")for(b=0;b<e;++b)z[b]=+r.call(this,v[b],b);else for(b=0;b<e;++b)z[b]=r;return a.resume()},a.resume=function(){return n=.1,d3.timer(B),a},a.stop=function(){return n=0,a},a.drag=function(){d||(d=d3.behavior.drag().origin(Object).on("dragstart",C).on("drag",j).on("dragend",i)),this.on("mouseover.force",g).on("mouseout.force",h).call(d)},d3.rebind(a,b,"on")};var e,f;d3.layout.partition=function(){function c(a,b,d,e){var f=a.children;a.x=b,a.y=a.depth*e,a.dx=d,a.dy=e;if(f&&(h=f.length)){var g=-1,h,i,j;d=a.value?d/a.value:0;while(++g<h)c(i=f[g],b,j=i.value*d,e),b+=j}}function d(a){var b=a.children,c=0;if(b&&(f=b.length)){var e=-1,f;while(++e<f)c=Math.max(c,d(b[e]))}return 1+c}function e(e,f){var g=a.call(this,e,f);return c(g[0],0,b[0],b[1]/d(g[0])),g}var a=d3.layout.hierarchy(),b=[1,1];return e.size=function(a){return arguments.length?(b=a,e):b},z(e,a)},d3.layout.pie=function(){function f(g,h){var i=g.map(function(b,c){return+a.call(f,b,c)}),j=+(typeof c=="function"?c.apply(this,arguments):c),k=((typeof e=="function"?e.apply(this,arguments):e)-c)/d3.sum(i),l=d3.range(g.length);b!=null&&l.sort(b===n?function(a,b){return i[b]-i[a]}:function(a,c){return b(g[a],g[c])});var m=l.map(function(a){return{data:g[a],value:d=i[a],startAngle:j,endAngle:j+=d*k}});return g.map(function(a,b){return m[l[b]]})}var a=Number,b=n,c=0,e=2*Math.PI;return f.value=function(b){return arguments.length?(a=b,f):a},f.sort=function(a){return arguments.length?(b=a,f):b},f.startAngle=function(a){return arguments.length?(c=a,f):c},f.endAngle=function(a){return arguments.length?(e=a,f):e},f};var n={};d3.layout.stack=function(){function g(h,i){var j=h.map(function(b,c){return a.call(g,b,c)}),k=j.map(function(a,b){return a.map(function(a,b){return[e.call(g,a,b),f.call(g,a,b)]})}),l=b.call(g,k,i);j=d3.permute(j,l),k=d3.permute(k,l);var m=c.call(g,k,i),n=j.length,o=j[0].length,p,q,r;for(q=0;q<o;++q){d.call(g,j[0][q],r=m[q],k[0][q][1]);for(p=1;p<n;++p)d.call(g,j[p][q],r+=k[p-1][q][1],k[p][q][1])}return h}var a=Object,b=r["default"],c=s.zero,d=q,e=o,f=p;return g.values=function(b){return arguments.length?(a=b,g):a},g.order=function(a){return arguments.length?(b=typeof a=="function"?a:r[a],g):b},g.offset=function(a){return arguments.length?(c=typeof a=="function"?a:s[a],g):c},g.x=function(a){return arguments.length?(e=a,g):e},g.y=function(a){return arguments.length?(f=a,g):f},g.out=function(a){return arguments.length?(d=a,g):d},g};var r={"inside-out":function(a){var b=a.length,c,d,e=a.map(t),f=a.map(u),g=d3.range(b).sort(function(a,b){return e[a]-e[b]}),h=0,i=0,j=[],k=[];for(c=0;c<b;++c)d=g[c],h<i?(h+=f[d],j.push(d)):(i+=f[d],k.push(d));return k.reverse().concat(j)},reverse:function(a){return d3.range(a.length).reverse()},"default":function(a){return d3.range(a.length)}},s={silhouette:function(a){var b=a.length,c=a[0].length,d=[],e=0,f,g,h,i=[];for(g=0;g<c;++g){for(f=0,h=0;f<b;f++)h+=a[f][g][1];h>e&&(e=h),d.push(h)}for(g=0;g<c;++g)i[g]=(e-d[g])/2;return i},wiggle:function(a){var b=a.length,c=a[0],d=c.length,e=0,f,g,h,i,j,k,l,m,n,o=[];o[0]=m=n=0;for(g=1;g<d;++g){for(f=0,i=0;f<b;++f)i+=a[f][g][1];for(f=0,j=0,l=c[g][0]-c[g-1][0];f<b;++f){for(h=0,k=(a[f][g][1]-a[f][g-1][1])/(2*l);h<f;++h)k+=(a[h][g][1]-a[h][g-1][1])/l;j+=k*a[f][g][1]}o[g]=m-=i?j/i*l:0,m<n&&(n=m)}for(g=0;g<d;++g)o[g]-=n;return o},expand:function(a){var b=a.length,c=a[0].length,d=1/b,e,f,g,h=[];for(f=0;f<c;++f){for(e=0,g=0;e<b;e++)g+=a[e][f][1];if(g)for(e=0;e<b;e++)a[e][f][1]/=g;else for(e=0;e<b;e++)a[e][f][1]=d}for(f=0;f<c;++f)h[f]=0;return h},zero:function(a){var b=-1,c=a[0].length,d=[];while(++b<c)d[b]=0;return d}};d3.layout.histogram=function(){function e(e,f){var g=[],h=e.map(b,this),i=c.call(this,h,f),j=d.call(this,i,h,f),k,f=-1,l=h.length,m=j.length-1,n=a?1:1/l,o;while(++f<m)k=g[f]=[],k.dx=j[f+1]-(k.x=j[f]),k.y=0;f=-1;while(++f<l)o=h[f],o>=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]));return g}var a=!0,b=Number,c=y,d=w;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=d3.functor(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return x(b,a)}:d3.functor(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function e(f,h,i){var j=b.call(g,f,h),k=E?f:{data:f};k.depth=h,i.push(k);if(j&&(m=j.length)){var l=-1,m,n=k.children=[],o=0,p=h+1;while(++l<m)d=e(j[l],p,i),d.parent=k,n.push(d),o+=d.value;a&&n.sort(a),c&&(k.value=o)}else c&&(k.value=+c.call(g,f,h)||0);return k}function f(a,b){var d=a.children,e=0;if(d&&(i=d.length)){var h=-1,i,j=b+1;while(++h<i)e+=f(d[h],j)}else c&&(e=+c.call(g,E?a:a.data,b)||0);return c&&(a.value=e),e}function g(a){var b=[];return e(a,0,b),b}var a=C,b=A,c=B;return g.sort=function(b){return arguments.length?(a=b,g):a},g.children=function(a){return arguments.length?(b=a,g):b},g.value=function(a){return arguments.length?(c=a,g):c},g.revalue=function(a){return f(a,0),a},g};var E=!1;d3.layout.pack=function(){function c(c,d){var e=a.call(this,c,d),f=e[0];f.x=0,f.y=0,M(f);var g=b[0],h=b[1],i=1/Math.max(2*f.r/g,2*f.r/h);return N(f,g/2,h/2,i),e}var a=d3.layout.hierarchy().sort(F),b=[1,1];return c.size=function(a){return arguments.length?(b=a,c):b},z(c,a)},d3.layout.cluster=function(){function d(d,e){var f=a.call(this,d,e),g=f[0],h,i=0,j,k;$(g,function(a){var c=a.children;c&&c.length?(a.x=Q(c),a.y=P(c)):(a.x=h?i+=b(a,h):0,a.y=0,h=a)});var l=R(g),m=S(g),n=l.x-b(l,m)/2,o=m.x+b(m,l)/2;return $(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=(1-a.y/g.y)*c[1]}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=T,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},z(d,a)},d3.layout.tree=function(){function d(d,e){function h(a,c){var d=a.children,e=a._tree;if(d&&(f=d.length)){var f,g=d[0],i,k=g,l,m=-1;while(++m<f)l=d[m],h(l,i),k=j(l,i,k),i=l;_(a);var n=.5*(g._tree.prelim+l._tree.prelim);c?(e.prelim=c._tree.prelim+b(a,c),e.mod=e.prelim-n):e.prelim=n}else c&&(e.prelim=c._tree.prelim+b(a,c))}function i(a,b){a.x=a._tree.prelim+b;var c=a.children;if(c&&(e=c.length)){var d=-1,e;b+=a._tree.mod;while(++d<e)i(c[d],b)}}function j(a,c,d){if(c){var e=a,f=a,g=c,h=a.parent.children[0],i=e._tree.mod,j=f._tree.mod,k=g._tree.mod,l=h._tree.mod,m;while(g=V(g),e=U(e),g&&e)h=U(h),f=V(f),f._tree.ancestor=a,m=g._tree.prelim+k-e._tree.prelim-i+b(g,e),m>0&&(ba(bb(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!V(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!U(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];$(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=W(g,Y),l=W(g,X),m=W(g,Z),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return $(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=T,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},z(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c<d)f=(e=a[c]).value*(b<0?0:b),e.area=isNaN(f)||f<=0?0:f}function j(a){var b=a.children;if(b&&b.length){var c=e(a),d=[],f=b.slice(),g,h=Infinity,k,n=Math.min(c.dx,c.dy),o;i(f,c.dx*c.dy/a.value),d.area=0;while((o=f.length)>0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++g<i){if(!(d=a[g].area))continue;d<f&&(f=d),d>e&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=j?d.dy:0;while(++f<g)k=a[f],k.x=h,k.y=i,k.dy=j,h+=k.dx=j?b(k.area/j):0;k.z=!0,k.dx+=d.x+d.dx-h,d.y+=j,d.dy-=j}else{if(e||j>d.dx)j=j?d.dx:0;while(++f<g)k=a[f],k.x=h,k.y=i,k.dx=j,i+=k.dy=j?b(k.area/j):0;k.z=!1,k.dy+=d.y+d.dy-i,d.x+=j,d.dx-=j}}function n(b){var d=g||a(b),e=d[0];return e.x=0,e.y=0,e.dx=c[0],e.dy=c[1],g&&a.revalue(e),i([e],e.dx*e.dy/e.value),(g?k:j)(e),f&&(g=d),d}var a=d3.layout.hierarchy(),b=Math.round,c=[1,1],d=null,e=bc,f=!1,g,h=.5*(1+Math.sqrt(5));return n.size=function(a){return arguments.length?(c=a,n):c},n.padding=function(a){function b(b){var c=a.call(n,b,b.depth);return c==null?bc(b):bd(b,typeof c=="number"?[c,c,c,c]:c)}function c(b){return bd(b,a)}if(!arguments.length)return d;var f;return e=(d=a)==null?bc:(f=typeof a)==="function"?b:f==="number"?(a=[a,a,a,a],c):c,n},n.round=function(a){return arguments.length?(b=a?Math.round:Number,n):b!=Number},n.sticky=function(a){return arguments.length?(f=a,g=null,n):f},n.ratio=function(a){return arguments.length?(h=a,n):h},z(n,a)}})(); \ No newline at end of file
diff --git a/media/d3.min.js b/media/d3.min.js
deleted file mode 100644
index b37f5c9..0000000
--- a/media/d3.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(){function e(a){var b=-1,c=a.length,d=[];while(++b<c)d.push(a[b]);return d}function f(a){return Array.prototype.slice.call(a)}function i(){return this}function j(a,b,c){return function(){var d=c.apply(b,arguments);return arguments.length?a:d}}function k(a){return a!=null&&!isNaN(a)}function l(a){return a.length}function m(a){return a==null}function n(a){return a.replace(/(^\s+)|(\s+$)/g,"").replace(/\s+/g," ")}function q(){}function r(){function c(){var b=a,c=-1,d=b.length,e;while(++c<d)(e=b[c].on)&&e.apply(this,arguments)}var a=[],b={};return c.on=function(d,e){var f,g;if(arguments.length<2)return(f=b[d])&&f.on;if(f=b[d])f.on=null,a=a.slice(0,g=a.indexOf(f)).concat(a.slice(g+1)),delete b[d];return e&&a.push(b[d]={on:e}),c},c}function u(a,b){return b-(a?1+Math.floor(Math.log(a+Math.pow(10,1+Math.floor(Math.log(a)/Math.LN10)-b))/Math.LN10):1)}function v(a){return a+""}function w(a){var b=a.lastIndexOf("."),c=b>=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function y(a,b){return{scale:Math.pow(10,(8-b)*3),symbol:a}}function D(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function E(a){return function(b){return 1-a(1-b)}}function F(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function G(a){return a}function H(a){return function(b){return Math.pow(b,a)}}function I(a){return 1-Math.cos(a*Math.PI/2)}function J(a){return Math.pow(2,10*(a-1))}function K(a){return 1-Math.sqrt(1-a*a)}function L(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function M(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function N(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function O(){d3.event.stopPropagation(),d3.event.preventDefault()}function Q(a){return a=="transform"?d3.interpolateTransform:d3.interpolate}function R(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return(c-a)*b}}function S(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function T(a,b,c){return new U(a,b,c)}function U(a,b,c){this.r=a,this.g=b,this.b=c}function V(a){return a<16?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function W(a,b,c){var d=0,e=0,f=0,g,h,i;g=/([a-z]+)\((.*)\)/i.exec(a);if(g){h=g[2].split(",");switch(g[1]){case"hsl":return c(parseFloat(h[0]),parseFloat(h[1])/100,parseFloat(h[2])/100);case"rgb":return b(Y(h[0]),Y(h[1]),Y(h[2]))}}return(i=Z[a])?b(i.r,i.g,i.b):(a!=null&&a.charAt(0)==="#"&&(a.length===4?(d=a.charAt(1),d+=d,e=a.charAt(2),e+=e,f=a.charAt(3),f+=f):a.length===7&&(d=a.substring(1,3),e=a.substring(3,5),f=a.substring(5,7)),d=parseInt(d,16),e=parseInt(e,16),f=parseInt(f,16)),b(d,e,f))}function X(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,g,h,i=(e+d)/2;return f?(h=i<.5?f/(e+d):f/(2-e-d),a==e?g=(b-c)/f+(b<c?6:0):b==e?g=(c-a)/f+2:g=(a-b)/f+4,g*=60):h=g=0,_(g,h,i)}function Y(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function _(a,b,c){return new ba(a,b,c)}function ba(a,b,c){this.h=a,this.s=b,this.l=c}function bb(a,b,c){function f(a){return a>360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,T(g(a+120),g(a),g(a-120))}function bc(a){return h(a,bf),a}function bg(a){return function(){return bd(a,this)}}function bh(a){return function(){return be(a,this)}}function bj(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=n(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=n(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bk(a){return{__data__:a}}function bl(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bn(a){return h(a,bo),a}function bp(a,b,c){h(a,bt);var d={},e=d3.dispatch("start","end"),f=bw;return a.id=b,a.time=c,a.tween=function(b,c){return arguments.length<2?d[b]:(c==null?delete d[b]:d[b]=c,a)},a.ease=function(b){return arguments.length?(f=typeof b=="function"?b:d3.ease.apply(d3,arguments),a):f},a.each=function(b,c){return arguments.length<2?bx.call(a,b):(e.on(b,c),a)},d3.timer(function(g){return a.each(function(h,i,j){function p(a){if(o.active>b)return r();o.active=b;for(var f in d)(f=d[f].call(l,h,i))&&k.push(f);return e.start.call(l,h,i),q(a)||d3.timer(q,0,c),1}function q(a){if(o.active!==b)return r();var c=(a-m)/n,d=f(c),g=k.length;while(g>0)k[--g].call(l,d);if(c>=1)return r(),bv=b,e.end.call(l,h,i),bv=0,1}function r(){return--o.count||delete l.__transition__,1}var k=[],l=this,m=a[j][i].delay,n=a[j][i].duration,o=l.__transition__||(l.__transition__={active:0,count:0});++o.count,m<=g?p(g):d3.timer(p,m,c)}),1},0,c),a}function br(a,b,c){return c!=""&&bq}function bs(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bq:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=Q(a);return typeof b=="function"?d:b==null?br:(b+="",e)}function bx(a){for(var b=0,c=this.length;b<c;b++)for(var d=this[b],e=0,f=d.length;e<f;e++){var g=d[e];g&&a.call(g=g.node,g.__data__,e,b)}return this}function bB(){var a,b=Date.now(),c=by;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bC()-b;d>24?(isFinite(d)&&(clearTimeout(bA),bA=setTimeout(bB,d)),bz=0):(bz=1,bD(bB))}function bC(){var a=null,b=by,c=Infinity;while(b)b.flush?b=a?a.next=b.next:by=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function bE(a){var b=[a.a,a.b],c=[a.c,a.d],d=bG(b),e=bF(b,c),f=bG(bH(c,b,-e))||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1),this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*bK,this.translate=[a.e,a.f],this.scale=[d,f],this.skew=f?Math.atan2(e,f)*bK:0}function bF(a,b){return a[0]*b[0]+a[1]*b[1]}function bG(a){var b=Math.sqrt(bF(a,a));return b&&(a[0]/=b,a[1]/=b),b}function bH(a,b,c){return a[0]+=c*b[0],a[1]+=c*b[1],a}function bL(){}function bM(a){var b=a[0],c=a[a.length-1];return b<c?[b,c]:[c,b]}function bN(a){return a.rangeExtent?a.rangeExtent():bM(a.range())}function bO(a,b){var c=0,d=a.length-1,e=a[c],f=a[d],g;f<e&&(g=c,c=d,d=g,g=e,e=f,f=g);if(g=f-e)b=b(g),a[c]=b.floor(e),a[d]=b.ceil(f);return a}function bP(){return Math}function bQ(a,b,c,d){function g(){var g=a.length==2?bW:bX,i=d?S:R;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return bU(a,b)},h.tickFormat=function(b){return bV(a,b)},h.nice=function(){return bO(a,bS),g()},h.copy=function(){return bQ(a,b,c,d)},g()}function bR(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function bS(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function bT(a,b){var c=bM(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function bU(a,b){return d3.range.apply(d3,bT(a,b))}function bV(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(bT(a,b)[2])/Math.LN10+.01))+"f")}function bW(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function bX(a,b,c,d){var e=[],f=[],g=0,h=a.length;while(++g<h)e.push(c(a[g-1],a[g])),f.push(d(b[g-1],b[g]));return function(b){var c=d3.bisect(a,b,1,a.length-1)-1;return f[c](e[c](b))}}function bY(a,b){function d(c){return a(b(c))}var c=b.pow;return d.invert=function(b){return c(a.invert(b))},d.domain=function(e){return arguments.length?(b=e[0]<0?b_:b$,c=b.pow,a.domain(e.map(b)),d):a.domain().map(c)},d.nice=function(){return a.domain(bO(a.domain(),bP)),d},d.ticks=function(){var d=bM(a.domain()),e=[];if(d.every(isFinite)){var f=Math.floor(d[0]),g=Math.ceil(d[1]),h=c(d[0]),i=c(d[1]);if(b===b_){e.push(c(f));for(;f++<g;)for(var j=9;j>0;j--)e.push(c(f)*j)}else{for(;f<g;f++)for(var j=1;j<10;j++)e.push(c(f)*j);e.push(c(f))}for(f=0;e[f]<h;f++);for(g=e.length;e[g-1]>i;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=bZ);if(arguments.length<1)return e;var f=a/d.ticks().length,g=b===b_?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))<f?e(a):""}},d.copy=function(){return bY(a.copy(),b)},bR(d,a)}function b$(a){return Math.log(a)/Math.LN10}function b_(a){return-Math.log(-a)/Math.LN10}function ca(a,b){function e(b){return a(c(b))}var c=cb(b),d=cb(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return bU(e.domain(),a)},e.tickFormat=function(a){return bV(e.domain(),a)},e.nice=function(){return e.domain(bO(e.domain(),bS))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=cb(b=a),d=cb(1/b),e.domain(f)},e.copy=function(){return ca(a.copy(),b)},bR(e,a)}function cb(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cc(a,b){function f(b){return d[((c[b]||(c[b]=a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c={};var e=-1,g=d.length,h;while(++e<g)c[h=d[e]]||(c[h]=a.push(h));return f[b.t](b.x,b.p)},f.range=function(a){return arguments.length?(d=a,e=0,b={t:"range",x:a},f):d},f.rangePoints=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=(j-i)/(a.length-1+h);return d=g(a.length<2?(i+j)/2:i+k*h/2,k),e=0,b={t:"rangePoints",x:c,p:h},f},f.rangeBands=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=(j-i)/(a.length+h);return d=g(i+k*h,k),e=k*(1-h),b={t:"rangeBands",x:c,p:h},f},f.rangeRoundBands=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=Math.floor((j-i)/(a.length+h));return d=g(i+Math.round((j-i-(a.length-h)*k)/2),k),e=Math.round(k*(1-h)),b={t:"rangeRoundBands",x:c,p:h},f},f.rangeBand=function(){return e},f.rangeExtent=function(){return b.x},f.copy=function(){return cc(a,b)},f.domain(a)}function ch(a,b){function d(){var d=0,f=a.length,g=b.length;c=[];while(++d<g)c[d-1]=d3.quantile(a,d/g);return e}function e(a){return isNaN(a=+a)?NaN:b[d3.bisect(c,a)]}var c;return e.domain=function(b){return arguments.length?(a=b.filter(function(a){return!isNaN(a)}).sort(d3.ascending),d()):a},e.range=function(a){return arguments.length?(b=a,d()):b},e.quantiles=function(){return c},e.copy=function(){return ch(a,b)},d()}function ci(a,b,c){function f(b){return c[Math.max(0,Math.min(e,Math.floor(d*(b-a))))]}function g(){return d=c.length/(b-a),e=c.length-1,f}var d,e;return f.domain=function(c){return arguments.length?(a=+c[0],b=+c[c.length-1],g()):[a,b]},f.range=function(a){return arguments.length?(c=a,g()):c},f.copy=function(){return ci(a,b,c)},g()}function cl(a){return a.innerRadius}function cm(a){return a.outerRadius}function cn(a){return a.startAngle}function co(a){return a.endAngle}function cp(a){function g(d){return d.length<1?null:"M"+e(a(cq(this,d,b,c)),f)}var b=cr,c=cs,d="linear",e=ct[d],f=.7;return g.x=function(a){return arguments.length?(b=a,g):b},g.y=function(a){return arguments.length?(c=a,g):c},g.interpolate=function(a){return arguments.length?(e=ct[d=a],g):d},g.tension=function(a){return arguments.length?(f=a,g):f},g}function cq(a,b,c,d){var e=[],f=-1,g=b.length,h=typeof c=="function",i=typeof d=="function",j;if(h&&i)while(++f<g)e.push([c.call(a,j=b[f],f),d.call(a,j,f)]);else if(h)while(++f<g)e.push([c.call(a,b[f],f),d]);else if(i)while(++f<g)e.push([c,d.call(a,b[f],f)]);else while(++f<g)e.push([c,d]);return e}function cr(a){return a[0]}function cs(a){return a[1]}function cu(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("L",(d=a[b])[0],",",d[1]);return e.join("")}function cv(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function cw(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function cx(a,b){return a.length<4?cu(a):a[1]+cA(a.slice(1,a.length-1),cB(a,b))}function cy(a,b){return a.length<3?cu(a):a[0]+cA((a.push(a[0]),a),cB([a[a.length-2]].concat(a,[a[1]]),b))}function cz(a,b,c){return a.length<3?cu(a):a[0]+cA(a,cB(a,b))}function cA(a,b){if(b.length<1||a.length!=b.length&&a.length!=b.length+2)return cu(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],g=b[0],h=g,i=1;c&&(d+="Q"+(f[0]-g[0]*2/3)+","+(f[1]-g[1]*2/3)+","+f[0]+","+f[1],e=a[1],i=2);if(b.length>1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j<b.length;j++,i++)f=a[i],h=b[j],d+="S"+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1]}if(c){var k=a[i];d+="Q"+(f[0]+h[0]*2/3)+","+(f[1]+h[1]*2/3)+","+k[0]+","+k[1]}return d}function cB(a,b){var c=[],d=(1-b)/2,e,f=a[0],g=a[1],h=1,i=a.length;while(++h<i)e=f,f=g,g=a[h],c.push([d*(g[0]-e[0]),d*(g[1]-e[1])]);return c}function cC(a){if(a.length<3)return cu(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],g=[e,e,e,(d=a[1])[0]],h=[f,f,f,d[1]],i=[e,",",f];cK(i,g,h);while(++b<c)d=a[b],g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),cK(i,g,h);b=-1;while(++b<2)g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),cK(i,g,h);return i.join("")}function cD(a){if(a.length<4)return cu(a);var b=[],c=-1,d=a.length,e,f=[0],g=[0];while(++c<3)e=a[c],f.push(e[0]),g.push(e[1]);b.push(cG(cJ,f)+","+cG(cJ,g)),--c;while(++c<d)e=a[c],f.shift(),f.push(e[0]),g.shift(),g.push(e[1]),cK(b,f,g);return b.join("")}function cE(a){var b,c=-1,d=a.length,e=d+4,f,g=[],h=[];while(++c<4)f=a[c%d],g.push(f[0]),h.push(f[1]);b=[cG(cJ,g),",",cG(cJ,h)],--c;while(++c<e)f=a[c%d],g.shift(),g.push(f[0]),h.shift(),h.push(f[1]),cK(b,g,h);return b.join("")}function cF(a,b){var c=a.length-1,d=a[0][0],e=a[0][1],f=a[c][0]-d,g=a[c][1]-e,h=-1,i,j;while(++h<=c)i=a[h],j=h/c,i[0]=b*i[0]+(1-b)*(d+j*f),i[1]=b*i[1]+(1-b)*(e+j*g);return cC(a)}function cG(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function cK(a,b,c){a.push("C",cG(cH,b),",",cG(cH,c),",",cG(cI,b),",",cG(cI,c),",",cG(cJ,b),",",cG(cJ,c))}function cL(a,b){return(b[1]-a[1])/(b[0]-a[0])}function cM(a){var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=cL(e,f);while(++b<c)d[b]=g+(g=cL(e=f,f=a[b+1]));return d[b]=g,d}function cN(a){var b=[],c,d,e,f,g=cM(a),h=-1,i=a.length-1;while(++h<i)c=cL(a[h],a[h+1]),Math.abs(c)<1e-6?g[h]=g[h+1]=0:(d=g[h]/c,e=g[h+1]/c,f=d*d+e*e,f>9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function cO(a){return a.length<3?cu(a):a[0]+cA(a,cN(a))}function cP(a){var b,c=-1,d=a.length,e,f;while(++c<d)b=a[c],e=b[0],f=b[1]+cj,b[0]=e*Math.cos(f),b[1]=e*Math.sin(f);return a}function cQ(a){function j(f){if(f.length<1)return null;var j=cq(this,f,b,d),k=cq(this,f,b===c?cR(j):c,d===e?cS(j):e);return"M"+g(a(k),i)+"L"+h(a(j.reverse()),i)+"Z"}var b=cr,c=cr,d=0,e=cs,f,g,h,i=.7;return j.x=function(a){return arguments.length?(b=c=a,j):c},j.x0=function(a){return arguments.length?(b=a,j):b},j.x1=function(a){return arguments.length?(c=a,j):c},j.y=function(a){return arguments.length?(d=e=a,j):e},j.y0=function(a){return arguments.length?(d=a,j):d},j.y1=function(a){return arguments.length?(e=a,j):e},j.interpolate=function(a){return arguments.length?(g=ct[f=a],h=g.reverse||g,j):f},j.tension=function(a){return arguments.length?(i=a,j):i},j.interpolate("linear")}function cR(a){return function(b,c){return a[c][0]}}function cS(a){return function(b,c){return a[c][1]}}function cT(a){return a.source}function cU(a){return a.target}function cV(a){return a.radius}function cW(a){return a.startAngle}function cX(a){return a.endAngle}function cY(a){return[a.x,a.y]}function cZ(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+cj;return[c*Math.cos(d),c*Math.sin(d)]}}function c_(a,b){var c=(a.ownerSVGElement||a).createSVGPoint();if(c$<0&&(window.scrollX||window.scrollY)){var d=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0),e=d[0][0].getScreenCTM();c$=!e.f&&!e.e,d.remove()}return c$?(c.x=b.pageX,c.y=b.pageY):(c.x=b.clientX,c.y=b.clientY),c=c.matrixTransform(a.getScreenCTM().inverse()),[c.x,c.y]}function da(){return 64}function db(){return"circle"}function df(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function dg(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function dh(a,b,c){e=[];if(c&&b.length>1){var d=bM(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f<g)for(i=c;--i>0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++i<c&&(j=+b[f]+i*h)<d[1];)e.push(j)}return e}function dt(a,b){a.select(".extent").attr("x",b[0][0]),a.selectAll(".n,.s,.w,.nw,.sw").attr("x",b[0][0]-2),a.selectAll(".e,.ne,.se").attr("x",b[1][0]-3),a.selectAll(".extent,.n,.s").attr("width",b[1][0]-b[0][0])}function du(a,b){a.select(".extent").attr("y",b[0][1]),a.selectAll(".n,.e,.w,.nw,.ne").attr("y",b[0][1]-3),a.selectAll(".s,.se,.sw").attr("y",b[1][1]-4),a.selectAll(".extent,.e,.w").attr("height",b[1][1]-b[0][1])}function dv(){d3.event.keyCode==32&&dk&&!dp&&(dr=null,ds[0]-=dn[1][0],ds[1]-=dn[1][1],dp=2,O())}function dw(){d3.event.keyCode==32&&dp==2&&(ds[0]+=dn[1][0],ds[1]+=dn[1][1],dp=0,O())}function dx(){if(ds){var a=d3.svg.mouse(dk),b=d3.select(dk);dp||(d3.event.altKey?(dr||(dr=[(dn[0][0]+dn[1][0])/2,(dn[0][1]+dn[1][1])/2]),ds[0]=dn[+(a[0]<dr[0])][0],ds[1]=dn[+(a[1]<dr[1])][1]):dr=null),dl&&(dy(a,dl,0),dt(b,dn)),dm&&(dy(a,dm,1),du(b,dn)),dj("brush")}}function dy(a,b,c){var d=bN(b),e=d[0],f=d[1],g=ds[c],h=dn[1][c]-dn[0][c],i,j;dp&&(e-=g,f-=h+g),i=Math.max(e,Math.min(f,a[c])),dp?j=(i+=g)+h:(dr&&(g=Math.max(e,Math.min(f,2*dr[c]-i))),g<i?(j=i,i=g):j=g),dn[0][c]=i,dn[1][c]=j}function dz(){ds&&(dx(),d3.select(dk).selectAll(".resize").style("pointer-events",di.empty()?"none":"all"),dj("brushend"),di=dj=dk=dl=dm=dn=dp=dq=dr=ds=null,O())}function dI(a){var b=dJ(),c=d3.event,d=d3.event={type:a};b&&(d.x=b[0]+dF[0],d.y=b[1]+dF[1],d.dx=b[0]-dG[0],d.dy=b[1]-dG[1],dH|=d.dx|d.dy,dG=b);try{dB[a].apply(dD,dE)}finally{d3.event=c}c.stopPropagation(),c.preventDefault()}function dJ(){var a=dD.parentNode,b=d3.event.changedTouches;return a&&(b?d3.svg.touches(a,b)[0]:d3.svg.mouse(a))}function dK(){if(!dD)return;var a=dD.parentNode;if(!a)return dL();dI("drag"),O()}function dL(){if(!dD)return;dI("dragend"),dH&&(O(),dH=d3.event.target===dC),dB=dC=dD=dE=dF=dG=null}function dM(){dH&&(O(),dH=0)}function dZ(a){return[a[0]-dS[0],a[1]-dS[1],dS[2]]}function d$(){dN||(dN=d3.select("body").append("div").style("visibility","hidden").style("top",0).style("height",0).style("width",0).style("overflow-y","scroll").append("div").style("height","2000px").node().parentNode);var a=d3.event,b;try{dN.scrollTop=1e3,dN.dispatchEvent(a),b=1e3-dN.scrollTop}catch(c){b=a.wheelDelta||-a.detail*5}return b*.005}function d_(){var a=d3.svg.touches(dW),b=-1,c=a.length,d;while(++b<c)dQ[(d=a[b]).identifier]=dZ(d);return a}function ea(){var a=d3.svg.touches(dW);switch(a.length){case 1:var b=a[0];ee(dS[2],b,dQ[b.identifier]);break;case 2:var c=a[0],d=a[1],e=[(c[0]+d[0])/2,(c[1]+d[1])/2],f=dQ[c.identifier],g=dQ[d.identifier],h=[(f[0]+g[0])/2,(f[1]+g[1])/2,f[2]];ee(Math.log(d3.event.scale)/Math.LN2+f[2],e,h)}}function eb(){dP=null,dO&&(dY=1,ee(dS[2],d3.svg.mouse(dW),dO))}function ec(){dO&&(dY&&(O(),dY=dV===d3.event.target),dS=dT=dU=dV=dW=dX=dO=null)}function ed(){dY&&(O(),dY=0)}function ee(a,b,c){function l(a,b,c){a.domain(a.range().map(function(f){return a.invert((f-c)*d/e+b)}))}a=eg(a,2);var d=Math.pow(2,dS[2]),e=Math.pow(2,a),f=Math.pow(2,(dS[2]=a)-c[2]),g=dS[0],h=dS[1],i=dS[0]=eg(b[0]-c[0]*f,0,e),j=dS[1]=eg(b[1]-c[1]*f,1,e),k=d3.event;d3.event={scale:e,translate:[i,j],transform:function(a,b){a&&l(a,g,i),b&&l(b,h,j)}};try{dU.apply(dW,dX)}finally{d3.event=k}k.preventDefault()}function eg(a,b,c){var d=dT[b],e=d[0],f=d[1];return arguments.length===3?Math.max(f*(f===Infinity?-Infinity:1/c-1),Math.min(e===-Infinity?Infinity:e,a/c))*c:Math.max(e,Math.min(f,a))}Date.now||(Date.now=function(){return+(new Date)});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(a){var b=CSSStyleDeclaration.prototype,c=b.setProperty;b.setProperty=function(a,b,d){c.call(this,a,b+"",d)}}d3={version:"2.6.1"};var d=f;try{d(document.documentElement.childNodes)[0].nodeType}catch(g){d=e}var h=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};d3.functor=function(a){return typeof a=="function"?a:function(){return a}},d3.rebind=function(a,b){var c=1,d=arguments.length,e;while(++c<d)a[e=arguments[c]]=j(a,b,b[e]);return a},d3.ascending=function(a,b){return a<b?-1:a>b?1:a>=b?0:NaN},d3.descending=function(a,b){return b<a?-1:b>a?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f<c)k(d=a[f])&&(e+=(d-e)/++g);else while(++f<c)k(d=b.call(a,a[f],f))&&(e+=(d-e)/++g);return g?e:undefined},d3.median=function(a,b){return arguments.length>1&&(a=a.map(b)),a=a.filter(k),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&e>f&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&e>f&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&f>e&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&f>e&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++c<d&&((e=g=a[c])==null||e!=e))e=g=undefined;while(++c<d)(f=a[c])!=null&&(e>f&&(e=f),g<f&&(g=f))}else{while(++c<d&&((e=g=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&(e>f&&(e=f),g<f&&(g=f))}return[e,g]},d3.random={normal:function(a,b){return arguments.length<2&&(b=1),arguments.length<1&&(a=0),function(){var c,d,e;do c=Math.random()*2-1,d=Math.random()*2-1,e=c*c+d*d;while(!e||e>1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f<d)isNaN(e=+a[f])||(c+=e);else while(++f<d)isNaN(e=+b.call(a,a[f],f))||(c+=e);return c},d3.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=a[d-1],f=c-d;return f?e+f*(a[d]-e):e},d3.transpose=function(a){return d3.zip.apply(d3,a)},d3.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,b=d3.min(arguments,l),c=new Array(b);++a<b;)for(var d=-1,e,f=c[a]=new Array(e);++d<e;)f[d]=arguments[d][a];return c},d3.bisectLeft=function(a,b,c,d){arguments.length<3&&(c=0),arguments.length<4&&(d=a.length);while(c<d){var e=c+d>>1;a[e]<b?c=e+1:d=e}return c},d3.bisect=d3.bisectRight=function(a,b,c,d){arguments.length<3&&(c=0),arguments.length<4&&(d=a.length);while(c<d){var e=c+d>>1;b<a[e]?d=e:c=e+1}return c},d3.first=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])>0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])<=0&&(e=f);return e},d3.nest=function(){function f(c,g){if(g>=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,l,m={};while(++h<i)(k=j(l=c[h]))in m?m[k].push(l):m[k]=[l];for(k in m)m[k]=f(m[k],g);return m}function g(a,d){if(d>=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++d<e)c[d]=a[b[d]];return c},d3.merge=function(a){return Array.prototype.concat.apply([],a)},d3.split=function(a,b){var c=[],d=[],e,f=-1,g=a.length;arguments.length<2&&(b=m);while(++f<g)b.call(d,e=a[f],f)?d=[]:(d.length||c.push(d),d.push(e));return c},d3.range=function(a,b,c){arguments.length<3&&(c=1,arguments.length<2&&(b=a,a=0));if((b-a)/c==Infinity)throw new Error("infinite range");var d=[],e=-1,f;if(c<0)while((f=a+c*++e)>b)d.push(f);else while((f=a+c*++e)<b)d.push(f);return d},d3.requote=function(a){return a.replace(o,"\\$&")};var o=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;d3.round=function(a,b){return b?Math.round(a*Math.pow(10,b))*Math.pow(10,-b):Math.round(a)},d3.xhr=function(a,b,c){var d=new XMLHttpRequest;arguments.length<3?c=b:b&&d.overrideMimeType&&d.overrideMimeType(b),d.open("GET",a,!0),d.onreadystatechange=function(){d.readyState===4&&c(d.status<300?d:null)},d.send(null)},d3.text=function(a,b,c){function d(a){c(a&&a.responseText)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.json=function(a,b){d3.text(a,"application/json",function(a){b(a?JSON.parse(a):null)})},d3.html=function(a,b){d3.text(a,"text/html",function(a){if(a!=null){var c=document.createRange();c.selectNode(document.body),a=c.createContextualFragment(a)}b(a)})},d3.xml=function(a,b,c){function d(a){c(a&&a.responseXML)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)};var p={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:p,qualify:function(a){var b=a.indexOf(":");return b<0?a in p?{space:p[a],local:a}:a:{space:p[a.substring(0,b)],local:a.substring(b+1)}}},d3.dispatch=function(){var a=new q,b=-1,c=arguments.length;while(++b<c)a[arguments[b]]=r();return a},q.prototype.on=function(a,b){var c=a.indexOf("."),d="";return c>0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):(this[a].on(d,b),this)},d3.format=function(a){var b=s.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=t[i]||v,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a*=m.scale,k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n<f&&(a=(new Array(f-n+1)).join(c)+a),g&&(a=w(a)),a=b+a}else{g&&(a=w(a)),a=b+a;var n=a.length;n<f&&(a=(new Array(f-n+1)).join(c)+a)}return a+k}};var s=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,t={g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=u(a,b)).toFixed(Math.max(0,Math.min(20,b)))}},x=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(y);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,u(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),x[8+c/3]};var z=H(2),A=H(3),B={linear:function(){return G},poly:H,quad:function(){return z},cubic:function(){return A},sin:function(){return I},exp:function(){return J},circle:function(){return K},elastic:L,back:M,bounce:function(){return N}},C={"in":function(a){return a},out:E,"in-out":F,"out-in":function(a){return F(E(a))}};d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return D(C[d](B[c].apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;P.lastIndex=0;for(d=0;c=P.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=P.lastIndex;f<b.length&&h.push(b.substring(f));for(d=0,j=i.length;(c=P.exec(a))&&d<j;++d){k=i[d];if(k.x==c[0]){if(k.i)if(h[k.i+1]==null){h[k.i-1]+=k.x,h.splice(k.i,1);for(e=d+1;e<j;++e)i[e].i--}else{h[k.i-1]+=k.x+h[k.i+1],h.splice(k.i,2);for(e=d+1;e<j;++e)i[e].i-=2}else if(h[k.i+1]==null)h[k.i]=k.x;else{h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1);for(e=d+1;e<j;++e)i[e].i--}i.splice(d,1),j--,d--}else k.x=d3.interpolateNumber(parseFloat(c[0]),parseFloat(k.x))}while(d<j)k=i.pop(),h[k.i+1]==null?h[k.i]=k.x:(h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1)),j--;return h.length===1?h[0]==null?i[0].x:function(){return b}:function(a){for(d=0;d<j;++d)h[(k=i[d]).i]=k.x(a);return h.join("")}},d3.interpolateTransform=function(a,b){return d3.interpolateString(d3.transform(a)+"",d3.transform(b)+"")},d3.interpolateRgb=function(a,b){a=d3.rgb(a),b=d3.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,g=b.g-d,h=b.b-e;return function(a){return"#"+V(Math.round(c+f*a))+V(Math.round(d+g*a))+V(Math.round(e+h*a))}},d3.interpolateHsl=function(a,b){a=d3.hsl(a),b=d3.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,g=b.s-d,h=b.l-e;return function(a){return bb(c+f*a,d+g*a,e+h*a).toString()}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h<g;++h)c.push(d3.interpolate(a[h],b[h]));for(;h<e;++h)d[h]=a[h];for(;h<f;++h)d[h]=b[h];return function(a){for(h=0;h<g;++h)d[h]=c[h](a);return d}},d3.interpolateObject=function(a,b){var c={},d={},e;for(e in a)e in b?c[e]=Q(e)(a[e],b[e]):d[e]=a[e];for(e in b)e in a||(d[e]=b[e]);return function(a){for(e in c)d[e]=c[e](a);return d}};var P=/[-+]?(?:\d*\.?\d+)(?:[eE][-+]?\d+)?/g;d3.interpolators=[d3.interpolateObject,function(a,b){return b instanceof Array&&d3.interpolateArray(a,b)},function(a,b){return(typeof a=="string"||typeof b=="string")&&d3.interpolateString(a+"",b+"")},function(a,b){return(typeof b=="string"?b in Z||/^(#|rgb\(|hsl\()/.test(b):b instanceof U||b instanceof ba)&&d3.interpolateRgb(a,b)},function(a,b){return!isNaN(a=+a)&&!isNaN(b=+b)&&d3.interpolateNumber(a,b)}],d3.rgb=function(a,b,c){return arguments.length===1?a instanceof U?T(a.r,a.g,a.b):W(""+a,T,bb):T(~~a,~~b,~~c)},U.prototype.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b,e=30;return!b&&!c&&!d?T(e,e,e):(b&&b<e&&(b=e),c&&c<e&&(c=e),d&&d<e&&(d=e),T(Math.min(255,Math.floor(b/a)),Math.min(255,Math.floor(c/a)),Math.min(255,Math.floor(d/a))))},U.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),T(Math.floor(a*this.r),Math.floor(a*this.g),Math.floor(a*this.b))},U.prototype.hsl=function(){return X(this.r,this.g,this.b)},U.prototype.toString=function(){return"#"+V(this.r)+V(this.g)+V(this.b)};var Z={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey
-:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};for(var $ in Z)Z[$]=W(Z[$],T,bb);d3.hsl=function(a,b,c){return arguments.length===1?a instanceof ba?_(a.h,a.s,a.l):W(""+a,X,_):_(+a,+b,+c)},ba.prototype.brighter=function(a){return a=Math.pow(.7,arguments.length?a:1),_(this.h,this.s,this.l/a)},ba.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),_(this.h,this.s,a*this.l)},ba.prototype.rgb=function(){return bb(this.h,this.s,this.l)},ba.prototype.toString=function(){return this.rgb().toString()};var bd=function(a,b){return b.querySelector(a)},be=function(a,b){return b.querySelectorAll(a)};typeof Sizzle=="function"&&(bd=function(a,b){return Sizzle(a,b)[0]},be=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))});var bf=[];d3.selection=function(){return bm},d3.selection.prototype=bf,bf.select=function(a){var b=[],c,d,e,f;typeof a!="function"&&(a=bg(a));for(var g=-1,h=this.length;++g<h;){b.push(c=[]),c.parentNode=(e=this[g]).parentNode;for(var i=-1,j=e.length;++i<j;)(f=e[i])?(c.push(d=a.call(f,f.__data__,i)),d&&"__data__"in f&&(d.__data__=f.__data__)):c.push(null)}return bc(b)},bf.selectAll=function(a){var b=[],c,e;typeof a!="function"&&(a=bh(a));for(var f=-1,g=this.length;++f<g;)for(var h=this[f],i=-1,j=h.length;++i<j;)if(e=h[i])b.push(c=d(a.call(e,e.__data__,i))),c.parentNode=e;return bc(b)},bf.attr=function(a,b){function d(){this.removeAttribute(a)}function e(){this.removeAttributeNS(a.space,a.local)}function f(){this.setAttribute(a,b)}function g(){this.setAttributeNS(a.space,a.local,b)}function h(){var c=b.apply(this,arguments);c==null?this.removeAttribute(a):this.setAttribute(a,c)}function i(){var c=b.apply(this,arguments);c==null?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}a=d3.ns.qualify(a);if(arguments.length<2){var c=this.node();return a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}return this.each(b==null?a.local?e:d:typeof b=="function"?a.local?i:h:a.local?g:f)},bf.classed=function(a,b){var c=a.split(bi),d=c.length,e=-1;if(arguments.length>1){while(++e<d)bj.call(this,c[e],b);return this}while(++e<d)if(!bj.call(this,c[e]))return!1;return!0};var bi=/\s+/g;bf.style=function(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var d=b.apply(this,arguments);d==null?this.style.removeProperty(a):this.style.setProperty(a,d,c)}return arguments.length<3&&(c=""),arguments.length<2?window.getComputedStyle(this.node(),null).getPropertyValue(a):this.each(b==null?d:typeof b=="function"?f:e)},bf.property=function(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);c==null?delete this[a]:this[a]=c}return arguments.length<2?this.node()[a]:this.each(b==null?c:typeof b=="function"?e:d)},bf.text=function(a){return arguments.length<1?this.node().textContent:this.each(typeof a=="function"?function(){this.textContent=a.apply(this,arguments)}:function(){this.textContent=a})},bf.html=function(a){return arguments.length<1?this.node().innerHTML:this.each(typeof a=="function"?function(){this.innerHTML=a.apply(this,arguments)}:function(){this.innerHTML=a})},bf.append=function(a){function b(){return this.appendChild(document.createElementNS(this.namespaceURI,a))}function c(){return this.appendChild(document.createElementNS(a.space,a.local))}return a=d3.ns.qualify(a),this.select(a.local?c:b)},bf.insert=function(a,b){function c(){return this.insertBefore(document.createElementNS(this.namespaceURI,a),bd(b,this))}function d(){return this.insertBefore(document.createElementNS(a.space,a.local),bd(b,this))}return a=d3.ns.qualify(a),this.select(a.local?d:c)},bf.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})},bf.data=function(a,b){function f(a,f){var g,h=a.length,i=f.length,j=Math.min(h,i),k=Math.max(h,i),l=[],m=[],n=[],o,p;if(b){var q={},r=[],s,t=f.length;for(g=-1;++g<h;)s=b.call(o=a[g],o.__data__,g),s in q?n[t++]=o:q[s]=o,r.push(s);for(g=-1;++g<i;)o=q[s=b.call(f,p=f[g],g)],o?(o.__data__=p,l[g]=o,m[g]=n[g]=null):(m[g]=bk(p),l[g]=n[g]=null),delete q[s];for(g=-1;++g<h;)r[g]in q&&(n[g]=a[g])}else{for(g=-1;++g<j;)o=a[g],p=f[g],o?(o.__data__=p,l[g]=o,m[g]=n[g]=null):(m[g]=bk(p),l[g]=n[g]=null);for(;g<i;++g)m[g]=bk(f[g]),l[g]=n[g]=null;for(;g<k;++g)n[g]=a[g],m[g]=l[g]=null}m.update=l,m.parentNode=l.parentNode=n.parentNode=a.parentNode,c.push(m),d.push(l),e.push(n)}var c=[],d=[],e=[],g=-1,h=this.length,i;if(typeof a=="function")while(++g<h)f(i=this[g],a.call(i,i.parentNode.__data__,g));else while(++g<h)f(i=this[g],a);var j=bc(d);return j.enter=function(){return bn(c)},j.exit=function(){return bc(e)},j},bf.filter=function(a){var b=[],c,d,e;for(var f=0,g=this.length;f<g;f++){b.push(c=[]),c.parentNode=(d=this[f]).parentNode;for(var h=0,i=d.length;h<i;h++)(e=d[h])&&a.call(e,e.__data__,h)&&c.push(e)}return bc(b)},bf.map=function(a){return this.each(function(){this.__data__=a.apply(this,arguments)})},bf.sort=function(a){a=bl.apply(this,arguments);for(var b=0,c=this.length;b<c;b++)for(var d=this[b].sort(a),e=1,f=d.length,g=d[0];e<f;e++){var h=d[e];h&&(g&&g.parentNode.insertBefore(h,g.nextSibling),g=h)}return this},bf.on=function(a,b,c){arguments.length<3&&(c=!1);var d="__on"+a,e=a.indexOf(".");return e>0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function h(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this;g[d]&&g.removeEventListener(a,g[d],c),b&&g.addEventListener(a,g[d]=h,c),h._=b})},bf.each=function(a){for(var b=-1,c=this.length;++b<c;)for(var d=this[b],e=-1,f=d.length;++e<f;){var g=d[e];g&&a.call(g,g.__data__,e,b)}return this},bf.call=function(a){return a.apply(this,(arguments[0]=this,arguments)),this},bf.empty=function(){return!this.node()},bf.node=function(a){for(var b=0,c=this.length;b<c;b++)for(var d=this[b],e=0,f=d.length;e<f;e++){var g=d[e];if(g)return g}return null},bf.transition=function(){var a=[],b,c;for(var d=-1,e=this.length;++d<e;){a.push(b=[]);for(var f=this[d],g=-1,h=f.length;++g<h;)b.push((c=f[g])?{node:c,delay:0,duration:250}:null)}return bp(a,bv||++bu,Date.now())};var bm=bc([[document]]);bm[0].parentNode=document.documentElement,d3.select=function(a){return typeof a=="string"?bm.select(a):bc([[a]])},d3.selectAll=function(a){return typeof a=="string"?bm.selectAll(a):bc([d(a)])};var bo=[];bo.append=bf.append,bo.insert=bf.insert,bo.empty=bf.empty,bo.node=bf.node,bo.select=function(a){var b=[],c,d,e,f,g;for(var h=-1,i=this.length;++h<i;){e=(f=this[h]).update,b.push(c=[]),c.parentNode=f.parentNode;for(var j=-1,k=f.length;++j<k;)(g=f[j])?(c.push(e[j]=d=a.call(f.parentNode,g.__data__,j)),d.__data__=g.__data__):c.push(null)}return bc(b)};var bq={},bt=[],bu=0,bv=0,bw=d3.ease("cubic-in-out");bt.call=bf.call,d3.transition=function(){return bm.transition()},d3.transition.prototype=bt,bt.select=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bg(a));for(var f=-1,g=this.length;++f<g;){b.push(c=[]);for(var h=this[f],i=-1,j=h.length;++i<j;)(e=h[i])&&(d=a.call(e.node,e.node.__data__,i))?("__data__"in e.node&&(d.__data__=e.node.__data__),c.push({node:d,delay:e.delay,duration:e.duration})):c.push(null)}return bp(b,this.id,this.time).ease(this.ease())},bt.selectAll=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bh(a));for(var f=-1,g=this.length;++f<g;)for(var h=this[f],i=-1,j=h.length;++i<j;)if(e=h[i]){d=a.call(e.node,e.node.__data__,i),b.push(c=[]);for(var k=-1,l=d.length;++k<l;)c.push({node:d[k],delay:e.delay,duration:e.duration})}return bp(b,this.id,this.time).ease(this.ease())},bt.attr=function(a,b){return this.attrTween(a,bs(a,b))},bt.attrTween=function(a,b){function d(a,d){var e=b.call(this,a,d,this.getAttribute(c));return e===bq?(this.removeAttribute(c),null):e&&function(a){this.setAttribute(c,e(a))}}function e(a,d){var e=b.call(this,a,d,this.getAttributeNS(c.space,c.local));return e===bq?(this.removeAttributeNS(c.space,c.local),null):e&&function(a){this.setAttributeNS(c.space,c.local,e(a))}}var c=d3.ns.qualify(a);return this.tween("attr."+a,c.local?e:d)},bt.style=function(a,b,c){return arguments.length<3&&(c=""),this.styleTween(a,bs(a,b),c)},bt.styleTween=function(a,b,c){return arguments.length<3&&(c=""),this.tween("style."+a,function(d,e){var f=b.call(this,d,e,window.getComputedStyle(this,null).getPropertyValue(a));return f===bq?(this.style.removeProperty(a),null):f&&function(b){this.style.setProperty(a,f(b),c)}})},bt.text=function(a){return this.tween("text",function(b,c){this.textContent=typeof a=="function"?a.call(this,b,c):a})},bt.remove=function(){return this.each("end",function(){var a;!this.__transition__&&(a=this.parentNode)&&a.removeChild(this)})},bt.delay=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].delay=+a.apply(this,arguments)}:(a=+a,function(c,d,e){b[e][d].delay=a}))},bt.duration=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].duration=+a.apply(this,arguments)}:(a=+a,function(c,d,e){b[e][d].duration=a}))},bt.transition=function(){return this.select(i)};var by=null,bz,bA;d3.timer=function(a,b,c){var d=!1,e,f=by;if(arguments.length<3){if(arguments.length<2)b=0;else if(!isFinite(b))return;c=Date.now()}while(f){if(f.callback===a){f.then=c,f.delay=b,d=!0;break}e=f,f=f.next}d||(by={callback:a,then:c,delay:b,next:by}),bz||(bA=clearTimeout(bA),bz=1,bD(bB))},d3.timer.flush=function(){var a,b=Date.now(),c=by;while(c)a=b-c.then,c.delay||(c.flush=c.callback(a)),c=c.next;bC()};var bD=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,17)};d3.transform=function(a){bI.setAttribute("transform",a);var b=bI.transform.baseVal.consolidate();return new bE(b?b.matrix:bJ)},bE.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var bI=document.createElementNS(d3.ns.prefix.svg,"g"),bJ={a:1,b:0,c:0,d:1,e:0,f:0},bK=180/Math.PI;d3.scale={},d3.scale.linear=function(){return bQ([0,1],[0,1],d3.interpolate,!1)},d3.scale.log=function(){return bY(d3.scale.linear(),b$)};var bZ=d3.format(".0e");b$.pow=function(a){return Math.pow(10,a)},b_.pow=function(a){return-Math.pow(10,-a)},d3.scale.pow=function(){return ca(d3.scale.linear(),1)},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return cc([],{t:"range",x:[]})},d3.scale.category10=function(){return d3.scale.ordinal().range(cd)},d3.scale.category20=function(){return d3.scale.ordinal().range(ce)},d3.scale.category20b=function(){return d3.scale.ordinal().range(cf)},d3.scale.category20c=function(){return d3.scale.ordinal().range(cg)};var cd=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],ce=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],cf=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],cg=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"];d3.scale.quantile=function(){return ch([],[])},d3.scale.quantize=function(){return ci(0,1,[0,1])},d3.svg={},d3.svg.arc=function(){function e(){var e=a.apply(this,arguments),f=b.apply(this,arguments),g=c.apply(this,arguments)+cj,h=d.apply(this,arguments)+cj,i=(h<g&&(i=g,g=h,h=i),h-g),j=i<Math.PI?"0":"1",k=Math.cos(g),l=Math.sin(g),m=Math.cos(h),n=Math.sin(h);return i>=ck?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cl,b=cm,c=cn,d=co;return e.innerRadius=function(b){return arguments.length?(a=d3.functor(b),e):a},e.outerRadius=function(a){return arguments.length?(b=d3.functor(a),e):b},e.startAngle=function(a){return arguments.length?(c=d3.functor(a),e):c},e.endAngle=function(a){return arguments.length?(d=d3.functor(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cj;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cj=-Math.PI/2,ck=2*Math.PI-1e-6;d3.svg.line=function(){return cp(Object)};var ct={linear:cu,"step-before":cv,"step-after":cw,basis:cC,"basis-open":cD,"basis-closed":cE,bundle:cF,cardinal:cz,"cardinal-open":cx,"cardinal-closed":cy,monotone:cO},cH=[0,2/3,1/3,0],cI=[0,1/3,2/3,0],cJ=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cp(cP);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cv.reverse=cw,cw.reverse=cv,d3.svg.area=function(){return cQ(Object)},d3.svg.area.radial=function(){var a=cQ(cP);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cj,k=e.call(a,h,g)+cj;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b){return"A"+a+","+a+" 0 0,1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=cT,b=cU,c=cV,d=cn,e=co;return f.radius=function(a){return arguments.length?(c=d3.functor(a),f):c},f.source=function(b){return arguments.length?(a=d3.functor(b),f):a},f.target=function(a){return arguments.length?(b=d3.functor(a),f):b},f.startAngle=function(a){return arguments.length?(d=d3.functor(a),f):d},f.endAngle=function(a){return arguments.length?(e=d3.functor(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=cT,b=cU,c=cY;return d.source=function(b){return arguments.length?(a=d3.functor(b),d):a},d.target=function(a){return arguments.length?(b=d3.functor(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=cY,c=a.projection;return a.projection=function(a){return arguments.length?c(cZ(b=a)):b},a},d3.svg.mouse=function(a){return c_(a,d3.event)};var c$=/WebKit/.test(navigator.userAgent)?-1:0;d3.svg.touches=function(a,b){return arguments.length<2&&(b=d3.event.touches),b?d(b).map(function(b){var c=c_(a,b);return c.identifier=b.identifier,c}):[]},d3.svg.symbol=function(){function c(c,d){return(dc[a.call(this,c,d)]||dc.circle)(b.call(this,c,d))}var a=db,b=da;return c.type=function(b){return arguments.length?(a=d3.functor(b),c):a},c.size=function(a){return arguments.length?(b=d3.functor(a),c):b},c};var dc={circle:function(a){var b=Math.sqrt(a/Math.PI);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+ -b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"},cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*de)),c=b*de;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dd),c=b*dd/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dd),c=b*dd/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}};d3.svg.symbolTypes=d3.keys(dc);var dd=Math.sqrt(3),de=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function j(j){j.each(function(k,l,m){var n=d3.select(this),o=j.delay?function(a){var b=bv;try{return bv=j.id,a.transition().delay(j[m][l].delay).duration(j[m][l].duration).ease(j.ease())}finally{bv=b}}:Object,p=a.ticks?a.ticks.apply(a,g):a.domain(),q=h==null?a.tickFormat?a.tickFormat.apply(a,g):String:h,r=dh(a,p,i),s=n.selectAll(".minor").data(r,String),t=s.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),u=o(s.exit()).style("opacity",1e-6).remove(),v=o(s).style("opacity",1),w=n.selectAll("g").data(p,String),x=w.enter().insert("g","path").style("opacity",1e-6),y=o(w.exit()).style("opacity",1e-6).remove(),z=o(w).style("opacity",1),A,B=bN(a),C=n.selectAll(".domain").data([0]),D=C.enter().append("path").attr("class","domain"),E=o(C),F=a.copy(),G=this.__chart__||F;this.__chart__=F,x.append("line").attr("class","tick"),x.append("text"),z.select("text").text(q);switch(b){case"bottom":A=df,v.attr("x2",0).attr("y2",d),z.select("line").attr("x2",0).attr("y2",c),z.select("text").attr("x",0).attr("y",Math.max(c,0)+f).attr("dy",".71em").attr("text-anchor","middle"),E.attr("d","M"+B[0]+","+e+"V0H"+B[1]+"V"+e);break;case"top":A=df,v.attr("x2",0).attr("y2",-d),z.select("line").attr("x2",0).attr("y2",-c),z.select("text").attr("x",0).attr("y",-(Math.max(c,0)+f)).attr("dy","0em").attr("text-anchor","middle"),E.attr("d","M"+B[0]+","+ -e+"V0H"+B[1]+"V"+ -e);break;case"left":A=dg,v.attr("x2",-d).attr("y2",0),z.select("line").attr("x2",-c).attr("y2",0),z.select("text").attr("x",-(Math.max(c,0)+f)).attr("y",0).attr("dy",".32em").attr("text-anchor","end"),E.attr("d","M"+ -e+","+B[0]+"H0V"+B[1]+"H"+ -e);break;case"right":A=dg,v.attr("x2",d).attr("y2",0),z.select("line").attr("x2",c).attr("y2",0),z.select("text").attr("x",Math.max(c,0)+f).attr("y",0).attr("dy",".32em").attr("text-anchor","start"),E.attr("d","M"+e+","+B[0]+"H0V"+B[1]+"H"+e)}if(a.ticks)x.call(A,G),z.call(A,F),y.call(A,F),t.call(A,G),v.call(A,F),u.call(A,F);else{var H=F.rangeBand()/2,I=function(a){return F(a)+H};x.call(A,I),z.call(A,I)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h,i=0;return j.scale=function(b){return arguments.length?(a=b,j):a},j.orient=function(a){return arguments.length?(b=a,j):b},j.ticks=function(){return arguments.length?(g=arguments,j):g},j.tickFormat=function(a){return arguments.length?(h=a,j):h},j.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,j},j.tickPadding=function(a){return arguments.length?(f=+a,j):f},j.tickSubdivide=function(a){return arguments.length?(i=+a,j):i},j},d3.svg.brush=function(){function e(a){var g=b&&c?["n","e","s","w","nw","ne","se","sw"]:b?["e","w"]:c?["n","s"]:[];a.each(function(){var a=d3.select(this).on("mousedown.brush",f),h=a.selectAll(".background").data([,]),i=a.selectAll(".extent").data([,]),j=a.selectAll(".resize").data(g,String),k;h.enter().append("rect").attr("class","background").style("visibility","hidden").style("pointer-events","all").style("cursor","crosshair"),i.enter().append("rect").attr("class","extent").style("cursor","move"),j.enter().append("rect").attr("class",function(a){return"resize "+a}).attr("width",6).attr("height",6).style("visibility","hidden").style("pointer-events",e.empty()?"none":"all").style("cursor",function(a){return dA[a]}),j.exit().remove(),b&&(k=bN(b),h.attr("x",k[0]).attr("width",k[1]-k[0]),dt(a,d)),c&&(k=bN(c),h.attr("y",k[0]).attr("height",k[1]-k[0]),du(a,d))})}function f(){var a=d3.select(d3.event.target);di=e,dk=this,dn=d,ds=d3.svg.mouse(dk),(dp=a.classed("extent"))?(ds[0]=d[0][0]-ds[0],ds[1]=d[0][1]-ds[1]):a.classed("resize")?(dq=d3.event.target.__data__,ds[0]=d[+/w$/.test(dq)][0],ds[1]=d[+/^n/.test(dq)][1]):d3.event.altKey&&(dr=ds.slice()),dl=!/^(n|s)$/.test(dq)&&b,dm=!/^(e|w)$/.test(dq)&&c,dj=g(this,arguments),dj("brushstart"),dx(),O()}function g(b,c){return function(d){var f=d3.event;try{d3.event={type:d,target:e},a[d].apply(b,c)}finally{d3.event=f}}}var a=d3.dispatch("brushstart","brush","brushend"),b,c,d=[[0,0],[0,0]];return e.x=function(a){return arguments.length?(b=a,e):b},e.y=function(a){return arguments.length?(c=a,e):c},e.extent=function(a){var f,g,h,i,j;return arguments.length?(b&&(f=a[0],g=a[1],c&&(f=f[0],g=g[0]),b.invert&&(f=b(f),g=b(g)),g<f&&(j=f,f=g,g=j),d[0][0]=f,d[1][0]=g),c&&(h=a[0],i=a[1],b&&(h=h[1],i=i[1]),c.invert&&(h=c(h),i=c(i)),i<h&&(j=h,h=i,i=j),d[0][1]=h,d[1][1]=i),e):(b&&(f=d[0][0],g=d[1][0],b.invert&&(f=b.invert(f),g=b.invert(g)),g<f&&(j=f,f=g,g=j)),c&&(h=d[0][1],i=d[1][1],c.invert&&(h=c.invert(h),i=c.invert(i)),i<h&&(j=h,h=i,i=j)),b&&c?[[f,h],[g,i]]:b?[f,g]:c&&[h,i])},e.clear=function(){return d[0][0]=d[0][1]=d[1][0]=d[1][1]=0,e},e.empty=function(){return b&&d[0][0]===d[1][0]||c&&d[0][1]===d[1][1]},d3.select(window).on("mousemove.brush",dx).on("mouseup.brush",dz).on("keydown.brush",dv).on("keyup.brush",dw),d3.rebind(e,a,"on")};var di,dj,dk,dl,dm,dn,dp,dq,dr,ds,dA={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"};d3.behavior={},d3.behavior.drag=function(){function c(){this.on("mousedown.drag",e).on("touchstart.drag",e),d3.select(window).on("mousemove.drag",dK).on("touchmove.drag",dK).on("mouseup.drag",dL,!0).on("touchend.drag",dL,!0).on("click.drag",dM,!0)}function d(){dB=a,dC=d3.event.target,dD=this,dE=arguments,dG=dJ(),b?(dF=b.apply(dD,dE),dF=[dF.x-dG[0],dF.y-dG[1]]):dF=[0,0],dH=0}function e(){d.apply(this,arguments),dI("dragstart")}var a=d3.dispatch("drag","dragstart","dragend"),b=null;return c.origin=function(a){return arguments.length?(b=a,c):b},d3.rebind(c,a,"on")};var dB,dC,dD,dE,dF,dG,dH;d3.behavior.zoom=function(){function d(){this.on("mousedown.zoom",f).on("mousewheel.zoom",g).on("DOMMouseScroll.zoom",g).on("dblclick.zoom",h).on("touchstart.zoom",i),d3.select(window).on("mousemove.zoom",eb).on("mouseup.zoom",ec).on("touchmove.zoom",ea).on("touchend.zoom",d_).on("click.zoom",ed,!0)}function e(){dS=a,dT=c,dU=b.zoom,dV=d3.event.target,dW=this,dX=arguments}function f(){e.apply(this,arguments),dO=dZ(d3.svg.mouse(dW)),dY=0,d3.event.preventDefault(),window.focus()}function g(){e.apply(this,arguments),dP||(dP=dZ(d3.svg.mouse(dW))),ee(d$()+a[2],d3.svg.mouse(dW),dP)}function h(){e.apply(this,arguments);var b=d3.svg.mouse(dW);ee(d3.event.shiftKey?Math.ceil(a[2]-1):Math.floor(a[2]+1),b,dZ(b))}function i(){e.apply(this,arguments);var b=d_(),c,d=Date.now();b.length===1&&d-dR<300&&ee(1+Math.floor(a[2]),c=b[0],dQ[c.identifier]),dR=d}var a=[0,0,0],b=d3.dispatch("zoom"),c=ef;return d.extent=function(a){return arguments.length?(c=a==null?ef:a,d):c},d3.rebind(d,b,"on")};var dN,dO,dP,dQ={},dR=0,dS,dT,dU,dV,dW,dX,dY,ef=[[-Infinity,Infinity],[-Infinity,Infinity],[-Infinity,Infinity]]})(); \ No newline at end of file
diff --git a/media/desc.gif b/media/desc.gif
deleted file mode 100644
index 3b30b3c..0000000
--- a/media/desc.gif
+++ /dev/null
Binary files differ
diff --git a/media/favicon.ico b/media/favicon.ico
deleted file mode 100644
index 55497b8..0000000
--- a/media/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/media/jquery-1.4.4.min.js b/media/jquery-1.4.4.min.js
deleted file mode 100644
index 8f3ca2e..0000000
--- a/media/jquery-1.4.4.min.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.4
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Nov 11 19:04:53 2010 -0500
- */
-(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
-h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
-h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
-"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
-e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
-"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
-a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
-s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
-j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
-toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
--1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
-if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
-if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
-b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
-!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
-l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
-z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
-s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
-s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
-[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
-false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
-k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
-scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
-1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
-"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
-c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
-else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
-a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
-c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
-a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
-colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
-1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
-l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
-"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
-if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
-a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
-attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
-b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
-c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
-arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
-d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
-c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
-w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
-8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
-"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
-d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
-Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
-c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
-var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
-"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
-xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
-B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
-"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
-0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
-a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
-1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
-"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
-c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
-(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
-[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
-break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
-q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
-l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
-return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
-B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
-POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
-i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
-i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
-"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
-m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
-true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
-g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
-0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
-"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
-i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
-if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
-g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
-for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
-i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
-n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
-function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
-p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
-t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition?
-function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML;
-c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},
-not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h=
-h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):
-c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,
-2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,
-b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&
-e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1,
-"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null;
-else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
-c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a,
-b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):
-this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",
-prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument||
-b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length-
-1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));
-d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i,
-jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,
-zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),
-h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b);
-if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=
-d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left;
-e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
-ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b===
-"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
-!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
-getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
-script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
-!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache=
-false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset;
-A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type",
-b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
-c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
-c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]=
-encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",
-[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),
-e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});
-if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",
-3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",
-d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,
-d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)===
-"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L||
-1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
-d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
-Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)}
-var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
-this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
-this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
-c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
-b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
-h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle;
-for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+=
-parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
-height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
-f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
-"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a,
-e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&&
-c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
-c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+
-b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window);
diff --git a/media/jquery.tablesorter.js b/media/jquery.tablesorter.js
deleted file mode 100644
index 331b761..0000000
--- a/media/jquery.tablesorter.js
+++ /dev/null
@@ -1,1031 +0,0 @@
-/*
- *
- * TableSorter 2.0 - Client-side table sorting with ease!
- * Version 2.0.5b
- * @requires jQuery v1.2.3
- *
- * Copyright (c) 2007 Christian Bach
- * Examples and docs at: http://tablesorter.com
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- */
-/**
- *
- * @description Create a sortable table with multi-column sorting capabilitys
- *
- * @example $('table').tablesorter();
- * @desc Create a simple tablesorter interface.
- *
- * @example $('table').tablesorter({ sortList:[[0,0],[1,0]] });
- * @desc Create a tablesorter interface and sort on the first and secound column column headers.
- *
- * @example $('table').tablesorter({ headers: { 0: { sorter: false}, 1: {sorter: false} } });
- *
- * @desc Create a tablesorter interface and disableing the first and second column headers.
- *
- *
- * @example $('table').tablesorter({ headers: { 0: {sorter:"integer"}, 1: {sorter:"currency"} } });
- *
- * @desc Create a tablesorter interface and set a column parser for the first
- * and second column.
- *
- *
- * @param Object
- * settings An object literal containing key/value pairs to provide
- * optional settings.
- *
- *
- * @option String cssHeader (optional) A string of the class name to be appended
- * to sortable tr elements in the thead of the table. Default value:
- * "header"
- *
- * @option String cssAsc (optional) A string of the class name to be appended to
- * sortable tr elements in the thead on a ascending sort. Default value:
- * "headerSortUp"
- *
- * @option String cssDesc (optional) A string of the class name to be appended
- * to sortable tr elements in the thead on a descending sort. Default
- * value: "headerSortDown"
- *
- * @option String sortInitialOrder (optional) A string of the inital sorting
- * order can be asc or desc. Default value: "asc"
- *
- * @option String sortMultisortKey (optional) A string of the multi-column sort
- * key. Default value: "shiftKey"
- *
- * @option String textExtraction (optional) A string of the text-extraction
- * method to use. For complex html structures inside td cell set this
- * option to "complex", on large tables the complex option can be slow.
- * Default value: "simple"
- *
- * @option Object headers (optional) An array containing the forces sorting
- * rules. This option let's you specify a default sorting rule. Default
- * value: null
- *
- * @option Array sortList (optional) An array containing the forces sorting
- * rules. This option let's you specify a default sorting rule. Default
- * value: null
- *
- * @option Array sortForce (optional) An array containing forced sorting rules.
- * This option let's you specify a default sorting rule, which is
- * prepended to user-selected rules. Default value: null
- *
- * @option Boolean sortLocaleCompare (optional) Boolean flag indicating whatever
- * to use String.localeCampare method or not. Default set to true.
- *
- *
- * @option Array sortAppend (optional) An array containing forced sorting rules.
- * This option let's you specify a default sorting rule, which is
- * appended to user-selected rules. Default value: null
- *
- * @option Boolean widthFixed (optional) Boolean flag indicating if tablesorter
- * should apply fixed widths to the table columns. This is usefull when
- * using the pager companion plugin. This options requires the dimension
- * jquery plugin. Default value: false
- *
- * @option Boolean cancelSelection (optional) Boolean flag indicating if
- * tablesorter should cancel selection of the table headers text.
- * Default value: true
- *
- * @option Boolean debug (optional) Boolean flag indicating if tablesorter
- * should display debuging information usefull for development.
- *
- * @type jQuery
- *
- * @name tablesorter
- *
- * @cat Plugins/Tablesorter
- *
- * @author Christian Bach/christian.bach@polyester.se
- */
-
-(function ($) {
- $.extend({
- tablesorter: new
- function () {
-
- var parsers = [],
- widgets = [];
-
- this.defaults = {
- cssHeader: "header",
- cssAsc: "headerSortUp",
- cssDesc: "headerSortDown",
- cssChildRow: "expand-child",
- sortInitialOrder: "asc",
- sortMultiSortKey: "shiftKey",
- sortForce: null,
- sortAppend: null,
- sortLocaleCompare: true,
- textExtraction: "simple",
- parsers: {}, widgets: [],
- widgetZebra: {
- css: ["even", "odd"]
- }, headers: {}, widthFixed: false,
- cancelSelection: true,
- sortList: [],
- headerList: [],
- dateFormat: "us",
- decimal: '/\.|\,/g',
- onRenderHeader: null,
- selectorHeaders: 'thead th',
- debug: false
- };
-
- /* debuging utils */
-
- function benchmark(s, d) {
- log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
- }
-
- this.benchmark = benchmark;
-
- function log(s) {
- if (typeof console != "undefined" && typeof console.debug != "undefined") {
- console.log(s);
- } else {
- alert(s);
- }
- }
-
- /* parsers utils */
-
- function buildParserCache(table, $headers) {
-
- if (table.config.debug) {
- var parsersDebug = "";
- }
-
- if (table.tBodies.length == 0) return; // In the case of empty tables
- var rows = table.tBodies[0].rows;
-
- if (rows[0]) {
-
- var list = [],
- cells = rows[0].cells,
- l = cells.length;
-
- for (var i = 0; i < l; i++) {
-
- var p = false;
-
- if ($.metadata && ($($headers[i]).metadata() && $($headers[i]).metadata().sorter)) {
-
- p = getParserById($($headers[i]).metadata().sorter);
-
- } else if ((table.config.headers[i] && table.config.headers[i].sorter)) {
-
- p = getParserById(table.config.headers[i].sorter);
- }
- if (!p) {
-
- p = detectParserForColumn(table, rows, -1, i);
- }
-
- if (table.config.debug) {
- parsersDebug += "column:" + i + " parser:" + p.id + "\n";
- }
-
- list.push(p);
- }
- }
-
- if (table.config.debug) {
- log(parsersDebug);
- }
-
- return list;
- };
-
- function detectParserForColumn(table, rows, rowIndex, cellIndex) {
- var l = parsers.length,
- node = false,
- nodeValue = false,
- keepLooking = true;
- while (nodeValue == '' && keepLooking) {
- rowIndex++;
- if (rows[rowIndex]) {
- node = getNodeFromRowAndCellIndex(rows, rowIndex, cellIndex);
- nodeValue = trimAndGetNodeText(table.config, node);
- if (table.config.debug) {
- log('Checking if value was empty on row:' + rowIndex);
- }
- } else {
- keepLooking = false;
- }
- }
- for (var i = 1; i < l; i++) {
- if (parsers[i].is(nodeValue, table, node)) {
- return parsers[i];
- }
- }
- // 0 is always the generic parser (text)
- return parsers[0];
- }
-
- function getNodeFromRowAndCellIndex(rows, rowIndex, cellIndex) {
- return rows[rowIndex].cells[cellIndex];
- }
-
- function trimAndGetNodeText(config, node) {
- return $.trim(getElementText(config, node));
- }
-
- function getParserById(name) {
- var l = parsers.length;
- for (var i = 0; i < l; i++) {
- if (parsers[i].id.toLowerCase() == name.toLowerCase()) {
- return parsers[i];
- }
- }
- return false;
- }
-
- /* utils */
-
- function buildCache(table) {
-
- if (table.config.debug) {
- var cacheTime = new Date();
- }
-
- var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length) || 0,
- totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length) || 0,
- parsers = table.config.parsers,
- cache = {
- row: [],
- normalized: []
- };
-
- for (var i = 0; i < totalRows; ++i) {
-
- /** Add the table data to main data array */
- var c = $(table.tBodies[0].rows[i]),
- cols = [];
-
- // if this is a child row, add it to the last row's children and
- // continue to the next row
- if (c.hasClass(table.config.cssChildRow)) {
- cache.row[cache.row.length - 1] = cache.row[cache.row.length - 1].add(c);
- // go to the next for loop
- continue;
- }
-
- cache.row.push(c);
-
- for (var j = 0; j < totalCells; ++j) {
- cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
- }
-
- cols.push(cache.normalized.length); // add position for rowCache
- cache.normalized.push(cols);
- cols = null;
- };
-
- if (table.config.debug) {
- benchmark("Building cache for " + totalRows + " rows:", cacheTime);
- }
-
- return cache;
- };
-
- function getElementText(config, node) {
-
- var text = "";
-
- if (!node) return "";
-
- if (!config.supportsTextContent) config.supportsTextContent = node.textContent || false;
-
- if (config.textExtraction == "simple") {
- if (config.supportsTextContent) {
- text = node.textContent;
- } else {
- if (node.childNodes[0] && node.childNodes[0].hasChildNodes()) {
- text = node.childNodes[0].innerHTML;
- } else {
- text = node.innerHTML;
- }
- }
- } else {
- if (typeof(config.textExtraction) == "function") {
- text = config.textExtraction(node);
- } else {
- text = $(node).text();
- }
- }
- return text;
- }
-
- function appendToTable(table, cache) {
-
- if (table.config.debug) {
- var appendTime = new Date()
- }
-
- var c = cache,
- r = c.row,
- n = c.normalized,
- totalRows = n.length,
- checkCell = (n[0].length - 1),
- tableBody = $(table.tBodies[0]),
- rows = [];
-
-
- for (var i = 0; i < totalRows; i++) {
- var pos = n[i][checkCell];
-
- rows.push(r[pos]);
-
- if (!table.config.appender) {
-
- //var o = ;
- var l = r[pos].length;
- for (var j = 0; j < l; j++) {
- tableBody[0].appendChild(r[pos][j]);
- }
-
- //
- }
- }
-
-
-
- if (table.config.appender) {
-
- table.config.appender(table, rows);
- }
-
- rows = null;
-
- if (table.config.debug) {
- benchmark("Rebuilt table:", appendTime);
- }
-
- // apply table widgets
- applyWidget(table);
-
- // trigger sortend
- setTimeout(function () {
- $(table).trigger("sortEnd");
- }, 0);
-
- };
-
- function buildHeaders(table) {
-
- if (table.config.debug) {
- var time = new Date();
- }
-
- var meta = ($.metadata) ? true : false;
-
- var header_index = computeTableHeaderCellIndexes(table);
-
- $tableHeaders = $(table.config.selectorHeaders, table).each(function (index) {
-
- this.column = header_index[this.parentNode.rowIndex + "-" + this.cellIndex];
- // this.column = index;
- this.order = formatSortingOrder(table.config.sortInitialOrder);
-
-
- this.count = this.order;
-
- if (checkHeaderMetadata(this) || checkHeaderOptions(table, index)) this.sortDisabled = true;
- if (checkHeaderOptionsSortingLocked(table, index)) this.order = this.lockedOrder = checkHeaderOptionsSortingLocked(table, index);
-
- if (!this.sortDisabled) {
- var $th = $(this).addClass(table.config.cssHeader);
- if (table.config.onRenderHeader) table.config.onRenderHeader.apply($th);
- }
-
- // add cell to headerList
- table.config.headerList[index] = this;
- });
-
- if (table.config.debug) {
- benchmark("Built headers:", time);
- log($tableHeaders);
- }
-
- return $tableHeaders;
-
- };
-
- // from:
- // http://www.javascripttoolbox.com/lib/table/examples.php
- // http://www.javascripttoolbox.com/temp/table_cellindex.html
-
-
- function computeTableHeaderCellIndexes(t) {
- var matrix = [];
- var lookup = {};
- var thead = t.getElementsByTagName('THEAD')[0];
- var trs = thead.getElementsByTagName('TR');
-
- for (var i = 0; i < trs.length; i++) {
- var cells = trs[i].cells;
- for (var j = 0; j < cells.length; j++) {
- var c = cells[j];
-
- var rowIndex = c.parentNode.rowIndex;
- var cellId = rowIndex + "-" + c.cellIndex;
- var rowSpan = c.rowSpan || 1;
- var colSpan = c.colSpan || 1
- var firstAvailCol;
- if (typeof(matrix[rowIndex]) == "undefined") {
- matrix[rowIndex] = [];
- }
- // Find first available column in the first row
- for (var k = 0; k < matrix[rowIndex].length + 1; k++) {
- if (typeof(matrix[rowIndex][k]) == "undefined") {
- firstAvailCol = k;
- break;
- }
- }
- lookup[cellId] = firstAvailCol;
- for (var k = rowIndex; k < rowIndex + rowSpan; k++) {
- if (typeof(matrix[k]) == "undefined") {
- matrix[k] = [];
- }
- var matrixrow = matrix[k];
- for (var l = firstAvailCol; l < firstAvailCol + colSpan; l++) {
- matrixrow[l] = "x";
- }
- }
- }
- }
- return lookup;
- }
-
- function checkCellColSpan(table, rows, row) {
- var arr = [],
- r = table.tHead.rows,
- c = r[row].cells;
-
- for (var i = 0; i < c.length; i++) {
- var cell = c[i];
-
- if (cell.colSpan > 1) {
- arr = arr.concat(checkCellColSpan(table, headerArr, row++));
- } else {
- if (table.tHead.length == 1 || (cell.rowSpan > 1 || !r[row + 1])) {
- arr.push(cell);
- }
- // headerArr[row] = (i+row);
- }
- }
- return arr;
- };
-
- function checkHeaderMetadata(cell) {
- if (($.metadata) && ($(cell).metadata().sorter === false)) {
- return true;
- };
- return false;
- }
-
- function checkHeaderOptions(table, i) {
- if ((table.config.headers[i]) && (table.config.headers[i].sorter === false)) {
- return true;
- };
- return false;
- }
-
- function checkHeaderOptionsSortingLocked(table, i) {
- if ((table.config.headers[i]) && (table.config.headers[i].lockedOrder)) return table.config.headers[i].lockedOrder;
- return false;
- }
-
- function applyWidget(table) {
- var c = table.config.widgets;
- var l = c.length;
- for (var i = 0; i < l; i++) {
-
- getWidgetById(c[i]).format(table);
- }
-
- }
-
- function getWidgetById(name) {
- var l = widgets.length;
- for (var i = 0; i < l; i++) {
- if (widgets[i].id.toLowerCase() == name.toLowerCase()) {
- return widgets[i];
- }
- }
- };
-
- function formatSortingOrder(v) {
- if (typeof(v) != "Number") {
- return (v.toLowerCase() == "desc") ? 1 : 0;
- } else {
- return (v == 1) ? 1 : 0;
- }
- }
-
- function isValueInArray(v, a) {
- var l = a.length;
- for (var i = 0; i < l; i++) {
- if (a[i][0] == v) {
- return true;
- }
- }
- return false;
- }
-
- function setHeadersCss(table, $headers, list, css) {
- // remove all header information
- $headers.removeClass(css[0]).removeClass(css[1]);
-
- var h = [];
- $headers.each(function (offset) {
- if (!this.sortDisabled) {
- h[this.column] = $(this);
- }
- });
-
- var l = list.length;
- for (var i = 0; i < l; i++) {
- h[list[i][0]].addClass(css[list[i][1]]);
- }
- }
-
- function fixColumnWidth(table, $headers) {
- var c = table.config;
- if (c.widthFixed) {
- var colgroup = $('<colgroup>');
- $("tr:first td", table.tBodies[0]).each(function () {
- colgroup.append($('<col>').css('width', $(this).width()));
- });
- $(table).prepend(colgroup);
- };
- }
-
- function updateHeaderSortCount(table, sortList) {
- var c = table.config,
- l = sortList.length;
- for (var i = 0; i < l; i++) {
- var s = sortList[i],
- o = c.headerList[s[0]];
- o.count = s[1];
- o.count++;
- }
- }
-
- /* sorting methods */
-
- function multisort(table, sortList, cache) {
-
- if (table.config.debug) {
- var sortTime = new Date();
- }
-
- var dynamicExp = "var sortWrapper = function(a,b) {",
- l = sortList.length;
-
- // TODO: inline functions.
- for (var i = 0; i < l; i++) {
-
- var c = sortList[i][0];
- var order = sortList[i][1];
- // var s = (getCachedSortType(table.config.parsers,c) == "text") ?
- // ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ?
- // "sortNumeric" : "sortNumericDesc");
- // var s = (table.config.parsers[c].type == "text") ? ((order == 0)
- // ? makeSortText(c) : makeSortTextDesc(c)) : ((order == 0) ?
- // makeSortNumeric(c) : makeSortNumericDesc(c));
- var s = (table.config.parsers[c].type == "text") ? ((order == 0) ? makeSortFunction("text", "asc", c) : makeSortFunction("text", "desc", c)) : ((order == 0) ? makeSortFunction("numeric", "asc", c) : makeSortFunction("numeric", "desc", c));
- var e = "e" + i;
-
- dynamicExp += "var " + e + " = " + s; // + "(a[" + c + "],b[" + c
- // + "]); ";
- dynamicExp += "if(" + e + ") { return " + e + "; } ";
- dynamicExp += "else { ";
-
- }
-
- // if value is the same keep orignal order
- var orgOrderCol = cache.normalized[0].length - 1;
- dynamicExp += "return a[" + orgOrderCol + "]-b[" + orgOrderCol + "];";
-
- for (var i = 0; i < l; i++) {
- dynamicExp += "}; ";
- }
-
- dynamicExp += "return 0; ";
- dynamicExp += "}; ";
-
- if (table.config.debug) {
- benchmark("Evaling expression:" + dynamicExp, new Date());
- }
-
- eval(dynamicExp);
-
- cache.normalized.sort(sortWrapper);
-
- if (table.config.debug) {
- benchmark("Sorting on " + sortList.toString() + " and dir " + order + " time:", sortTime);
- }
-
- return cache;
- };
-
- function makeSortFunction(type, direction, index) {
- var a = "a[" + index + "]",
- b = "b[" + index + "]";
- if (type == 'text' && direction == 'asc') {
- return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + a + " < " + b + ") ? -1 : 1 )));";
- } else if (type == 'text' && direction == 'desc') {
- return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + b + " < " + a + ") ? -1 : 1 )));";
- } else if (type == 'numeric' && direction == 'asc') {
- return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + a + " - " + b + "));";
- } else if (type == 'numeric' && direction == 'desc') {
- return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + b + " - " + a + "));";
- }
- };
-
- function makeSortText(i) {
- return "((a[" + i + "] < b[" + i + "]) ? -1 : ((a[" + i + "] > b[" + i + "]) ? 1 : 0));";
- };
-
- function makeSortTextDesc(i) {
- return "((b[" + i + "] < a[" + i + "]) ? -1 : ((b[" + i + "] > a[" + i + "]) ? 1 : 0));";
- };
-
- function makeSortNumeric(i) {
- return "a[" + i + "]-b[" + i + "];";
- };
-
- function makeSortNumericDesc(i) {
- return "b[" + i + "]-a[" + i + "];";
- };
-
- function sortText(a, b) {
- if (table.config.sortLocaleCompare) return a.localeCompare(b);
- return ((a < b) ? -1 : ((a > b) ? 1 : 0));
- };
-
- function sortTextDesc(a, b) {
- if (table.config.sortLocaleCompare) return b.localeCompare(a);
- return ((b < a) ? -1 : ((b > a) ? 1 : 0));
- };
-
- function sortNumeric(a, b) {
- return a - b;
- };
-
- function sortNumericDesc(a, b) {
- return b - a;
- };
-
- function getCachedSortType(parsers, i) {
- return parsers[i].type;
- }; /* public methods */
- this.construct = function (settings) {
- return this.each(function () {
- // if no thead or tbody quit.
- if (!this.tHead || !this.tBodies) return;
- // declare
- var $this, $document, $headers, cache, config, shiftDown = 0,
- sortOrder;
- // new blank config object
- this.config = {};
- // merge and extend.
- config = $.extend(this.config, $.tablesorter.defaults, settings);
- // store common expression for speed
- $this = $(this);
- // save the settings where they read
- $.data(this, "tablesorter", config);
- // build headers
- $headers = buildHeaders(this);
- // try to auto detect column type, and store in tables config
- this.config.parsers = buildParserCache(this, $headers);
- // build the cache for the tbody cells
- cache = buildCache(this);
- // get the css class names, could be done else where.
- var sortCSS = [config.cssDesc, config.cssAsc];
- // fixate columns if the users supplies the fixedWidth option
- fixColumnWidth(this);
- // apply event handling to headers
- // this is to big, perhaps break it out?
- $headers.click(
-
- function (e) {
- var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length) || 0;
- if (!this.sortDisabled && totalRows > 0) {
- // Only call sortStart if sorting is
- // enabled.
- $this.trigger("sortStart");
- // store exp, for speed
- var $cell = $(this);
- // get current column index
- var i = this.column;
- // get current column sort order
- this.order = this.count++ % 2;
- // always sort on the locked order.
- if(this.lockedOrder) this.order = this.lockedOrder;
-
- // user only whants to sort on one
- // column
- if (!e[config.sortMultiSortKey]) {
- // flush the sort list
- config.sortList = [];
- if (config.sortForce != null) {
- var a = config.sortForce;
- for (var j = 0; j < a.length; j++) {
- if (a[j][0] != i) {
- config.sortList.push(a[j]);
- }
- }
- }
- // add column to sort list
- config.sortList.push([i, this.order]);
- // multi column sorting
- } else {
- // the user has clicked on an all
- // ready sortet column.
- if (isValueInArray(i, config.sortList)) {
- // revers the sorting direction
- // for all tables.
- for (var j = 0; j < config.sortList.length; j++) {
- var s = config.sortList[j],
- o = config.headerList[s[0]];
- if (s[0] == i) {
- o.count = s[1];
- o.count++;
- s[1] = o.count % 2;
- }
- }
- } else {
- // add column to sort list array
- config.sortList.push([i, this.order]);
- }
- };
- setTimeout(function () {
- // set css for headers
- setHeadersCss($this[0], $headers, config.sortList, sortCSS);
- appendToTable(
- $this[0], multisort(
- $this[0], config.sortList, cache)
- );
- }, 1);
- // stop normal event by returning false
- return false;
- }
- // cancel selection
- }).mousedown(function () {
- if (config.cancelSelection) {
- this.onselectstart = function () {
- return false
- };
- return false;
- }
- });
- // apply easy methods that trigger binded events
- $this.bind("update", function () {
- var me = this;
- setTimeout(function () {
- // rebuild parsers.
- me.config.parsers = buildParserCache(
- me, $headers);
- // rebuild the cache map
- cache = buildCache(me);
- }, 1);
- }).bind("updateCell", function (e, cell) {
- var config = this.config;
- // get position from the dom.
- var pos = [(cell.parentNode.rowIndex - 1), cell.cellIndex];
- // update cache
- cache.normalized[pos[0]][pos[1]] = config.parsers[pos[1]].format(
- getElementText(config, cell), cell);
- }).bind("sorton", function (e, list) {
- $(this).trigger("sortStart");
- config.sortList = list;
- // update and store the sortlist
- var sortList = config.sortList;
- // update header count index
- updateHeaderSortCount(this, sortList);
- // set css for headers
- setHeadersCss(this, $headers, sortList, sortCSS);
- // sort the table and append it to the dom
- appendToTable(this, multisort(this, sortList, cache));
- }).bind("appendCache", function () {
- appendToTable(this, cache);
- }).bind("applyWidgetId", function (e, id) {
- getWidgetById(id).format(this);
- }).bind("applyWidgets", function () {
- // apply widgets
- applyWidget(this);
- });
- if ($.metadata && ($(this).metadata() && $(this).metadata().sortlist)) {
- config.sortList = $(this).metadata().sortlist;
- }
- // if user has supplied a sort list to constructor.
- if (config.sortList.length > 0) {
- $this.trigger("sorton", [config.sortList]);
- }
- // apply widgets
- applyWidget(this);
- });
- };
- this.addParser = function (parser) {
- var l = parsers.length,
- a = true;
- for (var i = 0; i < l; i++) {
- if (parsers[i].id.toLowerCase() == parser.id.toLowerCase()) {
- a = false;
- }
- }
- if (a) {
- parsers.push(parser);
- };
- };
- this.addWidget = function (widget) {
- widgets.push(widget);
- };
- this.formatFloat = function (s) {
- var i = parseFloat(s);
- return (isNaN(i)) ? 0 : i;
- };
- this.formatInt = function (s) {
- var i = parseInt(s);
- return (isNaN(i)) ? 0 : i;
- };
- this.isDigit = function (s, config) {
- // replace all an wanted chars and match.
- return /^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g, '')));
- };
- this.clearTableBody = function (table) {
- if ($.browser.msie) {
- function empty() {
- while (this.firstChild)
- this.removeChild(this.firstChild);
- }
- empty.apply(table.tBodies[0]);
- } else {
- table.tBodies[0].innerHTML = "";
- }
- };
- }
- });
-
- // extend plugin scope
- $.fn.extend({
- tablesorter: $.tablesorter.construct
- });
-
- // make shortcut
- var ts = $.tablesorter;
-
- // add default parsers
- ts.addParser({
- id: "text",
- is: function (s) {
- return true;
- }, format: function (s) {
- return $.trim(s.toLocaleLowerCase());
- }, type: "text"
- });
-
- ts.addParser({
- id: "digit",
- is: function (s, table) {
- var c = table.config;
- return $.tablesorter.isDigit(s, c);
- }, format: function (s) {
- return $.tablesorter.formatFloat(s);
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "currency",
- is: function (s) {
- return /^[£$€?.]/.test(s);
- }, format: function (s) {
- return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g), ""));
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "ipAddress",
- is: function (s) {
- return /^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);
- }, format: function (s) {
- var a = s.split("."),
- r = "",
- l = a.length;
- for (var i = 0; i < l; i++) {
- var item = a[i];
- if (item.length == 2) {
- r += "0" + item;
- } else {
- r += item;
- }
- }
- return $.tablesorter.formatFloat(r);
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "url",
- is: function (s) {
- return /^(https?|ftp|file):\/\/$/.test(s);
- }, format: function (s) {
- return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//), ''));
- }, type: "text"
- });
-
- ts.addParser({
- id: "isoDate",
- is: function (s) {
- return /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);
- }, format: function (s) {
- return $.tablesorter.formatFloat((s != "") ? new Date(s.replace(
- new RegExp(/-/g), "/")).getTime() : "0");
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "percent",
- is: function (s) {
- return /\%$/.test($.trim(s));
- }, format: function (s) {
- return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g), ""));
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "usLongDate",
- is: function (s) {
- return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
- }, format: function (s) {
- return $.tablesorter.formatFloat(new Date(s).getTime());
- }, type: "numeric"
- });
-
- ts.addParser({
- id: "shortDate",
- is: function (s) {
- return /^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$/.test(s);
- }, format: function (s, table) {
- var c = table.config;
- s = s.replace(/\-/g, "/");
- if (c.dateFormat == "us") {
- // reformat the string in ISO format
- s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
- } else if (c.dateFormat == "uk") {
- // reformat the string in ISO format
- s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
- } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
- s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
- }
- return $.tablesorter.formatFloat(new Date(s).getTime());
- }, type: "numeric"
- });
- ts.addParser({
- id: "time",
- is: function (s) {
- return /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);
- }, format: function (s) {
- return $.tablesorter.formatFloat(new Date("2000/01/01 " + s).getTime());
- }, type: "numeric"
- });
- ts.addParser({
- id: "metadata",
- is: function (s) {
- return false;
- }, format: function (s, table, cell) {
- var c = table.config,
- p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
- return $(cell).metadata()[p];
- }, type: "numeric"
- });
- // add default widgets
- ts.addWidget({
- id: "zebra",
- format: function (table) {
- if (table.config.debug) {
- var time = new Date();
- }
- var $tr, row = -1,
- odd;
- // loop through the visible rows
- $("tr:visible", table.tBodies[0]).each(function (i) {
- $tr = $(this);
- // style children rows the same way the parent
- // row was styled
- if (!$tr.hasClass(table.config.cssChildRow)) row++;
- odd = (row % 2 == 0);
- $tr.removeClass(
- table.config.widgetZebra.css[odd ? 0 : 1]).addClass(
- table.config.widgetZebra.css[odd ? 1 : 0])
- });
- if (table.config.debug) {
- $.tablesorter.benchmark("Applying Zebra widget", time);
- }
- }
- });
-})(jQuery);
diff --git a/media/jquery.tablesorter.min.js b/media/jquery.tablesorter.min.js
deleted file mode 100644
index ffe991f..0000000
--- a/media/jquery.tablesorter.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-(function($){$.extend({tablesorter:new
-function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1
-var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
diff --git a/media/logos/apple-touch-icon-114x114.png b/media/logos/apple-touch-icon-114x114.png
deleted file mode 100644
index e6365ee..0000000
--- a/media/logos/apple-touch-icon-114x114.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/apple-touch-icon-57x57.png b/media/logos/apple-touch-icon-57x57.png
deleted file mode 100644
index d2d7826..0000000
--- a/media/logos/apple-touch-icon-57x57.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/apple-touch-icon-72x72.png b/media/logos/apple-touch-icon-72x72.png
deleted file mode 100644
index 170656e..0000000
--- a/media/logos/apple-touch-icon-72x72.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-black-1200dpi.png b/media/logos/archlinux-logo-black-1200dpi.png
deleted file mode 100644
index a3082c3..0000000
--- a/media/logos/archlinux-logo-black-1200dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-black-90dpi.png b/media/logos/archlinux-logo-black-90dpi.png
deleted file mode 100644
index 6948b79..0000000
--- a/media/logos/archlinux-logo-black-90dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-black-scalable.svg b/media/logos/archlinux-logo-black-scalable.svg
deleted file mode 100644
index 10d6c4a..0000000
--- a/media/logos/archlinux-logo-black-scalable.svg
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.0"
- width="600"
- height="199.41692"
- id="svg2424">
- <defs
- id="defs2426">
- <linearGradient
- x1="112.49854"
- y1="6.1372099"
- x2="112.49853"
- y2="129.3468"
- id="path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(287,-83)">
- <stop
- id="stop193"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="0" />
- <stop
- id="stop195"
- style="stop-color:#ffffff;stop-opacity:0.27450982"
- offset="1" />
- <midPointStop
- offset="0"
- style="stop-color:#FFFFFF"
- id="midPointStop197" />
- <midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF"
- id="midPointStop199" />
- <midPointStop
- offset="1"
- style="stop-color:#000000"
- id="midPointStop201" />
- </linearGradient>
- <linearGradient
- x1="541.33502"
- y1="104.50665"
- x2="606.91248"
- y2="303.14029"
- id="linearGradient2544"
- xlink:href="#path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.3937741,0,0,0.393752,357.51969,122.00151)" />
- <linearGradient
- id="linearGradient3388">
- <stop
- id="stop3390"
- style="stop-color:#000000;stop-opacity:0"
- offset="0" />
- <stop
- id="stop3392"
- style="stop-color:#000000;stop-opacity:0.37113401"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="490.72305"
- y1="237.72447"
- x2="490.72305"
- y2="183.9644"
- id="linearGradient4416"
- xlink:href="#linearGradient3388"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.749107,0,0,0.749107,-35.459862,91.44108)" />
- </defs>
- <g
- transform="translate(-34.777313,-129.80241)"
- id="layer1">
- <g
- transform="matrix(0.8746356,0,0,0.8746356,14.730518,23.408954)"
- id="g2424"
- style="fill:#000000">
- <g
- transform="matrix(0.6378586,0,0,0.6378586,36.486487,2.17139)"
- id="g2809"
- style="fill:#000000;fill-opacity:1">
- <path
- d="m 339.96875,309.09375 c -14.47141,-0.0239 -26.4812,2.94367 -31.125,4.5625 l -4.78125,25.8125 c -0.0116,0.0951 23.79543,-6.34855 34.28125,-5.96875 17.36158,0.62381 18.95948,6.63541 18.65625,14.75 0.29595,0.47462 -4.47933,-7.33192 -19.5,-7.59375 -18.94961,-0.32687 -45.69284,6.70947 -45.65625,35.3125 -0.51086,32.17412 24.03361,41.63882 40.75,41.8125 15.02821,-0.27364 22.0777,-5.69136 25.9375,-8.59375 5.07124,-5.30236 10.87308,-10.63447 16.40625,-17.03125 -5.23567,9.51278 -9.77472,16.0898 -14.5,21.125 l 0,4.25 22.84375,-3.84375 0.15625,-62.09375 c -0.23141,-8.78839 5.04123,-42.41827 -43.46875,-42.5 z m -3.28125,54.0625 c 9.46889,0.12995 20.32788,4.79708 20.34375,16.03125 0.049,10.21821 -12.80005,15.71183 -21.15625,15.625 -8.35976,-0.0868 -19.45093,-6.56982 -19.5,-16.53125 0.16016,-8.90444 10.45953,-15.35418 20.3125,-15.125 z"
- id="path2284"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 398.50106,314.83145 -0.15505,102.82693 26.61213,-5.12724 0.0449,-58.30157 c 0.006,-8.68089 12.40554,-18.82451 27.9627,-18.66287 3.30202,-5.97408 9.5087,-21.24219 11.02088,-24.71514 -34.75649,-0.0833 -35.19897,9.98993 -41.24398,14.94517 -0.0631,-9.45285 -0.0213,-15.12741 -0.0213,-15.12741 l -24.2202,4.16213 z"
- id="path2286"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 548.2688,328.33058 c -0.25696,-0.12068 -13.87938,-15.93419 -41.26638,-16.0589 -25.65249,-0.42638 -54.42578,9.51895 -54.88631,52.5328 0.22457,37.81852 27.6402,52.59809 55.0314,52.88627 29.31292,0.30451 40.97654,-18.32947 41.67615,-18.79124 -3.49762,-3.0321 -16.59792,-16.0131 -16.59792,-16.0131 0,0 -8.18236,11.65102 -24.05802,11.79913 -15.87942,0.1512 -29.68245,-12.27325 -29.87805,-29.60905 -0.20349,-17.33595 12.68881,-26.72821 29.99725,-27.48687 14.98466,-0.003 23.6297,9.67334 23.6297,9.67334 l 16.35218,-18.93238 z"
- id="path2288"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 581.8125,278.84375 -25.125,5.90625 0.1875,133.9375 24.75,-4.46875 0.28125,-63.03125 c 0.0529,-6.60927 9.56127,-16.75916 25.4375,-16.4375 15.17973,0.15775 18.57236,10.11767 18.53125,11.375 l 0.4375,72.96875 24.40625,-4.3125 0.0937,-77.375 c 0.1607,-7.44539 -16.30833,-23.16954 -42.78125,-23.28125 -12.58087,0.0202 -19.54815,2.86825 -23.09375,4.96875 -6.06656,4.68565 -12.9998,9.17543 -19.8125,14.90625 6.29809,-8.09099 11.58551,-13.68516 16.75,-17.84375 l -0.0625,-37.3125 z"
- id="path2290"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <g
- transform="matrix(0.9443373,0,0.01336345,0.9443373,78.345657,-412.48879)"
- id="g5326"
- style="fill:#000000;fill-opacity:1;stroke:none">
- <path
- d="m 400.67581,629.79609 7.68167,-1.91575 -0.92851,91.20792 -7.79574,1.32426 1.04258,-90.61643 z"
- id="path2292"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 421.10266,657.01757 6.75064,-2.9867 -0.86808,65.39931 -6.49779,1.33915 0.61523,-63.75176 z m -1.26059,-23.58316 5.47167,-4.41533 4.42261,4.99952 -5.47558,4.53221 -4.4187,-5.1164 z"
- id="path2294"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 440.44273,655.82614 7.67755,-1.56201 -0.1573,13.6722 c -0.007,0.58717 4.4194,-15.27364 24.68502,-14.92094 19.67986,0.10952 22.68401,15.34634 22.5291,18.76237 l -0.43759,48.0783 -6.73044,1.45631 0.63316,-47.489 c 0.0974,-1.38684 -2.88144,-13.11441 -16.78906,-13.15754 -13.90509,-0.0404 -23.68364,10.10048 -23.75821,16.57937 l -0.48127,41.83477 -7.80388,2.0313 0.63292,-65.28513 z"
- id="path2296"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 561.53301,720.20203 -7.6776,1.56186 0.15737,-13.67198 c 0.007,-0.58742 -4.42201,15.27361 -24.68504,14.92086 -19.67983,-0.10944 -22.68399,-15.34626 -22.52908,-18.76229 l 0.43757,-48.07861 8.15674,-1.64226 -0.54644,47.48988 c -0.0149,1.29682 1.36845,13.29979 15.27604,13.3426 13.90511,0.0405 23.76622,-8.37359 24.01453,-21.04416 l 0.43105,-37.46902 7.5978,-1.93195 -0.63294,65.28507 z"
- id="path2298"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 577.45461,655.28678 -5.42715,4.20017 20.19894,26.93328 -22.39092,31.11622 5.63499,4.226 21.04365,-28.8967 20.8779,29.58159 5.32727,-4.20103 -22.37578,-31.62866 18.56963,-25.5775 -5.53193,-4.73429 -16.92109,23.66778 -19.00551,-24.68686 z"
- id="path2300"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <path
- d="m 105.8125,16.625 c -7.39687,18.135158 -11.858304,29.997682 -20.09375,47.59375 5.04936,5.35232 11.247211,11.585364 21.3125,18.625 C 96.210077,78.390904 88.828713,73.920352 83.3125,69.28125 72.7727,91.274163 56.259864,122.60209 22.75,182.8125 49.087628,167.60733 69.504089,158.23318 88.53125,154.65625 87.714216,151.1422 87.2497,147.34107 87.28125,143.375 l 0.03125,-0.84375 c 0.417917,-16.87382 9.195665,-29.84979 19.59375,-28.96875 10.39809,0.88104 18.48041,15.28242 18.0625,32.15625 -0.0786,3.17512 -0.43674,6.22955 -1.0625,9.0625 18.82058,3.68164 39.01873,13.03179 65,28.03125 -5.123,-9.4318 -9.69572,-17.93388 -14.0625,-26.03125 -6.87839,-5.33121 -14.05289,-12.2698 -28.6875,-19.78125 10.05899,2.61375 17.2611,5.62932 22.875,9 C 124.63297,63.338161 121.03766,52.354109 105.8125,16.625 z"
- transform="matrix(1.1433333,0,0,1.1433333,22.920168,121.64318)"
- id="path2518"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- id="text2634"
- style="font-size:8.44138241px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 685.46692,263.83624 0,-5.32944 -1.99082,0 0,-0.71307 4.7895,0 0,0.71307 -1.99906,0 0,5.32944 -0.79962,0"
- id="path4714" />
- <path
- d="m 689.0982,263.83624 0,-6.04251 1.20355,0 1.43026,4.2784 c 0.13189,0.39843 0.22806,0.69658 0.28852,0.89442 0.0687,-0.21983 0.17586,-0.5427 0.3215,-0.96862 l 1.44674,-4.2042 1.07578,0 0,6.04251 -0.77077,0 0,-5.05741 -1.75587,5.05741 -0.72131,0 -1.74763,-5.14396 0,5.14396 -0.77077,0"
- id="path4716" />
- </g>
- <g
- id="text2638"
- style="font-size:8.25130367px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 239.84053,313.69965 0,-5.20945 -1.94598,0 0,-0.697 4.68164,0 0,0.697 -1.95404,0 0,5.20945 -0.78162,0"
- id="path4719" />
- <path
- d="m 243.39004,313.69965 0,-5.90645 1.17646,0 1.39805,4.18205 c 0.12892,0.38947 0.22293,0.6809 0.28202,0.87429 0.0671,-0.21488 0.1719,-0.53048 0.31426,-0.94681 l 1.41417,-4.10953 1.05155,0 0,5.90645 -0.75341,0 0,-4.94353 -1.71634,4.94353 -0.70506,0 -1.70828,-5.02814 0,5.02814 -0.75342,0"
- id="path4721" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/media/logos/archlinux-logo-dark-1200dpi.png b/media/logos/archlinux-logo-dark-1200dpi.png
deleted file mode 100644
index 24a5cef..0000000
--- a/media/logos/archlinux-logo-dark-1200dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-dark-90dpi.png b/media/logos/archlinux-logo-dark-90dpi.png
deleted file mode 100644
index f3757c6..0000000
--- a/media/logos/archlinux-logo-dark-90dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-dark-scalable.svg b/media/logos/archlinux-logo-dark-scalable.svg
deleted file mode 100644
index 5a80cc4..0000000
--- a/media/logos/archlinux-logo-dark-scalable.svg
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.0"
- width="600"
- height="199.41692"
- id="svg2424">
- <defs
- id="defs2426">
- <linearGradient
- x1="112.49854"
- y1="6.1372099"
- x2="112.49853"
- y2="129.3468"
- id="path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(287,-83)">
- <stop
- id="stop193"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="0" />
- <stop
- id="stop195"
- style="stop-color:#ffffff;stop-opacity:0.27450982"
- offset="1" />
- <midPointStop
- offset="0"
- style="stop-color:#FFFFFF"
- id="midPointStop197" />
- <midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF"
- id="midPointStop199" />
- <midPointStop
- offset="1"
- style="stop-color:#000000"
- id="midPointStop201" />
- </linearGradient>
- <linearGradient
- x1="541.33502"
- y1="104.50665"
- x2="606.91248"
- y2="303.14029"
- id="linearGradient2544"
- xlink:href="#path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.3937741,0,0,0.393752,357.51969,122.00151)" />
- <linearGradient
- id="linearGradient3388">
- <stop
- id="stop3390"
- style="stop-color:#000000;stop-opacity:0"
- offset="0" />
- <stop
- id="stop3392"
- style="stop-color:#000000;stop-opacity:0.37113401"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="490.72305"
- y1="237.72447"
- x2="490.72305"
- y2="183.9644"
- id="linearGradient4416"
- xlink:href="#linearGradient3388"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.749107,0,0,0.749107,-35.459862,91.44108)" />
- </defs>
- <g
- transform="translate(-34.777313,-129.80241)"
- id="layer1">
- <g
- transform="matrix(0.8746356,0,0,0.8746356,14.730518,23.408954)"
- id="g2424">
- <g
- transform="matrix(0.6378586,0,0,0.6378586,36.486487,2.17139)"
- id="g2809"
- style="fill:#4d4d4d;fill-opacity:1">
- <path
- d="m 339.96875,309.09375 c -14.47141,-0.0239 -26.4812,2.94367 -31.125,4.5625 l -4.78125,25.8125 c -0.0116,0.0951 23.79543,-6.34855 34.28125,-5.96875 17.36158,0.62381 18.95948,6.63541 18.65625,14.75 0.29595,0.47462 -4.47933,-7.33192 -19.5,-7.59375 -18.94961,-0.32687 -45.69284,6.70947 -45.65625,35.3125 -0.51086,32.17412 24.03361,41.63882 40.75,41.8125 15.02821,-0.27364 22.0777,-5.69136 25.9375,-8.59375 5.07124,-5.30236 10.87308,-10.63447 16.40625,-17.03125 -5.23567,9.51278 -9.77472,16.0898 -14.5,21.125 l 0,4.25 22.84375,-3.84375 0.15625,-62.09375 c -0.23141,-8.78839 5.04123,-42.41827 -43.46875,-42.5 z m -3.28125,54.0625 c 9.46889,0.12995 20.32788,4.79708 20.34375,16.03125 0.049,10.21821 -12.80005,15.71183 -21.15625,15.625 -8.35976,-0.0868 -19.45093,-6.56982 -19.5,-16.53125 0.16016,-8.90444 10.45953,-15.35418 20.3125,-15.125 z"
- id="path2284"
- style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 398.50106,314.83145 -0.15505,102.82693 26.61213,-5.12724 0.0449,-58.30157 c 0.006,-8.68089 12.40554,-18.82451 27.9627,-18.66287 3.30202,-5.97408 9.5087,-21.24219 11.02088,-24.71514 -34.75649,-0.0833 -35.19897,9.98993 -41.24398,14.94517 -0.0631,-9.45285 -0.0213,-15.12741 -0.0213,-15.12741 l -24.2202,4.16213 z"
- id="path2286"
- style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 548.2688,328.33058 c -0.25696,-0.12068 -13.87938,-15.93419 -41.26638,-16.0589 -25.65249,-0.42638 -54.42578,9.51895 -54.88631,52.5328 0.22457,37.81852 27.6402,52.59809 55.0314,52.88627 29.31292,0.30451 40.97654,-18.32947 41.67615,-18.79124 -3.49762,-3.0321 -16.59792,-16.0131 -16.59792,-16.0131 0,0 -8.18236,11.65102 -24.05802,11.79913 -15.87942,0.1512 -29.68245,-12.27325 -29.87805,-29.60905 -0.20349,-17.33595 12.68881,-26.72821 29.99725,-27.48687 14.98466,-0.003 23.6297,9.67334 23.6297,9.67334 l 16.35218,-18.93238 z"
- id="path2288"
- style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 581.8125,278.84375 -25.125,5.90625 0.1875,133.9375 24.75,-4.46875 0.28125,-63.03125 c 0.0529,-6.60927 9.56127,-16.75916 25.4375,-16.4375 15.17973,0.15775 18.57236,10.11767 18.53125,11.375 l 0.4375,72.96875 24.40625,-4.3125 0.0937,-77.375 c 0.1607,-7.44539 -16.30833,-23.16954 -42.78125,-23.28125 -12.58087,0.0202 -19.54815,2.86825 -23.09375,4.96875 -6.06656,4.68565 -12.9998,9.17543 -19.8125,14.90625 6.29809,-8.09099 11.58551,-13.68516 16.75,-17.84375 l -0.0625,-37.3125 z"
- id="path2290"
- style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <g
- transform="matrix(0.9443373,0,0.01336345,0.9443373,78.345657,-412.48879)"
- id="g5326"
- style="fill:#1793d1;fill-opacity:1;stroke:none">
- <path
- d="m 400.67581,629.79609 7.68167,-1.91575 -0.92851,91.20792 -7.79574,1.32426 1.04258,-90.61643 z"
- id="path2292"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 421.10266,657.01757 6.75064,-2.9867 -0.86808,65.39931 -6.49779,1.33915 0.61523,-63.75176 z m -1.26059,-23.58316 5.47167,-4.41533 4.42261,4.99952 -5.47558,4.53221 -4.4187,-5.1164 z"
- id="path2294"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 440.44273,655.82614 7.67755,-1.56201 -0.1573,13.6722 c -0.007,0.58717 4.4194,-15.27364 24.68502,-14.92094 19.67986,0.10952 22.68401,15.34634 22.5291,18.76237 l -0.43759,48.0783 -6.73044,1.45631 0.63316,-47.489 c 0.0974,-1.38684 -2.88144,-13.11441 -16.78906,-13.15754 -13.90509,-0.0404 -23.68364,10.10048 -23.75821,16.57937 l -0.48127,41.83477 -7.80388,2.0313 0.63292,-65.28513 z"
- id="path2296"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 561.53301,720.20203 -7.6776,1.56186 0.15737,-13.67198 c 0.007,-0.58742 -4.42201,15.27361 -24.68504,14.92086 -19.67983,-0.10944 -22.68399,-15.34626 -22.52908,-18.76229 l 0.43757,-48.07861 8.15674,-1.64226 -0.54644,47.48988 c -0.0149,1.29682 1.36845,13.29979 15.27604,13.3426 13.90511,0.0405 23.76622,-8.37359 24.01453,-21.04416 l 0.43105,-37.46902 7.5978,-1.93195 -0.63294,65.28507 z"
- id="path2298"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 577.45461,655.28678 -5.42715,4.20017 20.19894,26.93328 -22.39092,31.11622 5.63499,4.226 21.04365,-28.8967 20.8779,29.58159 5.32727,-4.20103 -22.37578,-31.62866 18.56963,-25.5775 -5.53193,-4.73429 -16.92109,23.66778 -19.00551,-24.68686 z"
- id="path2300"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <path
- d="m 105.8125,16.625 c -7.39687,18.135158 -11.858304,29.997682 -20.09375,47.59375 5.04936,5.35232 11.247211,11.585364 21.3125,18.625 C 96.210077,78.390904 88.828713,73.920352 83.3125,69.28125 72.7727,91.274163 56.259864,122.60209 22.75,182.8125 49.087628,167.60733 69.504089,158.23318 88.53125,154.65625 87.714216,151.1422 87.2497,147.34107 87.28125,143.375 l 0.03125,-0.84375 c 0.417917,-16.87382 9.195665,-29.84979 19.59375,-28.96875 10.39809,0.88104 18.48041,15.28242 18.0625,32.15625 -0.0786,3.17512 -0.43674,6.22955 -1.0625,9.0625 18.82058,3.68164 39.01873,13.03179 65,28.03125 -5.123,-9.4318 -9.69572,-17.93388 -14.0625,-26.03125 -6.87839,-5.33121 -14.05289,-12.2698 -28.6875,-19.78125 10.05899,2.61375 17.2611,5.62932 22.875,9 C 124.63297,63.338161 121.03766,52.354109 105.8125,16.625 z"
- transform="matrix(1.1433333,0,0,1.1433333,22.920168,121.64318)"
- id="path2518"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- id="text2634"
- style="font-size:8.44138241px;font-style:normal;font-weight:normal;fill:#1793d1;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 685.46692,263.83624 0,-5.32944 -1.99082,0 0,-0.71307 4.7895,0 0,0.71307 -1.99906,0 0,5.32944 -0.79962,0"
- id="path3945"
- style="fill:#1793d1;fill-opacity:1" />
- <path
- d="m 689.0982,263.83624 0,-6.04251 1.20355,0 1.43026,4.2784 c 0.13189,0.39843 0.22806,0.69658 0.28852,0.89442 0.0687,-0.21983 0.17586,-0.5427 0.3215,-0.96862 l 1.44674,-4.2042 1.07578,0 0,6.04251 -0.77077,0 0,-5.05741 -1.75587,5.05741 -0.72131,0 -1.74763,-5.14396 0,5.14396 -0.77077,0"
- id="path3947"
- style="fill:#1793d1;fill-opacity:1" />
- </g>
- <g
- id="text2638"
- style="font-size:8.25130367px;font-style:normal;font-weight:normal;fill:#1793d1;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 239.84053,313.69965 0,-5.20945 -1.94598,0 0,-0.697 4.68164,0 0,0.697 -1.95404,0 0,5.20945 -0.78162,0"
- id="path3940"
- style="fill:#1793d1;fill-opacity:1" />
- <path
- d="m 243.39004,313.69965 0,-5.90645 1.17646,0 1.39805,4.18205 c 0.12892,0.38947 0.22293,0.6809 0.28202,0.87429 0.0671,-0.21488 0.1719,-0.53048 0.31426,-0.94681 l 1.41417,-4.10953 1.05155,0 0,5.90645 -0.75341,0 0,-4.94353 -1.71634,4.94353 -0.70506,0 -1.70828,-5.02814 0,5.02814 -0.75342,0"
- id="path3942"
- style="fill:#1793d1;fill-opacity:1" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/media/logos/archlinux-logo-light-1200dpi.png b/media/logos/archlinux-logo-light-1200dpi.png
deleted file mode 100644
index 79e0a0f..0000000
--- a/media/logos/archlinux-logo-light-1200dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-light-90dpi.png b/media/logos/archlinux-logo-light-90dpi.png
deleted file mode 100644
index 9580330..0000000
--- a/media/logos/archlinux-logo-light-90dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-light-scalable.svg b/media/logos/archlinux-logo-light-scalable.svg
deleted file mode 100644
index 5fd0716..0000000
--- a/media/logos/archlinux-logo-light-scalable.svg
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.0"
- width="600"
- height="199.41692"
- id="svg2424">
- <defs
- id="defs2426">
- <linearGradient
- x1="112.49854"
- y1="6.1372099"
- x2="112.49853"
- y2="129.3468"
- id="path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(287,-83)">
- <stop
- id="stop193"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="0" />
- <stop
- id="stop195"
- style="stop-color:#ffffff;stop-opacity:0.27450982"
- offset="1" />
- <midPointStop
- offset="0"
- style="stop-color:#FFFFFF"
- id="midPointStop197" />
- <midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF"
- id="midPointStop199" />
- <midPointStop
- offset="1"
- style="stop-color:#000000"
- id="midPointStop201" />
- </linearGradient>
- <linearGradient
- x1="541.33502"
- y1="104.50665"
- x2="606.91248"
- y2="303.14029"
- id="linearGradient2544"
- xlink:href="#path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.3937741,0,0,0.393752,357.51969,122.00151)" />
- <linearGradient
- id="linearGradient3388">
- <stop
- id="stop3390"
- style="stop-color:#000000;stop-opacity:0"
- offset="0" />
- <stop
- id="stop3392"
- style="stop-color:#000000;stop-opacity:0.37113401"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="490.72305"
- y1="237.72447"
- x2="490.72305"
- y2="183.9644"
- id="linearGradient4416"
- xlink:href="#linearGradient3388"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.749107,0,0,0.749107,-35.459862,91.44108)" />
- </defs>
- <g
- transform="translate(-34.777313,-129.80241)"
- id="layer1">
- <g
- transform="matrix(0.8746356,0,0,0.8746356,14.730518,23.408954)"
- id="g2424">
- <g
- transform="matrix(0.6378586,0,0,0.6378586,36.486487,2.17139)"
- id="g2809"
- style="fill:#ffffff;fill-opacity:1">
- <path
- d="m 339.96875,309.09375 c -14.47141,-0.0239 -26.4812,2.94367 -31.125,4.5625 l -4.78125,25.8125 c -0.0116,0.0951 23.79543,-6.34855 34.28125,-5.96875 17.36158,0.62381 18.95948,6.63541 18.65625,14.75 0.29595,0.47462 -4.47933,-7.33192 -19.5,-7.59375 -18.94961,-0.32687 -45.69284,6.70947 -45.65625,35.3125 -0.51086,32.17412 24.03361,41.63882 40.75,41.8125 15.02821,-0.27364 22.0777,-5.69136 25.9375,-8.59375 5.07124,-5.30236 10.87308,-10.63447 16.40625,-17.03125 -5.23567,9.51278 -9.77472,16.0898 -14.5,21.125 l 0,4.25 22.84375,-3.84375 0.15625,-62.09375 c -0.23141,-8.78839 5.04123,-42.41827 -43.46875,-42.5 z m -3.28125,54.0625 c 9.46889,0.12995 20.32788,4.79708 20.34375,16.03125 0.049,10.21821 -12.80005,15.71183 -21.15625,15.625 -8.35976,-0.0868 -19.45093,-6.56982 -19.5,-16.53125 0.16016,-8.90444 10.45953,-15.35418 20.3125,-15.125 z"
- id="path2284"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 398.50106,314.83145 -0.15505,102.82693 26.61213,-5.12724 0.0449,-58.30157 c 0.006,-8.68089 12.40554,-18.82451 27.9627,-18.66287 3.30202,-5.97408 9.5087,-21.24219 11.02088,-24.71514 -34.75649,-0.0833 -35.19897,9.98993 -41.24398,14.94517 -0.0631,-9.45285 -0.0213,-15.12741 -0.0213,-15.12741 l -24.2202,4.16213 z"
- id="path2286"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 548.2688,328.33058 c -0.25696,-0.12068 -13.87938,-15.93419 -41.26638,-16.0589 -25.65249,-0.42638 -54.42578,9.51895 -54.88631,52.5328 0.22457,37.81852 27.6402,52.59809 55.0314,52.88627 29.31292,0.30451 40.97654,-18.32947 41.67615,-18.79124 -3.49762,-3.0321 -16.59792,-16.0131 -16.59792,-16.0131 0,0 -8.18236,11.65102 -24.05802,11.79913 -15.87942,0.1512 -29.68245,-12.27325 -29.87805,-29.60905 -0.20349,-17.33595 12.68881,-26.72821 29.99725,-27.48687 14.98466,-0.003 23.6297,9.67334 23.6297,9.67334 l 16.35218,-18.93238 z"
- id="path2288"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 581.8125,278.84375 -25.125,5.90625 0.1875,133.9375 24.75,-4.46875 0.28125,-63.03125 c 0.0529,-6.60927 9.56127,-16.75916 25.4375,-16.4375 15.17973,0.15775 18.57236,10.11767 18.53125,11.375 l 0.4375,72.96875 24.40625,-4.3125 0.0937,-77.375 c 0.1607,-7.44539 -16.30833,-23.16954 -42.78125,-23.28125 -12.58087,0.0202 -19.54815,2.86825 -23.09375,4.96875 -6.06656,4.68565 -12.9998,9.17543 -19.8125,14.90625 6.29809,-8.09099 11.58551,-13.68516 16.75,-17.84375 l -0.0625,-37.3125 z"
- id="path2290"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <g
- transform="matrix(0.9443373,0,0.01336345,0.9443373,78.345657,-412.48879)"
- id="g5326"
- style="fill:#1793d1;fill-opacity:1;stroke:none">
- <path
- d="m 400.67581,629.79609 7.68167,-1.91575 -0.92851,91.20792 -7.79574,1.32426 1.04258,-90.61643 z"
- id="path2292"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 421.10266,657.01757 6.75064,-2.9867 -0.86808,65.39931 -6.49779,1.33915 0.61523,-63.75176 z m -1.26059,-23.58316 5.47167,-4.41533 4.42261,4.99952 -5.47558,4.53221 -4.4187,-5.1164 z"
- id="path2294"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 440.44273,655.82614 7.67755,-1.56201 -0.1573,13.6722 c -0.007,0.58717 4.4194,-15.27364 24.68502,-14.92094 19.67986,0.10952 22.68401,15.34634 22.5291,18.76237 l -0.43759,48.0783 -6.73044,1.45631 0.63316,-47.489 c 0.0974,-1.38684 -2.88144,-13.11441 -16.78906,-13.15754 -13.90509,-0.0404 -23.68364,10.10048 -23.75821,16.57937 l -0.48127,41.83477 -7.80388,2.0313 0.63292,-65.28513 z"
- id="path2296"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 561.53301,720.20203 -7.6776,1.56186 0.15737,-13.67198 c 0.007,-0.58742 -4.42201,15.27361 -24.68504,14.92086 -19.67983,-0.10944 -22.68399,-15.34626 -22.52908,-18.76229 l 0.43757,-48.07861 8.15674,-1.64226 -0.54644,47.48988 c -0.0149,1.29682 1.36845,13.29979 15.27604,13.3426 13.90511,0.0405 23.76622,-8.37359 24.01453,-21.04416 l 0.43105,-37.46902 7.5978,-1.93195 -0.63294,65.28507 z"
- id="path2298"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 577.45461,655.28678 -5.42715,4.20017 20.19894,26.93328 -22.39092,31.11622 5.63499,4.226 21.04365,-28.8967 20.8779,29.58159 5.32727,-4.20103 -22.37578,-31.62866 18.56963,-25.5775 -5.53193,-4.73429 -16.92109,23.66778 -19.00551,-24.68686 z"
- id="path2300"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <path
- d="m 105.8125,16.625 c -7.39687,18.135158 -11.858304,29.997682 -20.09375,47.59375 5.04936,5.35232 11.247211,11.585364 21.3125,18.625 C 96.210077,78.390904 88.828713,73.920352 83.3125,69.28125 72.7727,91.274163 56.259864,122.60209 22.75,182.8125 49.087628,167.60733 69.504089,158.23318 88.53125,154.65625 87.714216,151.1422 87.2497,147.34107 87.28125,143.375 l 0.03125,-0.84375 c 0.417917,-16.87382 9.195665,-29.84979 19.59375,-28.96875 10.39809,0.88104 18.48041,15.28242 18.0625,32.15625 -0.0786,3.17512 -0.43674,6.22955 -1.0625,9.0625 18.82058,3.68164 39.01873,13.03179 65,28.03125 -5.123,-9.4318 -9.69572,-17.93388 -14.0625,-26.03125 -6.87839,-5.33121 -14.05289,-12.2698 -28.6875,-19.78125 10.05899,2.61375 17.2611,5.62932 22.875,9 C 124.63297,63.338161 121.03766,52.354109 105.8125,16.625 z"
- transform="matrix(1.1433333,0,0,1.1433333,22.920168,121.64318)"
- id="path2518"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- id="text2634"
- style="font-size:8.44138241px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 685.46692,263.83624 0,-5.32944 -1.99082,0 0,-0.71307 4.7895,0 0,0.71307 -1.99906,0 0,5.32944 -0.79962,0"
- id="path3660"
- style="fill:#ffffff;fill-opacity:1" />
- <path
- d="m 689.0982,263.83624 0,-6.04251 1.20355,0 1.43026,4.2784 c 0.13189,0.39843 0.22806,0.69658 0.28852,0.89442 0.0687,-0.21983 0.17586,-0.5427 0.3215,-0.96862 l 1.44674,-4.2042 1.07578,0 0,6.04251 -0.77077,0 0,-5.05741 -1.75587,5.05741 -0.72131,0 -1.74763,-5.14396 0,5.14396 -0.77077,0"
- id="path3662"
- style="fill:#ffffff;fill-opacity:1" />
- </g>
- <g
- id="text2638"
- style="font-size:8.25130367px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 239.84053,313.69965 0,-5.20945 -1.94598,0 0,-0.697 4.68164,0 0,0.697 -1.95404,0 0,5.20945 -0.78162,0"
- id="path2883"
- style="fill:#ffffff;fill-opacity:1" />
- <path
- d="m 243.39004,313.69965 0,-5.90645 1.17646,0 1.39805,4.18205 c 0.12892,0.38947 0.22293,0.6809 0.28202,0.87429 0.0671,-0.21488 0.1719,-0.53048 0.31426,-0.94681 l 1.41417,-4.10953 1.05155,0 0,5.90645 -0.75341,0 0,-4.94353 -1.71634,4.94353 -0.70506,0 -1.70828,-5.02814 0,5.02814 -0.75342,0"
- id="path2885"
- style="fill:#ffffff;fill-opacity:1" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/media/logos/archlinux-logo-only.svg b/media/logos/archlinux-logo-only.svg
deleted file mode 100644
index 09be94a..0000000
--- a/media/logos/archlinux-logo-only.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.0"
- width="200"
- height="200"
- id="svg2424">
- <metadata
- id="metadata3206">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs2426" />
- <path
- d="M 99.982978,9.4299079 C 91.920693,29.201751 87.057917,42.128656 78.081625,61.311918 83.585216,67.143195 90.340614,73.933635 101.31135,81.606952 89.516733,76.756627 81.471355,71.884513 75.458912,66.827107 63.970969,90.7953 45.972667,124.94368 9.4483145,190.57009 38.155229,173.99182 60.408321,163.77892 81.147131,159.87687 c -0.890533,-3.82576 -1.396835,-7.9676 -1.362448,-12.29473 l 0.03406,-0.91557 c 0.455512,-18.39852 10.022891,-32.53528 21.356367,-31.57611 11.33348,0.95916 20.14288,16.65456 19.68737,35.05308 -0.0857,3.45517 -0.47603,6.79044 -1.15808,9.87502 20.51365,4.01105 42.52879,14.20216 70.84729,30.55153 -5.58386,-10.27831 -10.56793,-19.54295 -15.32754,-28.37161 -7.49716,-5.80948 -15.31706,-13.37379 -31.26818,-21.5594 10.96388,2.84479 18.81388,6.13649 24.9328,9.80965 C 120.49649,60.352755 116.57776,48.374114 99.982978,9.4299079 z"
- id="path2518"
- style="fill:#1793d1;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- transform="matrix(0.8746356,0,0,0.8746356,-26.046795,-109.83508)"
- id="text2638"
- style="font-size:8.25130367px;font-style:normal;font-weight:normal;fill:#1793d1;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 239.84053,313.69965 0,-5.20945 -1.94598,0 0,-0.697 4.68164,0 0,0.697 -1.95404,0 0,5.20945 -0.78162,0"
- id="path3940"
- style="fill:#1793d1;fill-opacity:1" />
- <path
- d="m 243.39004,313.69965 0,-5.90645 1.17646,0 1.39805,4.18205 c 0.12892,0.38947 0.22293,0.6809 0.28202,0.87429 0.0671,-0.21488 0.1719,-0.53048 0.31426,-0.94681 l 1.41417,-4.10953 1.05155,0 0,5.90645 -0.75341,0 0,-4.94353 -1.71634,4.94353 -0.70506,0 -1.70828,-5.02814 0,5.02814 -0.75342,0"
- id="path3942"
- style="fill:#1793d1;fill-opacity:1" />
- </g>
-</svg>
diff --git a/media/logos/archlinux-logo-white-1200dpi.png b/media/logos/archlinux-logo-white-1200dpi.png
deleted file mode 100644
index 50e700c..0000000
--- a/media/logos/archlinux-logo-white-1200dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-white-90dpi.png b/media/logos/archlinux-logo-white-90dpi.png
deleted file mode 100644
index 8667960..0000000
--- a/media/logos/archlinux-logo-white-90dpi.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/archlinux-logo-white-scalable.svg b/media/logos/archlinux-logo-white-scalable.svg
deleted file mode 100644
index 70eb2df..0000000
--- a/media/logos/archlinux-logo-white-scalable.svg
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.0"
- width="600"
- height="199.41692"
- id="svg2424">
- <defs
- id="defs2426">
- <linearGradient
- x1="112.49854"
- y1="6.1372099"
- x2="112.49853"
- y2="129.3468"
- id="path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(287,-83)">
- <stop
- id="stop193"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="0" />
- <stop
- id="stop195"
- style="stop-color:#ffffff;stop-opacity:0.27450982"
- offset="1" />
- <midPointStop
- offset="0"
- style="stop-color:#FFFFFF"
- id="midPointStop197" />
- <midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF"
- id="midPointStop199" />
- <midPointStop
- offset="1"
- style="stop-color:#000000"
- id="midPointStop201" />
- </linearGradient>
- <linearGradient
- x1="541.33502"
- y1="104.50665"
- x2="606.91248"
- y2="303.14029"
- id="linearGradient2544"
- xlink:href="#path1082_2_"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.3937741,0,0,0.393752,357.51969,122.00151)" />
- <linearGradient
- id="linearGradient3388">
- <stop
- id="stop3390"
- style="stop-color:#000000;stop-opacity:0"
- offset="0" />
- <stop
- id="stop3392"
- style="stop-color:#000000;stop-opacity:0.37113401"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="490.72305"
- y1="237.72447"
- x2="490.72305"
- y2="183.9644"
- id="linearGradient4416"
- xlink:href="#linearGradient3388"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.749107,0,0,0.749107,-35.459862,91.44108)" />
- </defs>
- <g
- transform="translate(-34.777313,-129.80241)"
- id="layer1">
- <g
- transform="matrix(0.8746356,0,0,0.8746356,14.730518,23.408954)"
- id="g2424"
- style="fill:#1a1a1a">
- <g
- transform="matrix(0.6378586,0,0,0.6378586,36.486487,2.17139)"
- id="g2809"
- style="fill:#ffffff;fill-opacity:1">
- <path
- d="m 339.96875,309.09375 c -14.47141,-0.0239 -26.4812,2.94367 -31.125,4.5625 l -4.78125,25.8125 c -0.0116,0.0951 23.79543,-6.34855 34.28125,-5.96875 17.36158,0.62381 18.95948,6.63541 18.65625,14.75 0.29595,0.47462 -4.47933,-7.33192 -19.5,-7.59375 -18.94961,-0.32687 -45.69284,6.70947 -45.65625,35.3125 -0.51086,32.17412 24.03361,41.63882 40.75,41.8125 15.02821,-0.27364 22.0777,-5.69136 25.9375,-8.59375 5.07124,-5.30236 10.87308,-10.63447 16.40625,-17.03125 -5.23567,9.51278 -9.77472,16.0898 -14.5,21.125 l 0,4.25 22.84375,-3.84375 0.15625,-62.09375 c -0.23141,-8.78839 5.04123,-42.41827 -43.46875,-42.5 z m -3.28125,54.0625 c 9.46889,0.12995 20.32788,4.79708 20.34375,16.03125 0.049,10.21821 -12.80005,15.71183 -21.15625,15.625 -8.35976,-0.0868 -19.45093,-6.56982 -19.5,-16.53125 0.16016,-8.90444 10.45953,-15.35418 20.3125,-15.125 z"
- id="path2284"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 398.50106,314.83145 -0.15505,102.82693 26.61213,-5.12724 0.0449,-58.30157 c 0.006,-8.68089 12.40554,-18.82451 27.9627,-18.66287 3.30202,-5.97408 9.5087,-21.24219 11.02088,-24.71514 -34.75649,-0.0833 -35.19897,9.98993 -41.24398,14.94517 -0.0631,-9.45285 -0.0213,-15.12741 -0.0213,-15.12741 l -24.2202,4.16213 z"
- id="path2286"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 548.2688,328.33058 c -0.25696,-0.12068 -13.87938,-15.93419 -41.26638,-16.0589 -25.65249,-0.42638 -54.42578,9.51895 -54.88631,52.5328 0.22457,37.81852 27.6402,52.59809 55.0314,52.88627 29.31292,0.30451 40.97654,-18.32947 41.67615,-18.79124 -3.49762,-3.0321 -16.59792,-16.0131 -16.59792,-16.0131 0,0 -8.18236,11.65102 -24.05802,11.79913 -15.87942,0.1512 -29.68245,-12.27325 -29.87805,-29.60905 -0.20349,-17.33595 12.68881,-26.72821 29.99725,-27.48687 14.98466,-0.003 23.6297,9.67334 23.6297,9.67334 l 16.35218,-18.93238 z"
- id="path2288"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 581.8125,278.84375 -25.125,5.90625 0.1875,133.9375 24.75,-4.46875 0.28125,-63.03125 c 0.0529,-6.60927 9.56127,-16.75916 25.4375,-16.4375 15.17973,0.15775 18.57236,10.11767 18.53125,11.375 l 0.4375,72.96875 24.40625,-4.3125 0.0937,-77.375 c 0.1607,-7.44539 -16.30833,-23.16954 -42.78125,-23.28125 -12.58087,0.0202 -19.54815,2.86825 -23.09375,4.96875 -6.06656,4.68565 -12.9998,9.17543 -19.8125,14.90625 6.29809,-8.09099 11.58551,-13.68516 16.75,-17.84375 l -0.0625,-37.3125 z"
- id="path2290"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <g
- transform="matrix(0.9443373,0,0.01336345,0.9443373,78.345657,-412.48879)"
- id="g5326"
- style="fill:#ffffff;fill-opacity:1;stroke:none">
- <path
- d="m 400.67581,629.79609 7.68167,-1.91575 -0.92851,91.20792 -7.79574,1.32426 1.04258,-90.61643 z"
- id="path2292"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 421.10266,657.01757 6.75064,-2.9867 -0.86808,65.39931 -6.49779,1.33915 0.61523,-63.75176 z m -1.26059,-23.58316 5.47167,-4.41533 4.42261,4.99952 -5.47558,4.53221 -4.4187,-5.1164 z"
- id="path2294"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 440.44273,655.82614 7.67755,-1.56201 -0.1573,13.6722 c -0.007,0.58717 4.4194,-15.27364 24.68502,-14.92094 19.67986,0.10952 22.68401,15.34634 22.5291,18.76237 l -0.43759,48.0783 -6.73044,1.45631 0.63316,-47.489 c 0.0974,-1.38684 -2.88144,-13.11441 -16.78906,-13.15754 -13.90509,-0.0404 -23.68364,10.10048 -23.75821,16.57937 l -0.48127,41.83477 -7.80388,2.0313 0.63292,-65.28513 z"
- id="path2296"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 561.53301,720.20203 -7.6776,1.56186 0.15737,-13.67198 c 0.007,-0.58742 -4.42201,15.27361 -24.68504,14.92086 -19.67983,-0.10944 -22.68399,-15.34626 -22.52908,-18.76229 l 0.43757,-48.07861 8.15674,-1.64226 -0.54644,47.48988 c -0.0149,1.29682 1.36845,13.29979 15.27604,13.3426 13.90511,0.0405 23.76622,-8.37359 24.01453,-21.04416 l 0.43105,-37.46902 7.5978,-1.93195 -0.63294,65.28507 z"
- id="path2298"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 577.45461,655.28678 -5.42715,4.20017 20.19894,26.93328 -22.39092,31.11622 5.63499,4.226 21.04365,-28.8967 20.8779,29.58159 5.32727,-4.20103 -22.37578,-31.62866 18.56963,-25.5775 -5.53193,-4.73429 -16.92109,23.66778 -19.00551,-24.68686 z"
- id="path2300"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- <path
- d="m 105.8125,16.625 c -7.39687,18.135158 -11.858304,29.997682 -20.09375,47.59375 5.04936,5.35232 11.247211,11.585364 21.3125,18.625 C 96.210077,78.390904 88.828713,73.920352 83.3125,69.28125 72.7727,91.274163 56.259864,122.60209 22.75,182.8125 49.087628,167.60733 69.504089,158.23318 88.53125,154.65625 87.714216,151.1422 87.2497,147.34107 87.28125,143.375 l 0.03125,-0.84375 c 0.417917,-16.87382 9.195665,-29.84979 19.59375,-28.96875 10.39809,0.88104 18.48041,15.28242 18.0625,32.15625 -0.0786,3.17512 -0.43674,6.22955 -1.0625,9.0625 18.82058,3.68164 39.01873,13.03179 65,28.03125 -5.123,-9.4318 -9.69572,-17.93388 -14.0625,-26.03125 -6.87839,-5.33121 -14.05289,-12.2698 -28.6875,-19.78125 10.05899,2.61375 17.2611,5.62932 22.875,9 C 124.63297,63.338161 121.03766,52.354109 105.8125,16.625 z"
- transform="matrix(1.1433333,0,0,1.1433333,22.920168,121.64318)"
- id="path2518"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- id="text2634"
- style="font-size:8.44138241px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 685.46692,263.83624 0,-5.32944 -1.99082,0 0,-0.71307 4.7895,0 0,0.71307 -1.99906,0 0,5.32944 -0.79962,0"
- id="path7858"
- style="fill:#ffffff" />
- <path
- d="m 689.0982,263.83624 0,-6.04251 1.20355,0 1.43026,4.2784 c 0.13189,0.39843 0.22806,0.69658 0.28852,0.89442 0.0687,-0.21983 0.17586,-0.5427 0.3215,-0.96862 l 1.44674,-4.2042 1.07578,0 0,6.04251 -0.77077,0 0,-5.05741 -1.75587,5.05741 -0.72131,0 -1.74763,-5.14396 0,5.14396 -0.77077,0"
- id="path7860"
- style="fill:#ffffff" />
- </g>
- <g
- id="text2638"
- style="font-size:8.25130367px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono">
- <path
- d="m 239.84053,313.69965 0,-5.20945 -1.94598,0 0,-0.697 4.68164,0 0,0.697 -1.95404,0 0,5.20945 -0.78162,0"
- id="path7853"
- style="fill:#ffffff" />
- <path
- d="m 243.39004,313.69965 0,-5.90645 1.17646,0 1.39805,4.18205 c 0.12892,0.38947 0.22293,0.6809 0.28202,0.87429 0.0671,-0.21488 0.1719,-0.53048 0.31426,-0.94681 l 1.41417,-4.10953 1.05155,0 0,5.90645 -0.75341,0 0,-4.94353 -1.71634,4.94353 -0.70506,0 -1.70828,-5.02814 0,5.02814 -0.75342,0"
- id="path7855"
- style="fill:#ffffff" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-aqua-blue.png b/media/logos/legacy/arch-legacy-aqua-blue.png
deleted file mode 100644
index 9637ce7..0000000
--- a/media/logos/legacy/arch-legacy-aqua-blue.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-aqua-blue.svg b/media/logos/legacy/arch-legacy-aqua-blue.svg
deleted file mode 100644
index f4c8010..0000000
--- a/media/logos/legacy/arch-legacy-aqua-blue.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="300"
- height="248.04205"
- id="svg1374">
- <defs
- id="defs1376">
- <linearGradient
- id="linearGradient21348">
- <stop
- id="stop21350"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21352"
- style="stop-color:#baa600;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21338">
- <stop
- id="stop21340"
- style="stop-color:#baa400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21346"
- style="stop-color:#baa600;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21342"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21344"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21320">
- <stop
- id="stop21322"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21326"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.583691" />
- <stop
- id="stop21324"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient16135">
- <stop
- id="stop16137"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop16139"
- style="stop-color:#c4a000;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#a4bfda;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#387cbf;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#f2f9ff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#91afcb;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="5.9534397"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-4.28975,5.8394364,-3.6097583,-2.6518001,229.06139,-211.11919)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <linearGradient
- x1="7.9400997"
- y1="-5.1101465"
- x2="9.2488842"
- y2="4.7730908"
- id="linearGradient19853"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.791154,-0.487172,0.327682,1.176225,16.97405,35.22976)" />
- <linearGradient
- x1="11.441825"
- y1="-0.98001873"
- x2="13.598524"
- y2="-1.084087"
- id="linearGradient22817"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.05655608,-0.797121,1.172062,0.350025,16.04368,50.1682)" />
- </defs>
- <g
- transform="translate(-1.3401681,202.61015)"
- id="layer1">
- <path
- d="m 39.59798,40.575378 a 21.213203,3.5355339 0 1 1 -42.4264064,0 21.213203,3.5355339 0 1 1 42.4264064,0 z"
- transform="matrix(6.049587,0,0,6.049587,61.788742,-221.4209)"
- id="path4993"
- style="opacity:0.75800003;fill:url(#radialGradient5727);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 199.6749,-130.05945 c -0.80514,-5.21726 80.32449,15.61015 75.63475,51.174694 C 272.2943,-42.526817 214.443,-8.8536668 109.88644,9.7868891 61.22048,16.547151 39.641628,17.11093 39.614886,13.571251 39.159345,10.457456 195.44786,-7.2796974 233.86883,-75.443533 254.72463,-114.97824 200.58539,-124.15944 199.6749,-130.05945 z"
- id="path632"
- style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path630"
- style="font-size:12px;fill:#dadada;fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path5053"
- style="font-size:12px;fill:url(#linearGradient7976);fill-opacity:1;fill-rule:evenodd;stroke:#003870;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 121.59738,-189.71191 c -27.618072,0.85477 -51.778483,20.62549 -70.893599,56.71488 -19.115116,36.089393 -32.028124,87.561051 -36.486571,146.702485 -0.134733,1.684059 0.328558,4.543893 1.134297,5.860537 0.805739,1.316644 0.722447,1.708996 3.591943,1.701446 5.805524,-0.102086 6.81364,-1.363244 8.507231,-3.591942 1.693591,-2.228698 3.106936,-6.171353 4.537191,-10.5867771 -6.09e-4,-0.063013 -6.09e-4,-0.1260371 0,-0.1890496 8.973448,-26.2234833 18.804506,-55.6974943 33.461777,-79.5898783 14.657272,-23.892384 35.702511,-43.103311 64.654961,-43.103311 29.95424,0 52.97874,22.593499 70.1374,49.341948 7.78014,12.128387 20.44288,45.938397 20.03926,38.755166 -1.17245,-20.865564 -19.29823,-78.019704 -34.02893,-105.867774 -9.82047,-18.56538 -20.79691,-33.21568 -31.94938,-42.72521 -11.15248,-9.50952 -21.96109,-13.75514 -32.70558,-13.42252 z"
- id="path5786"
- style="font-size:12px;fill:url(#radialGradient8714);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 230.86804,-117.11686 c 6.79223,5.31572 12.18052,13.01615 12.85772,21.804027 0.72019,8.15085 -1.63702,16.481483 -5.89805,23.383021 -1.02797,1.967295 -5.37583,4.963311 -4.60352,5.954046 8.08567,-1.669118 11.16767,-4.733252 17.94933,-8.576881 6.98305,-3.957767 11.19471,6.893589 16.93729,-3.052851 4.68068,-8.107179 0.0257,-14.768899 -5.02515,-19.914158 -7.63806,-8.007254 -17.49751,-13.508574 -27.50561,-17.997994 -1.55104,-0.59054 -3.17397,-0.97216 -4.71201,-1.59921 z"
- id="path9450"
- style="font-size:12px;fill:url(#linearGradient11647);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-aqua-white.png b/media/logos/legacy/arch-legacy-aqua-white.png
deleted file mode 100644
index 25fe900..0000000
--- a/media/logos/legacy/arch-legacy-aqua-white.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-aqua-white.svg b/media/logos/legacy/arch-legacy-aqua-white.svg
deleted file mode 100644
index 60b554f..0000000
--- a/media/logos/legacy/arch-legacy-aqua-white.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="300"
- height="248.04205"
- id="svg1374">
- <defs
- id="defs1376">
- <linearGradient
- id="linearGradient21348">
- <stop
- id="stop21350"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21352"
- style="stop-color:#baa600;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21338">
- <stop
- id="stop21340"
- style="stop-color:#baa400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21346"
- style="stop-color:#baa600;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21342"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21344"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21320">
- <stop
- id="stop21322"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21326"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.583691" />
- <stop
- id="stop21324"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient16135">
- <stop
- id="stop16137"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop16139"
- style="stop-color:#c4a000;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#cccccc;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#f9f9f9;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#e3e3e3;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="5.9534397"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-4.28975,5.8394364,-3.6097583,-2.6518001,229.06139,-211.11919)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <linearGradient
- x1="7.9400997"
- y1="-5.1101465"
- x2="9.2488842"
- y2="4.7730908"
- id="linearGradient19853"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.791154,-0.487172,0.327682,1.176225,16.97405,35.22976)" />
- <linearGradient
- x1="11.441825"
- y1="-0.98001873"
- x2="13.598524"
- y2="-1.084087"
- id="linearGradient22817"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.05655608,-0.797121,1.172062,0.350025,16.04368,50.1682)" />
- </defs>
- <g
- transform="translate(-1.3401681,202.61015)"
- id="layer1">
- <path
- d="m 39.59798,40.575378 a 21.213203,3.5355339 0 1 1 -42.4264064,0 21.213203,3.5355339 0 1 1 42.4264064,0 z"
- transform="matrix(6.049587,0,0,6.049587,61.788742,-221.4209)"
- id="path4993"
- style="opacity:0.75800003;fill:url(#radialGradient5727);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 199.6749,-130.05945 c -0.80514,-5.21726 80.32449,15.61015 75.63475,51.174694 C 272.2943,-42.526817 214.443,-8.8536668 109.88644,9.7868891 61.22048,16.547151 39.641628,17.11093 39.614886,13.571251 39.159345,10.457456 195.44786,-7.2796974 233.86883,-75.443533 254.72463,-114.97824 200.58539,-124.15944 199.6749,-130.05945 z"
- id="path632"
- style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path630"
- style="font-size:12px;fill:#dadada;fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path5053"
- style="font-size:12px;fill:url(#linearGradient7976);fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 121.59738,-189.71191 c -27.618072,0.85477 -51.778483,20.62549 -70.893599,56.71488 -19.115116,36.089393 -32.028124,87.561051 -36.486571,146.702485 -0.134733,1.684059 0.328558,4.543893 1.134297,5.860537 0.805739,1.316644 0.722447,1.708996 3.591943,1.701446 5.805524,-0.102086 6.81364,-1.363244 8.507231,-3.591942 1.693591,-2.228698 3.106936,-6.171353 4.537191,-10.5867771 -6.09e-4,-0.063013 -6.09e-4,-0.1260371 0,-0.1890496 8.973448,-26.2234833 18.804506,-55.6974943 33.461777,-79.5898783 14.657272,-23.892384 35.702511,-43.103311 64.654961,-43.103311 29.95424,0 52.97874,22.593499 70.1374,49.341948 7.78014,12.128387 20.44288,45.938397 20.03926,38.755166 -1.17245,-20.865564 -19.29823,-78.019704 -34.02893,-105.867774 -9.82047,-18.56538 -20.79691,-33.21568 -31.94938,-42.72521 -11.15248,-9.50952 -21.96109,-13.75514 -32.70558,-13.42252 z"
- id="path5786"
- style="font-size:12px;fill:url(#radialGradient8714);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 230.86804,-117.11686 c 6.79223,5.31572 12.18052,13.01615 12.85772,21.804027 0.72019,8.15085 -1.63702,16.481483 -5.89805,23.383021 -1.02797,1.967295 -5.37583,4.963311 -4.60352,5.954046 8.08567,-1.669118 11.16767,-4.733252 17.94933,-8.576881 6.98305,-3.957767 11.19471,6.893589 16.93729,-3.052851 4.68068,-8.107179 0.0257,-14.768899 -5.02515,-19.914158 -7.63806,-8.007254 -17.49751,-13.508574 -27.50561,-17.997994 -1.55104,-0.59054 -3.17397,-0.97216 -4.71201,-1.59921 z"
- id="path9450"
- style="font-size:12px;fill:url(#linearGradient11647);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-aqua.png b/media/logos/legacy/arch-legacy-aqua.png
deleted file mode 100644
index 881e170..0000000
--- a/media/logos/legacy/arch-legacy-aqua.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-aqua.svg b/media/logos/legacy/arch-legacy-aqua.svg
deleted file mode 100644
index 3086091..0000000
--- a/media/logos/legacy/arch-legacy-aqua.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.0"
- width="300"
- height="264.97537"
- id="svg602"
- xml:space="preserve"><defs
- id="defs604"><linearGradient
- id="linearGradient655"><stop
- id="stop656"
- style="stop-color:#ffffff;stop-opacity:0.91759998"
- offset="0" /><stop
- id="stop657"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" /></linearGradient><linearGradient
- id="linearGradient652"><stop
- id="stop653"
- style="stop-color:#ffffff;stop-opacity:0.74119997"
- offset="0" /><stop
- id="stop654"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" /></linearGradient><linearGradient
- id="linearGradient649"><stop
- id="stop650"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="0" /><stop
- id="stop651"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" /></linearGradient><linearGradient
- id="linearGradient643"><stop
- id="stop644"
- style="stop-color:#001e87;stop-opacity:1"
- offset="0" /><stop
- id="stop645"
- style="stop-color:#85aee8;stop-opacity:1"
- offset="1" /></linearGradient><linearGradient
- id="linearGradient639"><stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:0.66670001"
- offset="0" /><stop
- id="stop641"
- style="stop-color:#ffffff;stop-opacity:0.66670001"
- offset="1" /></linearGradient><linearGradient
- x1="262.13797"
- y1="131.27525"
- x2="258.51834"
- y2="412.16269"
- id="linearGradient642"
- xlink:href="#linearGradient643"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.54976303,0,0,0.54672932,-12.778504,-9.9453842)" /><linearGradient
- x1="330.06006"
- y1="210.7088"
- x2="78.073174"
- y2="615.28638"
- id="linearGradient646"
- xlink:href="#linearGradient639"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.69551382,0,0,0.43215756,-12.778504,-9.9453842)" /><linearGradient
- x1="311.32385"
- y1="56.541351"
- x2="347.72528"
- y2="225.29604"
- id="linearGradient648"
- xlink:href="#linearGradient652"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.54666224,0,0,0.54983046,-5.0249849,-4.1302342)" /><linearGradient
- x1="307.68372"
- y1="52.872341"
- x2="304.04358"
- y2="181.27307"
- id="linearGradient659"
- xlink:href="#linearGradient652"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.54666224,0,0,0.54983046,-5.0249849,-4.1302342)" /><linearGradient
- x1="406.30573"
- y1="222.42775"
- x2="356.68286"
- y2="275.92722"
- id="linearGradient662"
- xlink:href="#linearGradient655"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.68606785,0,0,0.43810761,-5.0249849,-4.1302342)" /></defs><path
- d="m 216.09826,76.926076 c -0.89084,-5.77257 88.87404,17.27167 83.68513,56.621614 -3.33629,40.22779 -67.34515,77.48503 -183.03046,98.10965 -53.845848,7.4798 -77.721499,8.10359 -77.751088,4.18715 C 38.497814,232.39927 211.4213,212.77422 253.93171,137.35519 277.00736,93.612496 217.10566,83.454076 216.09826,76.926076 z"
- id="path632"
- style="font-size:12px;fill:url(#linearGradient646);fill-rule:evenodd;stroke-width:2.2874999" /><path
- d="m 215.29024,77.151116 c -0.89084,-5.77257 84.83611,21.89254 79.6472,61.242484 -20.78169,33.44349 -67.34515,77.48504 -183.03046,98.10965 -53.84585,7.4798 -77.721495,8.10359 -77.751084,4.18716 C 33.651868,237.24519 208.99832,220.0431 249.08576,142.2011 281.85332,131.41084 216.29769,83.679116 215.29024,77.151116 z"
- id="path661"
- style="font-size:12px;fill:url(#linearGradient662);fill-rule:evenodd;stroke-width:2.2874999" /><path
- d="m 255.97732,236.43961 c 1.42285,15.8038 0.91688,19.07237 -3.05312,18.82813 -5.14944,-0.33339 -4.2802,-6.99318 -5.79269,-11.46883 -16.14217,-54.85669 -52.84124,-140.20525 -107.95277,-140.20525 -54.798199,0 -78.421104,70.35808 -98.293926,128.43325 -2.940112,9.07662 -6.527202,22.93579 -24.8063,23.25722 C 2.9906175,255.31856 -0.5632645,243.09837 0.0695905,235.18814 10.100329,102.13007 58.146075,2.2245558 129.23672,0.02432583 189.66177,-1.8462842 244.09177,104.40594 255.97732,236.43961 z"
- id="path630"
- style="font-size:12px;fill:url(#linearGradient642);fill-rule:evenodd" /><path
- d="m 255.97729,247.06089 c 1.42286,15.02381 0.91689,18.13104 -3.05311,17.89886 -5.14944,-0.31694 -4.2802,-6.64807 -5.79269,-10.90277 -16.14217,-52.1493 -52.84125,-142.0082 -107.95277,-142.0082 -54.798202,0 -78.421106,75.60828 -98.293907,130.81717 -2.940112,8.62865 -6.527202,21.80383 -24.8063,22.10937 C 2.9906175,265.00805 -0.5632655,253.39097 0.0695895,245.87115 10.100328,119.38011 58.146053,8.8986858 129.2367,6.8070558 189.66175,5.0287458 244.09175,121.54371 255.97729,247.06089 z"
- id="path658"
- style="font-size:12px;fill:url(#linearGradient659);fill-rule:evenodd" /><path
- d="m 255.97729,247.06089 c 1.42286,15.02381 0.91689,18.13104 -3.05311,17.89886 -5.14944,-0.31694 -4.2802,-6.64807 -5.79269,-10.90277 -16.14217,-52.1493 -52.84125,-142.0082 -107.95277,-142.0082 -54.798202,0 -78.421106,75.60828 -98.293907,130.81717 -2.940112,8.62865 -6.527202,21.80383 -24.8063,22.10937 C 2.9906175,265.00805 -0.5632655,253.39097 0.0695895,245.87115 10.100328,119.38011 58.146053,8.8986858 129.2367,6.8070558 189.66175,5.0287458 244.09175,121.54371 255.97729,247.06089 z"
- id="path663"
- style="font-size:12px;fill:url(#linearGradient648);fill-rule:evenodd" /></svg> \ No newline at end of file
diff --git a/media/logos/legacy/arch-legacy-blue1.png b/media/logos/legacy/arch-legacy-blue1.png
deleted file mode 100644
index 3ed6c24..0000000
--- a/media/logos/legacy/arch-legacy-blue1.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-blue1.svg b/media/logos/legacy/arch-legacy-blue1.svg
deleted file mode 100644
index 5a6f2c7..0000000
--- a/media/logos/legacy/arch-legacy-blue1.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.0"
- width="486.33548"
- height="100"
- id="svg548">
- <defs
- id="defs550" />
- <path
- d="m 84.716671,30.391226 c 5.25361,0.93458 36.268409,10.24 32.781559,22.44329 -7.94845,28.48793 -61.13637,38.03005 -100.46497,39.38466 31.362814,-6.45502 70.137021,-18.45587 79.952666,-36.82924 8.678824,-16.96165 -9.153005,-22.19399 -12.269255,-24.99871 z"
- id="path600"
- style="fill-rule:evenodd" />
- <path
- d="M 98.474241,99.220446 C 97.072371,93.768736 83.520976,40.498506 54.54941,40.342736 42.088551,39.719686 29.921495,53.851996 23.262666,69.749096 16.195565,86.093206 16.005538,99.840346 5.4845306,99.999256 -4.6262938,100.15424 1.4346852,76.011926 6.2633466,58.411076 11.092006,38.940866 26.66819,0.1562656 49.409224,4.9560049e-4 72.15046,-0.1552644 86.480671,36.448856 89.751501,46.105786 c 7.476635,24.29886 8.56698,46.72837 8.72274,53.11466 z"
- id="path601"
- style="fill:#759fbf;fill-rule:evenodd" />
- <path
- d="m 133.27777,48.677356 2.43137,-14.498 c 2.3518,-0.93438 8.43445,-2.66727 15.75985,-2.73816 24.55544,-0.2367 21.86946,18.6459 21.98033,23.57046 l -0.13016,34.80589 -11.56291,2.29096 -0.002,-5.43931 c -1.69134,1.14332 -5.07658,5.43931 -14.09923,5.72504 -8.46163,0 -20.87148,-5.15338 -20.58989,-23.19001 0.002,-16.0318 13.53604,-20.13048 23.12798,-20.05762 7.60325,0.0593 10.02103,4.4043 9.87157,4.14004 0.15931,-4.55002 -0.65062,-7.90139 -9.43854,-8.1499 -5.30757,-0.15183 -17.35411,3.59397 -17.3482,3.54061 m 16.49199,13.0847 c -4.98737,-0.0711 -10.20771,3.59574 -10.29514,8.58765 0.0177,5.58306 5.63997,9.16325 9.87157,9.16325 4.22983,0 10.73584,-3.15052 10.71832,-8.87752 0,-6.29669 -5.50173,-8.85566 -10.29475,-8.87338 z"
- id="path551"
- style="fill-rule:evenodd" />
- <path
- d="m 180.61226,34.742546 -0.15202,57.63554 13.4746,-3.02882 0.0644,-32.67837 c 0.009,-4.86568 6.29315,-10.6234 14.16796,-10.6234 1.67579,-3.36772 4.82847,-11.96167 5.59645,-13.91708 -17.59357,0.15576 -17.82475,5.80439 -20.88823,8.61699 -0.0252,-5.29792 0,-8.47875 0,-8.47875 l -12.26315,2.47389 z"
- id="path552"
- style="fill-rule:evenodd" />
- <path
- d="m 255.84925,42.301886 c -0.12997,-0.0662 -6.44911,-9.7156 -20.31224,-9.626 -12.98486,-0.0896 -27.55689,5.65237 -27.82076,29.76436 0.0866,21.196 13.9537,29.3203 27.81879,29.32227 14.83788,0 20.7553,-10.51234 21.10976,-10.77523 -1.76834,-1.67913 -8.39073,-8.56638 -8.39073,-8.56638 0,0 -4.15106,7.24171 -12.18734,7.41716 -8.03825,0.17723 -15.0151,-7.68222 -15.10175,-17.39782 -0.0906,-9.71561 4.94465,-16.4278 14.48145,-16.33821 10.68681,0 13.07348,4.67861 13.07348,4.67861 l 7.32934,-8.47876 z"
- id="path553"
- style="fill-rule:evenodd" />
- <path
- d="m 260.70725,92.027576 12.53785,-2.64916 0.1851,-35.3293 c 0.0315,-3.70484 4.85013,-9.44898 12.88641,-9.36115 7.68379,0 9.38517,5.56494 9.36351,6.26991 l 0.17526,40.89227 12.36457,-2.56133 0.0886,-43.36597 c 0.0866,-4.1741 -8.23911,-12.89645 -21.63947,-12.80488 -9.67661,0.12859 -12.81354,3.87025 -13.24479,4.15086 l 0,-23.7595 -12.71902,3.44568 0.002,75.07257 z"
- id="path554"
- style="fill-rule:evenodd" />
- <path
- d="m 319.17063,22.342736 5.7402,-1.5019 0.0906,68.36035 -5.83078,1.05962 0,-67.91807 z"
- id="path555"
- style="fill-rule:evenodd" />
- <path
- d="m 334.71347,42.566746 5.03326,-2.29647 -0.0866,49.01854 -4.858,1.05962 -0.0886,-47.78169 z m -1.14804,-17.66268 4.06244,-3.3561 3.3575,3.70859 -4.06444,3.44372 -3.3555,-3.79621 z"
- id="path556"
- style="fill-rule:evenodd" />
- <path
- d="m 349.1969,41.507126 5.7402,-1.23685 0,10.24748 c 0,0.44012 3.18023,-11.48433 18.3706,-11.39473 14.74927,-0.0876 17.13197,11.30514 17.04534,13.86647 l 0.0866,36.03427 -5.03127,1.14942 0.065,-35.59436 c 0.0611,-1.04013 -2.27243,-9.80323 -12.69537,-9.71561 -10.421,0.0896 -17.6617,7.77359 -17.6617,12.62962 l 0,31.35567 -5.8308,1.58953 -0.0886,-48.93091 z"
- id="path567"
- style="fill-rule:evenodd" />
- <path
- d="m 440.49857,88.707116 -5.7402,1.23665 0,-10.24728 c 0,-0.44032 -3.18223,11.48433 -18.37063,11.39473 -14.74924,0.0876 -17.13197,-11.30514 -17.04534,-13.86647 l -0.0866,-36.03447 6.0986,-1.30104 0,35.59416 c 0,0.97199 1.14017,9.95525 11.5631,9.86743 10.42097,-0.0896 17.7385,-6.48022 17.8153,-15.97784 l 0,-28.08346 5.67717,-1.51332 0.0886,48.93091 z"
- id="path558"
- style="fill-rule:evenodd" />
- <path
- d="m 451.87064,39.921526 -4.03094,3.19443 15.36958,20.00996 -16.51171,23.51197 4.25937,3.11842 15.5212,-21.83698 15.90124,21.9888 3.9561,-3.19423 -17.0414,-23.51 13.69573,-19.32823 -4.1865,-3.50024 -12.4768,17.88284 -14.45587,-18.33674 z"
- id="path559"
- style="fill-rule:evenodd" />
-</svg>
diff --git a/media/logos/legacy/arch-legacy-blue2.png b/media/logos/legacy/arch-legacy-blue2.png
deleted file mode 100644
index 8b5b791..0000000
--- a/media/logos/legacy/arch-legacy-blue2.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-blue2.svg b/media/logos/legacy/arch-legacy-blue2.svg
deleted file mode 100644
index 48b2833..0000000
--- a/media/logos/legacy/arch-legacy-blue2.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.0"
- width="300"
- height="236.54079"
- id="svg548">
- <defs
- id="defs550" />
- <path
- d="m 196.89851,51.451749 c 8.89425,1.58223 61.40163,17.33611 55.49847,37.99601 C 238.94042,137.67721 148.89442,153.83182 82.312057,156.12514 135.40853,145.19694 201.05242,124.87975 217.67009,93.774039 232.36316,65.058329 202.17425,56.200089 196.89851,51.451749 z"
- id="path553"
- style="fill-rule:evenodd" />
- <path
- d="M 220.18978,167.97814 C 217.81645,158.74851 194.87422,68.563159 145.82599,68.299459 124.73002,67.244639 104.13146,91.170339 92.858206,118.08379 80.893857,145.75401 80.572145,169.02762 62.760307,169.29666 45.6429,169.55903 55.90401,128.68661 64.078826,98.888759 72.253642,65.926119 98.623684,0.26454911 137.12377,8.3911402e-4 175.62418,-0.26287089 199.88493,61.707199 205.42237,78.056159 c 12.65778,41.137451 14.50371,79.110131 14.76741,89.921981 z"
- id="path568"
- style="fill:#759fbf;fill-rule:evenodd" />
- <path
- d="m 5.1916123,200.03665 2.0303188,-12.10604 c 1.9638428,-0.78044 7.0428569,-2.22731 13.1597839,-2.28665 20.504183,-0.1977 18.261535,15.56952 18.353881,19.68176 l -0.108682,29.06342 -9.655291,1.91294 -0.0016,-4.54164 c -1.412466,0.9548 -4.23903,4.54164 -11.773256,4.78034 -7.06556,0 -17.42797554,-4.30294 -17.19283481,-19.36406 0.00162166,-13.38688 11.30297381,-16.80936 19.31233281,-16.74835 6.348793,0.0493 8.367777,3.67752 8.242893,3.45682 0.132985,-3.7992 -0.543243,-6.59793 -7.881242,-6.80529 -4.432023,-0.12669 -14.4911711,3.00109 -14.4863037,2.95675 m 13.7711367,10.92553 c -4.164419,-0.059 -8.523432,3.00276 -8.596409,7.17101 0.0146,4.66199 4.709296,7.65141 8.242892,7.65141 3.531964,0 8.964528,-2.6307 8.949926,-7.41271 0,-5.25807 -4.594146,-7.3947 -8.596409,-7.40971 z"
- id="path578"
- style="fill-rule:evenodd" />
- <path
- d="m 44.716437,188.40034 -0.126685,48.12677 11.250916,-2.52902 0.05367,-27.28717 c 0.0083,-4.06291 5.256406,-8.87058 11.83033,-8.87058 1.400197,-2.8124 4.031567,-9.98807 4.673991,-11.62097 -14.690733,0.13002 -14.884427,4.84668 -17.442786,7.19535 -0.021,-4.42396 0,-7.08 0,-7.08 l -10.23944,2.06562 z"
- id="path579"
- style="fill-rule:evenodd" />
- <path
- d="m 107.54094,194.71257 c -0.10901,-0.0553 -5.38476,-8.11281 -16.961387,-8.0378 -10.842858,-0.075 -23.009569,4.71966 -23.2306,24.85383 0.07301,17.69882 11.650971,24.48277 23.228933,24.48444 12.391414,0 17.330444,-8.7779 17.626484,-8.9976 -1.47521,-1.40186 -7.00632,-7.15301 -7.00632,-7.15301 0,0 -3.465825,6.04719 -10.176102,6.19354 -6.711944,0.14802 -12.53743,-6.41457 -12.610773,-14.52737 -0.07468,-8.11281 4.12958,-13.7176 12.0937,-13.64292 8.922255,0 10.914535,3.90688 10.914535,3.90688 l 6.12153,-7.07999 z"
- id="path580"
- style="fill-rule:evenodd" />
- <path
- d="m 111.59684,236.2344 10.47048,-2.21197 0.15302,-29.50082 c 0.026,-3.09343 4.05123,-7.88978 10.76151,-7.81676 6.4159,0 7.83577,4.64698 7.81777,5.23573 l 0.14668,34.1458 10.32379,-2.13896 0.075,-36.21143 c 0.073,-3.48549 -6.87963,-10.76851 -18.06887,-10.69217 -8.07981,0.10735 -10.69984,3.23179 -11.06089,3.46582 l 0,-19.83946 -10.61983,2.87741 0.001,62.68681 z"
- id="path581"
- style="fill-rule:evenodd" />
- <path
- d="m 160.41504,178.04622 4.79301,-1.25384 0.0747,57.08203 -4.86769,0.88479 0,-56.71298 z"
- id="path582"
- style="fill-rule:evenodd" />
- <path
- d="m 173.39353,194.93393 4.20393,-1.9176 -0.073,40.93109 -4.05624,0.88479 -0.0747,-39.89828 z m -0.9578,-14.74874 3.39248,-2.8024 2.80206,3.09677 -3.39248,2.87541 -2.80206,-3.16978 z"
- id="path587"
- style="fill-rule:evenodd" />
- <path
- d="m 185.48857,194.04914 4.79301,-1.03281 0,8.55653 c 0,0.36772 2.6557,-9.58935 15.33982,-9.51467 12.31473,-0.0733 14.30534,9.44 14.232,11.57863 l 0.0733,30.08956 -4.20259,0.95947 0.0553,-29.72184 c 0.0503,-0.86846 -1.89793,-8.18582 -10.60049,-8.11281 -8.70255,0.075 -14.7494,6.49125 -14.7494,10.54615 l 0,26.18268 -4.86769,1.32719 -0.0733,-40.85808 z"
- id="path588"
- style="fill-rule:evenodd" />
- <path
- d="m 261.72595,233.46201 -4.793,1.03282 0,-8.55687 c 0,-0.36772 -2.65571,9.58968 -15.33983,9.51467 -12.31473,0.0733 -14.30534,-9.44 -14.232,-11.57863 l -0.0733,-30.08957 5.09205,-1.08648 0,29.72184 c 0,0.81179 0.95313,8.31284 9.65569,8.23983 8.70256,-0.075 14.81275,-5.41143 14.87642,-13.34188 l 0,-23.45029 4.74067,-1.26385 0.0733,40.85841 z"
- id="path589"
- style="fill-rule:evenodd" />
- <path
- d="m 271.22196,192.72495 -3.36681,2.66738 12.8338,16.70868 -13.7866,19.63309 3.55683,2.6037 12.96016,-18.23423 13.27753,18.36125 3.30313,-2.66737 -14.229,-19.63143 11.43494,-16.13927 -3.49482,-2.92274 -10.41847,14.93243 -12.07069,-15.31149 z"
- id="path590"
- style="fill-rule:evenodd" />
-</svg>
diff --git a/media/logos/legacy/arch-legacy-noodle-blue.png b/media/logos/legacy/arch-legacy-noodle-blue.png
deleted file mode 100644
index b24d34c..0000000
--- a/media/logos/legacy/arch-legacy-noodle-blue.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-noodle-blue.svg b/media/logos/legacy/arch-legacy-noodle-blue.svg
deleted file mode 100644
index 7b6485b..0000000
--- a/media/logos/legacy/arch-legacy-noodle-blue.svg
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="300"
- height="248.04204"
- id="svg1374">
- <defs
- id="defs1376">
- <linearGradient
- id="linearGradient21348">
- <stop
- id="stop21350"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21352"
- style="stop-color:#baa600;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21338">
- <stop
- id="stop21340"
- style="stop-color:#baa400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21346"
- style="stop-color:#baa600;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21342"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21344"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21320">
- <stop
- id="stop21322"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21326"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.583691" />
- <stop
- id="stop21324"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient16135">
- <stop
- id="stop16137"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop16139"
- style="stop-color:#c4a000;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#a4bfda;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#387cbf;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#f2f9ff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#91afcb;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="5.9534397"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.0495867,0,0,6.0495867,-259.76728,-20.230193)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-4.28975,5.8394365,-3.6097583,-2.6518002,-23.938604,-1.9370632)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.0495869,0,0,6.0495869,-259.76729,-20.2302)" />
- <linearGradient
- x1="7.9400997"
- y1="-5.1101465"
- x2="9.2488842"
- y2="4.7730908"
- id="linearGradient19853"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.791154,-0.487172,0.327682,1.176225,16.97405,35.22976)" />
- <linearGradient
- x1="11.441825"
- y1="-0.98001873"
- x2="13.598524"
- y2="-1.084087"
- id="linearGradient22817"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.05655608,-0.797121,1.172062,0.350025,16.04368,50.1682)" />
- </defs>
- <g
- transform="translate(251.65983,-6.571975)"
- id="layer1">
- <path
- d="m 39.59798,40.575378 a 21.213203,3.5355339 0 1 1 -42.4264064,0 21.213203,3.5355339 0 1 1 42.4264064,0 z"
- transform="matrix(6.0495869,0,0,6.0495869,-191.21125,-12.238777)"
- id="path4993"
- style="opacity:0.75800003;fill:url(#radialGradient5727);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m -53.325103,79.122679 c -0.805139,-5.217261 80.324496,15.610147 75.634753,51.174691 -3.015345,36.35793 -60.866652,70.03108 -165.42322,88.67164 -48.66595,6.76027 -70.2448,7.32405 -70.27155,3.78437 -0.45553,-3.11379 155.832978,-20.85096 194.253947,-89.01479 C 1.7246329,94.203881 -52.414609,85.022689 -53.325103,79.122679 z"
- id="path632"
- style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- transform="matrix(6.0495869,0,0,6.0495869,-259.76729,-21.299625)"
- id="g24322">
- <path
- d="m 12.334411,39.271398 c -0.436762,-1.829419 1.931982,-7.76804 5.038023,-10.471368 3.028568,-2.6359 5.42847,-3.947804 8.043372,-4.179892 1.057928,-0.0939 2.250475,1.366774 2.752005,2.995398 0.402297,1.306385 -0.584888,3.636245 -0.584888,3.636245 0,0 -3.297592,0.494824 -5.620374,2.817605 -2.359798,2.359798 -3.478152,6.706882 -3.478152,6.706882 0,0 -5.451721,1.419868 -6.149986,-1.50487 z"
- id="path13844"
- style="fill:url(#linearGradient19853);fill-opacity:1;fill-rule:evenodd;stroke:#665409;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" />
- <path
- d="m 1.53125,11.125 c -1.2356121,-5.28e-4 -3.151403,0.512926 -4.6875,1.21875 -0.7680485,0.352912 -1.2588617,0.558414 -1.7300154,0.891436 -0.3182438,0.224942 -0.2037074,0.573413 0.03125,0.78125 0.2372675,0.20988 0.3866735,0.423127 0.6908048,0.285477 C -2.9400117,13.546741 -1.2972757,12.809099 1.375,12.625 3.2322637,12.497049 5.7097,12.773677 7.4636539,13.72724 7.8712028,13.865065 8.0715674,13.669329 8.2873558,13.321715 8.433013,13.087076 8.6529123,12.915204 8.2200886,12.669122 6.3148155,11.453766 4.1279073,11.126109 1.53125,11.125 z"
- transform="matrix(0.878226,-0.765019,0.765019,0.878226,8.798994,21.17704)"
- id="path16157"
- style="fill:#fff38d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 15.658283,38.279044 c 1.646328,0.491659 2.930449,1.624039 2.866339,2.527633 -0.06411,0.90359 -1.452295,1.237913 -3.098622,0.746254 -1.646331,-0.491661 -2.930451,-1.62404 -2.866341,-2.527633 0.06411,-0.903593 1.452294,-1.237915 3.098624,-0.746254 z"
- id="path22815"
- style="fill:url(#linearGradient22817);fill-opacity:1;fill-rule:evenodd;stroke:#665409;stroke-width:0.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- <path
- d="m -17.282353,223.29125 c 1.285984,14.28348 0.828685,17.23763 -2.75941,17.01689 -4.654069,-0.30131 -3.868445,-6.32045 -5.23544,-10.36555 -14.589317,-49.57957 -47.757998,-126.71772 -97.567877,-126.71772 -49.5267,0 -70.87711,63.58974 -88.8382,116.07817 -2.65728,8.20346 -5.8993,20.7294 -22.41997,21.01991 -11.82886,0.0311 -15.04087,-11.01352 -14.46889,-18.16279 C -239.50634,101.90207 -196.08253,11.60732 -131.8307,9.6187545 -77.218442,7.9280903 -28.024526,103.95901 -17.282353,223.29125 z"
- id="path630"
- style="font-size:12px;fill:#dadada;fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:6.04958725;stroke-opacity:1" />
- <path
- d="m -17.282353,223.29125 c 1.285984,14.28348 0.828685,17.23763 -2.75941,17.01689 -4.654069,-0.30131 -3.868445,-6.32045 -5.23544,-10.36555 -14.589317,-49.57957 -47.757998,-126.71772 -97.567877,-126.71772 -49.5267,0 -70.87711,63.58974 -88.8382,116.07817 -2.65728,8.20346 -5.8993,20.7294 -22.41997,21.01991 -11.82886,0.0311 -15.04087,-11.01352 -14.46889,-18.16279 C -239.50634,101.90207 -196.08253,11.60732 -131.8307,9.6187545 -77.218442,7.9280903 -28.024526,103.95901 -17.282353,223.29125 z"
- id="path5053"
- style="font-size:12px;fill:url(#linearGradient7976);fill-opacity:1;fill-rule:evenodd;stroke:#003870;stroke-width:6.04958725;stroke-opacity:1" />
- <path
- d="m -131.40262,19.470217 c -27.61807,0.854768 -51.77849,20.625487 -70.8936,56.714878 -19.11511,36.089395 -32.02812,87.561055 -36.48657,146.702485 -0.13473,1.68406 0.32856,4.54389 1.1343,5.86055 0.80574,1.31664 0.72244,1.70899 3.59193,1.70143 5.80553,-0.10209 6.81365,-1.36324 8.50725,-3.59194 1.69359,-2.22869 3.10693,-6.17135 4.53718,-10.58678 -6e-4,-0.0629 -6e-4,-0.12603 0,-0.18904 8.97344,-26.22348 18.8045,-55.6975 33.46178,-79.58988 14.65727,-23.89239 35.70252,-43.103312 64.65496,-43.103312 29.954241,0 52.978744,22.593492 70.137399,49.341952 7.780145,12.12838 20.442886,45.93839 20.039257,38.75516 C -33.89118,160.62016 -52.016958,103.46602 -66.74766,75.617947 -76.56813,57.052569 -87.544568,42.40226 -98.697042,32.892739 -109.84951,23.383216 -120.65813,19.137594 -131.40262,19.470217 z"
- id="path5786"
- style="font-size:12px;fill:url(#radialGradient8714);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m -22.131956,92.065261 c 6.792228,5.315724 12.1805169,13.016149 12.8577197,21.804029 0.7201852,8.15085 -1.6370187,16.48148 -5.8980507,23.38302 -1.02797,1.9673 -5.375832,4.96331 -4.603524,5.95405 8.085672,-1.66912 11.1676707,-4.73326 17.9493364,-8.57688 6.9830498,-3.95777 11.1947055,6.89359 16.9372876,-3.05285 4.680682,-8.10719 0.02572,-14.7689 -5.025155,-19.91417 -7.6380573,-8.00725 -17.4975108,-13.508561 -27.505602,-17.997985 -1.551042,-0.590535 -3.173971,-0.972156 -4.712012,-1.599214 z"
- id="path9450"
- style="font-size:12px;fill:url(#linearGradient11647);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-noodle-box.png b/media/logos/legacy/arch-legacy-noodle-box.png
deleted file mode 100644
index 1162ed6..0000000
--- a/media/logos/legacy/arch-legacy-noodle-box.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-noodle-box.svg b/media/logos/legacy/arch-legacy-noodle-box.svg
deleted file mode 100644
index 8f17f00..0000000
--- a/media/logos/legacy/arch-legacy-noodle-box.svg
+++ /dev/null
@@ -1,775 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="250"
- height="264.74301"
- id="svg2895">
- <defs
- id="defs2897">
- <linearGradient
- id="linearGradient36806">
- <stop
- id="stop36808"
- style="stop-color:#e9ebe8;stop-opacity:1"
- offset="0" />
- <stop
- id="stop36810"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient33893">
- <stop
- id="stop33895"
- style="stop-color:#d5d9d3;stop-opacity:1"
- offset="0" />
- <stop
- id="stop33897"
- style="stop-color:#eef0ed;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient30967">
- <stop
- id="stop30969"
- style="stop-color:#f8f8f7;stop-opacity:1"
- offset="0" />
- <stop
- id="stop30971"
- style="stop-color:#e6e6e3;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient25143">
- <stop
- id="stop25145"
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0" />
- <stop
- id="stop25147"
- style="stop-color:#9fa896;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient23683">
- <stop
- id="stop23685"
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="0" />
- <stop
- id="stop23687"
- style="stop-color:#d3d7cf;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient14834">
- <stop
- id="stop14836"
- style="stop-color:#eeeeec;stop-opacity:1"
- offset="0" />
- <stop
- id="stop14838"
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient36029">
- <stop
- id="stop36031"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop36037"
- style="stop-color:#000000;stop-opacity:0.49803922"
- offset="0.7639485" />
- <stop
- id="stop36033"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient19847">
- <stop
- id="stop19849"
- style="stop-color:#d8d8d3;stop-opacity:1"
- offset="0" />
- <stop
- id="stop19851"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient18995">
- <stop
- id="stop18997"
- style="stop-color:#729fcf;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18999"
- style="stop-color:#345180;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient18261">
- <stop
- id="stop18263"
- style="stop-color:#cecece;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18265"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient17527">
- <stop
- id="stop17529"
- style="stop-color:#eeeeec;stop-opacity:1"
- offset="0" />
- <stop
- id="stop17531"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13880">
- <stop
- id="stop13882"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop13884"
- style="stop-color:#edeeeb;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13872">
- <stop
- id="stop13874"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop13876"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19001"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#dadada;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#e1e1e1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#c1c1c1;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient19071"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19073"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19075"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19077"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19080"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.24651,27.80721)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19084"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.2465,27.80722)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19089"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19098"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.2465,27.80722)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19100"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19102"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.24651,27.80721)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19105"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.412385,0,0,0.412385,-45.67954,21.62447)" />
- <linearGradient
- x1="15.588248"
- y1="24.995495"
- x2="30.506712"
- y2="27.646311"
- id="linearGradient19853"
- xlink:href="#linearGradient19847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.341723,0,0,2.393257,9.840567,-34.82516)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19857"
- xlink:href="#linearGradient19847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19861"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19869"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="31.78125"
- y1="43.1875"
- x2="16.90625"
- y2="32.0625"
- id="linearGradient39022"
- xlink:href="#linearGradient23683"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="13.401031"
- y1="13.558653"
- x2="5.976409"
- y2="7.3714681"
- id="linearGradient39024"
- xlink:href="#linearGradient25143"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="31.484558"
- y1="3.8232443"
- x2="13.011393"
- y2="13.457574"
- id="linearGradient39026"
- xlink:href="#linearGradient14834"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="13.633828"
- y1="8.5078268"
- x2="31.806158"
- y2="8.5078268"
- id="linearGradient39028"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="38.422016"
- y1="13.591799"
- x2="27.733131"
- y2="21.635138"
- id="linearGradient39030"
- xlink:href="#linearGradient30967"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="34.562054"
- y1="23.513792"
- x2="13.48508"
- y2="13.640475"
- id="linearGradient39032"
- xlink:href="#linearGradient14834"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.014523,0,0,1.009511,-0.142602,-0.293856)" />
- <linearGradient
- x1="12.47126"
- y1="18.443405"
- x2="33.490791"
- y2="18.443405"
- id="linearGradient39034"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="11.386287"
- y1="23.346619"
- x2="38.100643"
- y2="26.44021"
- id="linearGradient39036"
- xlink:href="#linearGradient33893"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="9.2837515"
- y1="24.937609"
- x2="35.983704"
- y2="24.937609"
- id="linearGradient39038"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="265.71939"
- y1="424.07321"
- x2="265.71939"
- y2="70.893417"
- id="linearGradient9132"
- xlink:href="#linearGradient8340"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.996493,0,0,0.979476,-7.530071,28.93933)" />
- <linearGradient
- x1="265.71939"
- y1="424.07321"
- x2="265.71939"
- y2="70.893417"
- id="linearGradient9128"
- xlink:href="#linearGradient8340"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.002771,0,0,0.997237,-9.142415,24.39389)" />
- <linearGradient
- x1="265.71939"
- y1="424.07321"
- x2="265.71939"
- y2="70.893417"
- id="linearGradient9118"
- xlink:href="#linearGradient8340"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.002771,0,0,0.997237,-9.142415,24.39389)" />
- <linearGradient
- x1="265.71939"
- y1="424.07321"
- x2="265.71939"
- y2="70.893417"
- id="linearGradient8348"
- xlink:href="#linearGradient8340"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.002771,0,0,0.997237,-9.142415,24.39389)" />
- <linearGradient
- x1="0.91787434"
- y1="0.10156304"
- x2="0.78743958"
- y2="0.24218753"
- id="linearGradient662"
- xlink:href="#linearGradient655" />
- <linearGradient
- x1="0.63565892"
- y1="0.070311584"
- x2="0.62790698"
- y2="0.34375"
- id="linearGradient659"
- xlink:href="#linearGradient652" />
- <linearGradient
- x1="311.32385"
- y1="56.541351"
- x2="347.72528"
- y2="225.29604"
- id="linearGradient648"
- xlink:href="#linearGradient652"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.997115,0,0,0.325012,5.000114,48.46051)" />
- <linearGradient
- x1="0.68115938"
- y1="0.031252056"
- x2="0.0096617993"
- y2="1.109375"
- id="linearGradient646"
- xlink:href="#linearGradient639" />
- <linearGradient
- x1="0.51162791"
- y1="0.2421875"
- x2="0.50387597"
- y2="0.84375"
- id="linearGradient642"
- xlink:href="#linearGradient643" />
- <linearGradient
- id="linearGradient39231">
- <stop
- id="stop39233"
- style="stop-color:#000000;stop-opacity:0.66670001"
- offset="0" />
- <stop
- id="stop39235"
- style="stop-color:#ffffff;stop-opacity:0.66670001"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient643">
- <stop
- id="stop644"
- style="stop-color:#001e87;stop-opacity:1"
- offset="0" />
- <stop
- id="stop645"
- style="stop-color:#85aee8;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient649">
- <stop
- id="stop650"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop651"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient652">
- <stop
- id="stop653"
- style="stop-color:#ffffff;stop-opacity:0.74119997"
- offset="0" />
- <stop
- id="stop654"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient655">
- <stop
- id="stop656"
- style="stop-color:#ffffff;stop-opacity:0.91759998"
- offset="0" />
- <stop
- id="stop657"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2999">
- <stop
- id="stop3001"
- style="stop-color:#001e87;stop-opacity:0"
- offset="0" />
- <stop
- id="stop3007"
- style="stop-color:#d2dce8;stop-opacity:1"
- offset="0.01" />
- <stop
- id="stop3003"
- style="stop-color:#d2dce8;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8340">
- <stop
- id="stop8342"
- style="stop-color:#b7b7b7;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8344"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="11.386287"
- y1="23.346619"
- x2="38.100643"
- y2="26.44021"
- id="linearGradient45113"
- xlink:href="#linearGradient33893"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.7595392,-5.2625201,-234.81394)" />
- <linearGradient
- x1="9.2837515"
- y1="24.937609"
- x2="35.983704"
- y2="24.937609"
- id="linearGradient45115"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.7595392,-5.2625201,-234.81394)" />
- <linearGradient
- x1="34.562054"
- y1="23.513792"
- x2="13.48508"
- y2="13.640475"
- id="linearGradient45119"
- xlink:href="#linearGradient14834"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.843185,0,0,5.8143183,-6.083842,-236.50642)" />
- <linearGradient
- x1="12.47126"
- y1="18.443405"
- x2="33.490791"
- y2="18.443405"
- id="linearGradient45121"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.7595392,-5.2625201,-234.81394)" />
- <linearGradient
- x1="38.422016"
- y1="13.591799"
- x2="27.733131"
- y2="21.635138"
- id="linearGradient45124"
- xlink:href="#linearGradient30967"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.7595392,-5.2625201,-234.81394)" />
- <linearGradient
- x1="31.484558"
- y1="3.8232443"
- x2="13.011393"
- y2="13.457574"
- id="linearGradient45127"
- xlink:href="#linearGradient14834"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.2469517,-5.2625201,-227.62179)" />
- <linearGradient
- x1="13.633828"
- y1="8.5078268"
- x2="31.806158"
- y2="8.5078268"
- id="linearGradient45129"
- xlink:href="#linearGradient36806"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.2469517,-5.2625201,-227.62179)" />
- <linearGradient
- x1="13.401031"
- y1="13.558653"
- x2="5.976409"
- y2="7.3714681"
- id="linearGradient45132"
- xlink:href="#linearGradient25143"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.7595392,0,0,5.7595392,-5.2625201,-234.81394)" />
- <linearGradient
- x1="31.78125"
- y1="43.1875"
- x2="16.90625"
- y2="32.0625"
- id="linearGradient48795"
- xlink:href="#linearGradient23683"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="24.262602"
- cy="44.287689"
- r="15.77732"
- fx="24.262602"
- fy="44.287689"
- id="radialGradient2178"
- xlink:href="#linearGradient36029"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.184874,0,36.10005)" />
- </defs>
- <g
- transform="translate(-2.296875,217.7153)"
- id="layer1">
- <path
- d="m 40.039922,44.287689 a 15.77732,2.9168155 0 1 1 -31.5546401,0 15.77732,2.9168155 0 1 1 31.5546401,0 z"
- transform="matrix(5.7595392,0,0,5.7595392,-12.444533,-224.84847)"
- id="path1443"
- style="opacity:0.50349851;fill:url(#radialGradient2178);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="M 200.54192,-98.161645 189.46432,33.0467 63.156382,33.0467 52.078779,-98.161645"
- id="rect1421"
- style="fill:#f0f1ef;fill-opacity:1;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:5.75953913;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 11.78125,25.375 1.625,19.875 18.875,0 1.625,-19.875 -22.125,0 z"
- transform="matrix(5.7595392,0,0,5.7595392,-5.2625203,-236.34118)"
- id="path4393"
- style="fill:url(#linearGradient48795);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 62.953687,-171.65896 123.705503,0 16.29044,73.306951 -152.468311,0 12.472368,-73.306951 z"
- id="rect38282"
- style="fill:#4f4f4f;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 29.498177,-193.49181 -17.360957,43.34564 47.925316,48.52001 12.033389,-55.05376 -42.597748,-36.81189 z"
- id="path14842"
- style="fill:url(#linearGradient45132);fill-opacity:1;fill-rule:evenodd;stroke:#e9ebe8;stroke-width:5.75953913;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 72.556877,-156.62488 107.506963,0 -2.67266,-52.35354 -102.161651,0 -2.672652,52.35354 z"
- id="path2163"
- style="fill:url(#linearGradient45127);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient45129);stroke-width:5.4972744;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 225.32836,-193.74634 17.38405,43.34563 -49.69943,49.41089 -12.28332,-56.51611 44.5987,-36.24041 z"
- id="path17751"
- style="fill:url(#linearGradient45124);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:5.75953913;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" />
- <path
- d="m 71.945416,-157.10628 108.507274,0 13.61864,57.03568 -134.344591,0 12.218677,-57.03568 z"
- id="rect1424"
- style="fill:url(#linearGradient45119);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient45121);stroke-width:5.75953913;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 121.1936,-89.787379 c -12.17449,0.376795 -22.307645,9.067357 -29.645955,22.940325 -7.338321,13.872962 -12.0033,33.023586 -13.646554,54.821478 -0.122737,1.534133 0.07346,3.4325697 1.058788,5.0586316 0.985325,1.6260677 2.876066,2.8300994 5.411565,2.8234241 2.795075,-0.049153 4.868821,-0.9605011 6.235058,-2.3528525 1.366238,-1.392357 2.088875,-3.1318991 2.588135,-4.5880662 l 0.11765,-0.235277 0,-0.117645 c 1.74115,0.780303 8.546563,0.483197 23.881473,-1.646997 1.17738,-0.209918 2.2672,-0.367856 3.41162,-0.588216 1.14444,-0.220355 2.30036,-0.475318 3.41164,-0.705855 1.1113,-0.230525 2.21602,-0.465434 3.294,-0.70586 1.07797,-0.240421 2.13187,-0.455799 3.17635,-0.705849 1.04448,-0.250062 2.04792,-0.564078 3.0587,-0.823505 1.0108,-0.259409 2.08178,-0.554989 3.05872,-0.823493 0.97695,-0.268498 1.88052,-0.546189 2.82342,-0.823505 0.94291,-0.27731 1.91473,-0.53763 2.82343,-0.823498 0.9087,-0.285852 1.71383,-0.529366 2.58813,-0.823494 0.87432,-0.294134 1.74842,-0.639009 2.58814,-0.941149 0.83975,-0.302122 1.66551,-0.631285 2.4705,-0.941131 0.80499,-0.309864 1.58279,-0.623839 2.35285,-0.941144 0.22571,-0.09301 0.48316,-0.141656 0.70586,-0.235283 2.34695,5.698759 4.42329,10.876274 5.41157,14.2347649 0.1595,0.4719655 0.21497,1.4099813 0.47057,2.3528409 0.12779,0.4714356 0.39919,0.938995 0.82349,1.4117149 0.4243,0.4727315 1.0646,0.7781829 1.76465,0.823499 0.50202,0.030889 1.24575,-0.0087 1.76462,-0.4705659 0.51889,-0.461869 0.60942,-1.0469806 0.70588,-1.6469921 0.19289,-1.2000576 0.116,-2.8165241 -0.11763,-5.4115647 -0.46775,-5.196049 -1.15131,-10.271125 -1.99992,-15.175914 -0.042,-0.176409 -0.0755,-0.294877 -0.11763,-0.470566 9.29338,-5.348711 14.537,-11.478733 15.05828,-17.764043 0.40401,-12.815528 -27.46561,-20.23226 -27.17546,-18.35226 0.32808,2.126048 19.75013,5.400162 12.23483,19.646324 -0.86531,1.535171 -1.88575,2.95643 -3.05871,4.352784 -0.18496,0.220192 0.42674,0.489031 0.23483,0.705855 -3.89662,-15.353244 -9.60915,-27.022388 -14.94015,-35.292798 -6.80442,-10.556198 -14.5616,-16.019864 -22.82268,-15.764118 z m 0.11764,2.588141 c 7.0576,-0.218494 13.92535,4.434741 20.46982,14.587693 6.53142,10.132693 12.61955,25.628762 17.52875,46.233559 l -0.11763,0 c 0.83706,4.837979 1.53878,9.817746 1.99994,14.940626 0.20684,2.2973876 0.29706,3.5240888 0.23529,4.2351327 -0.1305,-0.5441095 -0.27014,-1.411617 -0.58823,-2.3528524 -1.31432,-4.4665633 -3.08887,-9.5122823 -7.1762,-18.8228243 0.001,-0.03919 0.001,-0.07846 0,-0.11765 -4.18077,-8.28114 -8.41861,-15.046192 -13.17599,-19.881613 -4.75735,-4.835415 -10.07616,-7.764417 -15.99938,-7.764417 -9.47877,0 -16.3314,6.187593 -21.41097,14.470053 -5.079577,8.282454 -8.646794,18.780112 -11.881915,28.234235 l -0.352928,1.058781 0,0.235289 -0.11765,0.235295 c -0.457083,1.333113 -1.080006,2.5917685 -1.999926,3.5292717 -0.919931,0.9375148 -2.105354,1.6074816 -4.352777,1.6470036 -1.72698,0.00454 -2.567234,-0.6417681 -3.176358,-1.6470036 -0.609122,-1.0052239 -0.789229,-2.3695547 -0.705854,-3.4116287 1.623557,-21.536599 6.318762,-40.354465 13.41126,-53.762701 7.092508,-13.408241 16.432358,-21.30647 27.410748,-21.646249 z m 3.17635,33.763439 c 5.09965,0 9.67115,2.304373 14.11712,6.823273 3.60061,3.659693 7.47256,9.532367 10.85166,15.64648 -1.26244,0.827254 -3.03135,1.592133 -4.38131,2.352858 -3.61208,2.035416 -7.55598,3.817994 -11.52899,5.411566 -3.97301,1.59356 -8.05215,3.033013 -11.99955,4.235127 -3.94739,1.202114 -7.75847,2.19765 -11.29369,3.058707 -3.53523,0.861057 -6.79255,1.547179 -9.52906,2.117564 -2.736523,0.570401 -4.919065,1.081589 -6.470345,1.411714 -0.448789,0.09552 -0.377123,0.157173 -0.70586,0.235289 l 0,-0.117644 0.11765,-0.235283 c 3.23708,-9.459859 6.800355,-19.861639 11.646625,-27.763669 4.84627,-7.902036 10.8078,-13.175982 19.17576,-13.175982 z"
- id="path632"
- style="font-size:12px;fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 185.34223,-168.39924 42.29661,-34.73723 21.77827,54.17565 -48.05617,47.78618 28.97769,24.928001 -208.063354,0 30.147589,-24.928001 -47.2462204,-47.78618 21.9582424,-54.17565 40.13679,34.73723 2.519798,-46.43629 113.030955,0 2.5198,46.43629 z"
- id="path5121"
- style="fill:none;stroke:#4f4f4f;stroke-width:5.75953913;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 57.10249,-73.460307 138.46164,0.03089 -4.03797,50.905043 C 146.10517,-28.841847 103.7931,-50.834446 58.36239,-57.081617 l -1.2599,-16.37869 z"
- id="rect47340"
- style="opacity:0.34265131;fill:#87927c;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 72.908521,-157.30393 c -9.103257,18.3141 2.595921,40.65658 20.246277,48.53673 14.436812,7.70638 36.190162,5.83663 44.410212,-9.89615 8.3254,-15.39853 -2.68255,-34.77559 -18.33662,-39.96746 -12.00324,-5.30536 -29.700759,-0.49422 -32.125151,13.90778 -3.408743,16.5544 18.668811,31.97598 32.370381,21.23878 8.17356,-6.75952 2.64973,-21.28809 -7.76793,-21.74352 -13.009189,-3.39709 -7.76942,17.6184 -1.00216,11.02957 -2.81429,-2.94459 -3.75659,-7.92213 -0.13991,-3.88879 12.5586,1.25028 -0.40324,17.69662 -8.56882,9.58181 -9.123365,-4.00748 -10.320128,-18.34949 -1.19672,-23.07094 15.76732,-8.46535 37.26845,9.29013 31.05728,26.4564 -4.90748,14.58278 -23.86803,16.88983 -35.935839,10.29798 -15.218337,-6.60437 -24.144605,-26.88898 -14.61236,-41.53623 9.751891,-15.5834 32.247289,-16.01405 46.808919,-7.34252 17.59219,8.84611 27.9685,32.35176 17.85916,50.32695 -5.52971,4.65801 -2.82088,7.49605 2.16478,10.51354 14.84487,-16.1335 10.98519,-42.81962 -4.32586,-57.26942 -15.72087,-16.29742 -44.51023,-22.85497 -63.005038,-7.47945 -3.30396,2.84414 -6.018568,6.3714 -7.900601,10.30494 z"
- id="path2180"
- style="fill:#fffa66;fill-opacity:1;fill-rule:evenodd;stroke:#554500;stroke-width:2.87976956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 124.97164,-157.30392 c -6.78915,18.31409 1.93603,40.65657 15.09955,48.53672 10.7669,7.70638 26.9904,5.83663 33.12088,-9.89615 6.20902,-15.39854 -2.00064,-34.77559 -13.67535,-39.96744 -8.95195,-5.30538 -22.15064,-0.49424 -23.95874,13.90775 -2.54222,16.55442 13.9231,31.97598 24.14164,21.23879 6.09579,-6.75952 1.97614,-21.28809 -5.79328,-21.74352 -9.70217,-3.39709 -5.79438,17.6184 -0.7474,11.02957 -2.09886,-2.94459 -2.80165,-7.92214 -0.10437,-3.88879 9.36612,1.25028 -0.30074,17.69663 -6.39059,9.58181 -6.80415,-4.00748 -7.69669,-18.34949 -0.8925,-23.07094 11.75918,-8.46535 27.79459,9.29013 23.16234,26.4564 -3.65996,14.58278 -17.80064,16.88983 -26.80074,10.29798 -11.34974,-6.60437 -18.00689,-26.88898 -10.89781,-41.53623 7.2729,-15.5834 24.04985,-16.01404 34.90981,-7.34252 13.12015,8.84611 20.85874,32.35176 13.31926,50.32695 -4.12403,4.65802 -2.10378,7.49605 1.61449,10.51354 11.07121,-16.13351 8.19268,-42.81963 -3.22622,-57.26942 -11.72453,-16.29742 -33.19545,-22.85497 -46.98877,-7.47945 -2.46407,2.84414 -4.48861,6.3714 -5.89222,10.30495 z"
- id="path4422"
- style="fill:#fffa66;fill-opacity:1;fill-rule:evenodd;stroke:#554500;stroke-width:2.87976956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 192.02729,-138.98778 c 8.66685,14.08532 -2.47147,31.26885 -19.27566,37.32945 -13.74472,5.926957 -34.4552,4.488932 -42.2812,-7.61109 -7.92628,-11.84298 2.55398,-26.74581 17.45759,-30.73885 11.4278,-4.08035 28.27689,-0.3801 30.58505,10.69642 3.24532,12.73195 -17.77383,24.59263 -30.81854,16.33469 -7.78171,-5.19873 -2.52269,-16.37261 7.39553,-16.72288 12.38553,-2.61268 7.39696,13.55025 0.95412,8.48281 2.67936,-2.26467 3.57653,-6.09289 0.1332,-2.99085 -11.95655,0.96158 0.38391,13.61041 8.15804,7.36933 8.68597,-3.08214 9.82537,-14.11253 1.13935,-17.74378 -15.01144,-6.51069 -35.4818,7.145 -29.56839,20.34753 4.6722,11.21558 22.72379,12.98992 34.21306,7.92014 14.48878,-5.0794 22.98712,-20.68023 13.91185,-31.94538 -9.28438,-11.98514 -30.70136,-12.31635 -44.5649,-5.64712 -16.74882,6.80353 -26.62771,24.88164 -17.003,38.70631 5.2646,3.58245 2.68567,-3.0941 -2.06098,-0.77335 -14.13323,-12.40822 -10.45857,-24.07316 4.11847,-35.18646 14.96721,-12.5343 42.37641,-17.57768 59.98458,-5.75242 3.14556,2.18742 5.73005,4.90024 7.52183,7.9255 z"
- id="path4418"
- style="fill:#fffa66;fill-opacity:1;fill-rule:evenodd;stroke:#554500;stroke-width:2.87976956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 60.393249,-100.36747 133.049121,0 21.42102,18.365301 -176.611108,0 22.140967,-18.365301 z"
- id="rect2158"
- style="fill:url(#linearGradient45113);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient45115);stroke-width:5.75954056;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 129.62822,-102.88026 c 9.49834,-10.46229 14.12292,-25.6723 7.5594,-38.87688 -1.88198,-3.93352 -4.61544,-7.41505 -7.91936,-10.25919 -9.24741,-7.68776 -21.10311,-9.85398 -32.577404,-8.09935 -11.474297,1.75462 -22.557131,7.51004 -30.417566,15.65875 -15.31105,14.44978 -19.164533,41.10192 -4.319655,57.23542 4.98567,-3.017492 7.689532,-5.961147 2.159827,-10.61915 -10.109338,-17.9752 0.226379,-41.36987 17.818575,-50.21598 14.561624,-8.67152 37.044343,-8.20399 46.796253,7.37941 8.34072,12.81634 2.23407,29.2897 -9.53923,37.79697 m -36.357095,0 c -1.83272,-1.91981 -3.736426,-3.85671 -4.679626,-6.65946 -6.211173,-17.16628 15.370206,-34.92325 31.137511,-26.45789 9.1234,4.72144 7.86347,19.03067 -1.2599,23.03816 -8.165588,8.11482 -21.017919,-8.28896 -8.459324,-9.53924 3.616704,-4.03334 2.634294,1.0151 -0.179986,3.95969 6.76726,6.58882 11.92928,-14.5562 -1.079914,-11.15911 -10.417646,0.45542 -15.912932,15.01874 -7.73938,21.77826 13.701564,10.737193 35.806134,-4.68389 32.397404,-21.23831 -1.81829,-10.80148 -12.16327,-16.22868 -22.31821,-16.01871 -3.38498,0.07 -6.898397,0.83349 -9.899209,2.15983 -15.65407,5.19186 -26.503947,24.55825 -18.178545,39.9568 0.04178,0.08 0.179985,0.17998 0.179985,0.17998"
- id="path4420"
- style="fill:#fffa66;fill-opacity:1;fill-rule:evenodd;stroke:#554500;stroke-width:2.87976956;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-noodle-cup.png b/media/logos/legacy/arch-legacy-noodle-cup.png
deleted file mode 100644
index b4f9307..0000000
--- a/media/logos/legacy/arch-legacy-noodle-cup.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-noodle-cup.svg b/media/logos/legacy/arch-legacy-noodle-cup.svg
deleted file mode 100644
index 8d6a044..0000000
--- a/media/logos/legacy/arch-legacy-noodle-cup.svg
+++ /dev/null
@@ -1,474 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="200"
- height="232.31387"
- id="svg2895">
- <defs
- id="defs2897">
- <linearGradient
- id="linearGradient36029">
- <stop
- id="stop36031"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop36037"
- style="stop-color:#000000;stop-opacity:0.49803922"
- offset="0.7639485" />
- <stop
- id="stop36033"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient19847">
- <stop
- id="stop19849"
- style="stop-color:#d8d8d3;stop-opacity:1"
- offset="0" />
- <stop
- id="stop19851"
- style="stop-color:#ffffff;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient18995">
- <stop
- id="stop18997"
- style="stop-color:#729fcf;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18999"
- style="stop-color:#345180;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient18261">
- <stop
- id="stop18263"
- style="stop-color:#cecece;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18265"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient17527">
- <stop
- id="stop17529"
- style="stop-color:#eeeeec;stop-opacity:1"
- offset="0" />
- <stop
- id="stop17531"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13880">
- <stop
- id="stop13882"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop13884"
- style="stop-color:#edeeeb;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13872">
- <stop
- id="stop13874"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop13876"
- style="stop-color:#a8b0a1;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19001"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#dadada;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#e1e1e1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#c1c1c1;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient19071"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19073"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19075"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19077"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19080"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.24651,27.80721)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19084"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.2465,27.80722)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19089"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient19098"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.2465,27.80722)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient19100"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19102"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.493381,0,0,0.493381,-42.24651,27.80721)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient19105"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.412385,0,0,0.412385,-45.67954,21.62447)" />
- <linearGradient
- x1="15.588248"
- y1="24.995495"
- x2="30.506712"
- y2="27.646311"
- id="linearGradient19853"
- xlink:href="#linearGradient19847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.341723,0,0,2.393257,9.840567,-34.82516)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19857"
- xlink:href="#linearGradient19847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19861"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="14.595432"
- y1="25.7218"
- x2="32.016243"
- y2="43.399467"
- id="linearGradient19869"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient33818"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.436773,0.522591,-0.476132,-0.397944,32.37619,9.556039)" />
- <linearGradient
- x1="16.10977"
- y1="33.78125"
- x2="24.845407"
- y2="37.786808"
- id="linearGradient33820"
- xlink:href="#linearGradient19847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99225,0,0,1,0.185736,0)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="-3.9460521"
- id="linearGradient35282"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.1089431,0,0,2.1089431,39.225419,-70.464662)" />
- <linearGradient
- x1="12.422917"
- y1="22.117067"
- x2="33.03495"
- y2="43.351715"
- id="linearGradient35299"
- xlink:href="#linearGradient18995"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.1140151,0,0,5.1140151,-34.00968,-193.83759)" />
- <linearGradient
- x1="18.746035"
- y1="15.474086"
- x2="25.149832"
- y2="20.9375"
- id="linearGradient35301"
- xlink:href="#linearGradient13880"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="29"
- cy="42.3125"
- r="16.375"
- fx="29"
- fy="42.3125"
- id="radialGradient36035"
- xlink:href="#linearGradient36029"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.935227,-1.310122e-6,2.442748e-7,0.174375,1.878411,34.93429)" />
- </defs>
- <g
- transform="translate(-8.266785,185.56388)"
- id="layer1">
- <path
- d="m 45.375,42.3125 a 16.375,3.5625 0 1 1 -32.75,0 16.375,3.5625 0 1 1 32.75,0 z"
- transform="matrix(5.1140151,0,0,5.1140151,-23.781651,-187.85544)"
- id="path33822"
- style="opacity:0.64351585;fill:url(#radialGradient36035);fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <path
- d="m 18.226332,-154.97217 141.000698,0 -2.83097,57.514384 -11.59786,123.906828 c 0,0 -9.35469,17.370116 -56.071523,17.370116 -47.081715,0 -56.071519,-17.370116 -56.071519,-17.370116 L 21.057303,-97.457786 18.226332,-154.97217 z"
- id="rect2909"
- style="fill:url(#linearGradient35299);fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:5.11401558;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 10.920596,-153.28598 155.612174,0.36529 -9.58878,31.2496 -2.28305,31.61488 c 0,0 -19.21743,14.000838 -65.934263,14.000838 -47.081715,0 -65.934261,-15.461984 -65.934261,-15.461984 l -2.283044,-30.884314 -9.588776,-30.88431 z"
- id="path7304"
- style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 88.726682,-76.215241 0,-40.912119"
- id="path8032"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 30.235134,-87.734764 0,-26.848576 -3.515885,-15.02242"
- id="path9492"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 48.453813,-79.314825 0,-25.570075 -2.237382,-16.30092"
- id="path9494"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 68.270622,-76.990137 0,-27.807453 -1.278504,-13.74392"
- id="path9496"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 146.57898,-87.734764 0,-26.848576 3.51588,-15.02242"
- id="path10230"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 128.3603,-79.314825 0,-25.570075 2.23738,-16.30092"
- id="path10232"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 108.54349,-76.990137 0,-27.807453 1.2785,-13.74392"
- id="path10234"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 10.920596,-153.28598 155.612174,0.36529 -9.58878,31.2496 -2.28305,31.61488 c -32.63295,0 -26.09489,-27.37324 -134.151568,-38.67373 l -9.588776,-24.55604 z"
- id="path11688"
- style="opacity:0.49999988;fill:#535b4c;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 10.920596,-153.28598 155.612174,0.36529 -9.58878,31.2496 -2.28305,31.61488 c 0,0 -19.21743,14.000838 -65.934263,14.000838 -47.081715,0 -65.934261,-15.461984 -65.934261,-15.461984 l -2.283044,-30.884314 -9.588776,-30.88431 z"
- id="path14616"
- style="fill:none;stroke:#323232;stroke-width:5.1140151;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 39.714286,17.214285 a 13.785714,5 0 1 1 -27.571428,0 13.785714,5 0 1 1 27.571428,0 z"
- transform="matrix(5.6509867,0,0,5.6509867,-57.795334,-252.02963)"
- id="path2903"
- style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:0.90497738;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 25.9375,13.5 c -3.680316,0 -7.012901,0.540575 -9.3125,1.375 -1.1498,0.417212 -2.038404,0.925563 -2.5625,1.375 -0.524096,0.449437 -0.625,0.751777 -0.625,0.96875 0,0.216973 0.100904,0.519313 0.625,0.96875 0.524096,0.449437 1.4127,0.957788 2.5625,1.375 2.299599,0.834425 5.632184,1.375 9.3125,1.375 3.680316,0 7.012901,-0.540575 9.3125,-1.375 1.149799,-0.417212 2.038404,-0.925563 2.5625,-1.375 0.524096,-0.449437 0.625,-0.751777 0.625,-0.96875 0,-0.216973 -0.100904,-0.519313 -0.625,-0.96875 C 37.288404,15.800563 36.3998,15.292212 35.25,14.875 32.950401,14.040575 29.617816,13.5 25.9375,13.5 z"
- transform="matrix(5.6509867,0,0,5.6509867,-57.795334,-252.02963)"
- id="path12418"
- style="fill:url(#linearGradient35301);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 111.19306,-35.829326 c -0.28068,-1.818779 28.00187,5.441849 26.36698,17.839981 -1.05118,12.6747179 -21.21868,24.4134947 -57.66808,30.911766 -16.965408,2.356692 -24.487996,2.553229 -24.497319,1.319263 -0.158805,-1.085496 54.324829,-7.2688363 67.718739,-31.031389 7.27053,-13.782168 -11.60292,-16.982821 -11.92032,-19.039621 z"
- id="path632"
- style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 123.75789,14.429143 c 0.4483,4.979358 0.28888,6.009203 -0.96196,5.932247 -1.62245,-0.105041 -1.34857,-2.203368 -1.82512,-3.613527 -5.08597,-17.28389301 -16.64888,-44.174955 -34.013056,-44.174955 -17.265467,0 -24.708415,22.1679673 -30.969815,40.465913 -0.926348,2.859799 -2.05655,7.226457 -7.815806,7.327735 -4.12365,0.01084 -5.243384,-3.839414 -5.043984,-6.331719 3.160415,-41.92307 18.298361,-73.400646 40.697133,-74.093881 19.038328,-0.589385 36.187778,32.887873 39.932608,74.488187 z"
- id="path630"
- style="font-size:12px;fill:#dadada;fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:5.1140151;stroke-opacity:1" />
- <path
- d="m 123.75789,14.429143 c 0.4483,4.979358 0.28888,6.009203 -0.96196,5.932247 -1.62245,-0.105041 -1.34857,-2.203368 -1.82512,-3.613527 -5.08597,-17.28389301 -16.64888,-44.174955 -34.013056,-44.174955 -17.265467,0 -24.708415,22.1679673 -30.969815,40.465913 -0.926348,2.859799 -2.05655,7.226457 -7.815806,7.327735 -4.12365,0.01084 -5.243384,-3.839414 -5.043984,-6.331719 3.160415,-41.92307 18.298361,-73.400646 40.697133,-74.093881 19.038328,-0.589385 36.187778,32.887873 39.932608,74.488187 z"
- id="path5053"
- style="font-size:12px;fill:url(#linearGradient35282);fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:5.1140151;stroke-opacity:1" />
- <path
- d="m 21.28125,8.625 c -3.604616,0.1115613 -6.9756,2.689174 -9.9375,8.28125 C 9.2245844,20.90724 7.5567401,26.322951 6.5,32.5625 c 1.0125277,-2.663341 2.1592155,-5.309728 3.65625,-7.75 2.610374,-4.255093 6.790157,-8.125 12.46875,-8.125 3.74341,0 6.758167,1.806505 9.28125,4.21875 -0.581265,-1.450173 -1.19547,-2.868191 -1.84375,-4.09375 -1.534806,-2.901517 -3.216619,-5.103367 -4.78125,-6.4375 -1.564631,-1.3341335 -2.843776,-1.7857939 -4,-1.75 z"
- transform="matrix(2.1089431,0,0,2.1089431,39.225368,-70.464659)"
- id="path5786"
- style="font-size:12px;fill:url(#radialGradient33818);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 91.763129,-167.78807 c -2.315713,0.13341 -4.540325,-0.0364 -6.871958,0.15981 -13.668167,1.15019 -27.231093,3.47616 -36.277545,4.9542 -2.733615,0.44662 -5.042511,1.34475 -7.191584,2.55701 -3.032749,0.28666 -5.74196,0.5048 -8.789713,0.79906 -1.914217,0.18482 -3.26376,0.29603 -5.114015,0.47944 -0.973044,1.09628 -1.697582,3.00371 -2.716821,4.31495 2.984514,2.49854 7.866358,5.36435 14.223355,7.67103 1.37525,0.49902 3.452783,0.65852 4.954202,1.11869 1.282426,-1.18274 2.289197,-2.23954 3.356072,-3.03645 2.950081,-0.27341 6.183704,-0.57279 8.789714,-0.79907 3.131408,-1.90178 4.787347,-3.04576 8.150461,-4.9542 5.153603,-0.67837 10.832814,-1.22501 16.780362,-1.43831 1.134238,-0.0407 1.914171,0.0231 3.036447,0 -3.488065,2.52736 -6.510233,5.36785 -9.428966,7.99064 -2.39295,2.15033 -3.720538,4.69049 -5.114015,7.19159 4.667552,0.52374 9.511174,0.92935 14.542981,1.11869 3.250984,-2.91504 6.396482,-5.49503 9.588778,-7.67102 1.05811,1.09811 1.876562,1.90883 2.876634,3.03644 1.341089,1.51216 2.483371,3.05546 3.196259,4.15514 0.257103,0.39661 0.213648,0.0606 0.319623,0.31963 8.93384,-0.37947 17.32802,-1.01738 24.93083,-2.3972 -1.16727,-1.4122 -1.63272,-2.34775 -3.35608,-3.99532 -0.20297,-1.05074 -0.6445,-2.11587 -0.95887,-3.19626 1.65235,0.46435 3.88231,0.66878 5.43364,1.59813 2.72848,1.63454 4.23062,2.65502 6.07289,3.83551 4.07119,-0.97272 8.78748,-1.65805 12.14579,-2.87663 1.02211,-0.37088 1.29059,-0.88544 2.23738,-1.27851 -0.2725,-0.33302 -0.4158,-0.72508 -0.79907,-1.11869 -4.20646,-4.31998 -9.02291,-6.24798 -12.46541,-8.31027 -5.44413,-3.26141 -10.69657,-4.22168 -15.66167,-5.11402 -3.11094,-0.5591 -4.92052,-0.99908 -7.03177,-1.75794 -0.16184,-0.0582 -0.16144,-0.10904 -0.31963,-0.15981 -2.36441,-1.47277 -5.09888,-2.58806 -8.31027,-2.87664 -2.858061,-0.25681 -6.596482,-0.0809 -9.908406,-0.15981 -0.07612,-0.0804 -0.243227,-0.0794 -0.319625,-0.15981 z m 29.725211,14.54298 c 0.0764,-0.0121 0.24313,0.0119 0.31963,0 0.63039,0.21562 1.21893,0.4246 1.75794,0.63925 -0.17085,0.0315 -0.30894,0.12729 -0.47944,0.15981 -0.46379,-0.21558 -1.15499,-0.58303 -1.59813,-0.79906 z"
- id="path21330"
- style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#7c6f00;stroke-width:5.1140151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- <path
- d="m 63.156606,-175.77872 c -1.206994,0.18629 -2.336138,0.60466 -3.196259,1.11869 -1.720263,1.02804 -3.064753,2.39181 -4.634576,4.15513 -5.995012,6.73395 -11.649251,12.66004 -18.698118,18.21868 -1.438619,0.95223 -2.215182,2.57195 -1.917756,4.15514 0.297437,1.58318 1.649321,2.88101 3.356073,3.35607 1.706766,0.47508 3.553141,0.0362 4.794389,-1.11869 7.695861,-6.06885 13.721762,-12.49106 19.816808,-19.33737 0.648734,-0.72868 0.848318,-0.72977 1.278504,-1.11869 0.102224,0.14581 0.205911,0.31248 0.319626,0.47944 -0.08272,0.0678 -0.243309,0.0932 -0.319626,0.15981 -1.050679,0.91666 -1.846579,1.96211 -2.876633,3.19626 -0.191341,0.22924 -2.74237,2.9756 -4.634576,5.75327 -0.946093,1.38884 -1.663411,2.77193 -2.237382,4.47476 -0.286983,0.85143 -0.601782,1.80403 -0.479439,3.03645 0.0837,0.8433 0.898466,1.80714 1.59813,2.71682 -1.010028,1.02291 -2.101656,1.97462 -3.19626,3.6757 -0.531801,0.82645 -0.940339,1.94753 -1.278503,3.03645 3.145804,0.68188 5.646972,1.56236 9.109339,2.07756 2.3e-4,-0.16598 -0.04145,-0.14938 0.479439,-0.95887 0.486159,-0.75553 1.279358,-1.5578 2.077569,-2.3972 0.381336,0.24456 0.797975,0.43562 1.11869,0.63925 0.414793,0.26338 0.837175,0.46674 1.118691,0.63926 0.140769,0.0862 0.1673,0.23271 0.319626,0.31962 0.07615,0.0435 0.127549,0.0651 0.319626,0.15982 0.09604,0.0473 0.296045,0.0363 0.639252,0.15981 0.159562,0.0574 0.703024,0.29722 0.799065,0.31962 -0.361546,0.52695 -0.720504,1.05493 -1.118691,1.59813 3.415313,0.40059 7.082011,0.57511 10.707469,0.79907 0.214144,-0.29456 0.425256,-0.67033 0.639252,-0.95888 0.674692,0.20394 1.404503,0.45409 2.077569,0.63925 -0.01544,0.1252 -0.145085,0.29667 -0.159813,0.47944 3.337907,0.16313 6.283692,0.63925 9.748591,0.63925 13.787388,0 25.984838,-1.55666 36.916798,-3.83551 5.84105,-5.35579 7.90466,-11.94508 9.10934,-17.89905 0.30294,-1.49727 -0.0611,-3.1402 -0.79907,-4.31495 -0.738,-1.17475 -1.61233,-1.87351 -2.39719,-2.3972 -1.56975,-1.04734 -3.00374,-1.63883 -2.71682,-1.43831 -2.43263,-1.70019 -4.74438,-1.89704 -6.55233,-1.91776 -1.80796,-0.0207 -3.69856,0.15981 -3.51589,0.15981 -2.68717,1e-5 -5.41058,0.59601 -8.15046,1.27851 -1.65083,-0.54031 -3.30196,-0.8686 -4.79439,-0.95888 -3.67926,-0.22256 -7.185994,0.15981 -8.789713,0.15981 -6.983439,10e-6 -12.610456,3.2251 -16.940175,6.39252 -1.071474,-1.18935 -2.008351,-2.4562 -3.356073,-3.51588 -0.630752,-0.49594 -1.196526,-0.85425 -1.757943,-1.27851 -0.457735,-1.10625 -0.875294,-2.2735 -1.598129,-3.35607 -0.870355,-1.3035 -1.482635,-2.51524 -2.397195,-3.6757 -0.914549,-1.16045 -2.056228,-2.41202 -4.31495,-3.19626 -1.129354,-0.39211 -2.308901,-0.50591 -3.515886,-0.31962 z m 58.970984,16.94017 c 0.92791,0.0106 1.41873,0.32139 0.95888,0 1.22156,0.85376 1.61277,0.90467 2.07757,1.11869 -0.93371,4.52617 -1.85669,8.08166 -4.47476,11.0271 0.25473,-1.87195 0.17286,-3.73032 -0.15982,-5.43364 -0.488,-2.49857 -1.57746,-4.3751 -2.557,-6.39252 0.2342,-0.0118 0.58095,-0.15982 0.79906,-0.15982 1.49487,2e-5 2.42815,-0.17045 3.35607,-0.15981 z m -25.090633,0.47944 c 0.128719,0 0.190369,10e-4 0.319626,0 -0.03845,0.0494 0.03771,0.11104 0,0.15981 -1.876793,1.09964 -3.777013,2.3281 -4.79439,2.87664 -0.297963,0.16065 -0.51025,0.30767 -0.799064,0.47944 -0.02262,-0.7457 0.04938,-1.58927 0,-2.23739 1.83005,-0.73611 3.616657,-1.2785 5.273828,-1.2785 z m -29.725213,2.71682 c 0.03169,1.54649 0.02887,3.24472 0,4.9542 -0.983344,-0.29593 -2.289535,-0.31935 -3.515886,-0.31962 0.254141,-0.46918 0.412507,-0.71106 0.799065,-1.27851 0.939578,-1.37925 1.867516,-2.34654 2.716821,-3.35607 z m 37.715866,3.35607 c 0.36701,0.15314 0.75471,0.34019 1.11869,0.47944 0.22483,0.086 0.40694,0.068 0.63925,0.15982 -0.42356,1.62724 -0.72256,3.37102 -1.43832,5.27382 -0.0121,0.0321 -0.14767,-0.032 -0.15981,0 -0.48582,-0.24673 -0.783,-0.55212 -0.63925,-0.31962 -0.91846,-1.48558 -1.50205,-2.48071 -1.59813,-3.03645 -0.0935,-0.54087 -0.006,-0.81738 0.95887,-2.07757 0.45837,-0.20327 0.95616,-0.44183 1.1187,-0.47944 z m -10.228035,6.39252 c 0.530743,1.14342 0.923468,2.52329 1.438317,3.35608 0.418035,0.67617 0.924588,1.12158 1.438317,1.59813 -0.639687,0.0157 -1.191653,0.0774 -1.917756,-0.15982 -1.667123,-0.54477 -3.52213,-0.97693 -5.273828,-1.43831 1.424355,-1.30308 2.918752,-2.2376 4.31495,-3.35608 z"
- id="path24281"
- style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#7c6f00;stroke-width:5.11401367;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 33.906122,-82.562347 c 0,0 54.341888,22.373816 116.503658,22.373816 l 2.55701,-25.570076 c -0.14404,0.06059 -9.38799,4.36584 -19.33737,7.031771 -10.01454,2.683385 -24.57961,5.141442 -42.35044,5.141437 -17.659881,0 -32.106171,-1.792954 -42.190625,-4.342372 -5.04223,-1.274709 -8.98666,-2.418556 -11.666347,-3.356072 -1.339841,-0.468756 -2.348151,-0.856966 -3.036447,-1.118691 -0.201742,-0.07672 -0.336773,-0.105753 -0.479439,-0.159813 z"
- id="path28691"
- style="opacity:0.34351579;fill:#535b4c;fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <path
- d="m 12.75,22.875 1.78125,19.375 0,0.03125 c 0.01965,0.01819 0.05938,0.0336 0.09375,0.0625 0.08249,0.06936 0.203097,0.164602 0.375,0.28125 0.343806,0.233295 0.877234,0.535896 1.625,0.84375 1.495532,0.615708 3.855927,1.21875 7.34375,1.21875 3.553615,0 5.921641,-0.59807 7.40625,-1.21875 0.742304,-0.31034 1.262564,-0.643841 1.59375,-0.875 0.165593,-0.11558 0.29917,-0.183662 0.375,-0.25 0.02916,-0.02551 0.04592,-0.04649 0.0625,-0.0625 0.005,-0.0048 -0.0038,-0.0274 0,-0.03125 L 35.1875,22.875 c -0.02817,0.01185 -0.05437,0.01527 -0.09375,0.03125 -0.13436,0.05452 -0.333243,0.125981 -0.59375,0.21875 -0.521013,0.185537 -1.266767,0.440977 -2.25,0.6875 -1.966465,0.493046 -4.806323,1.000001 -8.28125,1 -3.453232,0 -6.278075,-0.532734 -8.25,-1.03125 -0.985963,-0.249258 -1.757261,-0.472927 -2.28125,-0.65625 -0.261994,-0.09166 -0.45916,-0.167572 -0.59375,-0.21875 -0.03945,-0.015 -0.06585,-0.02068 -0.09375,-0.03125 z"
- transform="matrix(5.1140151,0,0,5.1140151,-34.00968,-193.83759)"
- id="path19871"
- style="opacity:0.64351585;fill:url(#linearGradient33820);fill-opacity:1;fill-rule:nonzero;stroke:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-noodle-white.png b/media/logos/legacy/arch-legacy-noodle-white.png
deleted file mode 100644
index a12ee21..0000000
--- a/media/logos/legacy/arch-legacy-noodle-white.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-noodle-white.svg b/media/logos/legacy/arch-legacy-noodle-white.svg
deleted file mode 100644
index 03e1b15..0000000
--- a/media/logos/legacy/arch-legacy-noodle-white.svg
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="300"
- height="248.04205"
- id="svg1374">
- <defs
- id="defs1376">
- <linearGradient
- id="linearGradient21348">
- <stop
- id="stop21350"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21352"
- style="stop-color:#baa600;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21338">
- <stop
- id="stop21340"
- style="stop-color:#baa400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21346"
- style="stop-color:#baa600;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21342"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.5" />
- <stop
- id="stop21344"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21320">
- <stop
- id="stop21322"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop21326"
- style="stop-color:#604e00;stop-opacity:1"
- offset="0.583691" />
- <stop
- id="stop21324"
- style="stop-color:#604e00;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient16135">
- <stop
- id="stop16137"
- style="stop-color:#edd400;stop-opacity:1"
- offset="0" />
- <stop
- id="stop16139"
- style="stop-color:#c4a000;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient8716">
- <stop
- id="stop8718"
- style="stop-color:#f2f2f2;stop-opacity:1"
- offset="0" />
- <stop
- id="stop8720"
- style="stop-color:#cccccc;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient639">
- <stop
- id="stop640"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop641"
- style="stop-color:#8e8e8e;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2882">
- <stop
- id="stop2884"
- style="stop-color:#f9f9f9;stop-opacity:1"
- offset="0" />
- <stop
- id="stop2886"
- style="stop-color:#e3e3e3;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient5721">
- <stop
- id="stop5723"
- style="stop-color:#9c9c9c;stop-opacity:1"
- offset="0" />
- <stop
- id="stop5725"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="18.384777"
- cy="40.575378"
- r="21.213203"
- fx="18.384777"
- fy="40.575378"
- id="radialGradient5727"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.943831,0,0,0.166667,1.032663,33.81282)" />
- <linearGradient
- x1="21"
- y1="46.714287"
- x2="21"
- y2="5.9534397"
- id="linearGradient7976"
- xlink:href="#linearGradient2882"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <radialGradient
- cx="16.380457"
- cy="17.796696"
- r="17.033163"
- fx="16.380457"
- fy="17.796696"
- id="radialGradient8714"
- xlink:href="#linearGradient8716"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-4.28975,5.8394364,-3.6097583,-2.6518001,229.06139,-211.11919)" />
- <linearGradient
- x1="43.25"
- y1="20"
- x2="40.875"
- y2="28.625"
- id="linearGradient11647"
- xlink:href="#linearGradient5721"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.049587,0,0,6.049587,-6.7672949,-229.41232)" />
- <linearGradient
- x1="7.9400997"
- y1="-5.1101465"
- x2="9.2488842"
- y2="4.7730908"
- id="linearGradient19853"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.791154,-0.487172,0.327682,1.176225,16.97405,35.22976)" />
- <linearGradient
- x1="11.441825"
- y1="-0.98001873"
- x2="13.598524"
- y2="-1.084087"
- id="linearGradient22817"
- xlink:href="#linearGradient21348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.05655608,-0.797121,1.172062,0.350025,16.04368,50.1682)" />
- </defs>
- <g
- transform="translate(-1.3401681,202.61015)"
- id="layer1">
- <path
- d="m 39.59798,40.575378 a 21.213203,3.5355339 0 1 1 -42.4264064,0 21.213203,3.5355339 0 1 1 42.4264064,0 z"
- transform="matrix(6.049587,0,0,6.049587,61.788742,-221.4209)"
- id="path4993"
- style="opacity:0.75800003;fill:url(#radialGradient5727);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 199.6749,-130.05945 c -0.80514,-5.21726 80.32449,15.61015 75.63475,51.174694 C 272.2943,-42.526817 214.443,-8.8536668 109.88644,9.7868891 61.22048,16.547151 39.641628,17.11093 39.614886,13.571251 39.159345,10.457456 195.44786,-7.2796974 233.86883,-75.443533 254.72463,-114.97824 200.58539,-124.15944 199.6749,-130.05945 z"
- id="path632"
- style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <g
- transform="matrix(6.049587,0,0,6.049587,-6.7672949,-230.48175)"
- id="g24322">
- <path
- d="m 12.334411,39.271398 c -0.436762,-1.829419 1.931982,-7.76804 5.038023,-10.471368 3.028568,-2.6359 5.42847,-3.947804 8.043372,-4.179892 1.057928,-0.0939 2.250475,1.366774 2.752005,2.995398 0.402297,1.306385 -0.584888,3.636245 -0.584888,3.636245 0,0 -3.297592,0.494824 -5.620374,2.817605 -2.359798,2.359798 -3.478152,6.706882 -3.478152,6.706882 0,0 -4.014221,1.419868 -6.149986,-1.50487 z"
- id="path13844"
- style="fill:url(#linearGradient19853);fill-opacity:1;fill-rule:evenodd;stroke:#665409;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" />
- <path
- d="m 1.53125,11.125 c -1.2356121,-5.28e-4 -3.151403,0.512926 -4.6875,1.21875 -0.7680485,0.352912 -1.2588617,0.558414 -1.7300154,0.891436 -0.3182438,0.224942 -0.2037074,0.573413 0.03125,0.78125 0.2372675,0.20988 0.3866735,0.423127 0.6908048,0.285477 C -2.9400117,13.546741 -1.2972757,12.809099 1.375,12.625 3.2322637,12.497049 5.7097,12.773677 7.4636539,13.72724 7.8712028,13.865065 8.0715674,13.669329 8.2873558,13.321715 8.433013,13.087076 8.6529123,12.915204 8.2200886,12.669122 6.3148155,11.453766 4.1279073,11.126109 1.53125,11.125 z"
- transform="matrix(0.878226,-0.765019,0.765019,0.878226,8.798994,21.17704)"
- id="path16157"
- style="fill:#fff38d;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 15.658283,38.279044 c 1.646328,0.491659 2.930449,1.624039 2.866339,2.527633 -0.06411,0.90359 -1.452295,1.237913 -3.098622,0.746254 -1.646331,-0.491661 -2.930451,-1.62404 -2.866341,-2.527633 0.06411,-0.903593 1.452294,-1.237915 3.098624,-0.746254 z"
- id="path22815"
- style="fill:url(#linearGradient22817);fill-opacity:1;fill-rule:evenodd;stroke:#665409;stroke-width:0.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
- </g>
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path630"
- style="font-size:12px;fill:#dadada;fill-opacity:1;fill-rule:evenodd;stroke:#383838;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 235.71765,14.109119 c 1.28598,14.283493 0.82868,17.237639 -2.75941,17.01689 -4.65407,-0.301312 -3.86845,-6.320446 -5.23544,-10.365544 -14.58932,-49.579566 -47.758,-126.717715 -97.56788,-126.717715 -49.5267,0 -70.877114,63.589737 -88.838201,116.078161 -2.657278,8.203464 -5.899296,20.7294 -22.419973,21.019913 C 7.067886,31.171943 3.8558814,20.127315 4.4278566,12.978034 13.493654,-107.28005 56.917475,-197.5748 121.1693,-199.56337 c 54.61226,-1.69066 103.80617,94.34025 114.54835,213.672489 z"
- id="path5053"
- style="font-size:12px;fill:url(#linearGradient7976);fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:6.04958677;stroke-opacity:1" />
- <path
- d="m 121.59738,-189.71191 c -27.618072,0.85477 -51.778483,20.62549 -70.893599,56.71488 -19.115116,36.089393 -32.028124,87.561051 -36.486571,146.702485 -0.134733,1.684059 0.328558,4.543893 1.134297,5.860537 0.805739,1.316644 0.722447,1.708996 3.591943,1.701446 5.805524,-0.102086 6.81364,-1.363244 8.507231,-3.591942 1.693591,-2.228698 3.106936,-6.171353 4.537191,-10.5867771 -6.09e-4,-0.063013 -6.09e-4,-0.1260371 0,-0.1890496 8.973448,-26.2234833 18.804506,-55.6974943 33.461777,-79.5898783 14.657272,-23.892384 35.702511,-43.103311 64.654961,-43.103311 29.95424,0 52.97874,22.593499 70.1374,49.341948 7.78014,12.128387 20.44288,45.938397 20.03926,38.755166 -1.17245,-20.865564 -19.29823,-78.019704 -34.02893,-105.867774 -9.82047,-18.56538 -20.79691,-33.21568 -31.94938,-42.72521 -11.15248,-9.50952 -21.96109,-13.75514 -32.70558,-13.42252 z"
- id="path5786"
- style="font-size:12px;fill:url(#radialGradient8714);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- <path
- d="m 230.86804,-117.11686 c 6.79223,5.31572 12.18052,13.01615 12.85772,21.804027 0.72019,8.15085 -1.63702,16.481483 -5.89805,23.383021 -1.02797,1.967295 -5.37583,4.963311 -4.60352,5.954046 8.08567,-1.669118 11.16767,-4.733252 17.94933,-8.576881 6.98305,-3.957767 11.19471,6.893589 16.93729,-3.052851 4.68068,-8.107179 0.0257,-14.768899 -5.02515,-19.914158 -7.63806,-8.007254 -17.49751,-13.508574 -27.50561,-17.997994 -1.55104,-0.59054 -3.17397,-0.97216 -4.71201,-1.59921 z"
- id="path9450"
- style="font-size:12px;fill:url(#linearGradient11647);fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
-</svg>
diff --git a/media/logos/legacy/arch-legacy-ribbon1.png b/media/logos/legacy/arch-legacy-ribbon1.png
deleted file mode 100644
index fb8e772..0000000
--- a/media/logos/legacy/arch-legacy-ribbon1.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-ribbon2.png b/media/logos/legacy/arch-legacy-ribbon2.png
deleted file mode 100644
index 6663599..0000000
--- a/media/logos/legacy/arch-legacy-ribbon2.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-ribbon3.png b/media/logos/legacy/arch-legacy-ribbon3.png
deleted file mode 100644
index c3c00b8..0000000
--- a/media/logos/legacy/arch-legacy-ribbon3.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-ribbon4.png b/media/logos/legacy/arch-legacy-ribbon4.png
deleted file mode 100644
index 33a78ed..0000000
--- a/media/logos/legacy/arch-legacy-ribbon4.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-ribbon5.png b/media/logos/legacy/arch-legacy-ribbon5.png
deleted file mode 100644
index abf7cce..0000000
--- a/media/logos/legacy/arch-legacy-ribbon5.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-ribbon6.png b/media/logos/legacy/arch-legacy-ribbon6.png
deleted file mode 100644
index 9f275f2..0000000
--- a/media/logos/legacy/arch-legacy-ribbon6.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-wombat-lg.png b/media/logos/legacy/arch-legacy-wombat-lg.png
deleted file mode 100644
index 0661b6f..0000000
--- a/media/logos/legacy/arch-legacy-wombat-lg.png
+++ /dev/null
Binary files differ
diff --git a/media/logos/legacy/arch-legacy-wombat.png b/media/logos/legacy/arch-legacy-wombat.png
deleted file mode 100644
index 67e1afa..0000000
--- a/media/logos/legacy/arch-legacy-wombat.png
+++ /dev/null
Binary files differ
diff --git a/media/new.png b/media/new.png
deleted file mode 100644
index 6a9bf03..0000000
--- a/media/new.png
+++ /dev/null
Binary files differ
diff --git a/media/nosort.gif b/media/nosort.gif
deleted file mode 100644
index fac668f..0000000
--- a/media/nosort.gif
+++ /dev/null
Binary files differ
diff --git a/media/rss.png b/media/rss.png
deleted file mode 100644
index c916459..0000000
--- a/media/rss.png
+++ /dev/null
Binary files differ
diff --git a/media/sevenl_button.png b/media/sevenl_button.png
deleted file mode 100644
index 93adcdf..0000000
--- a/media/sevenl_button.png
+++ /dev/null
Binary files differ
diff --git a/media/silhouette.png b/media/silhouette.png
deleted file mode 100644
index afa87cd..0000000
--- a/media/silhouette.png
+++ /dev/null
Binary files differ
diff --git a/media/visualize.js b/media/visualize.js
deleted file mode 100644
index e73171e..0000000
--- a/media/visualize.js
+++ /dev/null
@@ -1,253 +0,0 @@
-function packages_treemap(chart_id, orderings, default_order) {
- var jq_div = jQuery(chart_id),
- color = d3.scale.category20();
- var key_func = function(d) { return d.key; };
- var value_package_count = function(d) { return d.count; },
- value_flagged_count = function(d) { return d.flagged; },
- value_compressed_size = function(d) { return d.csize; },
- value_installed_size = function(d) { return d.isize; };
-
- /* tag the function so when we display, we can format filesizes */
- value_package_count.is_size = value_flagged_count.is_size = false;
- value_compressed_size.is_size = value_installed_size.is_size = true;
-
- var treemap = d3.layout.treemap()
- .size([jq_div.width(), jq_div.height()])
- /*.sticky(true)*/
- .value(value_package_count)
- .sort(function(a, b) { return a.key < b.key; })
- .children(function(d) { return d.data; });
-
- var cell_html = function(d) {
- if (d.children) {
- return "";
- }
- var valuefunc = treemap.value();
- var value = valuefunc(d);
- if (valuefunc.is_size && value !== undefined) {
- value = format_filesize(value);
- }
- return "<span>" + d.name + ": " + value + "</span>";
- };
-
- var d3_div = d3.select(jq_div.get(0));
-
- var prop_px = function(prop, offset) {
- return function(d) {
- var dist = d[prop] + offset;
- if (dist > 0) {
- return dist + "px";
- }
- else {
- return "0px";
- }
- };
- };
-
- var cell = function() {
- /* the -1 offset comes from the border width we use in the CSS */
- this.style("left", prop_px("x", 0)).style("top", prop_px("y", 0))
- .style("width", prop_px("dx", -1)).style("height", prop_px("dy", -1));
- };
-
- var fetch_for_ordering = function(order) {
- d3.json(order.url, function(json) {
- var nodes = d3_div.data([json]).selectAll("div")
- .data(treemap.nodes, key_func);
- /* start out new nodes in the center of the picture area */
- var w_center = jq_div.width() / 2;
- h_center = jq_div.height() / 2;
- nodes.enter().append("div")
- .attr("class", "treemap-cell")
- .attr("title", function(d) { return d.name; })
- .style("left", w_center + "px").style("top", h_center + "px")
- .style("width", "0px").style("height", "0px")
- .style("display", function(d) { return d.children ? "none" : null; })
- .html(cell_html);
- nodes.transition().duration(1500)
- .style("background-color", function(d) { return d.children ? null : color(d[order.color_attr]); })
- .call(cell);
- nodes.exit().transition().duration(1500).remove();
- });
- };
-
- /* start the callback for the default order */
- fetch_for_ordering(orderings[default_order]);
-
- var make_scale_button = function(name, valuefunc) {
- var button_id = chart_id + "-" + name;
- /* upon button click, attach new value function and redraw all boxes
- * accordingly */
- d3.select(button_id).on("click", function() {
- d3_div.selectAll("div")
- .data(treemap.value(valuefunc), key_func)
- .html(cell_html)
- .transition().duration(1500).call(cell);
-
- /* drop off the '#' sign to convert id to a class prefix */
- d3.selectAll("." + chart_id.substring(1) + "-scaleby")
- .classed("active", false);
- d3.select(button_id).classed("active", true);
- });
- };
-
- /* each scale button tweaks our value, e.g. net size function */
- make_scale_button("count", value_package_count);
- make_scale_button("flagged", value_flagged_count);
- make_scale_button("csize", value_compressed_size);
- make_scale_button("isize", value_installed_size);
-
- var make_group_button = function(name, order) {
- var button_id = chart_id + "-" + name;
- d3.select(button_id).on("click", function() {
- fetch_for_ordering(order);
-
- /* drop off the '#' sign to convert id to a class prefix */
- d3.selectAll("." + chart_id.substring(1) + "-groupby")
- .classed("active", false);
- d3.select(button_id).classed("active", true);
- });
- };
-
- jQuery.each(orderings, function(k, v) {
- make_group_button(k, v);
- });
-
- var resize_timeout = null;
- var real_resize = function() {
- resize_timeout = null;
- d3_div.selectAll("div")
- .data(treemap.size([jq_div.width(), jq_div.height()]), key_func)
- .call(cell);
- };
- jQuery(window).resize(function() {
- if (resize_timeout) {
- clearTimeout(resize_timeout);
- }
- resize_timeout = setTimeout(real_resize, 200);
- });
-}
-
-function developer_keys(chart_id, data_url) {
- var jq_div = jQuery(chart_id),
- r = 10;
-
- var force = d3.layout.force()
- .gravity(0.1)
- .charge(-200)
- .linkStrength(0.2)
- .size([jq_div.width(), jq_div.height()]);
-
- var svg = d3.select(chart_id)
- .append("svg");
-
- d3.json(data_url, function(json) {
- var fill = d3.scale.category20();
-
- var index_for_key = function(key) {
- var i;
- key = key.slice(-8);
- for (i = 0; i < json.nodes.length; i++) {
- var node_key = json.nodes[i].key;
- if (node_key && node_key.slice(-8) === key) {
- return i;
- }
- }
- };
-
- /* filter edges to only include those that we have two nodes for */
- var edges = jQuery.grep(json.edges, function(d, i) {
- d.source = index_for_key(d.signer);
- d.target = index_for_key(d.signee);
- return d.source >= 0 && d.target >= 0;
- });
-
- jQuery.map(json.nodes, function(d, i) { d.master_sigs = 0; });
- jQuery.map(edges, function(d, i) {
- if (json.nodes[d.source].group === "master") {
- json.nodes[d.target].master_sigs += 1;
- }
- });
- jQuery.map(json.nodes, function(d, i) {
- if (d.group === "dev" || d.group === "tu") {
- d.approved = d.master_sigs >= 3;
- } else {
- d.approved = null;
- }
- });
-
- var link = svg.selectAll("line")
- .data(edges)
- .enter()
- .append("line");
-
- var node = svg.selectAll("circle")
- .data(json.nodes)
- .enter().append("circle")
- .attr("r", function(d) {
- switch (d.group) {
- case "master":
- return r * 1.6 - 0.75;
- case "cacert":
- return r * 1.4 - 0.75;
- case "dev":
- case "tu":
- default:
- return r - 0.75;
- }
- })
- .style("fill", function(d) { return fill(d.group); })
- .style("stroke", function(d) {
- if (d.approved === null) {
- return d3.rgb(fill(d.group)).darker();
- } else if (d.approved) {
- return "green";
- } else {
- return "red";
- }
- })
- .call(force.drag);
- node.append("title").text(function(d) { return d.name; });
-
- var distance = function(d, i) {
- /* place a long line between all master keys and other keys.
- * however, other connected clusters should be close together. */
- if (d.source.group === "master" || d.target.group === "master") {
- return 200;
- } else {
- return 50;
- }
- };
-
- var tick = function() {
- var offset = r * 2,
- w = jq_div.width(),
- h = jq_div.height();
- node.attr("cx", function(d) { return (d.x = Math.max(offset, Math.min(w - offset, d.x))); })
- .attr("cy", function(d) { return (d.y = Math.max(offset, Math.min(h - offset, d.y))); });
-
- link.attr("x1", function(d) { return d.source.x; })
- .attr("y1", function(d) { return d.source.y; })
- .attr("x2", function(d) { return d.target.x; })
- .attr("y2", function(d) { return d.target.y; });
- };
-
- force.nodes(json.nodes)
- .links(edges)
- .linkDistance(distance)
- .on("tick", tick)
- .start();
- });
-
- var resize_timeout = null;
- var real_resize = function() {
- resize_timeout = null;
- force.size([jq_div.width(), jq_div.height()]);
- };
- jQuery(window).resize(function() {
- if (resize_timeout) {
- clearTimeout(resize_timeout);
- }
- resize_timeout = setTimeout(real_resize, 200);
- });
-}
diff --git a/media/vnet_button.png b/media/vnet_button.png
deleted file mode 100644
index 22cfa9e..0000000
--- a/media/vnet_button.png
+++ /dev/null
Binary files differ